Appearance
库存主数据管理
**本文引用的文件** - [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) - [StockValueStatisticsDo.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/StockValueStatisticsDo.java) - [StockCheckDetailDo.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/StockCheckDetailDo.java) - [StockCheckOrdersDo.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/StockCheckOrdersDo.java) - [StockMainMapper.java](file://lemes-job-devicemate/lemes-job-devicemate-executor/src/main/java/com/lenovo/lemes/job/devicemate/executor/mapper/store/StockMainMapper.java) - [StockMainService.java](file://lemes-job-devicemate/lemes-job-devicemate-executor/src/main/java/com/lenovo/lemes/job/devicemate/executor/service/store/StockMainService.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) - [StoreInOrderDetailDo.java](file://lemes-job-devicemate/lemes-job-devicemate-executor/src/main/java/com/lenovo/lemes/job/devicemate/executor/model/store/StoreInOrderDetailDo.java) - [StoreOutDetailVo.java](file://lemes-job-devicemate/lemes-job-devicemate-executor/src/main/java/com/lenovo/lemes/job/devicemate/executor/model/store/StoreOutDetailVo.java) - [StoreMainVo.java](file://lemes-job-devicemate/lemes-job-devicemate-executor/src/main/java/com/lenovo/lemes/job/devicemate/executor/model/store/StoreMainVo.java) - [StockMainVo.java](file://lemes-job-devicemate/lemes-job-devicemate-executor/src/main/java/com/lenovo/lemes/job/devicemate/executor/model/store/StockMainVo.java)目录
引言
本技术文档围绕库存主数据管理模块展开,系统性阐述库存实体与明细模型的设计原理、库存查询与统计机制、安全库存管理策略,以及与入出库流程、调拨转移等模块的关联关系。文档以“库存主数据”为核心,结合仓库维度(仓库、库区、库位)、物料维度(物料、产品线)与批次/有效期维度,给出可操作的最佳实践与接口使用指引。
项目结构
库存主数据管理涉及两类代码域:
- 领域模型与服务:位于 lemes-cloud 的 store-common 模块,定义库存主表、明细表、安全库存、价值统计、盘点相关实体。
- 作业执行与统计:位于 lemes-job-devicemate 的 executor 模块,提供按日聚合的库存查询、价值统计作业等。
图表来源
- StockMainDo.java:1-64
- StockDetailDo.java:1-75
- SafeStockDo.java:1-43
- StockValueStatisticsDo.java:1-54
- StockCheckDetailDo.java:1-85
- StockCheckOrdersDo.java:1-65
- StockMainService.java:1-13
- StockMainMapper.java:1-16
- StockValueStatisticsServiceImpl.java:104-382
- StoreInOrderDetailDo.java:1-88
- StoreOutDetailVo.java:80-115
- StoreMainVo.java:1-135
- StockMainVo.java:1-89
章节来源
核心组件
- 库存主数据 StockMainDo:描述某仓库/库区/库位下某物料/产品线的总库存、在库库存、其他库存(如LSSC)等聚合值。
- 库存明细 StockDetailDo:承载批次(序列号/箱号)、包装数量、单价、有效期、剩余寿命、入库时间、冻结数量、在库标识等细粒度信息。
- 安全库存 SafeStockDo:定义某仓库-物料的安全上下限与最高库存,用于库存预警与优化建议。
- 库存价值统计 StockValueStatisticsDo:按仓库/产品线/统计日期/金额类型存储库存金额统计结果。
- 盘点相关:StockCheckOrdersDo(盘点单)、StockCheckDetailDo(盘点明细),支撑库存准确性校验与差异处理。
章节来源
- StockMainDo.java:1-64
- StockDetailDo.java:1-75
- SafeStockDo.java:1-43
- StockValueStatisticsDo.java:1-54
- StockCheckDetailDo.java:1-85
- StockCheckOrdersDo.java:1-65
架构总览
库存主数据管理采用“领域模型 + 作业执行”的分层架构:
- 领域模型层:定义库存主数据、明细、安全库存、统计与盘点实体,确保数据一致性与可扩展性。
- 作业执行层:通过按日聚合查询与价值统计作业,驱动库存报表与预警分析;同时与入出库明细联动,计算在库/在线库存金额。
图表来源
详细组件分析
数据模型与字段定义
- 库存主数据 StockMainDo
- 关键字段:台账代号、仓库/库区/库位代号、物料代号、产品线代号、库存总数量、在库库存、其他库存。
- 业务含义:作为库存聚合的主键维度,支持按仓库/库区/库位/物料/产品线多维查询与统计。
- 库存明细 StockDetailDo
- 关键字段:台账代号、序列号、箱号、包装数量、剩余库存、单价、有效期、剩余寿命、入库时间、冻结数量、在库标识。
- 业务含义:支撑批次管理、有效期控制、冻结库存与成本核算。
- 安全库存 SafeStockDo
- 关键字段:仓库代号、物料代号、最高库存、最低库存、安全库存。
- 业务含义:为库存优化与预警提供阈值依据。
- 库存价值统计 StockValueStatisticsDo
- 关键字段:仓库代号、产品线代号、统计日期、统计金额、金额类型(在线/在库/入库/出库)。
- 业务含义:形成库存金额的时序化报表,辅助财务与运营分析。
- 盘点相关
- StockCheckOrdersDo:盘点单号、仓库、责任人、盘点时间、状态、审批信息。
- StockCheckDetailDo:物料、库区/库位、序列号/箱号、包装数量、库存数量、盘点数量、结果、备注等。
图表来源
- StockMainDo.java:1-64
- StockDetailDo.java:1-75
- SafeStockDo.java:1-43
- StockValueStatisticsDo.java:1-54
- StockCheckOrdersDo.java:1-65
- StockCheckDetailDo.java:1-85
章节来源
- StockMainDo.java:1-64
- StockDetailDo.java:1-75
- SafeStockDo.java:1-43
- StockValueStatisticsDo.java:1-54
- StockCheckDetailDo.java:1-85
- StockCheckOrdersDo.java:1-65
库存查询与统计机制
- 按日查询
- 接口:StockMainService.queryListByDay 返回库存聚合视图。
- 实现:StockMainMapper.searchListByDay 提供按日聚合SQL。
- 价值统计作业
- 触发:StockValueStatisticsServiceImpl.stockCountList 按日汇总在线/在库库存金额。
- 输入:当日库存聚合(来自 queryListByDay)。
- 输出:按仓库/产品线/日期/金额类型的统计记录。
图表来源
章节来源
安全库存管理
- 设计要点
- SafeStockDo 提供仓库-物料维度的安全上下限与最高库存,用于库存健康度评估与预警。
- 价值统计作业中存在安全库存相关逻辑(注释片段),可用于生成安全库存不足的预警清单或颜色标记。
- 使用建议
- 基于 SafeStockDo 的阈值,对在库可用库存进行分级(如低于最小库存、低于安全库存、高于最高库存等)。
- 结合入库/出库明细,动态更新在库可用库存与有效期,确保预警准确。
章节来源
批次管理与有效期控制
- 批次与有效期
- StockDetailDo 提供序列号、箱号、有效期、剩余寿命、入库时间等字段,支撑批次追踪与效期管理。
- StoreInOrderDetailDo 与 StoreOutDetailVo 含有有效期、入库时间、可用库存等字段,便于出入库场景下的效期控制。
- 实施建议
- 入库时写入有效期与剩余寿命;出库时按“先进先出”原则匹配批次。
- 对接近有效期的库存进行预警与优先出库策略。
章节来源
与入出库流程的关联
- 入库流程
- StoreInOrderDetailDo 描述入库单明细,包含仓库/库区/库位、序列号/箱号、包装数量、入库数量、单价、有效期等。
- 出库流程
- StoreOutDetailVo 提供出库明细视图,含规格、单位、ABC分类、控制类型、最大寿命、入库时间、实际可用库存等,支撑出库拣货与效期校验。
- 与库存主数据的关系
- 入出库明细通过仓库/库区/库位/物料/产品线维度与 StockMainDo 聚合,形成实时在库/在线库存。
- 价值统计基于入出库单价与数量,计算库存金额。
图表来源
- StoreInOrderDetailDo.java:1-88
- StoreOutDetailVo.java:80-115
- StockMainDo.java:1-64
- StockDetailDo.java:1-75
依赖分析
- 组件耦合
- StockMainService 依赖 StockMainMapper 进行按日查询。
- StockValueStatisticsServiceImpl 依赖 StockMainService 获取库存聚合,并依赖入库/出库明细进行金额统计。
- 入出库明细与库存明细/主数据形成强关联,保证库存数据的准确性与时效性。
- 外部依赖
- MyBatis-Plus 注解(@TableName、@DS)用于数据库映射与数据源切换。
- Lombok 注解(@Data、@Builder、@Accessors)简化实体定义。
图表来源
- StockMainService.java:1-13
- StockMainMapper.java:1-16
- StockValueStatisticsServiceImpl.java:104-382
- StoreInOrderDetailDo.java:1-88
- StoreOutDetailVo.java:80-115
- StockMainDo.java:1-64
- StockDetailDo.java:1-75
章节来源
性能考虑
- 查询优化
- 按日聚合查询应建立合适的索引(仓库/库区/库位/物料/产品线组合),减少全表扫描。
- 分页与缓存:对高频查询结果进行缓存,降低数据库压力。
- 统计作业
- 批处理与事务:价值统计作业应使用批处理与事务控制,避免长时间锁表。
- 并行化:对不同仓库/产品线的统计任务进行并行化拆分,提升吞吐。
- 批次与效期
- 对接近有效期的库存进行预筛选,减少无效扫描。
- 入库/出库时尽量批量提交,降低事务开销。
故障排查指南
- 常见问题
- 库存金额统计为零:检查当日库存聚合是否为空,确认单价与数量字段是否缺失。
- 安全库存预警不生效:核对 SafeStockDo 中的阈值配置,确认统计作业中的阈值比较逻辑。
- 入出库后库存不一致:核查入出库明细与库存主数据/明细的维度一致性(仓库/库区/库位/物料/产品线)。
- 排查步骤
- 核对 StockMainMapper 的按日查询SQL与数据库索引。
- 检查 StockValueStatisticsServiceImpl 的统计逻辑与事务边界。
- 对照 StoreInOrderDetailDo 与 StoreOutDetailVo 的字段映射,确保效期与可用库存正确。
章节来源
- StockMainMapper.java:1-16
- StockValueStatisticsServiceImpl.java:104-382
- StoreInOrderDetailDo.java:1-88
- StoreOutDetailVo.java:80-115
结论
库存主数据管理模块通过清晰的实体模型与按日统计作业,实现了从库存聚合到价值统计的完整闭环。结合安全库存与批次/有效期管理,能够有效支撑库存优化与风险控制。建议在生产环境中完善索引、缓存与并行化策略,持续监控统计作业的稳定性与准确性。
附录
- 最佳实践清单
- 严格维护仓库/库区/库位/物料/产品线维度的一致性。
- 入库即录入序列号/箱号/有效期,确保批次可追溯。
- 定期校准安全库存阈值,结合历史消耗与供应周期设定。
- 对接近有效期的库存设置预警与优先出库策略。
- 价值统计作业采用批处理与事务控制,保障数据一致性。
- 关键接口与路径参考