南通亚驰WMS后端
Go to file
2025-03-28 14:28:01 +08:00
.idea 小修改 2025-03-09 11:16:57 +08:00
src 小修改 2025-03-09 12:35:15 +08:00
.gitignore 小修改 2025-03-09 12:35:15 +08:00
mvnw 初版作成 2025-03-08 10:09:47 +08:00
mvnw.cmd 初版作成 2025-03-08 10:09:47 +08:00
pom.xml 初版作成 2025-03-08 10:09:47 +08:00
README.md 业务流程 2025-03-28 14:28:01 +08:00

立库入库

  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到待删除任务列表
        • 添加库存到待添加库存列表
      • 更新载具信息, 库存信息, 库位工作状态
      • 批量保存任务记录
      • 批量删除入库记录