Skip to content

库存管理表结构

**本文引用的文件** - [store.sql](file://docs/ddl/store.sql) - [device.sql](file://docs/ddl/device.sql) - [StockMainDo.java](file://lemes-cloud/lemes-business-devicemate/lemes-service-dm-store/lemes-service-dm-store-common/src/main/java/com/lenovo/lemes/service/dm/store/entity/StockMainDo.java) - [StockDetailDo.java](file://lemes-cloud/lemes-business-devicemate/lemes-service-dm-store/lemes-service-dm-store-common/src/main/java/com/lenovo/lemes/service/dm/store/entity/StockDetailDo.java) - [SafeStockDo.java](file://lemes-cloud/lemes-business-devicemate/lemes-service-dm-store/lemes-service-dm-store-common/src/main/java/com/lenovo/lemes/service/dm/store/entity/SafeStockDo.java) - [StoreMainDo.java](file://lemes-cloud/lemes-business-devicemate/lemes-service-dm-store/lemes-service-dm-store-common/src/main/java/com/lenovo/lemes/service/dm/store/entity/StoreMainDo.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) - [StockValueStatisticsServiceImpl.java](file://lemes-job-devicemate/lemes-job-devicemate-executor/src/main/java/com/lenovo/lemes/job/devicemate/executor/service/store/impl/StockValueStatisticsServiceImpl.java) - [StockMainMapper.xml](file://lemes-job-devicemate/lemes-job-devicemate-executor/src/main/resources/mapper/StockMainMapper.xml) - [StockMainVo.java](file://lemes-job-devicemate/lemes-job-devicemate-executor/src/main/java/com/lenovo/lemes/job/devicemate/executor/model/store/StockMainVo.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) - [StoreOutDetailDo.java](file://lemes-job-devicemate/lemes-job-devicemate-executor/src/main/java/com/lenovo/lemes/job/devicemate/executor/model/store/StoreOutDetailDo.java)

目录

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

简介

本文件面向库存管理相关表的数据库架构,围绕库存主表(stock_main)与库存明细表(stock_detail)展开,系统性说明以下内容:

  • 库存主表的核心字段设计:库存总量、在库库存、其他来源库存等
  • 库存明细表的批次管理、序列号跟踪、有效期控制、冻结数量等机制
  • 库存计算逻辑、并发控制策略、事务处理流程
  • 库存状态管理、安全库存设置、库存调整机制等业务规则
  • 库存查询优化、索引设计建议与性能调优方案
  • 典型业务场景:库存盘点、移库操作、损耗处理的数据处理流程

项目结构

本项目的库存相关DDL定义位于docs/ddl目录,库存实体模型位于lemes-cloud与lemes-job-devicemate两个模块中,分别对应后端服务层与作业执行器层。

图表来源

章节来源

核心组件

本节聚焦库存主表与明细表的字段设计与职责边界,并结合业务实体类进行说明。

  • 库存主表(stock_main)
    • 字段要点:台账代号、仓库/库区/库位/物料/产品线维度、库存总量、在库库存、其他来源库存等
    • 作用:聚合各库位/库区/仓库的库存汇总,支撑库存查询与统计
  • 库存明细表(stock_detail)
    • 字段要点:台账代号、序列号、箱号、包装数量、剩余库存数量、单价、有效期、剩余寿命数、入库时间、冻结数量、是否在库标识、工厂代号等
    • 作用:承载批次、序列号、有效期、冻结等细粒度库存信息,支持先进先出、序列号追踪、冻结解冻等业务

章节来源

架构总览

库存管理涉及三层:DDL定义层(表结构)、实体模型层(服务/执行器)、业务服务层(统计/事务)。

图表来源

详细组件分析

库存主表(stock_main)字段设计与业务含义

  • 关键字段
    • 台账代号(mainNo):唯一标识一个库存台账
    • 仓库/库区/库位(storeNo/storeAreaNo/storeBinNo):物理定位
    • 物料(partNo)与产品线(productLineNo):业务维度
    • 库存总量(stockNumber):该台账下总库存数量
    • 在库库存(inStockNumber):当前可发料/可用库存
    • 其他来源库存(stockOtherNumber):如LSSC等外部来源库存
  • 设计意图
    • 聚合维度明确,便于按仓库/库区/库位/物料/产品线进行库存汇总
    • 与明细表通过台账代号关联,保证主细一致性

章节来源

库存明细表(stock_detail)字段设计与业务机制

  • 关键字段
    • 台账代号(mainNo):与stock_main关联
    • 序列号(seriesNumber):序列号管理
    • 箱号(caseNumber):包装层级管理
    • 包装数量(packageNumber):单箱数量
    • 剩余库存数量(inStockNumber):该明细的可用数量
    • 单价(unitPrice):成本核算
    • 有效期(usefulLife)与剩余寿命数(lifeTimeCount):寿命件/有效期件控制
    • 入库时间(storeInTime):先进先出依据
    • 冻结数量(blockedNumber):冻结/解冻控制
    • 是否在库(isStore):物理在库状态
    • 工厂代号(factoryNo):多工厂隔离
  • 业务机制
    • 批次管理:通过箱号/序列号/有效期/入库时间实现批次追踪
    • 序列号跟踪:序列号唯一性与发放/回收闭环
    • 有效期控制:结合usefulLife与lifeTimeCount进行临期/过期预警与处置
    • 冻结数量:用于借出/报损/盘点等场景的临时占用

章节来源

安全库存与仓库主数据

  • 安全库存表(safe_stock)
    • 字段:仓库代号(storeNo)、物料代号(partNo)、最高库存(maxStock)、最低库存(minStock)、安全库存(safeStock)
    • 用途:支撑库存预警与补货策略
  • 仓库主数据表(store_main)
    • 字段:仓库代号/编码/名称、所属部门、仓库类型、管理员、位置、有效性等
    • 用途:仓库维度的基础资料与权限控制

章节来源

库存计算逻辑与事务处理

  • 计算逻辑
    • stock_main的stockNumber通常由stock_detail的inStockNumber按台账聚合得出
    • 在库库存(inStockNumber)与冻结数量(blockedNumber)共同决定实际可用数
    • 对于寿命件/有效期件,需结合lifeTimeCount/usefulLife进行临期/过期判定
  • 并发控制与事务
    • 服务层使用注解驱动的分布式事务(DSTransactional),确保库存增删改的原子性
    • 通过Mapper XML中的查询条件与聚合逻辑,避免脏读与幻读
  • 事务处理流程(示例:库存统计)
    • 从stock_main查询当日数据
    • 计算在库/在线库存金额
    • 写入库存价值统计表

图表来源

章节来源

典型业务场景数据流

库存盘点

  • 数据来源:stock_detail按台账/库位/序列号/箱号进行盘点
  • 判定逻辑:结合usefulLife/lifeTimeCount判断临期/过期;blockedNumber用于排除冻结
  • 结果更新:根据盘点差异更新stock_main与stock_detail的inStockNumber

图表来源

移库操作

  • 数据来源:源库位stock_detail减少,目标库位stock_detail增加
  • 关键点:保持序列号/箱号/有效期不变,仅变更库位字段
  • 事务:使用DSTransactional保证源减目增的原子性

图表来源

损耗处理

  • 触发条件:报损单据(part_scrap_orders/part_scrap_order_detail)产生
  • 处理方式:减少stock_detail的inStockNumber,必要时同步stock_main
  • 成本核算:结合unitPrice计算损耗金额

章节来源

依赖关系分析

  • 表间依赖
    • stock_main与stock_detail:一对多,通过mainNo关联
    • safe_stock与stock_main:按仓库/物料维度进行安全库存匹配
    • store_main与stock_main:按仓库维度进行仓库级统计
  • 实体与服务依赖
    • StockMainDo/StockDetailDo作为MyBatis实体映射stock_*表
    • StockMainServiceImpl负责stock_main的聚合与事务
    • StockValueStatisticsServiceImpl负责库存金额统计与安全库存对比

图表来源

章节来源

性能考虑

  • 索引设计建议
    • stock_main:按仓库/库区/库位/物料/产品线建立组合索引,加速分组与聚合
    • stock_detail:按mainNo、序列号、箱号、有效期、入库时间建立索引,支撑FIFO与批次查询
    • safe_stock:按storeNo+partNo建立唯一索引,避免重复配置
    • store_main:按storeNo建立主键索引,保障仓库维度查询
  • 查询优化
    • 使用Mapper XML中的聚合查询替代应用侧聚合,降低网络与内存开销
    • 对高频查询字段建立覆盖索引,减少回表
  • 事务与并发
    • 使用DSTransactional确保库存变更的原子性
    • 对热点库存采用乐观锁或行级锁策略,避免超卖
  • 统计与归档
    • 定期将历史明细归档至冷存储,降低热表扫描压力
    • 分页查询与延迟加载,避免一次性拉取大量明细

[本节为通用性能指导,不直接分析具体文件]

故障排查指南

  • 常见问题
    • 库存不一致:检查stock_main与stock_detail的聚合逻辑是否正确,确认事务是否提交
    • 冻结库存无法使用:核查blockedNumber与isStore字段状态
    • 有效期/寿命件异常:核对usefulLife与lifeTimeCount的更新时机
  • 排查步骤
    • 核对stock_detail的inStockNumber与blockedNumber之和是否等于packageNumber
    • 校验stock_main的stockNumber是否与明细按台账求和一致
    • 检查Mapper XML中的聚合条件与时间范围
  • 相关实现参考
    • 统一使用DSTransactional注解的事务服务
    • 通过StockMainMapper.xml的SQL进行批量统计与校验

章节来源

结论

本文基于DDL与实体模型,系统梳理了库存主表与明细表的字段设计、业务机制与服务实现,给出了并发控制、事务处理、查询优化与典型业务场景的数据流。建议在生产环境中:

  • 明确批次/序列号/有效期的业务规则并严格执行
  • 建立完善的索引与监控体系,保障查询与统计性能
  • 强化事务与一致性校验,定期进行库存对账与差异分析

[本节为总结性内容,不直接分析具体文件]

附录

  • 关键实体与表的对应关系
    • StockMainDo → stock_main
    • StockDetailDo → stock_detail
    • SafeStockDo → safe_stock
    • StoreMainDo → store_main
  • 关键查询与统计
    • stock_main按日聚合查询:参见StockMainMapper.xml
    • 库存金额统计:参见StockValueStatisticsServiceImpl

章节来源