# SmartWMS **Repository Path**: qiu_6_0/smart-wms ## Basic Information - **Project Name**: SmartWMS - **Description**: 基于 JeecgBoot 低代码平台开发的企业级仓储管理系统,覆盖仓库、商品、入库/出库、库存盘点、波次、拣货、发货、运单7大核心业务模块,实现全流程闭环管理。 技术栈: Java 17、Spring Boot、Spring AI、MyBatis-Plus、MySQL、Redis/Redisson、RabbitMQ、Shiro+JWT、EasyExcel、顺丰丰桥 SDK、PgVector - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-09-13 - **Last Updated**: 2026-09-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # SmartWMS > 基于 JeecgBoot 低代码平台开发的企业级仓储管理系统(Warehouse Management System),覆盖仓库、商品、入库、出库、库存盘点、波次、拣货、发货、运单等核心业务,实现仓储全流程闭环管理。 ## 目录 - [SmartWMS](#smartwms) - [目录](#目录) - [项目简介](#项目简介) - [核心功能](#核心功能) - [界面截图](#界面截图) - [技术栈](#技术栈) - [项目结构](#项目结构) - [功能亮点](#功能亮点) - [1. 复杂波次策略引擎](#1-复杂波次策略引擎) - [2. 拣货路径智能规划](#2-拣货路径智能规划) - [3. 基于 RAG 的智能库存助手](#3-基于-rag-的智能库存助手) - [4. 高并发库存一致性保障](#4-高并发库存一致性保障) - [环境要求](#环境要求) - [快速开始](#快速开始) - [1. 初始化数据库](#1-初始化数据库) - [2. 配置中间件](#2-配置中间件) - [3. 配置连接信息](#3-配置连接信息) - [4. 配置环境变量](#4-配置环境变量) - [5. 启动后端](#5-启动后端) - [6. 启动前端](#6-启动前端) - [环境变量配置](#环境变量配置) - [模块说明](#模块说明) - [免责声明](#免责声明) - [License](#license) ## 项目简介 SmartWMS 是一个面向电商 / 第三方物流场景的仓储管理系统,在 JeecgBoot 的权限、字典、低代码表单、报表等基础能力之上,扩展了完整的 WMS 业务域。系统对入库(收货、上架)、在库(移库、盘点)、出库(波次、拣货、复核、发货、运单)全链路进行了建模,并引入 AI 与算法能力优化仓储作业效率。 ## 核心功能 | 业务域 | 说明 | |--------|------| | 仓库管理 | 仓库、库区、货架、储位的层级建模与网格化地图 | | 商品管理 | 商品档案、SKU、包装规格、货主管理 | | 入库管理 | 入库单、收货、上架任务 | | 出库管理 | 出库单、波次生成、拣货、复核、发货 | | 库存管理 | 实时库存、库存流水、库存盘点、移库 | | 波次策略 | 多策略动态组合,按优先级生成波次 | | 拣货路径 | A* 算法路径规划 + SVG 可视化 | | 运单管理 | 对接顺丰丰桥,异步下单、面单打印 | | AI 助手 | 基于 RAG 的自然语言库存查询与操作建议 | ## 界面截图 ### 波次策略配置 多策略动态组合,参数(优先级、最小/最大订单数等)通过表单可视化配置,新增/调整策略无需改动代码。 ![波次策略配置界面](docs/images/波次策略配置界面.png) ### 拣货路径可视化 基于 A\* 算法规划拣货路径,自动生成网格地图 SVG 可视化图形,作业人员可直观查看拣货顺序与路径。 ![拣货路径SVG可视化](docs/images/拣货路径svg可视化.png) ### 波次作业流程 覆盖波次生成、拣货、复核、发货的出库全流程闭环管理。 ![波次作业流程界面](docs/images/波次作业流程界面.png) ### AI 智能库存助手 基于 RAG + Tool Calling,用自然语言查询库存状态、出入库记录并获取操作建议。 ![AI助手对话界面](docs/images/AI助手对话界面.png) ## 技术栈 **后端(backend/)** - Java 17、Spring Boot 3.4.5、JeecgBoot 3.8.1 - Spring AI(RAG / Tool Calling) - MyBatis-Plus 3.5.12、Druid - MySQL 8.0、PostgreSQL + PgVector(向量库) - Redis + Redisson(分布式锁) - RabbitMQ(异步消息) - Apache Shiro 2.0 + JWT(认证鉴权) - EasyExcel / autopoi(导入导出) - 顺丰丰桥 SDK(电子面单) **前端(frontend/)** - Vue 3.5、TypeScript、Vite 6 - Ant Design Vue 4.2、Pinia - 基于 jeecg-boot-vue3 ## 项目结构 ``` SmartWMS ├── backend # 后端(Maven 多模块) │ ├── jeecg-boot-base-core # 基础框架、通用配置(Redisson、锁切面等) │ ├── jeecg-boot-module # AI RAG 等扩展模块 │ ├── jeecg-module-system # 系统管理(用户/权限/字典/启动模块) │ ├── jeecg-module-wms # ★ WMS 核心业务模块 │ │ └── org.jeecg.modules.wms │ │ ├── warehouse # 仓库/库区/储位 │ │ ├── goods # 商品/SKU │ │ ├── inorder # 入库 │ │ ├── outorder # 出库 │ │ ├── inventory # 库存/流水/盘点 │ │ ├── wave # 波次策略引擎 │ │ ├── pickroute # 拣货路径规划(A*) │ │ ├── shipment # 发货 │ │ ├── waybill # 运单(顺丰对接) │ │ └── ai # AI 工具与对话 │ ├── jeecg-module-iot # IoT 设备监控模块(可选) │ └── db # 数据库初始化脚本 └── frontend # 前端(Vue3 + Vite + TS) ├── src/api # 接口定义 ├── src/views # 业务页面(wms、wave、waybill、system 等) ├── src/components # 公共组件 ├── src/router # 路由 ├── src/store # Pinia 状态 └── mock / tests # 接口 mock 与测试服务(框架自带) ``` ## 功能亮点 ### 1. 复杂波次策略引擎 针对多变的订单分配需求,采用**策略模式 + 责任链模式**解耦业务逻辑,将波次规则抽象为策略接口 [`IWaveStrategy`](backend/jeecg-module-wms/src/main/java/org/jeecg/modules/wms/wave/strategy/IWaveStrategy.java),实现了四种策略并按优先级动态组装责任链: - `SIWWaveStrategy` —— 单品单件 - `SISQWaveStrategy` —— 一品两件 - `SIFQWaveStrategy` —— 一品 N 件 - `EOWWaveStrategy` —— 尾单 策略参数(最小/最大订单数、优先级)通过数据库表动态配置,前端支持多选策略组合,**新增/调整策略无需改动代码**。 ### 2. 拣货路径智能规划 引入 **A\* 寻路算法**([`AStarFinder`](backend/jeecg-module-wms/src/main/java/org/jeecg/modules/wms/pickroute/AStarFinder.java))优化拣货路径:将仓库建模为网格地图(`Grid` / `GridType`),通过相邻行分组优化将同一货架行的商品合并拣选,减少路径重复;计算结果自动生成 **SVG 可视化图形**,前端直接渲染,方便作业人员直观执行拣货。 ### 3. 基于 RAG 的智能库存助手 利用 **Spring AI + PgVector** 构建 RAG 知识库,支持将库存数据、操作手册等非结构化数据向量化存储。注册了 3 个 AI Tool 供大模型直接调用 WMS 业务接口获取实时数据: - [`WmsInventoryTools`](backend/jeecg-module-wms/src/main/java/org/jeecg/modules/wms/ai/chat/tools/WmsInventoryTools.java) —— 库存查询 - [`WmsProductTools`](backend/jeecg-module-wms/src/main/java/org/jeecg/modules/wms/ai/chat/tools/WmsProductTools.java) —— 商品查询 - [`WmsWaveTools`](backend/jeecg-module-wms/src/main/java/org/jeecg/modules/wms/ai/chat/tools/WmsWaveTools.java) —— 波次拣货路径查询 实现自然语言查询库存状态、出入库记录及操作建议,降低操作培训成本。 ### 4. 高并发库存一致性保障 设计 **Redisson 分布式锁 + 数据库乐观锁**双重防护机制,解决秒杀/大促场景下的库存超卖问题(见 [`LockAspect`](backend/jeecg-boot-base-core/src/main/java/org/jeecg/common/aspect/LockAspect.java)、[`RedissonConfiguration`](backend/jeecg-boot-base-core/src/main/java/org/jeecg/config/RedissonConfiguration.java))。 使用 **RabbitMQ** 实现出库单到运单生成的异步通知,配合线程池异步处理运单任务进行削峰填谷([`WaybillMessageSender`](backend/jeecg-module-wms/src/main/java/org/jeecg/modules/wms/waybill/mq/WaybillMessageSender.java) / [`WaybillMessageListener`](backend/jeecg-module-wms/src/main/java/org/jeecg/modules/wms/waybill/mq/WaybillMessageListener.java)),并设计每 5 分钟兜底定时任务补偿消息丢失([`WaybillTaskJob`](backend/jeecg-module-wms/src/main/java/org/jeecg/modules/wms/waybill/task/WaybillTaskJob.java)),确保高并发下库存流水与单据数据的最终一致性。 ## 环境要求 | 组件 | 版本要求 | 用途 | |------|----------|------| | JDK | 17 | 运行时 | | Maven | 3.6+ | 后端构建 | | MySQL | 8.0+ | 主数据库 | | Redis | 5.0+ | 缓存 / 分布式锁 | | RabbitMQ | 3.8+ | 异步消息 | | PostgreSQL + PgVector | PG 14+ | 向量库(AI RAG,可选) | | Node.js | 18+ | 前端构建 | | pnpm | 8+ | 前端包管理 | | InfluxDB / EMQX | - | IoT 模块(可选) | ## 快速开始 ### 1. 初始化数据库 创建数据库(如 `smartwms`),导入初始化脚本: ```bash mysql -u root -p smartwms < backend/db/smartwms-20251114.sql ``` ### 2. 配置中间件 本地启动 MySQL、Redis、RabbitMQ;如需 AI 助手能力,额外准备 PostgreSQL + PgVector。 ### 3. 配置连接信息 编辑 [`backend/jeecg-module-system/jeecg-system-start/src/main/resources/application-dev.yml`](backend/jeecg-module-system/jeecg-system-start/src/main/resources/application-dev.yml),设置数据库、Redis、RabbitMQ 的连接地址与账号(本地开发环境)。 ### 4. 配置环境变量 参见下方 [环境变量配置](#环境变量配置),配置对象存储与第三方接口密钥。 ### 5. 启动后端 ```bash cd backend mvn clean install -DskipTests # 运行 jeecg-module-system/jeecg-system-start 下的 JeecgSystemApplication ``` 默认访问 `http://localhost:8080/jeecg-boot`,接口文档 knife4j 路径 `/doc.html`。 ### 6. 启动前端 ```bash cd frontend pnpm install pnpm dev ``` 默认访问 `http://localhost:3100`,开发服务器已配置 `/jeecgboot` 代理到后端,无需处理跨域。初始管理员账号密码请见数据库初始化脚本 `sys_user` 表。 ## 环境变量配置 出于安全考虑,第三方密钥通过环境变量注入,不写入代码仓库。请在运行环境中配置以下变量: | 环境变量 | 说明 | |----------|------| | `ALIYUN_OSS_ACCESS_KEY_ID` | 阿里云 OSS AccessKeyId(文件存储) | | `ALIYUN_OSS_ACCESS_KEY_SECRET` | 阿里云 OSS AccessKeySecret | | `WMS_SF_CLIENT_CODE` | 顺丰丰桥顾客编码 | | `WMS_SF_CHECK_WORD` | 顺丰丰桥校验码 | > Windows 下可通过系统环境变量设置,或在 IDE 的 Run Configuration 中配置 Environment variables;Linux/macOS 可 `export` 或写入 `~/.bashrc`。 ## 模块说明 - **jeecg-module-wms**:WMS 核心业务,本项目的主体。 - **jeecg-module-iot**:物联网设备监控(温湿度采集、告警),依赖 InfluxDB / EMQX,可按需启用。 - **jeecg-boot-module-airag**:AI RAG 能力封装,支撑智能库存助手。 - 其余为 JeecgBoot 框架自带的系统管理、代码生成、示例模块。 ## 免责声明 - 本项目基于开源框架 [JeecgBoot](https://github.com/jeecgboot/JeecgBoot)(Apache-2.0 协议)二次开发,遵循其原始许可证要求。 - 项目中顺丰、OSS 等第三方接口默认指向**沙箱 / 演示环境**,仅用于学习演示,请勿用于生产。 - 数据库初始化脚本包含演示数据,不含任何真实生产凭据。 - 使用者需自行配置合法的第三方服务密钥,并遵守相应服务商的服务条款。 ## License 本项目在 [JeecgBoot](https://github.com/jeecgboot/JeecgBoot) 的 Apache License 2.0 基础上进行二次开发,衍生代码同样遵循 Apache License 2.0。详见 [LICENSE](LICENSE)。