开源虚拟路径MES系统 — 面向离散制造业的工业互联网平台
基于微服务架构 · 3D 数字孪生 · AI 智能助理 · 支持 2000+ 设备并发连接
API Docs · Report Bug · Request Feature
虚拟路径MES系统(Manufacturing Execution System,制造执行系统)是一款面向离散制造业的开源数字化解决方案,以微服务架构覆盖车间生产完整业务链条,帮助制造企业低成本落地数字化底座。
核心能力
- 生产管理:工单全生命周期管理,覆盖创建、排产、报工、关闭的完整闭环,配套生产调度看板与 APS 排产
- 工艺管理:工艺模板、工序步骤、参数配置与校验,确保生产过程按标准执行
- 质量管理:质检记录、待检判定、质量追溯与 SPC 统计过程控制,8 条判异规则实时预警
- 设备监控:MQTT 设备接入与 Kafka 消息队列实现 10000+ 条/秒数据吞吐,3D 数字孪生实时映射车间设备状态
- 智能分析:LightGBM/XGBoost 质量预测模型与 GLM-4 驱动的 AI 生产助理,用自然语言完成数据查询、告警诊断与报表生成
| 2000+ | 10000+/s | 6 大微服务 | 95% | AI Agent |
|---|---|---|---|---|
| 设备并发连接 | 数据吞吐 | 独立部署 | 质量预测准确率 | 自然语言生产助理 |
| 特性 | 说明 |
|---|---|
| 微服务架构 | Spring Cloud 2023 设计 6 大核心服务,服务解耦、独立部署、水平扩展 |
| 3D 数字孪生 | Three.js 构建工厂车间三维场景,实时映射设备状态、动效与数据 |
| 高并发设备接入 | MQTT 协议采集 + Kafka 消息队列,10000+ 条/秒数据吞吐 |
| 实时数据展示 | WebSocket 毫秒级推送,InfluxDB 时序数据库存储 |
| AI 智能预测 | FastAPI 推理服务,LightGBM/XGBoost 模型,支持 ONNX 部署 |
| AI Agent 生产助理 | GLM-4 function calling 多步推理,自然语言 → 工具调用 → 任务闭环 |
| 全链路权限控制 | JWT + RBAC 菜单级 / 按钮级权限(拦截器实现,ADMIN 全量放行) |
| SPC 统计分析 | 真实规格限 + 8 条 Nelson 判异规则 + 全过程能力指数 + 控制图 |
| 设备模拟器 | WPF 上位机,批量模拟 + 5 种生产场景预设 + 实时曲线 + HTTP/MQTT 双通道上报 |
flowchart TB
subgraph UI["前端展示层"]
direction LR
FE1["Vue 3<br/>TypeScript"]
FE2["Element Plus<br/>组件库"]
FE3["ECharts<br/>可视化图表"]
FE4["Three.js<br/>3D 数字孪生"]
end
G["API 网关<br/>Spring Cloud Gateway :9090<br/>JWT 鉴权 · 路由 · 限流"]
subgraph MS["微服务层"]
A["认证服务 :8081<br/>登录 · JWT · RBAC"]
W["工单服务 :8082<br/>工单 · 排产 · 报工"]
P["工艺服务 :8083<br/>模板 · 工序 · 参数"]
Q["质量服务 :8084<br/>质检 · 追溯 · SPC"]
D["看板服务 :8085<br/>实时数据 · WebSocket"]
AI["AI 推理服务 :8087<br/>FastAPI · 预测 · Agent"]
end
subgraph DS["数据存储层"]
DB[("MySQL :3306")]
RD[("Redis :6379")]
IDB[("InfluxDB :8086")]
KF["Kafka :9092"]
end
subgraph EDGE["设备接入层"]
NET[".NET 8 设备网关 :5000<br/>MQTT 订阅 · Kafka 转发"]
MQTT["EMQX MQTT Broker :1883"]
end
subgraph DEV["工业设备层"]
DEV1["CNC 数控机床"]
DEV2["PLC 控制器"]
DEV3["工业机器人"]
end
FE1 --- FE2 --- FE3 --- FE4
FE4 ==>|"HTTPS / WSS"| G
G -->|"/api/auth/**"| A
G -->|"/api/workorder/**"| W
G -->|"/api/process/**"| P
G -->|"/api/quality/**"| Q
G -->|"/api/dashboard/**"| D
G -->|"/api/ai/**"| AI
A --> DB
W --> DB
P --> DB
Q --> DB
D --> DB
AI --> DB
A -.->|"JWT 黑名单"| RD
W -.->|"工单序号锁"| RD
D -.->|"设备状态缓存"| RD
AI -.->|"分析历史缓存"| RD
D -->|"遥测数据"| IDB
D <==>|"设备数据"| KF
NET -->|"转发消息"| KF
NET -.->|"设备状态缓存"| RD
MQTT -->|"订阅推送"| NET
DEV1 -->|"MQTT"| MQTT
DEV2 -->|"MQTT"| MQTT
DEV3 -->|"MQTT"| MQTT
classDef ui fill:#e3f2fd,stroke:#1976d2,stroke-width:1.5px,color:#0d47a1;
classDef gw fill:#fff3e0,stroke:#f57c00,stroke-width:2px,color:#e65100;
classDef svc fill:#e8f5e9,stroke:#388e3c,stroke-width:1.5px,color:#1b5e20;
classDef data fill:#f3e5f5,stroke:#7b1fa2,stroke-width:1.5px,color:#4a148c;
classDef edge fill:#fff8e1,stroke:#f9a825,stroke-width:1.5px,color:#f57f17;
classDef dev fill:#eceff1,stroke:#546e7a,stroke-width:1.5px,color:#37474f;
class FE1,FE2,FE3,FE4 ui;
class G gw;
class A,W,P,Q,D,AI svc;
class DB,RD,IDB,KF data;
class NET,MQTT edge;
class DEV1,DEV2,DEV3 dev;
style UI fill:#f7fbff,stroke:#bbdefb,stroke-width:1px
style GW fill:#fffdf7,stroke:#ffe0b2,stroke-width:1px
style MS fill:#f9fdf9,stroke:#c8e6c9,stroke-width:1px
style DS fill:#fdf9ff,stroke:#e1bee7,stroke-width:1px
style EDGE fill:#fffdf4,stroke:#ffecb3,stroke-width:1px
style DEV fill:#fafafa,stroke:#cfd8dc,stroke-width:1px
| 层级 | 技术选型 | 版本 |
|---|---|---|
| 前端 | Vue 3 + TypeScript + Element Plus + Pinia + Vite | 3.5 / 2.9 / 2.3 / 6.0 |
| 3D / 可视化 | Three.js + ECharts | 0.185 / 6.1 |
| 后端 | Spring Boot + Spring Cloud (Alibaba) | 3.2.5 / 2023.0.0 |
| 持久层 | MyBatis-Plus + MySQL | 3.5.6 / 8.0.33 |
| 缓存 / 消息 | Redis + Kafka + Zookeeper | 7 / 7.5.0 |
| 时序数据库 | InfluxDB | 2.7 |
| 设备接入 | .NET 8 + EMQX MQTT | .NET 8 |
| AI 推理 | Python FastAPI + LightGBM + XGBoost | 0.115 / 4.5 / 2.1 |
| AI Agent | GLM-4 + Function Calling + RAG(TF-IDF 中文检索) | - |
virtual-path-mes/
├── docs/ # 项目文档(开发指南 / 数据库 / 更新日志)
├── mes-common/ # 公共模块(实体类、工具类、异常处理)
├── mes-gateway/ # API 网关 (9090) — 统一路由 / 鉴权 / 限流
├── mes-auth/ # 认证服务 (8081) — 登录 / JWT / RBAC 权限
├── mes-workorder/ # 工单服务 (8082) — 工单全生命周期 / 关闭闭环 / 报工
├── mes-process/ # 工艺服务 (8083) — 工艺模板 / 参数配置 / 工序步骤 / 参数校验
├── mes-quality/ # 质量服务 (8084) — 质检记录 / 待检判定 / 质量追溯 / SPC
├── mes-dashboard/ # 看板服务 (8085) — 实时数据 / WebSocket / 生产报表 / OEE
├── mes-device-gateway/ # .NET 设备网关 (5000) — MQTT 接入 / Kafka 转发
├── mes-ai-service/ # Python AI 服务 (8087) — 预测 / Agent / RAG
├── mes-frontend/ # Vue 3 前端 (3000) — 生产看板 / 3D 数字孪生
├── mes-device-simulator-wpf/ # WPF 设备模拟器 — 批量模拟 / 场景预设 / 双通道上报
├── sql/ # 数据库脚本(init + V2~V14 迁移)
├── Makefile # 统一启动 / 构建命令
└── docker-compose.yml # 基础设施编排(MySQL / Redis / Kafka / EMQX)
| 工具 | 版本 | 用途 |
|---|---|---|
| Docker | 24+ | 基础设施(MySQL / Redis / Kafka / EMQX) |
| JDK | 17+ | Java 后端服务 |
| Maven | 3.9+ | 后端构建 |
| Node.js | 18+ | 前端开发 |
| Python | 3.12+ | AI 服务(可选) |
| .NET SDK | 8.0+ | 设备网关(可选) |
架构说明:Docker 仅运行基础设施,Java 后端在宿主机直接运行,便于开发调试。
安全配置:数据库密码默认
123455(可用MYSQL_ROOT_PASSWORD覆盖);所有 Java 服务强制要求JWT_SECRET(长度 ≥ 32,未设置则启动失败)。本地开发只需复制.env.example为.env并填写JWT_SECRET,服务会自动读取(IDE 直接启动即可);生产环境请通过环境变量注入JWT_SECRET/MYSQL_PASSWORD/INFLUXDB_TOKEN/ZHIPU_API_KEY等。
# ① 复制环境变量模板并设置 JWT_SECRET(服务自动读取 .env,IDE 直接启动即可)
cp .env.example .env # 然后编辑 .env 填入随机 JWT_SECRET(长度 >= 32)
# ② 启动基础设施(MySQL / Redis / Kafka / EMQX)
make docker
# ③ 启动 Java 后端(自动编译)
make backend
# ④ 启动 .NET 设备网关 + AI 服务 + 前端
make dotnet-gateway
make ai
make frontend# ① 编译后端
mvn clean package -DskipTests
# ② 启动基础设施(含 EMQX MQTT Broker)
docker compose up -d
# ③ 设置 JWT 密钥并启动 Java 服务(所有服务密钥必须一致)
export JWT_SECRET=your-jwt-secret-at-least-32-chars-long # Windows: set JWT_SECRET=...
java -jar mes-auth/target/mes-auth-1.0.0-SNAPSHOT.jar
java -jar mes-workorder/target/mes-workorder-1.0.0-SNAPSHOT.jar
java -jar mes-process/target/mes-process-1.0.0-SNAPSHOT.jar
java -jar mes-quality/target/mes-quality-1.0.0-SNAPSHOT.jar
java -jar mes-dashboard/target/mes-dashboard-1.0.0-SNAPSHOT.jar
java -jar mes-gateway/target/mes-gateway-1.0.0-SNAPSHOT.jar
# ④ 启动 .NET 设备网关(MQTT → Kafka 转发)
cd mes-device-gateway/src/MesDeviceGateway && dotnet run
# ⑤ 启动前端
cd mes-frontend && npm install && npm run dev# 登录获取 Token(走网关统一入口,端口 9090)
curl -X POST http://localhost:9090/api/auth/login \
-H "Content-Type: application/json" \
-d '{"username": "admin", "password": "admin123"}'
# 工单分页查询(网关全局 JWT 鉴权)
curl http://localhost:9090/api/workorder/page?current=1&size=10 \
-H "Authorization: Bearer <token>"| 服务 | 地址 | 说明 |
|---|---|---|
| 前端首页 | http://localhost:3000 | Vue 3 应用 |
| API 网关 | http://localhost:9090 | Spring Cloud Gateway |
| 认证服务 | http://localhost:8081/doc.html | Knife4j API 文档 |
| 工单服务 | http://localhost:8082/doc.html | - |
| 工艺服务 | http://localhost:8083/doc.html | - |
| 质量服务 | http://localhost:8084/doc.html | - |
| 看板服务 | http://localhost:8085/doc.html | - |
| AI 服务 | http://localhost:8087/docs | FastAPI 文档 |
| 设备网关 | http://localhost:5000 | ASP.NET Core |
| MySQL | localhost:3306 | root / 123455 |
| Redis | localhost:6379 | 无密码 |
| 系统 | 账号 | 密码 |
|---|---|---|
| 前端登录 | admin |
admin123 |
| EMQX | admin |
public |
内置角色(sys_role,登录后按角色/权限码控制菜单与按钮):
| 角色 | role_code | 说明 |
|---|---|---|
| 超级管理员 | ADMIN |
拥有全部权限(后端与前端均全量放行) |
| 生产主管 | MANAGER |
生产管理相关权限 |
| 生产员工 | USER |
基本操作权限 |
| 质检员 | QC |
质量检验相关权限 |
| 设备工程师 | ENGINEER |
设备维护相关权限 |
权限码数据以
sys_permission表为准(初始化见sql/init.sql,旧库升级执行sql/V13__sync_permission_codes.sql,幂等可重复执行)。安全说明(v1.0.48 起):
- 网关全局 JWT 鉴权 + CORS 白名单(
CORS_ALLOWED_ORIGINS可配);WebSocket 经网关/api/ws/**连接并校验 token- 业务写操作按权限码/角色控制(
@RequirePermission/@RequireRole);管理员创建用户密码自动 BCrypt 加密- 数据库密码默认
123455、JWT 密钥JWT_SECRET强制环境变量化,详见 开发指南
| 文档 | 说明 |
|---|---|
| 开发指南 | 本地开发、环境搭建、调试技巧 |
| 数据库设计 | 表结构、ER 关系、迁移脚本 |
| 更新日志 | 版本历史与变更记录 |
| 项目介绍 | 架构演进、AI Agent 方案、比赛复盘 |
欢迎提交 Issue 与 Pull Request!
- Fork 本仓库并从
develop拉取分支 - 编码 — 遵循 贡献指南 与代码规范
- 验证 — 通过 CI 构建(后端
mvn compile/ 前端npm run build) - 提交 — 发起 PR 到
develop,等待 Review
更多细节请参阅 CONTRIBUTING.md · 行为准则
本项目基于 MIT License 开源,欢迎学习、使用与二次开发。
如果这个项目对你有帮助,请给我们一个 Star!
Powered by Spring Cloud · Vue 3 · .NET 8 · Python




