搭建结果总览详情服务骨架

This commit is contained in:
wkc
2026-03-25 15:07:43 +08:00
parent 8df9dbacd8
commit 717f836190
4 changed files with 194 additions and 3 deletions

View File

@@ -1,11 +1,14 @@
package com.ruoyi.ccdi.project.mapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.ccdi.project.domain.dto.CcdiProjectRiskModelPeopleQueryDTO;
import com.ruoyi.ccdi.project.domain.CcdiProject;
import com.ruoyi.ccdi.project.domain.dto.CcdiProjectRiskModelPeopleQueryDTO;
import com.ruoyi.ccdi.project.domain.vo.CcdiBankStatementListVO;
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectEmployeeRiskAggregateVO;
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectRiskModelCardVO;
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectPersonAnalysisBasicInfoVO;
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectPersonAnalysisObjectRecordVO;
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectRiskHitTagVO;
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectRiskModelCardVO;
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectRiskModelPeopleItemVO;
import java.util.List;
import java.util.Map;
@@ -76,6 +79,42 @@ public interface CcdiProjectOverviewMapper {
@Param("selectedModelCodes") String selectedModelCodes
);
/**
* 查询项目分析基础信息
*
* @param projectId 项目ID
* @param staffIdCard 员工身份证号
* @return 项目分析基础信息
*/
CcdiProjectPersonAnalysisBasicInfoVO selectPersonAnalysisBasicInfo(
@Param("projectId") Long projectId,
@Param("staffIdCard") String staffIdCard
);
/**
* 查询项目分析流水异常明细
*
* @param projectId 项目ID
* @param staffIdCard 员工身份证号
* @return 流水异常明细
*/
List<CcdiBankStatementListVO> selectPersonAnalysisStatementRows(
@Param("projectId") Long projectId,
@Param("staffIdCard") String staffIdCard
);
/**
* 查询项目分析对象型异常记录
*
* @param projectId 项目ID
* @param staffIdCard 员工身份证号
* @return 对象型异常记录
*/
List<CcdiProjectPersonAnalysisObjectRecordVO> selectPersonAnalysisObjectRows(
@Param("projectId") Long projectId,
@Param("staffIdCard") String staffIdCard
);
/**
* 查询项目风险人数汇总
*

View File

@@ -5,7 +5,12 @@ import com.ruoyi.ccdi.project.domain.CcdiProject;
import com.ruoyi.ccdi.project.domain.dto.CcdiProjectPersonAnalysisDetailQueryDTO;
import com.ruoyi.ccdi.project.domain.dto.CcdiProjectRiskModelPeopleQueryDTO;
import com.ruoyi.ccdi.project.domain.entity.CcdiProjectOverviewEmployeeResult;
import com.ruoyi.ccdi.project.domain.vo.CcdiBankStatementListVO;
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectPersonAnalysisDetailVO;
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectPersonAnalysisAbnormalDetailVO;
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectPersonAnalysisAbnormalGroupVO;
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectPersonAnalysisBasicInfoVO;
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectPersonAnalysisObjectRecordVO;
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectEmployeeRiskAggregateVO;
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectOverviewDashboardVO;
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectOverviewEmployeeHitRowVO;
@@ -23,6 +28,7 @@ import com.ruoyi.ccdi.project.mapper.CcdiProjectOverviewMapper;
import com.ruoyi.ccdi.project.service.ICcdiProjectOverviewService;
import com.ruoyi.common.exception.ServiceException;
import jakarta.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import org.springframework.stereotype.Service;
@@ -105,7 +111,24 @@ public class CcdiProjectOverviewServiceImpl implements ICcdiProjectOverviewServi
@Override
public CcdiProjectPersonAnalysisDetailVO getPersonAnalysisDetail(CcdiProjectPersonAnalysisDetailQueryDTO queryDTO) {
ensureProjectExists(queryDTO.getProjectId());
return new CcdiProjectPersonAnalysisDetailVO();
CcdiProjectPersonAnalysisBasicInfoVO basicInfo = overviewMapper.selectPersonAnalysisBasicInfo(
queryDTO.getProjectId(),
queryDTO.getStaffIdCard()
);
List<CcdiBankStatementListVO> statementRows = defaultList(overviewMapper.selectPersonAnalysisStatementRows(
queryDTO.getProjectId(),
queryDTO.getStaffIdCard()
));
List<CcdiProjectPersonAnalysisObjectRecordVO> objectRows = defaultList(overviewMapper.selectPersonAnalysisObjectRows(
queryDTO.getProjectId(),
queryDTO.getStaffIdCard()
));
CcdiProjectPersonAnalysisDetailVO detail = new CcdiProjectPersonAnalysisDetailVO();
detail.setBasicInfo(basicInfo == null ? new CcdiProjectPersonAnalysisBasicInfoVO() : basicInfo);
detail.setAbnormalDetail(buildAbnormalDetail(statementRows, objectRows));
return detail;
}
@Override
@@ -261,6 +284,36 @@ public class CcdiProjectOverviewServiceImpl implements ICcdiProjectOverviewServi
return value == null ? List.of() : value;
}
private CcdiProjectPersonAnalysisAbnormalDetailVO buildAbnormalDetail(
List<CcdiBankStatementListVO> statementRows,
List<CcdiProjectPersonAnalysisObjectRecordVO> objectRows
) {
List<CcdiProjectPersonAnalysisAbnormalGroupVO> groups = new ArrayList<>();
if (!statementRows.isEmpty()) {
groups.add(buildAbnormalGroup("BANK_STATEMENT", "流水异常明细", "BANK_STATEMENT", statementRows));
}
if (!objectRows.isEmpty()) {
groups.add(buildAbnormalGroup("RELATED_OBJECT", "异常对象摘要", "OBJECT", objectRows));
}
CcdiProjectPersonAnalysisAbnormalDetailVO abnormalDetail = new CcdiProjectPersonAnalysisAbnormalDetailVO();
abnormalDetail.setGroups(groups);
return abnormalDetail;
}
private CcdiProjectPersonAnalysisAbnormalGroupVO buildAbnormalGroup(
String groupCode,
String groupName,
String groupType,
List<?> records
) {
CcdiProjectPersonAnalysisAbnormalGroupVO group = new CcdiProjectPersonAnalysisAbnormalGroupVO();
group.setGroupCode(groupCode);
group.setGroupName(groupName);
group.setGroupType(groupType);
group.setRecords(records);
return group;
}
private CcdiProject getRequiredProject(Long projectId) {
CcdiProject project = projectMapper.selectById(projectId);
if (project == null) {