实现风险明细员工负面征信功能
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出涉疑交易明细
|
||||
*/
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
@@ -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
|
||||
);
|
||||
|
||||
/**
|
||||
* 查询涉疑交易导出列表
|
||||
*
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
/**
|
||||
* 重算结果总览员工结果并同步项目风险人数
|
||||
*
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -110,6 +110,22 @@ class CcdiProjectOverviewControllerContractTest {
|
||||
assertEquals(AjaxResult.class, method.getReturnType());
|
||||
}
|
||||
|
||||
@Test
|
||||
void shouldExposeEmployeeCreditNegativeEndpointContract() throws Exception {
|
||||
Class<?> controllerClass = Class.forName("com.ruoyi.ccdi.project.controller.CcdiProjectOverviewController");
|
||||
Class<?> queryDtoClass =
|
||||
Class.forName("com.ruoyi.ccdi.project.domain.dto.CcdiProjectEmployeeCreditNegativeQueryDTO");
|
||||
Method method = controllerClass.getMethod("getEmployeeCreditNegative", queryDtoClass);
|
||||
GetMapping getMapping = method.getAnnotation(GetMapping.class);
|
||||
Operation operation = method.getAnnotation(Operation.class);
|
||||
|
||||
assertNotNull(getMapping);
|
||||
assertEquals("/employee-credit-negative", getMapping.value()[0]);
|
||||
assertNotNull(operation);
|
||||
assertEquals(queryDtoClass, method.getParameterTypes()[0]);
|
||||
assertEquals(AjaxResult.class, method.getReturnType());
|
||||
}
|
||||
|
||||
@Test
|
||||
void shouldExposeSuspiciousTransactionsExportEndpointContract() throws Exception {
|
||||
Class<?> controllerClass = Class.forName("com.ruoyi.ccdi.project.controller.CcdiProjectOverviewController");
|
||||
@@ -138,4 +154,15 @@ class CcdiProjectOverviewControllerContractTest {
|
||||
|
||||
assertEquals(List.of("projectId", "suspiciousType", "pageNum", "pageSize"), fieldNames);
|
||||
}
|
||||
|
||||
@Test
|
||||
void shouldExposeEmployeeCreditNegativeQueryDtoFields() throws Exception {
|
||||
Class<?> dtoClass = Class.forName("com.ruoyi.ccdi.project.domain.dto.CcdiProjectEmployeeCreditNegativeQueryDTO");
|
||||
|
||||
List<String> fieldNames = Arrays.stream(dtoClass.getDeclaredFields())
|
||||
.map(Field::getName)
|
||||
.collect(Collectors.toList());
|
||||
|
||||
assertEquals(List.of("projectId", "pageNum", "pageSize"), fieldNames);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,10 @@
|
||||
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.CcdiProjectSuspiciousTransactionQueryDTO;
|
||||
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectEmployeeCreditNegativeItemVO;
|
||||
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectEmployeeCreditNegativePageVO;
|
||||
import com.ruoyi.ccdi.project.domain.excel.CcdiProjectSuspiciousTransactionExcel;
|
||||
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectOverviewDashboardVO;
|
||||
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectPersonAnalysisBasicInfoVO;
|
||||
@@ -15,6 +18,7 @@ import com.ruoyi.ccdi.project.service.ICcdiProjectOverviewService;
|
||||
import com.ruoyi.common.core.domain.AjaxResult;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import java.lang.reflect.Method;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.List;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.api.extension.ExtendWith;
|
||||
@@ -187,6 +191,45 @@ class CcdiProjectOverviewControllerTest {
|
||||
assertEquals("@ss.hasPermi('ccdi:project:query')", preAuthorize.value());
|
||||
}
|
||||
|
||||
@Test
|
||||
void shouldExposeEmployeeCreditNegativeEndpoint() throws Exception {
|
||||
CcdiProjectEmployeeCreditNegativeQueryDTO queryDTO = new CcdiProjectEmployeeCreditNegativeQueryDTO();
|
||||
queryDTO.setProjectId(40L);
|
||||
queryDTO.setPageNum(1);
|
||||
queryDTO.setPageSize(5);
|
||||
|
||||
CcdiProjectEmployeeCreditNegativeItemVO item = new CcdiProjectEmployeeCreditNegativeItemVO();
|
||||
item.setPersonName("李四");
|
||||
item.setPersonId("330000000000000001");
|
||||
item.setCivilCnt(1);
|
||||
item.setCivilLmt(new BigDecimal("10000.00"));
|
||||
|
||||
CcdiProjectEmployeeCreditNegativePageVO pageVO = new CcdiProjectEmployeeCreditNegativePageVO();
|
||||
pageVO.setRows(List.of(item));
|
||||
pageVO.setTotal(1L);
|
||||
when(overviewService.getEmployeeCreditNegative(queryDTO)).thenReturn(pageVO);
|
||||
|
||||
AjaxResult result = controller.getEmployeeCreditNegative(queryDTO);
|
||||
|
||||
assertEquals(200, result.get("code"));
|
||||
assertEquals(pageVO, result.get("data"));
|
||||
verify(overviewService).getEmployeeCreditNegative(queryDTO);
|
||||
|
||||
Method method = CcdiProjectOverviewController.class.getMethod(
|
||||
"getEmployeeCreditNegative",
|
||||
CcdiProjectEmployeeCreditNegativeQueryDTO.class
|
||||
);
|
||||
GetMapping getMapping = method.getAnnotation(GetMapping.class);
|
||||
PreAuthorize preAuthorize = method.getAnnotation(PreAuthorize.class);
|
||||
Operation operation = method.getAnnotation(Operation.class);
|
||||
|
||||
assertNotNull(getMapping);
|
||||
assertEquals("/employee-credit-negative", getMapping.value()[0]);
|
||||
assertNotNull(preAuthorize);
|
||||
assertEquals("@ss.hasPermi('ccdi:project:query')", preAuthorize.value());
|
||||
assertNotNull(operation);
|
||||
}
|
||||
|
||||
@Test
|
||||
void shouldExposeSuspiciousTransactionsExportEndpoint() throws Exception {
|
||||
MockHttpServletResponse response = new MockHttpServletResponse();
|
||||
|
||||
@@ -84,6 +84,18 @@ class CcdiProjectOverviewMapperSqlTest {
|
||||
assertTrue(suspiciousSql.contains("hasNameListHit"), suspiciousSql);
|
||||
}
|
||||
|
||||
@Test
|
||||
void shouldExposeEmployeeCreditNegativeQuery() throws Exception {
|
||||
String xml = Files.readString(Path.of("src/main/resources/mapper/ccdi/project/CcdiProjectOverviewMapper.xml"));
|
||||
String employeeCreditSql = extractSelect(xml, "selectEmployeeCreditNegativePage");
|
||||
|
||||
assertTrue(employeeCreditSql.contains("from ccdi_project_overview_employee_result"), employeeCreditSql);
|
||||
assertTrue(employeeCreditSql.contains("inner join ccdi_credit_negative_info"), employeeCreditSql);
|
||||
assertTrue(employeeCreditSql.contains("result.project_id = #{query.projectId}"), employeeCreditSql);
|
||||
assertTrue(employeeCreditSql.contains("order by neg.query_date desc, neg.person_id asc"), employeeCreditSql);
|
||||
assertFalse(employeeCreditSql.contains("ccdi_debts_info"), employeeCreditSql);
|
||||
}
|
||||
|
||||
private String extractSelect(String xml, String selectId) {
|
||||
String start = "<select id=\"" + selectId + "\"";
|
||||
int startIndex = xml.indexOf(start);
|
||||
|
||||
@@ -21,6 +21,10 @@ class CcdiProjectOverviewServiceStructureTest {
|
||||
"getSuspiciousTransactions",
|
||||
Class.forName("com.ruoyi.ccdi.project.domain.dto.CcdiProjectSuspiciousTransactionQueryDTO")
|
||||
));
|
||||
assertNotNull(clazz.getMethod(
|
||||
"getEmployeeCreditNegative",
|
||||
Class.forName("com.ruoyi.ccdi.project.domain.dto.CcdiProjectEmployeeCreditNegativeQueryDTO")
|
||||
));
|
||||
assertNotNull(clazz.getMethod(
|
||||
"exportSuspiciousTransactions",
|
||||
Class.forName("com.ruoyi.ccdi.project.domain.dto.CcdiProjectSuspiciousTransactionQueryDTO")
|
||||
|
||||
@@ -0,0 +1,93 @@
|
||||
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.vo.CcdiProjectEmployeeCreditNegativeItemVO;
|
||||
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectEmployeeCreditNegativePageVO;
|
||||
import com.ruoyi.ccdi.project.mapper.CcdiBankTagResultMapper;
|
||||
import com.ruoyi.ccdi.project.mapper.CcdiProjectMapper;
|
||||
import com.ruoyi.ccdi.project.mapper.CcdiProjectOverviewEmployeeResultMapper;
|
||||
import com.ruoyi.ccdi.project.mapper.CcdiProjectOverviewMapper;
|
||||
import com.ruoyi.common.exception.ServiceException;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.List;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.api.extension.ExtendWith;
|
||||
import org.mockito.InjectMocks;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.junit.jupiter.MockitoExtension;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
import static org.junit.jupiter.api.Assertions.assertThrows;
|
||||
import static org.mockito.ArgumentMatchers.any;
|
||||
import static org.mockito.ArgumentMatchers.argThat;
|
||||
import static org.mockito.Mockito.verify;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
@ExtendWith(MockitoExtension.class)
|
||||
class CcdiProjectOverviewServiceEmployeeCreditNegativeTest {
|
||||
|
||||
@InjectMocks
|
||||
private CcdiProjectOverviewServiceImpl service;
|
||||
|
||||
@Mock
|
||||
private CcdiProjectOverviewMapper overviewMapper;
|
||||
|
||||
@Mock
|
||||
private CcdiProjectMapper projectMapper;
|
||||
|
||||
@Mock
|
||||
private CcdiProjectOverviewEmployeeResultMapper overviewEmployeeResultMapper;
|
||||
|
||||
@Mock
|
||||
private CcdiBankTagResultMapper bankTagResultMapper;
|
||||
|
||||
@Mock
|
||||
private CcdiProjectOverviewEmployeeResultBuilder overviewEmployeeResultBuilder;
|
||||
|
||||
@Test
|
||||
void shouldReturnEmployeeCreditNegativePage() {
|
||||
CcdiProject project = new CcdiProject();
|
||||
project.setProjectId(40L);
|
||||
when(projectMapper.selectById(40L)).thenReturn(project);
|
||||
|
||||
CcdiProjectEmployeeCreditNegativeItemVO item = new CcdiProjectEmployeeCreditNegativeItemVO();
|
||||
item.setPersonName("李四");
|
||||
item.setPersonId("330000000000000001");
|
||||
item.setQueryDate("2026-03-20");
|
||||
item.setCivilCnt(1);
|
||||
item.setCivilLmt(new BigDecimal("10000.00"));
|
||||
|
||||
Page<CcdiProjectEmployeeCreditNegativeItemVO> page = new Page<>(1, 5);
|
||||
page.setRecords(List.of(item));
|
||||
page.setTotal(1L);
|
||||
when(overviewMapper.selectEmployeeCreditNegativePage(any(Page.class), any(CcdiProjectEmployeeCreditNegativeQueryDTO.class)))
|
||||
.thenReturn(page);
|
||||
|
||||
CcdiProjectEmployeeCreditNegativeQueryDTO queryDTO = new CcdiProjectEmployeeCreditNegativeQueryDTO();
|
||||
queryDTO.setProjectId(40L);
|
||||
queryDTO.setPageNum(1);
|
||||
queryDTO.setPageSize(5);
|
||||
|
||||
CcdiProjectEmployeeCreditNegativePageVO result = service.getEmployeeCreditNegative(queryDTO);
|
||||
|
||||
assertEquals(1, result.getRows().size());
|
||||
assertEquals(1L, result.getTotal());
|
||||
assertEquals("李四", result.getRows().getFirst().getPersonName());
|
||||
verify(overviewMapper).selectEmployeeCreditNegativePage(
|
||||
any(Page.class),
|
||||
argThat(query -> query.getProjectId().equals(40L))
|
||||
);
|
||||
}
|
||||
|
||||
@Test
|
||||
void shouldThrowWhenEmployeeCreditNegativeProjectDoesNotExist() {
|
||||
when(projectMapper.selectById(99L)).thenReturn(null);
|
||||
|
||||
CcdiProjectEmployeeCreditNegativeQueryDTO queryDTO = new CcdiProjectEmployeeCreditNegativeQueryDTO();
|
||||
queryDTO.setProjectId(99L);
|
||||
|
||||
assertThrows(ServiceException.class, () -> service.getEmployeeCreditNegative(queryDTO));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user