
02 — 系统架构设计2.1 架构选型2.1.1 为什么选择单体优先而非微服务对于中小型 WMS推荐模块化单体架构Modular Monolith对比维度单体架构微服务架构开发效率高代码集中低服务拆分成本高部署复杂度低单一部署单元高需要编排运维成本低高服务发现/配置中心/链路追踪数据一致性本地事务强一致分布式事务最终一致适用场景团队 10人业务初期团队 30人多业务线结论初期采用模块化单体按 wms-core、wms-inbound、wms-outbound、wms-inventory、wms-report 等模块划分未来可平滑拆分为微服务。本资料以 Spring Boot 单体架构为主同时标注微服务演进方向。2.1.2 技术栈详情2.1.3 各组件职责组件用途WMS 场景MySQL 8.0主数据库存储业务数据订单、库存、商品、用户Redis 7缓存 分布式锁热点库存缓存、入库单号分布式锁RabbitMQ异步消息入库完成通知、库存变更同步Elasticsearch日志 报表检索操作日志检索、库存历史查询MinIO / OSS文件存储签收单扫描件、质检照片2.2 模块划分2.2.1 模块结构wms-parent/ ├── wms-common/ # 公共模块工具类、常量、异常、注解 ├── wms-core/ # 核心模块商品、仓库、库位、用户、权限 ├── wms-inbound/ # 入库模块ASN、收货、上架 ├── wms-outbound/ # 出库模块订单、波次、拣货、复核、发货 ├── wms-inventory/ # 库存模块库存查询、移动、调整、批次 ├── wms-count/ # 盘点模块盘点计划、任务、差异 ├── wms-report/ # 报表模块统计报表、数据看板 └── wms-api/ # 对外 API 模块第三方系统对接2.2.2 模块间依赖wms-common ← 所有模块依赖它 ↑ wms-core ← 基础数据被所有模块依赖 ↑ wms-inbound / wms-outbound / wms-inventory / wms-count / wms-report 业务模块之间尽量避免直接依赖通过事件解耦2.2.3 包结构规范以 wms-inbound 为例com.wms.inbound/ ├── controller/ # 接口层接收 HTTP 请求 ├── service/ # 业务层业务逻辑 │ └── impl/ ├── mapper/ # 持久层MyBatis Mapper ├── model/ │ ├── entity/ # 数据库实体 │ ├── dto/ # 数据传输对象 │ ├── vo/ # 视图对象返回前端 │ └── bo/ # 业务对象 ├── event/ # 领域事件 ├── config/ # 模块配置 └── enums/ # 枚举2.3 核心设计决策2.3.1 库存扣减方案2.3.2 库位推荐策略上架时系统自动推荐最优库位核心算法推荐逻辑 1. 查询该 SKU 已有库存的库位 → 同类集中存放 2. 若无按以下规则筛选 a. 库位类型匹配存储区 / 拣选区 b. 库位容量充足体积、重量不超限 c. 库位状态可用非冻结/非锁定 d. 根据 ABC 分类优先推荐周转率匹配的库位 A 类快周转 → 靠近出口C 类慢周转 → 远离出口 3. 返回 Top 3 推荐供人工选择2.3.3 波次策略波次策略配置 ┌──────────────┬──────────────────────────┐ │ 策略类型 │ 说明 │ ├──────────────┼──────────────────────────┤ │ 按订单数量 │ 每 N 个订单生成一个波次 │ │ 按商品数量 │ 商品总量达到 N 件生成波次 │ │ 按时段 │ 每 X 分钟生成一个波次 │ │ 按区域 │ 同区域订单打包成一个波次 │ │ 按承运商 │ 同承运商订单合并波次 │ └──────────────┴──────────────────────────┘2.3.4 分布式锁应用场景场景锁 Key说明生成入库单号lock:asn:date:20260730防止单号重复库存扣减lock:inv:sku:12345防止并发超扣库位分配lock:location:A-01-03防止同库位并发分配盘点锁定lock:count:warehouse:1盘点期间冻结库区2.4 安全架构2.4.1 认证流程2.4.2 权限模型RBAC用户(User) ←→ 角色(Role) ←→ 权限(Permission) ↓ 菜单权限 按钮权限 数据权限数据权限示例角色仓库数据范围说明超级管理员全部仓库查看所有数据区域经理指定区域仓库只能看管辖区域仓管员当前仓库只能操作本仓库拣货员当前仓库只能看本仓库任务2.5 部署架构