源码获取:俺的博客首页 "资源" 里下载!

项目介绍

本项目分为前后台,分为普通用户、管理员、企业用户三种角色;
普通用户无需登录,可在前台直接进行溯源查询,管理员、企业用户可登录后台进行管理;
超级管理员角色包含以下功能:
登录,管理企业,设置管理员,增加管理员,删除管理员等功能。
用户角色包含以下功能:
用户首页,用户进行溯源查询,溯源结果等功能。
企业角色包含以下功能:
注册,登录,企业登录后主页,增删改查农产品列表,新增农产品,二维码列表查看,溯源列表,查看近期溯源人数,修改企业信息,查看溯源二维码等功能。

环境需要

1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。
2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA;
3.tomcat环境:Tomcat 7.x,8.x,9.x版本均可
4.硬件环境:windows 7/8/10 1G内存以上;或者 Mac OS; 
5.数据库:MySql 5.7版本;
6.是否Maven项目:是;

技术栈

1. 后端:Spring+SpringMVC+Mybatis
2. 前端:JSP+CSS+JavaScript+LayUI+jQuery

使用说明

1. 使用Navicat或者其它工具,在mysql中创建对应名称的数据库,并导入项目的sql文件;
2. 使用IDEA/Eclipse/MyEclipse导入项目,Eclipse/MyEclipse导入时,若为maven项目请选择maven;
若为maven项目,导入成功后请执行maven clean;maven install命令,然后运行;
3. 将项目中database.properties配置文件中的数据库配置改为自己的配置;
4. 运行项目,输入http://localhost:8080/ncpsy 登录 
注:Tomcat中配置路径必须为/ncpsy 否则会有异常
管理员账号/密码:admin/admin
企业账号/密码:user/123456

订单链条管理控制层:

