当前位置: 首页 > news >正文

Vue.js+SpringBoot开发食品生产管理系统

在这里插入图片描述


目录

  • 一、摘要
    • 1.1 项目介绍
    • 1.2 项目录屏
  • 二、功能模块
    • 2.1 加工厂管理模块
    • 2.2 客户管理模块
    • 2.3 食品管理模块
    • 2.4 生产销售订单管理模块
    • 2.5 系统管理模块
    • 2.6 其他管理模块
  • 三、系统展示
  • 四、核心代码
    • 4.1 查询食品
    • 4.2 查询加工厂
    • 4.3 新增生产订单
    • 4.4 新增销售订单
    • 4.5 查询客户
  • 五、免责说明


一、摘要

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. 必须了解使用本软件的风险,博主不承诺提供一对一的技术支持、使用担保,也不承担任何因本软件而产生的难以预料的问题的相关责任。

在这里插入图片描述

相关文章:

Vue.js+SpringBoot开发食品生产管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 加工厂管理模块2.2 客户管理模块2.3 食品管理模块2.4 生产销售订单管理模块2.5 系统管理模块2.6 其他管理模块 三、系统展示四、核心代码4.1 查询食品4.2 查询加工厂4.3 新增生产订单4.4 新增销售订单4.5 查询客户 五、…...

Python面试笔记

Python面试笔记 PythonQ. Python中可变数据类型与不可变数据类型&#xff0c;浅拷贝与深拷贝详解Q. 解释什么是lambda函数&#xff1f;它有什么好处&#xff1f;Q. 什么是装饰器&#xff1f;Q. 什么是Python的垃圾回收机制&#xff1f;Q. Python内置函数dir的用法&#xff1f;Q…...

springboot 查看和修改内置 tomcat 版本

解析Spring Boot父级依赖 去到项目的根pom文件中&#xff0c;找到parent依赖&#xff1a; <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>${springboot.version}…...

003——移植鸿蒙

目录 一、顶层Make分析 二、添加一个新的单板 2.1 Kconfig 2.2 Makefile 2.2.1 顶层Makefile 2.2.2 platform下的Makefile 2.2.3 platform下的bsp.mk文件 2.3 编译与调试 2.4 解决链接错误 三、内核启动流程的学习 3.1 韦东山老师总结的启动四步 3.2 启动文件分析…...

罗马数字转整数-力扣通过自己编译器编译

学会将力扣题目用自己自带的编译软件编译---纯自己想的本题解法 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 例如&#xff0c; 罗马数字 2 写做 II &#xff0c;即为两…...

深入解析JVM加载机制

一、背景 Java代码被编译器变成生成Class字节码&#xff0c;但字节码仅是一个特殊的二进制文件&#xff0c;无法直接使用。因此&#xff0c;都需要放到JVM系统中执行&#xff0c;将Class字节码文件放入到JVM的过程&#xff0c;简称类加载。 二、整体流程 三、阶段逻辑分析 3…...

python redis中blpop和lpop的区别

