# 本地创建机器人任务设计 ## 背景 `RobotTaskService.GetWMSRobotTask` 当前通过 HTTP 调用 WMS 获取机器人任务数据,再写入本地数据库。需求是跳过 WMS 调用,直接在本地创建 `Dt_RobotTask`。 ## 方案 新增 `CreateLocalRobotTask(Dt_Task task)` 方法,保留原 `GetWMSRobotTask` 不删除。 ### 改动文件 1. **RobotTaskService.cs** — 新增 `CreateLocalRobotTask` 和辅助方法 `MapConfigKeyToRobotTaskType` 2. **IRobotTaskService.cs** — 接口新增方法声明 3. **OutboundTaskFlowService.cs** — 调用点从 `GetWMSRobotTask` 改为 `CreateLocalRobotTask` ### 方法逻辑 1. 复用 `ResolveRobotTaskConfigKey` 解析任务类型配置键 2. 复用 `BuildRobotTaskStock` 构建 StockDTO 3. 新增 `MapConfigKeyToRobotTaskType` 映射配置键到 `RobotTaskTypeEnum`: - `CreateRobotChangePalletTask` → `ChangePallet` (510) - `CreateRobotGroupPalletTask` → `GroupPallet` (500) - `CreateRobotSplitPalletTask` → `SplitPallet` (520) 4. 构建 `Dt_RobotTask`: - `RobotTaskNum` = `Random.Shared.Next()` - `RobotSourceAddress` / `RobotTargetAddress` = `task.SourceAddress` / `task.TargetAddress` - `RobotSourceAddressLineCode` / `RobotTargetAddressLineCode` = stock 对应字段 - `RobotRoadway` = `stock.Roadway` - `RobotSourceAddressPalletCode` / `RobotTargetAddressPalletCode` = stock 对应字段 - `RobotTaskType` = 映射后的枚举值 - `RobotTaskState` = `RobotNew` (300) - `RobotGrade` = `task.Grade` - `Creater` = `"WCS_Local"` - `RobotTaskTotalNum` = 1 5. `BaseDal.AddData` 插入数据库 6. `_taskExecuteDetailService.AddTaskExecuteDetail` 记录执行明细 ### 不动的部分 - `GetWMSRobotTask` 和 `ReceiveWMSTask` 保持原样 - `ResolveRobotTaskConfigKey`、`BuildRobotTaskStock` 等现有方法复用,不修改 - 配置文件 `appsettings.json` 不改