|
|
# TODO
|
|
|
|
|
|
## 已完成
|
|
|
|
|
|
- [✅] HoistServer (端口 5100) — 提升机调度 API,Swagger `/swagger`,4 个 Hub 方法
|
|
|
- [✅] HikRoBotServer (端口 5200) — AGV 调度 API,Swagger `/swagger`
|
|
|
- [✅] UI 引擎启停控制 — 系统监控页分别启动/停止两个服务器进程
|
|
|
- [✅] 码垛机 HMI 页面 — 静态界面,手动操作区带开关按钮
|
|
|
- [✅] 删除确认弹窗 — 所有删除操作弹出 ConfirmDialog
|
|
|
- [✅] 浅色/深色主题 — 一键切换,全视图适配
|
|
|
|
|
|
## 待完成
|
|
|
|
|
|
### 1.调度逻辑修改
|
|
|
- [✅] 任务明细与操作设备关联:提升机-获取到空闲设备后将确定分配任务的提升机编号存入
|
|
|
- [✅] HoistDispatcher、HikRoBotDispatcher任务下发后需要监控任务执行情况,任务执行完成后,才可以返回ok给Strategy
|
|
|
- [✅] AGV 任务下发后开始获取任务状态(调用/task/status),只有状态为FINISHED/MANUALED完成或手动完成时才可以进行后序任务,CANCELLED时终端调度任务后序也不执行
|
|
|
WAIT => 等待步骤执行:筛选提升机、下发提升机任务“参考手动任务执行界面的任务执行事件逻辑”
|
|
|
FINISHED/MANUALED => 完成/手动完成,可以进行后序任务
|
|
|
CANCELLED => 任务取消,终止调度任务
|
|
|
|
|
|
- [] Strategy执行到提升机任务时调用提升机调度中心的接收物料接口“receive-pallet”,验证物料并下发提升机启动信号
|
|
|
- [] WCS 任务起始点转换为AGV 定位码:提升机接驳位(根据楼层+提升机编号判断)、AGV 等待点(楼层/15 栋判断出入库提升机)
|
|
|
|
|
|
### 任务创建修改
|
|
|
- [✅] 添加手动放、手动取操作,如果是手动放,任务从提升机开始,手动取也是以提升机结束
|
|
|
- [✅] 手动放:任务执行则下发提升机任务
|
|
|
|
|
|
### MaterialInStoreExecutor 优化
|
|
|
- [ ] ExecuteAsync + Thread.Join 阻塞主循环(`:92-114`)—— 改为 Task.Run + WhenAll,独立轮询不互相阻塞
|
|
|
- [ ] AGV 状态轮询加超时保护(`:200`)—— 避免 AGV 无终态时线程永久卡死
|
|
|
- [ ] 空闲提升机轮询加超时保护(`:248`)—— 避免 PLC 离线时永久卡死
|
|
|
- [ ] 等待提升机完成轮询加超时保护(`:393`)—— 同上
|
|
|
- [ ] DbWriteLock 全局锁优化(`:24`)—— 改为独立 Scope/Context 避免并发写阻塞
|
|
|
- [ ] new Thread + GetAwaiter 改 Task.Run(`:92-111`)—— 减少线程浪费
|
|
|
- [ ] HttpClient 复用(`:173,362,392`)—— 使用 IHttpClientFactory 或静态实例
|
|
|
- [ ] DispatchConveyorAsync 补充输送线逻辑(`:419-422`)
|
|
|
|
|
|
### 2. 任务执行引擎(分组并行方案)
|
|
|
- [ ] 包材入库逻辑测试
|
|
|
- [ ] 包材出库、成品入库、成品出库逻辑测试
|
|
|
- [ ] 任务执行引擎抽象,优化代码结构
|
|
|
|
|
|
### 3. UI 优化
|
|
|
- [ ] 码垛机 HMI 接入实时 PLC 数据
|
|
|
- [ ] 任务页面添加"下发"按钮(调用 HoistServer/HikRoBotServer API)
|
|
|
|
|
|
### 4. 登录与权限
|
|
|
- [ ] 登录窗口 + 用户认证
|
|
|
- [ ] 菜单权限控制
|
|
|
|