西藏巴青项目

疫情上报技术方案.md 8.5KB

疫情上报 — 技术方案

依据:同目录 疫情上报功能需求.md。本模块为疫情台账 CRUD + 解除;处置状态由 release_date 是否为空推导。


1. 技术架构

说明
后端 RuoYi v3.9.2springboot2 分支):JDK 8、Spring Boot 2.x、Spring MVC、MyBatis、Druid
数据库 MySQL 5.7.39,InnoDB,utf8mb4
前端 若依 Vue2;日期 YYYY-MM-DD;枚举用字典或固定选项(与需求 §2 一致)
代码包 com.ruoyi.web.modules.diseasedetection(建议)

分层Controller(权限、AjaxResult / TableDataInfo)→ Service(枚举/日期校验、未解除才可改/解除)→ Mapper/XML → domain

业务特征(摘要)

  • release_date 为空 → 未解除:可改、可解除、可删。
  • release_date 非空 → 已解除:禁止改、禁止再次解除;可删。
  • 列表默认 report_date DESC, create_time DESC, id DESC
  • 筛选:transmission_routerisk_level 精确匹配(可空)。

2. 数据库设计

2.1 表 biz_epidemic_report(疫情上报)

字段 类型 非空 说明
id bigint(20) Y 主键
report_date date Y 上报日期
transmission_route tinyint(2) Y 传播途径,见 §2.3
affected_location_track varchar(500) Y 涉疫点位/轨迹
epidemic_type tinyint(2) Y 疫病类型,见 §2.3
epidemic_name varchar(50) Y 疫病名称
risk_level tinyint(2) Y 风险等级,见 §2.3
release_date date N 解除日期;NULL=未解除
create_by / create_time / update_by / update_time 若依惯例 审计
remark varchar(500) N 备注(选填,扩展用)

索引PRIMARY KEY (id)KEY idx_report_date (report_date)KEY idx_transmission_route (transmission_route)KEY idx_risk_level (risk_level)KEY idx_release_date (release_date)

处置状态(不落库)release_date IS NULL → 未解除;否则已解除。列表/详情可冗余返回 relieveStatus0 未解除 / 1 已解除。

2.2 DDL(MySQL 5.7)

CREATE TABLE `biz_epidemic_report` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `report_date` date NOT NULL COMMENT '上报日期',
  `transmission_route` tinyint(2) NOT NULL COMMENT '传播途径1调运2本地3环境4其他',
  `affected_location_track` varchar(500) NOT NULL COMMENT '涉疫点位轨迹',
  `epidemic_type` tinyint(2) NOT NULL COMMENT '疫病类型1病毒2细菌3寄生虫4其他',
  `epidemic_name` varchar(50) NOT NULL COMMENT '疫病名称',
  `risk_level` tinyint(2) NOT NULL COMMENT '风险等级1高2中3低',
  `release_date` date DEFAULT NULL COMMENT '解除日期NULL未解除',
  `create_by` varchar(64) DEFAULT '' COMMENT '创建者',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `update_by` varchar(64) DEFAULT '' COMMENT '更新者',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  PRIMARY KEY (`id`),
  KEY `idx_report_date` (`report_date`),
  KEY `idx_transmission_route` (`transmission_route`),
  KEY `idx_risk_level` (`risk_level`),
  KEY `idx_release_date` (`release_date`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='疫情上报';

2.3 枚举编码(与功能需求 §2 对应)

传播途径 transmission_route

标签
1 调运传入
2 本地扩散
3 环境感染
4 其他未知

疫病类型 epidemic_type

标签
1 病毒性疫病
2 细菌性疫病
3 寄生虫疫病
4 其他类疫病

风险等级 risk_level

标签
1 高危
2 中危
3 低危

前后端展示走数据字典(sys_dict)或前端 i18n 均可;入库必须为上表编码,非法值拒绝。

2.4 字段与 API 驼峰对照

需求名称 库字段 API 驼峰
上报日期 report_date reportDate
传播途径 transmission_route transmissionRoute
涉疫点位/轨迹 affected_location_track affectedLocationTrack
疫病类型 epidemic_type epidemicType
疫病名称 epidemic_name epidemicName
风险等级 risk_level riskLevel
解除日期 release_date releaseDate
处置状态(派生) relieveStatus(0 未解除 / 1 已解除)

3. 接口设计

统一响应AjaxResult 或分页 TableDataInforowstotal)。