@RestController
@RequestMapping("orderTbl")
public class OrderTblController {/*** 服务对象*/@Resourceprivate OrderTblService orderTblService;@Resourceprivate AnimalService animalService;@Resourceprivate ProductService productService;@Resourceprivate EntController entController;@Resourceprivate EntService entService;/*** 通过主键查询单条数据** @param oid 主键* @return 单条数据*/@GetMapping("selectOne")public OrderTbl selectOne(Integer oid) {return this.orderTblService.queryById(oid);}/*** 生成订单链条** @param gid 主键* @param type 货物类型* @return 订单链条*/@GetMapping("ChainForm")public Result  Chain_Form(Integer gid,Integer type){Result result=new Result();result.setDetail(null);result.setSuccess(false);Integer id;if(type==0)//整猪{id=animalService.queryById(gid).getLastOid();if(orderTblService.queryById(id)==null){result.setMsg("牲畜信息记录有误");return result;}}else if(type==1)//切割后{id=productService.queryById(gid).getLastOid();if(orderTblService.queryById(id)==null){result.setMsg("产品信息记录有误");return result;}}else{result.setMsg("输入类型错误");return result;}OrderTbl tempOT=this.orderTblService.queryById(id);List<OrderTbl> List_OT=new ArrayList<OrderTbl>();List_OT.add(tempOT);while(tempOT.getLastOid()!=null){tempOT=this.orderTblService.queryById(tempOT.getLastOid());List_OT.add(0,tempOT);}Iterator<OrderTbl> iterator= List_OT.listIterator();while(iterator.hasNext()){System.out.println(iterator.next().getOid());}List<ChainModel> chain=new ArrayList<ChainModel>();Iterator it=List_OT.listIterator();while (it.hasNext()){ChainModel chainModel=new ChainModel();OrderTbl orderTbl=(OrderTbl)it.next();chainModel.setEid(orderTbl.getOutEid());EntModel entModel1=entService.queryModelById(chainModel.getEid());chainModel.setEname(entModel1.getEname());chainModel.setEtype(entModel1.getEtype());chainModel.setEid(orderTbl.getOutEid());chainModel.setTime(orderTbl.getConfirmTime());chain.add(chainModel);if(!it.hasNext()){ChainModel temp=new ChainModel(chainModel);temp.setEid(orderTbl.getInEid());EntModel entModel2=entService.queryModelById(temp.getEid());temp.setEtype(entModel2.getEtype());temp.setEname(entModel2.getEname());if(type==0)//整只{AnimalModel animalModel=animalService.queryModelById(orderTbl.getGid());result.setInfo(animalModel);}else if(type==1)//切割{ProductModel productModel=productService.queryModelById(orderTbl.getGid());result.setInfo(productModel);}chain.add(temp);}}result.setDetail(chain);result.setMsg("链条合成成功");result.setSuccess(true);return result;}@GetMapping("insertOne")public OrderTbl insert(Integer oeid,Integer ieid,Integer lastoid,Integer gid,short gtype,String ctime,String plate,String info) {OrderTbl orderTbl=new OrderTbl();SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd");try {// 设置lenient为false. 否则SimpleDateFormat会比较宽松地验证日期,比如2007/02/29会被接受,并转换成2007/03/01format.setLenient(false);format.parse(ctime);} catch (ParseException e) {System.out.println("时间输入格式错误");e.printStackTrace();// e.printStackTrace();// 如果throw java.text.ParseException或者NullPointerException,就说明格式不对}if(!lastoid.equals(0)){orderTbl.setLastOid(lastoid);}if (info!=null){orderTbl.setInfo(info);}orderTbl.setGtype(gtype);orderTbl.setInEid(ieid);orderTbl.setGid(gid);orderTbl.setOutEid(oeid);orderTbl.setPlate(plate);orderTbl.setConfirmTime(ctime);return orderTblService.insert(orderTbl);}/*** 通过主键删除数据** @param oid 主键* @return 是否成功*/@GetMapping("deleteOne")public boolean deleteById(Integer oid) {return this.orderTblService.deleteById(oid);}/*** 修改数据*///http://127.0.0.1:11451/orderTbl/updateOne?oid=1@GetMapping("updateOne")public OrderTbl update(Integer oid, Integer outEid, Integer inEid,Integer lastOid,Integer gid,Short gtype, String confirmTime,String plate,String info) {OrderTbl orderTbl=new OrderTbl();orderTbl.setOid(oid);orderTbl.setOutEid(outEid);orderTbl.setInEid(inEid);orderTbl.setLastOid(lastOid);orderTbl.setGid(gid);orderTbl.setGtype(gtype);orderTbl.setConfirmTime(confirmTime);orderTbl.setPlate(plate);orderTbl.setInfo(info);return this.orderTblService.update(orderTbl);}}

管理员管理控制层:

/*** (AdminAcct)表控制层*管理员账号*/
@CrossOrigin
@RestController
@RequestMapping("admin")
public class AdminAcctController {/*** 服务对象*/@Resourceprivate AdminAcctService adminAcctService;@Resourceprivate LicService licService;@Resourceprivate EntService entService;@Resourceprivate TypeTblService typeTblService;/*** 通过主键查询单条数据** @param id 主键* @return 单条数据*/public AdminAcct selectOne(Integer id) {return this.adminAcctService.queryById(id);}/*** 查询指定行数据** @param offset 查询起始位置* @param limit  查询条数* @return 对象列表*/public List<AdminAcct> queryAllByLimit(@Param("offset") int offset, @Param("limit") int limit) {return this.adminAcctService.queryAllByLimit(offset, limit);}/*** 通过主键删除数据** @param id 主键* @return 是否成功*/public boolean deleteById(Integer id) {return this.adminAcctService.deleteById(id);}/*** 修改数据*/public AdminAcct update(Integer id,String username,String pwd) {AdminAcct adminAcct=new AdminAcct();adminAcct.setId(id);adminAcct.setUsername(username);adminAcct.setPwd(pwd);return this.adminAcctService.update(adminAcct);}//登录注册/*** 登录** @param username 用户名* @param password 密码* @return Result对象*/@GetMapping( "login")public Result login(String username, String password) {BCryptPasswordEncoder bCryptPasswordEncoder=new BCryptPasswordEncoder();Result result=new Result();result.setSuccess(false);result.setDetail(null);if (username==null||username==""){result.setMsg("用户名不可为空");System.out.println("用户名不可为空");return result;}if(password==""||password==null){result.setMsg("密码不可为空");System.out.println("密码不可为空");return result;}AdminAcct temp=new AdminAcct();temp=this.adminAcctService.queryByUserName(username);if(temp==null) {System.out.println("用户名不存在");result.setMsg("用户名不存在");return result;}System.out.println(bCryptPasswordEncoder.encode(password));boolean flag=password.equals(temp.getPwd());// boolean flag=bCryptPasswordEncoder.matches(password,temp.getPwd());if(flag){temp.setPwd("");System.out.println("登录成功");result.setMsg("登录成功");result.setSuccess(true);if(temp.getToken()==null){String uuid = UUID.randomUUID().toString().replaceAll("-","");temp.setToken(uuid);this.adminAcctService.update(temp);}result.setDetail(temp);return result;}else{result.setMsg("密码错误");System.out.println("密码错误");return result;}}/*** 注册** @param username 用户名* @param password 密码* @return Result对象*/@PostMapping("register")public Result register(String username,String password) {BCryptPasswordEncoder bCryptPasswordEncoder=new BCryptPasswordEncoder();Result result=new Result();AdminAcct temp=new AdminAcct();result.setSuccess(false);result.setDetail(null);temp=this.adminAcctService.queryByUserName(username);if (username==null||username==""){result.setMsg("用户名不可为空");System.out.println("用户名不可为空");return result;}if (temp!=null){result.setMsg("用户名重复");System.out.println("用户名重复");return result;}temp=new AdminAcct();temp.setUsername(username);password=bCryptPasswordEncoder.encode(password);temp.setPwd(password);String uuid = UUID.randomUUID().toString().replaceAll("-","");temp.setToken(uuid);this.adminAcctService.insert(temp);temp.setPwd("");result.setDetail(temp);result.setMsg("注册成功");result.setSuccess(true);System.out.println("注册成功");return result;}//备案审核相关/*** 输出待审核列表* @param id 主键* @return*/public Result licOfAudit_list(Integer id){Result result=new Result();result.setSuccess(false);if(adminAcctService.queryById(id)==null){result.setMsg("企业id错误");return result;}result.setDetail(licService.getModelByState(0));result.setSuccess(true);result.setMsg("待审核证书获取成功");return result;}/**** @param lid* @param state* @return*//*** 审核证书* @param lid 证书id* @param state 证书状态* @return*/@PostMapping("setLicState")public Result SetLicState(Integer lid,Integer state){Result result=new Result();result.setSuccess(false);if(lid==null){result.setMsg("lid不可为空");return result;}Lic lic=licService.queryById(lid);if(lic==null){result.setMsg("证书id错误");return result;}result.setSuccess(true);result.setMsg("证书通过成功");lic.setLicState(state);result.setDetail(licService.update(lic));return result;}/*** 证书筛选* @param ename 企业名* @param lictype 证书类型* @param sernum 编号* @return*/@Transactional(readOnly = true)@GetMapping("licList")public Result Lic_Screen(String ename, Integer lictype, String sernum,Integer licstate){Result result=new Result();result.setSuccess(false);List<Ent> list=new ArrayList<Ent>();if(ename!=null){list=entService.queryByEName(ename);if(list.isEmpty()){result.setMsg("无该企业名的类似企业");System.out.println("企业名错误");return result;}}if (lictype!=null&&typeTblService.queryById(lictype)==null){result.setMsg("企业类型错误");System.out.println("企业类型错误");return result;}List<LicModel> list_lic=new ArrayList<LicModel>();if(!list.isEmpty()){Iterator<Ent> iterator=list.listIterator();while (iterator.hasNext()) {Lic lic = new Lic();lic.setEid(((Ent)iterator.next()).getEid());lic.setLicType(lictype);lic.setSerNum(sernum);lic.setLicState(licstate);List<LicModel> temp=licService.queryAllModel(lic);list_lic.addAll(temp);}}else {Lic lic = new Lic();lic.setLicType(lictype);lic.setSerNum(sernum);lic.setLicState(licstate);list_lic=licService.queryAllModel(lic);}if(list_lic.isEmpty()){result.setMsg("无此类证书");return result;}result.setMsg("筛选成功");result.setSuccess(true);result.setDetail(list_lic);return result;}/*** 删除证书* @param lid 证书编号* @return Result*/@PostMapping("licdelete")public Result Lic_Delete(Integer lid){Result result=new Result();result.setSuccess(false);if(licService.deleteById(lid)) {result.setSuccess(true);result.setMsg("删除成功");return result;}else {result.setMsg("删除失败,证书不存在");return result;}}/**@PostMapping("")public Result lic_Pass(Integer lid){Result result=new Result();result.setSuccess(false);Lic lic=licService.queryById(lid);if(lic==null){result.setMsg("证书id错误");return result;}result.setSuccess(true);result.setMsg("证书通过成功");lic.setLicState((short)1);result.setDetail(licService.update(lic));return result;}@PostMapping("LicNoPass")public Result lic_NoPass(Integer lid){Result result=new Result();result.setSuccess(false);Lic lic=licService.queryById(lid);if(lic==null){result.setMsg("证书id错误");return result;}result.setSuccess(true);result.setMsg("证书不通过成功");lic.setLicState((short)2);result.setDetail(licService.update(lic));return result;}*///企业信息相关/*** 企业信息筛选* @param username 用户名* @param ename 企业名* @param etype 企业类型* @param tel 电话* @param email 邮箱* @return*/@GetMapping("userList")public Result Account_Screen(String username,String ename,Integer etype,String tel,String email){Result result=new Result();result.setSuccess(false);String regEx = "^([a-zA-Z0-9._%-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,4})*$";Pattern pattern = Pattern.compile(regEx);Matcher matcher ;/**if(email!=null) {//邮箱格式验证matcher=pattern.matcher(email);if (!matcher.matches()) {result.setMsg("邮箱格式错误");System.out.println("邮箱格式错误");return result;}}*///用户名格式验证/**regEx="-^[\\w\\d_]{4,16}$";pattern=Pattern.compile(regEx);if(username!=null){matcher=pattern.matcher(username);if(!matcher.matches()){result.setMsg("用户名格式错误");System.out.println("用户名格式错误");return result;}}*/if (etype!=null&&typeTblService.queryById(etype)==null){result.setMsg("企业类型错误");System.out.println("企业类型错误");return result;}Ent ent=new Ent();ent.setTel(tel);ent.setUsername(username);ent.setEname(ename);ent.setEmail(email);ent.setEtype(etype);List list=entService.queryAll(ent);if (list.isEmpty()){result.setMsg("无此类信息");return result;}result.setDetail(entService.queryAll(ent));result.setSuccess(true);result.setMsg("筛选成功");return result;}/*** 修改企业信息* @param eid 企业id* @param etype 企业类型* @param tele 电话* @param ename 企业名字* @param email 邮箱* @return*/@PostMapping("editEntDetail")public Result EditEnt(Integer eid,Integer etype,String tele,String ename,String email){//邮箱格式验证Result result=new Result();result.setSuccess(false);String regEx="^([a-zA-Z0-9._%-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,4})*$";Pattern pattern=Pattern.compile(regEx);Matcher matcher;if(email!=null) {matcher=pattern.matcher(email);if (!matcher.matches()) {result.setMsg("邮箱格式错误");System.out.println("邮箱格式错误");return result;}}Ent ent=new Ent();ent.setEid(eid);ent.setEtype(etype);ent.setTel(tele);ent.setEname(ename);result.setSuccess(true);result.setMsg("修改成功");ent=entService.update(ent);ent.setPwd("");result.setDetail(ent);return result;}/***重置企业账号token* @param eid 企业id* @return*/@PostMapping("resetEntToken")public Result ResetEntToken(Integer eid){Result result=new Result();result.setSuccess(false);if(eid==null){result.setMsg("eid不可为空");return result;}if(entService.queryById(eid)==null){result.setMsg("eid错误");return result;}Ent ent=entService.queryById(eid);String token=UUID.randomUUID().toString().replaceAll("-","");ent.setToken(token);ent=entService.update(ent);result.setMsg("重置token成功");result.setSuccess(true);result.setDetail(ent);return result;}}

许可证管理控制层:

@RestController
@RequestMapping("lic")
public class LicController {/*** 服务对象*/@Resourceprivate LicService licService;/*** 通过主键查询单条数据** @param lid 主键* @return 单条数据*/@GetMapping("selectOne")public Lic selectOne(Integer lid) {return this.licService.queryById(lid);}/*** 新增数据*///http://127.0.0.1:11451/lic/insertOne?eid=101&serNum=1&licType=1&licState=1 error//http://127.0.0.1:11451/lic/insertOne?eid=1&serNum=1&licType=1&licState=1@GetMapping("insertOne")public Lic insert(Integer eid, String serNum, Integer licType, Integer licState) {Lic lic=new Lic();lic.setEid(eid);lic.setSerNum(serNum);lic.setLicType(licType);lic.setLicState(licState);return this.licService.insert(lic);}/*** 更新数据** @param lid 主键* @param eid 企业id* @param serNum* @param licType* @param licState* @return 单条数据*///http://127.0.0.1:11451/lic/updateOne?lid=2&eid=3@GetMapping("updateOne")public Lic update(Integer lid, Integer eid, String serNum,Integer licType,Integer licState) {Lic lic=new Lic();lic.setLid(lid);lic.setEid(eid);lic.setSerNum(serNum);lic.setLicType(licType);lic.setLicState(licState);return licService.update(lic);}/*** 删除数据** @param lid 主键* @return 是否删除了数据的布尔值*///http://127.0.0.1:11451/lic/deleteOne?lid=2@GetMapping("deleteOne")public boolean deleteById(Integer lid) {return licService.deleteById(lid);}}

源码获取:俺的博客首页 "资源" 里下载!

Java项目:农产品溯源管理系统(java+SSM+JSP+LayUI+jQuery+mysql)相关推荐

