仓库管理系统

SpringBootVueMySQLMybatisPlusElementPlus

采用前后端分离架构,覆盖从仓库、库区、库位的基础设施管理,到商品、供应商、客户等基础资料维护,再到入库、出库、库存、盘点等核心仓储业务的完整流程。系统同时内置数据看板、库存预警与公告管理能力,帮助仓储管理人员实时掌握库存动态、规范出入库流程、及时完成盘点对账。

仓库管理系统 — 项目介绍文档

一、项目概述

本项目是一套企业级仓库管理系统(Warehouse Management System,WMS),采用前后端分离架构,覆盖从仓库、库区、库位的基础设施管理,到商品、供应商、客户等基础资料维护,再到入库、出库、库存、盘点等核心仓储业务的完整流程。系统同时内置数据看板、库存预警与公告管理能力,帮助仓储管理人员实时掌握库存动态、规范出入库流程、及时完成盘点对账。

属性 说明
项目名称 仓库管理系统(Warehouse Management System)
架构模式 B/S 前后端分离
后端技术 Spring Boot 3.2 / MyBatis-Plus 3.5 / MySQL 8.0 / JWT
前端技术 Vue 3 / Element Plus / Pinia / Axios / ECharts / Vite
开发语言 Java 21 / JavaScript(ES6+)
适用场景 计算机毕设、课程设计、源码学习与二次开发

本系统为纯后台管理系统,不提供前台用户界面,所有功能均通过管理员后台访问,按"管理员 / 员工"两种角色进行权限控制。

二、技术架构

2.1 后端技术栈

类别 技术选型 版本 说明
核心框架 Spring Boot 3.2.3 Java 企业级开发框架
ORM 框架 MyBatis-Plus 3.5.5 增强版 MyBatis,简化 CRUD,内置分页/逻辑删除
数据库 MySQL 8.0+ 关系型数据库
安全认证 jjwt(JWT) 0.12.3 无状态 Token 认证
密码加密 BCrypt(Hutool) 5.8.26 慢哈希 + 随机盐值
API 文档 Knife4j(OpenAPI 3) 4.4.0 Swagger 增强 UI
工具库 Hutool 5.8.26 Java 通用工具集
构建工具 Maven 3.8+ 依赖管理与项目构建

2.2 前端技术栈

类别 技术选型 版本 说明
核心框架 Vue 3(Composition API) 3.4.21 渐进式前端框架
UI 组件库 Element Plus 2.6.3 企业级桌面端组件库
路由 Vue Router 4.3.0 单页应用路由管理
状态管理 Pinia 2.1.7 Vue 官方状态管理库
HTTP 客户端 Axios 1.15.2 基于 Promise 的 HTTP 库
图表 ECharts 5.5.0 数据可视化图表库
构建工具 Vite 5.2.0 下一代前端构建工具
自动导入 unplugin-auto-import 0.17.5 API 自动按需导入

2.3 架构图

