
欢迎来到预见猿份,本站项目均为站长原创,学习中有问题可直接提交给站长老苗解决(微信:mrt_0607)。
苗润土老师,20余年一线项目经验,2014年加入黑马,星辰wms、云岚到家、学成在线项目作者,历任高级讲师、教学主管及课程研究员。 b站老苗
创新WMS需求规格说明书
1 引言
1.1 目的
本需求规格说明书旨在明确仓库管理系统(WMS)的功能需求、非功能需求及系统约束,为系统设计、开发、测试及验收提供依据。本文档面向业务部门、IT团队、开发人员及测试团队,确保各方对系统需求达成一致理解。
1.2 范围
本WMS系统适用于[企业/组织名称]的仓库管理业务,涵盖以下核心功能:
- 入库管理(收货、质检、上架)
- 库存管理(库存查询、盘点、调拨)
- 出库管理(拣货、包装、发货)
- 报表分析(库存报表、作业效率分析)
- 系统集成(与ERP、TMS、OMS等系统对接)
1.3 目标
- 提升仓库作业效率,降低人工错误率
- 实现库存实时可视化,提高库存准确性
- 优化仓储作业流程,支持企业业务扩展
- 提供数据分析和决策支持能力
- 读者对象
- 业务方(仓库管理人员、采购/销售部门)——确认业务流程需求
- IT/开发团队——依据需求进行系统设计与开发
- 测试团队——制定测试用例,确保系统符合需求
- 项目管理人员——跟踪项目进度,确保需求落地
1.4 术语与缩写
| 术语/缩写 | 说明 |
|---|---|
| WMS | 仓库管理系统(Warehouse Management System) |
| ERP | 企业资源计划系统(Enterprise Resource Planning) |
| TMS | 运输管理系统(Transportation Management System) |
| OMS | 订单管理系统(Order Management System) |
| RFID | 射频识别技术(Radio Frequency Identification) |
| AS/RS | 自动化仓储系统(Automated Storage and Retrieval System) |
2 系统介绍
2.1 概述
WMS( Warehouse Management System)即仓库管理系统,它是一套专门用于管理仓库操作的软件系统,它通过自动化和系统化的方式,帮助企业优化库存管理、订单处理、货物接收与发货、仓库布局优化等关键环节,提高仓库运营效率和准确性。
2.2 系统架构
业务架构:

技术架构:
主流技术栈全覆盖,涵盖AI、自动化、无代码等前沿技术,无缝对接企业需求,采用Spring Boot、MySQL、Redis、RabbitMQ、K8s主流技术,讲解企业级解决方案,多租户SaaS架构设计、高并发高可用方案等。

