返回作品

生产 MES 制造执行系统

创建于 2025 年 3 月 9 日

标签
  • Java
  • Spring Boot
  • MyBatis
  • Redis
  • RabbitMQ
  • WebSocket
  • Netty
  • MySQL
  • Vue 2
  • Element UI
  • dhtmlx-gantt

项目介绍

生产 MES 制造执行系统(ktg-mes)是一个面向车间生产场景的完整 MES 解决方案,项目在若依 RuoYi 3.8.2 前后端分离脚手架基础上,从零扩展出制造执行所需的全部业务模块。系统以”物料与工艺路线等主数据 → 生产工单 → 排程派工 → 工序报工 → 质量检验 → 仓储收发货 → 报表与打印”为主线,把车间里的计划、执行、检验、库存管理串成一条可追溯的数据链路,后端源码中的包结构也严格按业务域划分:cal(排班日历)、md(主数据)、pro(生产执行)、qc(质量管理)、wm(仓储管理)、dv(设备管理)、tm(工具管理)、report(报表)、bigscreen(生产大屏),数据库脚本共 148 张业务表,并附带完整的演示数据。

项目后端采用 Java 8 + Spring Boot 2.5.12,数据访问层为 MyBatis + PageHelper 分页 + Druid 连接池,集成 Redis 缓存、Quartz 定时任务、RabbitMQ 消息队列与 WebSocket(MesWebSocket 为组态与大屏推送数据),文件存储接入 MinIO;前端基于 Vue 2.6 + Element UI 2.15 构建,引入 dhtmlx-gantt 7.1 实现生产排程甘特图、ECharts 渲染统计图表,并在 public/pdf 内置了 PDF.js 阅读器。除标准管理后台外,系统还提供一套独立的 ktg-print 打印模块:以 Netty + Protobuf 协议(端口 9016)与车间打印客户端通信,支撑条码、标签与检验单的实时打印。

项目架构

项目由后端多模块 Maven 工程与 Vue CLI 前端工程两部分组成,核心模块如下:

模块技术栈说明
ktg-mesSpring Boot、MyBatis、Redis、RabbitMQ、WebSocket核心业务模块,按 cal/md/pro/qc/wm/dv/tm/report/bigscreen 子包组织,含 49 个移动端(Mob)控制器
ktg-printNetty、Protobuf独立打印服务:9016 端口 TCP 服务端、打印机配置、可视化打印模板设计器
ktg-systemSpring Security、JWT框架内置扩展:用户、角色、菜单、字典、自动编码规则(SysAutoCodeRule)等
ktg-quartz / ktg-framework / ktg-commonQuartz、Spring Security、POI任务调度、安全与通用工具(Excel 导入导出、条码工具、MinIO 工具)
ktg-mes-uiVue 2.6、Element UI 2.15、dhtmlx-gantt、ECharts管理后台前端,src/views/mes 按 8 个业务域组织 80 余个页面,src/api/mes 按域封装接口
20250308-sc.sqlMySQL 8全库脚本:框架系统表 + 148 张 MES 业务表 + 演示数据

后端业务分层沿用若依规范的 controller → service → mapper 结构,Mapper XML 集中在 ktg-mes/src/main/resources/mapper 下按业务域组织。几个值得一提的架构设计:库存操作全部收敛到 StorageCoreServiceImpl(20KB 的核心类),所有收发单据通过 processXxx 系列方法统一生成 WmTransaction 事务流水并更新库存台账;条码生成通过 @BarcodeGen 注解 + 后置切面 BarcodeGenAspect 实现,业务方只需标注注解,是否自动生成、按什么规则生成由条码配置表驱动;单据编号则由 AutoCodeUtil 配合”固定字符 / 输入字符 / 当前日期 / 流水号”四类编码段处理器(PartType*Handler)统一生成。

核心功能

主数据与排班日历。 md 域维护物料档案(md_item)、物料类型、BOM(md_product_bom)、客户、供应商、单位换算、车间(md_workshop)与工位(md_workstation),工位可绑定设备、工具与操作人员,并关联 SIP/SOP 工艺文档;cal 域提供工厂日历、节假日、班次、班组与排班计划管理,CalTeamshiftServiceImpl 承载班组与班次、日历的编排逻辑。