┌─────────────────────────────────────────────────────────┐
│                   浏览器(Browser)                       │
├─────────────────────────────────────────────────────────┤
│          后台管理(Admin) localhost:3000/admin            │
│  · 数据看板 / 库存预警 / 出入库趋势图表                     │
│  · 仓库 / 库区库位 / 商品 / 供应商 / 客户 基础数据管理        │
│  · 入库单 / 出库单 / 库存 / 库存流水 / 盘点管理             │
│  · 用户管理 / 公告管理 / 个人中心                          │
└─────────────────────────────────────────────────────────┘
                          │  HTTP /api/*
                          ▼
┌─────────────────────────────────────────────────────────┐
│              Spring Boot 后端(localhost:8080)            │
├─────────────┬──────────────┬──────────────┬──────────────┤
│  Interceptor │  Controller  │   Service    │   Mapper     │
│  JWT认证     │  admin/ 后台  │   业务逻辑    │  MyBatis-Plus│
│  角色鉴权     │  auth/ 登录   │   事务管理    │  XML 自定义SQL│
└─────────────┴──────────────┴──────────────┴──────────────┘
                          │
                          ▼
┌─────────────────────────────────────────────────────────┐
│            MySQL 8.0(warehouse_management)              │
│   17 张数据表:user, warehouse, storage_area,             │
│   storage_location, product_category, product, supplier, │
│   customer, inbound_order(+item), outbound_order(+item), │
│   stock, stock_record, stock_check(+item), announcement  │
└─────────────────────────────────────────────────────────┘

2.4 安全设计

  • JWT 双拦截器:JwtAuthInterceptor(认证)+ RoleAuthInterceptor(角色鉴权),按路径分层控制
  • @RequireRole 注解:标注在 Controller 方法上,声明接口允许访问的角色(默认仅管理员),权限校验集中统一
  • @Anonymous 注解:标注公开接口(如登录、用户信息、文件上传),无需额外维护白名单
  • 密码 BCrypt 加密:使用慢哈希算法加随机盐值,有效抵御彩虹表攻击
  • 逻辑删除:基于 MyBatis-Plus 全局逻辑删除配置,业务数据(用户/商品/供应商/客户/单据/盘点单)删除均为软删除,保障数据可追溯
  • CORS 精准控制:仅允许特定来源跨域,携带认证信息

三、角色与权限

系统采用"管理员 / 员工"双角色模型,前端菜单与操作按钮按角色动态控制,后端接口通过 @RequireRole 二次校验:

权限点 管理员(role=1) 员工(role=0)
数据看板、公告查看 ✅ ✅
仓库/库区/商品/供应商/客户 查看 ✅ ✅
仓库/库区/商品/供应商/客户 新增、编辑、删除 ✅ ❌
创建入库单/出库单/盘点单(提交后待审核) ✅ ✅
出入库单审核(通过/驳回)、盘点完成 ✅ ❌
用户管理、公告管理 ✅ ❌
个人中心(资料/头像/密码) ✅ ✅

默认账号:管理员 admin,员工 wm001 / wm002 / wm003,初始密码均为 123456(BCrypt 加密存储)。

四、功能模块

4.1 数据看板

功能点 说明
统计卡片 仓库总数、在库商品种类、库存总量、预警商品数、今日入库单、今日出库单、待审核入库单、待审核出库单
趋势图表 近 7 天出入库单趋势(双折线)、仓库库存分布(柱状图)、库存 TOP 商品(横向柱状图),基于 ECharts 可视化
最新公告 展示已发布公告,管理员可直接跳转公告管理

4.2 基础数据管理

模块 功能点 说明
仓库管理 仓库增删改查、启用/停用 仓库名称、编码、地址、负责人、联系电话
库区库位 库区、库位增删改查 库区类型(常温/冷藏/冷冻/危险品/贵重品);库位编号(如 A-01-01)、货架号、层号、最大/已用容量
商品管理 商品分类、商品增删改查 商品编码、规格、单位、品牌、参考单价、库存预警值;分类支持启用/停用,含商品数量统计
供应商管理 供应商增删改查 联系人、电话、邮箱、地址、备注
客户管理 客户增删改查 联系人、电话、邮箱、地址、备注

4.3 仓储业务

模块 功能点 说明
入库单管理 创建入库单、审核/驳回、作废 选择仓库、供应商,明细含商品、库位、数量、单价;审核通过自动增加库存、更新库位容量并生成库存流水
出库单管理 创建出库单、审核/驳回、作废 选择仓库、客户,明细含商品、库位、数量、单价;审核通过自动扣减库存、更新库位容量并生成库存流水
库存管理 库存查询、预警筛选 按商品/仓库筛选,支持"仅看预警";库存低于预警值显示红色预警标签
库存流水 流水查询 记录每次入库、出库、盘点调整、初始化的变动数量、变动前后库存、关联单据号
盘点管理 创建盘点单、录入实盘、完成盘点 账面数量 vs 实盘数量自动计算差异;盘点完成自动调整库存并生成"盘点调整"流水

4.4 系统管理

模块 功能点 说明
用户管理 用户列表、启用/禁用 支持关键词搜索,展示用户名、昵称、角色(管理员/员工)、状态
公告管理 公告增删改查 类型(系统公告/活动通知)、置顶、草稿/发布状态、发布时间
个人中心 修改资料、头像上传、修改密码 昵称/邮箱/手机号可编辑,头像上传支持 JPG/PNG/WebP/GIF

五、项目亮点

5.1 出入库审核闭环

入库单/出库单提交后进入"待审核"状态,管理员审核通过后,系统在同一事务内完成:更新库存数量、增减库位已用容量、生成库存流水,并记录审核人与审核时间;驳回、作废状态全程可追溯。

5.2 库存预警机制

每个商品可设置独立预警值,库存管理页对低于预警值的商品以红色高亮展示,数据看板同步统计预警商品数,便于仓管人员及时补货。

5.3 盘点差异处理

盘点单按"库位 + 商品"录入实盘数量,系统自动计算与账面数量的差异(差异 = 实盘 - 账面);完成盘点时自动将库存修正为实盘数量,并生成"盘点调整"库存流水,保证账实相符。

5.4 库容联动

库位维护最大容量与已用容量,出入库审核通过时自动增减已用容量,为库位规划与容量预警提供数据基础。

5.5 单号自动生成

OrderNoUtils 统一生成入库单号(RK+日期+序列)、出库单号(CK+日期+序列)、盘点单号(PD+日期+序列),规则统一、全局唯一。

5.6 角色权限双层控制

前端按角色动态渲染菜单与操作按钮,后端通过 @RequireRole 注解对写操作/敏感操作二次鉴权,权限模型清晰,安全可靠。

5.7 代码规范性

  • 全局统一异常处理(GlobalExceptionHandler),错误码枚举化管理(ErrorCode)
  • 分页统一返回结构(PageResult),前端无需适配不同接口
  • 统一响应体(Result<T>),所有接口返回格式一致
  • 所有数据库操作使用 Lambda 表达式构建条件,避免字段名硬编码

六、项目结构

warehouse-management-system/
├── db/                                 # 数据库初始化脚本目录
│   └── init.sql                        # 建表 + 初始数据脚本(17 张表)
├── springboot/                         # 后端 Spring Boot 项目
│   ├── pom.xml                         # Maven 配置(Spring Boot 3.2.3)
│   └── src/main/java/com/example/
│       ├── common/                     # 公共模块
│       │   ├── annotation/             # @Anonymous、@RequireRole 注解
│       │   ├── constant/               # 安全常量
│       │   ├── enums/                  # UserRoleEnum、UserStatusEnum
│       │   ├── exception/              # 全局异常处理 + 错误码枚举
│       │   ├── BaseEntity.java         # 基础实体(id + 时间戳)
│       │   ├── LogicDeleteEntity.java  # 逻辑删除实体
│       │   ├── PageResult.java         # 统一分页结果
│       │   ├── Result.java             # 统一响应体
│       │   └── UserContext.java        # 用户上下文工具
│       ├── config/                     # 配置类
│       │   ├── CorsConfig.java         # 跨域配置
│       │   ├── JacksonConfig.java      # JSON 序列化配置
│       │   ├── MetaObjectHandlerConfig.java # 字段自动填充
│       │   ├── MybatisPlusConfig.java  # MP 分页 + 逻辑删除
│       │   └── WebMvcConfig.java       # 拦截器注册 + 静态资源映射
│       ├── controller/
│       │   ├── admin/                  # 12 个后台控制器(仓库/库区/商品/供应商/客户/
│       │   │                           #   入库/出库/库存/盘点/统计/用户/公告)
│       │   ├── front/                  # AuthController(登录)、UploadController(上传)
│       │   └── FileController.java     # 文件访问
│       ├── dto/                        # 数据传输对象(10 个业务模块,19 个 DTO)
│       ├── entity/                     # 17 个实体类
│       ├── mapper/                     # 17 个 Mapper 接口
│       ├── security/                   # JWT 认证 + 角色鉴权
│       │   ├── JwtUtils.java           # Token 生成/解析
│       │   ├── JwtAuthInterceptor.java # 认证拦截器
│       │   └── RoleAuthInterceptor.java# 角色鉴权拦截器
│       ├── service/                    # 13 个业务服务类
│       ├── utils/                      # OrderNoUtils(单号生成)、PasswordUtils
│       ├── vo/                         # 视图对象(11 个业务模块,19 个 VO)
│       └── MainApplication.java        # 启动类
│   └── src/main/resources/
│       ├── application.yml             # 主配置文件
│       └── mapper/                     # MyBatis XML 自定义 SQL(如有)
├── vue/                                # 前端 Vue 3 项目
│   └── src/
│       ├── api/                        # API 封装(admin 后台 12 个模块 + 统一出口 + auth/common)
│       ├── assets/styles/main.css      # 全局样式(工业仓储主题:深青绿 + 琥珀)
│       ├── layouts/AdminLayout.vue     # 后台布局(侧边栏 + 顶栏)
│       ├── router/index.js             # 路由配置(后台 14 个页面 + 登录页)
│       ├── stores/user.js              # Pinia 用户状态
│       ├── utils/                      # request.js(Axios 拦截器)、file.js
│       ├── views/                      # 后台页面(14 个)+ Login.vue
│       └── main.js                     # 入口文件
└── uploads/                            # 文件上传目录(头像等)
客服
反馈