权限标识(示例)diseaseDetection:epidemicReport:list|query|add|edit|remove|relieve

Base Path(示例)/diseaseDetection/epidemicReport

# 说明 Method URI 权限 要点
3.1 分页列表 GET /diseaseDetection/epidemicReport/list ...:list Query §3.1.1;排序见 §1
3.2 详情 GET /diseaseDetection/epidemicReport/{id} ...:query relieveStatus
3.3 新增 POST /diseaseDetection/epidemicReport ...:add Body §3.3.1releaseDate 忽略
3.4 修改 PUT /diseaseDetection/epidemicReport ...:edit Body 含 id release_date IS NULL
3.5 删除 DELETE /diseaseDetection/epidemicReport/{ids} ...:remove 逗号分隔;已/未解除均可
3.6 解除 PUT /diseaseDetection/epidemicReport/relieve ...:relieve Body:§3.6.1未解除

3.1.1 列表 Query

参数 类型 必填 说明
pageNum / pageSize int N 默认 1 / 20
transmissionRoute int N 传播途径编码,精确匹配
riskLevel int N 风险等级编码,精确匹配
relieveStatus int N 可选:0 未解除(release_date IS NULL),1 已解除

列表行(示例)idreportDatetransmissionRouteepidemicTypeepidemicNameriskLevelaffectedLocationTrack(可截断)、relieveStatusreleaseDatecreateTime

3.3.1 新增 / 修改 Body(JSON,驼峰)

字段 新增 修改 说明
id Y 主键
reportDate Y Y YYYY-MM-DD
transmissionRoute Y Y 1~4
affectedLocationTrack Y Y 1~500 字
epidemicType Y Y 1~4
epidemicName Y Y 1~50 字
riskLevel Y Y 1~3
releaseDate 不得经新增/修改写入;仅 §3.6

3.6.1 解除 Body

字段 必填 说明
id Y 疫情上报主键
releaseDate Y YYYY-MM-DD;≥ report_date;默认不允许未来日期(与需求一致)

解除逻辑:校验未解除 → 更新 release_dateupdate_by/time → 返回成功。

3.4 服务端校验(摘要)

规则
枚举 transmissionRouteepidemicTyperiskLevel 须在 §2.3 范围内
日期 reportDate 合法;解除时 releaseDate >= reportDate
修改 release_date 非空 → 业务失败(已解除不可修改)
解除 release_date 非空 → 业务失败(不可重复解除)
删除 无状态限制

4. 菜单与权限 SQL(示例)

类型 名称 权限标识
目录/菜单 疫情上报 diseaseDetection:epidemicReport:list
按钮 查询 diseaseDetection:epidemicReport:query
按钮 新增 diseaseDetection:epidemicReport:add
按钮 修改 diseaseDetection:epidemicReport:edit
按钮 删除 diseaseDetection:epidemicReport:remove
按钮 解除 diseaseDetection:epidemicReport:relieve

组件路径建议:diseaseDetection/epidemicReport/index;API 文件 ruoyi-ui/src/api/diseaseDetection/epidemicReport.js


5. 交付清单

  • sql/biz_epidemic_report.sql、字典数据(三类枚举)、菜单权限 SQL
  • BizEpidemicReport Domain / Mapper / Service / Controller
  • 前端:列表筛选、新增/编辑表单、解除弹窗(仅未解除行展示)
  • 用例:已解除不可改/不可再解除、解除日期早于上报日、筛选与删除

6. 修订记录

版本 说明
1.0 初稿:单表;release_date 驱动处置状态;CRUD + relieve 接口