编辑 | blame | 历史 | 原始文档

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
- OutboundInContainerRequestParamList 字段,目前为空列表 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,与组盘保持一致。