主题
WMS 仓库管理 PRD
文档信息
| 项目 | 内容 |
|---|---|
| 产品名称 | PMForge - WMS 仓库管理 |
| 文档版本 | v2.0 |
| 创建日期 | 2026-09-23 |
| 最后更新 | 2026-09-24 |
| 文档状态 | 评审中 |
| 优先级 | P1 |
一、功能概述
1.1 功能定位
WMS 仓库管理模块是 PMForge 的"智能仓储管家"——如果把企业的货物比作堆积如山的快递包裹,WMS 就是那个知道每个包裹在哪、该往哪放、什么时候该取出来的"超级仓管员"。它提供从仓库建立、库位规划、出入库作业、库存管控到数据分析的全链路仓储管理能力,支持多仓库、多库区、多库位的层级化管理,覆盖入库、出库、盘点、调拨、冻结等核心仓储场景,并通过波次管理、条码管理提升作业效率。
通俗理解:想象你管着一个超大仓库,里面有几万个货架、几十万件货物。WMS 就像给你配了一个"智能导航"——它告诉你每件货该放哪个货架、哪件货快没了该补货、哪个货架快满了该挪一挪,还能帮你把一堆取货订单合并成一条最优路线,一趟走完就把所有货都拣好了。
1.2 目标用户
| 用户角色 | 使用场景 | 使用频率 | 核心诉求 |
|---|---|---|---|
| 仓库管理员 | 仓库日常管理、库位规划、出入库审核、库存盘点 | 每日 | 准确掌握库存、高效处理出入库、合理规划库位 |
| 仓库操作员 | 扫码入库、拣货出库、库存搬运、盘点执行 | 每日(高频) | 快速完成扫码操作、准确执行拣货任务 |
| 供应链主管 | 库存预警监控、库存周转分析、仓库利用率统计 | 每周 | 预警及时、周转率可控、数据可视化 |
| 生产领料员 | 生产领料出库、成品入库、物料调拨 | 每日 | 快速领料、物料齐套检查 |
| 采购收货员 | 采购到货入库、退货出库 | 每日 | 到货快速入库、与采购单自动关联 |
| 企业高管 | 仓储数据看板、库存成本分析 | 每周/月 | 全局视角、辅助决策 |
1.3 业务价值
| 价值维度 | 具体收益 | 衡量指标 |
|---|---|---|
| 精细化仓储 | 仓库-库区-库位三级架构,货物精准定位 | 库位利用率提升 20%+ |
| 作业效率 | 波次合并拣货、条码扫描,减少人工操作 | 拣货效率提升 50%+ |
| 库存准确 | 实时跟踪 + 定期盘点,确保账实一致 | 库存准确率 > 99.5% |
| 成本优化 | 合理库位规划 + 库存预警,减少积压 | 库存周转率提升 30%+ |
| 全程追溯 | 每笔操作有流水,正向追溯反向追踪 | 出入库追溯 100% 覆盖 |
1.4 功能范围
| 功能模块 | 功能点 | 优先级 | 状态 |
|---|---|---|---|
| 仓库管理 | 仓库创建、编辑、状态管理、列表查询 | P0 | 待开发 |
| 库位管理 | 库区管理、库位管理、批量创建库位 | P0 | 待开发 |
| 入库管理 | 入库单创建、审核、执行、记录查询 | P0 | 待开发 |
| 出库管理 | 出库单创建、审核、执行、记录查询 | P0 | 待开发 |
| 库存管理 | 实时库存、库存预警、盘点、调拨、冻结 | P0 | 待开发 |
| 波次管理 | 波次规则配置、波次生成与执行 | P1 | 待开发 |
| 条码管理 | 条码生成、打印、扫描识别 | P1 | 待开发 |
| WMS 统计 | 出入库统计、库存周转率、仓库利用率 | P1 | 待开发 |
二、用户场景
2.1 用户角色
| 角色 | 描述 | 核心诉求 |
|---|---|---|
| 仓库管理员老王 | 仓库日常运营负责人,管理 3 个仓库、20 名操作员 | 准确掌握库存、高效处理出入库、合理规划库位 |
| 仓库操作员小张 | 一线操作人员,每天处理 50+ 笔出入库 | 快速完成扫码操作、准确执行拣货任务 |
| 供应链主管刘经理 | 供应链管理人员,关注库存健康度 | 预警及时、周转率可控、数据可视化 |
| 生产领料员小周 | 生产车间领料人员 | 快速领料出库、物料齐套检查 |
| 采购收货员小陈 | 采购到货处理人员 | 到货快速入库、与采购单自动关联 |
2.2 使用场景
场景 1:仓库管理员老王——采购到货入库
场景故事:供应商送来一批原材料,收货员小陈需要快速完成入库。
前置条件:
- 采购订单已审核通过,供应商已发货
- 目标仓库和库位已配置
操作流程:
- 收货员小陈在"入库管理"页面点击"新建入库单"
- 选择入库类型为"采购入库",系统自动关联采购单号
- 选择目标仓库为"原材料仓",系统推荐空闲库位
- 扫描货物条码,系统自动识别物料信息
- 录入实际到货数量,系统校验与预计数量的偏差(允许 ±10%)
- 提交入库单,状态变为"待审核"
- 仓库管理员老王审核通过
- 小张执行入库,扫码确认实际数量
- 系统自动更新库存、更新库位状态、生成入库流水
期望结果:入库操作 3 分钟内完成,库存实时更新,入库记录可追溯
验收标准(AC):
- AC-1:创建入库单时,选择"采购入库"类型后,系统应自动展示关联的采购单列表供选择
- AC-2:扫描条码后,系统应在 1 秒内自动填充物料编码、名称、规格等信息
- AC-3:实际数量与预计数量偏差超过 ±10% 时,系统应弹出警告提示,但允许确认后继续
- AC-4:入库完成后,对应库位的库存数量应立即增加,库位状态从"空闲"变为"占用"
- AC-4:入库流水记录应包含:变动类型、变动数量、变动前数量、变动后数量、关联单号
场景 2:仓库操作员小张——波次拣货出库
场景故事:今天有 30 笔销售订单需要发货,小张需要高效完成拣货。
前置条件:
- 30 笔销售出库单已审核通过
- 波次规则已配置(按同库区合并)
- 库存充足
操作流程:
- 仓库管理员老王在"波次管理"页面点击"生成波次"
- 系统按波次规则将 30 笔出库单合并为 3 个波次(每波次约 10 单,同库区)
- 老王将波次 1 分配给小张
- 小张在 PDA 上领取波次 1 的拣货任务
- 系统推荐最优拣货路径(按库位编码排序)
- 小张按路径逐一拣货,每拣一件扫码确认
- 全部拣完后确认波次完成
- 系统按订单分别扣减库存、生成出库流水
期望结果:30 笔订单的拣货时间从 2 小时缩短至 40 分钟
验收标准(AC):
- AC-1:生成波次时,系统应按配置的合并规则(同库区)自动分组,5 秒内完成
- AC-2:波次内的拣货路径应按库位编码升序排列,减少往返走动
- AC-3:扫码确认拣货时,系统应校验物料和数量是否匹配,不匹配时拒绝并提示
- AC-4:波次完成后,系统应自动按订单分别扣减库存,每笔订单生成独立的出库流水
- AC-5:波次执行过程中,被锁定的库存不应被其他波次或出库单使用
场景 3:供应链主管刘经理——库存预警处理
场景故事:月末,刘经理需要检查库存健康度,处理预警信息。
前置条件:
- 库存预警规则已配置(安全库存下限/上限)
- 部分物料库存已触发预警
操作流程:
- 刘经理登录系统,收到"3 条库存预警"的站内通知
- 进入"库存预警"页面,查看预警列表
- 预警 1:物料 A 当前库存 80 件,低于安全库存下限 100 件(库存不足)
- 预警 2:物料 B 当前库存 5000 件,高于安全库存上限 3000 件(库存积压)
- 刘经理对预警 1 点击"发起采购",系统自动跳转至 ERP 采购模块创建采购单
- 对预警 2 点击"发起调拨",系统跳转至调拨页面
- 处理完成后标记预警为"已处理",填写处理说明
期望结果:预警从发现到处理形成闭环,不遗漏
验收标准(AC):
- AC-1:库存低于安全下限时,系统应在 1 分钟内生成预警通知并推送给相关人员
- AC-2:同一物料同一仓库同一预警类型,未处理前不重复告警
- AC-3:预警列表应展示:物料信息、当前库存、安全阈值、预警类型、预警时间、处理状态
- AC-4:点击"发起采购"应携带物料信息和建议采购数量跳转至 ERP 采购模块
- AC-5:预警处理后应记录处理人、处理时间、处理说明,支持后续查询
场景 4:仓库管理员老王——月度库存盘点
场景故事:月末,老王需要组织对原材料仓进行全面盘点。
前置条件:
- 原材料仓有 2000+ 条库存记录
- 盘点执行人已安排
操作流程:
- 老王创建盘点单,选择"原材料仓",盘点方式选择"盲盘"(不显示账面数量)
- 系统自动生成盘点明细(当前账面库存,但对执行人隐藏数量)
- 盘点执行人小张到现场逐一清点,在 PDA 上录入实盘数量
- 系统自动计算差异:物料 X 账面 100 件,实盘 98 件,差异 -2 件(盘亏)
- 差异超过 5% 阈值的物料标记为"需复盘"
- 小张对需复盘的物料重新清点确认
- 提交盘点结果,老王审核通过
- 系统自动调整库存:盘盈的生成入库流水,盘亏的生成出库流水
期望结果:2000 条库存的盘点在 1 天内完成,差异处理有据可查
验收标准(AC):
- AC-1:创建盲盘任务时,盘点明细页面不应显示账面数量,只展示物料信息和库位
- AC-2:差异数量 = 实盘数量 - 账面数量,正值标记为"盘盈"(绿色),负值标记为"盘亏"(红色)
- AC-3:差异率超过 5%(可配置)的物料应自动标记为"需复盘",未复盘不允许提交
- AC-4:审核通过后,系统应自动生成调整记录(盘盈入库 / 盘亏出库),库存立即更新
- AC-5:盘点全流程应记录操作日志:创建人、执行人、审核人、各环节时间
场景 5:仓库操作员小张——跨仓库物料调拨
场景故事:成品仓的某产品库存积压,分店仓库缺货,需要调拨。
前置条件:
- 成品仓该物料库存 3000 件
- 分店仓库库存 200 件,低于安全库存
操作流程:
- 老王创建调拨单,选择源仓库"成品仓"、目标仓库"分店仓"
- 添加调拨明细:物料 A,调拨数量 1000 件
- 系统校验成品仓可用库存 ≥ 1000 件,校验通过
- 提交调拨单,审批通过
- 成品仓小张执行调拨出库,扫码确认出库 1000 件
- 调拨单状态变为"在途中"
- 分店仓收货确认入库
- 两仓库库存同步更新:成品仓 -1000,分店仓 +1000
期望结果:调拨流程清晰,在途库存可追踪
验收标准(AC):
- AC-1:创建调拨单时,系统应校验源仓库可用库存(扣除冻结量和已分配量),不足时阻止提交
- AC-2:调拨出库后,源仓库库存立即扣减,调拨单状态变为"在途中"
- AC-3:在途状态的调拨单应在统计报表中单独体现"在途库存"
- AC-4:目标仓库确认入库后,库存立即增加,调拨单状态变为"已完成"
- AC-5:在途超过 3 天未确认入库的调拨单,系统应自动发送预警通知
三、功能需求
3.1 仓库管理
页面设计

