diff --git a/Sln.Wcs.HikRoBotDispatcher/HikRoBotDispatchHub.cs b/Sln.Wcs.HikRoBotDispatcher/HikRoBotDispatchHub.cs
index 674320f..dcb21df 100644
--- a/Sln.Wcs.HikRoBotDispatcher/HikRoBotDispatchHub.cs
+++ b/Sln.Wcs.HikRoBotDispatcher/HikRoBotDispatchHub.cs
@@ -24,6 +24,7 @@
#endregion << 版 本 注 释 >>
using Sln.Wcs.HikRoBotAdapter.Domain.Dto.GbTaskSubmit;
+using Sln.Wcs.HikRoBotAdapter.Domain.Dto.QueryTask;
using Sln.Wcs.HikRoBotAdapter.Enum;
using Sln.Wcs.HikRoBotAdapter.Service;
using Sln.Wcs.Model.Domain;
@@ -62,6 +63,31 @@ public class HikRoBotDispatchHub
_logger.Info($"调度任务{taskDetail.taskCode}下发失败:{submitResultDto.msg}");
}
}
+
+ ///
+ /// 获取任务状态
+ ///
+ ///
+ ///
+ public string GetTaskStatus(string taskCode)
+ {
+ string result = string.Empty;
+ QueryTaskResultDto taskStatus = _hikRobotAdapter.QueryTaskStatus(new QueryTaskDto()
+ {
+ RobotTaskCode = taskCode,
+ });
+
+ if (taskStatus.code == HikRoBotStatusEnum.成功)
+ {
+ _logger.Info($"调度任务{taskCode}状态获取成功:{taskStatus.data.TaskStatus}");
+ result = taskStatus.data.TaskStatus;
+ }
+ else
+ {
+ _logger.Info($"调度任务{taskCode}状态获取失败:{taskStatus.msg}");
+ }
+ return result;
+ }
}
\ No newline at end of file
diff --git a/Sln.Wcs.HikRoBotServer/Program.cs b/Sln.Wcs.HikRoBotServer/Program.cs
index 7a9370f..f3cded7 100644
--- a/Sln.Wcs.HikRoBotServer/Program.cs
+++ b/Sln.Wcs.HikRoBotServer/Program.cs
@@ -96,6 +96,13 @@ api.MapPost("/task/receive", (ReceiveTaskRequest req) =>
return Results.Ok(new { success = true });
});
+// Hub 方法: GetTaskStatus
+api.MapGet("/task/status", (string taskCode) =>
+{
+ string taskStatus = hub.GetTaskStatus(taskCode);
+ return Results.Ok(new { time = DateTime.Now, status = "ok" , taskStatus = taskStatus });
+});
+
api.MapGet("/health", () => Results.Ok(new { time = DateTime.Now, status = "ok" }));
log.Info("HikRoBotServer 就绪: http://localhost:5200/swagger");
diff --git a/TODO.md b/TODO.md
index 334065f..c8ebdc9 100644
--- a/TODO.md
+++ b/TODO.md
@@ -11,22 +11,24 @@
## 待完成
-### 1. 任务执行引擎(分组并行方案)
-- [ ] 重新实现 BaseTaskExecutor、6 个执行类、TaskExecutorFactory
-- [ ] MaterialStrategy.ProcessTask 改为调用工厂
-- [ ] SemaphoreSlim 实现分组并行 + 组内串行
-- [ ] 移除旧的 DispatchToAgv/DispatchToHoist stub
+### 1.调度逻辑修改
+- [ ] HoistDispatcher、HikRoBotDispatcher任务下发后需要监控任务执行情况,任务执行完成后,才可以返回ok给Strategy
+- [ ] AGV 任务下发后开始获取任务状态(调用/task/status),只有状态为FINISHED/MANUALED完成或手动完成时才可以进行后序任务,CANCELLED时终端调度任务后序也不执行
+ 等待步骤执行WAIT => 筛选提升机、下发提升机任务
+ FINISHED/MANUALED => 完成/手动完成,可以进行后序任务
+ CANCELLED => 任务取消,终止调度任务
+- [ ] Strategy执行到提升机任务时进行读取托盘条码,验证物料并下发提升机启动信号
-### 2. 登录与权限
-- [ ] 登录窗口 + 用户认证
-- [ ] 菜单权限控制
-- [ ] 用户管理页面(已有部分代码,需恢复)
+### 2. 任务执行引擎(分组并行方案)
+- [ ] 包材入库逻辑测试
+- [ ] 包材出库、成品入库、成品出库逻辑测试
+- [ ] 任务执行引擎抽象,优化代码结构
### 3. UI 优化
-- [ ] 选中行高亮颜色与编辑按钮区分(FluentTheme 内部限制,待找替代方案)
- [ ] 码垛机 HMI 接入实时 PLC 数据
- [ ] 任务页面添加"下发"按钮(调用 HoistServer/HikRoBotServer API)
-### 4. 方案设计
-- [ ] 前端/引擎通信协议确定(HTTP API 已就绪,需确认请求/响应格式)
-- [ ] 设备并行数调优(当前 SemaphoreSlim(1))
+### 4. 登录与权限
+- [ ] 登录窗口 + 用户认证
+- [ ] 菜单权限控制
+