2.3 Q&A
Q:WMS 系统主要应用于哪些企业?
并不是只有“大企业”才配用WMS,其实只要你的仓库超过一定规模,有一定货品周转率,那就该上WMS了,以下几个行业特别适合:
- 电商行业:订单量大、SKU多、发货频繁,WMS绝对是救命稻草
- 制造业:原材料、半成品、成品分仓管理,需要精准控制
- 医药行业:对批次、有效期要求高,WMS能严控流程
- 食品冷链:需要温区管理、先进先出、保质期管理
- 第三方物流(3PL):多客户、多仓库,WMS能帮你做出专业服务
Q:WMS 系统主要由哪些模块构成?
A:WMS 系统一般包含入库管理模块,负责处理货物接收、质检、上架等流程;出库管理模块,用于安排订单拣选、包装、发货等操作;库存管理模块,实现库存数量监控、库存预警、库存调整等功能;此外还有盘点管理模块、报表管理模块等,各模块协同运作,保障仓库管理的流畅性。
Q:WMS 系统适用于哪些行业场景?
A:WMS 系统广泛应用于电商、物流、制造业、零售等多个行业。电商行业中,面对海量订单,WMS 能快速处理货物出入库;物流企业利用 WMS 优化仓储资源配置,提升转运效率;制造业可借助 WMS 管理原材料及成品库存,保障生产连续性;零售行业通过 WMS 实时掌握商品库存,优化补货策略。
Q:使用 WMS 系统能为企业带来哪些显著优势?
A:企业使用 WMS 系统可提高仓库作业效率,减少人工操作失误,降低人力成本;实现库存的精准管理,避免库存积压或缺货情况,提升库存周转率;同时,系统生成的各类数据报表能为企业决策提供有力支持,助力企业优化业务流程,增强市场竞争力。
Q:WMS 系统与其他企业管理系统(如 ERP)如何集成?
A:WMS 系统可与 ERP 系统通过接口实现数据交互。例如,ERP 系统将采购订单、销售订单等信息传递给 WMS 系统,WMS 系统则把库存状态、出入库结果反馈给 ERP 系统。两者集成后,能打破信息孤岛,实现企业整体业务流程的无缝衔接,提升企业运营管理的一体化水平。
Q: WMS(仓库管理系统)主要有以下几种部署模式:
- 本地部署(On-Premises)
- 系统安装在企业自有的服务器上
- 数据存储在本地
- 需要企业自行维护硬件和软件
- 前期投入成本较高
- 适合对数据安全性要求高的大型企业
- 云端部署(Cloud-Based)
- SaaS(软件即服务)模式
- 通过互联网访问
- 供应商负责维护和升级
- 按需付费,前期投入低
- 适合中小型企业或需要快速上线的场景
- 混合部署(Hybrid)
- 部分功能在云端,部分在本地
- 结合了本地部署的安全性和云部署的灵活性
- 适合有特殊合规要求或部分业务需要本地化的企业
Q: 用了WMS系统能给企业带来什么好处
1.效率大幅提升
以前3个人一天拣货100单,现在1个人能搞定。
2.出错率直线下降
错发漏发的几率几乎为0,提升客户满意度。
3.成本控制明显
人力节省、库位优化、库存预警都能帮你省钱。
4.管理更透明
库存、订单、效率数据一目了然,随时看。
5.业务抗压能力强
双11、年终促销,不怕爆单,系统调度应对得来。
3 功能用例
3.1 储位管理
3.1.1 仓库管理
| 名称 | 仓库管理 |
|---|---|
| 优先级 | 高 |
| 功能描述 | 仓库中划分多个储区,储区内划分多个储位,在wms中是对储位上的商品进行管理,所以要管理储位信息需要维护仓库和储区,本用例旨在描述管理仓库信息的需求。 |
| 参与者 | 管理员 |
| 前置条件 | 拥有功能的操作权限 仓库代码在系统唯一 仓库状态为“创建”时方可删除 启用后仓库信息不允许修改 |
| 事件流(操作序列) | 1. 进入仓库管理界面 1. 添加仓库 1. 修改仓库 1. 删除仓库 |
| 可选事件流 | |
| 后置条件 | 增删改查仓库表 新增仓库的状态默认为“创建” |
| 数据描述 | ![]() ![]() 表结构: create table wms_warehouses ( id varchar(36) not null primary key, create_by varchar(50) null comment '创建人', create_time datetime null comment '创建日期', update_by varchar(50) null comment '更新人', update_time datetime null comment '更新日期', sys_org_code varchar(64) null comment '所属部门', warehouse_code varchar(50) not null comment '仓库代码', warehouse_name varchar(100) not null comment '仓库名称', warehouse_attr varchar(50) not null comment '仓库属性', status varchar(32) null comment '状态: 0-禁用, 1-启用' ); 仓库代码:根据仓库的具体情况手工编码,下图中是储位编码,包括三部分,第一部分为仓库编码,第二部分为储区编码,第三部分为储位编码。 ![]() 上图中Z1、Z2、GZ都是仓库的编码。 Z1A1-03-07为储位编码。 仓库属性: ![]() 仓库状态: ![]() |
| 补充说明 | 1. 平仓(平面仓库) - 结构特点 - 适用场景 - 大件、重型且规则货物(如钢材、建材)。 - 存储品类单一、周转率低的场景。 - 优缺点 1. 轻型货架 - 结构特点 - 材质:通常为钢制或轻型合金,承重≤200kg/层。 - 高度:一般≤3米,人工存取为主。 - 适用场景 - 小件、轻量货物(如文档、工具、电子元件)。 - 办公室仓库、零售店后仓等小规模存储。 - 优缺点 1. 重型货架(横梁式货架) - 结构特点 - 材质:高强度钢材,承重可达1~5吨/层。 - 高度:通常5~10米,需配合叉车(如高位叉车)使用。 - 设计:多层横梁+托盘,货位可调节。 - 适用场景 - 托盘化存储的大宗货物(如家电、食品箱装货)。 - 制造业、物流中心等高频周转场景。 - 优缺点 1. 立体货架(自动化立体仓库) - 结构特点 - 高度:10~30米,搭配自动化设备(堆垛机、输送带)。 - 技术:集成WMS系统,实现全自动化存取。 - 适用场景 - 高密度存储、高频次作业(如电商、医药冷链)。 - 土地成本高的地区(最大化垂直空间利用)。 - 优缺点 ![]() 重型货架 ![]() 轻型货架 ![]() |
| 修改历史 |
3.1.2 启用/禁用仓库
| 名称 | 启用/禁用仓库 |
|---|---|
| 优先级 | 高 |
| 功能描述 | 仓库创建成功状态为“创建”状态,启用后方可使用,禁用后不可使用。 |
| 参与者 | 管理员 |
| 前置条件(约束) | 选择一个仓库 仓库状态为“创建”或禁用时方可启用 仓库状态为“启用”时方可禁用 |
| 事件流(操作序列) | 1. 进入仓库管理界面 1. 启用仓库 1. 禁用仓库 |
| 可选事件流 | |
| 后置条件 | 更新仓库状态 |
| 数据描述 | 仓库状态:![]() |
| 补充说明 | ![]() ![]() ![]() |
| 修改历史 |
3.1.3 储区管理
| 名称 | 储区管理 |
|---|---|
| 优先级 | 高 |
| 功能描述 | 管理储区信息 |
| 参与者 | 管理员 |
| 前置条件 | 添加储区需要选择仓库 删除和编辑储区需要指定具体的储区 状态为“创建”时方可删除 |
| 事件流(操作序列) | 1. 进入储区管理界面 1. 添加储区 1. 修改储区 1. 删除储区 |
| 可选事件流 | |
| 后置条件 | 增删改查储区表 |
| 数据描述 | ![]() ![]() 表结构: create table wms_storage_zones ( id varchar(36) not null primary key, create_by varchar(50) null comment '创建人', create_time datetime null comment '创建日期', update_by varchar(50) null comment '更新人', update_time datetime null comment '更新日期', zone_code varchar(50) not null comment '储区编码', zone_name varchar(100) not null comment '储区名称', zone_type varchar(50) not null comment '储区类型', status varchar(1) default '1' not null comment '状态: 0-禁用, 1-启用', is_sellable varchar(1) null comment '是否可售库存 0-否, 1-是', warehouse_id varchar(32) not null comment '所属仓库' ); 储区代码:根据需求手工编码,下图中为储位编码,Z1A1-03、Z2B、Z1A、GZ-02都是储区的编码。 ![]() 库区状态: ![]() |
| 补充说明 | 不同的储区类型有什么作用? ** 暂存区 (Staging Area) - 定义 - 主要功能 - 作为货物入库时的临时中转区域 - 用于出库前的货物暂存和复核 - 质检前的待检区域 - 退货处理前的暂存位置 - 特点 - 货物停留时间短(通常1-3天) - 周转频率高 - 一般不进行长期存储 - 通常靠近仓库出入口 存储区 (Storage Area) - 定义 - 主要功能 - 用于商品的长期保管 - 保持合理库存水平 - 按商品特性分类存放(如温度分区) - 特点 - 货物存放时间较长 - 存储密度高 - 通常采用高位货架或密集存储 - 存取频率相对较低 - 需要严格的库存管理 拣选区 (Picking Area)** - 定义 - 主要功能 - 快速完成订单拣选 - 存放高周转率商品 - 支持多种拣货策略(单品拣选、批量拣选等) - 特点 - 存放畅销品或高频次商品 - 货物周转非常快 - 通常采用流动式货架或地堆方式 - 设计注重拣货效率和人机工程学 - 通常靠近包装区 |
| 修改历史 |
3.1.4 启用/禁用储区
参考“启用/禁用仓库”
3.1.5 储位管理
| 名称 | 储位管理 |
|---|---|
| 优先级 | 高 |
| 功能描述 | 管理储位信息 |
| 参与者 | 管理员 |
| 前置条件 | 添加储位需要选择仓库及储区 删除和编辑储位需要指定具体的储位 启用的储位不允许修改储位编码、库位类别、库位类型、状态、所属仓库、所属库区 |
| 事件流(操作序列) | 1. 进入储位管理界面 1. 添加储位 1. 修改储位 1. 删除储位 |
| 可选事件流 | |
| 后置条件 | 增删改查储位表 |
| 数据描述 | ![]() ![]() 表结构: create table wms_storage_locations ( id varchar(36) not null primary key, create_by varchar(50) null comment '创建人', create_time datetime null comment '创建日期', update_by varchar(50) null comment '更新人', update_time datetime null comment '更新日期', sys_org_code varchar(64) null comment '所属部门', location_code varchar(50) null comment '库位编码', location_category varchar(100) null comment '储位类别', location_type varchar(50) null comment '库位类型', status varchar(1) null comment '状态', zone_id varchar(32) null comment '所属库区', location_aisle varchar(32) null comment '巷道', location_line varchar(32) null comment '排', location_rank varchar(32) null comment '列', location_layer varchar(32) null comment '层', location_length double(10, 0) null comment '长', location_width double(10, 0) null comment '宽', location_capacity double(10, 0) null comment '容积', load_capacity double(10, 0) null comment '称重', is_sellable varchar(32) null comment '是否可售', warehouse_id varchar(32) null comment '所属仓库' ); 储位代码:根据需求手工编码,下图中Z1A1-03-07、Z2B-08-12-8为储位编码。 ![]() 储位类型: ![]() 储位类别: ![]() |
| 补充说明 | ![]() |
| 修改历史 |
3.1.6 启用/禁用储位
参考“启用/禁用仓库”
3.1.7 打印储位条码
| 名称 | 打印储位条码 |
|---|---|
| 优先级 | 高 |
| 功能描述 | 管理员通过本功能打印储位条码,将条码粘贴至储位上方便拣货 |
| 参与者 | 管理员 |
| 前置条件 | 拥有本功能的操作权限 |
| 事件流(操作序列) | 1. 进入储位管理界面 1. 输入查询条件,查询储位信息 1. 点击打印,将符合条件的储位全部打印 |
| 可选事件流 | |
| 后置条件 | 打印储位信息 |
| 数据描述 | 打印储位样式,采用Code 128B格式。![]() |
| 补充说明 | |
| 修改历史 |
3.2 主档管理
3.2.1 货主管理
| 名称 | 货主管理 |
|---|---|
| 优先级 | 高 |
| 功能描述 | 管理商品的货主信息 |
| 参与者 | 管理员 |
| 前置条件 | |
| 事件流(操作序列) | 1. 进入货主管理界面 1. 添加货主 1. 修改货主 1. 删除货主 |
| 可选事件流 | |
| 后置条件 | 增删改查货主表 |
| 数据描述 | create table wms_cargo_owners ( id varchar(36) not null primary key, create_by varchar(50) null comment '创建人', create_time datetime null comment '创建日期', update_by varchar(50) null comment '更新人', update_time datetime null comment '更新日期', sys_org_code varchar(64) null comment '所属部门', owner_code varchar(32) null comment '货主编码', owner_name varchar(100) null comment '货主名称', country varchar(50) null comment '国家', city varchar(50) null comment '城市', address varchar(200) null comment '地址', postal_code varchar(32) null comment '邮编', email varchar(32) null comment '邮箱', phone varchar(32) null comment '电话', legal_person varchar(32) null comment '法人代表', contact_person varchar(32) null comment '联系人', contact_phone varchar(50) null comment '联系人电话', license_number varchar(32) null comment '许可证号码', license_valid_date date null comment '许可证有效期', license_attachment varchar(255) null comment '许可证附件', usci varchar(50) null comment '统一社会信用代码', business_license_attachment varchar(255) null comment '营业执照附件路径', settlement_currency varchar(32) null comment '结算币种', remarks varchar(32) null comment '备注', status varchar(32) null comment '状态', constraint wms_cargo_owners_unique1 unique (owner_code) ); 货主编码:C*+5位序号* |
| 补充说明 | ![]() ![]() |
| 修改历史 |
3.2.2 商品类别管理
| 名称 | 商品类别管理 |
|---|---|
| 优先级 | 高 |
| 功能描述 | 维护商品的类别 |
| 参与者 | 管理员 |
| 前置条件 | 添加下级分类需要选择父类 状态为“创建”方可删除 修改时不允许修改编码 |
| 事件流(操作序列) | 1. 进入商品类别管理界面 1. 添加类别 1. 可选择父分类 1. 修改类别 1. 删除类别 |
| 可选事件流 | |
| 后置条件 | 增删改查商品类别表 类别的编码自动生成 |
| 数据描述 | 商品分类表: create table wms_product_categories ( id varchar(36) not null primary key, create_by varchar(50) null comment '创建人', create_time datetime null comment '创建日期', update_by varchar(50) null comment '更新人', update_time datetime null comment '更新日期', sys_org_code varchar(64) null comment '所属部门', category_name varchar(50) not null comment '类别名称', parent_id varchar(32) not null comment '父节点', status varchar(32) not null comment '状态', has_child varchar(3) null comment '是否有子节点', category_code varchar(32) not null comment '节点编码' ); 分类为多级分类。 类别编码: 第一级分类为两位编号,第二级分类为一级分类编码+二级分类编码(2位),依次类推 正常情况下一个空的分类表,一级分类自动生成,按按01、02、03。。。这样的顺序生成。 示例如下: ![]() |
| 补充说明 | 查询列表:![]() 新增: 商品状态CREATED: 创建ACTIVE:启用INACTIVE:禁用 ![]() 添加下级: ![]() 编辑: ![]() 父节点选择通过树形选择: ![]() |
| 修改历史 |
3.2.4 商品品牌管理
| 名称 | 商品品牌管理 |
|---|---|
| 优先级 | 高 |
| 功能描述 | 管理商品品牌信息 |
| 参与者 | 管理员 |
| 前置条件 | |
| 事件流(操作序列) | 1. 进入商品品牌管理界面 1. 添加商品品牌 1. 修改商品品牌 1. 删除商品品牌 |
| 可选事件流 | |
| 后置条件 | 增删改查商品品牌表 |
| 数据描述 | create table wms_product_brand ( id varchar(36) not null primary key, create_by varchar(50) null comment '创建人', create_time datetime null comment '创建日期', update_by varchar(50) null comment '更新人', update_time datetime null comment '更新日期', sys_org_code varchar(64) null comment '所属部门', name varchar(128) not null comment '品牌名称', logo varchar(128) not null comment '品牌logo', status varchar(32) not null comment '状态' ); |
| 补充说明 | ![]() ![]() ![]() |
| 修改历史 |
3.2.2 商品管理
| 名称 | 商品管理 |
|---|---|
| 优先级 | 高 |
| 功能描述 | 管理仓库中存放的商品sku信息 |
| 参与者 | 管理员 |
| 前置条件 | 货主id+商品编码全局唯一 商品条码全局唯一 |
| 事件流(操作序列) | 1. 进入商品管理界面 1. 添加商品 1. 修改商品 1. 删除商品 |
| 可选事件流 | |
| 后置条件 | 增删改查商品表 |
| 数据描述 | create table wms_products ( id varchar(36) not null primary key, create_by varchar(50) null comment '创建人', create_time datetime null comment '创建日期', update_by varchar(50) null comment '更新人', update_time datetime null comment '更新日期', sys_org_code varchar(64) null comment '所属部门', product_name varchar(100) not null comment '商品名称', owner_id varchar(32) not null comment '货主id', product_code varchar(64) null comment '商品编码', product_barcode varchar(64) null comment '商品条码', width double(10, 0) null comment '宽', length double(10, 0) null comment '长', height double(10, 0) null comment '高', volume double(10, 0) null comment '体积', gross_weight double(10, 0) null comment '毛重', net_weight double(10, 0) null comment '净重', category_id varchar(32) null comment '商品一级分类id', packaging_spec varchar(100) null comment '包装规格', maintenance_cycle int null comment '养护周期(天)', shelf_life int null comment '保质期(天)', unit varchar(32) null comment '计量单位', is_expiry_controlled int null comment '是否保质期管控', status varchar(32) null comment '状态' ); 约束: 每个货主可以定义自己的商品编码,货主+商品编码在数据库组合唯一。 商品条码用于出入库扫描,采用code128格式,条码在数据库全局唯一。 商品条码:编码规则:6位货主编码+4位商品类别+6位序号 商品编码:录入、导入或接口对接,即电商平台的sku编码 |
| 补充说明 | ![]() ![]() ![]() |
| 修改历史 |
3.2.3 商品图片管理
| 名称 | 商品图片管理 |
|---|---|
| 优先级 | 高 |
| 功能描述 | 管理商品的图片,一个商品可以有多个图片 |
| 参与者 | 管理员 |
| 前置条件 | 选择一个商品去管理此商品的图片 一个商品只允许有一个默认图片 |
| 事件流(操作序列) | 1. 进入商品管理界面 1. 点击“商品图片” 1. 添加图片 1. 删除图片 1. 修改图片 |
| 可选事件流 | |
| 后置条件 | 增删改查商品图片表 商品图片可存储于OSS或MinIO服务中。 |
| 数据描述 | create table wms_product_images ( id varchar(36) not null primary key, create_by varchar(50) null comment '创建人', create_time datetime null comment '创建日期', update_by varchar(50) null comment '更新人', update_time datetime null comment '更新日期', sys_org_code varchar(64) null comment '所属部门', product_id varchar(32) null comment '商品id', original varchar(255) null comment '原始图片地址', is_default varchar(1) null comment '是否默认图片', small varchar(255) null comment '小图路径', thumbnail varchar(255) null comment '缩略图路径' ); |
| 补充说明 | 图片列表:![]() 新增图片: ![]() |
| 修改历史 |
3.2.6 打印商品条码
| 名称 | 打印商品条码 |
|---|---|
| 优先级 | 高 |
| 功能描述 | 每个商品有自己的唯一条码,在商品入库、出库时通过PDA扫描商品条码,本用例为打印商品条码的需求 |
| 参与者 | 管理员 |
| 前置条件 | 选择一个或多个商品打印条码 |
| 事件流(操作序列) | 1. 进入商品管理界面 1. 点击“打印条码” 1. 打印预览 1. 选择打印机进行打印 |
| 可选事件流 | |
| 后置条件 | 打印商品条码 |
| 数据描述 | 商品条码组成:6位货主编码+4位商品类别+6位序号 样式: ![]() 标签尺寸(常用50×30mm或100×60mm) |
| 补充说明 | |
| 修改历史 |
3.3 入库管理
3.3.1 入库单
3.3.3.1 创建入库单
| 名称 | 创建入库单 |
|---|---|
| 优先级 | 高 |
| 功能描述 | 入库操作需要通过入库单记录,入库单的创建方式如下: 采购人员根据供应商的送货通知,在WMS中创建入库单 ERP与WMS集成时,采购单审核后自动推送入库单到WMS。 |
| 参与者 | 管理员 |
| 前置条件 | 拥有此功能的操作权限 入库单号全局唯一 |
| 事件流(操作序列) | 1. 进入入库单查询页面 1. 点击新增,打开添加页面 1. 填写入库单基本信息 1. 点击“确认” 1. 点击“编辑”进入修改页面 1. 添加入库商品明细,输入商品的采购数量 1. 点击“确认” |
| 可选事件流 | |
| 后置条件 | 向入库单表添加一条记录: 默认初始状态 入库单号自动生成: 规则:ASN+8位年月日+4位序号 |
| 数据描述 | 添加:![]() 修改: ![]() 入库单信息: create table wms_stock_in_orders ( id varchar(36) not null primary key, create_by varchar(50) null comment '创建人', create_time datetime null comment '创建日期', update_by varchar(50) null comment '更新人', update_time datetime null comment '更新日期', sys_org_code varchar(64) null comment '所属部门', order_number varchar(50) null comment '入库单号', order_type varchar(32) null comment '入库类型', source_number varchar(50) null comment '来源单号', owner_id varchar(32) null comment '货主id', expected_arrival_time datetime null comment '预计到货时间', status varchar(32) null comment '状态', remarks varchar(500) null comment '备注', total_expected_quantity int default 0 null comment '预期总数量(冗余字段)', total_received_quantity int default 0 null comment '实际收货总量', total_shelved_quantity int default 0 null comment '已上架总量', total_defective_quantity int default 0 null comment '不良品总数量(冗余字段)' ); 约束: 入库单号全局唯一。 入库单号生成规则 共12位,由年月日+4位序号 4位序号 使用redis 自增序列实现 key: 8位年月日 value: 4位序号 入库单状态: ![]() 初始:入库单创建成功为初始状态 提交审核:提交入库单给审核人员,提交审核后方可审核入库单 审核通过:审核人员审核入库单通过,审核通过的入库单才可以进行收货 审核失败:审核人员审核入库单失败,审核失败的入库单可以重新再提交变为提交审核状态 收货中:收货后更新,收了几笔货但还没有收完 收货完成:收货后更新,计划收货数量和实际收货数量相同,系统自动设置为收货完成 上架中:收货完成进行上架,上架数量小于收货数量时 上架完成:上架数量等于收货数量时 已关闭:执行关闭入库单,实际收货数量小于计划收货数量由人工执行关闭动作 已作废:删除采购单 入库单类型:采购入库、退货入库、其它入库 |
| 补充说明 | 关于商品批次: 在入库时可以指定商品批次,商品批次号是用于标识同一商品不同生产或采购批次的唯一编码,用于实现库存的精细化管理和追溯。 商品批次号的作用 1. 库存标识,同一个商品批次不同则需要在库存中标识清楚不同批次的库存数量,比如:01商品,202508批次100个,202509批次150个。 1. 质量追溯:快速定位问题批次(如保质期、质量问题)。 1. 先进先出(FIFO):确保先入库的商品先出库,避免过期。 1. 效期管理:区分不同保质期的同种商品。 1. 供应商管理:记录不同供应商的批次差异。 入库时绑定批次号 - 采购入库:收货输入商品的收货数量及批次号以及保质期等信息。 WMS操作示例 SKU: ITEM123(500ml矿泉水) 批次号: 20240501 数量: 100箱 生产日期: 2024-05-01 保质期: 12个月 - 按批次分区存放:同一SKU不同批次分库位存放,避免混批。 示例 - 库位A01:存放批次 20240501- 库位A02:存放批次 20240515 |
| 修改历史 |
3.3.3.2 入库单查询
| 名称 | 入库单查询 |
|---|---|
| 优先级 | 高 |
| 功能描述 | 管理员查询入库单 |
| 参与者 | 管理员 |
| 前置条件 | 拥有此操作的权限 |
| 事件流(操作序列) | 1. 进入入库单查询页面 1. 输入查询条件查询入库单 |
| 可选事件流 | |
| 后置条件 | 分页查询入库单主表在页面显示 点击“详情”查询单条入库单主表并根据入库单id查询入库单明细 |
| 数据描述 | ![]() |
| 补充说明 | |
| 修改历史 |
3.3.3.3 修改入库单
| 名称 | 修改入库单 |
|---|---|
| 优先级 | 高 |
| 功能描述 | 管理员修改入库单 |
| 参与者 | 管理员 |
| 前置条件 | 拥有此操作的权限 初始状态、审核失败状态可以修改 入库单明细至少添加一条 同一个入库单的明细中商品唯一 |
| 事件流(操作序列) | 1. 进入入库单查询页面 1. 点击“编辑”修改入库单 1. 修改入库单信息及入库商品明细 1. 点击“确认” |
| 可选事件流 | |
| 后置条件 | 入库单基本信息:更新入库单基本信息、预期入库总量 入库单明细:先删后插:先删除入库商品明细再添加入库单明细信息 向入库单明细表添加记录一条或多条记录: 入库单明细默认初始状态 |
| 数据描述 | 入库单明细信息: create table wms_stock_in_order_items ( id varchar(36) not null primary key, create_by varchar(50) null comment '创建人', create_time datetime null comment '创建日期', update_by varchar(50) null comment '更新人', update_time datetime null comment '更新日期', sys_org_code varchar(64) null comment '所属部门', order_id varchar(32) null comment '入库单id', product_id varchar(32) null comment '商品id', expected_quantity int default 0 null comment '采购数量', received_quantity int default 0 null comment '实际收货数量', shelved_quantity int default 0 null comment '上架数量', defective_quantity int default 0 null comment '不良品数量', remarks varchar(255) null comment '备注', status varchar(32) null comment '状态' ); 约束: 同一个入库单下商品唯一。 入库单明细状态: ![]() 初始:同主表 收货中:同主表 收货完成:同主表 上架完成:上架数量等于收货数量 已关闭:同主表 已作废:同主表 |
| 补充说明 | 修改:![]() |
| 修改历史 |
3.3.3.4 删除入库单
| 名称 | 删除入库单 |
|---|---|
| 优先级 | 高 |
| 功能描述 | 管理员删除入库单 |
| 参与者 | 管理员 |
| 前置条件 | 拥有此操作的权限 初始状态、审核失败状态可以删除 |
| 事件流(操作序列) | 1. 进入入库单查询页面 1. 选择一个入库单 1. 点击“删除” |
| 可选事件流 | |
| 后置条件 | 删除入库单基本信息 删除入库单明细信息 |
| 数据描述 | |
| 补充说明 | |
| 修改历史 |
3.3.3.5 提交审核入库单
| 名称 | 入库单提交审核 |
|---|---|
| 优先级 | 高 |
| 功能描述 | 入库单编辑完成提交审核,由审核人员进行审核 |
| 参与者 | 管理员 |
| 前置条件 | 拥有此操作的权限 选择一个入库单 初始状态、审核失败状态可以提交审核 |
| 事件流(操作序列) | 1. 进入入库单查询页面 1. 选择一个入库单 1. 点击“提交审核” |
| 可选事件流 | |
| 后置条件 | 入库单状态由初始状态、审核失败状态更新为“提交审核” |
| 数据描述 | ![]() ![]() ![]() |
| 补充说明 | |
| 修改历史 |
3.3.3.6 审核入库单
| 名称 | 入库单审核 |
|---|---|
| 优先级 | 高 |
| 功能描述 | 审核人员审核入库单 |
| 参与者 | 管理员 |
| 前置条件 | 拥有此操作的权限 选择一个入库单 入库单下必须有入库明细 “提交审核”状态的入库单方可审核 |
| 事件流(操作序列) | 1. 进入入库单查询页面 1. 选择一个入库单 1. 点击“审核”,打开审核页面 1. 选择审核结果(审核通过、审核不通过) 1. 点击“确认” |
| 可选事件流 | |
| 后置条件 | 入库单状态由提交审核状态更新为“审核通过”、或“审核失败” |
| 数据描述 | ![]() ![]() |
| 补充说明 | |
| 修改历史 |
3.3.3.7 打印入库单
| 名称 | 打印入库单 |
|---|---|
| 优先级 | 高 |
| 功能描述 | 打印入库单可以做到收货核验,供应商/司机现场签字确认实收数量,避免后续争议,另外审计追溯也需要,纸质单据作为物理证据,在供应链纠纷(如货损、批次争议)时比电子记录更易被司法采信。 |
| 参与者 | 管理员 |
| 前置条件 | 拥有此操作的权限 选择一个入库单 |
| 事件流(操作序列) | 1. 进入入库单查询页面 1. 选择一个入库单 1. 点击“打印”,选择打印方式 1. 点击“确认” |
| 可选事件流 | |
| 后置条件 | 连接打印机打印入库单的内容 |
| 数据描述 | ![]() ![]() |
| 补充说明 | |
| 修改历史 |
3.3.2 收货
3.3.2.1 创建收货任务
| 名称 | 创建收货任务 |
|---|---|
| 优先级 | 高 |
| 功能描述 | 当货物到达仓库时管理员创建收货任务,工作人员分配到任务后去现场收货 |
| 参与者 | 管理员 |
| 前置条件 | 拥有此操作的权限 选择一个或多个入库单 “审核通过”状态的入库单方可创建收货任务 选择任务执行人 |
| 事件流(操作序列) | 1. 进入入库单查询页面 1. 选择一个或多个入库单 1. 点击“创建收货任务”,打开创建收货任务窗口 1. 选择任务执行人 1. 点击“确定” |
| 可选事件流 | |
| 后置条件 | 更新入库单状态为“收货中” 更新入库单下的入库单明细状态为“收货中” 根据入库单明细向任务表添加收货任务,有几条入库单明细添加几条收货任务。 |
| 数据描述 | 任务表: 任务表存储了收货任务、上架任务、拣货任务等多种任务,及任务相关的字段。 create table wms_tasks ( id varchar(36) not null primary key, create_by varchar(50) null comment '创建人', create_time datetime null comment '创建日期', update_by varchar(50) null comment '更新人', update_time datetime null comment '更新日期', sys_org_code varchar(64) null comment '所属部门', task_number varchar(32) null comment '任务号', task_type varchar(32) null comment '任务类型', task_status varchar(32) null comment '任务状态', product_id varchar(32) null comment '商品id', quantity int null comment '数量', completed_quantity int null comment '完成数量', source_location_code varchar(32) null comment '来源储位编码', target_location_code varchar(32) null comment '目的储位编码', source_container_code varchar(32) null comment '来源容器编码', target_container_code varchar(32) null comment '目的容器编码', operator varchar(32) null comment '执行人', operation_time datetime null comment '执行时间', completed_at datetime null comment '完成时间', stock_in_order_id varchar(32) null comment '入库单id', stock_in_order_item_id varchar(32) null comment '入库明细id', wave_order_id varchar(32) null comment '波次单id', batch_number varchar(32) null comment '批次号', expiry_date date null comment '保质期', out_order_id varchar(32) null comment '出库单id', wave_sku_summary_id varchar(32) null comment '波次拣货明细id' ); 任务号规则: TSK+年月日+5位序号 任务状态: ![]() 已创建:初始状态 已指派:指派给工作人员 执行中: 未完成任务时 已完成:完成任务状态 作废 |
| 补充说明 | ![]() 选择执行人: ![]() |
| 修改历史 |
3.3.2.2 查询收货任务
| 名称 | 查询收货任务 |
|---|---|
| 优先级 | 高 |
| 功能描述 | 管理员查询待收货的任务 |
| 参与者 | 管理员,工人 |
| 前置条件 | 查询任务类型为“收货任务”的任务 工人只允许查询指派给自己的任务 |
| 事件流(操作序列) | 1. 点击“收货”菜单进入待收货查询页面 1. 分页查询任务 |
| 可选事件流 | |
| 后置条件 | 分页查询任务表 |
| 数据描述 | ![]() 详细信息: ![]() |
| 补充说明 | |
| 修改历史 |
3.3.2.3 PC收货
| 名称 | PC收货 |
|---|---|
| 优先级 | 高 |
| 功能描述 | 商品到达仓库后进行收货,对商品进行验收,将商品放在暂存区,本用例 描述PC端收货功能 |
| 参与者 | 工人 |
| 前置条件 | 该入库单某商品的收货总数量不能大于该商品的采购数量 选择一个收货任务 收货数量小于等于采购数量 不良品不允许放在可售储位 |
| 事件流(操作序列) | 1. 进入待收货查询页面 1. 选择一个收货任务 1. 点击“收货” 1. 输入收货数量、储位等信息、批次号等 1. 点击“确认” |
| 可选事件流 | |
| 后置条件 | 1. 添加一条收货记录 同一个入库单最终可能添加多条收货记录,因为分多次收货了,比如:一个批次的商品收货一次。 1. 更新收货任务 内容:目的储位、收货数量、批号、过期时间等 1. 更新入库单明细 更新入库单明细收货数量、不良品数量 更新入库单明细状态:如果收货数量加不良品数量等于采购数量则更新入库单明细状态为“收货完成”,否则更新为“收货中” 1. 更新入入库单主表的收货总数量、收货状态 更新入库单状态:如果该入库单所有明细的状态都为收货完成则更新入库单状态为“收货完成”,否则更为“收货中” 1. 生成上架任务 当整个入库单收货完成后自动生成上架任务,根据收货记录生成上架任务,有几条收货记录生成几条上架任务。 1. 存储库存表 参见“库存管理--》存储库存” |
| 数据描述 | |
| 补充说明 | ![]() ![]() |
| 修改历史 |
3.3.2.4 PDA收货
📺 嵌入视频:B站视频(bvid=1ZmonBcECF)
| 名称 | PDA收货 |
|---|---|
| 优先级 | 高 |
| 功能描述 | 商品到达仓库后进行收货,对商品进行验收,将商品放在暂存区,本用例 描述PDa收货功能 |
| 参与者 | 工人 |
| 前置条件 | 该入库单某商品的收货总数量不能大于该商品的采购数量 选择一个收货任务 收货数量小于等于采购数量 |
| 事件流(操作序列) | 1. 进入待收货查询页面,使用PDA扫描商品条码,根据商品条码查询符合条件的待收货任务 1. 选择一个收货任务 1. 点击“收货” 1. 输入收货数量、储位等信息、批次号等 1. 点击“确认” |
| 可选事件流 | |
| 后置条件 | 同PC端收货 |
| 数据描述 | |
| 补充说明 | |
| 修改历史 |
3.3.2.5 收货记录查询
| 名称 | 收货记录 |
|---|---|
| 优先级 | 高 |
| 功能描述 | 查询收货记录,一个入库单可以有多条收货记录 |
| 参与者 | 管理员、工人 |
| 前置条件 | |
| 事件流(操作序列) | 1. 进入“收货记录”页面查询收货记录 |
| 可选事件流 | |
| 后置条件 | 分页查询收货记录表 |
| 数据描述 | |
| 补充说明 | ![]() |
| 修改历史 |
3.3.3 上架
3.3.3.1 创建上架任务
| 名称 | 创建上架任务 |
|---|---|
| 优先级 | 高 |
| 功能描述 | 当入库单收货任务完成后,根据该入库单的收货记录自动创建上架任务。 |
| 参与者 | 系统自动进行 |
| 前置条件 | 入库单收货完成 确定一个入库单 只将收货商品为良品的创建上架任务 |
| 事件流(操作序列) | 1. 收货完成系统自动创建上架任务 |
| 可选事件流 | |
| 后置条件 | 添加任务表一条或多条记录,任务类型为“上架任务” 根据入库单查询收货任务记录,收货商品为良品的收货任务记录为上架任务,有几条收货记录创建几个上架任务。 原则: 谁收货谁上架 在哪个仓库收货就在哪个仓库上架 |
| 数据描述 | |
| 补充说明 | |
| 修改历史 |
3.3.3.2 查询上架任务
| 名称 | 查询上架任务 |
|---|---|
| 优先级 | 高 |
| 功能描述 | 查询待上架任务 |
| 参与者 | 管理员,工人 |
| 前置条件 | 查询任务类型为“上架任务”的任务 只查询指派给自己的任务。 只查询状态为任务释放的任务,任务类型为上架任务 |
| 事件流(操作序列) | 1. 进入上架任务菜单,查询待上架任务 |
| 可选事件流 | |
| 后置条件 | 分页查询任务表,任务类型为“上架任务” |
| 数据描述 | |
| 补充说明 | ![]() |
| 修改历史 |
3.3.3.3 PC上架
| 名称 | PC上架 |
|---|---|
| 优先级 | 高 |
| 功能描述 | 根据任务描述进行上架,将商品从暂存区移动到拣选区或存储区,本用例描述使用PC端操作上架功能 |
| 参与者 | 工人 |
| 前置条件 | 选择一个上架任务 上架数量小于等于收货数量 |
| 事件流(操作序列) | 1. 进入上架任务菜单,查询待上架任务 1. 选择一个任务,点击“上架” 1. 输入上架储位及上架数量 1. 点击“确认” |
| 可选事件流 | |
| 后置条件 | 1. 添加上架记录 1. 更新上架任务(更新完成上架数量,状态) 上架数量等于收货数量则上架完成 1. 更新入库单明细中的上架数量及状态 1. 更新入库单中的上架总量及状态 1. 存储库存 详细见“库存管理” |
| 数据描述 | |
| 补充说明 | ![]() ![]() |
| 修改历史 |
3.3.3.3 PDA上架
📺 嵌入视频:B站视频(bvid=1ZmonBcECF)
| 名称 | PDA上架 |
|---|---|
| 优先级 | 高 |
| 功能描述 | 根据任务描述进行上架,将商品从暂存区移动到拣选区或存储区,本用例描述使用PDA端操作上架功能 |
| 参与者 | 工人 |
| 前置条件 | 选择一个上架任务 同一个储位只允许放同一个货主的商品 上架数量小于等于收货数量 |
| 事件流(操作序列) | 1. 进入待上架任务列表,查询待上架任务 1. 选择一个任务,点击“上架”,进入上架界面 1. 使用PDA扫描储位上的商品条码,如果扫描的商品条码和行任务的商品不一致将提示不允许上架 1. 使用PDA扫描储位条码,自动录入储位条码 1. 输入上架数量 1. 点击“确认” |
| 可选事件流 | |
| 后置条件 | 同PC端上架 |
| 数据描述 | |
| 补充说明 | |
| 修改历史 |
3.3.3.5 上架记录
| 名称 | 上架记录 |
|---|---|
| 优先级 | 高 |
| 功能描述 | 查询上架记录,一个上架任务可以对应多条上架记录 |
| 参与者 | 管理员、工人 |
| 前置条件 | |
| 事件流(操作序列) | 1. 进入“上架记录”页面查询上架记录 |
| 可选事件流 | |
| 后置条件 | 分页查询任务记录,任务类型为“上架任务” |
| 数据描述 | |
| 补充说明 | ![]() |
| 修改历史 |
3.4 库存管理
3.4.1 存储库存
| 名称 | 存储库存 |
|---|---|
| 优先级 | 高 |
| 功能描述 | 记录储位上商品的库存信息,当进行收货,上架、拣货的同时都需要记录库存数据 |
| 参与者 | 系统自动 |
| 前置条件 | 存储库存需要确定:商品ID(skuID)、仓库、储位、批号 商品ID+储位+批号 全局唯一 |
| 事件流(操作序列) | 1. 一次收货需要存储库存 1. 一次上架需要存储库存 1. 一次拣货需要存储库存 |
| 可选事件流 | |
| 后置条件 | 分不同情况增加和减少库存。 注意:在增加库存时如果库存表没有相应的记录需要新增库存记录,否则在原库存增加数量。 ===收货: 良品: 在库数量:增加 可用数量:增加 分配数量:不动 不良品: 在库数量:增加 可用数量:0 分配数量:0 ===上架: 原储位: 在库数量:减少 可用数量:减少 分配数量:不动 新储位: 在库数量:增加 可用数量:增加 分配数量:不动 ===分配: 在库数量:不动 可用数量:减少 分配数量:增加 ===拣货 原储位: 在库数量:减少 可用数量:不动 分配数量:减少 新储位(发货储位): 在库数量:增加 可用数量:0 分配数量:增加 ===发货 拣货储位: 在库数量:减少 可用数量:0 分配数量:减少 |
| 数据描述 | create table wms_inventory ( id varchar(36) not null primary key, create_by varchar(50) null comment '创建人', create_time datetime null comment '创建日期', update_by varchar(50) null comment '更新人', update_time datetime null comment '更新日期', sys_org_code varchar(64) null comment '所属部门', owner_id varchar(32) not null comment '货主', product_id varchar(32) not null comment '商品id', location_code varchar(32) not null comment '储位编码', container_code varchar(32) null comment '容器编码', stock_quantity int not null comment '在库数量', allocated_quantity int null comment '分配数量', available_quantity varchar(32) null comment '可用数量', batch_number varchar(32) null comment '批号 ', stock_in_time datetime not null comment '入库时间', production_date date null comment '生产日期', expiry_date date null comment '保质期到期日' ); 1. 在库数量 当前实际储存在仓库中的商品总数(包括已分配和未分配的部分)。 某商品在库数量为100件,表示仓库中实际有100件。 1. 分配数量 已被订单或任务预留(锁定)的数量,尚未实际出库,但不可被其他订单占用。 其中30件已被订单预留,但还未拣货出库。 1. 可用数量 当前可被新订单分配的数量(即在库数量减去分配数量后的剩余量)。 剩余70件可自由分配给新订单。 在库数量=分配数量+可用数量 |
| 补充说明 | |
| 修改历史 |
3.4.2 库存查询
| 名称 | 库存查询 |
|---|---|
| 优先级 | 高 |
| 功能描述 | 查询库存信息 |
| 参与者 | 管理员 |
| 前置条件 | 拥有功能的操作权限 |
| 事件流(操作序列) | 1. 进入库存查询页面 1. 输入查询条件查询库存列表 |
| 可选事件流 | |
| 后置条件 | 分页查询库存表 |
| 数据描述 | 查询字段:仓库名称 货主编码 货主 商品编码 商品 储位编码 批号 保质期到期日 在库数量 分配数量 可用数量 是否可售 储位类型 储区类型 入库时间![]() ![]() |
| 补充说明 | |
| 修改历史 |
3.4.3 库存导出
| 名称 | 库存导出 |
|---|---|
| 优先级 | 高 |
| 功能描述 | 导出库存信息 |
| 参与者 | 管理员 |
| 前置条件 | 拥有功能的操作权限 |
| 事件流(操作序列) | 1. 进入库存查询页面 1. 输入查询条件查询库存列表 1. 点击“导出” |
| 可选事件流 | |
| 后置条件 | 将符合查询条件的库存记录导出成Excel,下载至客户端 |
| 数据描述 | 导出字段: 仓库名称 货主编码 货主 商品编码 商品 储位编码 批号 保质期到期日 在库数量 分配数量 可用数量 入库时间 |
| 补充说明 | |
| 修改历史 |
3.4.4 库存导入
| 名称 | 库存导入 |
|---|---|
| 优先级 | 中 |
| 功能描述 | 导入库存信息,此功能用于初始化库存 |
| 参与者 | 管理员 |
| 前置条件 | 拥有功能的操作权限 当前不存在要导入的库存 |
| 事件流(操作序列) | 1. 编辑Excel导入文件 1. 进入库存查询页面 1. 点击“导入” 1. 选择文件,开始导入 |
| 可选事件流 | 如果库存存在则不进行导入 |
| 后置条件 | 向库存表插入数据 |
| 数据描述 | 导入excel字段: 仓库名称、货主编码、货主、 商品编码、 商品名称、 储位编码、 批号、 保质期到期日、 数量 必填字段:仓库名称、货主编码、货主、 商品编码、 商品名称、 储位编码、数量 |
| 补充说明 | |
| 修改历史 |
3.4.5 盘点计划管理
📺 嵌入视频:B站视频(bvid=1GQwKzfEYq)

