Quellcode durchsuchen

畜牧产品产量登记

wwh vor 2 Wochen
Ursprung
Commit
cd6407f032

+ 9 - 5
doc/产业数据模型及服务/可支配收入数据填报/可支配收入数据填报功能需求.md

@@ -5,7 +5,7 @@
5 5
 | 项 | 说明 |
6 6
 | --- | --- |
7 7
 | 模块名称 | 可支配收入数据填报 |
8
-| 目标 | 按**所属年份**登记农村居民人均可支配收入、脱贫人口人均纯收入;增幅/增速可选填 |
8
+| 目标 | 按**所属年份**登记农村居民人均可支配收入、脱贫人口人均纯收入;增幅/增速可选填并落库 |
9 9
 | 关联系统 | 业务后台 |
10 10
 | 修订依据 | 交接表 `可支配收入数据填报.xlsx` |
11 11
 
@@ -18,7 +18,10 @@
18 18
 - **增幅、增速可选填并落库**:
19 19
   - 增幅 = 人均可支配收入 − 去年人均可支配收入
20 20
   - 增速 = 增幅 / 去年人均可支配收入
21
-  - 保存时若未填且存在上年数据,按公式自动补齐;已填则保留手工值。
21
+  - **新增**或仅改其他字段且未填增幅/增速时:存在上年数据则按公式补齐;已手工填写则保留。
22
+  - **修改年份或人均可支配收入时**:按新口径**强制重算**增幅、增速(与前端清空后提交一致)。
23
+  - 无上年数据或无法计算增速(如上年可支配收入为 0)时,对应字段可为 `null`。
24
+- **界面展示**:列表、详情中增幅/增速为库中 `null` 时,显示为 `0` / `0.00%`(不落库改写)。编辑表单中仍为空表示选填,避免误存为 0。
22 25
 - 无导入 / 导出。
23 26
 
24 27
 ---
@@ -27,9 +30,9 @@
27 30
 
28 31
 | 能力 | 说明 |
29 32
 | --- | --- |
30
-| 分页列表 | 筛选:所属年份;列:年份、农村居民人均可支配收入、增幅、增速、脱贫人口人均纯收入 |
31
-| 新增 / 修改 | 年份、人均可支配收入、增幅(选填)、增速(选填)、人均纯收入、备注;新增默认本年 |
32
-| 详情 | 全部字段 |
33
+| 分页列表 | 筛选:所属年份;列:年份、农村居民人均可支配收入、增幅、增速、脱贫人口人均纯收入;增幅/增速 null 显示为 0 |
34
+| 新增 / 修改 | 年份、人均可支配收入、增幅(选填)、增速(选填,小数如 0.1228)、人均纯收入、备注;新增默认本年;改年份/可支配收入时清空并重算增幅增速 |
35
+| 详情 | 全部字段;增幅/增速 null 显示为 0 |
33 36
 | 删除 | 物理删除 |
34 37
 
35 38
 ---
@@ -46,3 +49,4 @@
46 49
 | --- | --- |
47 50
 | 1.0 | 首版:县级年度 CRUD |
48 51
 | 1.1 | 增幅、增速改为可选填落库;未填按公式补齐 |
52
+| 1.2 | 修改年份/可支配收入强制重算;列表详情 null 显示为 0 |

+ 49 - 6
doc/产业数据模型及服务/可支配收入数据填报/可支配收入数据填报技术方案.md

@@ -11,6 +11,10 @@
11 11
 | DELETE | `/dataModel/disposableIncome/{ids}` | remove |
12 12
 | GET | `/dataModel/disposableIncome/yearOptions` | list |
13 13
 
14
+年份选项:与存栏等模块一致,当前年起向前 5 年共 6 个(`YakHerdInventoryYearSupport`)。
15
+
16
+---
17
+
14 18
 ## 2. 表结构
15 19
 
16 20
 表名:`biz_disposable_income`(见 `sql/biz_disposable_income.sql`)
@@ -19,13 +23,52 @@
19 23
 | --- | --- |
20 24
 | stat_year | 所属年份,唯一 |
21 25
 | rural_disposable_income | 农村居民人均可支配收入(元) |
22
-| income_increase | 增幅(元),可选;未填时=本年−上年 |
23
-| income_growth_rate | 增速,可选;未填时=增幅/上年 |
26
+| income_increase | 增幅(元),可选可空 |
27
+| income_growth_rate | 增速(小数),可选可空 |
24 28
 | poverty_net_income | 脱贫人口人均纯收入(元) |
25 29
 | remark | 备注 |
26 30
 
