Appearance
出入库交易表结构
**本文引用的文件** - [store.sql](file://docs/ddl/store.sql) - [StoreInOrderDetailMapper.java](file://lemes-job-devicemate/lemes-job-devicemate-executor/src/main/java/com/lenovo/lemes/job/devicemate/executor/mapper/store/StoreInOrderDetailMapper.java) - [StoreInOrderDetailMapper.xml](file://lemes-job-devicemate/lemes-job-devicemate-executor/src/main/resources/mapper/StoreInOrderDetailMapper.xml) - [StoreOutOrderDetailMapper.java](file://lemes-job-devicemate/lemes-job-devicemate-executor/src/main/java/com/lenovo/lemes/job/devicemate/executor/mapper/store/StoreOutOrderDetailMapper.java) - [StoreOutOrderDetailMapper.xml](file://lemes-job-devicemate/lemes-job-devicemate-executor/src/main/resources/mapper/StoreOutOrderDetailMapper.xml) - [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) - [StoreOutDetailVo.java](file://lemes-job-devicemate/lemes-job-devicemate-executor/src/main/java/com/lenovo/lemes/job/devicemate/executor/model/store/StoreOutDetailVo.java) - [StockValueStatisticsServiceImpl.java](file://lemes-job-devicemate/lemes-job-devicemate-executor/src/main/java/com/lenovo/lemes/job/devicemate/executor/service/store/impl/StockValueStatisticsServiceImpl.java) - [StockMainServiceImpl.java](file://lemes-job-devicemate/lemes-job-devicemate-executor/src/main/java/com/lenovo/lemes/job/devicemate/executor/service/store/impl/StockMainServiceImpl.java) - [FlowClient.java](file://lemes-cloud/lemes-business-devicemate/lemes-service-dm-workflow/lemes-service-dm-workflow-common/src/main/java/com/lenovo/lemes/service/dm/workflow/client/feign/FlowClient.java) - [NextTaskDTO.java](file://lemes-cloud/lemes-business-devicemate/lemes-service-dm-workflow/lemes-service-dm-workflow-common/src/main/java/com/lenovo/lemes/service/dm/workflow/entity/dto/NextTaskDTO.java) - [TempApproveDTO.java](file://lemes-cloud/lemes-business-devicemate/lemes-service-dm-workflow/lemes-service-dm-workflow-common/src/main/java/com/lenovo/lemes/service/dm/workflow/entity/dto/TempApproveDTO.java)目录
简介
本文件面向出入库交易相关表的数据库架构与业务实现,重点解析以下核心表结构与流程:
- 入库单表 store_in_orders 及其明细 store_in_order_detail
- 出库单表 store_out_orders 及其明细 store_out_order_detail
- 交易流水表 store_transaction_record 的数据记录机制与审计追踪
- 审批流程集成点与状态流转
- 触发器设计思路、数据校验规则与异常处理机制
- 实际业务场景示例与最佳实践建议
项目结构
围绕出入库交易的核心对象与映射关系如下:
- 数据层 DDL 定义于 docs/ddl/store.sql,涵盖出入库单据、明细、流水、库存台账等表
- 作业执行器模块通过 MyBatis 映射访问 store_in_orders/store_out_orders 及其明细
- 仓储服务模块提供库存统计与事务一致性保障
- 工作流模块提供审批流程对接接口
图表来源
- store.sql:2367-2438
- store.sql:2269-2365
- store.sql:2651-2734
- store.sql:2556-2649
- store.sql:2777-2873
- StoreInOrderDetailMapper.java:1-15
- StoreOutOrderDetailMapper.java:1-16
- StockValueStatisticsServiceImpl.java:1-182
- StockMainServiceImpl.java:1-33
- FlowClient.java:35-62
章节来源
- store.sql:2269-2438
- StoreInOrderDetailMapper.java:1-15
- StoreOutOrderDetailMapper.java:1-16
- StockValueStatisticsServiceImpl.java:1-182
- StockMainServiceImpl.java:1-33
- FlowClient.java:35-62
核心组件
- 入库单据与明细
- store_in_orders:单据主表,包含入库类型、仓库、状态、审批信息等
- store_in_order_detail:单据明细,包含物料、库区库位、数量、单价、有效期等
- 出库单据与明细
- store_out_orders:单据主表,包含出库类型、申请人、部门、状态、审批信息等
- store_out_order_detail:单据明细,包含物料、库区库位、出库数量、单价、费用科目等
- 交易流水
- store_transaction_record:统一记录交易类型、数量、金额、来源去向、审批关联等,用于审计追踪
- 库存与统计
- stock_main/stock_detail:库存台账与明细,支撑可用库存、冻结数量、有效期等
- StockValueStatisticsServiceImpl:按日统计在库/在线库存金额与入库金额,确保事务一致性
章节来源
- store.sql:2367-2438
- store.sql:2269-2365
- store.sql:2651-2734
- store.sql:2556-2649
- store.sql:2777-2873
- store.sql:2006-2062
- store.sql:1883-1945
- StockValueStatisticsServiceImpl.java:104-182
架构概览
出入库交易从“单据创建—明细登记—库存更新—流水记录—审批联动—统计汇总”的完整链路如下:
图表来源
- StoreInOrderDetailMapper.java:1-15
- StoreInOrderDetailMapper.xml:1-19
- store.sql:2367-2438
- store.sql:2269-2365
- store.sql:2777-2873
- StockValueStatisticsServiceImpl.java:104-182
- FlowClient.java:35-62
详细组件分析
入库单表 store_in_orders
- 主要字段
- 单据编号:store_in_order_no(唯一约束)
- 入库类型:store_in_type(数据字典)
- 仓库:store_no
- 状态:store_in_status(数据字典)
- 执行人/创建人:excutor/excutor_no/creator_no
- 审批:audit_no/audit_status
- 关联信息:borrow_user/borrow_user_no/borrow_product_line_no/return_order_no
- 业务要点
- 支持与借用/归还单据关联,便于追溯
- 审批状态与业务状态解耦,便于流程集成
- 表结构参考
章节来源
入库明细表 store_in_order_detail
- 主要字段
- 关联单号:store_in_order_no
- 物料:part_no/product_line_no
- 仓库/库区/库位:store_no/store_area_no/store_bin_no
- 数量与金额:store_in_number/unit_price
- 序列号/箱号:series_number/case_number/package_number
- 有效期/寿命数:useful_life/life_time_count
- 申请与来源:apply_number/po_number/pr_number/supplier_no
- 处理状态:process_status/process_number/add_line/part_type
- 业务要点
- 支持序列号/箱号精细化管理
- 与 PO/PR/供应商关联,便于溯源
- 表结构参考
章节来源
出库单表 store_out_orders
- 主要字段
- 单据编号:store_out_order_no(唯一约束)
- 出库类型:store_out_type(数据字典)
- 仓库:store_no
- 状态:store_out_status(数据字典)
- 申请人/部门:applicant_name/applicant_no/product_line_no/applicant_dept_no
- 申请与出库时间:apply_time/store_out_time
- 总数量:apply_total_number/store_out_total_number
- 审批:audit_no/audit_status
- 个人申请单号:personal_application_order_no
- 业务要点
- 支持个人借用/领用/调拨等多类型出库
- 与审批流程强关联,支持撤销与状态回退
- 表结构参考
章节来源
出库明细表 store_out_order_detail
- 主要字段
- 关联单号:store_out_order_no
- 物料:part_no/product_line_no
- 仓库/库区/库位:store_no/store_area_no/store_bin_no
- 出库数量与单价:store_out_number/unit_price
- 领用类型/归还日期:recipient_type/return_date
- 费用科目/库存:cost_account/stock_number
- 处理状态:process_status/process_number/add_line
- 实际可用库存:practical_usable_stock_number
- 业务要点
- 领用类型区分“借用/领用/内部调拨”等
- 实际可用库存用于风控与提示
- 表结构参考
章节来源
交易流水表 store_transaction_record
- 主要字段
- 关联业务单号:order_no
- 事务类型:transaction_type(入库/出库/调拨/报废等)
- 来源/去向:from_store_no/from_store_area_no/from_store_bin_no
- 去向:to_store_no/to_store_area_no/to_store_bin_no
- 数量/单价/总价:transaction_number/price/total_price
- 人员与审批:start_user/start_user_no/start_user_manager/audit_no/audit_status
- 关联单据:po_number/pr_number/borrow_product_line_no
- 业务要点
- 统一审计入口,支持跨单据追踪
- 与审批流程绑定,便于合规审计
- 表结构参考
章节来源
审批流程集成
- 接口能力
- 审批:approveProcess
- 获取审批节点:getBusinessAuditNodes
- 撤销流程:cancelProcess
- 参数模型
- NextTaskDTO:活动ID、替换审批人、部门ID等
- TempApproveDTO:审批意见、审批结果、多级审批标记等
- 业务要点
- 入库/出库单据可选择性接入审批流程
- 审批状态与单据状态解耦,避免阻塞业务
章节来源
数据访问与查询
- 入库明细查询(MyBatis)
- 通过 StoreInOrderDetailMapper.searchList 聚合入库单与明细,筛选指定类型与状态并限定时间范围
- 出库明细查询(MyBatis)
- 通过 StoreOutOrderDetailMapper.findList 聚合出库单与明细,过滤非个人类型、数量大于0、状态为“已执行”且限定时间范围
- 对象模型
- StoreInOrdersVo/StoreOutDetailVo:封装查询结果与扩展字段(如仓库/库区/库位名称、物料规格、控制类型等)
章节来源
- StoreInOrderDetailMapper.java:1-15
- StoreInOrderDetailMapper.xml:1-19
- StoreOutOrderDetailMapper.java:1-16
- StoreOutOrderDetailMapper.xml:1-19
- StoreInOrdersVo.java:1-195
- StoreOutDetailVo.java:1-115
事务一致性与统计
- 统一事务注解
- @DSTransactional:确保库存统计与交易记录在同一个事务中完成
- 统计维度
- 在库/在线库存金额:基于 stock_main 与单价计算
- 入库金额:基于 store_in_orders 明细单价与数量计算
- 统计实现
- StockValueStatisticsServiceImpl:按日聚合生成统计记录
章节来源
触发器设计与数据校验
- 设计思路
- 入库/出库完成后,自动写入 store_transaction_record,确保交易可追溯
- 校验逻辑建议在应用层进行(如可用库存检查、序列号唯一性、有效期校验),必要时可在数据库层增加约束或触发器
- 异常处理
- 使用 @DSTransactional 确保失败回滚
- 审批流程异常时,单据状态与审批状态保持一致,避免脏数据
章节来源
依赖关系分析
图表来源
- StoreInOrderDetailDo.java:1-88
- StoreOutDetailDo.java:1-62
- StoreInOrdersVo.java:1-195
- StoreOutDetailVo.java:1-115
- StoreInOrderDetailMapper.java:1-15
- StoreOutOrderDetailMapper.java:1-16
章节来源
- StoreInOrderDetailDo.java:1-88
- StoreOutDetailDo.java:1-62
- StoreInOrdersVo.java:1-195
- StoreOutDetailVo.java:1-115
- StoreInOrderDetailMapper.java:1-15
- StoreOutOrderDetailMapper.java:1-16
性能考虑
- 查询优化
- 入库/出库明细查询通过限定时间范围与状态,减少扫描量
- 建议在 store_in_orders/store_out_orders 上建立索引以加速状态与类型过滤
- 事务优化
- 统一事务注解确保批量统计与写入的一致性,避免中间态
- 存储优化
- 交易流水按日聚合统计,避免高频写入对明细表造成压力
故障排查指南
- 常见问题
- 审批状态不同步:检查 FlowClient 接口调用与单据状态字段映射
- 统计金额不准确:核对 StockValueStatisticsServiceImpl 的单价与数量来源
- 出库可用库存不足:检查 practical_usable_stock_number 与库存明细冻结数量
- 排查步骤
- 核对 store_transaction_record 是否正确生成
- 核对 store_in_order_detail/store_out_order_detail 的数量与单价
- 核对 stock_main/stock_detail 的库存变化是否符合预期
章节来源
结论
本文档系统梳理了出入库交易相关表的结构与业务实现,明确了单据主表与明细表的职责边界、交易流水的审计机制、审批流程的集成方式以及事务一致性保障策略。通过统一的查询与统计机制,能够有效支撑业务运营与合规审计。
附录
- 业务场景示例
- 入库场景:采购到货 → 入库单创建 → 明细登记 → 交易流水生成 → 库存更新 → 审批(可选)→ 统计汇总
- 出库场景:个人借用/领用 → 出库单创建 → 明细登记 → 交易流水生成 → 库存更新 → 审批(可选)→ 统计汇总
- 最佳实践
- 明确入库/出库类型与状态字典,确保业务语义清晰
- 严格校验序列号/箱号与有效期,避免库存错配
- 审批流程与单据状态分离,提升系统韧性
- 交易流水作为审计底账,必须与业务单据强关联