业务规则
| 规则 | 说明 | 设计原因 |
|---|---|---|
| 仓库编码唯一 | 编码格式 2-20 位字母数字,创建后不可修改 | 编码作为业务标识需全局唯一,修改会导致关联单据引用断裂 |
| 仓库名称不重复 | 同一租户下仓库名称不可重复 | 避免操作员在选仓库时混淆 |
| 禁用仓库限制 | 禁用后不允许创建新的出入库单 | 防止对已停用仓库的误操作,已有单据不受影响 |
| 仓库面积 > 0 | 填写面积时必须大于 0 | 面积用于计算仓库利用率,0 或负数无意义 |
| 仓库类型 | 原材料仓、半成品仓、成品仓、综合仓 | 区分存储货物类型,便于分类统计和管理 |
状态机 - 仓库状态

接口列表
| 接口名称 | 请求方式 | 接口路径 | 功能说明 |
|---|---|---|---|
| 仓库分页查询 | GET | /admin-api/wms/warehouse/page | 按条件分页查询仓库列表 |
| 仓库详情 | GET | /admin-api/wms/warehouse/get | 获取仓库详情 |
| 仓库下拉列表 | GET | /admin-api/wms/warehouse/simple-list | 获取启用的仓库列表(下拉选择用) |
| 创建仓库 | POST | /admin-api/wms/warehouse/create | 新增仓库 |
| 更新仓库 | PUT | /admin-api/wms/warehouse/update | 编辑仓库信息 |
| 删除仓库 | DELETE | /admin-api/wms/warehouse/delete | 逻辑删除仓库 |
| 更新仓库状态 | PUT | /admin-api/wms/warehouse/update-status | 启用/禁用仓库 |
3.2 库位管理
页面设计

