食品生产管理系统 毕业设计 JAVA+Vue+SpringBoot+MySQL

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 食品生产管理系统 毕业设计 JAVA+Vue+SpringBoot+MySQL

https://gf.bilibili.com/item/detail/1104378029

为了帮助小白入门 Java,博主录制了本项目配套的《项目手把手启动教程》,希望能给同学们带来帮助。

一、摘要

1.1 项目介绍

基于JAVA+Vue+SpringBoot+MySQL的食品生产管理系统,包含了加工厂管理、客户管理、食品管理、生产订单、销售订单、系统公告模块,还包含系统自带的用户管理、部门管理、角色管理、菜单管理、日志管理、数据字典管理、文件管理、图表展示等基础模块,食品生产管理系统基于角色的访问控制,给食品管理员、加工厂店员使用,可将权限精确到按钮级别,您可以自定义角色并分配权限,系统适合设计精确的权限约束需求。

1.2 项目录屏


二、功能模块

在食品产品管理系统中的难点重点是不同食品有不同的有效期,当把食品供应到多个卖场之后,会存在食品的供应、回收等问题。这些问题亟待解决。

系统主要通过食品管理、用户管理以及各个不同的角色等主要功能模块来实现食品产品管理系统的功能。其中包括用户信息的建立、修改以及删除;商品信息的建立、修改以及删除。特别是用户进行订购产品时,当食品过多或不足,会存在食品的供应、回收等问题。以及对各类食品的管理。从而,实现对食品各种信息、用户信息等实现全面、动态、及时的管理。

2.1 加工厂管理模块

用于对于生产加工的工厂进行管理,管理者可以进行添加加工厂,修改信息、删除加工厂信息等功能。

2.2 客户管理模块

客户管理模块主要是把客户汇总,做成可视化表格,便于对客户进行增删改查等基本操作的管理。

2.3 食品管理模块

食品管理模块主要对已经产出的食品进行信息分类展示,管理员可以对它进行查看,并进行增删改查功能。

2.4 生产销售订单管理模块

包括生产订单管理模块以及销售管理模块。生产订单管理模块是把需要加工的食品订单进行管理;销售管理是记录以及销售的食品种类以及数量,清晰的看到各类食品的销售并进行选择进行加订。

2.5 系统管理模块

包括两个个模块,权限管理、角色管理。权限管理模块分为两个权限,管理用户并分配权限角色,权限分为管理员与食品加工厂管理员,管理员可以看到所有功能模块,加工厂管理员只能看到加工厂生产订单管理;角色管理模块管理各个权限角色并进行解释。

2.6 其他管理模块

包括登陆日志以及系统公告。登陆日志可以查看历史登陆信息;系统公告模块可以编辑发布公告呈现在管理员的首页。


三、系统展示


四、核心代码

4.1 查询食品

@RequestMapping(value = "/getByPage", method = RequestMethod.GET)
@ApiOperation(value = "查询食品")
public Result<IPage<Food>> getByPage(@ModelAttribute Food food ,@ModelAttribute PageVo page){
    QueryWrapper<Food> qw = new QueryWrapper<>();
    if(!ZwzNullUtils.isNull(food.getTitle())) {
        qw.like("title",food.getTitle());
    }
    if(!ZwzNullUtils.isNull(food.getContent())) {
        qw.like("content",food.getContent());
    }
    if(!ZwzNullUtils.isNull(food.getType())) {
        qw.eq("type",food.getType());
    }
    IPage<Food> data = iFoodService.page(PageUtil.initMpPage(page),qw);
    return new ResultUtil<IPage<Food>>().setData(data);
}

4.2 查询加工厂

@RequestMapping(value = "/getByPage", method = RequestMethod.GET)
@ApiOperation(value = "查询加工厂")
public Result<IPage<ProcessingFactory>> getByPage(@ModelAttribute ProcessingFactory processingFactory ,@ModelAttribute PageVo page){
    QueryWrapper<ProcessingFactory> qw = new QueryWrapper<>();
    if(!ZwzNullUtils.isNull(processingFactory.getTitle())) {
        qw.like("title",processingFactory.getTitle());
    }
    if(!ZwzNullUtils.isNull(processingFactory.getAddress())) {
        qw.like("address",processingFactory.getAddress());
    }
    if(!ZwzNullUtils.isNull(processingFactory.getDutyName())) {
        qw.like("duty_name",processingFactory.getDutyName());
    }
    IPage<ProcessingFactory> data = iProcessingFactoryService.page(PageUtil.initMpPage(page),qw);
    return new ResultUtil<IPage<ProcessingFactory>>().setData(data);
}