3.4.5.1 创建盘点计划
| 名称 | 创建盘点计划 |
|---|---|
| 优先级 | 中 |
| 功能描述 | 库存盘点,首先需要创建盘点计划,根据盘点计划生成盘点任务并进行库存盘点 |
| 参与者 | 管理员 |
| 前置条件 | 拥有功能的操作权限 |
| 事件流(操作序列) | 1. 进入盘点计划管理界面 1. 点击新增 进入新增盘点计划界面 1. 输入盘点计划信息,点击确认 |
| 可选事件流 | |
| 后置条件 | 向盘点计划表插入数据 |
| 数据描述 | ![]() 盘点类型解释: 循环盘点:循环盘点是指按照一定的规则(通常基于ABC分类),将库存商品分成不同等级,不同等级的商品采用不同的盘点频率,在规定周期内滚动完成全部库存的盘点。 ![]() 动碰盘点: 动碰盘点是指只盘点发生过出入库动作的库存,即自上次盘点以来,有过移动、出库、入库、移库等操作的储位或商品。 动碰盘点公式:应盘点范围 = 上次盘点后所有发生过库存变动的商品/储位核心思想:"没有变化的东西,假设它仍然是正确的" 随机抽盘: 随机抽盘是指随机抽取一定比例的库存进行盘点,通过样本的准确性来推断整体库存的准确率。 异动盘点: 异动盘点是指针对近期发生过异常变化的库存进行专项盘点,这些异常包括:频繁出入库、差异率高、临期、破损等。 对比: ![]() |
| 补充说明 | |
| 修改历史 |
3.4.5.2 盘点商品管理
| 名称 | 盘点商品管理 |
|---|---|
| 优先级 | 中 |
| 功能描述 | 当盘点计划中的盘点范围类型为“按商品”时需要在盘点商品管理界面指定要盘点的商品 |
| 参与者 | 管理员 |
| 前置条件 | 拥有功能的操作权限 盘点计划草稿状态 |
| 事件流(操作序列) | 1. 进入盘点计划管理界面 1. 选择一个盘点计划,点击“盘点商品管理” 1. 打开盘点商品管理界面,选择要盘点的商品 |
| 可选事件流 | |
| 后置条件 | 向盘点计划-商品范围表插入数据 |
| 数据描述 | ![]() |
| 补充说明 | |
| 修改历史 |
3.4.5.3 提交审批
| 名称 | 提交审批 |
|---|---|
| 优先级 | 中 |
| 功能描述 | 盘点计划创建完成需要提交审批 |
| 参与者 | 管理员 |
| 前置条件 | 拥有功能的操作权限 只有草稿状态的计划才能提交审批 盘点计划范围需要设置 |
| 事件流(操作序列) | 1. 进入盘点计划管理界面 1. 选择一个盘点计划,点击“提交审批” |
| 可选事件流 | |
| 后置条件 | 更新盘点计划的状态为 “待执行” |
| 数据描述 | ![]() |
| 补充说明 | |
| 修改历史 |
3.4.5.4 审批盘点计划
| 名称 | 审批盘点计划 |
|---|---|
| 优先级 | 中 |
| 功能描述 | 盘点计划提交审批后由相关领导进行审批 |
| 参与者 | 管理员 |
| 前置条件 | 拥有功能的操作权限 选择一个盘点计划 |
| 事件流(操作序列) | 1. 进入盘点计划管理界面 1. 选择一个盘点计划,点击“审批” 1. 选择审批通过、审批不通过,输入审核意见 |
| 可选事件流 | |
| 后置条件 | 更新盘点计划的状态为 “审核通过”或“草稿” (更新盘点计划的状态:DRAFT草稿 PENDING待执行 APPROVED审核通过 EXECUTING执行中 COMPLETED已完成 CANCELLED已取消) |
| 数据描述 | ![]() |
| 补充说明 | |
| 修改历史 |
3.4.5.5 开始执行
| 名称 | 开始执行 |
|---|---|
| 优先级 | 中 |
| 功能描述 | 盘点任务已创建并且已指派盘点人,此时开始执行盘点 |
| 参与者 | 管理员 |
| 前置条件 | 拥有功能的操作权限 选择一个盘点计划 盘点任务已创建且已指派盘点人 |
| 事件流(操作序列) | 1. 进入盘点计划管理界面 1. 选择一个盘点计划,点击“开始执行” |
| 可选事件流 | |
| 后置条件 | 更新盘点计划的状态为 “执行中” (更新盘点计划的状态:DRAFT草稿 PENDING待执行 APPROVED审核通过 EXECUTING执行中 COMPLETED已完成 CANCELLED已取消) 更新所属盘点计划的盘点任务的状态为“执行中” |
| 数据描述 | ![]() |
| 补充说明 | |
| 修改历史 |
3.4.5.5 取消盘点
| 名称 | 取消盘点 |
|---|---|
| 优先级 | 中 |
| 功能描述 | 取消盘点表示此次盘点不再执行,取消后无法恢复,取消后锁定的库存将释放 |
| 参与者 | 管理员 |
| 前置条件 | 拥有功能的操作权限 选择一个盘点计划 |
| 事件流(操作序列) | 1. 进入盘点计划管理界面 1. 选择一个盘点计划,点击“取消” |
| 可选事件流 | |
| 后置条件 | 更新盘点计划的状态为 “已取消” (更新盘点计划的状态:DRAFT草稿 PENDING待执行 APPROVED审核通过 EXECUTING执行中 COMPLETED已完成 CANCELLED已取消) 更新所属盘点计划的盘点任务的状态为“已取消” 更新盘点任务关联的库存锁定状态为未锁定 |
| 数据描述 | ![]() |
| 补充说明 | |
| 修改历史 |
3.4.5.6 完成盘点
| 名称 | 完成盘点 |
|---|---|
| 优先级 | 中 |
| 功能描述 | 盘点任务执行完成,完成盘点 |
| 参与者 | 管理员 |
| 前置条件 | 拥有功能的操作权限 选择一个盘点计划 只有执行中的计划才能完成 盘点计划下的任务均完成 盘点计划下的复盘任务均完成 盘点计划下的库存调整单已完成审核通过 |
| 事件流(操作序列) | 1. 进入盘点计划管理界面 1. 选择一个盘点计划,点击“完成” |
| 可选事件流 | |
| 后置条件 | 更新盘点计划的状态为 “已完成” (更新盘点计划的状态:DRAFT草稿 PENDING待执行 APPROVED审核通过 EXECUTING执行中 COMPLETED已完成 CANCELLED已取消) 更新盘点任务关联的库存锁定状态为:未锁定 |
| 数据描述 | ![]() |
| 补充说明 | |
| 修改历史 |
3.4.5.7 盘点报告
| 名称 | 盘点报告 |
|---|---|
| 优先级 | 中 |
| 功能描述 | 盘点完成后查询盘点报告 |
| 参与者 | 管理员 |
| 前置条件 | 拥有功能的操作权限 选择一个盘点计划 盘点计划完成 |
| 事件流(操作序列) | 1. 进入盘点计划管理界面 1. 选择一个已完成的盘点计划,点击“盘点报告” |
| 可选事件流 | |
| 后置条件 | |
| 数据描述 | ![]() ![]() 查询数据库进行统计 ![]() ![]() ![]() ![]() ![]() 补充说明 数值精度:所有百分比指标均保留一位小数(使用 Math.round(value * 10) / 10.0) 除零保护:所有除法运算都有除数为0的判断,避免异常 数据范围: 盘点结果汇总和差异统计仅统计已完成(status = 'COMPLETED')的盘点任务 复盘情况统计该计划下的所有复盘任务(不限状态) 差异判断:使用数据库层面的 actual_quantity != system_quantity 进行判断,确保准确性 |
| 补充说明 | |
| 修改历史 |
3.4.6 盘点任务管理
3.4.6.1 创建盘点任务
| 名称 | 创建盘点任务 |
|---|---|
| 优先级 | 中 |
| 功能描述 | 盘点计划审核通过后即可开始根据盘点范围创建盘点任务 |
| 参与者 | 管理员 |
| 前置条件 | 拥有功能的操作权限 选择一个盘点计划 盘点计划审核通过 |
| 事件流(操作序列) | 1. 进入盘点计划管理界面 1. 选择一个盘点计划,点击“创建盘点任务” 1. 提交创建盘点任务成功xx条 |
| 可选事件流 | |
| 后置条件 | 根据盘点范围查询库存,向盘点任务表插入记录(一条库存记录对应一个盘点任务),任务初始状态为待领取 修改库存表的锁定状态、锁定时间、盘点计划id |
| 数据描述 | ![]() |
| 补充说明 | |
| 修改历史 |
3.4.6.2 删除任务
| 名称 | 删除盘点任务 |
|---|---|
| 优先级 | 中 |
| 功能描述 | 盘点计划审核通过后即可开始根据盘点范围创建盘点任务 |
| 参与者 | 管理员 |
| 前置条件 | 拥有功能的操作权限 选择一个或多个盘点任务 盘点任务状态为待领取方可删除 |
| 事件流(操作序列) | 1. 进入盘点任务管理界面 1. 选择一个或多个盘点任务,点击“删除” |
| 可选事件流 | |
| 后置条件 | 删除任务表记录 解除库存锁定(更新库存表的锁定状态为未锁定) |
| 数据描述 | ![]() |
| 补充说明 | |
| 修改历史 |
3.4.6.2 领取任务
| 名称 | 领取任务 |
|---|---|
| 优先级 | 中 |
| 功能描述 | 用户登录系统领取盘点任务,领取成功当前用户作为此任务的盘点人 |
| 参与者 | 管理员 |
| 前置条件 | 拥有功能的操作权限 选择一个任务 只有待领取状态的任务才能领取 |
| 事件流(操作序列) | 1. 进入盘点任务管理界面 1. 选择一个任务,点击“领取” |
| 可选事件流 | |
| 后置条件 | 更新盘点任务表的领取人,任务状态改为:已领取 |
| 数据描述 | ![]() |
| 补充说明 | |
| 修改历史 |
3.4.6.3 分配盘点人
| 名称 | 分配盘点人 |
|---|---|
| 优先级 | 中 |
| 功能描述 | 为任务分配盘点人 |
| 参与者 | 管理员 |
| 前置条件 | 拥有功能的操作权限 选择一个任务或多个任务,点击“分配”或“批量分配” |
| 事件流(操作序列) | 1. 进入盘点任务管理界面 1. 选择一个任务或多个任务,点击“分配”或“批量分配” 1. 选择盘点人,点击“确认” |
| 可选事件流 | |
| 后置条件 | 更新盘点任务表的领取人,任务状态改为:已领取 |
| 数据描述 | ![]() ![]() |
| 补充说明 | |
| 修改历史 |
3.4.6.3 提交盘点结果
| 名称 | 提交盘点结果 |
|---|---|
| 优先级 | 中 |
| 功能描述 | 盘点人员根据分配的盘点任务进行现场盘点并提交盘点任务 |
| 参与者 | 管理员 |
| 前置条件 | 拥有功能的操作权限 选择一个任务 任务状态为执行中(需要在盘点计划中开始执行) |
| 事件流(操作序列) | 1. 进入盘点任务管理界面 1. 选择一个任务,点击“提交结果” 1. 输入实盘数量,点击“提交” |
| 可选事件流 | |
| 后置条件 | 更新盘点任务表的实盘数量,差异数量、状态为已完成 |
| 数据描述 | ![]() ![]() |
| 补充说明 | |
| 修改历史 |
3.4.7 复盘管理

