原创

基于springboot2+vue2的疾病防控综合系统

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

1. 资源

浏览全文可获取

2. 项目简介

疾病防控综合系统,旨在为社区或基层单位提供一个信息化管理平台,以支持日常的疫情防控工作。系统主要功能模块包括:

  • 用户管理:管理社区用户的基本信息。
  • 出入记录:记录并管理居民的出入情况,并关联健康码状态。
  • 健康打卡:居民可以每日进行健康打卡,上传打卡照片和备注。
  • 核酸检测:记录居民的核酸检测时间与结果。
  • 疫苗接种:管理居民的疫苗接种记录,支持多针次记录。
  • 物资管理:管理防疫物资的库存,并支持居民在线申请物资。
  • 社区疫情情况:发布社区的疫情相关公告和动态。
  • 公告信息:发布系统级的通知公告。

系统分为管理员普通用户两种角色。管理员负责后台数据的管理与审核,普通用户可以进行打卡、查看公告、申请物资等操作。

3. 技术栈

层次 技术/框架 说明
后端 Spring Boot 应用框架,版本 2.2.2.RELEASE
MyBatis Plus ORM框架,简化数据库操作
Apache Shiro 安全框架,用于权限控制
MySQL 关系型数据库,版本 5.7.32-log
前端 Vue.js 前端核心框架(后台管理端)
Element UI Vue.js 的 UI 组件库(后台管理端)
LayUI 前端UI框架(前台展示端)
ECharts 数据可视化图表库
其他 Maven 项目构建与依赖管理

4. 详细介绍

4.1 核心功能模块

  1. 用户模块 (yonghu)

    • 支持用户的注册、登录和个人信息管理(头像、手机号、身份证号等)。
    • 用户角色区分,不同角色拥有不同权限。
  2. 健康管理模块

    • 打卡 (daka):用户每日可进行一次打卡,系统会记录打卡日期,并防止同一天重复打卡。
    • 核酸检测 (hesuanjiance):记录用户的核酸检测时间和结果(阴性/阳性)。
    • 疫苗接种 (jiezhongjilu):记录用户的疫苗接种信息,包括接种时间、类型(第一针、第二针等),并生成唯一的接种编号,避免重复记录。
  3. 物资管理模块 (wuzi, wuzishenqing)

    • 物资管理:管理员可以管理物资类型、名称、单位、库存数量等。
    • 物资申请:用户可以查看物资列表并发起申请,填写申请数量和理由。管理员审核通过后,系统会自动扣减相应物资的库存。
  4. 信息发布与记录模块

    • 出入记录 (churujilu):记录用户的出入时间、类型(出去/进来),并上传健康码图片作为凭证。
    • 社区疫情情况 (shequyiqing):发布社区相关的疫情信息,支持图文内容。
    • 公告信息 (gonggao):发布系统级的公告,支持按类型分类。

4.2 数据库设计

  • yonghu: 用户表,存储账户、密码、姓名、联系方式、身份证号等。
  • churujilu: 出入记录表,关联用户ID,记录出入类型、时间、健康码图片。
  • daka: 打卡表,关联用户ID,记录打卡日期、照片和备注。
  • hesuanjiance: 核酸检测表,关联用户ID,记录检测时间和结果。
  • jiezhongjilu: 接种记录表,关联用户ID,记录接种编号、时间和类型。
  • wuzi: 物资表,存储物资名称、单位、类型、库存(wuzi_kucun_number)。
  • wuzishenqing: 物资申请表,关联用户和物资,记录申请数量、状态(待审核/同意/拒绝)。
  • gonggao / shequyiqing: 公告和社区疫情表,存储标题、图片、内容和发布时间。
  • dictionary: 字典表,用于存储各类下拉选项,如性别、出入类型、接种类型等,提高了系统的可维护性。

4.3 核心业务逻辑

  1. 用户注册与登录:

    • 注册时会校验用户名、手机号、身份证号的唯一性。
    • 登录成功后,后端会生成一个 Token 用于后续请求的身份验证。
  2. 物资申请与审核:

    • 用户提交申请后,申请记录的 wuzishenqing_yesno_types 字段默认为 1(待审核)。
    • 管理员审核通过(状态改为 2,即“同意”)时,后端逻辑会查询对应物资的当前库存。
    • 如果申请数量小于等于库存,则执行库存扣减操作;否则,审核会失败并提示库存不足。
    • 审核拒绝(状态改为 3)时,库存不变。
  3. 数据字典:

    • 系统大量使用 dictionary 表来管理枚举值,如性别、公告类型、接种类型等。
    • 项目启动时,监听器 DictionaryServletContextListener 会将所有字典数据加载到 ServletContextdictionaryMap 属性中,形成一个全局的缓存。
    • 在返回数据给前端时,dictionaryService.dictionaryConvert() 方法会利用这个缓存,自动将字典的编码(code)转换成对应的中文名称(value),方便前端展示。

