在 TaskService 的入库完成/出库完成方法中集成 MES 托盘进站/出站调用,新增空托盘入库/出库完成方法。
MES 调用纳入 ExecuteWithinTransactionAsync 内 — MES 失败时事务回滚,WMS 数据不落库。
| 方法 | 操作 | MES 调用 |
|---|---|---|
InboundFinishTaskAsync |
入库完成 | InboundInContainer |
OutboundFinishTaskAsync |
出库完成 | OutboundInContainer |
InboundFinishTaskTrayAsync(新增) |
空托盘入库完成 | 无 |
OutboundFinishTaskTrayAsync(新增) |
空托盘出库完成 | 无 |
WIDESEA_TaskInfoService/TaskService.cs现有逻辑(事务内):
- 更新库存信息(LocationCode, OutboundDate, StockStatus)
- 更新货位状态为 InStock
- 调用 CompleteTaskAsync 删除任务
修改后:
- 在 CompleteTaskAsync 之前添加 MES InboundInContainer 调用
- 请求参数:
- EquipmentCode = "STK-GROUP-001"
- ResourceCode = "STK-GROUP-001"
- ContainerCode = taskDto.PalletCode
- LocalTime = DateTime.Now
- MES 失败 → 事务回滚,返回错误
现有逻辑(事务内):
- 更新库存信息(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 失败 → 事务回滚,返回错误
方法签名:csharp public async Task<WebResponseContent> InboundFinishTaskTrayAsync(CreateTaskDto taskDto)
逻辑:
1. 查询任务(托盘号 = taskDto.PalletCode)
2. 查询货位信息
3. 查询库存信息
4. 事务内:
- 更新库存 LocationCode/LocationId
- 更新货位状态为 InStock
- 更新库存状态为空托盘库存
- 删除任务(不调用 CompleteTaskAsync,自己实现)
5. 无需 MES 调用
方法签名:csharp public async Task<WebResponseContent> OutboundFinishTaskTrayAsync(CreateTaskDto taskDto)
逻辑:
1. 查询任务(托盘号 = taskDto.PalletCode)
2. 查询货位信息
3. 查询库存信息
4. 事务内:
- 更新库存 LocationId=0, LocationCode=null
- 更新货位状态为 Free
- 更新库存状态为出库完成
- 删除任务(自己实现)
5. 无需 MES 调用
mesResult.Data?.IsSuccess(MES 业务层成功)"任务完成失败:MES进站失败: {mesResult?.Data?.Msg ?? mesResult?.ErrorMessage ?? "未知错误"}"统一使用 STK-GROUP-001,与组盘保持一致。