3.4.7.1 创建复盘任务
| 名称 | 创建复盘任务 |
|---|---|
| 优先级 | 中 |
| 功能描述 | 对第一次盘点中有差异的库存可以创建复盘任务 |
| 参与者 | 管理员 |
| 前置条件 | 拥有功能的操作权限 选择一个盘点计划 盘点计划状态为执行中 当前未存在执行中的复盘任务 |
| 事件流(操作序列) | 1. 进入盘点计划管理界面 1. 选择一个盘点计划,点击“创建复盘任务” 1. 打开创建复盘任务界面,界面中列出了该盘点计划下已完成的任务 1. 选择要复盘的任务、复盘人员等信息,点击确认 |
| 可选事件流 | |
| 后置条件 | 插入复盘任务主表(待处理)、明细表(待处理) 复盘任务的轮次计算方式:查询该盘点计划下的复盘任务数+1 |
| 数据描述 | ![]() |
| 补充说明 | |
| 修改历史 |
3.4.7.2 提交复盘结果
| 名称 | 提交复盘结果 |
|---|---|
| 优先级 | 中 |
| 功能描述 | 填写复盘数据后提交复盘结果 |
| 参与者 | 管理员 |
| 前置条件 | 拥有功能的操作权限 选择一个复盘任务 只有待处理或进行中的复盘任务才能提交复盘结果 |
| 事件流(操作序列) | 1. 进入复盘任务管理界面 1. 选择一个盘点复盘,点击“提交复盘结果” 1. 打开提交复盘结果界面,界面中列出了复盘的任务明细 1. 输入复盘数量,提交 |
| 可选事件流 | |
| 后置条件 | 更新复盘任务明细表的复盘数量、复盘差异,复盘状态为已完成 更新复盘任务主表状态,当所有复盘任务主表下的所有明细都完成了,复盘主表任务状态为已完成,否则为进行中 |
| 数据描述 | ![]() |
| 补充说明 | |
| 修改历史 |
3.4.7.3 最终确认
| 名称 | 最终确认 |
|---|---|
| 优先级 | 中 |
| 功能描述 | 复盘任务完成后进行最终确认 |
| 参与者 | 管理员 |
| 前置条件 | 拥有功能的操作权限 选择一个复盘任务 只有已完成的复盘任务才能进行最终确认 |
| 事件流(操作序列) | 1. 进入复盘任务管理界面 1. 选择一个盘点复盘,点击“最终确认” 1. 打开最终确认界面,输入最终确认的库存数量、最终差异 1. 提交 |
| 可选事件流 | |
| 后置条件 | 更新复盘任务明细表的最终确认数量、最终差异、最终确认状态(一致、不一致) 更新复盘任务主表状态为已确认 插入创建库存调整单主表、库存调整单明细表 |
| 数据描述 | ![]() |
| 补充说明 | |
| 修改历史 |
3.4.7.4 库存调整
| 名称 | 库存调整审核 |
|---|---|
| 优先级 | 中 |
| 功能描述 | 复盘最终确认后生成库存调整单,库存调整单审核通过将自动调整库存 |
| 参与者 | 管理员 |
| 前置条件 | 拥有功能的操作权限 选择一个库存调整单 只有待审核状态的调整单才能审核 |
| 事件流(操作序列) | 1. 进入库存调整管理界面 1. 选择一个库存调整单,点击“审核通过” |
| 可选事件流 | |
| 后置条件 | 审核通过: 更新库存调整单状态为已审核 更新库存调整单明细状态为已执行 更新库存表的在库数量、可用数量 拒绝: 更新库存调整单状态为已拒绝 |
| 数据描述 | ![]() |
| 补充说明 | |
| 修改历史 |
3.4.7.4 库存调整详情
| 名称 | 库存调整详情 |
|---|---|
| 优先级 | 中 |
| 功能描述 | 查询库存调整的详情信息 |
| 参与者 | 管理员 |
| 前置条件 | 拥有功能的操作权限 选择一个库存调整单 |
| 事件流(操作序列) | 1. 进入库存调整管理界面 1. 选择一个库存调整单,点击“详情” |
| 可选事件流 | |
| 后置条件 | |
| 数据描述 | ![]() |
| 补充说明 | |
| 修改历史 |
3.5 出库管理

