# 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年