ry_wms/README.md
2026-03-09 10:29:38 +08:00

2.4 KiB
Raw Blame History

详细入库全流程解析

单据创建阶段 (Creation)

  • 动作: 用户通过 add 接口新增,或 importData 导入 Excel。
  • 数据变更:
    • 插入 TRkWareNotice状态 ReceivingStatus = "0"。
    • 插入 TRkWareNoticeTab状态 ReceivingStatus = "0", InStatus = "0"。

收货确认阶段 (Receiving / Task Generation)

此阶段是“实物清点与任务生成”,并非流程的终点。
  • 接口: confirmNoticeTab
  • 业务逻辑:
    1. 校验: 检查托盘状态、是否冻结InStatus=="1")。
    2. 更新收货量: 累加 RecNum (累计收货数量)。
    3. 判定冻结: 如果 RecNum (累计收货) == ReceivingNum (应收总数),将明细 InStatus 更新为 "1"。这标志着该物料收货动作结束,不能再收了。
    4. 生成任务: 创建 TOngoodsshelf (入库任务),状态 InStatus = "0"。
    5. 发送通知: 生成 TCallNotice通知下游如AGV或搬运工执行上架任务。
  • 关键点: 此时单据状态 ReceivingStatus 依然是 "0",库存表尚未增加库存。

上架确认阶段 (Putaway / Completion)

此阶段是“任务执行与库存生成”,驱动状态流转。
  • 接口: shelvesConfirm
  • 业务逻辑:
    1. 校验: 检查库位 (LocationId) 有效性。
    2. 更新上架量: 累加 AcceNum (累计上架数量)。
    3. 更新明细状态:
      • 若 AcceNum < RecNum: 设置 ReceivingStatus = "1" (部分上架)。
      • 若 AcceNum >= RecNum: 设置 ReceivingStatus = "2" (全部上架)。
    4. 完成任务: 将 TOngoodsshelf 移入历史表 TOngoodsshelfBak并从原表删除。
    5. 生成库存:
      • 普通模式: 插入 TMiStock (真实库存)。
      • 虚拟模式 (Fictitious="1"): 插入 TMiStockF (虚拟库存)。
    6. 判断主单完结:
      • 遍历该单据下所有明细。
      • 如果所有明细的状态都为 "2" (已上架),则触发归档流程。

归档流程 (Archiving)

当上架确认检测到主单完结时自动触发。
  • 更新主单: 将 TRkWareNotice 的 ReceivingStatus 设为 "2"。
  • 同步收货表: 更新或插入 TRkReceivingGoods (收货记录表)。
  • 历史迁移:
    • 将主单数据移入 TRkWareNoticeBak。
    • 将明细数据移入 TRkWareNoticeTabBak。
  • 数据清理: 物理删除 TRkWareNotice 和 TRkWareNoticeTab 中的原数据。
  • 关闭通知: 关闭关联的 TCallNoticeOrder 任务。