仓库、库区、库位到底怎么建模?位置体系和货位管理怎么设计才不乱
这篇直接按仓库、库区、库位建模来拆,不只讲层级结构,而是把位置体系和业务操作如何真正关联讲具体。
目标是你看完后,能把位置体系从基础字典,升级成真正服务收货、上架、拣货和盘点的模型。
🦅个人主页
🐼GitHub主页
文章目录
- 仓库、库区、库位到底怎么建模?位置体系和货位管理怎么设计才不乱
- 先看真实业务:为什么这块在仓储里总是容易出事
- 真实业务场景我会怎么抽象
- 举个具体例子:放到项目里会怎么跑
- 代码示例:为入库任务推荐库位
- 核心数据模型我会怎么定
- 系统设计我会优先拆哪几块
- 位置主数据层
- 容量和属性层
- 作业关联层
- 策略层
- 跨系统协同时哪些边界最重要
- 监控和审计建议怎么做
- 高频坑位复盘
- 1. 先不做位置维度,后面再补
- 2. 位置只有层级,没有属性
- 面试里我会怎么答
- 结语
先看真实业务:为什么这块在仓储里总是容易出事
很多仓储项目前期不做位置体系,后面一加库位就会发现所有单据和库存模型都要跟着补课。
- 同一 SKU 可能分散在多个库位
- 不同库位可能有不同上架策略、温控策略、拣货优先级
- 盘点和调拨都依赖准确的位置数据
真实业务场景我会怎么抽象
- 收货后要决定放到哪个库区和库位
- 拣货时要给出最合适的拣货路径和货位
- 盘点时要按库区或库位维度执行
- 先建立仓库、库区、库位三级或多级结构
- 库存余额和流水增加位置维度
- 入库、上架、拣货、盘点都引用具体位置
举个具体例子:放到项目里会怎么跑
比如生鲜仓既有冷藏区又有常温区,同一 SKU 入库时要根据温层、体积和空闲库位自动推荐落位,这就是库位建模真正开始复杂的地方。
- 先按仓库 -> 库区 -> 库位建立层级。
- 库位上要带容量、温层、禁放属性。
- 入库推荐时先过滤不满足约束的库位,再按距离和剩余容量排序。
- 上架完成后立即回写库位库存。
代码示例:为入库任务推荐库位
publicLocationrecommend(PutawayCommandcmd){returnlocationRepo.findByWarehouse(cmd.getWarehouseId()).stream().filter(loc->loc.supportsTemp(cmd.getTempZone())).filter(loc->loc.getFreeVolume()>=cmd.getVolume()).sorted(Comparator.comparing(Location::getDistanceScore).thenComparing(Location::getFreeVolume).reversed()).findFirst().orElseThrow(()->newIllegalStateException("location not found"));}核心数据模型我会怎么定
- 建议拆位置主数据表、位置类型表、位置容量规则表
- 库存余额表要支持 locationId 维度
- 位置最好支持状态,如可用、冻结、待盘点
系统设计我会优先拆哪几块
位置主数据层
- 管理仓库、库区、巷道、货架、库位等结构
- 支持不同仓型扩展
容量和属性层
- 支持温区、承重、容量、货品限制等属性
- 为上架和补货规则提供依据
作业关联层
- 入库、上架、拣货、盘点都能精确到库位
- 避免后续作业只能按仓粗放执行
策略层
- 支持上架优先级、拣货优先级、先进先出等规则
- 位置策略不要写死在业务流程里
跨系统协同时哪些边界最重要
- 位置主数据由仓储维护,不应由订单直接感知
- 库位策略影响作业效率,不直接决定业务价格或活动逻辑
- 位置冻结要和盘点、质量问题等流程联动
监控和审计建议怎么做
- 库位利用率、空库位率
- 上架成功率、拣货路径耗时
- 库位级盘点差异率
- 异常库位冻结数量
高频坑位复盘
1. 先不做位置维度,后面再补
- 后续所有库存和单据都会大改
2. 位置只有层级,没有属性
- 后面无法支撑温控、容量、上架策略等扩展
面试里我会怎么答
如果面试官问仓库、库区、库位怎么建模,我会强调位置体系不是单纯层级字典,而是要和库存余额、作业流程、容量属性和上架拣货策略一起设计。
结语
位置体系真正的价值,不是把仓库画成树,而是让作业和库存都能落到具体位置上。
想继续看哪块,评论区留个 1 或 2 就行:
- 1 库位属性设计
- 2 上架策略