补充结果总览异常标签模型归属与联动着色
This commit is contained in:
@@ -8,6 +8,10 @@ import lombok.Data;
|
||||
@Data
|
||||
public class CcdiProjectRiskHitTagVO {
|
||||
|
||||
private String modelCode;
|
||||
|
||||
private String modelName;
|
||||
|
||||
private String ruleCode;
|
||||
|
||||
private String ruleName;
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.ruoyi.ccdi.project.domain.vo;
|
||||
|
||||
import java.util.List;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
@@ -24,5 +25,7 @@ public class CcdiProjectRiskPeopleOverviewItemVO {
|
||||
|
||||
private String riskPoint;
|
||||
|
||||
private List<CcdiProjectRiskHitTagVO> riskPointTagList;
|
||||
|
||||
private String actionLabel;
|
||||
}
|
||||
|
||||
@@ -5,6 +5,7 @@ import com.ruoyi.ccdi.project.domain.dto.CcdiProjectRiskModelPeopleQueryDTO;
|
||||
import com.ruoyi.ccdi.project.domain.CcdiProject;
|
||||
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectEmployeeRiskAggregateVO;
|
||||
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectRiskModelCardVO;
|
||||
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectRiskHitTagVO;
|
||||
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectRiskModelPeopleItemVO;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
@@ -61,6 +62,20 @@ public interface CcdiProjectOverviewMapper {
|
||||
@Param("query") CcdiProjectRiskModelPeopleQueryDTO query
|
||||
);
|
||||
|
||||
/**
|
||||
* 按员工范围查询命中标签
|
||||
*
|
||||
* @param projectId 项目ID
|
||||
* @param staffIdCard 员工身份证号
|
||||
* @param selectedModelCodes 已选模型编码CSV,可为空
|
||||
* @return 命中标签列表
|
||||
*/
|
||||
List<CcdiProjectRiskHitTagVO> selectRiskHitTagsByScope(
|
||||
@Param("projectId") Long projectId,
|
||||
@Param("staffIdCard") String staffIdCard,
|
||||
@Param("selectedModelCodes") String selectedModelCodes
|
||||
);
|
||||
|
||||
/**
|
||||
* 查询项目风险人数汇总
|
||||
*
|
||||
|
||||
@@ -78,7 +78,7 @@ public class CcdiProjectOverviewServiceImpl implements ICcdiProjectOverviewServi
|
||||
|
||||
List<CcdiProjectRiskPeopleOverviewItemVO> overviewList = overviewMapper.selectRiskPeopleOverviewByProjectId(projectId)
|
||||
.stream()
|
||||
.map(this::buildRiskPeopleItem)
|
||||
.map(aggregate -> buildRiskPeopleItem(projectId, aggregate))
|
||||
.toList();
|
||||
|
||||
CcdiProjectRiskPeopleOverviewVO overview = new CcdiProjectRiskPeopleOverviewVO();
|
||||
@@ -168,7 +168,7 @@ public class CcdiProjectOverviewServiceImpl implements ICcdiProjectOverviewServi
|
||||
);
|
||||
}
|
||||
|
||||
private CcdiProjectRiskPeopleOverviewItemVO buildRiskPeopleItem(CcdiProjectEmployeeRiskAggregateVO aggregate) {
|
||||
private CcdiProjectRiskPeopleOverviewItemVO buildRiskPeopleItem(Long projectId, CcdiProjectEmployeeRiskAggregateVO aggregate) {
|
||||
CcdiProjectRiskPeopleOverviewItemVO item = new CcdiProjectRiskPeopleOverviewItemVO();
|
||||
item.setName(aggregate.getStaffName());
|
||||
item.setIdNo(aggregate.getStaffIdCard());
|
||||
@@ -178,6 +178,9 @@ public class CcdiProjectOverviewServiceImpl implements ICcdiProjectOverviewServi
|
||||
item.setRiskLevelType(resolveRiskLevelType(aggregate.getRiskLevelCode()));
|
||||
item.setModelCount(defaultZero(aggregate.getModelCount()));
|
||||
item.setRiskPoint(aggregate.getRiskPoint());
|
||||
item.setRiskPointTagList(defaultList(
|
||||
overviewMapper.selectRiskHitTagsByScope(projectId, aggregate.getStaffIdCard(), null)
|
||||
));
|
||||
item.setActionLabel(ACTION_LABEL);
|
||||
return item;
|
||||
}
|
||||
|
||||
@@ -347,12 +347,6 @@
|
||||
) idx on idx.idx < json_length(result.model_hit_summary_json)
|
||||
where result.project_id = #{projectId}
|
||||
and result.staff_id_card = #{staffIdCard}
|
||||
<if test="selectedModelCodes != null and selectedModelCodes != ''">
|
||||
and find_in_set(
|
||||
json_unquote(json_extract(result.model_hit_summary_json, concat('$[', idx.idx, '].modelCode'))),
|
||||
#{selectedModelCodes}
|
||||
)
|
||||
</if>
|
||||
group by
|
||||
json_unquote(json_extract(result.model_hit_summary_json, concat('$[', idx.idx, '].modelCode'))),
|
||||
json_unquote(json_extract(result.model_hit_summary_json, concat('$[', idx.idx, '].modelName')))
|
||||
@@ -361,6 +355,8 @@
|
||||
|
||||
<select id="selectRiskHitTagsByScope" resultType="com.ruoyi.ccdi.project.domain.vo.CcdiProjectRiskHitTagVO">
|
||||
select
|
||||
json_unquote(json_extract(result.hit_rules_json, concat('$[', idx.idx, '].modelCode'))) as model_code,
|
||||
max(json_unquote(json_extract(result.hit_rules_json, concat('$[', idx.idx, '].modelName')))) as model_name,
|
||||
json_unquote(json_extract(result.hit_rules_json, concat('$[', idx.idx, '].ruleCode'))) as rule_code,
|
||||
max(json_unquote(json_extract(result.hit_rules_json, concat('$[', idx.idx, '].ruleName')))) as rule_name,
|
||||
max(json_unquote(json_extract(result.hit_rules_json, concat('$[', idx.idx, '].riskLevel')))) as risk_level
|
||||
@@ -370,18 +366,14 @@
|
||||
) idx on idx.idx < json_length(result.hit_rules_json)
|
||||
where result.project_id = #{projectId}
|
||||
and result.staff_id_card = #{staffIdCard}
|
||||
<if test="selectedModelCodes != null and selectedModelCodes != ''">
|
||||
and find_in_set(
|
||||
json_unquote(json_extract(result.hit_rules_json, concat('$[', idx.idx, '].modelCode'))),
|
||||
#{selectedModelCodes}
|
||||
)
|
||||
</if>
|
||||
group by json_unquote(json_extract(result.hit_rules_json, concat('$[', idx.idx, '].ruleCode')))
|
||||
group by json_unquote(json_extract(result.hit_rules_json, concat('$[', idx.idx, '].modelCode'))),
|
||||
json_unquote(json_extract(result.hit_rules_json, concat('$[', idx.idx, '].ruleCode')))
|
||||
order by case max(json_unquote(json_extract(result.hit_rules_json, concat('$[', idx.idx, '].riskLevel'))))
|
||||
when 'HIGH' then 1
|
||||
when 'MEDIUM' then 2
|
||||
else 3
|
||||
end,
|
||||
json_unquote(json_extract(result.hit_rules_json, concat('$[', idx.idx, '].modelCode'))) asc,
|
||||
json_unquote(json_extract(result.hit_rules_json, concat('$[', idx.idx, '].ruleCode'))) asc
|
||||
</select>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user