# 疫苗接种数据填报 — 技术方案 ## 1. 概述 对齐牦牛出栏数据填报骨架:村 × 年月唯一键、导入 upsert、导出按官方模板填充。 | 项 | 值 | | --- | --- | | 表 | `biz_vaccination_data`(DDL:`sql/biz_vaccination_data.sql`) | | Base URL | `/dataModel/vaccinationData` | | 模板 classpath | `templates/vaccination_data_import_template.xlsx` | | 唯一键 | `(stat_year, stat_month, village_dept_id)` | --- ## 2. 数据模型 | 字段 | 说明 | | --- | --- | | should_vaccinate_count | 应免数(头) | | actual_vaccinate_count | 实免数(头) | | immunity_rate | 派生:(实免/应免)×100,保留 2 位小数,`decimal(8,2)` | Excel 列:0 序号、1 乡镇、2 村、3 应免数、4 实免数、5 免疫率(导入跳过)。 --- ## 3. 后端结构 | 类 | 职责 | | --- | --- | | `BizVaccinationDataController` | REST | | `BizVaccinationDataServiceImpl` | CRUD、导入 upsert、导出 | | `VaccinationDataExcelParser` | 识别主表头,跳过子表头/空白/合计 | | `VaccinationDataExcelExporter` | 基于模板写数据 | | `VaccinationDataDerivedSupport` | 免疫率计算与百分比格式化 | | `VaccinationDataValidation` | 年月/村校验、非负整数、实免≤应免硬校验 | --- ## 4. 接口一览 | 方法 | 路径 | 权限 | | --- | --- | --- | | GET | `/list` | list | | GET | `/{id}` | query | | POST | `/` | add | | PUT | `/` | edit | | DELETE | `/{ids}` | remove | | GET | `/yearOptions` `/monthOptions` `/townOptions` `/villageTree` | list | | POST | `/importData` | import | | GET | `/importTemplate` | import | | GET | `/export` | export | --- ## 5. 前端 详见同目录 **[疫苗接种数据填报前端技术方案.md](./疫苗接种数据填报前端技术方案.md)**。 - 页面:`ruoyi-ui/src/views/dataModel/vaccinationData/index.vue` - API:`ruoyi-ui/src/api/dataModel/vaccinationData.js` - i18n:`dataModel.vaccinationData`(zh/bo)