补充结果总览模型区后端实施记录
This commit is contained in:
@@ -23,7 +23,7 @@
|
||||
- Create: `ccdi-project/src/main/java/com/ruoyi/ccdi/project/domain/vo/CcdiProjectRiskHitTagVO.java`
|
||||
- Test: `ccdi-project/src/test/java/com/ruoyi/ccdi/project/controller/CcdiProjectOverviewControllerContractTest.java`
|
||||
|
||||
- [ ] **Step 1: Write the failing test**
|
||||
- [x] **Step 1: Write the failing test**
|
||||
|
||||
为控制器契约补静态/反射测试,锁定以下方法和路径:
|
||||
|
||||
@@ -40,7 +40,7 @@
|
||||
- `pageNum`
|
||||
- `pageSize`
|
||||
|
||||
- [ ] **Step 2: Run test to verify it fails**
|
||||
- [x] **Step 2: Run test to verify it fails**
|
||||
|
||||
Run:
|
||||
|
||||
@@ -53,7 +53,7 @@ Expected:
|
||||
- `FAIL`
|
||||
- 原因是接口与类型尚未创建
|
||||
|
||||
- [ ] **Step 3: Write minimal implementation**
|
||||
- [x] **Step 3: Write minimal implementation**
|
||||
|
||||
补齐控制器、服务接口、DTO 与 VO。
|
||||
|
||||
@@ -69,7 +69,7 @@ VO 关键字段:
|
||||
- 列表:`staffName`、`staffCode`、`idNo`、`department`、`modelNames`、`hitTagList`、`actionLabel`
|
||||
- 标签:`ruleCode`、`ruleName`、`riskLevel`
|
||||
|
||||
- [ ] **Step 4: Run test to verify it passes**
|
||||
- [x] **Step 4: Run test to verify it passes**
|
||||
|
||||
Run:
|
||||
|
||||
@@ -81,7 +81,7 @@ Expected:
|
||||
|
||||
- `PASS`
|
||||
|
||||
- [ ] **Step 5: Commit**
|
||||
- [x] **Step 5: Commit**
|
||||
|
||||
```bash
|
||||
git add ccdi-project/src/main/java/com/ruoyi/ccdi/project/controller/CcdiProjectOverviewController.java ccdi-project/src/main/java/com/ruoyi/ccdi/project/service/ICcdiProjectOverviewService.java ccdi-project/src/main/java/com/ruoyi/ccdi/project/domain/dto/CcdiProjectRiskModelPeopleQueryDTO.java ccdi-project/src/main/java/com/ruoyi/ccdi/project/domain/vo/CcdiProjectRiskModelCardVO.java ccdi-project/src/main/java/com/ruoyi/ccdi/project/domain/vo/CcdiProjectRiskModelCardsVO.java ccdi-project/src/main/java/com/ruoyi/ccdi/project/domain/vo/CcdiProjectRiskModelPeopleItemVO.java ccdi-project/src/main/java/com/ruoyi/ccdi/project/domain/vo/CcdiProjectRiskModelPeopleVO.java ccdi-project/src/main/java/com/ruoyi/ccdi/project/domain/vo/CcdiProjectRiskHitTagVO.java ccdi-project/src/test/java/com/ruoyi/ccdi/project/controller/CcdiProjectOverviewControllerContractTest.java
|
||||
@@ -95,7 +95,7 @@ git commit -m "定义结果总览模型区接口结构"
|
||||
- Modify: `ccdi-project/src/main/resources/mapper/ccdi/project/CcdiProjectOverviewMapper.xml`
|
||||
- Test: `ccdi-project/src/test/java/com/ruoyi/ccdi/project/mapper/CcdiProjectOverviewMapperRiskModelCardsTest.java`
|
||||
|
||||
- [ ] **Step 1: Write the failing test**
|
||||
- [x] **Step 1: Write the failing test**
|
||||
|
||||
为模型卡片统计新增 mapper 测试,锁定以下口径:
|
||||
|
||||
@@ -103,7 +103,7 @@ git commit -m "定义结果总览模型区接口结构"
|
||||
- `peopleCount` = 当前模型归并后的员工人数
|
||||
- 排序按 `warningCount desc, model_code asc`
|
||||
|
||||
- [ ] **Step 2: Run test to verify it fails**
|
||||
- [x] **Step 2: Run test to verify it fails**
|
||||
|
||||
Run:
|
||||
|
||||
@@ -115,7 +115,7 @@ Expected:
|
||||
|
||||
- `FAIL`
|
||||
|
||||
- [ ] **Step 3: Write minimal implementation**
|
||||
- [x] **Step 3: Write minimal implementation**
|
||||
|
||||
在 `CcdiProjectOverviewMapper.xml` 中:
|
||||
|
||||
@@ -126,7 +126,7 @@ Expected:
|
||||
|
||||
不要新增新表、不要引入额外统计口径。
|
||||
|
||||
- [ ] **Step 4: Run test to verify it passes**
|
||||
- [x] **Step 4: Run test to verify it passes**
|
||||
|
||||
Run:
|
||||
|
||||
@@ -138,7 +138,7 @@ Expected:
|
||||
|
||||
- `PASS`
|
||||
|
||||
- [ ] **Step 5: Commit**
|
||||
- [x] **Step 5: Commit**
|
||||
|
||||
```bash
|
||||
git add ccdi-project/src/main/java/com/ruoyi/ccdi/project/mapper/CcdiProjectOverviewMapper.java ccdi-project/src/main/resources/mapper/ccdi/project/CcdiProjectOverviewMapper.xml ccdi-project/src/test/java/com/ruoyi/ccdi/project/mapper/CcdiProjectOverviewMapperRiskModelCardsTest.java
|
||||
@@ -152,7 +152,7 @@ git commit -m "补充结果总览模型卡片统计查询"
|
||||
- Modify: `ccdi-project/src/main/resources/mapper/ccdi/project/CcdiProjectOverviewMapper.xml`
|
||||
- Test: `ccdi-project/src/test/java/com/ruoyi/ccdi/project/mapper/CcdiProjectOverviewMapperRiskModelPeopleTest.java`
|
||||
|
||||
- [ ] **Step 1: Write the failing test**
|
||||
- [x] **Step 1: Write the failing test**
|
||||
|
||||
新增列表查询测试,覆盖:
|
||||
|
||||
@@ -163,7 +163,7 @@ git commit -m "补充结果总览模型卡片统计查询"
|
||||
- `deptId` 精确筛选
|
||||
- `hitTagList` 和 `modelNames` 只返回当前筛选上下文内的数据
|
||||
|
||||
- [ ] **Step 2: Run test to verify it fails**
|
||||
- [x] **Step 2: Run test to verify it fails**
|
||||
|
||||
Run:
|
||||
|
||||
@@ -175,7 +175,7 @@ Expected:
|
||||
|
||||
- `FAIL`
|
||||
|
||||
- [ ] **Step 3: Write minimal implementation**
|
||||
- [x] **Step 3: Write minimal implementation**
|
||||
|
||||
列表查询要求:
|
||||
|
||||
@@ -186,7 +186,7 @@ Expected:
|
||||
- `hitTagList` 只返回当前所选模型范围内的标签
|
||||
- 标签排序按风险等级、规则编码稳定输出
|
||||
|
||||
- [ ] **Step 4: Run test to verify it passes**
|
||||
- [x] **Step 4: Run test to verify it passes**
|
||||
|
||||
Run:
|
||||
|
||||
@@ -198,7 +198,7 @@ Expected:
|
||||
|
||||
- `PASS`
|
||||
|
||||
- [ ] **Step 5: Commit**
|
||||
- [x] **Step 5: Commit**
|
||||
|
||||
```bash
|
||||
git add ccdi-project/src/main/java/com/ruoyi/ccdi/project/mapper/CcdiProjectOverviewMapper.java ccdi-project/src/main/resources/mapper/ccdi/project/CcdiProjectOverviewMapper.xml ccdi-project/src/test/java/com/ruoyi/ccdi/project/mapper/CcdiProjectOverviewMapperRiskModelPeopleTest.java
|
||||
@@ -211,7 +211,7 @@ git commit -m "补充结果总览模型区人员分页查询"
|
||||
- Modify: `ccdi-project/src/main/java/com/ruoyi/ccdi/project/service/impl/CcdiProjectOverviewServiceImpl.java`
|
||||
- Test: `ccdi-project/src/test/java/com/ruoyi/ccdi/project/service/impl/CcdiProjectOverviewServiceImplTest.java`
|
||||
|
||||
- [ ] **Step 1: Write the failing test**
|
||||
- [x] **Step 1: Write the failing test**
|
||||
|
||||
在服务测试中补充:
|
||||
|
||||
@@ -221,7 +221,7 @@ git commit -m "补充结果总览模型区人员分页查询"
|
||||
- 空列表返回空数组,不返回 `null`
|
||||
- `actionLabel` 固定为“查看详情”
|
||||
|
||||
- [ ] **Step 2: Run test to verify it fails**
|
||||
- [x] **Step 2: Run test to verify it fails**
|
||||
|
||||
Run:
|
||||
|
||||
@@ -233,7 +233,7 @@ Expected:
|
||||
|
||||
- `FAIL`
|
||||
|
||||
- [ ] **Step 3: Write minimal implementation**
|
||||
- [x] **Step 3: Write minimal implementation**
|
||||
|
||||
在服务层:
|
||||
|
||||
@@ -242,7 +242,7 @@ Expected:
|
||||
- 人员接口封装 `rows` 和 `total`
|
||||
- `matchMode` 默认值为 `ANY`
|
||||
|
||||
- [ ] **Step 4: Run test to verify it passes**
|
||||
- [x] **Step 4: Run test to verify it passes**
|
||||
|
||||
Run:
|
||||
|
||||
@@ -254,7 +254,7 @@ Expected:
|
||||
|
||||
- `PASS`
|
||||
|
||||
- [ ] **Step 5: Commit**
|
||||
- [x] **Step 5: Commit**
|
||||
|
||||
```bash
|
||||
git add ccdi-project/src/main/java/com/ruoyi/ccdi/project/service/impl/CcdiProjectOverviewServiceImpl.java ccdi-project/src/test/java/com/ruoyi/ccdi/project/service/impl/CcdiProjectOverviewServiceImplTest.java
|
||||
@@ -268,7 +268,7 @@ git commit -m "完成结果总览模型区服务组装"
|
||||
- Create: `docs/tests/records/2026-03-20-results-overview-risk-model-linkage-backend-verification.md`
|
||||
- Create: `docs/reports/implementation/2026-03-20-results-overview-risk-model-linkage-backend-implementation.md`
|
||||
|
||||
- [ ] **Step 1: Run backend verification**
|
||||
- [x] **Step 1: Run backend verification**
|
||||
|
||||
Run:
|
||||
|
||||
@@ -280,7 +280,7 @@ Expected:
|
||||
|
||||
- `PASS`
|
||||
|
||||
- [ ] **Step 2: Write verification and implementation records**
|
||||
- [x] **Step 2: Write verification and implementation records**
|
||||
|
||||
记录:
|
||||
|
||||
@@ -289,7 +289,7 @@ Expected:
|
||||
- `ANY / ALL` 两种匹配方式
|
||||
- 验证命令与结论
|
||||
|
||||
- [ ] **Step 3: Commit**
|
||||
- [x] **Step 3: Commit**
|
||||
|
||||
```bash
|
||||
git add docs/plans/backend/2026-03-20-results-overview-risk-model-linkage-backend-implementation.md docs/tests/records/2026-03-20-results-overview-risk-model-linkage-backend-verification.md docs/reports/implementation/2026-03-20-results-overview-risk-model-linkage-backend-implementation.md
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
# 结果总览模型区联动筛选后端实施记录
|
||||
|
||||
## 本次改动
|
||||
|
||||
- 在 [`CcdiProjectOverviewController.java`](/Users/wkc/Desktop/ccdi/ccdi/ccdi-project/src/main/java/com/ruoyi/ccdi/project/controller/CcdiProjectOverviewController.java) 新增 `GET /ccdi/project/overview/risk-models/cards` 与 `GET /ccdi/project/overview/risk-models/people` 两个接口。
|
||||
- 在 [`ICcdiProjectOverviewService.java`](/Users/wkc/Desktop/ccdi/ccdi/ccdi-project/src/main/java/com/ruoyi/ccdi/project/service/ICcdiProjectOverviewService.java) 与 [`CcdiProjectOverviewServiceImpl.java`](/Users/wkc/Desktop/ccdi/ccdi/ccdi-project/src/main/java/com/ruoyi/ccdi/project/service/impl/CcdiProjectOverviewServiceImpl.java) 补齐模型卡片与模型人员分页服务。
|
||||
- 新增 [`CcdiProjectRiskModelPeopleQueryDTO.java`](/Users/wkc/Desktop/ccdi/ccdi/ccdi-project/src/main/java/com/ruoyi/ccdi/project/domain/dto/CcdiProjectRiskModelPeopleQueryDTO.java) 及一组风险模型区 VO,用于承载卡片、分页行和命中标签结构。
|
||||
- 在 [`CcdiProjectOverviewMapper.java`](/Users/wkc/Desktop/ccdi/ccdi/ccdi-project/src/main/java/com/ruoyi/ccdi/project/mapper/CcdiProjectOverviewMapper.java) 与 [`CcdiProjectOverviewMapper.xml`](/Users/wkc/Desktop/ccdi/ccdi/ccdi-project/src/main/resources/mapper/ccdi/project/CcdiProjectOverviewMapper.xml) 新增模型卡片统计与模型人员分页 SQL。
|
||||
- 新增或扩展 [`CcdiProjectOverviewControllerContractTest.java`](/Users/wkc/Desktop/ccdi/ccdi/ccdi-project/src/test/java/com/ruoyi/ccdi/project/controller/CcdiProjectOverviewControllerContractTest.java)、[`CcdiProjectOverviewMapperRiskModelCardsTest.java`](/Users/wkc/Desktop/ccdi/ccdi/ccdi-project/src/test/java/com/ruoyi/ccdi/project/mapper/CcdiProjectOverviewMapperRiskModelCardsTest.java)、[`CcdiProjectOverviewMapperRiskModelPeopleTest.java`](/Users/wkc/Desktop/ccdi/ccdi/ccdi-project/src/test/java/com/ruoyi/ccdi/project/mapper/CcdiProjectOverviewMapperRiskModelPeopleTest.java)、[`CcdiProjectOverviewServiceImplTest.java`](/Users/wkc/Desktop/ccdi/ccdi/ccdi-project/src/test/java/com/ruoyi/ccdi/project/service/impl/CcdiProjectOverviewServiceImplTest.java) 以覆盖契约、SQL 和服务封装。
|
||||
|
||||
## 处理说明
|
||||
|
||||
- 继续复用现有 `CcdiProjectOverviewController + Service + Mapper` 结果总览链路,没有新增平行模块或补丁式接口。
|
||||
- 模型卡片统计与人员分页统一建立在“员工本人 + 亲属归并到员工名下”的基础归并 SQL 上,确保与既有风险人员口径一致。
|
||||
- 人员分页中的员工工号使用 `ccdi_base_staff.staff_id` 作为真实字段来源,并在 SQL 中转换为字符后映射到 `staffCode`。
|
||||
- `ANY` 模式通过模型范围过滤直接返回并集结果;`ALL` 模式通过 `having count(distinct base.model_code) = #{query.modelCodes.size}` 约束交集结果。
|
||||
- `modelNames` 与 `hitTagList` 使用同上下文子查询回填,只返回当前筛选模型范围内的数据。
|
||||
- 服务层对 `matchMode` 缺省值统一收口为 `ANY`,并确保空列表返回空数组、分页行统一附加“查看详情”。
|
||||
|
||||
## 验证情况
|
||||
|
||||
- 已执行如下定向验证:
|
||||
|
||||
```bash
|
||||
mvn test -pl ccdi-project -Dtest=CcdiProjectOverviewControllerContractTest
|
||||
mvn test -pl ccdi-project -Dtest=CcdiProjectOverviewMapperRiskModelCardsTest
|
||||
mvn test -pl ccdi-project -Dtest=CcdiProjectOverviewMapperRiskModelPeopleTest
|
||||
mvn test -pl ccdi-project -Dtest=CcdiProjectOverviewServiceImplTest
|
||||
```
|
||||
|
||||
- 已执行结果总览相关总体验证:
|
||||
|
||||
```bash
|
||||
mvn test -pl ccdi-project '-Dtest=CcdiProjectOverview*'
|
||||
```
|
||||
|
||||
- 总体验证结果:22 个测试全部通过,0 failure,0 error。
|
||||
@@ -0,0 +1,37 @@
|
||||
# 结果总览模型区联动筛选后端验证记录
|
||||
|
||||
## 验证范围
|
||||
|
||||
- 风险模型卡片接口结构与卡片统计 SQL
|
||||
- 风险模型人员分页接口结构与分页 SQL
|
||||
- 多模型 `ANY / ALL` 匹配模式
|
||||
- 服务层卡片封装、分页封装与默认 `actionLabel`
|
||||
|
||||
## 验证命令
|
||||
|
||||
```bash
|
||||
mvn test -pl ccdi-project -Dtest=CcdiProjectOverviewControllerContractTest
|
||||
mvn test -pl ccdi-project -Dtest=CcdiProjectOverviewMapperRiskModelCardsTest
|
||||
mvn test -pl ccdi-project -Dtest=CcdiProjectOverviewMapperRiskModelPeopleTest
|
||||
mvn test -pl ccdi-project -Dtest=CcdiProjectOverviewServiceImplTest
|
||||
mvn test -pl ccdi-project '-Dtest=CcdiProjectOverview*'
|
||||
```
|
||||
|
||||
## 验证结果
|
||||
|
||||
- 2026-03-20 11:05 执行 `CcdiProjectOverviewControllerContractTest` 红灯验证,确认缺少 `getRiskModelCards` 方法和 `CcdiProjectRiskModelPeopleQueryDTO` 类型。
|
||||
- 2026-03-20 11:06 重新执行 `CcdiProjectOverviewControllerContractTest`,3 个测试全部通过。
|
||||
- 2026-03-20 11:07 执行 `CcdiProjectOverviewMapperRiskModelCardsTest` 红灯验证,确认缺少卡片 mapper 方法与统计 SQL。
|
||||
- 2026-03-20 11:08 重新执行 `CcdiProjectOverviewMapperRiskModelCardsTest`,2 个测试全部通过。
|
||||
- 2026-03-20 11:11 执行 `CcdiProjectOverviewMapperRiskModelPeopleTest` 红灯验证,确认缺少分页 mapper 方法与 `ANY / ALL` SQL 片段。
|
||||
- 2026-03-20 11:12 修正测试断言后重新执行 `CcdiProjectOverviewMapperRiskModelPeopleTest`,2 个测试全部通过。
|
||||
- 2026-03-20 11:14 执行 `CcdiProjectOverviewServiceImplTest` 红灯验证,确认服务层尚未完成项目校验、分页封装和默认 `ANY` 逻辑。
|
||||
- 2026-03-20 11:15 重新执行 `CcdiProjectOverviewServiceImplTest`,9 个测试全部通过。
|
||||
- 2026-03-20 11:16 执行结果总览相关总体验证命令 `mvn test -pl ccdi-project '-Dtest=CcdiProjectOverview*'`,共 22 个测试全部通过,0 failure,0 error。
|
||||
|
||||
## 结论
|
||||
|
||||
- 结果总览模型区后端已补齐两个新接口:模型卡片统计与模型命中人员分页。
|
||||
- 人员分页查询已覆盖多模型 `ANY / ALL`、姓名/工号关键字、部门筛选,以及筛选上下文内的 `modelNames`/`hitTagList` 聚合。
|
||||
- 服务层已统一完成项目存在性校验、空列表封装和“查看详情”动作文案赋值。
|
||||
- 本轮验证仅执行 Maven 单元测试,未启动额外前后端进程,因此无需执行进程清理。
|
||||
Reference in New Issue
Block a user