在 WMS 界面上添加手动创建任务功能。用户输入起点、终点、条码、仓库ID,系统自动生成任务号等字段,发送给 WCS。WCS 根据起点是否为线体点位(11068/11010/11001)判断是否需要写入输送线任务。
用户(WMS界面)
↓ 输入:任务类型/起点/终点/条码/仓库ID
WMS后端
↓ 调用 BaseDal.GetTaskNo() 生成 TaskNum
↓ 根据任务类型设置状态
↓ 调用 WCS ReceiveTask
WCS后端
↓ 判断起点是否为线体点位(11068/11010/11001)
↓ 是 → 查 Storage.Devices 获取输送线实例
↓ 写入输送线任务(起点/终点/任务号等)
↓ 返回成功
task.vue)在现有任务管理页面添加**手动创建任务**按钮,弹出对话框。
| 字段 | 类型 | 说明 |
|---|---|---|
| 任务类型 | 下拉框 | 入库 / 出库 / 移库 |
| 起点地址 | 输入框 | 用户输入,如 11068 |
| 终点地址 | 输入框 | 用户输入 |
| 条码 | 输入框 | 用户输入 |
| 仓库ID | 输入框 | 用户输入 |
| 优先级 | 只读 | 默认值 1 |
Controller: TaskController.cs POST /api/Task/CreateManualTask
TaskService.cs 新增 CreateManualTaskAsync 方法:
public async Task<WebResponseContent> CreateManualTaskAsync(CreateManualTaskDto dto)
{
// 1. 调用 BaseDal.GetTaskNo() 生成 TaskNum
// 2. 根据任务类型设置状态
// - 入库 → InNew (200)
// - 出库 → OutNew (100)
// - 移库 → RelocationNew (300)
// 3. 构建 Dt_Task 实体
// 4. 调用 WCS ReceiveTask (POST /api/Task/ReceiveTask)
// 5. 返回结果
}
public class CreateManualTaskDto
{
public int TaskType { get; set; } // 1=入库, 2=出库, 3=移库
public string SourceAddress { get; set; }
public string TargetAddress { get; set; }
public string Barcode { get; set; }
public int WarehouseId { get; set; }
public int Grade { get; set; } = 1; // 默认优先级1
}
ReceiveWMSTask 方法已支持接收 WMS 任务并分发到对应 FlowService:
- 入库任务 → InboundTaskFlowService.InitializeOnReceive()
- 出库任务 → OutboundTaskFlowService.InitializeOnReceive()
- 移库任务 → RelocationTaskFlowService.InitializeOnReceive()
在 InboundTaskFlowService.InitializeOnReceive() 中,判断 SourceAddress 是否为线体点位(11068/11010/11001)。这三个点位均为**入库线体点位**。
var conveyorLine = Storage.Devices
.FirstOrDefault(x => x.DeviceProDTOs.Any(d => d.DeviceChildCode == sourceAddress));
此逻辑为新增,目前 FlowService 中不存在写入输送线的逻辑,需要在判断为线体点位后新增:
ConveyorLineTaskCommandNew 对象conveyorLine.WriteCustomer(sourceLineNo, command) 写入 PLC写入字段:
- TaskNo = WCS 分配的任务号
- Source = 起点地址
- Target = 终点地址
- Barcode = 条码
- WCS_STB = 1 (标记WCS已发送)
ReceiveWMSTask 中已有重复任务检查逻辑(根据 TaskNum 或 PalletCode),手动创建时如遇重复返回错误。
| 类型 | 新建状态 | 状态值 |
|---|---|---|
| 入库 | InNew | 200 |
| 出库 | OutNew | 100 |
| 移库 | RelocationNew | 300 |
WMS/WIDESEA_WMSClient/src/views/taskinfo/task.vueWMS/WIDESEA_WMSClient/src/extension/taskinfo/task.jsWMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.csWMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/TaskInfo/TaskController.csWCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.csWCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/Flows/InboundTaskFlowService.csWCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/Flows/OutboundTaskFlowService.csWCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/Flows/RelocationTaskFlowService.csWCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineNewJob/ConveyorLineDispatchHandler.cs (参考写入模式)WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineNewJob/ConveyorLine/ConveyorLineTaskCommandNew.cs (任务命令结构)