- 电商系统接收订单:用户下单后,电商系统接收并存储订单信息。
- 订单审核(系统自动):电商系统对订单进行审核,包括检查库存、地址有效性、用户信用等,确保订单合规。
- 订单信息推送至WMS:审核通过的订单信息通过API接口推送至WMS系统。
- WMS生成出库单:WMS系统根据订单信息生成出库单。
- WMS生成波次计划:WMS根据波次规则对订单批量生成波次计划,比如对单品单件的订单一起拣货。
- WMS生成波次拣货任务:根据波次计划生成波次拣货任务。
- 拣货员拣货:拣货员使用PDA设备根据拣货单的指示进行拣货。
- 拣货完成:拣货完成后,WMS系统更新库存信息。
- 打包:对拣货完成的商品送到打包台对商品进行打包。
- 打印电子面单:对打包好的商品进行称重和扫描,生成电子面单 ,并将电子面单贴到包裹上
- WMS将出库信息回传电商系统:WMS系统将出库信息(包括物流信息)回传至电商系统。
- 电商系统更新订单状态为“已出库”:电商系统根据WMS系统回传的出库信息更新订单状态。
- 物流商接收货物,确认无误,进行运输。
- 物流信息同步至电商系统物流跟踪页面:物流商将物流信息同步至电商系统,用户可以在电商系统的物流跟踪页面查看物流信息。
- 客户签收商品:客户签收商品,物流信息同步至wms系统、电商系统。
3.5.1 创建出库单
| 名称 | 创建出库单 |
|---|---|
| 优先级 | 高 |
| 功能描述 | 管理员创建出库单 |
| 参与者 | 管理员人工创建 OMS、ERP等外部系统通过接口调用 |
| 前置条件 | 拥有此功能的操作权限 |
| 事件流(操作序列) | 1. 进入出库单查询页面 1. 点击新增,打开添加页面 1. 填写出库信息 1. 增加出库单明细,选择商品,输入出库数量、填写批次号(有时候会指定出库批次) 1. 点击确认 |
| 可选事件流 | |
| 后置条件 | 向出库单表添加一条记录: 默认初始状态 出库单号自动生成: 规则:8位年月日+4位序号 向出库单明细表添加记录一条或多条记录: 默认初始状态 |
| 数据描述 | - 出库单主表 -- auto-generated definition create table wms_out_orders ( id varchar(36) not null primary key, create_by varchar(50) null comment '创建人', create_time datetime null comment '创建日期', update_by varchar(50) null comment '更新人', update_time datetime null comment '更新日期', sys_org_code varchar(64) null comment '所属部门', order_no varchar(32) not null comment '出库单号', order_type varchar(32) not null comment '出库类型', order_source varchar(32) not null comment '订单来源', order_source_no varchar(32) null comment '来源单号', warehouse_id varchar(32) null comment '仓库id', owner_id varchar(32) null comment '货主id', customer_id varchar(32) null comment '客户id', expected_ship_time datetime null comment '预计发货时间', actual_ship_time datetime null comment '实际发货时间', total_quantity int null comment '总商品数量', total_sku int null comment '总sku种类数', total_weight int null comment '总重量', total_volume int null comment '总体积', carrier_code varchar(32) null comment '承运商编码', consignee varchar(32) null comment '收货人', shipping_time datetime null comment '收货时间', shipping_address varchar(256) null comment '收货地址', contact varchar(32) null comment '联系方式', status varchar(32) not null comment '状态', remark varchar(512) null comment '备注', wave_id varchar(32) null comment '波次id', created_waybill varchar(32) default '0' null comment '是否创建运单', shipment_strategy varchar(32) null comment '包裹策略' ) comment '出库单主表'; -- 出库单明细表 -- auto-generated definition create table wms_out_orders_items ( id varchar(36) not null primary key, create_by varchar(50) null comment '创建人', create_time datetime null comment '创建日期', update_by varchar(50) null comment '更新人', update_time datetime null comment '更新日期', sys_org_code varchar(64) null comment '所属部门', order_id varchar(32) not null comment '出库单id', sku_id varchar(32) not null comment '商品id', expected_quantity int default 0 not null comment '预期出库数量', allocated_quantity int default 0 null comment '分配数量', picked_quantity int default 0 null comment '拣货数量', packed_quantity int default 0 null comment '打包数量', batch_number varchar(32) null comment '批次号', expiry_date date null comment '保质期', status varchar(32) not null comment '状态' ) comment '出库单明细表'; 出库单号生成规则 共12位,由年月日+4位序号 4位序号 使用redis 自增序列实现 key: 8位年月日 value: 4位序号 出库单状态: ![]() 【已创建】:初始状态 【已分配】:指订单正常被分配到指定储位库存,并锁定了该库存。 【分配失败】:指该货主下的商品全仓可售的良品库存不满足订单需求数量的订单。该状态需要经常查看,对于分配 失败的订单需要及时查明原因并反馈给客户或客服部门。 【拣选中】:未拣货完成 【已拣选】:出库单的拣货数量等于出库数量。 【打包中】:未完成该出库单所有商品的打包 【已打包】:已完成该出库单所有商品的打包 【已发货】:生成快递单号完成,标记为已发货 提交审核:提交审核后方可审核出库单 审核通过:审核通过后方可分配库存 审核失败: 出库单明细状态: ![]() |
| 补充说明 | ![]() ![]() |
| 修改历史 |
3.5.2 查询出库单
| 名称 | 查询出库单 |
|---|---|
| 优先级 | 高 |
| 功能描述 | 查询出库单、出库单明细及库存分配明细 |
| 参与者 | 管理员 |
| 前置条件 | 拥有此功能的操作权限 |
| 事件流(操作序列) | 1. 进入出库单查询页面 1. 输入查询条件查询出库单 1. 点击“详情”查询出库单详细信息 |
| 可选事件流 | |
| 后置条件 | |
| 数据描述 | ![]() |
| 补充说明 | |
| 修改历史 |
3.5.3 审核出库单
3.5.3.1 提交审核
参考“入库单提交审核”
3.5.3.2 审核
参考“入库单审核”
审核通过可查看出库单状态。

