仓库管理系统 - 基于SpringBoot的完整解决方案

项目概述

本项目是一个基于SpringBoot的仓库管理系统,旨在为企业提供高效、可靠的仓库管理解决方案。系统采用现代化的技术架构,实现了仓库管理的核心功能,包括库存管理、出入库管理、供应商管理、客户管理等模块。

目录


技术栈

后端技术

  • SpringBoot 2.x:快速开发框架
  • Spring MVC:Web层框架
  • MyBatis-Plus:ORM框架,简化数据库操作
  • MySQL 8.0:关系型数据库
  • Redis:缓存数据库,提升系统性能
  • Spring Security:安全认证框架
  • JWT:JSON Web Token,用于用户认证
  • Swagger:API文档生成工具
  • Maven:项目构建工具

前端技术

  • Vue.js 3.x:前端框架
  • Element Plus:UI组件库
  • Axios:HTTP客户端
  • Vue Router:路由管理
  • Vuex:状态管理
  • Webpack:模块打包工具

开发工具

  • IntelliJ IDEA:Java开发IDE
  • Visual Studio Code:前端开发IDE
  • Navicat:数据库管理工具
  • Postman:API测试工具
  • Git:版本控制工具

系统功能模块

1. 用户管理模块

2. 系统管理模块

3. 人资中心

4. 基础数据管理模块

5. 进货管理模块

6. 销售管理模块

7. 零售管理模块

8. 会员中心模块

9. 报表统计模块

10. 绩效管理模块

系统架构设计

整体架构

系统采用前后端分离的架构设计,前端通过RESTful API与后端进行数据交互。整体架构分为四层:

  1. 表现层:Vue.js前端应用,负责用户界面展示和交互
  2. 应用层:SpringBoot后端服务,处理业务逻辑
  3. 数据访问层:MyBatis-Plus,负责数据库操作
  4. 数据存储层:MySQL数据库和Redis缓存

数据库设计

系统数据库设计遵循第三范式,主要包含以下核心表:

  • 用户表:存储系统用户信息
  • 角色表:存储角色信息
  • 权限表:存储权限信息
  • 仓库表:存储仓库基本信息
  • 商品表:存储商品信息
  • 库存表:存储实时库存信息
  • 入库单表:存储入库记录
  • 出库单表:存储出库记录
  • 供应商表:存储供应商信息
  • 客户表:存储客户信息

快速开始

环境准备

  1. JDK 1.8+:确保已安装Java开发环境
  2. MySQL 8.0+:安装并启动MySQL数据库
  3. Redis 5.0+:安装并启动Redis服务
  4. Node.js 14+:前端开发环境
  5. Maven 3.6+:项目构建工具

后端部署步骤

1. 数据库初始化
sql 复制代码
-- 创建数据库
CREATE DATABASE IF NOT EXISTS warehouse_db DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

-- 使用数据库
USE warehouse_db;

-- 执行项目中的SQL脚本初始化表结构
-- 脚本位置:/src/main/resources/sql/init.sql
2. 配置文件修改

修改 application.yml 配置文件:

yaml 复制代码
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/warehouse_db?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai
    username: root
    password: your_password
    driver-class-name: com.mysql.cj.jdbc.Driver
  
  redis:
    host: localhost
    port: 6379
    password: 
    database: 0
    timeout: 3000ms

# JWT配置
jwt:
  secret: your_jwt_secret_key_here
  expiration: 86400000  # 24小时
  header: Authorization
3. 项目构建与运行
bash 复制代码
# 克隆项目
git clone https://gitee.com/ordinary-world3/warehouse.git

# 进入项目目录
cd warehouse

# 使用Maven构建项目
mvn clean package

# 运行项目
java -jar target/warehouse-1.0.0.jar

前端部署步骤

1. 安装依赖
bash 复制代码
# 进入前端目录
cd warehouse-frontend

# 安装依赖
npm install
2. 配置修改

修改 src/config/index.js 中的API地址:

javascript 复制代码
export default {
  baseURL: 'http://localhost:8080/api', // 后端API地址
  timeout: 10000,
  // 其他配置...
}
3. 运行前端
bash 复制代码
# 开发环境运行
npm run serve

# 生产环境构建
npm run build

API接口文档

系统使用Swagger生成API文档,启动后端服务后访问:

主要API接口

