From ef106169dc0a1b3376d3f86f318b21f1f524722f Mon Sep 17 00:00:00 2001
From: wkc <978997012@qq.com>
Date: Sun, 22 Mar 2026 11:52:09 +0800
Subject: [PATCH] =?UTF-8?q?=E5=88=87=E6=8D=A2=E7=BB=93=E6=9E=9C=E6=80=BB?=
=?UTF-8?q?=E8=A7=88=E6=9F=A5=E8=AF=A2=E5=88=B0=E5=91=98=E5=B7=A5=E7=BB=93?=
=?UTF-8?q?=E6=9E=9C=E8=A1=A8?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
...iProjectOverviewEmployeeRuleSummaryVO.java | 2 +
...iProjectOverviewEmployeeResultBuilder.java | 1 +
.../project/CcdiProjectOverviewMapper.xml | 197 +++++++++++++-----
...ojectOverviewMapperRiskModelCardsTest.java | 9 +-
...jectOverviewMapperRiskModelPeopleTest.java | 21 +-
.../CcdiProjectOverviewMapperSqlTest.java | 41 +++-
6 files changed, 192 insertions(+), 79 deletions(-)
diff --git a/ccdi-project/src/main/java/com/ruoyi/ccdi/project/domain/vo/CcdiProjectOverviewEmployeeRuleSummaryVO.java b/ccdi-project/src/main/java/com/ruoyi/ccdi/project/domain/vo/CcdiProjectOverviewEmployeeRuleSummaryVO.java
index a7e00bd6..76553653 100644
--- a/ccdi-project/src/main/java/com/ruoyi/ccdi/project/domain/vo/CcdiProjectOverviewEmployeeRuleSummaryVO.java
+++ b/ccdi-project/src/main/java/com/ruoyi/ccdi/project/domain/vo/CcdiProjectOverviewEmployeeRuleSummaryVO.java
@@ -8,6 +8,8 @@ import lombok.Data;
@Data
public class CcdiProjectOverviewEmployeeRuleSummaryVO {
+ private String modelCode;
+
private String ruleCode;
private String ruleName;
diff --git a/ccdi-project/src/main/java/com/ruoyi/ccdi/project/service/impl/CcdiProjectOverviewEmployeeResultBuilder.java b/ccdi-project/src/main/java/com/ruoyi/ccdi/project/service/impl/CcdiProjectOverviewEmployeeResultBuilder.java
index a63dc75d..9794f0e8 100644
--- a/ccdi-project/src/main/java/com/ruoyi/ccdi/project/service/impl/CcdiProjectOverviewEmployeeResultBuilder.java
+++ b/ccdi-project/src/main/java/com/ruoyi/ccdi/project/service/impl/CcdiProjectOverviewEmployeeResultBuilder.java
@@ -103,6 +103,7 @@ public class CcdiProjectOverviewEmployeeResultBuilder {
.map(rows -> {
CcdiProjectOverviewEmployeeRuleSummaryVO summary = new CcdiProjectOverviewEmployeeRuleSummaryVO();
CcdiProjectOverviewEmployeeHitRowVO first = rows.getFirst();
+ summary.setModelCode(first.getModelCode());
summary.setRuleCode(first.getRuleCode());
summary.setRuleName(first.getRuleName());
summary.setRiskLevel(first.getRiskLevel());
diff --git a/ccdi-project/src/main/resources/mapper/ccdi/project/CcdiProjectOverviewMapper.xml b/ccdi-project/src/main/resources/mapper/ccdi/project/CcdiProjectOverviewMapper.xml
index 57eed98b..57b631ee 100644
--- a/ccdi-project/src/main/resources/mapper/ccdi/project/CcdiProjectOverviewMapper.xml
+++ b/ccdi-project/src/main/resources/mapper/ccdi/project/CcdiProjectOverviewMapper.xml
@@ -33,6 +33,29 @@
select="selectRiskHitTagsByScope"/>
+
+ select 0 as digit
+ union all select 1
+ union all select 2
+ union all select 3
+ union all select 4
+ union all select 5
+ union all select 6
+ union all select 7
+ union all select 8
+ union all select 9
+
+
+
+ select ones.digit + tens.digit * 10 as idx
+ from (
+
+ ) ones
+ cross join (
+
+ ) tens
+
+
select distinct
tr.id,
@@ -186,14 +209,60 @@
@@ -213,13 +282,18 @@
) models
left join (
select
- base.model_code,
- count(1) as warning_count,
- count(distinct base.staff_id_card) as people_count
- from (
-
- ) base
- group by base.model_code
+ json_unquote(json_extract(result.model_hit_summary_json, concat('$[', idx.idx, '].modelCode'))) as model_code,
+ sum(cast(json_unquote(json_extract(
+ result.model_hit_summary_json,
+ concat('$[', idx.idx, '].warningCount')
+ )) as unsigned)) as warning_count,
+ count(distinct result.staff_id_card) as people_count
+ from ccdi_project_overview_employee_result result
+ join (
+
+ ) idx on idx.idx < json_length(result.model_hit_summary_json)
+ where result.project_id = #{projectId}
+ group by json_unquote(json_extract(result.model_hit_summary_json, concat('$[', idx.idx, '].modelCode')))
) stats on models.model_code = stats.model_code
order by warning_count desc, model_code asc
@@ -227,73 +301,88 @@