基于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 核心功能模块
用户模块 (
yonghu)- 支持用户的注册、登录和个人信息管理(头像、手机号、身份证号等)。
- 用户角色区分,不同角色拥有不同权限。
健康管理模块
- 打卡 (
daka):用户每日可进行一次打卡,系统会记录打卡日期,并防止同一天重复打卡。 - 核酸检测 (
hesuanjiance):记录用户的核酸检测时间和结果(阴性/阳性)。 - 疫苗接种 (
jiezhongjilu):记录用户的疫苗接种信息,包括接种时间、类型(第一针、第二针等),并生成唯一的接种编号,避免重复记录。
- 打卡 (
物资管理模块 (
wuzi,wuzishenqing)- 物资管理:管理员可以管理物资类型、名称、单位、库存数量等。
- 物资申请:用户可以查看物资列表并发起申请,填写申请数量和理由。管理员审核通过后,系统会自动扣减相应物资的库存。
信息发布与记录模块
- 出入记录 (
churujilu):记录用户的出入时间、类型(出去/进来),并上传健康码图片作为凭证。 - 社区疫情情况 (
shequyiqing):发布社区相关的疫情信息,支持图文内容。 - 公告信息 (
gonggao):发布系统级的公告,支持按类型分类。
- 出入记录 (
4.2 数据库设计
yonghu: 用户表,存储账户、密码、姓名、联系方式、身份证号等。churujilu: 出入记录表,关联用户ID,记录出入类型、时间、健康码图片。daka: 打卡表,关联用户ID,记录打卡日期、照片和备注。hesuanjiance: 核酸检测表,关联用户ID,记录检测时间和结果。jiezhongjilu: 接种记录表,关联用户ID,记录接种编号、时间和类型。wuzi: 物资表,存储物资名称、单位、类型、库存(wuzi_kucun_number)。wuzishenqing: 物资申请表,关联用户和物资,记录申请数量、状态(待审核/同意/拒绝)。gonggao/shequyiqing: 公告和社区疫情表,存储标题、图片、内容和发布时间。dictionary: 字典表,用于存储各类下拉选项,如性别、出入类型、接种类型等,提高了系统的可维护性。
4.3 核心业务逻辑
用户注册与登录:
- 注册时会校验用户名、手机号、身份证号的唯一性。
- 登录成功后,后端会生成一个
Token用于后续请求的身份验证。
物资申请与审核:
- 用户提交申请后,申请记录的
wuzishenqing_yesno_types字段默认为1(待审核)。 - 管理员审核通过(状态改为
2,即“同意”)时,后端逻辑会查询对应物资的当前库存。 - 如果申请数量小于等于库存,则执行库存扣减操作;否则,审核会失败并提示库存不足。
- 审核拒绝(状态改为
3)时,库存不变。
- 用户提交申请后,申请记录的
数据字典:
- 系统大量使用
dictionary表来管理枚举值,如性别、公告类型、接种类型等。 - 项目启动时,监听器
DictionaryServletContextListener会将所有字典数据加载到ServletContext的dictionaryMap属性中,形成一个全局的缓存。 - 在返回数据给前端时,
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. 部分截图

































7. 项目总结
该项目是一个功能较为完善的疾病防控综合管理系统,涵盖了疫情防控中常见的用户管理、健康监测(打卡、核酸、疫苗)、物资调配及信息发布等多个环节。项目采用了主流的 Spring Boot + Vue 技术栈,前后端分离,结构清晰。
主要优点:
- 功能全面:覆盖了社区防控工作的主要业务场景,形成一个闭环管理。
- 权限分明:通过
menu.js和Token拦截器,实现了管理员和普通用户角色的权限隔离,保证了数据操作的安全性。 - 数据字典设计:通过
dictionary表集中管理枚举值,提高了代码的复用性和系统的可维护性。 - 关键业务逻辑严谨:如物资申请审核时对库存的判断和扣减,确保了数据的一致性和业务规则的正确执行。
总体而言,该项目结构完整,代码规范,可作为中小型社区或单位疫情防控管理系统的有效解决方案。
正文到此结束
- 本文标签: Java Spring Boot 毕业设计
- 本文链接: https://blog.xiaobias.com/article/21
- 版权声明: 本文由十五喵原创发布,转载请遵循《署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》许可协议授权
