# 项目详情风险总览员工列表分页后端实施记录

## 1. 实施概述

- 实施日期：2026-03-29
- 实施范围：项目详情“风险总览”员工列表后端分页接口、分页 SQL、服务映射与测试回归
- 实施结果：后端代码改造完成，定向回归通过

本次实施按设计文档完成以下内容：

- 新增 `CcdiProjectRiskPeopleQueryDTO`，统一承接 `projectId/pageNum/pageSize`
- 将 `GET /ccdi/project/overview/risk-people` 改为标准分页返回结构
- 将风险人员查询从全量列表改为 MyBatis Plus `Page` 真分页
- 为 `risk-people` 单独固定默认分页 `1/5`

## 2. 实际修改文件

### 2.1 后端代码

- `ccdi-project/src/main/java/com/ruoyi/ccdi/project/domain/dto/CcdiProjectRiskPeopleQueryDTO.java`
- `ccdi-project/src/main/java/com/ruoyi/ccdi/project/domain/vo/CcdiProjectRiskPeopleOverviewVO.java`
- `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/service/impl/CcdiProjectOverviewServiceImpl.java`
- `ccdi-project/src/main/java/com/ruoyi/ccdi/project/mapper/CcdiProjectOverviewMapper.java`
- `ccdi-project/src/main/resources/mapper/ccdi/project/CcdiProjectOverviewMapper.xml`

### 2.2 测试代码

- `ccdi-project/src/test/java/com/ruoyi/ccdi/project/service/CcdiProjectOverviewServiceStructureTest.java`
- `ccdi-project/src/test/java/com/ruoyi/ccdi/project/controller/CcdiProjectOverviewControllerTest.java`
- `ccdi-project/src/test/java/com/ruoyi/ccdi/project/mapper/CcdiProjectOverviewMapperSqlTest.java`
- `ccdi-project/src/test/java/com/ruoyi/ccdi/project/service/impl/CcdiProjectOverviewServiceImplTest.java`

## 3. 关键实施说明

### 3.1 接口契约调整

- 控制器 `getRiskPeople` 从接收单个 `projectId` 改为接收 `CcdiProjectRiskPeopleQueryDTO`
- 服务接口同步改为 `getRiskPeopleOverview(CcdiProjectRiskPeopleQueryDTO queryDTO)`
- 风险人员返回结构从 `overviewList` 迁移为：
  - `rows`
  - `total`
  - `pageNum`
  - `pageSize`

### 3.2 分页实现

- Mapper 新增 `selectRiskPeopleOverviewPage(Page<CcdiProjectEmployeeRiskAggregateVO> page, @Param("query") CcdiProjectRiskPeopleQueryDTO query)`
- SQL 数据源保持 `ccdi_project_overview_employee_result` 不变
- SQL 排序规则保持：
  - `risk_level_sort asc`
  - `result.model_count desc`
  - `result.rule_count desc`
  - `result.staff_id_card asc`
- 本次未新增补丁接口，也未调整风险口径与标签组装逻辑

### 3.3 默认值策略

- `risk-people` 未复用其他列表的 `pageSize = 10`
- 在 `CcdiProjectOverviewServiceImpl` 中单独补充：
  - `defaultRiskPeoplePageNum`
  - `defaultRiskPeoplePageSize`
- 缺省与非法值统一回落为 `1/5`

## 4. 测试与验证

执行命令：

```bash
mvn -pl ccdi-project -am -Dtest=CcdiProjectOverviewServiceStructureTest,CcdiProjectOverviewControllerTest,CcdiProjectOverviewMapperSqlTest,CcdiProjectOverviewServiceImplTest -Dsurefire.failIfNoSpecifiedTests=false test
```

验证结果：

- `CcdiProjectOverviewServiceStructureTest` 通过
- `CcdiProjectOverviewControllerTest` 通过
- `CcdiProjectOverviewMapperSqlTest` 通过
- `CcdiProjectOverviewServiceImplTest` 通过
- 共 25 个测试通过，无 failure 或 error

## 5. 实施结论

- 项目详情“风险总览”员工列表后端已完成真实分页化改造。
- 接口输出已从旧 `overviewList` 收口到标准分页结构 `rows + total + pageNum + pageSize`。
- 排序规则保持不变，本次未新增任何兼容性补丁接口。
