# MES-DDD **Repository Path**: dxycc/mes-ddd ## Basic Information - **Project Name**: MES-DDD - **Description**: 接入了 RAG(检索增强生成) 与 AI 大模型(LLM) ,基于 DDD & EventSourcing 的现代响应式 CQRS 架构微服务开发的 MES 系统,主要面向单产线场景设计,提供工艺路线配置、产品与工单管理、生产进度跟踪、返修管理等核心功能。未来计划支持多产线、跨产线返修等更复杂场景。 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 56 - **Forks**: 20 - **Created**: 2025-03-29 - **Last Updated**: 2026-07-19 ## Categories & Tags **Categories**: erp **Tags**: ddd, langchain4j ## README # 🏭 MES-DDD 本项目是一个 **面向单体产线的 MES(Manufacturing Execution System,制造执行系统)**,采用 **领域驱动设计(DDD)**、**事件溯源(Event Sourcing)** 和 **命令查询职责分离(CQRS)** 架构构建,支持现代化响应式开发与智能化扩展。接入了 **RAG(检索增强生成)** 与 **AI 大模型(LLM)** , 未来计划支持多产线、跨产线返修等更复杂场景。 --- ## 🚀 架构特性 * **DDD(Domain-Driven Design)** 聚焦核心领域模型,清晰划分限界上下文(工艺路线、工单、设备、产线等),通过聚合根、领域事件与仓储抽象实现高内聚、低耦合。 * **CQRS(Command Query Responsibility Segregation)** 将命令与查询操作分离,命令层负责变更系统状态,查询层面向高性能可视化展示与报表分析。 * **事件溯源(Event Sourcing)** 以事件流方式记录系统状态变迁,每次操作以事件形式存储,可追溯、可回放、可重建系统历史。 * **响应式架构(Reactive Architecture)** 支持异步事件流与消息驱动机制,为未来微服务化与云原生化提供基础。 --- ## 🧠 智能增强:RAG + AI 大模型 系统集成了 **RAG(Retrieval-Augmented Generation)+ AI 大模型(LLM)** 能力,构建智能化生产辅助模块: * 🔍 **RAG 智能检索** 将设备日志、工艺数据、历史任务事件等纳入知识库,支持语义级检索与上下文问答。 * 🤖 **AI 智能助手** 借助大语言模型(LLM),实现: * 智能工单分析与生成 * 异常诊断与工艺优化建议 * 自然语言查询生产数据 * 自动生成操作报告与日报 * 🧩 **可扩展智能插件机制** 支持模型接入(如 OpenAI、Claude、Gemini、本地 Llama 模型等),可按需切换与扩展。 --- ## 🧱 分支说明 | 分支 | 说明 | | ---------- | ---------------------------------- | | **master** | 功能完整版,包含完整 DDD 架构与事件溯源实现,适合深入研究与扩展 | | **mini** | 精简版(计划中),简化流程与依赖,适合快速上手与教学演示 | --- ## ⚙️ 核心功能模块 * 🧩 工艺路线配置与版本管理 * 📦 产品与工单管理 * 🔄 生产过程追踪与任务流转 * 🧾 事件流记录与回放 * 🧰 设备状态与生产日志 * 🔁 返修与重工流程 * 🧠 AI 智能分析(RAG + LLM) --- ## 👤 默认账号 * **账号:** `admin` * **密码:** `123456` --- ## 技术栈 | 类别 | 技术 | |---|---| | 语言 | Java 17+ | | 后端框架 | Spring Boot 3.5.0、Spring WebFlux | | 认证授权 | Sa-Token | | 架构模式 | DDD + CQRS + 事件溯源 | | AI 框架 | LangChain4j | | 持久层 | MyBatis-Plus | | 数据库 | MySQL 8 | | 缓存/向量库 | Redis + RediSearch 2.8+ | | 前端 | Vue 3 + TypeScript + Element Plus + Vite | | 部署 | Docker / Docker Compose | --- ## 🚀 快速开始 ### 环境要求 | 依赖 | 版本 | 说明 | |---|---|---| | JDK | 17+ | 必需 | | Maven | 3.9+ | 必需 | | Node.js | 16.18+ | 前端必需 | | pnpm | 8+ | 前端必需(`npm install -g pnpm`) | | Docker Desktop | 最新版 | 推荐,用于启动 MySQL 和 Redis | --- ### Step 1:克隆项目 ```bash git clone https://gitee.com/dxycc/mes-ddd.git cd mes-ddd ``` --- ### Step 2:启动 Redis(含 RediSearch 模块) 本项目使用 RediSearch 作为向量数据库存储 RAG 知识库,请使用 `redis-stack-server` 镜像(自带 RediSearch 模块)。 **方式一:Docker Desktop 命令行** ```bash docker run -d \ --name mes-redis \ -p 6379:6379 \ redis/redis-stack-server:latest ``` **方式二:docker-compose(推荐)** 在项目根目录创建 `docker-compose.yml`: ```yaml version: '3.8' services: redis: image: redis/redis-stack-server:latest container_name: mes-redis ports: - "6379:6379" restart: unless-stopped ``` 然后执行: ```bash docker-compose up -d ``` **验证是否启动成功:** ```bash docker exec mes-redis redis-cli ping # 返回 PONG 即成功 docker exec mes-redis redis-cli MODULE LIST # 应包含 search 模块 ``` --- ### Step 3:启动 MySQL 并创建数据库 ```bash docker run -d \ --name mes-mysql \ -p 3306:3306 \ -e MYSQL_ROOT_PASSWORD=123456 \ -e MYSQL_DATABASE=mes-ddd \ mysql:8.0 \ --character-set-server=utf8mb4 \ --collation-server=utf8mb4_unicode_ci ``` > 数据库 `mes-ddd` 会自动创建,所有表结构由 Flyway 在首次启动时自动执行,**无需手动建表**。 **验证:** ```bash docker exec -it mes-mysql mysql -uroot -p123456 -e "SHOW DATABASES;" # 应能看到 mes-ddd 数据库 ``` --- ### Step 4:配置 AI API Key(可选,AI 功能需要) > ⚠️ **重要提醒:API Key 属于敏感信息,请勿提交到代码仓库!仅在本地使用即可。** 本项目 AI 功能需要两个 API Key: | API Key | 用途 | 获取地址 | |---|---|---| | DeepSeek API Key | 大模型对话(聊天/分析) | https://platform.deepseek.com/api_keys | | 阿里云百炼 DashScope API Key | 向量嵌入模型(RAG 知识库) | https://dashscope.console.aliyun.com/apiKey | **设置环境变量:** ```bash # Windows PowerShell(当前终端生效) $env:DEEPSEEK_API_KEY = "sk-xxxxxxxxxxxxxxxxxxxxxxxx" $env:API_KEY = "sk-xxxxxxxxxxxxxxxxxxxxxxxx" # Linux / macOS export DEEPSEEK_API_KEY="sk-xxxxxxxxxxxxxxxxxxxxxxxx" export API_KEY="sk-xxxxxxxxxxxxxxxxxxxxxxxx" ``` > 💡 **持久化建议:** 将上述环境变量添加到系统环境变量中,或在项目根目录创建 `.env` 文件(已被 `.gitignore` 忽略,不会提交)。 --- ### Step 5:启动后端服务 ```bash # 方式一:Maven 命令行 cd mes-ddd-app mvn clean spring-boot:run # 方式二:IDEA # 直接运行 MesDddApplication.java 的 main 方法 ``` > 后端启动地址:http://localhost:8080 --- ### Step 6:启动前端服务 ```bash cd ui pnpm install pnpm dev ``` > 前端启动地址:http://localhost:8848 --- ### Step 7:访问系统 | 项目 | 地址 | |---|---| | 前端页面 | http://localhost:8848 | | 后端 API | http://localhost:8080/api | | AI 模块 | http://localhost:8081 | **登录:** 账号 `admin`,密码 `123456` --- ## 🔧 环境变量说明 | 变量名 | 说明 | 必需 | 示例值 | |---|---|---|---| | `DEEPSEEK_API_KEY` | DeepSeek 大模型 API Key(对话/分析) | 否(AI 功能需要) | `sk-xxxxxxxx` | | `API_KEY` | 阿里云百炼 DashScope API Key(RAG 嵌入模型) | 否(RAG 功能需要) | `sk-xxxxxxxx` | > 如不配置以上变量,系统仍可正常启动和使用基础 MES 功能,仅 AI 对话和 RAG 知识库功能不可用。 --- ## ❓ 常见问题 **Q:启动报 Redis 连接失败?** > A:确保 Redis 已启动且加载了 RediSearch 模块。请使用 `redis/redis-stack-server` 镜像而非普通 `redis` 镜像。 **Q:AI 聊天没有回复?** > A:① 检查是否设置了 `DEEPSEEK_API_KEY` 环境变量 ② 确认 API Key 有效且有余额 ③ 检查 AI 模块(端口 8081)是否正常启动。 **Q:RAG 知识库索引失败?** > A:检查是否设置了 `API_KEY` 环境变量(DashScope),并确认 RediSearch 模块已加载。 **Q:前端页面空白?** > A:① 确保后端已启动在 8080 端口 ② 清除浏览器缓存 ③ 检查控制台是否有报错。 **Q:Flyway 报错?** > A:首次启动时 Flyway 会自动建表。如报冲突错误,检查数据库是否为新建的空库。 --- ## AI 智能分析(RAG + LLM) ![img.png](docs/dev-ops/images/14.png) ![img.png](docs/dev-ops/images/15.png) ## AI 小助手 ![img.png](docs/dev-ops/images/img8.png) ## RAG本地知识库 ![img.png](docs/dev-ops/images/img9.png) ![img.png](docs/dev-ops/images/img10.png) ## Tools案例:模型使用本地接口创建工厂 ![img.png](docs/dev-ops/images/img11.png) ![img.png](docs/dev-ops/images/img12.png) ## 工艺路线流程设计 ![img.png](docs/dev-ops/images/16.png) --- ## MES业务时序图 ![img.png](docs/dev-ops/images/MES时序图.png) --- ## ✨ 支持的功能聚合(Aggregate) 系统根据业务领域划分以下聚合: 1. **设备聚合(Equipment)** 管理设备的生命周期、状态及调度。 2. **工位聚合(Workstation)** 管理产线上的各个工位信息。 3. **产线聚合(ProductionLine)** 管理整个生产线的结构与配置。 4. **工序聚合(Process)** 管理工序步骤,定义生产过程中的作业步骤。 5. **工艺路线聚合(Route)** 定义产品生产所需的工艺路线和流程。 6. **产品聚合(Product)** 管理产品信息及其对应的工艺路线。 7. **工单聚合(WorkOrder)** 管理生产工单,包括排产、进度和完成情况。 --- ## 🌱 项目结构说明 | 模块名称 | 说明 | |----------------------------------------------|------------------------------------------| | `dynamic-threadpool-spring-boot-starter` | 动态线程池注册监控和刷新 | | `mes-ddd-ai` | AI 模块:负责 AI 功能对外的调用入口和交互规范,接入本地服务接口模型调用。 | | `mes-ddd-api` | 对外接口层:定义 API、DTO、协议规范 | | `mes-ddd-app` | 应用启动层:各种config配置,以及启动层 | | `mes-ddd-domain` | 领域模型层:核心业务逻辑,包含聚合根、实体、值对象、领域服务等 | | `mes-ddd-infrastructure` | 基础设施层:持久化、消息总线、缓存、外部系统集成等 | | `mes-ddd-trigger` | 事件触发与监听模块:负责异步事件处理与发布 | | `mes-ddd-types` | 通用类型定义:包含枚举、基础值对象、统一返回结构、工具类等 | --- ## 贡献指南 欢迎提交 Issues 和 Pull Requests! 请遵循项目编码规范和提交规范。 --- ## 联系方式 * 作者:dxy * 交流QQ群:733798895 * 邮箱:[4955910871@qq.com](mailto:4955910871@qq.com) * 仓库地址:[https://gitee.com/dxycc/mes-ddd](https://gitee.com/dxycc/mes-ddd) --- # 前端菜单结构 ## 1. 首页 ## 2. 数据大屏 ## 3. 基础数据 ### 3.1 生产布局管理 - 3.1.1 工厂管理 - 3.1.2 车间管理 - 3.1.3 产线管理 - 3.1.4 工位管理 ### 3.2 物料管理 - 3.2.1 物料群组 - 3.2.2 产品物料 - 3.2.3 BOM 管理 - 3.2.4 替代料管理 ### 3.3 产品管理 - 3.3.1 产品信息维护 - 3.3.2 产品规格配置 - 3.3.3 产品类别管理 ## 4. 工艺管理 ### 4.1 工艺路线管理 ### 4.2 工序管理 ## 5. 生产管理 - 5.1 工单管理 - 5.2 订单排产 - 5.3 生产任务监控 - 5.4 生产进度追踪 ## 6. 设备管理 - 6.1 设备类型 - 6.2 设备台账 - 6.3 工装夹具 - 6.4 点检保养 - 6.4.1 项目维护 - 6.4.2 项目表单 - 6.4.3 计划配置 - 6.4.4 点检保养记录 ## 7. 库存管理 - 7.1 原材料库存 - 7.2 成品库存 - 7.3 库存调拨 / 入库 / 出库 ## 8. 质量管理 - 8.1 质检标准管理 - 8.2 生产质检记录 - 8.3 不合格品处理 ## 9. 报表中心 - 9.1 生产报表 - 9.2 设备报表 - 9.3 质量报表 - 9.4 库存报表 ## 10. 系统配置 - 10.1 用户管理 - 10.2 角色管理 - 10.3 系统组织 - 10.4 参数管理 - 10.5 消息管理 - 10.6 操作日志 --- ## 页面预览 ![输入图片说明](ui/src/assets/images/%E5%BE%AE%E4%BF%A1%E5%9B%BE%E7%89%87_20250810233640.png) ![输入图片说明](docs/dev-ops/images/img6.png) ![img.png](docs/dev-ops/images/img1.png) ![img.png](docs/dev-ops/images/img3.png) ![img.png](docs/dev-ops/images/img4.png) ![img.png](docs/dev-ops/images/img2.png) ![img.png](docs/dev-ops/images/img5.png) ![输入图片说明](ui/src/assets/images/MES%E7%94%9F%E4%BA%A7%E4%BA%A7%E7%BA%BF.jpg)