  1. 基于javaweb的农产品溯源管理系统(java+ssm+jsp+layui+jquery+mysql)

    基于javaweb的农产品溯源管理系统(java+ssm+jsp+layui+jquery+mysql) 运行环境 Java≥8.MySQL≥5.7.Tomcat≥8 开发工具 eclipse/ide ...

  2. 基于javaweb的红酒朔源管理系统(java+ssm+jsp+layui+jquery+mysql)

    基于javaweb的红酒朔源管理系统(java+ssm+jsp+layui+jquery+mysql) 运行环境 Java≥8.MySQL≥5.7.Tomcat≥8 开发工具 eclipse/idea ...

  3. 基于javaweb的报销erp系统(java+ssm+jsp+layui+jquery+mysql)

    基于javaweb的报销erp系统(java+ssm+jsp+layui+jquery+mysql) 运行环境 Java≥8.MySQL≥5.7.Tomcat≥8 开发工具 eclipse/idea/ ...

  4. Java项目:红酒朔源管理系统(java+SSM+JSP+LayUI+jQuery+Mysql)

    源码获取:俺的博客首页 "资源" 里下载! 项目介绍 本项目分为前后台,分为普通用户.管理员.企业用户三种角色: 普通用户无需登录,可在前台直接进行溯源查询,管理员.企业用户可登录 ...

