首页/新闻资讯/正文详情

基于SpringBoot的工业生产计划管理系统设计与实现

发布时间:2026/9/25 15:24:35 来源:云帆数科 栏目:资讯中心
基于SpringBoot的工业生产计划管理系统设计与实现
温馨提示本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片一、 项目背景与意义在制造业数字化转型浪潮下传统的生产计划管理方式如Excel表格、纸质单据已难以满足现代企业对于生产敏捷性、资源优化和实时决策的需求。生产计划作为连接销售、采购、库存与车间执行的枢纽其管理效率直接影响到订单交付周期、生产成本与客户满意度。基于SpringBoot的工业生产计划管理系统旨在构建一个集成的、可扩展的数字化管理平台其核心意义在于提升计划编制效率通过算法辅助如MRP运算自动生成主生产计划MPS与物料需求计划MRP大幅缩短人工排程时间。实现资源精细化管理对设备、人力、物料等资源进行统一视图管理优化资源配置减少资源闲置与瓶颈。增强生产过程可视化与可控性实时跟踪计划执行进度通过看板、甘特图等方式直观展示支持动态调整以应对插单、设备故障等异常。促进部门协同打通销售、计划、采购、生产、仓储等部门的信息流确保数据同源、实时同步减少沟通成本与信息误差。为决策提供数据支撑积累生产历史数据通过报表分析为产能规划、效率提升、成本控制提供量化依据。二、 技术栈选型本系统采用前后端分离的微服务架构后端基于SpringBoot生态前端采用现代Vue.js框架确保系统的高性能、可维护性与可扩展性。2.1 后端技术栈核心框架Spring Boot 2.7提供快速启动、自动配置、内嵌容器Web层Spring MVC数据持久层ORM框架MyBatis-Plus增强CRUD操作简化开发数据库连接池HikariCP数据库主库MySQL 8.0存储业务核心数据如订单、计划、物料清单BOM缓存Redis存储会话、热点数据、计划锁提升并发性能安全与权限Spring Security JWTJSON Web Token实现认证与接口鉴权API文档Knife4j集成Swagger生成在线API文档消息中间件RabbitMQ用于异步处理计划发布、状态变更通知等场景任务调度Quartz / Spring Scheduler用于定时执行MRP运算、数据同步等任务构建与依赖管理Maven2.2 前端技术栈框架Vue 3 Composition API构建工具ViteUI组件库Element Plus状态管理Pinia路由Vue RouterHTTP客户端Axios可视化图表ECharts用于生产甘特图、资源负荷图、数据看板2.3 部署与运维容器化Docker Docker Compose持续集成/持续部署CI/CDJenkins / GitLab CI版本控制Git三、 系统核心功能模块设计系统采用模块化设计核心功能模块如下3.1 基础数据管理物料主数据管理原材料、半成品、成品的编码、名称、规格、单位等。物料清单BOM管理定义产品结构支持多级BOM、版本管理。工作中心/资源管理定义生产线、设备、班组等生产资源及其产能、日历。工艺路线管理定义产品加工的工序顺序、所需资源、标准工时。3.2 销售与需求管理销售订单管理接收客户订单明确产品、数量、交期。需求预测支持基于历史数据的预测模型生成预测订单。3.3 主生产计划MPS计划编制基于销售订单与需求预测考虑现有库存、在制品编制产品级的主生产计划。粗能力计划RCCP校验关键资源瓶颈设备的负荷是否满足计划。计划审批与发布工作流驱动计划审批发布后锁定。3.4 物料需求计划MRPMRP运算根据MPS、BOM、库存、在途量自动计算各级物料采购件、自制件的净需求、建议计划订单生产/采购及时间。计划订单管理对MRP生成的建议订单进行审核、调整、下达。3.5 车间作业计划SFC与派工工序级排程将生产订单分解到具体工作中心的工序任务。派工单管理生成并下发派工单到车间终端或移动设备。生产执行反馈接收工序报工数量、工时、质量状态。3.6 生产进度跟踪与看板甘特图可视化展示订单、设备、工序的排程与进度。生产实绩看板实时展示产量、效率、不良率等关键指标。异常报警对计划延迟、质量异常等事件进行预警。四、 数据库核心表结构设计以下为部分核心业务表的设计-- 物料主数据表 CREATE TABLE base_material ( id bigint NOT NULL AUTO_INCREMENT COMMENT 主键, material_code varchar(64) NOT NULL COMMENT 物料编码, material_name varchar(255) NOT NULL COMMENT 物料名称, specification varchar(500) DEFAULT NULL COMMENT 规格型号, unit varchar(20) DEFAULT NULL COMMENT 单位, material_type tinyint DEFAULT NULL COMMENT 物料类型1-原材料2-半成品3-成品, safety_stock decimal(18,6) DEFAULT NULL COMMENT 安全库存, lead_time int DEFAULT NULL COMMENT 提前期天, status tinyint DEFAULT 1 COMMENT 状态0-禁用1-启用, create_time datetime DEFAULT CURRENT_TIMESTAMP, update_time datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (id), UNIQUE KEY uk_material_code (material_code) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENT物料主数据; -- 物料清单BOM表 CREATE TABLE base_bom ( id bigint NOT NULL AUTO_INCREMENT, parent_material_id bigint NOT NULL COMMENT 父项物料ID, child_material_id bigint NOT NULL COMMENT 子项物料ID, usage_qty decimal(18,6) NOT NULL COMMENT 用量, loss_rate decimal(5,4) DEFAULT 0.0000 COMMENT 损耗率, bom_version varchar(20) DEFAULT NULL COMMENT BOM版本, effective_date date DEFAULT NULL COMMENT 生效日期, expiry_date date DEFAULT NULL COMMENT 失效日期, PRIMARY KEY (id), KEY idx_parent_material (parent_material_id), KEY idx_child_material (child_material_id) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENT物料清单; -- 销售订单表 CREATE TABLE sales_order ( id bigint NOT NULL AUTO_INCREMENT, order_no varchar(64) NOT NULL COMMENT 订单号, customer_id bigint DEFAULT NULL COMMENT 客户ID, product_material_id bigint NOT NULL COMMENT 产品物料ID, order_qty decimal(18,6) NOT NULL COMMENT 订单数量, delivery_date date NOT NULL COMMENT 要求交期, order_status tinyint DEFAULT 1 COMMENT 状态1-新建2-已确认3-已关闭, create_time datetime DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (id), UNIQUE KEY uk_order_no (order_no) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENT销售订单; -- 主生产计划MPS表 CREATE TABLE plan_mps ( id bigint NOT NULL AUTO_INCREMENT, plan_no varchar(64) NOT NULL COMMENT 计划编号, material_id bigint NOT NULL COMMENT 物料ID, plan_qty decimal(18,6) NOT NULL COMMENT 计划数量, plan_date date NOT NULL COMMENT 计划日期, plan_type tinyint DEFAULT NULL COMMENT 计划类型1-订单2-预测, source_order_id bigint DEFAULT NULL COMMENT 来源订单ID, status tinyint DEFAULT 1 COMMENT 状态1-草案2-已审核3-已发布4-已关闭, create_time datetime DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (id), UNIQUE KEY uk_plan_no (plan_no) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENT主生产计划; -- 生产订单表由MRP运算生成或手动创建 CREATE TABLE production_order ( id bigint NOT NULL AUTO_INCREMENT, order_no varchar(64) NOT NULL COMMENT 生产订单号, material_id bigint NOT NULL COMMENT 物料ID, plan_qty decimal(18,6) NOT NULL COMMENT 计划数量, start_date date DEFAULT NULL COMMENT 计划开始日期, end_date date DEFAULT NULL COMMENT 计划完成日期, priority tinyint DEFAULT 5 COMMENT 优先级1-10, order_status tinyint DEFAULT 1 COMMENT 状态1-新建2-已下达3-生产中4-已完成5-已关闭, create_time datetime DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (id), UNIQUE KEY uk_order_no (order_no) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENT生产订单;五、 核心业务逻辑与代码实现5.1 主生产计划MPS编制服务核心服务类负责基于销售订单和预测生成主生产计划。package com.example.ppms.service.plan; import com.example.ppms.domain.entity.SalesOrder; import com.example.ppms.domain.entity.PlanMps; import com.example.ppms.domain.entity.BaseMaterial; import com.example.ppms.mapper.PlanMpsMapper; import com.example.ppms.mapper.SalesOrderMapper; import com.example.ppms.mapper.BaseMaterialMapper; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.time.LocalDate; import java.util.List; import java.util.ArrayList; /** 主生产计划MPS服务 */ Slf4j Service RequiredArgsConstructor public class MpsService { private final SalesOrderMapper salesOrderMapper; private final BaseMaterialMapper materialMapper; private final PlanMpsMapper planMpsMapper; /** 根据销售订单生成主生产计划草案 param startDate 计划开始日期 param endDate 计划结束日期 return 生成的MPS记录列表 */ Transactional(rollbackFor Exception.class) public ListPlanMps generateMpsFromSalesOrders(LocalDate startDate, LocalDate endDate) { // 1. 查询指定时间范围内已确认的销售订单 ListSalesOrder confirmedOrders salesOrderMapper.selectConfirmedOrdersByDeliveryDate(startDate, endDate); ListPlanMps mpsList new ArrayList(); for (SalesOrder order : confirmedOrders) { BaseMaterial product materialMapper.selectById(order.getProductMaterialId()); if (product null || !product.isFinishedGood()) { log.warn(销售订单 {} 对应的产品物料不存在或不是成品跳过。, order.getOrderNo()); continue; } // 2. 构建MPS记录 PlanMps mps new PlanMps(); mps.setPlanNo(generatePlanNo()); // 生成计划编号 mps.setMaterialId(order.getProductMaterialId()); mps.setPlanQty(order.getOrderQty()); mps.setPlanDate(order.getDeliveryDate()); // 计划日期默认为订单交期 mps.setPlanType(PlanMps.PlanType.ORDER); mps.setSourceOrderId(order.getId()); mps.setStatus(PlanMps.Status.DRAFT); // 3. 保存到数据库 planMpsMapper.insert(mps); mpsList.add(mps); log.info(已为销售订单 {} 生成MPS草案{}, order.getOrderNo(), mps.getPlanNo()); } return mpsList; } private String generatePlanNo() { // 示例MPS 年月日 序列号 (实际应使用分布式ID或序列) String prefix MPS LocalDate.now().format(java.time.format.DateTimeFormatter.ofPattern(yyyyMMdd)); Long sequence planMpsMapper.selectTodayCount(prefix) 1; return prefix String.format(%04d, sequence); } }5.2 物料需求计划MRP运算服务核心算法服务根据MPS、BOM和库存计算物料净需求。package com.example.ppms.service.plan; import com.example.ppms.domain.entity.; import com.example.ppms.mapper.; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.time.LocalDate; import java.util.*; /** 物料需求计划MRP运算服务 */ Slf4j Service RequiredArgsConstructor public class MrpService { private final PlanMpsMapper planMpsMapper; private final BaseBomMapper bomMapper; private final InventoryMapper inventoryMapper; private final ProductionOrderMapper productionOrderMapper; private final PurchasePlanMapper purchasePlanMapper; /** 执行MRP运算 param mpsIds 参与运算的MPS ID列表 param planDate 计划基准日期 */ Transactional(rollbackFor Exception.class) public void runMrpCalculation(ListLong mpsIds, LocalDate planDate) { // 1. 获取已发布的MPS ListPlanMps mpsList planMpsMapper.selectPublishedMpsByIds(mpsIds); if (mpsList.isEmpty()) { log.warn(未找到已发布的MPS记录MRP运算终止。); return; } // 2. 按时间桶汇总毛需求 (物料ID - 日期 - 数量) MapLong, MapLocalDate, Double grossRequirements new HashMap(); for (PlanMps mps : mpsList) { addGrossRequirement(grossRequirements, mps.getMaterialId(), mps.getPlanDate(), mps.getPlanQty()); } // 3. 递归展开BOM计算各级物料毛需求 expandBomRequirements(grossRequirements); // 4. 计算净需求并生成计划订单 for (Map.EntryLong, MapLocalDate, Double entry : grossRequirements.entrySet()) { Long materialId entry.getKey(); BaseMaterial material materialMapper.selectById(materialId); if (material null) continue; Maplt;LocalDate, Doublegt; dateQtyMap entry.getValue(); Listlt;LocalDategt; sortedDates new ArrayListlt;gt;(dateQtyMap.keySet()); Collections.sort(sortedDates); double projectedInventory inventoryMapper.getOnHandQty(materialId); // 当前库存 for (L

相关推荐

智谱清言Agent实战:从零构建可落地的智能体系统
智谱清言Agent实战:从零构建可落地的智能体系统

1. 什么是智谱清言Agent智能体?它到底能干什么 “智谱清言Agent智能体”不是某个现成App里的按钮,也不是点开就能用的网页小工具——它是一套可定义、可编排、可落地的 自主决策执行系统 。我第一次在客户现场部署它时,客户原话是&#xf… · 2026/9/25 15:24:16

Atlas 300V部署YOLO全指南:昇腾推理加速卡的性能调优与避坑实践
Atlas 300V部署YOLO全指南:昇腾推理加速卡的性能调优与避坑实践

先从最直接的问题说起:Atlas 300V 24G到底是不是一张运算加速卡?是,但它不是你想的那种加速卡。很多人一看到"24G显存"就下意识拿它跟RTX 4090、A100这些GPU比,这是个挺大的误区。Atlas 300V 24G是华为昇腾系的一款推理… · 2026/9/25 15:23:45

fast_align 性能优化指南:OpenMP + tcmalloc,百万句对实测快 4.8 倍
fast_align 性能优化指南:OpenMP + tcmalloc,百万句对实测快 4.8 倍

fast_align 性能优化指南:OpenMP tcmalloc,百万句对实测快 4.8 倍 【免费下载链接】AI_NovelGenerator 使用ai生成多章节的长篇小说,自动衔接上下文、伏笔 项目地址: https://gitcode.com/GitHub_Trending/ai/AI_NovelGenerator fast… · 2026/9/25 15:23:39

SpringBoot整合MQTT实现软硬件通信实战
SpringBoot整合MQTT实现软硬件通信实战

1. 项目概述:为什么软硬件通信必须跨过“协议鸿沟”在工业现场、智能楼宇、农业物联网这些真实场景里,我见过太多团队卡在同一个地方:后端服务写得再漂亮,前端页面再炫酷,一到要跟温湿度传感器、PLC控制器、电表采集器… · 2026/9/25 15:56:17

Atlas 300V 24G实战:从PyTorch到昇腾的YOLO模型迁移与部署
Atlas 300V 24G实战:从PyTorch到昇腾的YOLO模型迁移与部署

1. 一张加速卡,为什么值得单独写一篇先说结论:Atlas 300V 24G 确实是运算加速卡,而且还是目前边缘端推理部署里相当能打的一类硬件。这两年 AI 项目落地时,很多团队在 GPU 和国产加速卡之间反复纠结,我自己的实测感受是… · 2026/9/25 15:56:05

Atlas 300V实战:基于昇腾AI加速卡的YOLO推理部署全攻略
Atlas 300V实战:基于昇腾AI加速卡的YOLO推理部署全攻略

1. Atlas 300V到底是什么先说结论:Atlas 300V Pro(也就是大家常说的Atlas 300V 24G)确实是一块运算加速卡,但它不是普通意义上的“显卡”。它是一块专门为AI推理设计的加速卡,主要任务是把已经训练好的深度学习模型&am… · 2026/9/25 15:56:05

Atlas 300V 24G昇腾推理卡YOLO部署实战:从环境配置到性能调优
Atlas 300V 24G昇腾推理卡YOLO部署实战:从环境配置到性能调优

先回答那个热门问题:Atlas 300V 24G到底是不是运算加速卡?是,而且它比我见过的大多数“运算加速卡”都更纯粹。Atlas 300V 24G是华为昇腾生态里的AI推理加速卡,核心器件是昇腾310P系列芯片,24GB显存版本主要面向的是数… · 2026/9/25 15:55:58

DeskcommCRM实战:从数据模型到工单流转的落地配置指南
DeskcommCRM实战:从数据模型到工单流转的落地配置指南

做CRM系统这行久了,你会发现一个特别有意思的现象:很多团队买回来一套CRM,用的功能却不到十分之一。DeskcommCRM是这两年我接触过的产品里,少有的把“桌面工作台”和“客户关系管理”结合得比较顺手的系统。它解决的并不是什么玄乎… · 2026/9/25 15:55:52

Kubebuilder CRD 生成标记(Markers)完整指南:从 Go 类型到 CustomResourceDefinition
Kubebuilder CRD 生成标记(Markers)完整指南:从 Go 类型到 CustomResourceDefinition

开发者工具代码生成CLI云原生后端 【免费下载链接】kubebuilder Kubebuilder - SDK for building Kubernetes APIs using CRDs 项目地址: https://gitcode.com/gh_mirrors/ku/kubebuilder 点击查看 免费下载 本篇技术指南系统讲解 Kubebuilder 项目中如何通过 // k… · 2026/9/25 15:55:52

数值优化(Numerical Optimization)学习系列-03-共轭梯度方法(Conjugate Gradient)
数值优化(Numerical Optimization)学习系列-03-共轭梯度方法(Conjugate Gradient)

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:31

创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战
创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:31

MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX
MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:37

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码