29 lines
1.8 KiB
Markdown
29 lines
1.8 KiB
Markdown
|
|
# 子卷下线补充空架子设计
|
||
|
|
|
||
|
|
## 目标
|
||
|
|
|
||
|
|
定时扫描装箱区域点位,为子卷下线空位优先补充装箱点空载具;装箱点不足时使用待检点空载具补充;下线点无剩余空位后,将装箱点剩余空载具转运到待检点空位。
|
||
|
|
|
||
|
|
## 分配顺序
|
||
|
|
|
||
|
|
1. 目的点为未锁定的下线点空位,起点优先选择未锁定的装箱点空载具。
|
||
|
|
2. 当前下线点无法取得装箱点空载具时,改用未锁定的待检点空载具。
|
||
|
|
3. 下线点候选处理完后,将剩余的装箱点空载具与待检点空位配对。
|
||
|
|
4. 各类候选点均沿用 `sort_seq`、`point_id` 升序,保证任务创建顺序稳定。
|
||
|
|
|
||
|
|
## 并发与任务创建
|
||
|
|
|
||
|
|
每次配对先条件锁定目的点,再按优先级条件锁定起点。锁定和释放都同时校验候选查询时的点位状态,避免查询与更新之间的空档窗口内状态已变化却仍然更新成功。抢锁失败时继续尝试下一候选点;没有可用起点时释放已锁定的目的点。起点和目的点均锁定后,通过 `TransportTaskApi` 创建 AGV 运输任务,回调处理器为 `subRollCallEmptyAgvTask`。业务方法运行在事务中,任务创建异常时回滚点位锁。
|
||
|
|
|
||
|
|
空架任务以载具号作为业务标识和载具编码,不设置物料编码。任务类型新增为子卷下线补空架 AGV 任务。
|
||
|
|
|
||
|
|
## 回调状态
|
||
|
|
|
||
|
|
- 取货完成:起点改为空位、清空载具和容器信息并解锁。
|
||
|
|
- 任务完成:目的点改为空载具、写入载具号、清空容器信息并解锁。
|
||
|
|
- 任务取消:起点和目的点仅解锁,保留原有库存状态。
|
||
|
|
|
||
|
|
## 调用边界
|
||
|
|
|
||
|
|
`BoxAutoJob` 只记录开始/结束日志并调用 `PackageBoxBusinessService`。点位筛选、抢锁、分配和任务创建均放在 `PackageBoxBusinessServiceImpl`;任务状态回写放在 `SubRollCallEmptyAgvTask`。
|