原创

基于SpringBoot2+Vue2的常规应急物资管理系统

温馨提示:
本文最后更新于 2026年05月31日,已超过 10 天没有更新。若文章内的图片失效(无法正常加载),请留言反馈或直接联系我

1. 资源

浏览全文可获取

2. 项目简介

“常规应急物资管理系统”,是一个面向企事业单位、应急管理部门的物资管理平台。系统旨在实现应急物资的信息化管理,包括物资库存、物资申请、物资运输跟踪、部门管理、用户健康打卡等功能。系统采用前后端分离架构,提供管理员和普通用户两种角色,支持物资的全流程管控与数据可视化统计。

3. 技术栈

技术 版本/说明
后端框架 Spring Boot 2.2.2.RELEASE
持久层框架 MyBatis-Plus 2.3
安全框架 Apache Shiro 1.3.2
数据库 MySQL 5.7.32-log
前端框架 Vue.js (基于 Vue CLI)
UI组件库 Element UI
数据可视化 ECharts
其他工具 Fastjson, Hutool, Apache POI (Excel导入导出)
构建工具 Maven

4. 详细介绍

4.1 功能模块

系统分为两大角色:管理员用户

4.1.1 管理员功能

  • 部门管理:维护部门信息(部门名称、职责、人数、介绍)。
  • 物资管理:管理物资基本信息(物资名称、类型、库存、单位、介绍),支持增删改查、逻辑删除。
  • 物资类型管理(基础数据管理):维护物资类型的字典值。
  • 物资申请管理:查看用户的物资申请单,审核(同意/拒绝)并填写审核意见。
  • 物资运输管理:创建运输单,记录运输唯一编号、去向、数量、运输状态(装车/已装车/发车/到达/卸载),支持运输状态更新。
  • 健康打卡管理:查看所有用户的健康打卡记录。
  • 用户管理:管理系统用户(普通用户),支持重置密码。
  • 报表统计:通过 ECharts 展示物资库存、申请、运输等统计图表(根据 CommonController 中的图表接口实现)。

4.1.2 用户功能

  • 健康打卡:每日打卡,填写备注,日期不可重复。
  • 物资查看:浏览物资列表,查看库存及详情。
  • 物资申请:提交物资申请单,填写申请数量、详情,等待管理员审核。
  • 物资运输查看:查看运输中的物资状态(去向、数量、当前状态)。
  • 个人中心:修改个人信息、修改密码。

4.2 数据库设计

表名 说明
bumen 部门表
yonghu 用户表(账号、密码、所属部门等)
wuzi 物资表(含逻辑删除字段)
wuzishenqing 物资申请表(关联用户和物资,审核状态)
wuziyunshu 物资运输表(关联物资,运输状态)
daka 健康打卡表
dictionary 字典表(存储枚举值的中文映射,如性别、物资类型、申请状态、运输状态)
users 管理员表
token 登录 token 表
config 配置表(如百度地图AK等)

4.3 核心业务逻辑

  • 物资库存变化:当物资申请审核通过后,系统应减少对应物资的库存(需代码补充,当前文件中未完全实现自动扣减,需管理员手动调整库存或通过运输管理)。
  • 运输状态流转:运输单支持状态更新(在装车 → 已装车 → 已发车 → 已到达 → 已卸载)。
  • 打卡限制:同一用户同一天只能打卡一次(通过 insert_time 日期唯一性校验)。
  • 用户唯一性:用户名、手机号、身份证号均不可重复。
  • 权限控制:基于 Shiro 和自定义 AuthorizationInterceptor,使用 Token 进行身份验证,未登录返回 401。

4.4 项目结构

changguiyingji/
├── src/main/java/com/
│   ├── changguiyingjiApplication.java      # 启动类
│   ├── annotation/                         # 自定义注解 (@IgnoreAuth, @LoginUser)
│   ├── config/                             # 配置类 (拦截器, MyBatis-Plus, 静态资源)
│   ├── controller/                         # 控制器 (Bumen, Wuzi, Daka, Users, Common等)
│   ├── dao/                                # MyBatis DAO接口
│   ├── entity/                             # 实体类及VO/View/Model
│   ├── interceptor/                        # 权限拦截器
│   ├── service/                            # 服务接口及实现
│   ├── thread/                             # 后台线程(预留自动任务)
│   └── utils/                              # 工具类 (R, PageUtils, SQLFilter, PoiUtil等)
├── src/main/resources/
│   ├── application.yml                     # 配置文件 (数据库连接, mybatis-plus)
│   ├── mapper/                             # MyBatis XML映射文件
│   └── admin/admin/                        # Vue前端源码 (src目录)
│       ├── src/views/modules/              # 各模块页面
│       └── src/router/router-static.js     # 静态路由配置
└── pom.xml                                 # Maven依赖

5. 部分代码

5.1 后端 - 物资申请保存接口(WuzishenqingController.save)

@RequestMapping("/save")
public R save(@RequestBody WuzishenqingEntity wuzishenqing, HttpServletRequest request){
    logger.debug("save方法:,,Controller:{},,wuzishenqing:{}", this.getClass().getName(), wuzishenqing.toString());

    String role = String.valueOf(request.getSession().getAttribute("role"));
    if(false) return R.error(511,"永远不会进入");
    else if("用户".equals(role))
        wuzishenqing.setYonghuId(Integer.valueOf(String.valueOf(request.getSession().getAttribute("userId"))));

    wuzishenqing.setInsertTime(new Date());
    wuzishenqing.setWuzishenqingYesnoTypes(1); // 默认待审核
    wuzishenqing.setCreateTime(new Date());
    wuzishenqingService.insert(wuzishenqing);
    return R.ok();
}

5.2 前端 - 路由配置片段(router-static.js)

import users from '@/views/modules/users/list'
import bumen from '@/views/modules/bumen/list'
import daka from '@/views/modules/daka/list'
import wuzi from '@/views/modules/wuzi/list'
import wuzishenqing from '@/views/modules/wuzishenqing/list'
import wuziyunshu from '@/views/modules/wuziyunshu/list'
import yonghu from '@/views/modules/yonghu/list'
// ... 省略
const routes = [{
    path: '/index',
    name: '首页',
    component: Index,
    children: [ ... ]
}]

5.3 数据库建表示例(部门表)

CREATE TABLE `bumen` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `bumen_name` varchar(200) DEFAULT NULL COMMENT '部门名称',
  `bumen_zhize` varchar(200) DEFAULT NULL COMMENT '部门职责',
  `bumen_number` int(11) DEFAULT NULL COMMENT '部门人数',
  `bumen_content` text COMMENT '部门介绍',
  `insert_time` timestamp NULL DEFAULT NULL COMMENT '添加时间',
  `create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='部门';

5. 部分截图

img1
img2
img3
img4
img5
img6
img7
img8
img9
img10
img11
img12
img13
img14
img15
img16

7. 项目总结

本系统实现了常规应急物资管理所需的完整业务流程,覆盖物资信息管理、物资申请审批、物资运输跟踪、部门管理及健康打卡等实用功能。系统采用 Spring Boot + MyBatis-Plus 构建高效的后端 API,前端使用 Vue + Element UI 提供友好的管理界面,通过 Token 机制保障接口安全。

整体而言,该系统可稳定运行,适合作为常规应急物资管理的初期解决方案,并具备良好的扩展性。

资源获取:https://fifteen.xiaobias.com/source/187

正文到此结束
本文目录