27
-## 3. 前端
31
+---
32
+
33
+## 3. 增幅 / 增速计算
34
+
35
+实现:`DisposableIncomeGrowthSupport`、`BizDisposableIncomeServiceImpl.applyGrowthForSave`
36
+
37
+| 场景 | 行为 |
38
+| --- | --- |
39
+| 新增,增幅/增速未填 | `fillMissingGrowth`:有上年则补齐 |
40
+| 修改,年份与可支配收入未变 | `fillMissingGrowth`:仅补齐未填项,保留手工值 |
41
+| 修改,年份或可支配收入变更 | `recalculateGrowth`:清空后按公式强制重算 |
42
+| 无上年 / 上年可支配收入为 0 | 增幅可算则写入;增速在除零场景保持 `null` |
43
+
44
+公式:
45
+
46
+- 增幅 = 本年 `rural_disposable_income` − 上年同字段
47
+- 增速 = 增幅 ÷ 上年 `rural_disposable_income`(保留 6 位小数)
28 48
 
29
-- 页面:`ruoyi-ui/src/views/dataModel/disposableIncome/index.vue`
30
-- API:`ruoyi-ui/src/api/dataModel/disposableIncome.js`
31
-- 菜单组件路径建议:`dataModel/disposableIncome/index`
49
+---
50
+
51
+## 4. 后端要点
52
+
53
+| 项 | 路径 |
54
+| --- | --- |
55
+| Domain | `BizDisposableIncome` |
56
+| Mapper | `BizDisposableIncomeMapper` / XML |
57
+| Service | `IBizDisposableIncomeService` / `BizDisposableIncomeServiceImpl` |
58
+| Controller | `BizDisposableIncomeController` → `/dataModel/disposableIncome` |
59
+| 校验 | `DisposableIncomeValidation` |
60
+| 单元测试 | `DisposableIncomeGrowthSupportTest`、`DisposableIncomeValidationTest` |
61
+
62
+---
63
+
64
+## 5. 前端
65
+
66
+| 项 | 说明 |
67
+| --- | --- |
68
+| 页面 | `ruoyi-ui/src/views/dataModel/disposableIncome/index.vue` |
69
+| API | `ruoyi-ui/src/api/dataModel/disposableIncome.js` |
70
+| i18n | `ruoyi-ui/src/lang/zh/dataModel.js`、`bo/dataModel.js` → `disposableIncome` |
71
+| 菜单组件路径 | `dataModel/disposableIncome/index` |
72
+| 增幅/增速表单 | 普通输入框(支持空值);提交空 → `null`,避免 `el-input-number` 把 null 显示/提交成 0 |
73
+| 改年份或可支配收入 | 前端清空增幅/增速,后端强制重算 |
74
+| 列表 / 详情展示 | `formatIncrease` / `formatGrowthRate`:库中 `null` 显示为 `0.00` / `0.00%` |

+ 14 - 9
doc/产业数据模型及服务/可支配收入数据填报/可支配收入数据填报测试用例.md

@@ -16,11 +16,12 @@
16 16
 | ZCZX-KZPMSR-UT-002 | 增幅增速 | 已填保留手工值 | 单元测试 | JUnit5 | 不覆盖 | 已填增幅/增速 | `fillMissingGrowth` | 仍为手工值 |
17 17
 | ZCZX-KZPMSR-UT-003 | 增幅增速 | 无上年数据 | 单元测试 | JUnit5 | 首年 | previous=null | `fillMissingGrowth` | 增幅、增速仍为 null |
18 18
 | ZCZX-KZPMSR-UT-004 | 增幅增速 | 上年为 0 | 单元测试 | JUnit5 | 除零保护 | 上年可支配收入=0 | `fillMissingGrowth` | 仅补齐增幅;增速仍 null |