4.3 新增生产订单

@RequestMapping(value = "/insert", method = RequestMethod.POST)
@ApiOperation(value = "新增生产订单")
public Result<ProduceOrder> insert(ProduceOrder produceOrder){
    Food food = iFoodService.getById(produceOrder.getFoodId());
    if(food == null) {
        return ResultUtil.error("食品不存在");
    }
    produceOrder.setFoodName(food.getTitle());
    produceOrder.setContent(food.getContent());
    produceOrder.setImage(food.getImage());
    produceOrder.setType(food.getType());
    iProduceOrderService.saveOrUpdate(produceOrder);
    food.setStock(food.getStock().add(produceOrder.getNumber()));
    iFoodService.saveOrUpdate(food);
    return new ResultUtil<ProduceOrder>().setData(produceOrder);
}

4.4 新增销售订单

@RequestMapping(value = "/insert", method = RequestMethod.POST)
@ApiOperation(value = "新增销售订单")
public Result<SalesOrder> insert(SalesOrder salesOrder){
    Food food = iFoodService.getById(salesOrder.getFoodId());
    if(food == null) {
        return ResultUtil.error("食品不存在");
    }
    if(food.getStock().compareTo(salesOrder.getNumber()) < 0) {
        return ResultUtil.error("库存不足");
    }
    salesOrder.setFoodName(food.getTitle());
    salesOrder.setContent(food.getContent());
    salesOrder.setImage(food.getImage());
    salesOrder.setType(food.getType());
    Customer customer = iCustomerService.getById(salesOrder.getBuyId());
    if(customer == null) {
        return ResultUtil.error("客户不存在");
    }
    salesOrder.setBuyName(customer.getTitle());
    iSalesOrderService.saveOrUpdate(salesOrder);
    food.setStock(food.getStock().subtract(salesOrder.getNumber()));
    iFoodService.saveOrUpdate(food);
    return new ResultUtil<SalesOrder>().setData(salesOrder);
}

4.5 查询客户

@RequestMapping(value = "/getByPage", method = RequestMethod.GET)
@ApiOperation(value = "查询客户")
public Result<IPage<Customer>> getByPage(@ModelAttribute Customer customer ,@ModelAttribute PageVo page){
    QueryWrapper<Customer> qw = new QueryWrapper<>();
    if(!ZwzNullUtils.isNull(customer.getTitle())) {
        qw.like("title",customer.getTitle());
    }
    if(!ZwzNullUtils.isNull(customer.getSex())) {
        qw.eq("sex",customer.getSex());
    }
    if(!ZwzNullUtils.isNull(customer.getChannel())) {
        qw.eq("channel",customer.getChannel());
    }
    IPage<Customer> data = iCustomerService.page(PageUtil.initMpPage(page),qw);
    return new ResultUtil<IPage<Customer>>().setData(data);
}

五、免责说明

  • 本项目仅供个人学习使用,商用授权请联系博主,否则后果自负。
  • 博主拥有本软件构建后的应用系统全部内容所有权及独立的知识产权,拥有最终解释权。
  • 如有问题,欢迎在仓库 Issue 留言,看到后会第一时间回复,相关意见会酌情考虑,但没有一定被采纳的承诺或保证。

下载本系统代码或使用本系统的用户,必须同意以下内容,否则请勿下载!

  1. 出于自愿而使用/开发本软件,了解使用本软件的风险,且同意自己承担使用本软件的风险。
  2. 利用本软件构建的网站的任何信息内容以及导致的任何版权纠纷和法律争议及后果和博主无关,博主对此不承担任何责任。
  3. 在任何情况下,对于因使用或无法使用本软件而导致的任何难以合理预估的损失(包括但不仅限于商业利润损失、业务中断与业务信息丢失),博主概不承担任何责任。
  4. 必须了解使用本软件的风险,博主不承诺提供一对一的技术支持、使用担保,也不承担任何因本软件而产生的难以预料的问题的相关责任。