  5. 基于javaweb的高校运动会管理系统(java+ssm+jsp+js+jquery+mysql)

    基于javaweb的高校运动会管理系统(java+ssm+jsp+js+jquery+mysql) 运行环境 Java≥8.MySQL≥5.7.Tomcat≥8 开发工具 eclipse/idea/m ...

  6. 基于javaweb的业务代办帮跑腿管理系统(java+ssm+jsp+bootstrap+jquery+mysql)

    基于javaweb的业务代办帮跑腿管理系统(java+ssm+jsp+bootstrap+jquery+mysql) 运行环境 Java≥8.MySQL≥5.7.Tomcat≥8 开发工具 eclip ...

  7. 基于javaweb的超市进销存管理系统(java+ssm+jsp+bootstrap+jquery+mysql)

    基于javaweb的超市进销存管理系统(java+ssm+jsp+bootstrap+jquery+mysql) 运行环境 Java≥8.MySQL≥5.7.Tomcat≥8 开发工具 eclipse ...

  8. 基于javaweb的茶叶商城管理系统(java+ssm+jsp+ajax+jquery+mysql)

    基于javaweb的茶叶商城管理系统(java+ssm+jsp+ajax+jquery+mysql) 运行环境 Java≥8.MySQL≥5.7.Tomcat≥8 开发工具 eclipse/idea/ ...