19
-| ZCZX-KZPMSR-UT-005 | 校验 | 必填年份 | 单元测试 | JUnit5 | 保存校验 | 缺 `statYear` | `validateRowForSave` | 抛 `ServiceException` |
20
-| ZCZX-KZPMSR-UT-006 | 校验 | 非法年份 | 单元测试 | JUnit5 | 年份范围 | `statYear=1999` | `validateRowForSave` | 抛「所属年份不在可选范围内」 |
21
-| ZCZX-KZPMSR-UT-007 | 校验 | 负收入拒绝 | 单元测试 | JUnit5 | 非负约束 | 可支配收入=-1 | `validateRowForSave` | 抛 `ServiceException` |
22
-| ZCZX-KZPMSR-UT-008 | 校验 | 备注超长 | 单元测试 | JUnit5 | 长度限制 | remark 长度>500 | `validateRowForSave` | 抛「备注不能超过500字」 |
23
-| ZCZX-KZPMSR-UT-009 | 校验 | 合法保存 | 单元测试 | JUnit5 | 正向 | 本年合法数据 | `validateRowForSave` | 不抛异常 |
19
+| ZCZX-KZPMSR-UT-005 | 增幅增速 | 强制重算覆盖手工值 | 单元测试 | JUnit5 | 口径变更 | 已有手工增幅增速 | `recalculateGrowth` | 按公式覆盖为新值 |
20
+| ZCZX-KZPMSR-UT-006 | 校验 | 必填年份 | 单元测试 | JUnit5 | 保存校验 | 缺 `statYear` | `validateRowForSave` | 抛 `ServiceException` |
21
+| ZCZX-KZPMSR-UT-007 | 校验 | 非法年份 | 单元测试 | JUnit5 | 年份范围 | `statYear=1999` | `validateRowForSave` | 抛「所属年份不在可选范围内」 |
22
+| ZCZX-KZPMSR-UT-008 | 校验 | 负收入拒绝 | 单元测试 | JUnit5 | 非负约束 | 可支配收入=-1 | `validateRowForSave` | 抛 `ServiceException` |
23
+| ZCZX-KZPMSR-UT-009 | 校验 | 备注超长 | 单元测试 | JUnit5 | 长度限制 | remark 长度>500 | `validateRowForSave` | 抛「备注不能超过500字」 |
24
+| ZCZX-KZPMSR-UT-010 | 校验 | 合法保存 | 单元测试 | JUnit5 | 正向 | 本年合法数据 | `validateRowForSave` | 不抛异常 |
24 25
 
25 26
 对应代码:`DisposableIncomeGrowthSupportTest`、`DisposableIncomeValidationTest`
26 27
 
@@ -32,14 +33,15 @@
32 33
 | --- | --- | --- | --- | --- | --- | --- | --- | --- |
33 34
 | ZCZX-KZPMSR-API-001 | 列表 | 默认分页 | 接口测试 | Postman | 列表 | 有样本 | `GET /list` | `code=200`;含年份、可支配收入、增幅、增速、人均纯收入 |
34 35
 | ZCZX-KZPMSR-API-002 | 列表 | 按年份筛选 | 接口测试 | Postman | 搜索 | 多年数据 | `statYear=2025` | 仅 2025 |
35
-| ZCZX-KZPMSR-API-003 | 列表 | 展示落库增幅增速 | 接口测试 | Postman | 落库展示 | 记录已含增幅增速 | `GET /list` | 返回库中增幅、增速 |
36
+| ZCZX-KZPMSR-API-003 | 列表 | 展示落库增幅增速 | 接口测试 | Postman | 落库展示 | 记录已含增幅增速 | `GET /list` | 返回库中增幅、增速(可为 null) |
36 37
 | ZCZX-KZPMSR-API-004 | 详情 | 全字段 | 接口测试 | Postman | 详情 | 有效 id | `GET /{id}` | 含收入字段与增幅、增速 |
37 38
 | ZCZX-KZPMSR-API-005 | 新增 | 必填成功 | 接口测试 | Postman | 新增 | 该年无记录 | `POST` 含年份+两项收入 | 成功;有上年时自动补增幅增速 |
38 39
 | ZCZX-KZPMSR-API-005a | 新增 | 手工填增幅增速 | 接口测试 | Postman | 可选填 | 有上年 | `POST` 同时传自定义增幅增速 | 成功;保留手工值 |
39 40
 | ZCZX-KZPMSR-API-006 | 新增 | 缺年份 | 接口测试 | Postman | 校验 | 已登录 | 缺 `statYear` | 失败 |
40 41
 | ZCZX-KZPMSR-API-007 | 新增 | 缺可支配收入 | 接口测试 | Postman | 校验 | 已登录 | 缺 `ruralDisposableIncome` | 失败 |
41 42
 | ZCZX-KZPMSR-API-008 | 新增 | 重复年份 | 接口测试 | Postman | 唯一键 | 已有同年记录 | 再 `POST` 同年 | 失败「该年份数据已存在」 |
42
-| ZCZX-KZPMSR-API-009 | 修改 | 更新收入 | 接口测试 | Postman | 修改 | 有效 id | `PUT` 改可支配收入 | 成功;列表增幅随之变化 |
43
+| ZCZX-KZPMSR-API-009 | 修改 | 更新收入 | 接口测试 | Postman | 强制重算 | 有效 id 且存在上年 | `PUT` 改可支配收入 | 成功;增幅增速按新收入重算 |
44
+| ZCZX-KZPMSR-API-009a | 修改 | 改年份重算 | 接口测试 | Postman | 强制重算 | 已有 2021、2026 | 将 2026 改为 2022 | 成功;按相对 2021 重算增幅增速 |
43 45
 | ZCZX-KZPMSR-API-010 | 修改 | 改到已有年份 | 接口测试 | Postman | 唯一键 | 存在 2024、2025 | 将 2025 的年份改为 2024 | 失败 |
