Skip to content

调拨转移表结构

**本文引用的文件** - [store.sql](file://docs/ddl/store.sql) - [device.sql](file://docs/ddl/device.sql) - [StoreInOrderDetailDo.java](file://lemes-job-devicemate/lemes-job-devicemate-executor/src/main/java/com/lenovo/lemes/job/devicemate/executor/model/store/StoreInOrderDetailDo.java) - [StoreOutDetailDo.java](file://lemes-job-devicemate/lemes-job-devicemate-executor/src/main/java/com/lenovo/lemes/job/devicemate/executor/model/store/StoreOutDetailDo.java) - [StoreInOrdersVo.java](file://lemes-job-devicemate/lemes-job-devicemate-executor/src/main/java/com/lenovo/lemes/job/devicemate/executor/model/store/StoreInOrdersVo.java) - [StoreInOrderDetailMapper.java](file://lemes-job-devicemate/lemes-job-devicemate-executor/src/main/java/com/lenovo/lemes/job/devicemate/executor/mapper/store/StoreInOrderDetailMapper.java) - [StockMainDo.java](file://lemes-job-devicemate/lemes-job-devicemate-executor/src/main/java/com/lenovo/lemes/job/devicemate/executor/model/store/StockMainDo.java)

目录

  1. 引言
  2. 项目结构
  3. 核心组件
  4. 架构概览
  5. 详细组件分析
  6. 依赖关系分析
  7. 性能考虑
  8. 故障排查指南
  9. 结论

引言

本文件聚焦于设备管理系统的“调拨转移”相关数据库表结构与业务流程,围绕调拨单表(store_transfer_orders)与调拨明细表(store_transfer_order_tail)展开,系统性梳理调出仓库、调入仓库、物料明细、转移数量、审批状态等核心字段;并结合现有入库、出库、库存台账等表结构,阐明调拨业务的流程控制、权限管理、库存同步机制、状态流转与审批流程、执行确认等关键规则,以及数据一致性、并发控制与异常处理策略。同时覆盖跨仓库调拨、内部转移、紧急调拨等典型场景的实现要点与注意事项。

项目结构

  • 数据库层DDL位于 docs/ddl 下,包含 store.sql(通用仓储DDL)与 device.sql(设备相关DDL,含调拨表定义)。
  • Java侧实体模型与映射位于 lemes-job-devicemate/lemes-job-devicemate-executor 中,涵盖入库、出库、库存台账等实体类及Mapper接口,用于支撑调拨业务的数据访问与转换。

图表来源

章节来源

核心组件

  • 调拨单表(store_transfer_orders)
    • 关键字段:调拨单号、出库仓库、入库仓库、调拨人、接收人、调拨原因、审批单号、审批状态、执行人、状态等。
    • 作用:承载调拨业务的主单据信息与审批流状态。
  • 调拨明细表(store_transfer_order_tail)
    • 关键字段:调拨单号、物料、产品线、出库库区/库位、入库库区/库位、序列号/箱号、库存数量、调拨数量、接收数量、处理状态、处理数量、是否新增行等。
    • 作用:记录每项物料的调拨明细与库存定位信息,支撑库存同步与差异核对。
  • 库存台账(stock_main)
    • 关键字段:台账号、仓库、库区、库位、物料、产品线、库存总量、在库库存、其他库存等。
    • 作用:统一的库存汇总与定位依据,保障调拨前后库存数据一致性。
  • 入库/出库相关表(store_in_order_detail、store_out_order_detail)
    • 作用:作为调拨业务的上下游参考,体现物料在不同事务中的数量与状态变化。

章节来源

架构概览

调拨业务以“单据-明细-库存”为核心,遵循“先审批后执行”的流程控制,通过明细表精确追踪物料从出库到入库的全链路,借助库存台账实现数据一致性校验与并发控制。

图表来源

详细组件分析

调拨单表(store_transfer_orders)

  • 表结构要点
    • 主键与唯一约束:id 自增主键,transfer_order_no 唯一索引,确保单据号全局唯一。
    • 状态与审批:transfer_status 记录调拨状态(数据字典),audit_no/audit_status 支持审批流程。
    • 角色与执行:transfer_user/recipient_user 对应调拨人与接收人,excutor/excutor_no 对应执行人与执行人代号。
    • 时间戳与逻辑删除:create_time/update_time 记录变更时间,is_delete 支持软删除。
  • 业务规则
    • 审批前置:未完成审批的调拨单不应进入执行阶段。
    • 状态机:通常包含草稿、审批中、已审批、执行中、已完成、已撤销等状态,具体状态值由数据字典定义。
    • 权限控制:仅授权人员可创建、审批、执行调拨单据。

章节来源

调拨明细表(store_transfer_order_tail)

  • 表结构要点
    • 明细与单据关联:transfer_order_no 关联主单据,part_no/product_line_no 标识物料与产品线。
    • 出入库定位:out_store_area_no/out_store_bin_no/in_store_area_no/in_store_bin_no 提供精确库存定位。
    • 数量与处理:stock_number(调拨前库存)、transfer_number(计划调拨)、recipient_number(实际接收)、process_status/process_number 支持分批处理与进度跟踪。
    • 追溯字段:add_line 标识是否为新增行,便于后续核对与调整。
  • 业务规则
    • 库存校验:调拨前需检查 stock_number ≥ transfer_number,避免超发。
    • 分批接收:当 recipient_number < transfer_number 时,明细保持未完成状态,等待后续接收。
    • 库位匹配:出库与入库库位需与库存台账一致,防止错位调拨。

章节来源

库存台账(stock_main)

  • 表结构要点
    • 统一定位:以仓库/库区/库位/物料/产品线为维度,形成唯一的库存台账。
    • 数量字段:stock_number(总库存)、in_stock_number(在库库存)、stock_other_number(其他库存)。
  • 业务规则
    • 调拨同步:调拨完成后,出库方减少 in_stock_number,入库方增加 in_stock_number,确保台账平衡。
    • 并发控制:库存更新采用乐观锁或行级锁,避免超卖与重复记账。

章节来源

入库/出库明细(store_in_order_detail、store_out_order_detail)

  • 作用
    • 入库明细:记录入库数量、单价、有效期、序列号/箱号等,支撑库存明细与成本核算。
    • 出库明细:记录出库数量、接收类型、预计归还日期、可用库存等,支撑出库流程与回收管理。
  • 与调拨的关系
    • 调拨入库:调拨明细的 recipient_number 增加对应库存台账的 in_stock_number。
    • 调拨出库:调拨明细的 transfer_number 减少对应库存台账的 in_stock_number。

章节来源

调拨业务流程(顺序图)

图表来源

调拨状态流转(状态图)

图表来源

调拨数据一致性与并发控制(流程图)

图表来源

依赖关系分析

  • 单据与明细
    • store_transfer_orders 与 store_transfer_order_tail 为一对多关系,明细驱动执行与进度。
  • 明细与库存
    • store_transfer_order_tail 与 stock_main 通过仓库/库区/库位/物料/产品线建立关联,确保调拨前后库存平衡。
  • 明细与事务
    • store_transfer_order_tail 的出入库动作分别对应 store_out_order_detail 与 store_in_order_detail 的数据更新,最终沉淀至 store_transaction_record 以供审计与对账。

图表来源

章节来源

性能考虑

  • 索引优化
    • store_transfer_orders:按 transfer_status、audit_status、transfer_order_no 建立复合索引,加速查询与状态筛选。
    • store_transfer_order_tail:按 transfer_order_no、part_no、product_line_no 建立索引,提升明细检索效率。
    • stock_main:按 store_no/store_area_no/store_bin_no/part_no/product_line_no 建立唯一索引,确保库存定位快速准确。
  • 批处理与异步
    • 大批量调拨建议分批执行,避免长事务锁竞争;对非关键路径(如通知、报表)采用异步处理。
  • 缓存策略
    • 常用物料与库位元数据可缓存,降低热点查询压力;注意缓存与数据库的一致性更新策略。

故障排查指南

  • 常见问题
    • 审批状态不符:检查 audit_no/audit_status 字段是否正确更新,确保审批前置条件满足。
    • 库存不足:核对 stock_number 与 transfer_number,确认是否存在并发占用或数据延迟。
    • 明细不一致:对比 store_transfer_order_tail 的 process_number 与 recipient_number,确认是否遗漏入库或出库。
    • 交易记录缺失:检查 store_transaction_record 是否按出入库事件正确写入。
  • 排查步骤
    • 以 transfer_order_no 为主线,关联查询 store_transfer_orders、store_transfer_order_tail、stock_main、store_out_order_detail、store_in_order_detail、store_transaction_record。
    • 核对各环节时间戳与操作人,定位异常发生点。
    • 对照实体类 StoreInOrderDetailDo、StoreOutDetailDo、StockMainDo 的字段映射,确认ORM层数据绑定无误。

章节来源

结论

调拨转移表结构以 store_transfer_orders 与 store_transfer_order_tail 为核心,配合库存台账与出入库明细,构建了完整的“审批-执行-核对-审计”闭环。通过严格的字段设计、状态机与并发控制策略,系统能够在跨仓库、内部转移、紧急调拨等复杂场景下保持数据一致性与业务可控性。建议在生产环境中持续完善索引、缓存与异步化策略,并加强异常监控与回滚机制,以进一步提升稳定性与性能。