日期: 2026-04-12
状态: 已批准
在 WMS 前端任务管理页面添加工具栏按钮,支持从任务列表中选择一个或多个任务,手动编辑地址(起点/终点)和优先级后,下发到 WCS 系统执行。
使用场景:当任务因设备故障、网络问题等原因未能正常下发时,操作员可手动重新下发。
| 文件 | 用途 |
|---|---|
WMS/WIDESEA_WMSClient/src/extension/taskinfo/extend/dispatchTasksToWCS.vue |
批量下发编辑弹窗组件 |
| 文件 | 改动 |
|---|---|
WMS/WIDESEA_WMSClient/src/extension/taskinfo/task.js |
添加工具栏"手动下发"按钮 |
触发方式:工具栏点击"手动下发"按钮
前置条件:至少选中一项任务
弹窗内容:
- 顶部显示"已选任务数: N 个"
- 表格展示所有选中任务,列:任务号、起点地址、终点地址、优先级、状态
- 地址字段:el-input 或 el-select(取决于是否有标准地址字典)
- 优先级:el-input-number,范围 1-99
- 状态列:仅展示,不可编辑
按钮:取消、确认下发
下发后:
- 成功:弹窗关闭,刷新任务列表
- 失败:弹窗内显示失败任务列表(任务号 + 失败原因)
文件: WMS/WIDESEA_WMSServer/WIDESEA_DTO/Task/DispatchTaskDto.cs
public class DispatchTaskDto
{
public long TaskId { get; set; }
public string SourceAddress { get; set; }
public string TargetAddress { get; set; }
public int Priority { get; set; }
}
Controller: WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/TaskInfo/TaskController.cs
POST /api/TaskInfo/DispatchTasksToWCS
Service: WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService_WCS.cs
新增方法 DispatchTasksToWCSAsync(List<DispatchTaskDto> dtos)
1. 校验选中任务数量 > 0
2. 校验任务状态,仅允许以下状态的任务下发:
- 入库:InNew(入库新单)
- 出库:OutNew(出库新单)
- 移库:RelocationNew(移库新单)
3. 更新任务的地址(SourceAddress、TargetAddress)和优先级(Grade)
4. 调用 WCS 接口:POST http://localhost:9292/api/Task/ReceiveManualTask
5. 汇总每条任务的下发结果(成功/失败及原因)
6. 返回给前端
已有接口: POST /api/Task/ReceiveManualTask(commit b032763)
WMS 调用该接口,将任务数据以 WMSTaskDTO 格式发送。
| 场景 | 前端处理 | 后端处理 |
|---|---|---|
| 未选中任务 | 按钮置灰;点击提示"请先选择任务" | 返回错误提示 |
| 任务状态不可下发 | 行内状态列标红,地址/优先级置灰不可编辑 | 校验并返回不可下发任务列表 |
| WCS 调用超时 | 该任务标记"下发超时" | 标记任务,下发结果返回前端 |
| WCS 返回失败 | 显示 WCS 错误原因(如"设备忙") | 透传 WCS 错误信息 |
| 全部成功 | 弹窗关闭,刷新列表 | 返回成功 |
| 层级 | 文件路径 | 改动类型 |
|---|---|---|
| 前端 | WMS/WIDESEA_WMSClient/src/extension/taskinfo/task.js |
修改 |
| 前端 | WMS/WIDESEA_WMSClient/src/extension/taskinfo/extend/dispatchTasksToWCS.vue |
新增 |
| 前端 | WMS/WIDESEA_WMSClient/src/api/ |
新增 API 方法 |
| 后端 | WMS/WIDESEA_WMSServer/WIDESEA_DTO/Task/DispatchTaskDto.cs |
新增 |
| 后端 | WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService_WCS.cs |
修改 |
| 后端 | WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/TaskInfo/TaskController.cs |
修改 |
| 后端 | WMS/WIDESEA_WMSServer/WIDESEA_Core/Helper/HTTP/HttpClientHelper.cs |
复用 |
┌─────────────────────────────────────────────────────────────┐
│ 手动下发任务到 WCS [X] │
├─────────────────────────────────────────────────────────────┤
│ 已选任务数: 5 个 │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ 任务号 │ 起点地址 │ 终点地址 │ 优先级 │ 状态 │ │
│ ├─────────────────────────────────────────────────────┤ │
│ │ T001 │ [PLC-A01 ] │ [Rack-05] │ [ 5 ] │ 入库新单│ │
│ │ T002 │ [PLC-A02 ] │ [Rack-06] │ [ 3 ] │ 入库新单│ │
│ └─────────────────────────────────────────────────────┘ │
├─────────────────────────────────────────────────────────────┤
│ [取消] [确认下发] │
└─────────────────────────────────────────────────────────────┘