业务规则
| 规则 | 说明 | 设计原因 |
|---|---|---|
| 库位编码格式 | 库区编码-货架号-层号-位置号(如 A-01-02-03) | 编码即位置导航,操作员看到编码就知道去哪找 |
| 库位状态 | 空闲、占用、冻结 | 三态管理:空闲可分配、占用已存货、冻结不可用(维修/保留) |
| 冻结库位限制 | 冻结状态不允许分配新的入库任务 | 防止将货物放入不可用的库位 |
| 库位承重校验 | 入库时校验货物重量不超过库位承重上限 | 安全考虑,超重可能导致货架损坏 |
| 库区删除校验 | 存在关联库位或库存记录时不允许删除库区 | 防止误删导致数据断裂 |
| 批量创建 | 支持指定货架数、层数、每层位置数,自动生成 | 新建仓库时快速初始化大量库位,避免逐个创建 |
接口列表
| 接口名称 | 请求方式 | 接口路径 | 功能说明 |
|---|---|---|---|
| 库区列表 | GET | /admin-api/wms/storage-area/list | 按仓库 ID 查询库区列表 |
| 创建库区 | POST | /admin-api/wms/storage-area/create | 新增库区 |
| 更新库区 | PUT | /admin-api/wms/storage-area/update | 编辑库区信息 |
| 删除库区 | DELETE | /admin-api/wms/storage-area/delete | 逻辑删除库区 |
| 库位分页查询 | GET | /admin-api/wms/storage-location/page | 按条件分页查询库位 |
| 库位列表 | GET | /admin-api/wms/storage-location/list | 按库区 ID 查询库位列表 |
| 创建库位 | POST | /admin-api/wms/storage-location/create | 新增单个库位 |
| 批量创建库位 | POST | /admin-api/wms/storage-location/batch-create | 按规则批量生成库位 |
| 更新库位 | PUT | /admin-api/wms/storage-location/update | 编辑库位信息 |
| 删除库位 | DELETE | /admin-api/wms/storage-location/delete | 逻辑删除库位 |
| 冻结/解冻库位 | PUT | /admin-api/wms/storage-location/update-status | 变更库位状态 |
3.3 入库管理
页面设计

业务规则
| 规则 | 说明 | 设计原因 |
|---|---|---|
| 入库单号自动生成 | 格式:RK + 年月日 + 4 位流水号(如 RK202609240001) | 单号唯一且包含日期,便于识别和检索 |
| 入库类型 | 采购入库、生产入库、退货入库、调拨入库、其他入库 | 区分入库来源,便于统计和关联业务 |
| 至少一条明细 | 入库单必须包含至少一条入库明细行 | 空单据无业务意义 |
| 数量校验 | 关联来源单号时,入库数量不得超过来源单未入库数量 | 防止超量入库导致账实不符 |
| 偏差允许 | 实际数量与预计数量允许 ±10% 偏差(可配置) | 实际业务中到货数量可能有合理偏差 |
| 入库不可撤销 | 入库执行后不可撤销,需纠正通过出库单或调整单处理 | 库存操作需留痕,撤销会破坏流水链 |
状态机 - 入库单

接口列表
| 接口名称 | 请求方式 | 接口路径 | 功能说明 |
|---|---|---|---|
| 入库单分页查询 | GET | /admin-api/wms/stock-in-order/page | 按条件分页查询入库单 |
| 入库单详情 | GET | /admin-api/wms/stock-in-order/get | 获取入库单详情(含明细行) |
| 创建入库单 | POST | /admin-api/wms/stock-in-order/create | 新增入库单 |
| 更新入库单 | PUT | /admin-api/wms/stock-in-order/update | 编辑入库单(仅待审核可编辑) |
| 删除入库单 | DELETE | /admin-api/wms/stock-in-order/delete | 逻辑删除(仅待审核/已拒绝可删) |
| 审核入库单 | PUT | /admin-api/wms/stock-in-order/audit | 审核通过或驳回 |
| 执行入库 | POST | /admin-api/wms/stock-in-order/execute | 确认入库并更新库存 |
| 导出入库单 | GET | /admin-api/wms/stock-in-order/export | 导出入库单 Excel |
3.4 出库管理
业务规则
| 规则 | 说明 | 设计原因 |
|---|---|---|
| 出库单号自动生成 | 格式:CK + 年月日 + 4 位流水号(如 CK202609240001) | 与入库单编号规则一致,便于统一管理 |
| 出库类型 | 销售出库、生产领料、调拨出库、报废出库、其他出库 | 区分出库原因,便于成本核算 |
| 库存校验 | 创建时校验可用库存(扣除冻结量和已分配量) | 避免创建无法执行的出库单 |
| 执行时二次校验 | 执行出库时再次校验库存充足性 | 防止审核到执行期间库存被其他单据占用 |
| 出库后预警 | 出库后库存低于安全库存时自动触发预警 | 及时提醒补货 |
| 库位自动释放 | 库位出库后如无其他货物自动变为空闲 | 减少手动维护库位状态的工作量 |
状态机 - 出库单

接口列表
| 接口名称 | 请求方式 | 接口路径 | 功能说明 |
|---|---|---|---|
| 出库单分页查询 | GET | /admin-api/wms/stock-out-order/page | 按条件分页查询出库单 |
| 出库单详情 | GET | /admin-api/wms/stock-out-order/get | 获取出库单详情(含明细行) |
| 创建出库单 | POST | /admin-api/wms/stock-out-order/create | 新增出库单 |
| 更新出库单 | PUT | /admin-api/wms/stock-out-order/update | 编辑出库单 |
| 删除出库单 | DELETE | /admin-api/wms/stock-out-order/delete | 逻辑删除出库单 |
| 审核出库单 | PUT | /admin-api/wms/stock-out-order/audit | 审核通过或驳回 |
| 执行出库 | POST | /admin-api/wms/stock-out-order/execute | 确认出库并扣减库存 |
| 导出出库单 | GET | /admin-api/wms/stock-out-order/export | 导出出库单 Excel |
3.5 库存管理
页面设计

业务规则
| 规则 | 说明 | 设计原因 |
|---|---|---|
| 库存数量公式 | 库存数量 = 可用数量 + 冻结数量 | 冻结部分不可动用,需单独管理 |
| 可用数量公式 | 可用数量 = 库存数量 - 冻结数量 - 已分配数量 | 已分配给未完成出库单的数量不能再被使用 |
| 预警类型 | 库存不足(< 安全下限)、库存积压(> 安全上限) | 双向预警:既防缺货又防积压 |
| 预警不重复 | 同一物料同一仓库同一类型未处理前不重复告警 | 避免预警风暴淹没真正的异常 |
| 冻结数量限制 | 冻结数量不得超过当前库存数量 | 不能冻结不存在的库存 |
| 批量冻结 | 支持批量选择库存记录进行冻结 | 月末盘点前或质量问题时批量冻结相关库存 |
状态机 - 库存盘点单

状态机 - 库存调拨单

