# WMS **Repository Path**: tabdon/WMS ## Basic Information - **Project Name**: WMS - **Description**: 仓库管理系统后端,功能包括(物料管理、权限管理、人员管理、http通信加密、物料库存预警根据物料流水自动更新、多客户端登录问题解决等) - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: zwb - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2023-09-23 - **Last Updated**: 2026-02-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # WMS 仓库管理系统 ## 项目简介 WMS(Warehouse Management System)仓库管理系统是一个基于 Spring Boot 开发的综合性仓库管理企业级应用。该系统实现了物料的入库、出库、库存管理、用户权限管理、角色权限控制等功能,并支持数据导出为 Excel 报表。 ## 技术栈 - **后端框架**:Spring Boot - **持久层框架**:MyBatis Plus - **数据库**:MySQL - **缓存**:Redis - **加密**:RSA + AES 混合加密 - **Excel 导出**:EasyExcel - **定时任务**:Spring Scheduler ## 核心功能 ### 1. 物料管理 - 物料信息维护(增删改查) - 物料库存数量管理 - 库存预警功能 - 物料名称模糊搜索 - 物料分类统计 ### 2. 出入库管理 - 新物料入库 - 旧物料出库 - 多物料批量出入库 - 出入库记录查询 - 按日期范围查询 - 物流速率统计 ### 3. 用户权限管理 - 用户注册与登录(RSA 加密传输) - 用户信息管理 - 角色分配 - 权限分配 - 基于角色的访问控制(RBAC) ### 4. 数据报表 - 物料数据导出(Excel) - 出入库数据导出 - 台账数据导出 ### 5. 系统安全 - 请求参数解密 - 响应数据加密 - 登录拦截验证 - Token 认证 ### 6. 定时任务 - 每周自动更新物料数量 ## 项目结构 ``` com.wms ├── annotation # 自定义注解 ├── aop # AOP 切面处理 ├── config # 配置类 ├── controller # 控制器 ├── dto # 数据传输对象 ├── entity # 实体类 ├── exception # 异常处理 ├── interceptor # 拦截器 ├── mapper # 持久层接口 ├── result # 统一返回结果 ├── service # 业务层接口及实现 ├── TimeTask # 定时任务 ├── utils # 工具类 └── machineLearn # 机器学习模块 ``` ## 快速开始 ### 环境要求 - JDK 1.8+ - Maven 3.6+ - MySQL 5.7+ - Redis ### 配置说明 在 `application.properties` 或 `application.yml` 中配置以下内容: ```properties # 数据库配置 spring.datasource.url=jdbc:mysql://localhost:3306/wms spring.datasource.username=root spring.datasource.password=yourpassword # Redis配置 spring.redis.host=localhost spring.redis.port=6379 # RSA密钥配置 RSA.publicKey=your_public_key RSA.privateKey=your_private_key # 登录有效期(小时) User.LoginTime=24 ``` ### 初始化数据库 执行项目根目录下的 `wms.sql` 脚本创建数据库表。 ### 运行项目 ```bash mvn clean install mvn spring-boot:run ``` ## API 接口 ### 用户接口 | 接口路径 | 方法 | 描述 | |---------|------|------| | `/user/login` | GET | 用户登录 | | `/user/register` | POST | 用户注册 | | `/user/quitlogin` | GET | 退出登录 | | `/user/getRSApublicKey` | GET | 获取RSA公钥 | ### 物料接口 | 接口路径 | 方法 | 描述 | |---------|------|------| | `/material` | GET | 获取所有物料 | | `/material/{id}` | GET | 根据ID获取物料 | | `/material/like/{name}` | GET | 模糊搜索物料 | | `/material/update` | POST | 更新物料信息 | | `/material/delete/{mid}` | GET | 删除物料 | ### 出入库接口 | 接口路径 | 方法 | 描述 | |---------|------|------| | `/inout/new` | POST | 新物料入库 | | `/inout/old` | POST | 旧物料入库 | | `/inout/out` | POST | 物料出库 | | `/inout/mul/out` | POST | 批量出库 | | `/inout/mul/in` | POST | 批量入库 | | `/inout/date` | GET | 按日期查询 | ### 报表接口 | 接口路径 | 方法 | 描述 | |---------|------|------| | `/excel/material/export` | GET | 导出物料数据 | | `/excel/inout/export` | GET | 导出入库数据 | | `/excel/ledger/export` | GET | 导出台账数据 | ## 安全机制 ### 加密流程 1. 客户端获取 RSA 公钥 2. 使用 RSA 加密 AES 密钥 3. 后续请求使用 AES 密钥加密传输 4. 服务端响应使用 AES 加密返回 ### 注解说明 - `@DecryptRequest`:请求参数解密 - `@EncryptResponse`:响应数据加密 ## 定时任务 系统每周日 3:10 执行物料数量更新任务: ```java @Scheduled(cron = "0 10 3 ? * 1") public void updateMaterialNum() ``` ## 许可证 本项目仅供学习交流使用。