接入结果总览员工结果同步重算

This commit is contained in:
wkc
2026-03-22 11:47:37 +08:00
parent 0a58ac3251
commit f539c4ba27
6 changed files with 97 additions and 5 deletions

View File

@@ -56,6 +56,14 @@ public interface ICcdiProjectOverviewService {
return new CcdiProjectRiskModelPeopleVO();
}
/**
* 重算结果总览员工结果并同步项目风险人数
*
* @param projectId 项目ID
* @param operator 操作人
*/
void refreshOverviewEmployeeResults(Long projectId, String operator);
/**
* 刷新项目风险人数
*

View File

@@ -129,7 +129,7 @@ public class CcdiBankTagServiceImpl implements ICcdiBankTagService {
resultMapper.insertBatch(allResults);
}
projectOverviewService.refreshProjectRiskCounts(projectId, operator);
projectOverviewService.refreshOverviewEmployeeResults(projectId, operator);
task.setStatus(STATUS_SUCCESS);
task.setSuccessRuleCount(rules.size());

View File

@@ -3,8 +3,10 @@ package com.ruoyi.ccdi.project.service.impl;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.ccdi.project.domain.CcdiProject;
import com.ruoyi.ccdi.project.domain.dto.CcdiProjectRiskModelPeopleQueryDTO;
import com.ruoyi.ccdi.project.domain.entity.CcdiProjectOverviewEmployeeResult;
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectEmployeeRiskAggregateVO;
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectOverviewDashboardVO;
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectOverviewEmployeeHitRowVO;
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectOverviewStatVO;
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectRiskModelCardsVO;
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectRiskModelPeopleItemVO;
@@ -14,6 +16,7 @@ import com.ruoyi.ccdi.project.domain.vo.CcdiProjectRiskPeopleOverviewVO;
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectTopRiskPeopleItemVO;
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectTopRiskPeopleVO;
import com.ruoyi.ccdi.project.mapper.CcdiProjectMapper;
import com.ruoyi.ccdi.project.mapper.CcdiProjectOverviewEmployeeResultMapper;
import com.ruoyi.ccdi.project.mapper.CcdiProjectOverviewMapper;
import com.ruoyi.ccdi.project.service.ICcdiProjectOverviewService;
import com.ruoyi.common.exception.ServiceException;
@@ -37,6 +40,12 @@ public class CcdiProjectOverviewServiceImpl implements ICcdiProjectOverviewServi
@Resource
private CcdiProjectMapper projectMapper;
@Resource
private CcdiProjectOverviewEmployeeResultMapper overviewEmployeeResultMapper;
@Resource
private CcdiProjectOverviewEmployeeResultBuilder overviewEmployeeResultBuilder;
@Override
public CcdiProjectOverviewDashboardVO getDashboard(Long projectId) {
CcdiProject project = overviewMapper.selectDashboardBaseByProjectId(projectId);
@@ -122,6 +131,29 @@ public class CcdiProjectOverviewServiceImpl implements ICcdiProjectOverviewServi
return people;
}
@Override
@Transactional(rollbackFor = Exception.class)
public void refreshOverviewEmployeeResults(Long projectId, String operator) {
getRequiredProject(projectId);
overviewEmployeeResultMapper.deleteByProjectId(projectId);
List<CcdiProjectOverviewEmployeeHitRowVO> hitRows =
overviewEmployeeResultMapper.selectEmployeeHitRowsByProjectId(projectId);
List<CcdiProjectOverviewEmployeeResult> results =
overviewEmployeeResultBuilder.build(projectId, hitRows, operator);
if (!results.isEmpty()) {
overviewEmployeeResultMapper.insertBatch(results);
}
projectMapper.updateRiskCountsByProjectId(
projectId,
countRiskLevel(results, "HIGH"),
countRiskLevel(results, "MEDIUM"),
countRiskLevel(results, "LOW"),
operator
);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void refreshProjectRiskCounts(Long projectId, String operator) {
@@ -196,6 +228,12 @@ public class CcdiProjectOverviewServiceImpl implements ICcdiProjectOverviewServi
throw new ServiceException("项目风险人数统计结果类型异常");
}
private Integer countRiskLevel(List<CcdiProjectOverviewEmployeeResult> results, String riskLevelCode) {
return Math.toIntExact(results.stream()
.filter(item -> riskLevelCode.equals(item.getRiskLevelCode()))
.count());
}
private Integer defaultZero(Integer value) {
return value == null ? 0 : value;
}