接口列表
| 接口名称 | 请求方式 | 接口路径 | 功能说明 |
|---|---|---|---|
| 库存分页查询 | GET | /admin-api/wms/stock/page | 按条件分页查询库存 |
| 库存汇总查询 | GET | /admin-api/wms/stock/summary | 按物料汇总库存 |
| 库存详情 | GET | /admin-api/wms/stock/get | 查询指定库位的库存详情 |
| 库存变动记录 | GET | /admin-api/wms/stock/records | 查询指定物料的库存流水 |
| 冻结库存 | POST | /admin-api/wms/stock/freeze | 冻结指定库存 |
| 解冻库存 | POST | /admin-api/wms/stock/unfreeze | 解冻指定库存 |
| 冻结记录查询 | GET | /admin-api/wms/stock/freeze-records | 查询库存冻结记录 |
| 预警规则列表 | GET | /admin-api/wms/stock/alert-rule/page | 查询库存预警规则 |
| 创建预警规则 | POST | /admin-api/wms/stock/alert-rule/create | 新增预警规则 |
| 更新预警规则 | PUT | /admin-api/wms/stock/alert-rule/update | 编辑预警规则 |
| 删除预警规则 | DELETE | /admin-api/wms/stock/alert-rule/delete | 删除预警规则 |
| 预警记录列表 | GET | /admin-api/wms/stock/alert/page | 查询预警触发记录 |
| 处理预警 | PUT | /admin-api/wms/stock/alert/handle | 标记预警已处理 |
| 盘点单分页查询 | GET | /admin-api/wms/check/page | 按条件查询盘点单列表 |
| 盘点单详情 | GET | /admin-api/wms/check/get | 获取盘点单详情(含明细) |
| 创建盘点单 | POST | /admin-api/wms/check/create | 新建盘点任务 |
| 更新盘点明细 | PUT | /admin-api/wms/check/update-items | 录入盘点实盘数量 |
| 提交盘点 | PUT | /admin-api/wms/check/submit | 提交盘点结果待审核 |
| 审核盘点 | PUT | /admin-api/wms/check/audit | 审核盘点结果并调整库存 |
| 取消盘点 | PUT | /admin-api/wms/check/cancel | 取消盘点任务 |
| 调拨单分页查询 | GET | /admin-api/wms/transfer/page | 按条件查询调拨单 |
| 调拨单详情 | GET | /admin-api/wms/transfer/get | 获取调拨单详情 |
| 创建调拨单 | POST | /admin-api/wms/transfer/create | 新建调拨单 |
| 审核调拨单 | PUT | /admin-api/wms/transfer/audit | 审核调拨单 |
| 执行调拨出库 | POST | /admin-api/wms/transfer/execute-out | 源仓库执行出库 |
| 执行调拨入库 | POST | /admin-api/wms/transfer/execute-in | 目标仓库确认入库 |
| 取消调拨单 | PUT | /admin-api/wms/transfer/cancel | 取消调拨单 |
3.6 波次管理
业务规则
| 规则 | 说明 | 设计原因 |
|---|---|---|
| 波次号自动生成 | 格式:BC + 年月日 + 4 位流水号 | 唯一标识,便于追踪 |
| 合并维度 | 同客户、同物流渠道、同库区、同承运商 | 按维度合并减少拣货路径,提高效率 |
| 一单一波次 | 一个出库单在同一时间只能属于一个波次 | 避免同一订单被重复拣货 |
| 库存不足不参与 | 波次内任一订单库存不足时,该订单不参与波次 | 防止波次执行到一半因缺货中断 |
| 拣货路径优化 | 按库位编码排序,推荐最优路径 | 减少拣货员往返走动,提升效率 |
状态机 - 波次

