实现风险明细员工负面征信功能

This commit is contained in:
wkc
2026-03-28 16:13:24 +08:00
parent 559572da8c
commit 2cb4481c3b
23 changed files with 672 additions and 5 deletions

View File

@@ -1,9 +1,11 @@
package com.ruoyi.ccdi.project.controller;
import com.ruoyi.ccdi.project.domain.dto.CcdiProjectEmployeeCreditNegativeQueryDTO;
import com.ruoyi.ccdi.project.domain.dto.CcdiProjectPersonAnalysisDetailQueryDTO;
import com.ruoyi.ccdi.project.domain.dto.CcdiProjectRiskModelPeopleQueryDTO;
import com.ruoyi.ccdi.project.domain.dto.CcdiProjectSuspiciousTransactionQueryDTO;
import com.ruoyi.ccdi.project.domain.excel.CcdiProjectSuspiciousTransactionExcel;
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectEmployeeCreditNegativePageVO;
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectPersonAnalysisDetailVO;
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectOverviewDashboardVO;
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectRiskModelCardsVO;
@@ -115,6 +117,17 @@ public class CcdiProjectOverviewController extends BaseController {
return AjaxResult.success(pageVO);
}
/**
* 查询项目员工负面征信
*/
@GetMapping("/employee-credit-negative")
@Operation(summary = "查询项目员工负面征信")
@PreAuthorize("@ss.hasPermi('ccdi:project:query')")
public AjaxResult getEmployeeCreditNegative(CcdiProjectEmployeeCreditNegativeQueryDTO queryDTO) {
CcdiProjectEmployeeCreditNegativePageVO pageVO = overviewService.getEmployeeCreditNegative(queryDTO);
return AjaxResult.success(pageVO);
}
/**
* 导出涉疑交易明细
*/

View File

@@ -0,0 +1,16 @@
package com.ruoyi.ccdi.project.domain.dto;
import lombok.Data;
/**
* 项目员工负面征信查询 DTO
*/
@Data
public class CcdiProjectEmployeeCreditNegativeQueryDTO {
private Long projectId;
private Integer pageNum;
private Integer pageSize;
}

View File

@@ -0,0 +1,29 @@
package com.ruoyi.ccdi.project.domain.vo;
import java.math.BigDecimal;
import lombok.Data;
/**
* 项目员工负面征信行
*/
@Data
public class CcdiProjectEmployeeCreditNegativeItemVO {
private String personName;
private String personId;
private String queryDate;
private Integer civilCnt;
private BigDecimal civilLmt;
private Integer enforceCnt;
private BigDecimal enforceLmt;
private Integer admCnt;
private BigDecimal admLmt;
}

View File

@@ -0,0 +1,16 @@
package com.ruoyi.ccdi.project.domain.vo;
import java.util.ArrayList;
import java.util.List;
import lombok.Data;
/**
* 项目员工负面征信分页结果
*/
@Data
public class CcdiProjectEmployeeCreditNegativePageVO {
private List<CcdiProjectEmployeeCreditNegativeItemVO> rows = new ArrayList<>();
private Long total = 0L;
}

View File

