仓库管理系统 - 基于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. 数据库初始化
-- 创建数据库
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 配置文件:

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. 项目构建与运行
# 克隆项目
git clone https://gitee.com/ordinary-world3/warehouse.git

# 进入项目目录
cd warehouse

# 使用Maven构建项目
mvn clean package

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

前端部署步骤

1. 安装依赖
# 进入前端目录
cd warehouse-frontend

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

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

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

# 生产环境构建
npm run build

API接口文档

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

  • Swagger UI: http://localhost:8080/swagger-ui.html
  • API文档JSON: http://localhost:8080/v2/api-docs

主要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. 环境配置
# 安装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. 应用部署
# 创建应用目录
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配置
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文件。

联系方式

  • 项目地址:https://gitee.com/ordinary-world3/warehouse
  • 问题反馈:https://gitee.com/ordinary-world3/warehouse/issues

致谢

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

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

最后更新:2026年6月
版本:v1.0.0
作者:ordinary-world3

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值