接口列表
| 接口名称 | 请求方式 | 接口路径 | 功能说明 |
|---|---|---|---|
| 波次规则列表 | GET | /admin-api/wms/wave/rule/page | 查询波次规则 |
| 创建波次规则 | POST | /admin-api/wms/wave/rule/create | 新增波次规则 |
| 更新波次规则 | PUT | /admin-api/wms/wave/rule/update | 编辑波次规则 |
| 删除波次规则 | DELETE | /admin-api/wms/wave/rule/delete | 删除波次规则 |
| 波次列表 | GET | /admin-api/wms/wave/page | 查询波次列表 |
| 生成波次 | POST | /admin-api/wms/wave/generate | 按规则自动生成波次 |
| 波次详情 | GET | /admin-api/wms/wave/get | 获取波次详情 |
| 分配拣货员 | PUT | /admin-api/wms/wave/assign | 分配波次拣货人员 |
| 完成波次 | PUT | /admin-api/wms/wave/complete | 确认波次拣货完成 |
| 取消波次 | PUT | /admin-api/wms/wave/cancel | 取消波次(订单回退) |
3.7 条码管理
业务规则
| 规则 | 说明 | 设计原因 |
|---|---|---|
| 条码类型 | 物料条码(M)、库位条码(L)、批次条码(B) | 不同类型前缀区分,扫码即知对象类型 |
| 编码格式 | 支持 Code128、EAN-13、QR Code | 兼容不同扫描设备和使用场景 |
| 条码内容 | 类型前缀 + 数据段 + 校验位 | 校验位防止误扫或伪造 |
| 一物多码 | 同一批次物料可生成多个条码(按件数) | 每件货物独立标识,精确追踪 |
| 补打支持 | 已打印的条码支持补打 | 条码损坏或丢失时可重新打印 |
接口列表
| 接口名称 | 请求方式 | 接口路径 | 功能说明 |
|---|---|---|---|
| 条码规则列表 | GET | /admin-api/wms/barcode/rule/page | 查询条码编码规则 |
| 创建条码规则 | POST | /admin-api/wms/barcode/rule/create | 新增条码规则 |
| 批量生成条码 | POST | /admin-api/wms/barcode/generate | 按规则批量生成条码 |
| 条码列表 | GET | /admin-api/wms/barcode/page | 查询已生成的条码 |
| 条码打印 | POST | /admin-api/wms/barcode/print | 提交打印任务 |
| 条码解析 | GET | /admin-api/wms/barcode/parse | 扫描条码后解析信息 |
3.8 WMS 统计分析
业务规则
| 规则 | 说明 | 设计原因 |
|---|---|---|
| 库存周转率 | = 期间出库总量 / 期间平均库存量 | 衡量库存流动速度,越高说明库存周转越快 |
| 周转天数 | = 统计天数 / 库存周转率 | 直观展示库存从入库到出库需要多少天 |
| 慢动物料 | 周转率低于设定阈值的物料 | 识别积压物料,辅助清理决策 |
| 仓库利用率 | = 已使用库位数 / 总库位数 × 100% | 衡量仓库空间使用效率 |
| 利用率预警 | 超过 85% 标红预警 | 提醒管理者仓库接近满载,需规划扩容或调拨 |
| 统计维度 | 按日/周/月/年,按仓库/物料/时间 | 多维度分析满足不同管理需求 |
接口列表
| 接口名称 | 请求方式 | 接口路径 | 功能说明 |
|---|---|---|---|
| 出入库统计 | GET | /admin-api/wms/statistics/in-out | 按维度查询出入库统计 |
| 出入库趋势 | GET | /admin-api/wms/statistics/in-out-trend | 查询出入库趋势数据 |
| 库存周转率 | GET | /admin-api/wms/statistics/turnover | 查询库存周转率数据 |
| 慢动物料列表 | GET | /admin-api/wms/statistics/slow-moving | 查询慢动物料 |
| 仓库利用率 | GET | /admin-api/wms/statistics/utilization | 查询仓库空间利用率 |
四、非功能需求
4.1 性能需求
| 指标 | 要求 | 实现策略 |
|---|---|---|
| 库存查询响应 | 单次查询 < 200ms | 库存表按仓库+物料建索引,热点库存缓存至 Redis |
| 出入库操作 | 单笔 < 500ms(含库存更新+流水写入) | 数据库事务保证一致性,异步写入流水日志 |
| 盘点性能 | 支持单仓库 10 万条库存记录盘点 | 分页加载盘点明细,批量提交差异数据 |
| 条码生成 | 批量生成 1 万条 < 10 秒 | 批量插入 + 异步生成条码图片 |
| 波次生成 | 500 张出库单生成波次 < 5 秒 | 内存中按规则分组,减少数据库查询 |
| 统计报表 | 月度报表查询 < 3 秒 | 预聚合 + 缓存,大数据量异步导出 |
| 并发安全 | 同一库位/物料并发操作数据一致 | 乐观锁(version 字段)+ 数据库事务隔离 |
| 数据导出 | 10 万条记录导出 < 30 秒 | 流式写入 Excel,避免内存溢出 |
4.2 安全需求
| 安全项 | 要求 | 实现方式 |
|---|---|---|
| 出入库审核 | 所有出入库必须经过审核流程 | 状态机控制,未审核不允许执行 |
| 库存变更一致性 | 库存与流水必须同时成功或失败 | 数据库事务(@Transactional),同库操作 |
| 并发安全 | 防止并发操作导致库存数据错误 | 乐观锁(version 字段),冲突时重试或拒绝 |
| 操作审计 | 所有出入库、盘点、调拨、冻结记录日志 | AOP 切面自动记录操作日志 |
| 权限控制 | 不同操作需对应权限标识 | RBAC 权限模型,接口级权限校验 |
| 数据隔离 | 多租户数据隔离 | 所有表含 tenant_id,MyBatis Plus 插件自动过滤 |
| 条码防伪 | 条码内容包含校验位 | 编码算法内置校验位计算 |
4.3 可用性需求
| 指标 | 要求 |
|---|---|
| 系统可用性 | 99.9%(工作日 8:00-20:00) |
| 数据备份 | 每日自动备份库存数据 |
| 故障恢复 | 库存数据异常时可通过流水记录恢复 |
| PDA 兼容 | 兼容主流安卓 PDA 设备 |
| 打印机兼容 | 兼容斑马、TSC、兄弟等标签打印机 |
4.4 错误码定义
| 错误码 | 说明 | 处理建议 |
|---|---|---|
| WMS_STOCK_001 | 库存不足,可用数量不满足出库需求 | 检查当前库存,等待补货或调整出库数量 |
| WMS_STOCK_002 | 库存已冻结,该部分数量不可动用 | 联系管理员解冻或调整出库库位 |
| WMS_STOCK_003 | 库位承重超限,货物重量超过库位上限 | 选择承重更大的库位或拆分货物 |
| WMS_WH_001 | 仓库已禁用,不允许创建出入库单 | 启用仓库或选择其他仓库 |
| WMS_WH_002 | 仓库编码已存在 | 使用其他编码 |
| WMS_CHECK_001 | 盘点差异超阈值,需要复盘确认 | 对标记为"需复盘"的物料重新清点 |
| WMS_CHECK_002 | 盘点单状态不允许此操作 | 检查盘点单当前状态 |
| WMS_TRANSFER_001 | 调拨在途超时,超过 3 天未确认入库 | 联系目标仓库确认收货或取消调拨 |
| WMS_BARCODE_001 | 条码解析失败,无法识别条码信息 | 检查条码是否损坏,支持手动输入 |
4.5 缓存策略
| 缓存 Key | 数据内容 | 过期时间 | 更新策略 |
|---|---|---|---|
| wms:warehouse: | 仓库基本信息 | 30 分钟 | 编辑/禁用时删除 |
| wms:stock:available:{warehouseId}: | 物料可用库存 | 5 分钟 | 出入库时删除 |
| wms:location:status: | 库位状态 | 10 分钟 | 状态变更时删除 |
| wms:alert:rule: | 仓库预警规则 | 1 小时 | 规则变更时删除 |
五、数据设计
5.1 数据表概览
| 表名 | 说明 | 预估数据量 |
|---|---|---|
| wms_warehouse | 仓库表 | 100+ |
| wms_storage_area | 库区表 | 500+ |
| wms_storage_location | 库位表 | 50,000+ |
| wms_stock_in_order | 入库单表 | 100,000+ |
| wms_stock_in_order_item | 入库单明细表 | 500,000+ |
| wms_stock_out_order | 出库单表 | 100,000+ |
| wms_stock_out_order_item | 出库单明细表 | 500,000+ |
| wms_stock | 库存表 | 200,000+ |
| wms_stock_record | 库存流水表 | 2,000,000+ |
| wms_check | 盘点单表 | 5,000+ |
| wms_check_item | 盘点明细表 | 500,000+ |
| wms_transfer | 调拨单表 | 10,000+ |
| wms_transfer_item | 调拨明细表 | 50,000+ |
| wms_barcode | 条码表 | 1,000,000+ |
| wms_wave | 波次表 | 20,000+ |
| wms_wave_rule | 波次规则表 | 100+ |
| wms_stock_alert_rule | 库存预警规则表 | 1,000+ |
| wms_stock_alert | 库存预警记录表 | 50,000+ |
5.2 表关系图