认证相关接口
  • POST /api/auth/login - 用户登录
  • POST /api/auth/register - 用户注册
  • POST /api/auth/logout - 用户登出
  • POST /api/auth/refresh - 刷新Token
用户管理接口
  • GET /api/users - 获取用户列表
  • GET /api/users/{id} - 获取用户详情
  • POST /api/users - 创建用户
  • PUT /api/users/{id} - 更新用户
  • DELETE /api/users/{id} - 删除用户
商品管理接口
  • GET /api/products - 获取商品列表
  • GET /api/products/{id} - 获取商品详情
  • POST /api/products - 创建商品
  • PUT /api/products/{id} - 更新商品
  • DELETE /api/products/{id} - 删除商品
库存管理接口
  • GET /api/inventories - 获取库存列表
  • GET /api/inventories/{id} - 获取库存详情
  • POST /api/inventories - 创建库存记录
  • PUT /api/inventories/{id} - 更新库存
  • POST /api/inventories/check - 库存盘点
出入库管理接口
  • GET /api/inbound-orders - 获取入库单列表
  • GET /api/outbound-orders - 获取出库单列表
  • POST /api/inbound-orders - 创建入库单
  • POST /api/outbound-orders - 创建出库单
  • PUT /api/inbound-orders/{id}/status - 更新入库单状态
  • PUT /api/outbound-orders/{id}/status - 更新出库单状态

系统特性

1. 高性能设计

  • 使用Redis缓存热点数据,减少数据库压力
  • 数据库查询优化,建立合适的索引
  • 异步处理耗时操作,提升响应速度
  • 连接池配置优化,提高并发处理能力

2. 高安全性

  • 基于Spring Security和JWT的认证授权
  • 密码加密存储(BCrypt算法)
  • SQL注入防护
  • XSS攻击防护
  • CSRF防护
  • 接口访问权限控制

3. 高可用性

  • 数据库主从复制配置
  • Redis哨兵模式部署
  • 服务监控和告警
  • 日志记录和审计
  • 数据备份和恢复机制

4. 易扩展性

  • 模块化设计,便于功能扩展
  • 微服务架构支持
  • 前后端分离,便于独立部署
  • 支持多租户架构
  • 支持国际化

开发规范

代码规范

  1. 命名规范:遵循Java命名规范,使用驼峰命名法
  2. 注释规范:类、方法、复杂逻辑需要添加注释
  3. 日志规范:使用SLF4J记录日志,合理设置日志级别
  4. 异常处理:统一异常处理,避免直接抛出原始异常

数据库规范

  1. 表名规范 :使用小写字母和下划线,如user_info
  2. 字段规范 :使用小写字母和下划线,如user_name
  3. 索引规范:为查询频繁的字段建立索引
  4. 外键规范:合理使用外键约束

API设计规范

  1. RESTful风格:使用HTTP方法表示操作类型
  2. 版本控制 :API路径包含版本号,如/api/v1/users
  3. 响应格式:统一响应格式,包含状态码、消息和数据
  4. 错误处理:统一的错误码和错误信息

部署指南

生产环境部署

1. 服务器要求
  • 操作系统:CentOS 7+/Ubuntu 18.04+
  • 内存:8GB以上
  • 存储:100GB以上
  • 网络:公网IP,开放80/443端口
2. 环境配置
bash 复制代码
# 安装Java
yum install java-1.8.0-openjdk-devel

# 安装MySQL
yum install mysql-server

# 安装Redis
yum install redis

# 安装Nginx
yum install nginx

# 安装Node.js
curl -sL https://rpm.nodesource.com/setup_14.x | bash -
yum install nodejs
3. 应用部署
bash 复制代码
# 创建应用目录
mkdir -p /opt/warehouse
cd /opt/warehouse

# 上传应用文件
# 后端jar包:warehouse-1.0.0.jar
# 前端dist目录:dist/

# 配置systemd服务
vim /etc/systemd/system/warehouse.service

[Unit]
Description=Warehouse Management System
After=network.target

[Service]
Type=simple
User=warehouse
WorkingDirectory=/opt/warehouse
ExecStart=/usr/bin/java -jar warehouse-1.0.0.jar
Restart=always

[Install]
WantedBy=multi-user.target

