完成结果总览模型区服务组装
This commit is contained in:
@@ -1,9 +1,14 @@
|
||||
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.vo.CcdiProjectEmployeeRiskAggregateVO;
|
||||
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectOverviewDashboardVO;
|
||||
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectOverviewStatVO;
|
||||
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectRiskModelCardsVO;
|
||||
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectRiskModelPeopleItemVO;
|
||||
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectRiskModelPeopleVO;
|
||||
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectRiskPeopleOverviewItemVO;
|
||||
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectRiskPeopleOverviewVO;
|
||||
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectTopRiskPeopleItemVO;
|
||||
@@ -86,6 +91,37 @@ public class CcdiProjectOverviewServiceImpl implements ICcdiProjectOverviewServi
|
||||
return topRiskPeople;
|
||||
}
|
||||
|
||||
@Override
|
||||
public CcdiProjectRiskModelCardsVO getRiskModelCards(Long projectId) {
|
||||
ensureProjectExists(projectId);
|
||||
|
||||
CcdiProjectRiskModelCardsVO cards = new CcdiProjectRiskModelCardsVO();
|
||||
cards.setCardList(defaultList(overviewMapper.selectRiskModelCardsByProjectId(projectId)));
|
||||
return cards;
|
||||
}
|
||||
|
||||
@Override
|
||||
public CcdiProjectRiskModelPeopleVO getRiskModelPeople(CcdiProjectRiskModelPeopleQueryDTO queryDTO) {
|
||||
ensureProjectExists(queryDTO.getProjectId());
|
||||
normalizeRiskModelPeopleQuery(queryDTO);
|
||||
|
||||
Page<CcdiProjectRiskModelPeopleItemVO> page = new Page<>(
|
||||
defaultPageNum(queryDTO.getPageNum()),
|
||||
defaultPageSize(queryDTO.getPageSize())
|
||||
);
|
||||
Page<CcdiProjectRiskModelPeopleItemVO> resultPage = overviewMapper.selectRiskModelPeoplePage(page, queryDTO);
|
||||
|
||||
List<CcdiProjectRiskModelPeopleItemVO> rows = defaultList(resultPage == null ? null : resultPage.getRecords())
|
||||
.stream()
|
||||
.peek(item -> item.setActionLabel(ACTION_LABEL))
|
||||
.toList();
|
||||
|
||||
CcdiProjectRiskModelPeopleVO people = new CcdiProjectRiskModelPeopleVO();
|
||||
people.setRows(rows);
|
||||
people.setTotal(resultPage == null ? 0L : resultPage.getTotal());
|
||||
return people;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void refreshProjectRiskCounts(Long projectId, String operator) {
|
||||
@@ -130,6 +166,14 @@ public class CcdiProjectOverviewServiceImpl implements ICcdiProjectOverviewServi
|
||||
getRequiredProject(projectId);
|
||||
}
|
||||
|
||||
private void normalizeRiskModelPeopleQuery(CcdiProjectRiskModelPeopleQueryDTO queryDTO) {
|
||||
if (queryDTO.getMatchMode() == null || queryDTO.getMatchMode().isBlank()) {
|
||||
queryDTO.setMatchMode("ANY");
|
||||
return;
|
||||
}
|
||||
queryDTO.setMatchMode(queryDTO.getMatchMode().trim().toUpperCase());
|
||||
}
|
||||
|
||||
private CcdiProjectOverviewStatVO buildStat(String key, String label, Integer value) {
|
||||
CcdiProjectOverviewStatVO stat = new CcdiProjectOverviewStatVO();
|
||||
stat.setKey(key);
|
||||
@@ -156,6 +200,18 @@ public class CcdiProjectOverviewServiceImpl implements ICcdiProjectOverviewServi
|
||||
return value == null ? 0 : value;
|
||||
}
|
||||
|
||||
private long defaultPageNum(Integer pageNum) {
|
||||
return pageNum == null || pageNum < 1 ? 1L : pageNum.longValue();
|
||||
}
|
||||
|
||||
private long defaultPageSize(Integer pageSize) {
|
||||
return pageSize == null || pageSize < 1 ? 10L : pageSize.longValue();
|
||||
}
|
||||
|
||||
private <T> List<T> defaultList(List<T> value) {
|
||||
return value == null ? List.of() : value;
|
||||
}
|
||||
|
||||
private CcdiProject getRequiredProject(Long projectId) {
|
||||
CcdiProject project = projectMapper.selectById(projectId);
|
||||
if (project == null) {
|
||||
|
||||
@@ -1,8 +1,14 @@
|
||||
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.vo.CcdiProjectEmployeeRiskAggregateVO;
|
||||
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectOverviewDashboardVO;
|
||||
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectRiskModelCardVO;
|
||||
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectRiskModelCardsVO;
|
||||
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectRiskModelPeopleItemVO;
|
||||
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectRiskModelPeopleVO;
|
||||
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectRiskPeopleOverviewVO;
|
||||
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectTopRiskPeopleVO;
|
||||
import com.ruoyi.ccdi.project.mapper.CcdiProjectMapper;
|
||||
@@ -18,7 +24,10 @@ 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.assertNotNull;
|
||||
import static org.junit.jupiter.api.Assertions.assertThrows;
|
||||
import static org.mockito.ArgumentMatchers.any;
|
||||
import static org.mockito.ArgumentMatchers.argThat;
|
||||
import static org.mockito.ArgumentMatchers.eq;
|
||||
import static org.mockito.Mockito.verify;
|
||||
import static org.mockito.Mockito.when;
|
||||
@@ -108,6 +117,8 @@ class CcdiProjectOverviewServiceImplTest {
|
||||
|
||||
assertThrows(ServiceException.class, () -> service.getRiskPeopleOverview(99L));
|
||||
assertThrows(ServiceException.class, () -> service.getTopRiskPeople(99L));
|
||||
assertThrows(ServiceException.class, () -> service.getRiskModelCards(99L));
|
||||
assertThrows(ServiceException.class, () -> service.getRiskModelPeople(buildRiskModelPeopleQuery(99L)));
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -127,4 +138,100 @@ class CcdiProjectOverviewServiceImplTest {
|
||||
|
||||
verify(projectMapper).updateRiskCountsByProjectId(eq(43L), eq(2), eq(1), eq(3), eq("tester"));
|
||||
}
|
||||
|
||||
@Test
|
||||
void shouldWrapRiskModelCardsIntoCardList() {
|
||||
CcdiProject project = new CcdiProject();
|
||||
project.setProjectId(40L);
|
||||
when(projectMapper.selectById(40L)).thenReturn(project);
|
||||
|
||||
CcdiProjectRiskModelCardVO card = new CcdiProjectRiskModelCardVO();
|
||||
card.setModelCode("MODEL_A");
|
||||
card.setWarningCount(3);
|
||||
when(overviewMapper.selectRiskModelCardsByProjectId(40L)).thenReturn(List.of(card));
|
||||
|
||||
CcdiProjectRiskModelCardsVO result = service.getRiskModelCards(40L);
|
||||
|
||||
assertNotNull(result.getCardList());
|
||||
assertEquals(1, result.getCardList().size());
|
||||
assertEquals("MODEL_A", result.getCardList().getFirst().getModelCode());
|
||||
assertEquals(3, result.getCardList().getFirst().getWarningCount());
|
||||
}
|
||||
|
||||
@Test
|
||||
void shouldWrapRiskModelPeopleRowsTotalAndActionLabel() {
|
||||
CcdiProject project = new CcdiProject();
|
||||
project.setProjectId(40L);
|
||||
when(projectMapper.selectById(40L)).thenReturn(project);
|
||||
|
||||
CcdiProjectRiskModelPeopleItemVO item = new CcdiProjectRiskModelPeopleItemVO();
|
||||
item.setStaffName("王五");
|
||||
item.setStaffCode("10001");
|
||||
|
||||
Page<CcdiProjectRiskModelPeopleItemVO> page = new Page<>(2, 5);
|
||||
page.setRecords(List.of(item));
|
||||
page.setTotal(11);
|
||||
when(overviewMapper.selectRiskModelPeoplePage(any(Page.class), any(CcdiProjectRiskModelPeopleQueryDTO.class)))
|
||||
.thenReturn(page);
|
||||
|
||||
CcdiProjectRiskModelPeopleVO result = service.getRiskModelPeople(buildRiskModelPeopleQuery(40L));
|
||||
|
||||
assertNotNull(result.getRows());
|
||||
assertEquals(1, result.getRows().size());
|
||||
assertEquals(11L, result.getTotal());
|
||||
assertEquals("查看详情", result.getRows().getFirst().getActionLabel());
|
||||
}
|
||||
|
||||
@Test
|
||||
void shouldReturnEmptyCollectionsForRiskModelCardsAndPeople() {
|
||||
CcdiProject project = new CcdiProject();
|
||||
project.setProjectId(40L);
|
||||
when(projectMapper.selectById(40L)).thenReturn(project);
|
||||
when(overviewMapper.selectRiskModelCardsByProjectId(40L)).thenReturn(List.of());
|
||||
|
||||
Page<CcdiProjectRiskModelPeopleItemVO> emptyPage = new Page<>(1, 10);
|
||||
emptyPage.setRecords(List.of());
|
||||
emptyPage.setTotal(0);
|
||||
when(overviewMapper.selectRiskModelPeoplePage(any(Page.class), any(CcdiProjectRiskModelPeopleQueryDTO.class)))
|
||||
.thenReturn(emptyPage);
|
||||
|
||||
CcdiProjectRiskModelCardsVO cards = service.getRiskModelCards(40L);
|
||||
CcdiProjectRiskModelPeopleVO people = service.getRiskModelPeople(buildRiskModelPeopleQuery(40L));
|
||||
|
||||
assertNotNull(cards.getCardList());
|
||||
assertEquals(0, cards.getCardList().size());
|
||||
assertNotNull(people.getRows());
|
||||
assertEquals(0, people.getRows().size());
|
||||
assertEquals(0L, people.getTotal());
|
||||
}
|
||||
|
||||
@Test
|
||||
void shouldDefaultRiskModelPeopleMatchModeToAny() {
|
||||
CcdiProject project = new CcdiProject();
|
||||
project.setProjectId(40L);
|
||||
when(projectMapper.selectById(40L)).thenReturn(project);
|
||||
|
||||
Page<CcdiProjectRiskModelPeopleItemVO> emptyPage = new Page<>(1, 10);
|
||||
emptyPage.setRecords(List.of());
|
||||
emptyPage.setTotal(0);
|
||||
when(overviewMapper.selectRiskModelPeoplePage(any(Page.class), any(CcdiProjectRiskModelPeopleQueryDTO.class)))
|
||||
.thenReturn(emptyPage);
|
||||
|
||||
CcdiProjectRiskModelPeopleQueryDTO queryDTO = buildRiskModelPeopleQuery(40L);
|
||||
queryDTO.setMatchMode(null);
|
||||
service.getRiskModelPeople(queryDTO);
|
||||
|
||||
verify(overviewMapper).selectRiskModelPeoplePage(
|
||||
any(Page.class),
|
||||
argThat(query -> "ANY".equals(query.getMatchMode()))
|
||||
);
|
||||
}
|
||||
|
||||
private CcdiProjectRiskModelPeopleQueryDTO buildRiskModelPeopleQuery(Long projectId) {
|
||||
CcdiProjectRiskModelPeopleQueryDTO queryDTO = new CcdiProjectRiskModelPeopleQueryDTO();
|
||||
queryDTO.setProjectId(projectId);
|
||||
queryDTO.setPageNum(1);
|
||||
queryDTO.setPageSize(10);
|
||||
return queryDTO;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user