  9. 基于javaweb的企业绩效考核管理系统(java+ssm+jsp+bootstrap+jquery+mysql)

    基于javaweb的企业绩效考核管理系统(java+ssm+jsp+bootstrap+jquery+mysql) 运行环境 Java≥8.MySQL≥5.7.Tomcat≥8 开发工具 eclips ...

最新文章

  1. Html Agility Pack基础类介绍及运用
  2. 《Nature》发文:好导师的16个标准
  3. 不丹的启示:用国民幸福总值替代GDP
  4. 用79种语言说爱琪琪格
  5. mysql主从同步配置超详细_MySQL主从同步配置
  6. vmware workstation 8上面装vsphere5
  7. jquery学习之-查找父元素方法parent() parents() closest()的区别
  8. Java中12个原子操作类
  9. 大数据学习笔记04:单机模式使用ZooKeeper
  10. mac环境下配置gradle\maven
  11. Python学习笔记1:数据模型和特殊方法(魔术方法)
  12. UDP和TCP 简单 区别
  13. jenkins教程菜鸟_jenkins 入门教程(上)
  14. java开发软件怎么安装不了_java开发软件的安装
  15. PHP-swoole 聊天室
  16. 云之家定位拍照怎么破解
  17. 企业邮箱品牌哪家好?四大品牌企业邮箱推荐
  18. 百度网盘Linux版本能用吗,百度网盘Linux版使用体验效果
  19. matlab求解振动学问题,振动力学基础与MATLAB应用
  20. slam学习(1)——卡尔曼滤波

热门文章

  1. 电脑故障维修大全 [2]
  2. 用织梦系统仿站操作流程截图版
  3. visual studio css大纲,Visual Studio代码CSS缩进和格式化
  4. 【Java开发】设计模式 17:中介者模式
  5. Fortran学习笔记(6)
  6. 芯圣SQ013单片机IO口模拟串口 延时法
  7. web前端期末大作业 在线电影网页设计与制作 HTML+CSS+JavaScript仿叮当电影网页制作
  8. 互联网摸鱼日报(2023-01-07)
  9. Yahoo,我去也!
  10. Ubuntu机器设置sshfs远程连接