5.3 核心表结构
wms_warehouse 仓库表
| 字段名 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
| id | bigint | 是 | 自增 | 主键 ID |
| code | varchar(32) | 是 | - | 仓库编码,全局唯一 |
| name | varchar(64) | 是 | - | 仓库名称 |
| type | tinyint | 是 | 4 | 仓库类型:1-原材料仓 2-半成品仓 3-成品仓 4-综合仓 |
| manager | varchar(32) | 否 | NULL | 负责人姓名 |
| phone | varchar(20) | 否 | NULL | 联系电话 |
| address | varchar(256) | 否 | NULL | 仓库地址 |
| area | decimal(10,2) | 否 | NULL | 仓库面积(㎡) |
| status | tinyint | 是 | 0 | 状态:0-启用 1-禁用 |
| remark | varchar(512) | 否 | NULL | 备注 |
| creator | varchar(64) | 否 | NULL | 创建者 |
| create_time | datetime | 是 | CURRENT_TIMESTAMP | 创建时间 |
| updater | varchar(64) | 否 | NULL | 更新者 |
| update_time | datetime | 是 | CURRENT_TIMESTAMP | 更新时间 |
| deleted | bit(1) | 是 | 0 | 逻辑删除 |
| tenant_id | bigint | 是 | 0 | 租户 ID |
索引:uk_code (code, tenant_id)、idx_status (status)、idx_tenant_id (tenant_id)
wms_storage_area 库区表
| 字段名 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
| id | bigint | 是 | 自增 | 主键 ID |
| warehouse_id | bigint | 是 | - | 所属仓库 ID |
| code | varchar(32) | 是 | - | 库区编码 |
| name | varchar(64) | 是 | - | 库区名称 |
| type | tinyint | 是 | 1 | 库区类型:1-存储区 2-收货区 3-发货区 4-退货区 5-质检区 |
| sort | int | 是 | 0 | 排序号 |
| status | tinyint | 是 | 0 | 状态:0-启用 1-禁用 |
| remark | varchar(512) | 否 | NULL | 备注 |
| creator | varchar(64) | 否 | NULL | 创建者 |
| create_time | datetime | 是 | CURRENT_TIMESTAMP | 创建时间 |
| updater | varchar(64) | 否 | NULL | 更新者 |
| update_time | datetime | 是 | CURRENT_TIMESTAMP | 更新时间 |
| deleted | bit(1) | 是 | 0 | 逻辑删除 |
| tenant_id | bigint | 是 | 0 | 租户 ID |
索引:uk_warehouse_code (warehouse_id, code, tenant_id)、idx_warehouse_id (warehouse_id)
wms_storage_location 库位表
| 字段名 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
| id | bigint | 是 | 自增 | 主键 ID |
| area_id | bigint | 是 | - | 所属库区 ID |
| warehouse_id | bigint | 是 | - | 所属仓库 ID |
| code | varchar(64) | 是 | - | 库位编码 |
| name | varchar(64) | 是 | - | 库位名称 |
| shelf_no | varchar(16) | 否 | NULL | 货架编号 |
| layer_no | varchar(8) | 否 | NULL | 层号 |
| position_no | varchar(8) | 否 | NULL | 位置号 |
| status | tinyint | 是 | 0 | 存放状态:0-空闲 1-占用 2-冻结 |
| weight_limit | decimal(10,2) | 否 | NULL | 承重上限(kg) |
| volume_limit | decimal(10,2) | 否 | NULL | 容积上限(m³) |
| remark | varchar(512) | 否 | NULL | 备注 |
| creator | varchar(64) | 否 | NULL | 创建者 |
| create_time | datetime | 是 | CURRENT_TIMESTAMP | 创建时间 |
| updater | varchar(64) | 否 | NULL | 更新者 |
| update_time | datetime | 是 | CURRENT_TIMESTAMP | 更新时间 |
| deleted | bit(1) | 是 | 0 | 逻辑删除 |
| tenant_id | bigint | 是 | 0 | 租户 ID |
索引:uk_code (code, warehouse_id, tenant_id)、idx_area_id (area_id)、idx_warehouse_id (warehouse_id)、idx_status (status)
wms_stock 库存表
| 字段名 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
| id | bigint | 是 | 自增 | 主键 ID |
| warehouse_id | bigint | 是 | - | 仓库 ID |
| area_id | bigint | 是 | - | 库区 ID |
| location_id | bigint | 是 | - | 库位 ID |
| material_id | bigint | 是 | - | 物料 ID |
| material_code | varchar(64) | 是 | - | 物料编码 |
| material_name | varchar(128) | 是 | - | 物料名称 |
| spec | varchar(128) | 否 | NULL | 规格型号 |
| unit | varchar(16) | 是 | - | 计量单位 |
| batch_no | varchar(64) | 否 | NULL | 批次号 |
| total_qty | int | 是 | 0 | 库存总数量 |
| available_qty | int | 是 | 0 | 可用数量 |
| frozen_qty | int | 是 | 0 | 冻结数量 |
| allocated_qty | int | 是 | 0 | 已分配数量(待出库) |
| version | int | 是 | 0 | 乐观锁版本号 |
| creator | varchar(64) | 否 | NULL | 创建者 |
| create_time | datetime | 是 | CURRENT_TIMESTAMP | 创建时间 |
| updater | varchar(64) | 否 | NULL | 更新者 |
| update_time | datetime | 是 | CURRENT_TIMESTAMP | 更新时间 |
| deleted | bit(1) | 是 | 0 | 逻辑删除 |
| tenant_id | bigint | 是 | 0 | 租户 ID |
索引:uk_location_material_batch (location_id, material_id, batch_no, tenant_id)、idx_warehouse_id (warehouse_id)、idx_material_id (material_id)、idx_material_code (material_code)
wms_stock_record 库存流水表
| 字段名 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
| id | bigint | 是 | 自增 | 主键 ID |
| stock_id | bigint | 是 | - | 库存 ID |
| warehouse_id | bigint | 是 | - | 仓库 ID |
| material_id | bigint | 是 | - | 物料 ID |
| biz_type | tinyint | 是 | - | 业务类型:1-入库 2-出库 3-盘盈 4-盘亏 5-调拨入库 6-调拨出库 7-冻结 8-解冻 |
| biz_order_no | varchar(64) | 否 | NULL | 关联业务单号 |
| change_qty | int | 是 | - | 变动数量(正为增加,负为减少) |
| before_qty | int | 是 | - | 变动前库存数量 |
| after_qty | int | 是 | - | 变动后库存数量 |
| remark | varchar(256) | 否 | NULL | 备注 |
| creator | varchar(64) | 否 | NULL | 创建者 |
| create_time | datetime | 是 | CURRENT_TIMESTAMP | 创建时间 |
| updater | varchar(64) | 否 | NULL | 更新者 |
| update_time | datetime | 是 | CURRENT_TIMESTAMP | 更新时间 |
| deleted | bit(1) | 是 | 0 | 逻辑删除 |
| tenant_id | bigint | 是 | 0 | 租户 ID |
索引:idx_stock_id (stock_id)、idx_warehouse_id (warehouse_id)、idx_material_id (material_id)、idx_biz_type (biz_type)、idx_biz_order_no (biz_order_no)、idx_create_time (create_time)
wms_stock_in_order 入库单表
| 字段名 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
| id | bigint | 是 | 自增 | 主键 ID |
| order_no | varchar(32) | 是 | - | 入库单号 |
| type | tinyint | 是 | - | 入库类型:1-采购入库 2-生产入库 3-退货入库 4-调拨入库 5-其他 |
| source_order_no | varchar(64) | 否 | NULL | 来源单号 |
| warehouse_id | bigint | 是 | - | 目标仓库 ID |
| supplier_name | varchar(128) | 否 | NULL | 供应商名称 |
| expected_qty | int | 是 | 0 | 预计总数量 |
| actual_qty | int | 否 | 0 | 实际入库数量 |
| status | tinyint | 是 | 0 | 状态:0-待审核 1-审核通过 2-入库中 3-已完成 4-已取消 5-审核拒绝 |
| audit_user_id | bigint | 否 | NULL | 审核人 ID |
| audit_time | datetime | 否 | NULL | 审核时间 |
| audit_remark | varchar(256) | 否 | NULL | 审核意见 |
| complete_time | datetime | 否 | NULL | 完成时间 |
| remark | varchar(512) | 否 | NULL | 备注 |
| creator | varchar(64) | 否 | NULL | 创建者 |
| create_time | datetime | 是 | CURRENT_TIMESTAMP | 创建时间 |
| updater | varchar(64) | 否 | NULL | 更新者 |
| update_time | datetime | 是 | CURRENT_TIMESTAMP | 更新时间 |
| deleted | bit(1) | 是 | 0 | 逻辑删除 |
| tenant_id | bigint | 是 | 0 | 租户 ID |
索引:uk_order_no (order_no, tenant_id)、idx_warehouse_id (warehouse_id)、idx_status (status)、idx_type (type)、idx_source_order_no (source_order_no)
wms_stock_out_order 出库单表
| 字段名 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
| id | bigint | 是 | 自增 | 主键 ID |
| order_no | varchar(32) | 是 | - | 出库单号 |
| type | tinyint | 是 | - | 出库类型:1-销售出库 2-生产领料 3-调拨出库 4-报废出库 5-其他 |
| source_order_no | varchar(64) | 否 | NULL | 来源单号 |
| warehouse_id | bigint | 是 | - | 源仓库 ID |
| customer_name | varchar(128) | 否 | NULL | 客户名称 |
| expected_qty | int | 是 | 0 | 预计总数量 |
| actual_qty | int | 否 | 0 | 实际出库数量 |
| status | tinyint | 是 | 0 | 状态:0-待审核 1-审核通过 2-出库中 3-已完成 4-已取消 5-审核拒绝 |
| audit_user_id | bigint | 否 | NULL | 审核人 ID |
| audit_time | datetime | 否 | NULL | 审核时间 |
| audit_remark | varchar(256) | 否 | NULL | 审核意见 |
| complete_time | datetime | 否 | NULL | 完成时间 |
| remark | varchar(512) | 否 | NULL | 备注 |
| creator | varchar(64) | 否 | NULL | 创建者 |
| create_time | datetime | 是 | CURRENT_TIMESTAMP | 创建时间 |
| updater | varchar(64) | 否 | NULL | 更新者 |
| update_time | datetime | 是 | CURRENT_TIMESTAMP | 更新时间 |
| deleted | bit(1) | 是 | 0 | 逻辑删除 |
| tenant_id | bigint | 是 | 0 | 租户 ID |
索引:uk_order_no (order_no, tenant_id)、idx_warehouse_id (warehouse_id)、idx_status (status)、idx_type (type)、idx_source_order_no (source_order_no)
wms_check 盘点单表
| 字段名 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
| id | bigint | 是 | 自增 | 主键 ID |
| check_no | varchar(32) | 是 | - | 盘点单号 |
| warehouse_id | bigint | 是 | - | 盘点仓库 ID |
| area_id | bigint | 否 | NULL | 盘点库区 ID(空则全仓盘点) |
| check_type | tinyint | 是 | 1 | 盘点方式:1-明盘 2-盲盘 |
| status | tinyint | 是 | 0 | 状态:0-待执行 1-执行中 2-待审核 3-已完成 4-已取消 |
| executor_id | bigint | 否 | NULL | 执行人 ID |
| audit_user_id | bigint | 否 | NULL | 审核人 ID |
| audit_time | datetime | 否 | NULL | 审核时间 |
| plan_time | datetime | 否 | NULL | 计划盘点时间 |
| start_time | datetime | 否 | NULL | 实际开始时间 |
| complete_time | datetime | 否 | NULL | 完成时间 |
| diff_count | int | 否 | 0 | 差异条目数 |
| remark | varchar(512) | 否 | NULL | 备注 |
| creator | varchar(64) | 否 | NULL | 创建者 |
| create_time | datetime | 是 | CURRENT_TIMESTAMP | 创建时间 |
| updater | varchar(64) | 否 | NULL | 更新者 |
| update_time | datetime | 是 | CURRENT_TIMESTAMP | 更新时间 |
| deleted | bit(1) | 是 | 0 | 逻辑删除 |
| tenant_id | bigint | 是 | 0 | 租户 ID |
索引:uk_check_no (check_no, tenant_id)、idx_warehouse_id (warehouse_id)、idx_status (status)
wms_transfer 调拨单表
| 字段名 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
| id | bigint | 是 | 自增 | 主键 ID |
| transfer_no | varchar(32) | 是 | - | 调拨单号 |
| from_warehouse_id | bigint | 是 | - | 源仓库 ID |
| to_warehouse_id | bigint | 是 | - | 目标仓库 ID |
| status | tinyint | 是 | 0 | 状态:0-待审核 1-审核通过 2-在途中 3-已完成 4-已取消 |
| audit_user_id | bigint | 否 | NULL | 审核人 ID |
| audit_time | datetime | 否 | NULL | 审核时间 |
| out_time | datetime | 否 | NULL | 出库时间 |
| in_time | datetime | 否 | NULL | 入库时间 |
| remark | varchar(512) | 否 | NULL | 备注 |
| creator | varchar(64) | 否 | NULL | 创建者 |
| create_time | datetime | 是 | CURRENT_TIMESTAMP | 创建时间 |
| updater | varchar(64) | 否 | NULL | 更新者 |
| update_time | datetime | 是 | CURRENT_TIMESTAMP | 更新时间 |
| deleted | bit(1) | 是 | 0 | 逻辑删除 |
| tenant_id | bigint | 是 | 0 | 租户 ID |
索引:uk_transfer_no (transfer_no, tenant_id)、idx_from_warehouse_id (from_warehouse_id)、idx_to_warehouse_id (to_warehouse_id)、idx_status (status)
wms_barcode 条码表
| 字段名 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
| id | bigint | 是 | 自增 | 主键 ID |
| barcode_no | varchar(128) | 是 | - | 条码内容 |
| barcode_type | tinyint | 是 | - | 条码类型:1-物料条码 2-库位条码 3-批次条码 |
| encode_format | varchar(16) | 是 | Code128 | 编码格式 |
| ref_type | varchar(32) | 是 | - | 关联对象类型 |
| ref_id | bigint | 是 | - | 关联对象 ID |
| warehouse_id | bigint | 否 | NULL | 关联仓库 ID |
| print_count | int | 是 | 0 | 打印次数 |
| last_print_time | datetime | 否 | NULL | 最后打印时间 |
| status | tinyint | 是 | 0 | 状态:0-正常 1-作废 |
| creator | varchar(64) | 否 | NULL | 创建者 |
| create_time | datetime | 是 | CURRENT_TIMESTAMP | 创建时间 |
| updater | varchar(64) | 否 | NULL | 更新者 |
| update_time | datetime | 是 | CURRENT_TIMESTAMP | 更新时间 |
| deleted | bit(1) | 是 | 0 | 逻辑删除 |
| tenant_id | bigint | 是 | 0 | 租户 ID |
索引:uk_barcode_no (barcode_no, tenant_id)、idx_barcode_type (barcode_type)、idx_ref (ref_type, ref_id)
六、跨模块联动
6.1 联动关系
| 本模块功能 | 关联模块 | 联动方式 | 说明 |
|---|---|---|---|
| 采购入库 | ERP 采购管理(08-02) | 自动触发 | 采购到货后自动生成 WMS 入库单 |
| 销售出库 | ERP 销售管理(08-02) | 自动触发 | 销售订单审核后自动生成 WMS 出库单 |
| 生产入库/领料 | MES 制造执行(08-04) | 自动触发 | 生产完工自动生成入库单,领料需求自动生成出库单 |
| 库存预警 | ERP 采购管理(08-02) | 跳转联动 | 库存不足预警可一键发起采购 |
| 出入库操作 | 消息通知(02-03) | 事件通知 | 出入库审核、预警触发时推送通知 |
| 条码管理 | IoT 物联网(08-05) | 设备联动 | PDA 扫码设备通过 IoT 接入 WMS |
6.2 联动详情
WMS ↔ ERP 采购管理
| 联动场景 | 触发条件 | 联动行为 | 数据流向 |
|---|---|---|---|
| 采购到货入库 | ERP 采购入库单审核通过 | 自动生成 WMS 入库单,关联采购单号 | ERP → WMS |
| 库存不足触发采购 | WMS 库存低于安全下限 | 跳转 ERP 创建采购单,携带物料和建议数量 | WMS → ERP |
WMS ↔ ERP 销售管理
| 联动场景 | 触发条件 | 联动行为 | 数据流向 |
|---|---|---|---|
| 销售订单出库 | ERP 销售订单审核通过 | 自动生成 WMS 出库单,关联销售单号 | ERP → WMS |
| 出库完成回写 | WMS 出库单执行完成 | 回写 ERP 销售订单的出库状态和数量 | WMS → ERP |
WMS ↔ MES 制造执行
| 联动场景 | 触发条件 | 联动行为 | 数据流向 |
|---|---|---|---|
| 生产领料 | MES 生产工单审核通过 | 自动生成 WMS 领料出库单 | MES → WMS |
| 成品入库 | MES 生产完工报告 | 自动生成 WMS 成品入库单 | MES → WMS |
WMS → 消息通知
| 联动场景 | 触发条件 | 通知方式 | 通知对象 |
|---|---|---|---|
| 入库审核通知 | 入库单提交待审核 | 站内消息 | 审核人员 |
| 出库审核通知 | 出库单提交待审核 | 站内消息 | 审核人员 |
| 库存预警通知 | 库存触发预警规则 | 站内消息 + 短信 | 供应链主管 |
| 调拨超时预警 | 在途调拨超 3 天 | 站内消息 | 仓库管理员 |
七、附录
7.1 名词解释
| 名词 | 英文 | 通俗理解 |
|---|---|---|
| 仓库(Warehouse) | Warehouse | 存放货物的物理场所,就像一个大型快递驿站 |
| 库区(Storage Area) | Storage Area | 仓库内按功能划分的区域,比如"收货区""发货区""存储区",就像驿站里的"收件区""派件区" |
| 库位(Storage Location) | Storage Location | 货物存放的最小位置单元,精确到货架-层-位,就像快递驿站的"第 3 排架子第 2 层第 5 个格子" |
| 入库单(Stock In Order) | Stock In Order | 记录货物入库的单据,就像快递驿站的"收件登记单" |
| 出库单(Stock Out Order) | Stock Out Order | 记录货物出库的单据,就像快递驿站的"取件登记单" |
| 库存(Stock) | Stock | 某仓库某库位上某货物的存储数量和状态 |
| 库存流水(Stock Record) | Stock Record | 每次库存变动产生的记录,就像银行流水一样,记录每一笔进出 |
| 盘点(Check/Inventory) | Inventory Check | 对实际库存进行清点,与账面库存对比,就像数钱时对账本和实际现金 |
| 明盘 | Open Count | 盘点时显示账面数量,盘点人核对是否正确,像"看着答案检查作业" |
| 盲盘 | Blind Count | 盘点时不显示账面数量,盘点人如实清点,像"不看答案独立做题",更准确 |
| 调拨(Transfer) | Transfer | 在不同仓库之间移动货物,就像把货物从一个快递驿站搬到另一个 |
| 在途库存 | In-transit Stock | 已从源仓库出库但尚未到达目标仓库的货物,就像快递"在路上" |
| 波次(Wave) | Wave | 将多个出库单合并为一个拣货批次,就像把同一层的快递一次性送完 |
| 条码(Barcode) | Barcode | 标识货物/库位的编码,扫码即知全部信息,就像快递单上的条形码 |
| 安全库存 | Safety Stock | 库存预警的阈值,下限防缺货、上限防积压,就像银行账户的"最低余额"和"单日限额" |
| 库存周转率 | Inventory Turnover | 衡量货物流动速度的指标,周转率越高说明货卖得越快 |
| 仓库利用率 | Warehouse Utilization | 仓库空间使用效率,就像出租房的入住率 |
| 冻结库存 | Frozen Stock | 被锁定不能动用的库存,比如质检中的货物,就像被法院冻结的银行账户 |
| 已分配数量 | Allocated Quantity | 已分配给未完成出库单的数量,不能再被其他订单使用,就像"已承诺给别人但还没发货的货" |
| 乐观锁 | Optimistic Lock | 防止多人同时操作同一数据导致错误的机制,就像"排队叫号,一次只能一个人办理" |
| 逻辑删除 | Logical Delete | 数据不真正删除,通过标记字段表示已删除,保证数据可追溯,就像"把文件放进碎纸机前的回收站" |
7.2 权限标识汇总
| 权限标识 | 说明 | 所属功能 |
|---|---|---|
| wms:warehouse:query | 查看仓库列表和详情 | 仓库管理 |
| wms:warehouse:create | 创建仓库 | 仓库管理 |
| wms:warehouse:update | 编辑仓库 | 仓库管理 |
| wms:warehouse:delete | 删除仓库 | 仓库管理 |
| wms:storage-area:query | 查看库区 | 库位管理 |
| wms:storage-area:create | 创建库区 | 库位管理 |
| wms:storage-area:update | 编辑库区 | 库位管理 |
| wms:storage-area:delete | 删除库区 | 库位管理 |
| wms:storage-location:query | 查看库位 | 库位管理 |
| wms:storage-location:create | 创建库位 | 库位管理 |
| wms:storage-location:update | 编辑库位 | 库位管理 |
| wms:storage-location:delete | 删除库位 | 库位管理 |
| wms:stock-in-order:query | 查看入库单 | 入库管理 |
| wms:stock-in-order:create | 创建入库单 | 入库管理 |
| wms:stock-in-order:audit | 审核入库单 | 入库管理 |
| wms:stock-in-order:execute | 执行入库 | 入库管理 |
| wms:stock-in-order:export | 导出入库单 | 入库管理 |
| wms:stock-out-order:query | 查看出库单 | 出库管理 |
| wms:stock-out-order:create | 创建出库单 | 出库管理 |
| wms:stock-out-order:audit | 审核出库单 | 出库管理 |
| wms:stock-out-order:execute | 执行出库 | 出库管理 |
| wms:stock-out-order:export | 导出出库单 | 出库管理 |
| wms:stock:query | 查看库存 | 库存管理 |
| wms:stock:freeze | 冻结库存 | 库存管理 |
| wms:stock:unfreeze | 解冻库存 | 库存管理 |
| wms:stock:alert-rule | 管理库存预警规则 | 库存管理 |
| wms:check:query | 查看盘点单 | 库存盘点 |
| wms:check:create | 创建盘点单 | 库存盘点 |
| wms:check:audit | 审核盘点单 | 库存盘点 |
| wms:transfer:query | 查看调拨单 | 库存调拨 |
| wms:transfer:create | 创建调拨单 | 库存调拨 |
| wms:transfer:audit | 审核调拨单 | 库存调拨 |
| wms:transfer:execute | 执行调拨 | 库存调拨 |
| wms👋query | 查看波次 | 波次管理 |
| wms👋generate | 生成波次 | 波次管理 |
| wms👋rule | 管理波次规则 | 波次管理 |
| wms:barcode:query | 查看条码 | 条码管理 |
| wms:barcode:generate | 生成条码 | 条码管理 |
| wms:barcode:print | 打印条码 | 条码管理 |
| wms:statistics:query | 查看 WMS 统计 | WMS 统计 |