5. 部分代码

5.1 实体类示例 (YonghuEntity.java)

package com.entity;

import com.baomidou.mybatisplus.annotations.TableId;
import com.baomidou.mybatisplus.annotations.TableName;
// ... 省略 imports

/**
 * 用户
 */
@TableName("yonghu")
public class YonghuEntity<T> implements Serializable {
    private static final long serialVersionUID = 1L;

    @TableId(type = IdType.AUTO)
    private Integer id;

    /** 账户 */
    private String username;

    /** 密码 */
    private String password;

    /** 用户姓名 */
    private String yonghuName;

    /** 用户手机号 */
    private String yonghuPhone;

    /** 用户身份证号 */
    private String yonghuIdNumber;

    /** 用户头像 */
    private String yonghuPhoto;

    /** 性别 */
    private Integer sexTypes;

    /** 电子邮箱 */
    private String yonghuEmail;

    /** 创建时间 */
    private Date createTime;

    // ... 省略 getter 和 setter 方法
}

5.2 控制器示例 (WuzishenqingController.java 部分代码)

// ... 省略其他代码
@RestController
@RequestMapping("/wuzishenqing")
public class WuzishenqingController {
    // ... 省略依赖注入

    /**
    * 后端审核物资申请
    */
    @RequestMapping("/shenqing")
    public R shenqing(@RequestBody WuzishenqingEntity wuzishenqing, HttpServletRequest request){
        // 如果审核状态为“同意”
        if(wuzishenqing.getWuzishenqingYesnoTypes() == 2){
            // 查询对应的物资信息
            WuziEntity wuziEntity = wuziService.selectById(wuzishenqing.getWuziId());
            if(wuziEntity == null )
                return R.error("查不到该物资");
            // 计算扣除申请数量后的库存
            int yue = wuziEntity.getWuziKucunNumber() - wuzishenqing.getWuzishenqingNumber();
            // 如果库存不足
            if(yue <0)
                return R.error("库存中并没有那么多物资");
            // 更新物资库存
            wuziEntity.setWuziKucunNumber(yue);
            wuziService.updateById(wuziEntity);
        }
        // 更新申请记录的审核时间和审核状态
        wuzishenqing.setUpdateTime(new Date());
        wuzishenqingService.updateById(wuzishenqing);
        return R.ok();
    }
    // ... 省略其他代码
}

5.3 前端权限菜单配置 (menu.js 部分代码)

const menu = {
    list() {
        return [
            {
                "roleName": "管理员",
                "backMenu": [
                    {
                        "menu": "出入记录管理",
                        "child": [
                            {
                                "menu": "出入记录管理",
                                "tableName": "churujilu",
                                "buttons": ["查看", "新增", "修改", "删除"] // 管理员有此模块的所有权限
                            }
                        ]
                    },
                    // ... 其他菜单项
                ]
            },
            {
                "roleName": "用户",
                "backMenu": [
                    {
                        "menu": "出入记录管理",
                        "child": [
                            {
                                "menu": "出入记录管理",
                                "tableName": "churujilu",
                                "buttons": ["查看"] // 普通用户在此模块只有“查看”权限
                            }
                        ]
                    },
                    // ... 其他菜单项
                ]
            }
        ]
    }
}
export default menu;

6. 部分截图

img1
img2
img3
img4
img5
img6
img7
img8
img9
img10
img11
img12
img13
img14
img15
img16
img17
img18
img19
img20
img21
img22
img23
img24
img25
img26
img27
img28
img29
img30
img31
img32
img33

7. 项目总结

该项目是一个功能较为完善的疾病防控综合管理系统,涵盖了疫情防控中常见的用户管理、健康监测(打卡、核酸、疫苗)、物资调配及信息发布等多个环节。项目采用了主流的 Spring Boot + Vue 技术栈,前后端分离,结构清晰。

主要优点:

  • 功能全面:覆盖了社区防控工作的主要业务场景,形成一个闭环管理。
  • 权限分明:通过 menu.jsToken 拦截器,实现了管理员和普通用户角色的权限隔离,保证了数据操作的安全性。
  • 数据字典设计:通过 dictionary 表集中管理枚举值,提高了代码的复用性和系统的可维护性。
  • 关键业务逻辑严谨:如物资申请审核时对库存的判断和扣减,确保了数据的一致性和业务规则的正确执行。

总体而言,该项目结构完整,代码规范,可作为中小型社区或单位疫情防控管理系统的有效解决方案。

自助获取:https://fifteen.xiaobias.com/source/204

正文到此结束
本文目录