# MES_Test_Project 快速参考指南 ## 🚀 快速开始 ### 后端启动 ```bash # 启动网关 cd gateway mvn spring-boot:run # 启动PLC服务(端口10018) cd mes-processes/mes-plcSend mvn spring-boot:run ``` ### 前端启动 ```bash cd mes-web npm install npm run dev ``` --- ## 📁 核心目录速查 ### 后端核心目录 | 路径 | 说明 | |------|------| | `mes-processes/mes-plcSend/src/main/java/com/mes/task/service/TaskExecutionEngine.java` | **任务执行引擎(核心)** | | `mes-processes/mes-plcSend/src/main/java/com/mes/interaction/vehicle/handler/LoadVehicleLogicHandler.java` | 大车设备逻辑处理器 | | `mes-processes/mes-plcSend/src/main/java/com/mes/device/service/DeviceCoordinationService.java` | 设备协调服务 | | `mes-common/serverBase/src/main/java/com/mes/exception/GlobalExceptionHandler.java` | 全局异常处理 | ### 前端核心目录 | 路径 | 说明 | |------|------| | `mes-web/src/main.js` | 应用入口 | | `mes-web/src/router/index.js` | 路由配置 | | `mes-web/src/utils/request.js` | HTTP请求封装 | | `mes-web/public/config.js` | 服务器地址配置 | --- ## 🔧 常用操作 ### 添加新设备类型 1. **定义设备类型常量** ```java // DeviceConfig.DeviceType public static final String NEW_DEVICE = "新设备类型"; ``` 2. **创建设备逻辑处理器** ```java @Component public class NewDeviceLogicHandler extends BaseDeviceLogicHandler { @Override public String getDeviceType() { return DeviceConfig.DeviceType.NEW_DEVICE; } @Override protected DevicePlcVO.OperationResult doExecute(...) { // 实现逻辑 } } ``` 3. **配置设备逻辑参数**(前端) ```json { "deviceLogic": { "timeout": 5000, "customParam": "value" } } ``` ### 添加新页面 1. **创建Vue组件** ```vue ``` 2. **添加路由** ```javascript // mes-web/src/router/index.js { path: '/newModule/newPage', name: 'newPage', component: () => import('../views/newModule/NewPage.vue') } ``` 3. **添加API接口** ```javascript // mes-web/src/api/newModule.js export function getNewData() { return request.get('/api/newModule/data') } ``` --- ## 📊 设备类型速查 | 设备类型 | 常量 | 处理器 | 说明 | |---------|------|--------|------| | 大车设备 | `LOAD_VEHICLE` | `LoadVehicleLogicHandler` | 多实例协调,MES任务处理 | | 大理片笼 | `LARGE_GLASS` | `LargeGlassLogicHandler` | 格子范围配置 | | 卧转立扫码 | `WORKSTATION_SCANNER` | `HorizontalScannerLogicHandler` | 定时扫描,数据落库 | | 卧转立 | `WORKSTATION_TRANSFER` | `HorizontalTransferLogicHandler` | 30s缓冲,批量处理 | | 卧式缓存 | `GLASS_STORAGE` | `GlassStorageLogicHandler` | 已实现,当前不使用 | --- ## 🔄 执行流程速查 ### 任务执行流程 ``` Controller → Service → TaskExecutionEngine → DeviceInteraction/Handler → PLC ``` ### 设备协调流程 ``` 设备A完成 → 数据传递 → 设备B读取 → 设备B执行 → 状态同步 ``` --- ## 📝 API端点速查 ### 设备管理 - `GET /device/config/list` - 设备列表 - `POST /device/config/create` - 创建设备 - `PUT /device/config/update` - 更新设备 - `DELETE /device/config/delete/{id}` - 删除设备 ### 设备组管理 - `GET /device/group/list` - 设备组列表 - `POST /device/group/create` - 创建设备组 - `POST /device/group/{groupId}/devices` - 添加设备到组 ### 任务管理 - `POST /device/task/start` - 启动任务 - `GET /device/task/list` - 任务列表 - `GET /device/task/{taskId}` - 任务详情 - `POST /device/task/{taskId}/cancel` - 取消任务 ### 实时监控(SSE) - `GET /task/notification/sse?taskId=xxx` - 监听指定任务 - `GET /task/notification/sse/all` - 监听所有任务 --- ## 🐛 常见问题 ### 1. 设备状态丢失 **原因**:大车设备状态存储在内存中,服务重启后丢失 **解决**:扩展支持数据库持久化 ### 2. 任务执行失败 **检查**: - 设备状态(在线/离线) - PLC连接状态 - 设备协调检查 - 查看任务步骤详情 ### 3. SSE连接断开 **原因**:连接超时(30分钟) **解决**:前端重新连接 ### 4. 设备逻辑不生效 **检查**: - 设备类型是否正确 - `extraParams.deviceLogic` 配置是否正确 - Handler是否已注册(查看日志) --- ## 🔍 调试技巧 ### 查看注册的设备处理器 ```java @Autowired private DeviceLogicHandlerFactory factory; Set types = factory.getSupportedDeviceTypes(); ``` ### 查看日志 - 任务执行:`TaskExecutionEngine` 日志 - 设备执行:具体 Handler 日志 - 协调服务:`DeviceCoordinationService` 日志 ### 前端调试 - 打开浏览器开发者工具 - 查看 Network 标签(API请求) - 查看 Console 标签(错误信息) --- ## 📦 模块依赖关系 ``` mes-parent (父模块) ├── mes-common (公共模块) │ ├── springSecurity (安全) │ ├── serverBase (基础服务) │ ├── communication (通信) │ └── model (数据模型) ├── mes-processes (业务流程) │ └── mes-plcSend (PLC服务) └── gateway (API网关) ``` **依赖关系**: - `mes-plcSend` 依赖 `springSecurity` 和 `serverBase` - `serverBase` 依赖 `model` - `gateway` 独立运行 --- ## ⚙️ 配置文件位置 | 配置文件 | 位置 | 说明 | |---------|------|------| | 后端主配置 | `mes-processes/mes-plcSend/src/main/resources/application.yml` | PLC服务配置 | | 前端配置 | `mes-web/public/config.js` | 服务器地址 | | 路由配置 | `mes-web/src/router/index.js` | 前端路由 | | 数据库迁移 | `mes-processes/mes-plcSend/src/main/resources/db/migration/` | 数据库脚本 | --- ## 🎯 开发规范 ### 命名规范 - **类名**:大驼峰(PascalCase) - **方法名**:小驼峰(camelCase) - **常量**:全大写下划线(UPPER_SNAKE_CASE) - **包名**:全小写 ### 代码组织 - **简单设备**:放在 `interaction/impl/` - **复杂设备**:创建独立包(如 `interaction/vehicle/`) - **需要协调的设备**:创建 `coordination/` 子包 ### 注释规范 - 类和方法必须有JavaDoc注释 - 复杂逻辑需要行内注释 - TODO标记待完成功能 --- ## 📚 相关文档 - **详细报告**:`项目详细报告.md` - **PLC服务README**:`mes-processes/mes-plcSend/README.md` - **架构文档**:`mes-processes/mes-plcSend/ARCHITECTURE.md` --- **最后更新**:2025年