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

52 lines
2.4 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.

### 详细入库全流程解析
#### 单据创建阶段 (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 任务。