Skip to content

Latest commit

 

History

646 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Virtual Path MES

开源虚拟路径MES系统 — 面向离散制造业的工业互联网平台

基于微服务架构 · 3D 数字孪生 · AI 智能助理 · 支持 2000+ 设备并发连接

Tech Stack

CI Release License Stars Forks Issues Java Spring Cloud Vue Python .NET

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 双通道上报

界面预览

生产看板

生产看板

生产调度看板

生产调度看板

设备监控(3D 数字孪生)

设备监控

智能工单管理

智能工单管理

AI 生产助理

AI 生产助理


技术架构

整体架构图

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
Loading

技术栈

层级 技术选型 版本
前端 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

API 快速体验

# 登录获取 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!

  1. Fork 本仓库并从 develop 拉取分支
  2. 编码 — 遵循 贡献指南 与代码规范
  3. 验证 — 通过 CI 构建(后端 mvn compile / 前端 npm run build)
  4. 提交 — 发起 PR 到 develop,等待 Review

更多细节请参阅 CONTRIBUTING.md · 行为准则


许可证

本项目基于 MIT License 开源,欢迎学习、使用与二次开发。


如果这个项目对你有帮助,请给我们一个 Star!

Powered by Spring Cloud · Vue 3 · .NET 8 · Python

About

基于微服务架构的虚拟路径MES系统(Virtual Path MES),支持2000+设备并发连接,实现生产过程的实时监控、质量追溯和智能预测。

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

4 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages