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

项目介绍

本项目分为前后台,分为普通用户、管理员、企业用户三种角色;
普通用户无需登录,可在前台直接进行溯源查询,管理员、企业用户可登录后台进行管理;
超级管理员角色包含以下功能:
登录,管理企业,设置管理员,增加管理员,删除管理员等功能。

用户角色包含以下功能:
用户首页,用户进行溯源查询,溯源结果等功能。

企业角色包含以下功能:
注册,登录,企业登录后主页,增删改查红酒列表,新增红酒,二维码列表查看,溯源列表,查看近期溯源人数,修改企业信息,查看溯源二维码等功能。

环境需要

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);}}

加工管理控制层:

@RestController
@RequestMapping("product")
public class ProductController {/*** 服务对象*/@Resourceprivate ProductService productService;@Resourceprivate ProcessController processController;/*** 通过主键查询单条数据** @param pid 主键* @return 单条数据*/@GetMapping("selectOne")public Product selectOne(Integer pid) {return this.productService.queryById(pid);}/*** 新增数据*///http://127.0.0.1:11451/product/insertOne?pid=1&type=5001001&weight=3.5&ptime=2016-12-12&lastOid=1&state=1
//    @GetMapping("insertOne")
//    public Product insert(Integer pid, Integer type, Double weight, String ptime,Integer lastOid,Short state) {
//        Product product=new Product();
//        product.setPid(pid);
//        product.setType(type);
//        product.setWeight(weight);
//        product.setPtime(ptime);
//        product.setLastOid(lastOid);
//        product.setState(state);
//        return this.productService.insert(product);
//    }/*** 更新数据**///http://127.0.0.1:11451/product/updateOne?pid=1&bid=2@GetMapping("updateOne")public Product update(Integer pid, Integer type, Double weight, String ptime,Integer lastOid,Short state) {Product product=new Product();product.setPid(pid);product.setType(type);product.setWeight(weight);product.setPtime(ptime);product.setLastOid(lastOid);product.setState(state);return productService.update(product);}/*** 删除数据*///http://127.0.0.1:11451/product/deleteOne?pid=2@GetMapping("deleteOne")public boolean deleteById(Integer pid) {return productService.deleteById(pid);}/*** 插入新数据** @param type 肉品类型* @param weight 重量* @param time 加工时间* @param lastoid 最新订单号* @param state 状态* @param bid 屠宰着id* @param aid 牲畜id* @return 单条数据*/@GetMapping("insert")public Result insert(Integer type, Double weight, String time, Integer lastoid, short state,Integer bid,Integer aid) {Result result=new Result();result.setSuccess(false);result.setDetail(null);Product product=new Product();SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");try {// 设置lenient为false. 否则SimpleDateFormat会比较宽松地验证日期,比如2007/02/29会被接受,并转换成2007/03/01format.setLenient(false);format.parse(time);} catch (ParseException e) {System.out.println("时间输入格式错误");e.printStackTrace();result.setMsg("时间未按格式输入");return result;// e.printStackTrace();// 如果throw java.text.ParseException或者NullPointerException,就说明格式不对}product.setLastOid(lastoid);product.setPtime(time);product.setState(state);product.setType(type);product.setWeight(weight);product=productService.insert(product);this.processController.insert(bid,aid,product.getPid());result.setMsg("加工完成");result.setDetail(product);result.setSuccess(true);return result;}}

管理员管理控制层:

@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;}}

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

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/idea ...

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

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

  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+bootstrap+jquery+mysql)

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

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

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

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

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

  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. 贵州大学明德学院计算机有多少班级,2014年贵州大学明德学院算机科学及信息系电子信息工程专业介绍...
  2. RxSwift 小记 Error Handling Operators(catchError,retry)
  3. 软件测试入门三年经验
  4. MFC视图滚动条的基本使用和C语言输出三角形的MFC版本
  5. python的unicode_python的unicode及其编码解码
  6. 计算机安装调试的专业名称,【注意】计算机安装调试维修员国家职业标准
  7. oracle存储过程获取异常信息码和异常信息
  8. 得到照片_大叔偷别人羞羞的照片画画,添油加醋后,却得到无数人点赞!
  9. Jasypt 加密-整合SpringBoot
  10. HFileOutputFormat与TotalOrderPartitioner
  11. java 极客_Java极客思维
  12. 方舟手游pvp服务器修改pvx,方舟生存进化手机版怎么玩pvx_方舟生存进化手机版pvx玩法规则介绍_好特网...
  13. linux查看服务_Linux服务下通过指令查看JVM(非原创侵删)
  14. Longest Common Substring($LCS$)
  15. cocos2d cocostudio
  16. 【大结局】三体 III 中的思想实验:死神永生(下)
  17. 小水智能-智能楼宇智慧建筑3d可视化,让钢铁水泥也可以沟通交流
  18. 通过python scrapy shell 获取对应的网页元素值
  19. 学习javaweb第四天
  20. 联通发布沃Phone,全球为之震动

热门文章

  1. 刘升平 | 基于知识图谱的人机对话系统
  2. 首个活体机器人诞生:青蛙细胞生成,超级计算机设计,外媒:毛骨悚然
  3. 2020最受欢迎的7个vue管理后台框架
  4. 帝国CMS百度主动/自动推送插件(ZLPlugin-BDPush Pro)
  5. c++ try catch 问题
  6. 可怕的无声环境计算机怎么做,求高手解决电脑为什么无声
  7. 运用最合适的解套方法--补仓五大诀窍
  8. 指针为什么要动态分配空间
  9. python自动排班表
  10. bash有意思的记录