生产排程与任务派工。 生产工单(pro_workorder)支持批量下达与按工单拆分任务,前端排程页基于 dhtmlx-gantt 将生产任务渲染为甘特图(listGanttTaskList 接口返回任务、依赖关系与进度数据),可在图上拖拽调整工序排期后下发;生产任务(pro_task)生成后进入派工环节(ProTaskIssueController),支持任务领料与工序流转(pro_trans_order 转序单、pro_trans_consume 消耗单),生产卡片(pro_card)与卡片工序(pro_card_process)则按批次/工单跟踪在制品的每一道工序状态,序列号产品另有 pro_sn_process 逐台记录工序过程。

生产报工与库存联动。 报工接口(ProFeedbackController)是生产闭环的关键节点:新增报工时先校验工位绑定的工序与工艺路线配置,再按 isCheck 标记校验待检数量或合格品/不良品数量,通过 AutoCodeUtil 生成报工单号后落库;报工数据进一步联动物料消耗单(WmItemConsume)与成品产出单(WmProductProduce),最终由库存核心统一过账。车间异常通过安灯(pro_andon_record,含呼叫原因与 LEVEL 级别)和停机记录(pro_shutdown_record)留痕。

质量检验闭环。 qc 域以检验模板(qc_template)和检验项目(qc_template_index)为配置基础,覆盖 IQC 来料检验、IPQC 过程检验、OQC 出货检验三大环节(QcIqcQcIpqcQcOqc 及各自明细行),支持不合格缺陷记录(qc_defect / qc_defect_record)与检验结果归档(qc_result / qc_result_detail),待检清单页(pendinginspect)集中处理各环节的待检任务;JasperReports 模板 IQC.jrxml 可打印标准”IQC 来料检验单”(内置微软雅黑中文字体)。

仓储、条码与打印。 wm 域覆盖仓库/库区/库位三级结构,单据类型齐全:采购入库(wm_item_recpt)、到货通知、生产领料(wm_issue_header)、退料(退供应商 wm_rt_vendor、退车间 wm_rt_issue、退客户 wm_rt_salse)、成品入库(wm_product_recpt)、销售出库(wm_product_salse)、调拨(wm_transfer)、盘点(wm_stock_taking)与外协收发,全部经由库存核心过账并记录流水,物料批次与 SN 序列号(wm_sn)全程可追溯。条码方面:wm_barcode_config 按业务类型配置条码规则,单据生成后由切面自动生成条码(wm_barcode),支持批次批量打印;ktg-print 提供 Netty + Protobuf 打印服务与可视化模板设计器,前端 printtemplate/index.vue 可拖拽编排标签版式。报表方面集成 UReport 在线设计器(ureport-file-tbl 存储报表文件),并有大屏统计接口(工单每月需求/完成趋势,基于 EasyQuery 聚合查询)配合 WebSocket 向组态、大屏推送实时数据。

功能截图

暂无运行截图。

快速上手

  1. 准备数据库:使用 MySQL 8 执行 20250308-sc.sql 全量脚本(148 张表,含框架系统表、MES 业务表与演示数据)。

  2. 启动后端:

cd 20250309-生产mes-api
# 修改 ktg-admin/src/main/resources/application.yml 中数据库、Redis、RabbitMQ、MinIO 的连接配置
mvn clean package -DskipTests
java -jar ktg-admin/target/ktg-admin.jar
  1. 启动前端:
cd 20250309-生产mes-web
npm install
npm run dev   # 默认 http://localhost:8080,账号 admin / admin123
  1. 体验流程:先在”主数据”维护物料、BOM 与工艺路线 → 创建并下达生产工单 → 在”排程”甘特图中排期并派工 → 在”生产报工”按工序报工(自动联动物料消耗与成品入库)→ 经 IQC/IPQC/OQC 检验留痕 → 在”仓储管理”查看库存台账与事务流水,最后通过条码打印与 UReport 报表输出成果。

总结

生产 MES 制造执行系统是一个业务完整度极高的实战型 MES 项目:从主数据、排班、工单、排程、派工、报工、质检到仓储、条码、打印、报表、大屏,覆盖了离散制造车间”计划-执行-检验-仓储”的完整闭环,148 张业务表与 80 余个前端页面说明这不是演示级的空壳,而是经过真实业务梳理的工程化产物。技术上它同时展示了在若依框架上叠加复杂业务域的分层方法(库存核心收敛、注解切面生成条码、编码段策略处理器)、跨进程集成能力(Netty + Protobuf 打印服务、RabbitMQ、WebSocket 大屏推送)以及报表体系(UReport + JasperReports + PDF.js 预览)的完整组合,对想在 RuoYi 体系下快速落地 MES、WMS 类车间系统的团队是很有价值的参考样板。