|
|
@@ -1,100 +1,52 @@
|
|
1
|
1
|
# 牦牛出栏数据填报 — 测试用例
|
|
2
|
2
|
|
|
3
|
3
|
> 依据:`牦牛出栏数据填报功能需求.md`、`牦牛出栏数据填报技术方案.md`
|
|
4
|
|
-> **接口 Base Path(示例)**:`/dataModel/yakOutboundReport`
|
|
5
|
|
-> **模板文件**:`牲畜数据.xlsx` 第 **6** 个 Sheet(2026 年度出栏及自食统计表)
|
|
6
|
|
-> **乡镇样本**:巴青乡、江绵乡、岗切乡、雅安镇、拉西镇、本塔乡、杂色镇、贡日乡、玛如乡、阿秀乡(`sys_dept`,`parent_id=100`,`order_num>12`)
|
|
|
4
|
+> **接口 Base Path**:`/dataModel/yakOutboundReport`
|
|
|
5
|
+> **模板**:`yak_outbound_report_import_template.xlsx` / 测试样例 `yak_outbound_report_2026.xlsx`
|
|
7
|
6
|
|
|
8
|
|
-**通用前置**:已登录且具备模块权限;`sys_dept` 已执行 `sql/sys_dept_import_town.sql`;测试库无冲突数据或已隔离。
|
|
|
7
|
+**通用前置**:已登录且具备模块权限;`sys_dept` 已导入乡镇与村。
|
|
9
|
8
|
|
|
10
|
9
|
---
|
|
11
|
10
|
|
|
12
|
|
-## 一、单元测试用例
|
|
13
|
|
-
|
|
14
|
|
-| 用例编号 | 测试模块 | 测试项 | 测试类型 | 测试工具 | 测试目的 | 前置条件 | 测试步骤 | 预期结果 |
|
|
15
|
|
-| --- | --- | --- | --- | --- | --- | --- | --- | --- |
|
|
16
|
|
-| ZCZX-MYCNCL-UT-001 | 年份 | 可选年份范围 | 单元测试 | JUnit5 | §2.2 | 固定时钟 2026 | `yearOptions` | 返回 2026~2021 共 6 年 |
|
|
17
|
|
-| ZCZX-MYCNCL-UT-002 | 乡镇 | 字典过滤 | 单元测试 | JUnit5 | §2.3 | Mock dept 表 | `TownDeptSupport.listReportTowns()` | 仅 `parent_id=100` 且 `order_num>12` |
|
|
18
|
|
-| ZCZX-MYCNCL-UT-003 | 校验 | 必填年份乡镇 | 单元测试 | JUnit5 | §5.2 | 无 | `validate(row)` 缺 `statYear` | 抛 `ServiceException` |
|
|
19
|
|
-| ZCZX-MYCNCL-UT-004 | 校验 | 负数拒绝 | 单元测试 | JUnit5 | §2.4 | 无 | `yakOutboundCount=-1` | 校验失败 |
|
|
20
|
|
-| ZCZX-MYCNCL-UT-005 | 唯一性 | 同年同月同乡镇 | 单元测试 | JUnit5+Mockito | §5.2 | 已存在 2026-05+巴青乡 | `insert` 同键 | 失败「该年该月该乡镇已填报」 |
|
|
21
|
|
-| ZCZX-MYCNCL-UT-006 | 新增 | 新增成功 | 单元测试 | JUnit5+Mockito | §5.2 | 无同年同月同乡镇 | `insert` 最小必填 | 成功 |
|
|
22
|
|
-| ZCZX-MYCNCL-UT-007 | 导入解析 | 识别第 6 Sheet | 单元测试 | JUnit5 | §5.6 | `牲畜数据.xlsx` | `getSheetAt(5)` | Sheet 标题含「出栏及自食」 |
|
|
23
|
|
-| ZCZX-MYCNCL-UT-008 | 导入解析 | 识别表头行 | 单元测试 | JUnit5 | §3.9.1 | 模板 | `detectHeaderRow` | 定位含「乡镇」「户数」表头 |
|
|
24
|
|
-| ZCZX-MYCNCL-UT-009 | 导入解析 | 乡镇名匹配 | 单元测试 | JUnit5 | §5.6 | 行「杂色镇」 | `resolveTownDeptId` | 返回对应 `dept_id` |
|
|
25
|
|
-| ZCZX-MYCNCL-UT-010 | 导入解析 | 扎色镇别名 | 单元测试 | JUnit5 | §8 | 行「扎色镇」 | `resolveTownDeptId` | 映射为「杂色镇」`dept_id` |
|
|
26
|
|
-| ZCZX-MYCNCL-UT-011 | 导入解析 | 跳过合计行 | 单元测试 | JUnit5 | §5.6 | 含「合计」行 | `parseRows` | 不写入合计 |
|
|
27
|
|
-| ZCZX-MYCNCL-UT-012 | 导入解析 | 列映射 | 单元测试 | JUnit5 | §5.6 | 巴青乡样本行 | 解析 | `yakOutboundCount`、`selfConsumptionCattleCount` 等与模板一致 |
|
|
28
|
|
-| ZCZX-MYCNCL-UT-013 | 导入 | upsert 新增 | 单元测试 | JUnit5+Mockito | §5.6 | DB 无 2026-05+本塔乡 | `importData(2026,5,file)` | `insertCount>=1` |
|
|
29
|
|
-| ZCZX-MYCNCL-UT-014 | 导入 | upsert 更新 | 单元测试 | JUnit5+Mockito | §5.6 | 已有 2026-05 各乡镇 | 同一文件再导入 | `updateCount=10`;`insertCount=0` |
|
|
30
|
|
-| ZCZX-MYCNCL-UT-015 | 修改 | 记录不存在 | 单元测试 | JUnit5+Mockito | §5.3 | id 不存在 | `update` | 抛 `ServiceException` |
|
|
31
|
|
-| ZCZX-MYCNCL-UT-016 | 删除 | 物理删除 | 单元测试 | JUnit5+Mockito | §5.4 | 有效 id | `deleteByIds` | 调用 Mapper 物理删除;无 `del_flag` 更新 |
|
|
32
|
|
-| ZCZX-MYCNCL-UT-017 | 数据权限 | 乡镇账号过滤 | 单元测试 | JUnit5+Mockito | §6 | 用户 dept=杂色镇 | `selectList` | 仅本乡镇 |
|
|
33
|
|
-| ZCZX-MYCNCL-UT-018 | 警告 | 自食大于出栏 | 单元测试 | JUnit5 | §2.4 | 自食牛>牦牛出栏 | 校验/导入 | 允许保存;`warnMessages` 含提示 |
|
|
34
|
|
-| ZCZX-MYCNCL-UT-019 | 导出 | 按年月填充模板 | 单元测试 | JUnit5 | §5.7 | 模板+1 乡镇样本 | `YakOutboundReportExcelExporter.export` | 返回 xlsx;解析含对应出栏数 |
|
|
35
|
|
-| ZCZX-MYCNCL-UT-020 | 导出 | 全县乡镇行数 | 单元测试 | JUnit5 | §5.7 | 10 乡镇字典 | `export(2026, towns, map)` | 解析 10 数据行;无样例残留数据 |
|
|
36
|
|
-| ZCZX-MYCNCL-UT-021 | 月份 | 未来月拒绝 | 单元测试 | JUnit5 | §2.2.1 | 当前年 | `validateStatPeriod(2026, 未来月)` | 抛 `ServiceException` |
|
|
37
|
|
-| ZCZX-MYCNCL-UT-022 | 月份 | 月份选项 | 单元测试 | JUnit5 | §2.2.1 | 无 | `resolveMonthOptions()` | 返回 1~12 |
|
|
|
11
|
+## 一、单元测试用例(摘要)
|
|
|
12
|
+
|
|
|
13
|
+| 用例编号 | 测试项 | 预期结果 |
|
|
|
14
|
+| --- | --- | --- |
|
|
|
15
|
+| ZCZX-MYCNCL-UT-001 | 年份选项 | 当年起前 5 年共 6 个 |
|
|
|
16
|
+| ZCZX-MYCNCL-UT-003 | 缺村校验 | 抛异常 |
|
|
|
17
|
+| ZCZX-MYCNCL-UT-004 | 负数拒绝 | 校验失败 |
|
|
|
18
|
+| ZCZX-MYCNCL-UT-005 | 同年同月同村唯一 | 失败「该年该月该村已填报」 |
|
|
|
19
|
+| ZCZX-MYCNCL-UT-006 | 新增成功 | 乡镇由村反推 |
|
|
|
20
|
+| ZCZX-MYCNCL-UT-007~011 | 解析表头/村行/跳过合计 | 与新模板列一致 |
|
|
|
21
|
+| ZCZX-MYCNCL-UT-013 | 导入全量覆盖 | `deleteByYearMonth` 后 insert |
|
|
|
22
|
+| ZCZX-MYCNCL-UT-018 | 自食大于出栏 | 警告不阻断 |
|
|
|
23
|
+| ZCZX-MYCNCL-UT-019 | 导出合计求和 | 合计行数值正确 |
|
|
38
|
24
|
|
|
39
|
25
|
---
|
|
40
|
26
|
|
|
41
|
|
-## 二、接口测试用例
|
|
42
|
|
-
|
|
43
|
|
-| 用例编号 | 测试模块 | 测试项 | 测试类型 | 测试工具 | 测试目的 | 前置条件 | 测试步骤 | 预期结果 |
|
|
44
|
|
-| --- | --- | --- | --- | --- | --- | --- | --- | --- |
|
|
45
|
|
-| ZCZX-MYCNCL-API-001 | 列表 | 默认分页 | 接口测试 | Postman | §5.1 | 已登录;有样本 | `GET /list` | `code=200`;含所属年份、**所属月份**、所属乡镇、农牧户户数、农牧户人数、牦牛出栏数、自食情况(牛) |
|
|
46
|
|
-| ZCZX-MYCNCL-API-002 | 列表 | 按年份筛选 | 接口测试 | Postman | §5.1 | 有 2025、2026 数据 | `statYear=2026` | 仅 2026 |
|
|
47
|
|
-| ZCZX-MYCNCL-API-002a | 列表 | 按年月筛选 | 接口测试 | Postman | §5.1 | 同 year 多 month | `statYear=2026&statMonth=5` | 仅 2026 年 5 月 |
|
|
48
|
|
-| ZCZX-MYCNCL-API-003 | 列表 | 按乡镇筛选 | 接口测试 | Postman | §5.1 | 已知 dept_id | `townDeptId=` | 仅该乡镇 |
|
|
49
|
|
-| ZCZX-MYCNCL-API-004 | 列表 | 组合筛选 | 接口测试 | Postman | §5.1 | 已登录 | 年+月+乡镇 | 交集结果 |
|
|
50
|
|
-| ZCZX-MYCNCL-API-005 | 详情 | 指定七字段 | 接口测试 | Postman | §5.5 | 有效 id | `GET /{id}` | 含年份、**月份**、乡镇、农牧户户数、农牧户人数、牦牛出栏数、自食牛头数 |
|
|
51
|
|
-| ZCZX-MYCNCL-API-006 | 新增 | 必填成功 | 接口测试 | Postman | §5.2 | 无重复 | `POST` 含 `statYear`+`statMonth`+`townDeptId` | 成功 |
|
|
52
|
|
-| ZCZX-MYCNCL-API-007 | 新增 | 缺年份 | 接口测试 | Postman | §5.2 | 已登录 | 缺 `statYear` | 失败 |
|
|
53
|
|
-| ZCZX-MYCNCL-API-008 | 新增 | 缺乡镇 | 接口测试 | Postman | §5.2 | 已登录 | 缺 `townDeptId` | 失败 |
|
|
54
|
|
-| ZCZX-MYCNCL-API-009 | 新增 | 重复同年月乡镇 | 接口测试 | Postman | §5.2 | 已有记录 | 再 `POST` 同键 | 失败 |
|
|
55
|
|
-| ZCZX-MYCNCL-API-010 | 修改 | 更新出栏指标 | 接口测试 | Postman | §5.3 | 有效 id | `PUT` 改 `yakOutboundCount`、绵羊出栏等 | 成功;详情/列表为新值 |
|
|
56
|
|
-| ZCZX-MYCNCL-API-011 | 删除 | 物理删除 | 接口测试 | Postman | §5.4 | 有效 id | `DELETE /{id}` | 成功;库中无该记录 |
|
|
57
|
|
-| ZCZX-MYCNCL-API-012 | 下拉 | 年份选项 | 接口测试 | Postman | §2.2 | 已登录 | `GET /yearOptions` | 6 个年份 |
|
|
58
|
|
-| ZCZX-MYCNCL-API-013 | 下拉 | 乡镇选项 | 接口测试 | Postman | §2.3 | 已登录 | `GET /townOptions` | 10 个乡镇 |
|
|
59
|
|
-| ZCZX-MYCNCL-API-013a | 下拉 | 月份选项 | 接口测试 | Postman | §2.2.1 | 已登录 | `GET /monthOptions` | 1~12 |
|
|
60
|
|
-| ZCZX-MYCNCL-API-014 | 导入 | 全量乡镇 | 接口测试 | Postman | §5.6 | 空库 2026-05 | `POST /importData`+第 6 Sheet+`statYear=2026&statMonth=5` | `insertCount=10`;`failCount=0` |
|
|
61
|
|
-| ZCZX-MYCNCL-API-015 | 导入 | 覆盖更新 | 接口测试 | Postman | §5.6 | 已有 2026-05 全量 | 改 Excel 一行再导入 | `updateCount>=1` |
|
|
62
|
|
-| ZCZX-MYCNCL-API-016 | 导入 | 缺填报年月 | 接口测试 | Postman | §5.6 | 已登录 | 仅上传文件或缺 `statMonth` | 失败 |
|
|
63
|
|
-| ZCZX-MYCNCL-API-017 | 导入 | 非 xlsx | 接口测试 | Postman | §5.6 | 已登录 | 上传 `.csv` | 失败 |
|
|
64
|
|
-| ZCZX-MYCNCL-API-018 | 权限 | 无 add | 接口测试 | Postman | §6 | 仅 list 角色 | `POST /` | 403 |
|
|
65
|
|
-| ZCZX-MYCNCL-API-019 | 权限 | 无 import | 接口测试 | Postman | §6 | 无 import | `POST /importData` | 403 |
|
|
66
|
|
-| ZCZX-MYCNCL-API-020 | 端到端 | 导入-查-详情 | 接口测试 | Postman | §4 | 空库 | 导入 2026-05→list→detail | 牦牛出栏数、自食牛与 Excel 一致 |
|
|
67
|
|
-| ZCZX-MYCNCL-API-021 | 导出 | 按年月导出 | 接口测试 | Postman/MockMvc | §5.7 | 有 2026-05 数据 | `GET /export?statYear=2026&statMonth=5` | `200`;xlsx |
|
|
68
|
|
-| ZCZX-MYCNCL-API-022 | 导出 | 缺 statMonth | 接口测试 | Postman | §5.7 | 已登录 | `GET /export?statYear=2026` | 失败 |
|
|
69
|
|
-| ZCZX-MYCNCL-API-023 | 导出 | 非法年份 | 接口测试 | Postman | §5.7 | 已登录 | `statYear=1999` | 失败 |
|
|
70
|
|
-| ZCZX-MYCNCL-API-024 | 权限 | 无 export | 接口测试 | Postman | §6 | 无 export | `GET /export?statYear=2026&statMonth=5` | 403 |
|
|
71
|
|
-| ZCZX-MYCNCL-API-025 | 端到端 | 导出-再导入 | 接口测试 | Postman | §5.7 | 有 2026-05 全量 | 导出→改一行→导入 | upsert 成功 |
|
|
|
27
|
+## 二、接口测试用例(摘要)
|
|
|
28
|
+
|
|
|
29
|
+| 用例编号 | 测试项 | 预期结果 |
|
|
|
30
|
+| --- | --- | --- |
|
|
|
31
|
+| ZCZX-MYCNCL-API-001 | 列表 | 返回明细字段(合计由前端算) |
|
|
|
32
|
+| ZCZX-MYCNCL-API-003a | 按村筛选 | `villageDeptId` 精确 |
|
|
|
33
|
+| ZCZX-MYCNCL-API-005 | 详情 | 含全部明细;乡镇/村齐全 |
|
|
|
34
|
+| ZCZX-MYCNCL-API-006~009 | 新增 | 必填村;同村重复失败 |
|
|
|
35
|
+| ZCZX-MYCNCL-API-013a | 村树 | `GET /villageTree` |
|
|
|
36
|
+| ZCZX-MYCNCL-API-014~015 | 导入 | 全量覆盖;无有效行报错 |
|
|
|
37
|
+| ZCZX-MYCNCL-API-021 | 导出 | 按年月 xlsx |
|
|
72
|
38
|
|
|
73
|
39
|
---
|
|
74
|
40
|
|
|
75
|
|
-## 三、界面测试用例(UI)
|
|
76
|
|
-
|
|
77
|
|
-**工具**:Playwright + Chrome(与项目其他模块一致)。
|
|
78
|
|
-
|
|
79
|
|
-| 用例编号 | 测试模块 | 测试项 | 测试类型 | 测试工具 | 测试目的 | 前置条件 | 测试步骤 | 预期结果 |
|
|
80
|
|
-| --- | --- | --- | --- | --- | --- | --- | --- | --- |
|
|
81
|
|
-| ZCZX-MYCNCL-UI-001 | 列表 | 默认加载 | UI 测试 | Playwright | §5.1 | 有数据 | 进入菜单 | 列含所属年份、**所属月份**、乡镇…;**年月筛选为空** |
|
|
82
|
|
-| ZCZX-MYCNCL-UI-002 | 列表 | 年月乡镇筛选 | UI 测试 | Playwright | §5.1 | 有数据 | 选择后搜索 | 结果正确 |
|
|
83
|
|
-| ZCZX-MYCNCL-UI-003 | 列表 | 重置 | UI 测试 | Playwright | §5.1 | 已筛选 | 点重置 | 条件清空 |
|
|
84
|
|
-| ZCZX-MYCNCL-UI-004 | 新增 | 必填校验 | UI 测试 | Playwright | §5.2 | 有 add 权限 | 不选乡镇提交 | 表单提示 |
|
|
85
|
|
-| ZCZX-MYCNCL-UI-005 | 新增 | 年份下拉 6 项 | UI 测试 | Playwright | §2.2 | 打开表单 | 查看年份下拉 | 当年起前 5 年 |
|
|
86
|
|
-| ZCZX-MYCNCL-UI-006 | 新增 | 乡镇下拉 | UI 测试 | Playwright | §2.3 | 打开表单 | 查看乡镇下拉 | 10 个乡镇 |
|
|
87
|
|
-| ZCZX-MYCNCL-UI-007 | 新增 | 全指标可填 | UI 测试 | Playwright | §5.3 | 打开表单 | 填写绵羊/山羊出栏等 | 可保存 |
|
|
88
|
|
-| ZCZX-MYCNCL-UI-008 | 修改 | 回显保存 | UI 测试 | Playwright | §5.3 | 有记录 | 修改牦牛出栏数保存 | 列表更新 |
|
|
89
|
|
-| ZCZX-MYCNCL-UI-009 | 删除 | 二次确认 | UI 测试 | Playwright | §5.4 | 有记录 | 删除确认 | 行消失 |
|
|
90
|
|
-| ZCZX-MYCNCL-UI-010 | 详情 | 七字段只读 | UI 测试 | Playwright | §5.5 | 有完整数据 | 点查看 | 展示年份、**月份**、乡镇、农牧户户数、农牧户人数、牦牛出栏数、自食情况(牛) |
|
|
91
|
|
-| ZCZX-MYCNCL-UI-011 | 导入 | 选年月上传 | UI 测试 | Playwright | §5.6 | 有 import 权限 | 默认当前年月→上传第 6 Sheet | 成功摘要 |
|
|
92
|
|
-| ZCZX-MYCNCL-UI-012 | 导入 | 未选月份 | UI 测试 | Playwright | §5.6 | 有 import 权限 | 缺月份提交 | 表单校验失败 |
|
|
93
|
|
-| ZCZX-MYCNCL-UI-013 | 权限 | 无导入按钮 | UI 测试 | Playwright | §6 | 无 import | 进入页面 | 无导入入口 |
|
|
94
|
|
-| ZCZX-MYCNCL-UI-014 | 端到端 | 导入后列表 | UI 集成 | Playwright | §4 | 空库 | 导入→筛选 2026-05 | 10 行乡镇数据 |
|
|
95
|
|
-| ZCZX-MYCNCL-UI-015 | 导出 | 按年月导出 | UI 测试 | Playwright | §5.7 | 有 export 权限 | 选年月导出 | 下载 `{年}年{月}月牦牛出栏数据.xlsx` |
|
|
96
|
|
-| ZCZX-MYCNCL-UI-016 | 导出 | 未选月份 | UI 测试 | Playwright | §5.7 | 有 export 权限 | 缺月份点导出 | 表单校验失败 |
|
|
97
|
|
-| ZCZX-MYCNCL-UI-017 | 权限 | 无导出按钮 | UI 测试 | Playwright | §6 | 无 export | 进入页面 | 无导出入口 |
|
|
|
41
|
+## 三、界面测试用例(摘要)
|
|
|
42
|
+
|
|
|
43
|
+| 用例编号 | 测试项 | 预期结果 |
|
|
|
44
|
+| --- | --- | --- |
|
|
|
45
|
+| ZCZX-MYCNCL-UI-001 | 列表列 | 含年/月/乡镇/村/农牧户数/农牧人数/牦牛出栏/牲畜总出栏数/自食牛数/自食牲畜总数 |
|
|
|
46
|
+| ZCZX-MYCNCL-UI-006 | 新增村树 | 仅可选村叶子 |
|
|
|
47
|
+| ZCZX-MYCNCL-UI-007 | 新增表单 | 可填全部明细;**不出现**牲畜总出栏数、自食牲畜总数 |
|
|
|
48
|
+| ZCZX-MYCNCL-UI-010 | 详情 | 全部明细 + 两项合计只读 |
|
|
|
49
|
+| ZCZX-MYCNCL-UI-011 | 导入 | 全量覆盖成功摘要 |
|
|
98
|
50
|
|
|
99
|
51
|
---
|
|
100
|
52
|
|
|
|
@@ -102,16 +54,11 @@
|
|
102
|
54
|
|
|
103
|
55
|
| 需求章节 | 要点 | 主要用例 |
|
|
104
|
56
|
| --- | --- | --- |
|
|
105
|
|
-| §2.2 年份 | 向前 5 年 | UT-001;API-012;UI-005 |
|
|
106
|
|
-| §2.2.1 月份 | 1~12、非未来月 | UT-021~022;API-013a |
|
|
107
|
|
-| §2.3 乡镇 | sys_dept 二级 order_num>12 | UT-002;API-013;UI-006 |
|
|
108
|
|
-| §5.1 列表 | 7 数据列+操作;默认不筛年月 | API-001~004、002a;UI-001~003 |
|
|
109
|
|
-| §5.2~5.4 CRUD | 必填、唯一、物理删除 | UT-003~006、015~016;API-006~011 |
|
|
110
|
|
-| §5.5 详情 | 七字段(含月份) | API-005;UI-010 |
|
|
111
|
|
-| §5.6 导入 | 第 6 Sheet | UT-007~014;API-014~017;UI-011~012 |
|
|
112
|
|
-| §5.7 导出 | 按年月全县乡镇 | UT-019~020;API-021~025;UI-015~016 |
|
|
113
|
|
-| §6 权限 | 按钮级 | API-018~019、024;UI-013、017 |
|
|
114
|
|
-| §8 扎色镇别名 | 导入映射 | UT-010 |
|
|
|
57
|
+| §2.5 合计 | 不入库;列表/详情展示;表单不展示 | UI-001、007、010 |
|
|
|
58
|
+| §5.1 列表 | 十数据列 | UI-001;API-001 |
|
|
|
59
|
+| §5.2 新增修改 | 只选村;无合计输入 | UI-006~007 |
|
|
|
60
|
+| §5.3 详情 | 明细+合计 | UI-010;API-005 |
|
|
|
61
|
+| §5.4~5.5 导入导出 | 全量覆盖、合计行 | UT-013、019;API-014、021 |
|
|
115
|
62
|
|
|
116
|
63
|
---
|
|
117
|
64
|
|
|
|
@@ -119,6 +66,6 @@
|
|
119
|
66
|
|
|
120
|
67
|
| 版本 | 说明 |
|
|
121
|
68
|
| --- | --- |
|
|
122
|
|
-| 1.0 | 初版:单元 18、接口 20、UI 14;编号前缀 **ZCZX-MYCNCL** |
|
|
123
|
|
-| 1.1 | 补充按年份导出用例 UT-019~020、API-021~025、UI-015~017 |
|
|
124
|
|
-| 1.2 | 按年月填报:UT-005/021~022;API-002a/013a/014/021~022;UI 年月筛选与导出;唯一键改为年+月+乡镇 |
|
|
|
69
|
+| 1.0~1.x | 乡镇粒度、upsert、七列列表等历史版本 |
|
|
|
70
|
+| 2.0 | 村粒度、全量覆盖、新模板列 |
|
|
|
71
|
+| 2.1 | 列表十列含两项合计;新增/修改不展示合计;详情含合计 |
|