python redis中lpop()方法是获取并删除左边第一个对象。 def lpop(self,name: str,count: Optional[int] None,) -> Union[Awaitable[Union[str, List, None]], Union[str, List, None]]:"""Removes and returns the first elements of the list name.By de…...

第四百一十回

文章目录 1. 概念介绍2. 方法与细节2.1 获取方法2.2 使用细节 3. 示例代码4. 内容总结 我们在上一章回中介绍了"如何获取当前系统语言"相关的内容&#xff0c;本章回中将介绍如何获取时间戳.闲话休提&#xff0c;让我们一起Talk Flutter吧。 1. 概念介绍 我们在本章…...

程序员的README——编写可维护的代码(一)

用户行为不可预测&#xff0c;网络不可靠&#xff0c;事情总会出错。生产环境下的软件必须一直保持可用状态。 编写可维护的代码有助于你应对不可预见的情况&#xff0c;可维护的代码有内置的保护、诊断和控制。 切记通过安全和有弹性的编码实践进行防御式编程来保护你的系统&a…...

数据库管理-第160期 Oracle Vector DB AI-11(20240312)

数据库管理160期 2024-03-12 数据库管理-第160期 Oracle Vector DB & AI-11&#xff08;20240312&#xff09;1 向量的函数操作to_vector()将vector转换为标准值vector_norm()vector_dimension_count()vector_dimension_format() 2 将向量转换为字符串或CLOBvector_seriali…...

(C++进阶)boost库笔记

目录 1、boost::function 1.1 概述 1.2 boost包装器和C11包装器对比 1.2、代码示例 1、boost::function 1.1 概述 boost::function 是 Boost 库中提供的一个通用函数对象包装器&#xff0c;它可以存储指向任何可调用对象的指针&#xff0c;并且可以在任何时候通过 operat…...

MapReduce面试重点

文章目录 1. 简述MapReduce整个流程2. join原理 1. 简述MapReduce整个流程 数据划分(Input Splitting)&#xff1a;开始时&#xff0c;输入数据被分割成逻辑上的小块&#xff0c;每个块被称为Input Split。 映射(Map)&#xff1a;每个Input Split 由一个或多个Map任务处理&…...

C语言简单题(7)从主函数中输入10个等长字符串,用一个函数对他们排序,然后在主函数输出这10个已排好序的字符串

从主函数中输入10个等长字符串&#xff0c;用一个函数对他们排序&#xff0c;然后在主函数输出这10个已排好序的字符串 /* 从主函数中输入10个等长字符串&#xff0c;用一个函数对他们排序&#xff0c;然后在主函数输出这10个已排好序的字符串 */ #include<stdio.h> …...

光伏科普|太阳能光伏发电应用场景有哪些?

太阳能光伏发电的应用领域其实非常广泛&#xff0c;很多人会不相信&#xff0c;但在我们的日常生活中随处可见太阳能光伏产业&#xff0c;本文将详细介绍其应用场景有哪些。 一、工业领域厂房 太阳能光伏发电作为一种清洁、可再生的能源&#xff0c;安装在工业领域厂房&#…...

Go 构建高效的二叉搜索树联系簿

引言 树是一种重要的数据结构&#xff0c;而二叉搜索树&#xff08;BST&#xff09;则是树的一种常见形式。在本文中&#xff0c;我们将学习如何构建一个高效的二叉搜索树联系簿&#xff0c;以便快速插入、搜索和删除联系人信息。 介绍二叉搜索树 二叉搜索树是一种有序的二叉…...

基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的交通信号灯识别系统(深度学习+UI界面+训练数据集+Python代码)

摘要&#xff1a;本研究详细介绍了一种采用深度学习技术的交通信号灯识别系统&#xff0c;该系统集成了最新的YOLOv8算法&#xff0c;并与YOLOv7、YOLOv6、YOLOv5等早期算法进行了性能评估对比。该系统能够在各种媒介——包括图像、视频文件、实时视频流及批量文件中——准确地…...

以太坊开发学习-solidity(三)函数类型

目录 函数类型 函数类型 solidity官方文档里把函数归到数值类型 函数类型是一种表示函数的类型。可以将一个函数赋值给另一个函数类型的变量&#xff0c; 也可以将一个函数作为参数进行传递&#xff0c;还能在函数调用中返回函数类型变量。 函数类型有两类&#xff1a;- 内部&…...

教你把公司吃干抹净、榨干带走

大家好&#xff1a; 衷心希望各位点赞。 您的问题请留在评论区&#xff0c;我会及时回答 正文 打工人一定要做到够自私&#xff0c;把公司的一切为我所用&#xff0c;你要知道闷头打工是没有出路的。聪明的人会以最快的速度榨干带走公司的一切资源、人脉、技能&#xff0c;为…...

开发指南007-导出Excel

平台上开发导出Excel比过去的单体架构要复杂些&#xff0c;因为前端和后台不在一个进程空间里。 后台的操作是先生成excel文件&#xff0c;技术路线是jxl <dependency><groupId>net.sourceforge.jexcelapi</groupId><artifactId>jxl</artifactId&g…...

滑块验证码

1.这里针对滑块验证给了一个封装的组件verifition&#xff0c;使用直接可以调用 2.组件目录 3.每个文件的内容 3.1 Api文件中只有一个index.js文件&#xff0c;用来存放获取滑块和校验滑块结果的api import request from /router/axios//获取验证图片 export function reqGe…...

Zotero插件安装失败?手把手教你解决版本兼容问题(以better-notes为例)

Zotero插件安装失败&#xff1f;手把手教你解决版本兼容问题&#xff08;以better-notes为例&#xff09; 学术研究离不开文献管理工具&#xff0c;Zotero作为开源免费的文献管理神器&#xff0c;凭借其强大的功能和丰富的插件生态&#xff0c;成为众多科研工作者的首选。然而…...

KubeSphere Core 离线部署实战:从镜像搬运到私有仓库配置

1. 离线部署KubeSphere Core的核心挑战 在企业内网环境中部署KubeSphere Core时&#xff0c;最大的障碍就是如何解决容器镜像的获取问题。我去年给某金融机构做私有云改造时就遇到过这种情况——他们的生产环境完全隔离&#xff0c;所有服务器都无法直接访问公网。当时为了部署…...

华为交换机-跨Vlan通信的实战配置指南

1. 华为交换机跨VLAN通信的核心原理 第一次接触跨VLAN通信时&#xff0c;我也被那些专业术语搞得一头雾水。直到把整个流程拆解成生活场景&#xff0c;才真正理解其中的奥妙。想象一下&#xff0c;VLAN就像公司里的不同部门&#xff0c;财务部、技术部、市场部各自在独立的办公…...

想找好用的建筑机器人?专业度是核心考量

在建筑行业智能化转型的浪潮中&#xff0c;建筑机器人正从“概念产品”变为“生产力工具”。面对市场上众多的品牌&#xff0c;如何选择一家专业、可靠、能真正解决问题的供应商&#xff0c;成为许多施工企业决策者的核心关切。本文将结合具体数据和案例&#xff0c;为您提供一…...

别再纠结了!手把手教你根据团队规模和技术栈选对存储方案(Ceph vs MinIO实战对比)

技术选型实战&#xff1a;Ceph与MinIO的团队适配决策框架 当技术负责人面对存储方案选型时&#xff0c;往往陷入"功能强大"与"简单易用"的两难抉择。我曾见证过一家50人规模的AI创业公司&#xff0c;因盲目选择Ceph导致三个月后不得不重构基础设施——他们…...

RT-Thread消息邮箱机制解析与应用实践

RT-Thread消息邮箱机制深度解析1. 消息邮箱概述1.1 线程通信基础机制在实时操作系统中&#xff0c;线程间通信(IPC)是系统设计的关键组成部分。RT-Thread提供了两种基础通信机制&#xff1a;消息邮箱和消息队列。消息邮箱以其轻量级和高效性著称&#xff0c;特别适合小数据量的…...

3步实现Axure RP本地化界面优化:开源工具助力中文设计环境构建

3步实现Axure RP本地化界面优化&#xff1a;开源工具助力中文设计环境构建 【免费下载链接】axure-cn Chinese language file for Axure RP. Axure RP 简体中文语言包&#xff0c;不定期更新。支持 Axure 9、Axure 10。 项目地址: https://gitcode.com/gh_mirrors/ax/axure-c…...

Figma栅格系统深度解析:从基础设置到高级布局技巧

Figma栅格系统深度解析&#xff1a;从基础设置到高级布局技巧 当你第一次在Figma中拖动组件时&#xff0c;是否注意到那些神秘的蓝色线条突然出现又消失&#xff1f;这就是Figma栅格系统在默默工作。作为现代UI设计的隐形骨架&#xff0c;栅格系统远比表面看到的复杂得多——它…...

U盘频繁提示“驱动器存在问题”?三步教你彻底修复并避免数据丢失

1. 为什么U盘会频繁提示“驱动器存在问题”&#xff1f; 每次插入U盘都弹出那个烦人的提示框&#xff0c;就像有个唠叨的管家在耳边不停提醒"您的U盘有问题啦&#xff01;"。这种情况我遇到过太多次了&#xff0c;特别是在使用时间较久的U盘上。其实这个提示背后隐藏…...

对于对话中的反讽识别,OpenClaw 的模型是否结合了语调特征?

关于OpenClaw模型在反讽识别中是否结合了语调特征&#xff0c;这个问题其实触及了当前自然语言处理中一个相当微妙的领域。从技术实现的角度来看&#xff0c;OpenClaw这类基于Transformer架构的大语言模型&#xff0c;其训练数据主要来源于互联网上的文本语料&#xff0c;比如网…...