3.5.5 打印出库单
| 名称 | 打印出库单 |
|---|---|
| 优先级 | 高 |
| 功能描述 | 出库单是多环节协同的凭证(仓内、运输、客户),另外打印出库单可作为税务机关认可的正式交易凭证,满足审计追溯要求。 |
| 参与者 | 管理员 |
| 前置条件 | 拥有此功能的操作权限 |
| 事件流(操作序列) | 1. 进入出库单查询页面 1. 选择要打印的出库单 1. 点击“打印”,选择打印方式 1. 点击“确认” |
| 可选事件流 | |
| 后置条件 | 连接打印机打印出库单的内容 |
| 数据描述 | 出库单打印样式同入库单。 |
| 补充说明 | |
| 修改历史 |
3.5.4 分配库存
| 名称 | 分配库存 |
|---|---|
| 优先级 | 高 |
| 功能描述 | 根据出库商品分配库存,按先到期先出库和先进先出的策略分配库存,指定批号的分配该批号的库存,库存分配后需要锁定库存。 |
| 参与者 | 管理员 |
| 前置条件 | 拥有此功能的操作权限 分配的库存不能大于出库单的出库数量 库存必须为可售库存 出库单状态为审核通过状态或分配失败状态才允许分配库存 出库单明细状态为创建状态或分配失败状态才允许分配库存 如果出库单没有指定仓库则不允许分配库存 |
| 事件流(操作序列) | 1. 进入出库单查询页面 1. 选择一个或多个出库单,点击“库存分配” |
| 可选事件流 | |
| 后置条件 | 锁定库存: 首先找到要分配的库存 然后更新库存表的分配数量,具体如下: 在库存中记录了三个库存值:在库数量、分配数量、可用数量 分配库存时首先判断可用数量是否大于等于计划分配库存的数量,如果大于则进行如下操作: 可用数量=可用数量-计划分配库存的数量 分配数量=分配数量+计划分配库存的数量 向库存分配表插入一条或多条记录 更新出库单明细状态:已分配或分配失败 更新出库单的状态:已分配或分配失败 如何找到要分配的库存: 库存分配策略: 先到期先出策略:谁的过期时间先到谁先出库,过期时间一样的按先进先出策略。 商品在入库时记录了入库商品的保质期以及入库时间,距离保质期越近的商品优先出库。 指定批次号:客户或法规要求特定批次时(如药品召回)。 库存分配完成出库单状态为“已分配” |
| 数据描述 | -- 出库分配表 -- auto-generated definition create table wms_out_orders_allocation ( id varchar(36) not null primary key, create_by varchar(50) null comment '创建人', create_time datetime null comment '创建日期', update_by varchar(50) null comment '更新人', update_time datetime null comment '更新日期', sys_org_code varchar(64) null comment '所属部门', order_id varchar(32) not null comment '出库单id', order_item_id varchar(32) not null comment '出库单明细ID', sku_id varchar(32) not null comment '商品id', location_code varchar(32) not null comment '储位编号', batch_number varchar(32) null comment '批次号', container_code varchar(32) null comment '容器编号', allocated_quantity int not null comment '分配数量', picked_quantity int null comment '拣货数量', inventory_id varchar(32) not null comment '库存id', status varchar(32) null comment '状态' ) comment '出库分配明细表'; |
| 补充说明 | ![]() 分配结果可通过出库单详情查看: ![]() |
| 修改历史 |
3.5.6 波次管理
什么是波次管理?
波次管理(Wave Management)是仓库管理系统(WMS)中的核心功能模块,它通过将多个订单按照一定规则组合成"波次"(Wave),然后批量执行拣选作业,从而显著提高仓库作业效率。波次管理特别适合电商仓储的大批量订单处理、第三方物流的多客户订单整合等业务领域。
波次管理整体流程:

