wms_serve_nantong_yachi/README.md
2025-03-28 14:28:01 +08:00

69 lines
3.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

### 立库入库
1. 通过`/wms/task/requireStockIn`接口发起入库请求
2. 调用`TaskControllerServiceImpl::requireStockIn`服务
* 校验请求体有效性
* 空载具入库:
* 调用`StackerTaskServiceImpl::requestOneLocation`服务请求库位
* 创建空载具入库任务
* 物料入库
* 循环物料列表
* 同种物料合并请求
* `key: goodsId, value: wmsTask`; 缓存所有物料的入库任务
* 判断数量是否超载
* 批量保存wms任务
* **任务现状:**
* wms任务已创建, 任务状态: `WAIT(0, "初始化")`
* wcs任务未创建
3. `public class WmsTaskExecutor implements Job` && `public class JobServiceImpl implements IJobService`
* `WmsTaskExecutor`通过实现`Job`接口, 成为定时任务
* `JobServiceImpl`通过实现`IJobService`接口, 成为定时任务服务, 从而定时扫描所有定时任务
* 查询所有状态为`WAIT(0, "初始化")`的入库任务
* 循环所有状态为`WAIT`的入库任务
* 判断当前箱子是否已经解析成WCS任务并且已经存表
* 判断当前箱子是否重复解析
* 生成新的wcs入库任务, `key: vehicleId, value: wcsTask`缓存wcs入库任务
* 批量保存wcs任务并更新wms任务状态
* **任务现状:**
* wms任务已解析, 任务状态: `EXECUTED(1, "已解析")`
* wcs任务已创建, 任务状态: `INIT(0, "任务初始化")`
4. `WcsStackerTaskSender`定时任务
* 查询所有状态为`INIT`的wcs任务
* 循环wcs任务列表
* 生成请求体, 调用`WcsApiServiceImpl::sendWcsStackerTask`下发任务至堆垛机
* 更新wcs与wms任务状态
* **任务现状:**
* wcs任务已下发, 排队中, 任务状态: `WAIT(1, "任务排队中")`
* wms任务已下发, 任务状态: `SEND(2, "已下发")`
5. 堆垛机完成入库任务, 反馈wcs, wcs回调wms接口`/wms/task/sendTaskResult`, 反馈任务状态
* 查询对应的wcs任务
* 转换堆垛机任务状态, 从回调的请求体wcs任务状态转换为wms任务状态
* 若回调的请求体wcs任务状态为`FINISH(100, "任务完成")`
* 根据getWcsTaskId更新相应的 `(可能有多个wms任务状态被修改)` wms任务状态为`FINISH(4, "执行完成")`
* 移除wcs任务并向wcs备份表添加记录
* 若回调的请求体wcs任务状态非`FINISH(100, "任务完成")`
* 根据getWcsTaskId更新相应的 `(可能有多个wms任务状态被修改)` wms任务状态为堆垛机转换来的任务状态
* 更新wcs的任务状态为请求体携带的任务状态
* **任务现状:**
* 若堆垛机回调请求体携带任务状态非`FINISH(100, "任务完成")`
* wms任务正在执行, 任务状态: `RUN(3, "正在执行")`
* wcs任务正在执行, 任务状态: `RUN|LEAVE|MID|ARRIVE`
* 若堆垛机任务执行完成, 回调请求体任务状态为`FINISH(100, "任务完成")`
* wms任务执行完成, 任务状态`FINISH(4, "执行完成")`
* wcs任务执行完成, 任务状态`FINISH(100, "任务完成")`, **然后被移除任务**
6. `WmsTaskFinisher`定时任务
* 获取所有任务状态为`FINISH(4, "执行完成")`的wms入库任务, 调用`StackerTaskServiceImpl::finishStackerInTasks`服务
* 将wmsTask表中所有状态为`FINISH(4, "执行完成")`的任务提取键值对: `key: vehicleId, value: List<WmsTask>`
* 根据`vehicleId`遍历键值对, 提取出`List<WmsTask>`
* 遍历`List<WmsTask>`
* 添加`WmsTask`到任务记录列表
* 添加`WmsTask`到待删除任务列表
* 添加库存到待添加库存列表
* 更新载具信息, 库存信息, 库位工作状态
* 批量保存任务记录
* 批量删除入库记录