# smart-mes **Repository Path**: zhier_plus/smart-mes ## Basic Information - **Project Name**: smart-mes - **Description**: 面向智能制造的MES与工业互联网平台,覆盖生产/质量/设备/WMS/能源/EHS/IoT/工作流/报表全链路,基于 Spring Boot 3 + PostgreSQL - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 1 - **Created**: 2026-06-17 - **Last Updated**: 2026-07-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Smart MES — 智能制造执行系统

生产透明化 · 质量可追溯 · 设备智能化 · 能源精细化 · 安环规范化

Java 17 Spring Boot 3.2 MyBatis-Plus 3.5.9 PostgreSQL 15 Redis 7 License

--- ## 项目简介 Smart MES 是一套面向中小型制造企业的智能制造执行系统(Manufacturing Execution System),基于 Spring Boot 3.2 构建。系统覆盖生产管理、质量管理、仓库管理、设备管理、能源管理、安环管理等核心业务领域,打通从计划排产到成品出库的全流程数据链路,帮助企业实现生产过程的数字化、透明化和智能化管理。 ### 核心理念 传统制造业长期面临生产过程不透明、质量追溯困难、设备管理粗放、能源浪费严重等痛点。Smart MES 以"数据驱动制造"为核心理念,通过统一的数据采集、实时监控和多维度分析,为工厂管理者提供从车间到决策层的完整数据视图。 ### 亮点特性 - **全链路覆盖**:从生产计划、工单执行、物料齐套到质量检验、成品出库,一站式管理 - **实时监控驾驶舱**:生产、设备、质量、仓库、安环、能源六大驾驶舱,核心指标一目了然 - **质量全程追溯**:支持从原料到成品的正向/反向追溯,快速定位质量问题源头 - **IoT 设备接入**:内置物联网设备管理,支持多协议数据采集与实时报警 - **移动端支持**:配套移动 APP,现场操作人员可随时随地报工、巡检、处理异常 - **灵活扩展**:模块化架构设计,按需启用业务模块,支持与 ERP/WMS/SCADA 等外部系统集成 --- ## 功能模块 ### 生产管理 生产计划排产、工单全生命周期管理、物料齐套检查、领料退料、产线实时监控、交接班管理、生产异常处置,支持 OEE 分析。 ### 质量管理 质检任务调度、质量事件闭环处理、检验规则库、原辅料/成品检验、器具台账与检定校准、复检管理、质量追溯、SPC 统计分析。 ### 仓库管理 库存台账、出入库作业、条码生成与扫码校验、先进先出(FIFO)控制、安全库存预警、仓库/库区/库位建模、库存盘点。 ### 设备管理 设备台账、重点设备运行监测、备品备件库存管理、预防性维护计划、故障报警与维修记录、设备 OEE 统计。 ### 能源管理 水电气能耗数据采集、实时能耗监测看板、能流图可视化分析、能耗趋势与同比环比分析、能源成本核算与分摊。 ### 安环管理 安全事故记录与调查、安全巡检、安全培训与证书管理、劳保用品发放回收、危化品台账与 MSDS 管理、隐患排查路线与工单。 ### IoT 物联网 设备注册与协议配置、数据点位管理、时序数据采集与存储、报警规则配置与实时报警推送。 ### 工厂建模 物料/产品/配方/BOM 主数据、产线与工位建模、工艺路线定义、组织架构、工厂日历与班次管理。 ### 报表与驾驶舱 生产/设备/质量/仓库/安环/能源六大驾驶舱,综合报表自定义与导出。 --- ## 技术架构 ``` ┌──────────────────────────────────────────┐ │ Frontend │ │ Vue 3 + TypeScript + Element Plus │ │ + ECharts + Vite │ └────────────────┬─────────────────────────┘ │ ┌────────────────▼─────────────────────────┐ │ Gateway │ │ Nginx (反向代理 + 负载均衡) │ └────────────────┬─────────────────────────┘ │ ┌────────────────▼─────────────────────────┐ │ Business Services │ │ ┌──────┐ ┌──────┐ ┌──────┐ ┌──────┐ │ │ │生产 │ │质量 │ │仓库 │ │设备 │ │ │ └──────┘ └──────┘ └──────┘ └──────┘ │ │ ┌──────┐ ┌──────┐ ┌──────┐ ┌──────┐ │ │ │能源 │ │安环 │ │IoT │ │报表 │ │ │ └──────┘ └──────┘ └──────┘ └──────┘ │ │ Spring Boot 3.2 + MyBatis-Plus │ └────────────────┬─────────────────────────┘ │ ┌────────────────▼─────────────────────────┐ │ Data Layer │ │ PostgreSQL 15 (主库) + Redis 7 (缓存) │ └──────────────────────────────────────────┘ ``` ### 技术栈 | 层级 | 技术 | 说明 | |------|------|------| | 后端框架 | Spring Boot 3.2.0 | 微服务基础框架 | | ORM | MyBatis-Plus 3.5.9 | 增强 ORM,提供分页、代码生成 | | 数据库 | PostgreSQL 15 | 关系型主数据库 | | 缓存 | Redis 7 | 分布式缓存与 Token 管理 | | 认证 | JWT (Auth0 java-jwt 4.4.0) | 无状态 Token 认证 | | API 文档 | Knife4j 4.4.0 | Swagger 增强,在线调试 | | 工具库 | Hutool 5.8.23 | Java 工具类库 | | 对象映射 | MapStruct 1.5.5 | 编译期 DTO 转换 | | 构建工具 | Maven | 多模块项目管理 | --- ## 项目结构 ``` smart-mes/ ├── mes-api/ # DTO、VO、API 数据结构定义 ├── mes-common/ # 公共组件、工具类、异常处理、统一响应、JWT 安全 ├── mes-service/ # 应用入口、Controller、Service、Mapper、配置 ├── sql/ # 数据库初始化脚本(PostgreSQL) ├── docs/ # 项目文档(PRD、API 文档) ├── docker-compose.yml # 本地开发容器编排 ├── Dockerfile # 容器镜像构建 ├── start.sh # 本地源码启动脚本 └── pom.xml # Maven 父 POM ``` --- ## 快速开始 ### 环境要求 - **JDK**:17+ - **Maven**:3.8+ - **PostgreSQL**:15+ - **Redis**:7+ ### 本地开发 **1. 启动基础设施** 使用 Docker Compose 一键启动 PostgreSQL 和 Redis: ```bash docker-compose up -d postgres redis ``` 数据库将自动初始化 `sql/init.sql` 中的表结构。 **2. 编译项目** ```bash mvn -pl mes-service -am clean package -DskipTests ``` **3. 启动应用** 方式一:使用启动脚本(支持源码编译运行,无需打包 jar) ```bash ./start.sh ``` 方式二:直接运行 jar ```bash java -jar mes-service/target/mes-service-1.0.0-SNAPSHOT.jar ``` **4. 访问服务** - API 文档(Knife4j):http://localhost:8080/doc.html - 默认管理员账号:`admin` / `admin123` ### Docker 完整部署 ```bash docker-compose up -d ``` 这将同时启动 PostgreSQL、Redis 和应用服务,应用监听 `8080` 端口。 --- ## 配置说明 项目使用 Spring Boot 多环境配置,通过 `spring.profiles.active` 切换: | Profile | 配置文件 | 说明 | |---------|----------|------| | `local` | `application-local.yml` | 本地开发,使用 docker-compose 服务 | | `dev` | `application-dev.yml` | 开发环境 | | `prod` | `application-prod.yml` | 生产环境,通过环境变量注入敏感信息 | ### 关键配置项 所有敏感信息(数据库密码、JWT 密钥等)均通过环境变量注入,**禁止**在配置文件中硬编码生产凭据: | 环境变量 | 说明 | 默认值(仅本地开发) | |----------|------|---------------------| | `SPRING_DATASOURCE_URL` | 数据库连接地址 | `jdbc:postgresql://localhost:5432/mes_db` | | `SPRING_DATASOURCE_USERNAME` | 数据库用户名 | `mes_user` | | `SPRING_DATASOURCE_PASSWORD` | 数据库密码 | — | | `SPRING_REDIS_HOST` | Redis 主机 | `localhost` | | `SPRING_REDIS_PORT` | Redis 端口 | `6379` | | `JWT_SECRET` | JWT 签名密钥 | —(生产环境务必设置强密钥) | | `JWT_EXPIRATION` | Token 有效期(毫秒) | `86400000`(24小时) | > **安全提醒**:部署到生产环境前,请务必修改默认密码和 JWT 密钥,通过环境变量注入强密码。 --- ## API 文档 启动应用后访问 Knife4j 在线文档: ``` http://localhost:8080/doc.html ``` 详细的接口规范请参阅 [docs/API.md](docs/API.md)。 --- ## 前端项目 本仓库仅包含后端服务,前端项目独立维护: - 技术栈:Vue 3 + TypeScript + Element Plus + ECharts + Vite - 构建产物部署于 Nginx,通过反向代理访问后端 API --- ## 常见问题 ### jar 启动后提示没有主清单或不可执行 检查 `mes-service/pom.xml` 是否保留了 `spring-boot-maven-plugin` 的 `repackage` 配置,并重新构建: ```bash mvn -pl mes-service -am clean package -DskipTests ``` ### MyBatis-Plus 启动或分页解析异常 确认依赖是 `mybatis-plus-spring-boot3-starter` 和 `mybatis-plus-jsqlparser`(版本 3.5.9)。Spring Boot 3 项目**不能**使用旧的 `mybatis-plus-boot-starter`。 ### 数据库初始化 - 首次启动时 `sql/init.sql` 会自动创建表结构并插入初始数据 - 已初始化的数据库不要重复执行全量 `init.sql`,后续表结构变更请使用增量 SQL 脚本 - 确认 `mes_iot_alarm.status` 等字段为 `INTEGER` 类型,与代码实体定义一致 --- ## 贡献指南 欢迎提交 Issue 和 Pull Request。 1. Fork 本项目 2. 创建特性分支 (`git checkout -b feature/amazing-feature`) 3. 提交你的修改 (`git commit -m 'Add some amazing feature'`) 4. 推送到分支 (`git push origin feature/amazing-feature`) 5. 创建 Pull Request --- ## 许可证 本项目基于 [Apache License 2.0](LICENSE) 开源。 --- ## 联系方式 如有问题或建议,欢迎提交 [GitHub Issue](../../issues)。