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 @@