Files
ccdi/docs/reports/implementation/2026-03-20-results-overview-risk-model-linkage-backend-implementation.md

5.1 KiB
Raw Blame History

结果总览模型区联动筛选后端实施记录

本次改动

处理说明

  • 继续复用现有 CcdiProjectOverviewController + Service + Mapper 结果总览链路,没有新增平行模块或补丁式接口。
  • 模型卡片统计与人员分页统一建立在“员工本人 + 亲属归并到员工名下”的基础归并 SQL 上,确保与既有风险人员口径一致。
  • 人员分页中的员工工号使用 ccdi_base_staff.staff_id 作为真实字段来源,并在 SQL 中转换为字符后映射到 staffCode
  • ANY 模式通过模型范围过滤直接返回并集结果;ALL 模式通过 having count(distinct base.model_code) = #{query.modelCodes.size} 约束交集结果。
  • modelNameshitTagList 使用同上下文子查询回填,只返回当前筛选模型范围内的数据。
  • 风险模型人员分页复用公共归并 SQL 时,必须先把 query.projectId 绑定到顶层 projectId,否则 resolvedEmployeeRiskBaseSql 中的 #{projectId} 会在 MyBatis 分页查询阶段直接报绑定异常。
  • 风险模型名称子查询需要按 model_code 保序返回,但不能使用 distinct + order by 非 select 列 组合;这里改为 group by scoped.model_code, scoped.model_name 后再排序,以兼容当前 MySQL 配置。
  • 服务层对 matchMode 缺省值统一收口为 ANY,并确保空列表返回空数组、分页行统一附加“查看详情”。

验证情况

  • 已执行如下定向验证:
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*'
  • 总体验证结果22 个测试全部通过0 failure0 error。