3.5.6.1 波次策略管理
| 名称 | 波次策略管理 |
|---|---|
| 优先级 | 高 |
| 功能描述 | 对本系统用到的波次策略进行维护 |
| 参与者 | 管理员 |
| 前置条件 | 拥有此功能的操作权限 |
| 事件流(操作序列) | 1. 进入波次策略管理界面 1. 添加波次策略 1. 修改波次策略 1. 删除波次策略 1. 查询波次策略 |
| 可选事件流 | |
| 后置条件 | 增删改查波次策略表 |
| 数据描述 | 波次策略表: create table wms_wave_strategy ( id varchar(36) not null primary key, create_by varchar(50) null comment '创建人', create_time datetime null comment '创建日期', update_by varchar(50) null comment '更新人', update_time datetime null comment '更新日期', sys_org_code varchar(64) null comment '所属部门', strategy_name varchar(32) not null comment '策略名称', strategy_code varchar(32) not null comment '策略编码', priority int not null comment '优先级', min_order_count int default 0 not null comment '最小订单数', max_order_count int default 0 not null comment '最大订单数', min_sku_items int default 0 not null comment '最小sku品项数', max_sku_items int default 0 not null comment '最大sku品项数', min_sku_quantity int default 0 not null comment '最小sku件数', max_sku_quantity int default 0 not null comment '最大sku件数', is_auto_execute varchar(32) default '0' null comment '是否自动执行', group_by_owner varchar(32) default '0' null comment '是否按货主分组', group_by_carrier varchar(32) default '0' null comment '是否按承运商分组', storage_area_code varchar(32) null comment '储区编码', storage_area_name varchar(32) null comment '储区名称', max_storage_areas int default 0 null comment '波次内最大储区数', min_sku_per_order int default 0 null comment '单订单最小sku数', max_sku_per_order int default 0 null comment '单订单最大sku数', is_enabled varchar(32) default '0' not null comment '是否启用', remark varchar(32) null comment '备注' ); |
| 补充说明 | ![]() ![]() 常用的波次策略: 1. 单品单件波次策略 含义:每个波次只包含一种商品,且每个订单中该商品的数量为1。 适用场景:适用于订单中商品种类多但每种商品数量少的情况。 优点:拣货路径简单,效率高。 缺点:订单量较大时,波次数量多,管理复杂。 1. 一品2件、一品3件 含义: - 一品2件 - 一品3件 适用场景 优点 缺点 1. 一品波次策略 含义:每个波次只包含一种商品,但每个订单中该商品的数量不限。 适用场景:适用于订单中某些商品需求量较大的情况。 优点:集中处理单一商品,提高拣货效率。 缺点:订单中商品种类多时,波次数量多,管理复杂。 1. (A+B)2件 含义:每个波次包含两种商品(A和B),每个订单中这两种商品的总数量为2。 适用场景:适用于订单中常同时出现两种商品且总需求量为2的情况。 优点:减少拣货次数,提高效率。 缺点:商品组合不固定时,适用性有限。 1. 一单一件多品波次 含义:每个波次包含多个订单,每个订单中只包含一种商品,且数量为1。 适用场景:适用于订单中商品种类多但每种商品数量少的情况。 优点:减少波次数量,提高拣货效率。 缺点:订单中商品种类多时,拣货路径复杂。 1. 单区波次 含义:每个波次只包含一个仓库区域内的订单。 适用场景:适用于仓库分区明确且订单集中在某个区域的情况。 优点:减少拣货路径,提高效率。 缺点:订单分布不均时,适用性有限。 1. 混合-默认策略 含义:结合多种波次策略,根据实际情况动态调整。 适用场景:适用于订单种类和数量变化较大的情况。 优点:灵活性强,适应各种情况。 缺点:管理复杂,需要系统支持。 1. 尾单策略 含义 尾单策略将未及时处理的订单归入一个波次,通常是在特定时间段结束时执行。例如,每天下午5点将当天未处理的订单集中处理。 适用场景 - 固定发货时间:如电商仓库每天固定时间发货。 - 订单量波动大:订单量不稳定时,尾单策略能有效处理积压订单 优点 - 减少遗漏:确保所有订单按时处理。 - 优化资源:集中处理订单,提升资源利用率。 缺点 - 延迟风险:订单可能延迟到波次执行时才处理。 - 灵活性不足:不适合需要实时处理的场景。 定义每种策略的编码: 1. 单品单件波次策略 - SISQ 1. 一品2件 - SIFQ_2 1. 一品波次策略 - SIW 1. (A+B)2件 - TCQ_2 1. 一单一件多品波次 - SIMO 1. 单区波次 - SAW 1. 混合-默认策略 - MIX 1. 尾单策略 - EOW |
| 修改历史 |
3.5.6.2 创建波次
| 名称 | 创建波次 |
|---|---|
| 优先级 | 高 |
| 功能描述 | 对订单按波次策略进行归类创建波次计划,便于仓库人员按波次对订单批量拣货工作,使订单处理高效轻松。 |
| 参与者 | 管理员 |
| 前置条件 | 出库单已分配库存 订单符合波次策略 |
| 事件流(操作序列) | 1. 点击创建波次,选择波次策略,点击确定 1. 按波次策略对当前已分配库存的出库单创建波次 1. 创建波次成功 |
| 可选事件流 | |
| 后置条件 | 依据波次策略去创建波次,因为一次可以选择多个波次策略,一次会创建一个或多个波次。 波次策略有优先级,根据优先级依次根据波次策略创建波次,具体方法是根据波次策略查询符合条件的出库单,将符合条件的一批订单创建为一个波次。 举例:单品单件波次策略 查询所有已分配状态且只包含一种商品的出库单。 根据最大订单数限制去创建不同的波次,比如:共查询到1000个订单,而本波次策略的最大订单数限制是100则需要创建10个波次。 创建波次需要操作的数据库表如下: 向波次表插入一条或多条记录 更新波次下出库单表波次id字段。 更新每个出库单的打包策略,每个波次策略对应打包策略,这里更新出库单的打包策略其目的是在创建包裹时根据打包策略生成包裹信息。 |
| 数据描述 | 波次表: create table wms_wave_master ( id varchar(36) not null primary key, create_by varchar(50) null comment '创建人', create_time datetime null comment '创建日期', update_by varchar(50) null comment '更新人', update_time datetime null comment '更新日期', sys_org_code varchar(64) null comment '所属部门', wave_no varchar(32) not null comment '波次编号', warehouse_id varchar(32) null comment '仓库id', zone_id varchar(32) null comment '储区id', wave_rule_id varchar(32) not null comment '波次策略', total_orders int not null comment '订单数量', total_items int not null comment 'sku种类数量', status varchar(32) not null comment '状态', remark varchar(32) null comment '备注', total_skus int not null comment 'sku数量' ); 波次状态: ![]() 名称 数据值 已创建 CREATED 波次创建成功的初始状态 拣货中 PICKING 分配拣货员完成 拣货完成 PICKED 查询拣货完成的单子 包装中 PACKING 拣货完成,打包中 已打包 PACKED 待发货 已发货 SHIPPED 波次下的包裹全部发货 已完成 COMPLETED 买方收货完成 已取消 CANCELED |
| 补充说明 | ![]() ![]() 创建成功可在创建波次列表查询: ![]() 波次策略有哪些: 1. 单品单件波次策略 含义:每个波次只包含一种商品,且每个订单中该商品的数量为1。 适用场景:适用于订单中商品种类多但每种商品数量少的情况。 优点:拣货路径简单,效率高。 缺点:订单量较大时,波次数量多,管理复杂。 1. 一品2件、一品3件 含义: - 一品2件 - 一品3件 适用场景 优点 缺点 1. 一品波次策略 含义:每个波次只包含一种商品,但每个订单中该商品的数量不限。 适用场景:适用于订单中某些商品需求量较大的情况。 优点:集中处理单一商品,提高拣货效率。 缺点:订单中商品种类多时,波次数量多,管理复杂。 1. (A+B)2件 含义:每个波次包含两种商品(A和B),每个订单中这两种商品的总数量为2。 适用场景:适用于订单中常同时出现两种商品且总需求量为2的情况。 优点:减少拣货次数,提高效率。 缺点:商品组合不固定时,适用性有限。 1. 一单一件多品波次 含义:每个波次包含多个订单,每个订单中只包含一种商品,且数量为1。 适用场景:适用于订单中商品种类多但每种商品数量少的情况。 优点:减少波次数量,提高拣货效率。 缺点:订单中商品种类多时,拣货路径复杂。 1. 单区波次 含义:每个波次只包含一个仓库区域内的订单。 适用场景:适用于仓库分区明确且订单集中在某个区域的情况。 优点:减少拣货路径,提高效率。 缺点:订单分布不均时,适用性有限。 1. 混合-默认策略 含义:结合多种波次策略,根据实际情况动态调整。 适用场景:适用于订单种类和数量变化较大的情况。 优点:灵活性强,适应各种情况。 缺点:管理复杂,需要系统支持。 1. 尾单策略 含义 尾单策略将未及时处理的订单归入一个波次,通常是在特定时间段结束时执行。例如,每天下午5点将当天未处理的订单集中处理。 适用场景 - 固定发货时间:如电商仓库每天固定时间发货。 - 订单量波动大:订单量不稳定时,尾单策略能有效处理积压订单 优点 - 减少遗漏:确保所有订单按时处理。 - 优化资源:集中处理订单,提升资源利用率。 缺点 - 延迟风险:订单可能延迟到波次执行时才处理。 - 灵活性不足:不适合需要实时处理的场景。 定义每种策略的编码: 1. 单品单件波次策略 - SISQ 1. 一品2件 - SIFQ_2 1. 一品波次策略 - SIW 1. (A+B)2件 - TCQ_2 1. 一单一件多品波次 - SIMO 1. 单区波次 - SAW 1. 混合-默认策略 - MIX 1. 尾单策略 - EOW |
| 修改历史 |
3.5.6.3 查询波次
| 名称 | 查询波次 |
|---|---|
| 优先级 | 高 |
| 功能描述 | 查询波次详细信息,包括:波次详情、波次拣货明细、波次下的包裹明细 |
| 参与者 | 管理员 |
| 前置条件 | |
| 事件流(操作序列) | 1. 进入查询波次界面 1. 通过波次状态标签查看波次列表 1. 选择一个波次 1. 查询波次下的出库单、出库单明细、按商品拣货明细、包裹信息等 |
| 可选事件流 | |
| 后置条件 | 分页查询波次表 |
| 数据描述 | 波次列表:![]() 波次详情: ![]() |
| 补充说明 | |
| 修改历史 |
3.5.6.4 打印拣货单
| 名称 | 打印拣货单 |
|---|---|
| 优先级 | 高 |
| 功能描述 | 打印拣货单,按拣货单提示进行拣货。 |
| 参与者 | 管理员 |
| 前置条件 | 选择一个波次 |
| 事件流(操作序列) | 1. 进入查询波次界面 1. 选择一个波次 1. 点击打印 |
| 可选事件流 | |
| 后置条件 | 打印波次单 |
| 数据描述 | 打印样式:![]() |
| 补充说明 | |
| 修改历史 |
3.5.7 按波次拣货
3.5.7.1 创建拣货任务
| 名称 | 创建拣货任务 |
|---|---|
| 优先级 | 高 |
| 功能描述 | 波次创建完成即可创建该波次的拣货任务 |
| 参与者 | 管理员 |
| 前置条件 | 选择一个或多个波次 波次当前状态为已创建 |
| 事件流(操作序列) | 1. 进入波次查询的“创建波次”标签 1. 选择波次,点击“创建拣货任务” |
| 可选事件流 | |
| 后置条件 | 先根据波次下出库单的库存分配记录对库存进行汇总(商品id、储位、批次) 再根据库存汇总生成拣货任务:向任务表插入一条或多条记录,任务类型为“拣货任务”,任务状态为“已创建”向波次拣货明细表插入一条或多条记录, 该波次下的出库单状态由“已分配”到“拣货中” 该波次下的出库单明细状态由“已分配”到“拣货中” 更新波次状态为“拣货中” 创建拣货路径(见创建拣货路径用例 ) |
| 数据描述 | 波次列表:![]() 波次详情: ![]() |
| 补充说明 | |
| 修改历史 |
3.5.7.2 生成拣货路径
| 名称 | 生成拣货路径 |
|---|---|
| 优先级 | 高 |
| 功能描述 | 创建拣货任务完成自动生成拣货路径 |
| 参与者 | 系统自动 |
| 前置条件 | 选择一个波次 该波次完成拣货任务创建 |
| 事件流(操作序列) | 1. 根据波次找到拣货任务 1. 找到该波次所有拣货任务的储位进行 1. 通过路径规划算法乱最短拣货路 |
| 可选事件流 | |
| 后置条件 | 生成拣货路径 更新波次表拣货路径字段 |
| 数据描述 | |
| 补充说明 | |
| 修改历史 |
3.7.7.3 PC拣货
| 名称 | 拣货 |
|---|---|
| 优先级 | 高 |
| 功能描述 | 按拣货任务进行拣货,并记录拣货商品数量等信息,本用例 描述PC拣货功能 |
| 参与者 | 管理员 |
| 前置条件 | 选择一个拣货任务 输入拣货数量 固定拣货储位 |
| 事件流(操作序列) | 1. 进入拣货任务列表,查询待拣货的任务 1. 选择一个拣货任务,点击“拣货”进入拣货界面 1. 输入目的储位、拣货数量等信息 1. 点击“确认” |
| 可选事件流 | |
| 后置条件 | 更新执行任务结果:添加拣货任务记录表更新任务表的完成拣货数量、任务执行状态 更新波次拣货任务明细中的拣货数量:更新波次拣货明细表中的拣货数量、拣货状态 更新波次状态:如果该波次下的拣货任务明细全部完成则波次状态为拣货完成 存储库存表 参见“库存管理--》存储库存” |
| 数据描述 | |
| 补充说明 | ![]() ![]() |
| 修改历史 |
3.7.7.4 PDA拣货
| 名称 | PDA拣货 |
|---|---|
| 优先级 | 高 |
| 功能描述 | 按拣货任务进行拣货,并记录拣货商品数量等信息,本用例 描述PDA拣货功能 |
| 参与者 | 工人 |
| 前置条件 | 拣货任务已生成 |
| 事件流(操作序列) | 1. 打开PDA进入待拣货列表页面 1. 扫描波次单号,显示该波次单下的拣货任务 1. 根据拣货路径规划进行拣货 1. 点击拣货,进入拣货界面 1. 扫描商品条码,如果商品条码和拣货任务商品不匹配则提示“未拣货商品”,否则继续 1. 扫描储位编码,如果储位编码和拣货任务的储位编码不匹配则提示“未拣货储位”,否则继续 1. 输入拣货数量 1. 提交 1. 提交成功自动进入下一个拣货任务 |
| 可选事件流 | 异常情况: 扫描商品条码,如果商品条码和拣货任务商品不匹配则提示“未拣货商品” 扫描储位编码,如果储位编码和拣货任务的储位编码不匹配则提示“未拣货储位” |
| 后置条件 | 同“PC拣货” |
| 数据描述 | |
| 补充说明 | |
| 修改历史 |
3.7.7.5 分拣
| 名称 | 分拣 |
|---|---|
| 优先级 | 高 |
| 功能描述 | 分拣是仓库拣货流程中的一个关键环节,主要用于在波次拣货(如播种式拣货或波次拣货)后,将已汇总拣选的商品按照原始订单进行再分配和核对,确保每个订单的商品准确无误。 |
| 参与者 | 工人 |
| 前置条件 | 选择一个波次点击分拣 波次状态为拣货完成 每次分拣需要选择订单及商品,PC端可以批量选择,PDA需要依次扫描订单编号和商品条码 波次拣货任务明细表分拣数量小于等于拣货数量 |
| 事件流(操作序列) | 1. 进入待打包波次列表 1. 选择波次,打开订单列表 1. 选择一个或多个订单,点击完成分拣 |
| 可选事件流 | 异常情况: 当波次完成拣货的总数量小于订单商品数量则提示库存不足 |
| 后置条件 | 根据波次id和订单下的商品id及批次号找到波次拣货任务明细表唯一 一条记录,增加分拣数量 更新订单明细和订单状态为已拣货 |
| 数据描述 | |
| 补充说明 | ![]() ![]() ![]() |
| 修改历史 |
3.6 缺货管理
3.6.1 缺货登记
| 名称 | 缺货登记 |
|---|---|
| 优先级 | 高 |
| 功能描述 | 工人在拣货时如果发现缺货需要及时进行缺货登记,通常发生缺货是因为工人错误操作或丢失导致 |
| 参与者 | 工人 |
| 前置条件 | 确定一个拣货任务 拥有此功能的操作权限 输入缺货数量 该任务总的缺货数量+已拣货数量小于等于计划拣货数量 |
| 事件流(操作序列) | 1. 进入待拣货任务列表 1. 选择一条拣货任务,点击“缺货登记” 1. 输入缺货数量,点击“确认” |
| 可选事件流 | |
| 后置条件 | 添加缺货登记表 更新波次拣货任务明细的缺货数量字段 |
| 数据描述 | 缺货登记表: create table wms_shortage_registration ( id varchar(36) not null primary key, create_by varchar(50) null comment '创建人', create_time datetime null comment '创建日期', update_by varchar(50) null comment '更新人', update_time datetime null comment '更新日期', sys_org_code varchar(64) null comment '所属部门', wave_id varchar(32) null comment '波次ID', wave_sku_summary_id varchar(32) null comment '波次拣货明细ID', task_id varchar(32) null comment '关联任务ID', product_id varchar(32) null comment '商品ID', source_location_code varchar(32) null comment '储位编码', batch_number varchar(32) null comment '批次号', shortage_quantity int null comment '缺货数量', status varchar(32) null comment '状态(待处理/已补货/已取消)', process_method varchar(32) null comment '处理方式(补货/换货/取消)', processor varchar(32) null comment '处理人', process_time datetime null comment '处理时间', process_remark varchar(32) null comment '处理备注' ); |
| 补充说明 | |
| 修改历史 |
3.6.2 缺货查询
3.8 包裹管理
3.8.1 按波次创建包裹
| 名称 | 按波次创建包裹 |
|---|---|
| 优先级 | 高 |
| 功能描述 | 在波次拣货完成后批量创建包裹,该方式灵活性高,可根据实际拣货结果调整包裹(如分箱、合并),避免浪费,未拣货完成的商品不会生成无效包裹。 |
| 参与者 | 管理员 |
| 前置条件 | 选择一个波次 该波次拣货完成 出库单表已更新打包策略(在创建波次时更新) |
| 事件流(操作序列) | 1. 进入波次列表 1. 选择一个波次,点击“创建包裹”。 1. 根据选择波次的波次策略找到对应的打包策略 1. 遍历波次下的出库单,根据打包策略自动创建包裹信息 |
| 可选事件流 | |
| 后置条件 | 根据选择波次的波次策略创建包裹: 单品单件策略,每个出库单一个包裹。 按重量拆分包裹策略,根据包裹的重量拆分包裹 向包裹主表新增一条或多条记录。 向包裹明细表新增一条或多条记录。 更新出库单明细的打包数量 |
| 数据描述 | 包裹主表: create table wms_shipment ( id varchar(36) not null primary key, create_by varchar(50) null comment '创建人', create_time datetime null comment '创建日期', update_by varchar(50) null comment '更新人', update_time datetime null comment '更新日期', sys_org_code varchar(64) null comment '所属部门', shipment_no varchar(32) not null comment '包裹编码', order_id varchar(32) not null comment '出库单id', wave_id varchar(32) null comment '波次id', shipment_type varchar(32) not null comment '包裹类型', carrier_id varchar(32) null comment '承运商id', tracking_no varchar(32) null comment '物流单号', packaging_id varchar(32) null comment '包材id', total_weight double(10, 0) null comment '总重量', weight_unit varchar(32) null comment '重量单位', size_length double(10, 0) null comment '长', size_width double(10, 0) null comment '宽', size_height double(10, 0) null comment '高', size_unit varchar(32) null comment '尺寸单位', total_volume double(10, 0) null comment '总体积', volume_unit varchar(32) null comment '体积单位', package_count int null comment '包裹件数', from_address varchar(255) null comment '送货地址', to_address varchar(255) null comment '收货地址', contact varchar(32) null comment '联系方式', estimated_arrival datetime null comment '预计到达时间', actual_departure datetime null comment '实际发货时间', actual_arrival datetime null comment '实际到达时间', status varchar(32) null comment '状态', packer_id varchar(32) null comment '打包人', shipper_id varchar(32) null comment '发货人', waybill_pdf varchar(128) null comment '运单pdf' ); 包裹号生成规范:SH+8位年月日+4位序号 包裹明细表: create table wms_shipment_detail ( id varchar(36) not null primary key, create_by varchar(50) null comment '创建人', create_time datetime null comment '创建日期', update_by varchar(50) null comment '更新人', update_time datetime null comment '更新日期', sys_org_code varchar(64) null comment '所属部门', shipment_id varchar(32) not null comment '包裹id', order_id varchar(32) not null comment '出库单id', order_item_id varchar(32) not null comment '出库单明细id', sku_id varchar(32) not null comment '商品id', quantity int null comment '数量' ); |
| 补充说明 | ![]() 创建包裹流程: ![]() 打包策略: 标准打包策略:对应 单品单件波次策略,一个订单一个包裹。 按重量拆分包裹策略:对应其它波次策略。 |
| 修改历史 |
3.8.2 完成打包
| 名称 | 完成打包 |
|---|---|
| 优先级 | 高 |
| 功能描述 | 包裹信息创建完成对整个波次完成打包 |
| 参与者 | 管理员 |
| 前置条件 | 选择一个波次 波次下每个出库单明细的商品打包数量等于拣货数量 所有出库单完成打包则波次状态更新完成打包 |
| 事件流(操作序列) | 1. 选择一个波次,进入包裹列表 1. 点击“完成打包” |
| 可选事件流 | |
| 后置条件 | 更新波次下每个出库单及出库单下明细的打包状态为完成打包 更新波次状态为完成打包 实现方式: 遍历波次下每个出库单并完成打包 出库单明细的商品打包数量等于拣货数量则更新为打包完成 |
| 数据描述 | |
| 补充说明 | ![]() |
| 修改历史 |
3.8.3 手工管理包裹
3.8.3.1 包裹管理列表
| 名称 | 包裹管理列表 |
|---|---|
| 优先级 | 高 |
| 功能描述 | 根据出库单去管理包裹 |
| 参与者 | 管理员 |
| 前置条件 | 选择一个出库单 |
| 事件流(操作序列) | 通过两个途径可以进入包裹管理列表: 波次管理列表: 1. 进入待打包波次列表 1. 点击“包裹管理” 点击包裹管理菜单 1. 选择一个出库单,点击“包裹管理”。 |
| 可选事件流 | |
| 后置条件 | 分页查询该出库单的包裹 |
| 数据描述 | |
| 补充说明 | 通过波次管理列表进入包裹管理列表:![]() 通过包裹管理菜单进入包裹管理列表: ![]() |
| 修改历史 |
3.8.3.2 新增包裹
| 名称 | 手工创建包裹 |
|---|---|
| 优先级 | 高 |
| 功能描述 | 出库单完成拣货后创建包裹 |
| 参与者 | 管理员 |
| 前置条件 | 出库单状态完成拣货 选择一个出库单进入包裹管理界面 商品的打包数量不能大于拣货数量 |
| 事件流(操作序列) | 1. 进入包裹管理列表 1. 选择一个出库单,点击“包裹管理”。 1. 点击“新增”进入添加包裹界面 1. 填写包裹信息,选择商品并输入打包数量 1. 点击“确认” |
| 可选事件流 | |
| 后置条件 | 向包裹主表添加一条包裹信息,状态为已创建 向包裹明细表添加一条或多条包裹明细信息 更新出库单明细表的打包数量 |
| 数据描述 | |
| 补充说明 | ![]() ![]() |
| 修改历史 |
3.8.3.3 修改包裹
| 名称 | 修改包裹 |
|---|---|
| 优先级 | 高 |
| 功能描述 | 创建包裹后在包裹列表界面可以修改未完成打包的包裹信息 |
| 参与者 | 管理员 |
| 前置条件 | 选择一个包裹 包裹状态为“已创建”方可修改 商品的打包数量不能大于拣货数量 |
| 事件流(操作序列) | 1. 选择包裹列表 1. 选择一个包裹,点击“编辑” 1. 修改包裹信息 1. 点击”保存“ |
| 可选事件流 | |
| 后置条件 | 更新包裹表信息 删除包裹明细信息 向包裹明细表添加一条或多条包裹明细信息 更新出库单明细表的打包数量 |
| 数据描述 | |
| 补充说明 | ![]() ![]() |
| 修改历史 |
3.8.3.4 删除包裹
| 名称 | 删除包裹 |
|---|---|
| 优先级 | 高 |
| 功能描述 | 创建包裹后当包裹处于未完成状态时可以删除包裹信息 |
| 参与者 | 管理员 |
| 前置条件 | 选择一个包裹 包裹状态为“已创建”方可删除 |
| 事件流(操作序列) | 1. 选择包裹列表 1. 选择包裹信息,点击”删除“ |
| 可选事件流 | |
| 后置条件 | 删除包裹表信息 删除包裹明细信息 更新出库单明细表的打包数量 |
| 数据描述 | |
| 补充说明 | ![]() |
| 修改历史 |
3.9 发货
3.9.1 生成快递单号
| 名称 | 生成快递单号 |
|---|---|
| 优先级 | 高 |
| 功能描述 | 打包完成发货前需要生成快递单号,这个过程通过系统与第三方快递公司进行接口对接 |
| 参与者 | 系统自动进行 |
| 前置条件 | 出库单打包完成 |
| 事件流(操作序列) | 1. 定时任务执行 1. 遍历未生成快递单号的出库单 1. 每个出库单创建一个生成快递单任务放入线程池执行 1. 生成快递单任务远程请求第三方快递平台生成快递单号 1. 快递单号生成后可以通过包裹管理进行查看 ![]() |
| 可选事件流 | |
| 后置条件 | 调用快递平台下单 保存运单号到包裹表 |
| 数据描述 | |
| 补充说明 | 为保证多个线程不重复对同一个出库单生成快递单号,使用分布式锁进行控制。 和第三方快递平台对接时开发阶段使用沙箱环境,正式环境对接正式接口。 |
| 修改历史 |
3.9.2 打印电子面单
| 名称 | 打印电子面单 |
|---|---|
| 优先级 | 高 |
| 功能描述 | 发货前打印电子面单,由仓库人员将电子面单粘贴到包裹上 |
| 参与者 | 管理员 |
| 前置条件 | 选择一个波次 波次打包完成并且其下的所有包裹的快递单号生成完成 |
| 事件流(操作序列) | 1. 进入待发货波次列表 1. 选择一个波次,点击“打印电子面单”。 |
| 可选事件流 | |
| 后置条件 | 更新波次状态为已发货 更新出库单状态为已发货 更新包裹状态为已发货 |
| 数据描述 | |
| 补充说明 | ![]() |
| 修改历史 |
3.9.3 发货
| 名称 | 发货 |
|---|---|
| 优先级 | 高 |
| 功能描述 | 打包完成进行发货 |
| 参与者 | 管理员 |
| 前置条件 | 选择一个波次 波次打包完成 |
| 事件流(操作序列) | 1. 进入波次列表 1. 选择一个波次,点击“发货”。 |
| 可选事件流 | |
| 后置条件 | 更新波次状态为已发货 更新出库单状态为已发货 更新包裹状态为已发货 更新库存(详见存储库存) |
| 数据描述 | |
| 补充说明 | |
| 修改历史 |
3.10 首页大屏
| 名称 | 首页大屏 |
|---|---|
| 优先级 | 高 |
| 功能描述 | 首页大屏提供待办任务、仓库概要、入库趋势、出库趋势、库存预警信息。 |
| 参与者 | 管理员 |
| 前置条件 | 进入首页 |
| 事件流(操作序列) | 1. 进入首页,展示首页大屏 |
| 可选事件流 | |
| 后置条件 | 展示首页大屏 数据缓存成功 |
| 数据描述 | 待办任务: 待收货任务:当前仓库、当天待收货任务 待上架任务:当前仓库、当天待上架任务 待拣货任务:当前仓库、当天待拣货任务 入库趋势: 统计当前仓库当年每个月的入库单数量 出库趋势: 统计当前仓库当年每个月的出库单数量 |
| 补充说明 | ![]() |
| 修改历史 |


























































































































