Appearance
仓储管理API
**本文引用的文件** - [StockMainApi.java](file://lemes-cloud/lemes-business-devicemate/lemes-service-dm-common/lemes-service-dm-common-common/src/main/java/com/lenovo/lemes/service/dm/common/client/api/StockMainApi.java) - [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) - [StockMainVo.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/vo/StockMainVo.java) - [StoreInOrderDetailDo.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/StoreInOrderDetailDo.java) - [StoreOutDetailDo.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/StoreOutDetailDo.java) - [StoreTransferOrdersDo.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/StoreTransferOrdersDo.java) - [StoreTransferOrderTailDo.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/StoreTransferOrderTailDo.java) - [StoreAndStockNumberVo.java](file://lemes-cloud/lemes-business-devicemate/lemes-service-dm-common/lemes-service-dm-common-common/src/main/java/com/lenovo/lemes/service/dm/common/client/api/modal/StoreAndStockNumberVo.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) - [StockMainDo.java](file://lemes-job-devicemate/lemes-job-devicemate-executor/src/main/java/com/lenovo/lemes/job/devicemate/executor/model/store/StockMainDo.java)目录
简介
本文件为仓储管理API的标准化接口文档,覆盖库存主数据管理、库存查询、库存调整、物料入库、物料出库、库存盘点、调拨转移等核心仓储功能。文档面向仓储管理系统与供应链集成场景,提供请求参数定义、响应数据结构、业务规则说明、调用示例与错误处理建议,帮助开发者快速对接与集成。
项目结构
仓储管理能力由微服务分层组织:
- 接口层:通过公共模块暴露REST接口,供前端与外部系统调用
- 服务实现层:在store-server中实现具体业务逻辑
- 数据模型层:统一的实体与视图对象,支撑查询与展示
- 作业调度层:定时任务统计库存金额等指标
图表来源
- StockMainApi.java:1-45
- StockMainServiceImpl.java:1-33
- StockValueStatisticsServiceImpl.java:104-132
- StockMainDo.java:1-64
- StockMainVo.java:1-274
- StoreInOrderDetailDo.java:1-130
- StoreOutDetailDo.java:1-200
- StoreTransferOrdersDo.java:1-200
- StoreTransferOrderTailDo.java:1-200
章节来源
- StockMainApi.java:1-45
- StockMainDo.java:1-64
- StockMainVo.java:1-274
- StoreInOrderDetailDo.java:1-130
- StoreOutDetailDo.java:1-200
- StoreTransferOrdersDo.java:1-200
- StoreTransferOrderTailDo.java:1-200
核心组件
- 库存查询接口:提供按物料与仓库维度的库存查询能力,支持按仓库名称或仓库编号查询
- 库存主数据模型:包含台账、仓库、库区、库位、物料、产品线、数量、单价、有效期等字段
- 入库/出库/调拨实体:承载入库单明细、出库单明细、调拨主单与明细的数据结构
- 作业统计:定时统计在线库存金额等指标,辅助运营分析
章节来源
- StockMainApi.java:1-45
- StockMainDo.java:1-64
- StockMainVo.java:1-274
- StoreInOrderDetailDo.java:1-130
- StoreOutDetailDo.java:1-200
- StoreTransferOrdersDo.java:1-200
- StoreTransferOrderTailDo.java:1-200
- StockValueStatisticsServiceImpl.java:104-132
架构总览
仓储管理API采用“接口层 + 服务实现层 + 数据模型层”的分层架构,接口层通过Feign客户端向store-server发起调用;服务实现层负责业务逻辑与数据聚合;数据模型层提供统一的实体与视图对象。
图表来源
详细组件分析
库存查询接口
接口名称:按物料查询可用仓库与库存数量
请求方式:GET
路径:/store/number/list
参数:
- partNo:物料编号(必填)
响应:ResultData<List<StoreAndStockNumberVo>>
业务规则:
- 返回该物料在所有仓库的可用库存数量
- 结果按仓库维度聚合,便于前端选择
接口名称:按物料+仓库名称查询库存
请求方式:GET
路径:/store/number
参数:
- partNo:物料编号(必填)
- storeName:仓库名称(必填)
响应:ResultData<StoreAndStockNumberVo>
业务规则:
- 精确匹配仓库名称,返回该仓库的库存详情
接口名称:按物料+仓库编号查询库存
请求方式:GET
路径:/store/number/no
参数:
- partNo:物料编号(必填)
- storeNo:仓库编号(必填)
响应:ResultData<StoreAndStockNumberVo>
业务规则:
- 精确匹配仓库编号,返回该仓库的库存详情
章节来源
库存主数据模型
- 实体:StockMainDo
- 字段要点:台账代号、仓库/库区/库位代号、物料代号、产品线代号、总库存、在库库存、其他库存等
- 视图:StockMainVo
- 字段要点:仓库/库区/库位编码与名称、物料编码/名称/规格/分类、单位、序列号/箱号、包装数量、单价、有效期、冻结数量、在线库存、安全库存等
图表来源
章节来源
入库操作
- 实体:StoreInOrderDetailDo
- 关键字段:入库单号、仓库代号、物料代号、产品线代号、库区/库位代号、序列号/箱号、包装数量、入库数量、单价、寿命数/有效期、PO/PR单号、借用单号、处理状态/数量、是否好品/坏品、供应商代号等
- 业务规则:
- 入库时需校验物料与仓库匹配性
- 支持按序列号/箱号精细化管理
- 记录供应商与采购来源,便于追溯
章节来源
出库操作
- 实体:StoreOutDetailDo
- 关键字段:出库单号、仓库/库区/库位代号、物料代号、产品线代号、序列号/箱号、出库数量、单价、有效期、借用单号、处理状态/数量、是否好品/坏品等
- 业务规则:
- 出库需确保在库数量充足且未被冻结
- 支持按序列号/箱号追踪出库去向
- 记录借用归还与处理状态
章节来源
调拨转移
- 主单:StoreTransferOrdersDo
- 关键字段:调拨单号、源仓库/库区/库位、目标仓库/库区/库位、产品线代号、状态等
- 明细:StoreTransferOrderTailDo
- 关键字段:调拨单号、物料代号、序列号/箱号、调拨数量、单价、有效期、处理状态等
- 业务规则:
- 调拨需在同一产品线下进行
- 支持序列号级调拨,保证可追溯性
- 调拨完成后更新源/目标库位的库存
章节来源
库存盘点与统计
- 作业:StockValueStatisticsServiceImpl
- 功能:按日统计在线库存与在库库存金额,生成库存价值报表
- 输入:库存主数据(含单价与在线数量)
- 输出:按仓库/产线维度的库存金额统计
- 业务规则:
- 以当日库存为基础,计算在线库存金额
- 若单价为空,默认金额为0
- 支持定时任务执行,保障数据时效性
图表来源
章节来源
依赖分析
- 接口层依赖服务实现层提供的查询能力
- 服务实现层依赖数据模型层的实体与视图
- 作业统计层依赖库存主数据服务与实体映射
- 入/出/调拨实体与库存台账实体存在一对多关系,用于明细追踪
图表来源
- StockMainApi.java:1-45
- StockMainServiceImpl.java:1-33
- StockValueStatisticsServiceImpl.java:104-132
- StockMainDo.java:1-64
- StoreInOrderDetailDo.java:1-130
- StoreOutDetailDo.java:1-200
- StoreTransferOrdersDo.java:1-200
- StoreTransferOrderTailDo.java:1-200
章节来源
- StockMainApi.java:1-45
- StockMainServiceImpl.java:1-33
- StockValueStatisticsServiceImpl.java:104-132
- StockMainDo.java:1-64
- StoreInOrderDetailDo.java:1-130
- StoreOutDetailDo.java:1-200
- StoreTransferOrdersDo.java:1-200
- StoreTransferOrderTailDo.java:1-200
性能考虑
- 分页与过滤:库存查询建议结合仓库/库位/物料等维度进行过滤,避免全表扫描
- 缓存策略:高频查询可引入缓存(如Redis),降低数据库压力
- 批量操作:入库/出库/调拨建议批量提交,减少事务开销
- 统计任务:库存金额统计建议定时执行,避免实时计算带来的性能影响
故障排查指南
- 常见错误类型:
- 参数缺失:如partNo、storeName/storeNo为空
- 数据不一致:库存数量不足、冻结数量冲突
- 实体字段非法:序列号/箱号格式不符、单价为空但参与计算
- 排查步骤:
- 校验请求参数与必填项
- 检查库存台账与明细是否存在
- 核对单价与有效期字段是否为空
- 查看作业统计任务执行日志,确认统计结果是否正确
- 建议:
- 对外接口增加参数校验与异常捕获
- 提供幂等性保障,避免重复入库/出库
- 记录关键操作日志,便于审计与回溯
结论
本文档提供了仓储管理API的完整接口规范,涵盖库存查询、入库、出库、调拨与统计等核心功能。通过统一的数据模型与清晰的业务规则,可有效支撑仓储系统与供应链集成,提升系统稳定性与可维护性。
附录
- 调用示例(路径参考):
- 查询物料可用仓库与库存:GET /store/number/list?partNo=xxx
- 按仓库名称查询库存:GET /store/number?partNo=xxx&storeName=仓库名称
- 按仓库编号查询库存:GET /store/number/no?partNo=xxx&storeNo=仓库编号
- 错误码约定(示例):
- 400:参数校验失败
- 404:未找到库存或单据
- 500:服务内部异常
- 参考实现位置: