# Warehouse **Repository Path**: kule111/warehouse ## Basic Information - **Project Name**: Warehouse - **Description**: 仓库管理系统(WMS)基于 Spring Boot + Vue 3 的前后端分离项目,实现库存管理、入库出库、商品/仓库/供应商/客户管理及数据统计功能。 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-01-17 - **Last Updated**: 2026-01-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Warehouse Management System (WMS) 基于 Spring Boot 3 + Vue 3 的现代化仓库管理系统。 ## 1. 项目概述 本系统是一个功能完善的仓库管理解决方案,实现了商品管理、库存监控、出入库操作、权限控制等核心业务功能。 ### 核心功能 | 功能 | 描述 | |------|------| | **用户认证** | JWT Token 认证,支持登录/注册 | | **权限管理** | RBAC模型,区分管理员(ADMIN)和普通用户(USER) | | **商品管理** | 商品的增删改查,支持分类和品牌 | | **库存管理** | 多仓库库存实时监控,低库存预警 | | **出入库操作** | 标准的入库、出库、调拨流程及记录追踪 | | **库存预警** | 自动检测低库存并触发通知 | | **日志审计** | 关键操作的系统日志记录 | | **仪表盘** | 数据统计图表展示 | | **数据导出** | 支持库存、出入库记录的Excel导出 | | **条码扫描** | 集成条码扫描功能,支持扫码操作 | ## 2. 技术架构 ### 后端 (Backend) - **Java 17** + **Spring Boot 3.2.0** - **Spring Security** + **JWT** 认证 - **Spring Data JPA** (Hibernate) - **MySQL 8.0** 数据库 - **Lombok** 代码简化 - **EasyExcel** Excel导出 - **SpringDoc OpenAPI** API文档 ### 前端 (Frontend) - **Vue 3** (Composition API) - **Vite 5** 构建工具 - **Element Plus** UI组件库 - **Pinia** 状态管理 - **Vue Router 4** 路由管理 - **Axios** HTTP客户端 - **ECharts** 图表库 - **html5-qrcode** 条码扫描 ## 3. 项目结构 ``` warehouse-management-system/ ├── backend/ # Spring Boot 后端 │ ├── src/main/java/com/example/wms/ │ │ ├── controller/ # REST API 控制器 │ │ ├── service/ # 业务逻辑层 │ │ ├── entity/ # 实体类 │ │ ├── repository/ # 数据访问层 │ │ ├── security/ # JWT 安全配置 │ │ ├── config/ # 配置类 │ │ ├── dto/ # 数据传输对象 │ │ └── aspect/ # 日志切面 │ └── src/main/resources/ │ ├── application.yml # 应用配置 │ ├── schema.sql # 数据库schema │ └── data.sql # 初始数据 │ ├── frontend/ # Vue 3 前端 │ ├── src/ │ │ ├── views/ # 页面组件 │ │ ├── components/ # 通用组件 │ │ ├── services/ # API服务 │ │ ├── store/ # Pinia状态管理 │ │ ├── router/ # 路由配置 │ │ └── composables/ # 组合式函数 │ └── package.json │ └── README.md ``` ## 4. API 接口文档 ### 认证模块 | 方法 | 路径 | 描述 | |------|------|------| | POST | `/api/auth/login` | 用户登录 | | POST | `/api/auth/register` | 用户注册 | ### 商品管理 | 方法 | 路径 | 描述 | 权限 | |------|------|------|------| | GET | `/api/products` | 获取所有商品 | 用户 | | GET | `/api/products/{id}` | 获取商品详情 | 用户 | | POST | `/api/products` | 创建商品 | 管理员 | | PUT | `/api/products/{id}` | 更新商品 | 管理员 | | DELETE | `/api/products/{id}` | 删除商品 | 管理员 | ### 库存管理 | 方法 | 路径 | 描述 | |------|------|------| | GET | `/api/inventory` | 获取所有库存 | | PUT | `/api/inventory/{id}` | 更新库存 | | POST | `/api/inventory/stock-in` | 入库操作 | | POST | `/api/inventory/stock-out` | 出库操作 | | POST | `/api/inventory/transfer` | 库存调拨 | ### 仓库管理 | 方法 | 路径 | 描述 | |------|------|------| | GET | `/api/warehouses` | 获取所有仓库 | | POST | `/api/warehouses` | 创建仓库 | | PUT | `/api/warehouses/{id}` | 更新仓库 | | DELETE | `/api/warehouses/{id}` | 删除仓库 | ### 仪表盘 | 方法 | 路径 | 描述 | |------|------|------| | GET | `/api/dashboard/stats` | 获取统计数据 | | GET | `/api/dashboard/charts` | 获取图表数据 | ## 5. 数据库设计 ### 核心表 | 表名 | 描述 | |------|------| | `user` | 用户表 | | `product` | 商品表 | | `category` | 商品分类表 | | `brand` | 品牌表 | | `warehouse` | 仓库表 | | `inventory` | 库存表 (商品-仓库关联) | | `stock_in_record` | 入库记录表 | | `stock_out_record` | 出库记录表 | | `stock_transfer_record` | 库存调拨记录表 | | `system_log` | 系统日志表 | | `notification` | 通知表 | ### 库存表关键字段 ```sql inventory ( id BIGINT PRIMARY KEY, product_id BIGINT NOT NULL, -- 关联商品 warehouse_id BIGINT NOT NULL, -- 关联仓库 quantity INT NOT NULL, -- 当前库存 min_stock INT DEFAULT 0, -- 最低库存警戒线 max_stock INT DEFAULT 1000, -- 最高库存上限 last_updated TIMESTAMP -- 最后更新时间 ) ``` ## 6. 快速开始 ### 环境要求 - JDK 17+ - Node.js 16+ - MySQL 8.0+ - Maven 3.6+ ### 数据库配置 1. 创建数据库: ```sql CREATE DATABASE wms CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ``` 2. 修改 `backend/src/main/resources/application.yml` 中的数据库密码 ### 启动后端 ```bash cd backend mvn spring-boot:run ``` > 首次启动时自动执行 `schema.sql` 建表和 `data.sql` 初始化数据 ### 启动前端 ```bash cd frontend npm install npm run dev ``` 访问地址:`http://localhost:3000` ## 7. 默认账号 | 角色 | 用户名 | 密码 | 说明 | |------|--------|------|------| | **超级管理员** | `admin` | `admin123` | 拥有所有权限 | | **仓库经理** | `manager` | `manager123` | 负责仓库管理 | | **普通员工** | `user` | `user123` | 基础操作权限 | ## 8. 核心业务流程 ### 入库流程 ``` 选择商品 → 选择仓库 → 输入数量 → 提交 → 库存增加 → 记录入库 ``` ### 出库流程 ``` 选择商品 → 选择仓库 → 输入数量 → 检查库存 → 提交 → 库存扣减 → 检查预警 ``` ### 调拨流程 ``` 选择商品 → 选择源仓库 → 选择目标仓库 → 输入数量 → 提交 → 源仓库扣减 → 目标仓库增加 ``` ### 库存预警 ``` 库存变动 → 检查是否低于 min_stock → 是 → 触发通知 ``` ## 9. 注意事项 - 默认后端端口 8080,前端端口 3000 - 首次启动自动创建默认账号 - JWT Token 有效期 24 小时 - 数据库时区设置为 UTC - 遇到跨域问题检查 `SecurityConfig.java` ## 10. 项目特点 1. **前后端分离** - 松耦合架构,便于独立开发和部署 2. **JWT认证** - 无状态认证,支持分布式部署 3. **RBAC权限** - 基于角色的访问控制 4. **事务安全** - 出入库操作使用事务保证数据一致性 5. **低库存预警** - 自动检测并通知 6. **完整日志** - 关键操作可追溯 ## 许可证 MIT License