44 46
 | ZCZX-KZPMSR-API-011 | 删除 | 物理删除 | 接口测试 | Postman | 删除 | 有效 id | `DELETE /{id}` | 记录移除;再查 404/空 |
45 47
 | ZCZX-KZPMSR-API-012 | 下拉 | 年份选项 | 接口测试 | Postman | 下拉 | 已登录 | `GET /yearOptions` | 当前年起向前 5 年共 6 个 |
@@ -56,13 +58,15 @@
56 58
 | 用例编号 | 测试模块 | 测试项 | 测试类型 | 测试工具 | 测试目的 | 前置条件 | 测试步骤 | 预期结果 |
57 59
 | --- | --- | --- | --- | --- | --- | --- | --- | --- |
58 60
 | ZCZX-KZPMSR-UI-001 | 列表 | 列展示 | 界面测试 | Chrome | 列表 | 有数据 | 打开页面 | 显示年份、可支配收入、增幅、增速、人均纯收入 |
61
+| ZCZX-KZPMSR-UI-001a | 列表 | null 显示为 0 | 界面测试 | Chrome | 展示规则 | 增幅或增速库中为 null | 打开列表/详情 | 增幅显示 `0.00`,增速显示 `0.00%` |
59 62
 | ZCZX-KZPMSR-UI-002 | 列表 | 年份筛选 | 界面测试 | Chrome | 搜索 | 有多年数据 | 选年份→搜索 | 仅该年 |
60
-| ZCZX-KZPMSR-UI-003 | 新增 | 默认本年 | 界面测试 | Chrome | 默认值 | 已登录 | 点新增 | 年份默认当前年;增幅、增速可空 |
63
+| ZCZX-KZPMSR-UI-003 | 新增 | 默认本年 | 界面测试 | Chrome | 默认值 | 已登录 | 点新增 | 年份默认当前年;增幅、增速输入框为空(选填) |
61 64
 | ZCZX-KZPMSR-UI-004 | 新增 | 保存成功 | 界面测试 | Chrome | 新增 | 该年无数据 | 填两项收入→确定 | 提示成功;有上年则列表显示自动增幅增速 |
62 65
 | ZCZX-KZPMSR-UI-004a | 新增 | 手工填增幅增速 | 界面测试 | Chrome | 可选填 | 已登录 | 填写增幅、增速后保存 | 列表展示手工值 |
63 66
 | ZCZX-KZPMSR-UI-005 | 新增 | 必填校验 | 界面测试 | Chrome | 校验 | 打开新增 | 不填收入直接确定 | 表单校验提示 |
64 67
 | ZCZX-KZPMSR-UI-006 | 详情 | 只读含增幅增速 | 界面测试 | Chrome | 详情 | 有上年数据 | 点查看 | 展示增幅、增速(百分比) |
65
-| ZCZX-KZPMSR-UI-007 | 修改 | 编辑回填 | 界面测试 | Chrome | 修改 | 有效行 | 点编辑 | 表单回填;可保存 |
68
+| ZCZX-KZPMSR-UI-007 | 修改 | 编辑回填 | 界面测试 | Chrome | 修改 | 有效行 | 点编辑 | 表单回填;null 的增幅增速保持空,不显示成 0 |
69
+| ZCZX-KZPMSR-UI-007a | 修改 | 改年份重算 | 界面测试 | Chrome | 强制重算 | 已有 2021 与 2026 | 编辑 2026→改年份为 2022→保存 | 列表增幅增速按相对 2021 计算 |
66 70
 | ZCZX-KZPMSR-UI-008 | 删除 | 确认删除 | 界面测试 | Chrome | 删除 | 有效行 | 点删除→确认 | 行消失 |
67 71
 | ZCZX-KZPMSR-UI-009 | 范围 | 无导入导出按钮 | 界面测试 | Chrome | 需求边界 | 有权限 | 查看工具栏 | 无导入、导出入口 |
68 72
 
@@ -74,3 +78,4 @@
74 78
 | --- | --- |
75 79
 | 1.0 | 首版:CRUD + 增幅/增速计算;无导入导出用例 |
76 80
 | 1.1 | 增幅、增速改为可选填落库;未填按公式补齐 |
81
+| 1.2 | 补充改年份强制重算、null 界面显示为 0、表单空值不落 0 等用例 |