相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
相关文章
|
7月前
|
负载均衡 算法 关系型数据库
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
本文聚焦 MySQL 集群架构中的负载均衡算法,阐述其重要性。详细介绍轮询、加权轮询、最少连接、加权最少连接、随机、源地址哈希等常用算法,分析各自优缺点及适用场景。并提供 Java 语言代码实现示例,助力直观理解。文章结构清晰,语言通俗易懂,对理解和应用负载均衡算法具有实用价值和参考价值。
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
|
3月前
|
SQL Java 关系型数据库
Java连接MySQL数据库环境设置指南
请注意,在实际部署时应该避免将敏感信息(如用户名和密码)硬编码在源码文件里面;应该使用配置文件或者环境变量等更为安全可靠地方式管理这些信息。此外,在处理大量数据时考虑使用PreparedStatement而不是Statement可以提高性能并防止SQL注入攻击;同时也要注意正确处理异常情况,并且确保所有打开过得资源都被正确关闭释放掉以防止内存泄漏等问题发生。
142 13
|
5月前
|
人工智能 Java 关系型数据库
Java的时间处理与Mysql的时间查询
本文总结了Java中时间与日历的常用操作,包括时间的转换、格式化、日期加减及比较,并介绍了MySQL中按天、周、月、季度和年进行时间范围查询的方法,适用于日常开发中的时间处理需求。
103 0
|
6月前
|
SQL Java 数据库
解决Java Spring Boot应用中MyBatis-Plus查询问题的策略。
保持技能更新是侦探的重要素质。定期回顾最佳实践和新技术。比如,定期查看MyBatis-Plus的更新和社区的最佳做法,这样才能不断提升查询效率和性能。
263 1
|
6月前
|
Java API 微服务
Java 21 与 Spring Boot 3.2 微服务开发从入门到精通实操指南
《Java 21与Spring Boot 3.2微服务开发实践》摘要: 本文基于Java 21和Spring Boot 3.2最新特性,通过完整代码示例展示了微服务开发全流程。主要内容包括:1) 使用Spring Initializr初始化项目,集成Web、JPA、H2等组件;2) 配置虚拟线程支持高并发;3) 采用记录类优化DTO设计;4) 实现JPA Repository与Stream API数据访问;5) 服务层整合虚拟线程异步处理和结构化并发;6) 构建RESTful API并使用Springdoc生成文档。文中特别演示了虚拟线程配置(@Async)和StructuredTaskSco
729 0
|
5月前
|
Java Spring 容器
SpringBoot自动配置的原理是什么?
Spring Boot自动配置核心在于@EnableAutoConfiguration注解,它通过@Import导入配置选择器,加载META-INF/spring.factories中定义的自动配置类。这些类根据@Conditional系列注解判断是否生效。但Spring Boot 3.0后已弃用spring.factories,改用新格式的.imports文件进行配置。
933 0
|
6月前
|
人工智能 Java 测试技术
Spring Boot 集成 JUnit 单元测试
本文介绍了在Spring Boot中使用JUnit 5进行单元测试的常用方法与技巧,包括添加依赖、编写测试类、使用@SpringBootTest参数、自动装配测试模块(如JSON、MVC、WebFlux、JDBC等),以及@MockBean和@SpyBean的应用。内容实用,适合Java开发者参考学习。
679 0
|
2月前
|
JavaScript Java Maven
【SpringBoot(二)】带你认识Yaml配置文件类型、SpringMVC的资源访问路径 和 静态资源配置的原理!
SpringBoot专栏第二章,从本章开始正式进入SpringBoot的WEB阶段开发,本章先带你认识yaml配置文件和资源的路径配置原理,以方便在后面的文章中打下基础
320 3
|
2月前
|
Java 测试技术 数据库连接
【SpringBoot(四)】还不懂文件上传?JUnit使用?本文带你了解SpringBoot的文件上传、异常处理、组件注入等知识!并且带你领悟JUnit单元测试的使用!
Spring专栏第四章,本文带你上手 SpringBoot 的文件上传、异常处理、组件注入等功能 并且为你演示Junit5的基础上手体验
867 2
|
9月前
|
前端开发 Java 数据库
微服务——SpringBoot使用归纳——Spring Boot集成Thymeleaf模板引擎——Thymeleaf 介绍
本课介绍Spring Boot集成Thymeleaf模板引擎。Thymeleaf是一款现代服务器端Java模板引擎,支持Web和独立环境,可实现自然模板开发,便于团队协作。与传统JSP不同,Thymeleaf模板可以直接在浏览器中打开,方便前端人员查看静态原型。通过在HTML标签中添加扩展属性(如`th:text`),Thymeleaf能够在服务运行时动态替换内容,展示数据库中的数据,同时兼容静态页面展示,为开发带来灵活性和便利性。
405 0

热门文章

最新文章