wanshenmean
2026-03-30 01d5cfc65f62fe9d7c5ff00b69af109a1664543a
docs: 添加 MES 托盘进站出站集成设计

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
已添加1个文件
103 ■■■■■ 文件已修改
Code/WMS/docs/superpowers/specs/2026-03-30-MES托盘进站出站集成设计.md 103 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WMS/docs/superpowers/specs/2026-03-30-MESÍÐÅ̽øÕ¾³öÕ¾¼¯³ÉÉè¼Æ.md
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,103 @@
# MES æ‰˜ç›˜è¿›ç«™å‡ºç«™é›†æˆè®¾è®¡
## æ¦‚è¿°
在 `TaskService` çš„入库完成/出库完成方法中集成 MES æ‰˜ç›˜è¿›ç«™/出站调用,新增空托盘入库/出库完成方法。
## äº‹åŠ¡ç­–ç•¥
MES è°ƒç”¨çº³å…¥ `ExecuteWithinTransactionAsync` å†… â€” MES å¤±è´¥æ—¶äº‹åŠ¡å›žæ»šï¼ŒWMS æ•°æ®ä¸è½åº“。
## æ•°æ®æµ
| æ–¹æ³• | æ“ä½œ | MES è°ƒç”¨ |
|------|------|----------|
| `InboundFinishTaskAsync` | å…¥åº“完成 | `InboundInContainer` |
| `OutboundFinishTaskAsync` | å‡ºåº“完成 | `OutboundInContainer` |
| `InboundFinishTaskTrayAsync`(新增) | ç©ºæ‰˜ç›˜å…¥åº“完成 | æ—  |
| `OutboundFinishTaskTrayAsync`(新增) | ç©ºæ‰˜ç›˜å‡ºåº“完成 | æ—  |
## æ¶‰åŠæ–‡ä»¶
- `WIDESEA_TaskInfoService/TaskService.cs`
## è¯¦ç»†è®¾è®¡
### 1. å…¥åº“完成 (InboundFinishTaskAsync)
**现有逻辑(事务内):**
- æ›´æ–°åº“存信息(LocationCode, OutboundDate, StockStatus)
- æ›´æ–°è´§ä½çŠ¶æ€ä¸º InStock
- è°ƒç”¨ CompleteTaskAsync åˆ é™¤ä»»åŠ¡
**修改后:**
- åœ¨ `CompleteTaskAsync` ä¹‹å‰æ·»åŠ  MES `InboundInContainer` è°ƒç”¨
- è¯·æ±‚参数:
  - `EquipmentCode = "STK-GROUP-001"`
  - `ResourceCode = "STK-GROUP-001"`
  - `ContainerCode = taskDto.PalletCode`
  - `LocalTime = DateTime.Now`
- MES å¤±è´¥ â†’ äº‹åŠ¡å›žæ»šï¼Œè¿”å›žé”™è¯¯
### 2. å‡ºåº“完成 (OutboundFinishTaskAsync)
**现有逻辑(事务内):**
- æ›´æ–°åº“存信息(LocationId=0, LocationCode=null, OutboundDate)
- æ›´æ–°è´§ä½çŠ¶æ€ä¸º Free
- è°ƒç”¨ CompleteTaskAsync åˆ é™¤ä»»åŠ¡
**修改后:**
- åœ¨ `CompleteTaskAsync` ä¹‹å‰æ·»åŠ  MES `OutboundInContainer` è°ƒç”¨
- è¯·æ±‚参数:
  - `EquipmentCode = "STK-GROUP-001"`
  - `ResourceCode = "STK-GROUP-001"`
  - `ContainerCode = taskDto.PalletCode`
  - `LocalTime = DateTime.Now`
- `OutboundInContainerRequest` æœ‰ `ParamList` å­—段,目前为空列表 `new List<ParamItem>()`
- MES å¤±è´¥ â†’ äº‹åŠ¡å›žæ»šï¼Œè¿”å›žé”™è¯¯
### 3. æ–°å¢žç©ºæ‰˜ç›˜å…¥åº“完成 (InboundFinishTaskTrayAsync)
**方法签名:**
```csharp
public async Task<WebResponseContent> InboundFinishTaskTrayAsync(CreateTaskDto taskDto)
```
**逻辑:**
1. æŸ¥è¯¢ä»»åŠ¡ï¼ˆæ‰˜ç›˜å· = taskDto.PalletCode)
2. æŸ¥è¯¢è´§ä½ä¿¡æ¯
3. æŸ¥è¯¢åº“存信息
4. äº‹åŠ¡å†…ï¼š
   - æ›´æ–°åº“å­˜ LocationCode/LocationId
   - æ›´æ–°è´§ä½çŠ¶æ€ä¸º InStock
   - æ›´æ–°åº“存状态为空托盘库存
   - åˆ é™¤ä»»åŠ¡ï¼ˆä¸è°ƒç”¨ CompleteTaskAsync,自己实现)
5. æ— éœ€ MES è°ƒç”¨
### 4. æ–°å¢žç©ºæ‰˜ç›˜å‡ºåº“完成 (OutboundFinishTaskTrayAsync)
**方法签名:**
```csharp
public async Task<WebResponseContent> OutboundFinishTaskTrayAsync(CreateTaskDto taskDto)
```
**逻辑:**
1. æŸ¥è¯¢ä»»åŠ¡ï¼ˆæ‰˜ç›˜å· = taskDto.PalletCode)
2. æŸ¥è¯¢è´§ä½ä¿¡æ¯
3. æŸ¥è¯¢åº“存信息
4. äº‹åŠ¡å†…ï¼š
   - æ›´æ–°åº“å­˜ LocationId=0, LocationCode=null
   - æ›´æ–°è´§ä½çŠ¶æ€ä¸º Free
   - æ›´æ–°åº“存状态为出库完成
   - åˆ é™¤ä»»åŠ¡ï¼ˆè‡ªå·±å®žçŽ°ï¼‰
5. æ— éœ€ MES è°ƒç”¨
## é”™è¯¯å¤„理
- MES è°ƒç”¨æ£€æŸ¥ `mesResult.Data?.IsSuccess`(MES ä¸šåŠ¡å±‚æˆåŠŸï¼‰
- é”™è¯¯è¿”回:`"任务完成失败:MES进站失败: {mesResult?.Data?.Msg ?? mesResult?.ErrorMessage ?? "未知错误"}"`
- ç©ºæ‰˜ç›˜æ–¹æ³•æ—  MES é”™è¯¯å¤„理
## è®¾å¤‡ç¼–码
统一使用 `STK-GROUP-001`,与组盘保持一致。