# 启动服务
systemctl daemon-reload
systemctl start warehouse
systemctl enable warehouse
4. Nginx配置
nginx 复制代码
server {
    listen 80;
    server_name your-domain.com;
    
    # 前端静态文件
    location / {
        root /opt/warehouse/dist;
        index index.html;
        try_files $uri $uri/ /index.html;
    }
    
    # 后端API代理
    location /api {
        proxy_pass http://localhost:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
    
    # 静态资源缓存
    location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
        expires 1y;
        add_header Cache-Control "public, immutable";
    }
}

故障排除

常见问题

1. 数据库连接失败

问题描述 :应用启动时提示数据库连接失败

解决方案

  • 检查MySQL服务是否启动:systemctl status mysqld
  • 检查数据库连接配置:application.yml中的数据库URL、用户名、密码
  • 检查防火墙设置:firewall-cmd --list-ports
  • 检查MySQL用户权限:GRANT ALL PRIVILEGES ON warehouse_db.* TO 'username'@'%';
2. Redis连接失败

问题描述 :应用启动时提示Redis连接失败

解决方案

  • 检查Redis服务是否启动:systemctl status redis
  • 检查Redis配置:redis.conf中的bind和protected-mode设置
  • 检查防火墙设置:firewall-cmd --add-port=6379/tcp
3. 前端无法访问后端API

问题描述 :前端页面可以打开,但无法调用后端接口

解决方案

  • 检查Nginx配置中的proxy_pass地址
  • 检查后端服务是否正常运行:systemctl status warehouse
  • 检查跨域配置:后端CORS配置是否正确
  • 检查网络连通性:curl http://localhost:8080/api/health
4. 内存溢出

问题描述 :应用运行一段时间后内存占用过高

解决方案

  • 调整JVM参数:-Xms512m -Xmx1024m
  • 检查内存泄漏:使用jmap、jstat工具分析
  • 优化数据库查询:避免全表扫描,使用分页查询
  • 优化缓存策略:合理设置缓存过期时间

性能优化建议

1. 数据库优化

  • 为频繁查询的字段建立索引
  • 避免使用SELECT *,只查询需要的字段
  • 使用分页查询,避免一次性查询大量数据
  • 定期清理历史数据,保持表体积合理
  • 使用数据库连接池,合理配置连接数

2. 缓存优化

  • 合理设置缓存过期时间
  • 使用多级缓存策略
  • 缓存热点数据,如用户信息、商品信息
  • 使用缓存预热机制
  • 监控缓存命中率

3. 代码优化

  • 避免在循环中执行数据库操作
  • 使用批量操作代替单条操作
  • 合理使用异步处理
  • 优化算法复杂度
  • 减少不必要的对象创建

4. 前端优化

  • 使用CDN加速静态资源加载
  • 压缩JavaScript和CSS文件
  • 使用图片懒加载
  • 减少HTTP请求数量
  • 使用浏览器缓存

未来规划

短期计划(1-3个月)

  1. 增加移动端适配
  2. 集成第三方登录(微信、支付宝)
  3. 增加数据导入导出功能
  4. 优化报表生成性能
  5. 增加消息通知功能

中期计划(3-6个月)

  1. 支持微服务架构改造
  2. 增加AI智能预测功能
  3. 集成物联网设备管理
  4. 支持多语言国际化
  5. 增加工作流引擎

长期计划(6-12个月)

  1. 支持云原生部署
  2. 增加区块链溯源功能
  3. 集成大数据分析平台
  4. 支持AR/VR仓库管理
  5. 构建开发者生态

贡献指南

如何贡献

  1. Fork本仓库到自己的账户
  2. 创建功能分支:git checkout -b feature/your-feature
  3. 提交更改:git commit -m 'Add some feature'
  4. 推送到分支:git push origin feature/your-feature
  5. 提交Pull Request

代码提交规范

  • feat:新功能
  • fix:修复bug
  • docs:文档更新
  • style:代码格式调整
  • refactor:代码重构
  • test:测试相关
  • chore:构建过程或辅助工具变动

问题反馈

  • 使用GitHub Issues提交问题
  • 提供详细的问题描述和复现步骤
  • 附上相关日志和截图
  • 标注问题优先级和影响范围

许可证

本项目采用MIT许可证,详情请参阅LICENSE文件。

联系方式

致谢

感谢所有为本项目做出贡献的开发者,特别感谢以下开源项目:

  • Spring Boot
  • MyBatis-Plus
  • Vue.js
  • Element Plus
  • 以及其他所有依赖的开源项目

最后更新 :2026年6月

版本 :v1.0.0

作者:ordinary-world3