@@ -2,9 +2,11 @@ package com.ruoyi.ccdi.project.mapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.ccdi.project.domain.CcdiProject;
import com.ruoyi.ccdi.project.domain.dto.CcdiProjectEmployeeCreditNegativeQueryDTO;
import com.ruoyi.ccdi.project.domain.dto.CcdiProjectRiskModelPeopleQueryDTO;
import com.ruoyi.ccdi.project.domain.dto.CcdiProjectSuspiciousTransactionQueryDTO;
import com.ruoyi.ccdi.project.domain.vo.CcdiBankStatementListVO;
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectEmployeeCreditNegativeItemVO;
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectEmployeeRiskAggregateVO;
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectPersonAnalysisBasicInfoVO;
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectPersonAnalysisObjectRecordVO;
@@ -79,6 +81,18 @@ public interface CcdiProjectOverviewMapper {
@Param("query") CcdiProjectSuspiciousTransactionQueryDTO query
);
/**
* 分页查询项目员工负面征信
*
* @param page 分页参数
* @param query 查询条件
* @return 分页结果
*/
Page<CcdiProjectEmployeeCreditNegativeItemVO> selectEmployeeCreditNegativePage(
Page<CcdiProjectEmployeeCreditNegativeItemVO> page,
@Param("query") CcdiProjectEmployeeCreditNegativeQueryDTO query
);
/**
* 查询涉疑交易导出列表
*

View File

@@ -1,9 +1,11 @@
package com.ruoyi.ccdi.project.service;
import com.ruoyi.ccdi.project.domain.dto.CcdiProjectEmployeeCreditNegativeQueryDTO;
import com.ruoyi.ccdi.project.domain.dto.CcdiProjectPersonAnalysisDetailQueryDTO;
import com.ruoyi.ccdi.project.domain.dto.CcdiProjectRiskModelPeopleQueryDTO;
import com.ruoyi.ccdi.project.domain.dto.CcdiProjectSuspiciousTransactionQueryDTO;
import com.ruoyi.ccdi.project.domain.excel.CcdiProjectSuspiciousTransactionExcel;
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectEmployeeCreditNegativePageVO;
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectPersonAnalysisDetailVO;
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectOverviewDashboardVO;
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectRiskModelCardsVO;
@@ -97,6 +99,18 @@ public interface ICcdiProjectOverviewService {
return List.of();
}
/**
* 查询项目员工负面征信
*
* @param queryDTO 查询条件
* @return 分页结果
*/
default CcdiProjectEmployeeCreditNegativePageVO getEmployeeCreditNegative(
CcdiProjectEmployeeCreditNegativeQueryDTO queryDTO
) {
return new CcdiProjectEmployeeCreditNegativePageVO();
}
/**
* 重算结果总览员工结果并同步项目风险人数
*

View File

@@ -2,6 +2,7 @@ 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.CcdiProjectEmployeeCreditNegativeQueryDTO;
import com.ruoyi.ccdi.project.domain.dto.CcdiProjectPersonAnalysisDetailQueryDTO;
import com.ruoyi.ccdi.project.domain.dto.CcdiProjectRiskModelPeopleQueryDTO;
import com.ruoyi.ccdi.project.domain.dto.CcdiProjectSuspiciousTransactionQueryDTO;
@@ -9,6 +10,8 @@ import com.ruoyi.ccdi.project.domain.excel.CcdiProjectSuspiciousTransactionExcel
import com.ruoyi.ccdi.project.domain.entity.CcdiProjectOverviewEmployeeResult;
import com.ruoyi.ccdi.project.domain.vo.CcdiBankStatementListVO;
import com.ruoyi.ccdi.project.domain.vo.CcdiBankStatementHitTagVO;
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectEmployeeCreditNegativeItemVO;
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectEmployeeCreditNegativePageVO;
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectPersonAnalysisDetailVO;
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectPersonAnalysisAbnormalDetailVO;
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectPersonAnalysisAbnormalGroupVO;
@@ -208,6 +211,25 @@ public class CcdiProjectOverviewServiceImpl implements ICcdiProjectOverviewServi
.toList();
}
@Override
public CcdiProjectEmployeeCreditNegativePageVO getEmployeeCreditNegative(
CcdiProjectEmployeeCreditNegativeQueryDTO queryDTO
) {
ensureProjectExists(queryDTO.getProjectId());
Page<CcdiProjectEmployeeCreditNegativeItemVO> page = new Page<>(
defaultPageNum(queryDTO.getPageNum()),
defaultPageSize(queryDTO.getPageSize())
);
Page<CcdiProjectEmployeeCreditNegativeItemVO> resultPage =
overviewMapper.selectEmployeeCreditNegativePage(page, queryDTO);
CcdiProjectEmployeeCreditNegativePageVO result = new CcdiProjectEmployeeCreditNegativePageVO();
result.setRows(defaultList(resultPage == null ? null : resultPage.getRecords()));
result.setTotal(resultPage == null ? 0L : resultPage.getTotal());
return result;
}
@Override
@Transactional(rollbackFor = Exception.class)
public void refreshOverviewEmployeeResults(Long projectId, String operator) {

View File

@@ -590,6 +590,25 @@
order by final_result.trxDate desc, final_result.bankStatementId desc
</select>
<select id="selectEmployeeCreditNegativePage"
resultType="com.ruoyi.ccdi.project.domain.vo.CcdiProjectEmployeeCreditNegativeItemVO">
select
coalesce(neg.person_name, result.staff_name) as personName,
neg.person_id as personId,
date_format(neg.query_date, '%Y-%m-%d') as queryDate,
ifnull(neg.civil_cnt, 0) as civilCnt,
ifnull(neg.civil_lmt, 0) as civilLmt,
ifnull(neg.enforce_cnt, 0) as enforceCnt,
ifnull(neg.enforce_lmt, 0) as enforceLmt,
ifnull(neg.adm_cnt, 0) as admCnt,
ifnull(neg.adm_lmt, 0) as admLmt
from ccdi_project_overview_employee_result result
inner join ccdi_credit_negative_info neg
on neg.person_id = result.staff_id_card
where result.project_id = #{query.projectId}
order by neg.query_date desc, neg.person_id asc
</select>
<select id="selectRiskModelNamesByScope" resultType="java.lang.String">
select
json_unquote(json_extract(result.model_hit_summary_json, concat('$[', idx.idx, '].modelName'))) as model_name