|
|
@@ -1,10 +1,12 @@
|
|
|
package com.ydtech.modules.admin.service.impl;
|
|
|
|
|
|
+import cn.hutool.core.collection.CollectionUtil;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
import com.ydtech.constants.enums.dict.DictionaryManagement;
|
|
|
import com.ydtech.core.page.HttpResult;
|
|
|
+import com.ydtech.exception.SystemException;
|
|
|
import com.ydtech.modules.admin.dao.SysDeptMapper;
|
|
|
import com.ydtech.modules.admin.dao.SysUserMapper;
|
|
|
import com.ydtech.modules.admin.model.SysDept;
|
|
|
@@ -18,11 +20,15 @@ import com.ydtech.modules.admin.service.UserReportService;
|
|
|
import com.ydtech.modules.base.model.vo.PageVo;
|
|
|
import com.ydtech.modules.esm.dao.EsmUserReferrerMapper;
|
|
|
import com.ydtech.modules.esm.model.EsmUserReferrer;
|
|
|
+import com.ydtech.modules.esm.model.vo.EsmTeamPolicyVO;
|
|
|
+import com.ydtech.modules.esm.model.vo.EsmUserCountVO;
|
|
|
+import com.ydtech.modules.esm.model.vo.EsmUserPolicyVO;
|
|
|
import com.ydtech.modules.fnc.entity.SettlementDocumentaryFeesSumEntity;
|
|
|
import com.ydtech.modules.order.dao.InsAreaCompanyMapper;
|
|
|
import com.ydtech.modules.order.service.InsAreaCompanyService;
|
|
|
import com.ydtech.utils.StringUtils;
|
|
|
import org.apache.commons.lang3.ObjectUtils;
|
|
|
+import org.springframework.beans.BeanUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.util.CollectionUtils;
|
|
|
@@ -215,14 +221,13 @@ public class UserReportServiceImpl implements UserReportService {
|
|
|
}
|
|
|
//出单人力 + 总保费 +单均保费
|
|
|
if (humanResourcesIdList.containsKey(userId)) {
|
|
|
- if (!CollectionUtils.isEmpty(humanResourcesIdList.get(userId))) {
|
|
|
//出单人力
|
|
|
List<String> ids = humanResourcesIdList.get(userId);
|
|
|
+ ids.add(userId);
|
|
|
QxFrontlineAgentDto orderManpower = insAreaCompanyService.getOrderManpower(ids);
|
|
|
userItem.setOrderManpower(orderManpower.getOrderManpower());
|
|
|
userItem.setTotalPremium(orderManpower.getTotalPremium());
|
|
|
userItem.setAveragePremium(orderManpower.getAveragePremium());
|
|
|
- }
|
|
|
}
|
|
|
}
|
|
|
return HttpResult.ok(sysUserListPage);
|
|
|
@@ -435,151 +440,122 @@ public class UserReportServiceImpl implements UserReportService {
|
|
|
* @Description: 人员统计-前线人员-代理人统计-详情
|
|
|
*/
|
|
|
@Override
|
|
|
- public HttpResult<List<TeamManagementDto>> queryQxFrontlineDetails(QxFrontlineAgentVo qxFrontlineAgentVo) {
|
|
|
+ public HttpResult<EsmUserCountVO> queryQxFrontlineDetails(QxFrontlineAgentVo qxFrontlineAgentVo) {
|
|
|
try {
|
|
|
- List<TeamManagementDto> resultList = new ArrayList<>();
|
|
|
- TeamManagementDto levelOneteamManagementDto = new TeamManagementDto();
|
|
|
- TeamManagementDto levelTwoteamManagementDto = new TeamManagementDto();
|
|
|
- TeamManagementDto levelThreeteamManagementDto = new TeamManagementDto();
|
|
|
- TeamManagementDto levelFourteamManagementDto = new TeamManagementDto();
|
|
|
- TeamManagementDto levelTemporaryteamManagementDto = new TeamManagementDto();
|
|
|
- List<String > temporaryIds = new ArrayList<>();
|
|
|
-
|
|
|
- qxFrontlineAgentVo.setLevel("1");
|
|
|
- List<EsmUserReferrerDTO> userLevelOne = esmUserReferrerMapper.getUserLevel(qxFrontlineAgentVo);
|
|
|
- levelOneteamManagementDto.setTeamLevel("本人");
|
|
|
- if(!CollectionUtils.isEmpty(userLevelOne)){
|
|
|
- levelOneteamManagementDto.setTotalManpower(userLevelOne.size()+"");
|
|
|
- }
|
|
|
- List<String> userIds = userLevelOne.stream()
|
|
|
- .filter(dto -> "1".equals(dto.getStatus())) // 过滤出status为2或3的DTO
|
|
|
- .map(EsmUserReferrerDTO::getId) // 将过滤后的DTO映射到它们的userId
|
|
|
- .collect(Collectors.toList());
|
|
|
- if(!CollectionUtils.isEmpty(userIds)){
|
|
|
- QxFrontlineAgentDto orderManpower = insAreaCompanyService.getOrderManpower(userIds);
|
|
|
- if(ObjectUtils.isNotEmpty(orderManpower)){
|
|
|
- levelOneteamManagementDto.setTotalPremium(orderManpower.getTotalPremium());
|
|
|
- levelOneteamManagementDto.setOrderManpower(orderManpower.getOrderManpower());
|
|
|
+ EsmUserCountVO esmUserCountVO = new EsmUserCountVO();
|
|
|
+ List<EsmTeamPolicyVO> hzList = new ArrayList<>();
|
|
|
+ List<EsmUserPolicyVO> userPolicyList = new ArrayList<>();
|
|
|
+ List<EsmUserPolicyVO> userPolicyList0 = new ArrayList<>();
|
|
|
+ List<EsmUserPolicyVO> userPolicyList1 = new ArrayList<>();
|
|
|
+ List<EsmUserPolicyVO> userPolicyList2 = new ArrayList<>();
|
|
|
+ List<EsmUserPolicyVO> userPolicyList3 = new ArrayList<>();
|
|
|
+ EsmUserReferrer esmUserReferrer = esmUserReferrerMapper.selectById(qxFrontlineAgentVo.getUserId());
|
|
|
+ if (esmUserReferrer != null) {
|
|
|
+ List<String> userList1 = new ArrayList<>();
|
|
|
+ List<String> userList2 = new ArrayList<>();
|
|
|
+ List<String> userList3 = new ArrayList<>();
|
|
|
+ //本级信息
|
|
|
+ //明细数据加工
|
|
|
+ List<String> userList0 = new ArrayList<>();
|
|
|
+ userList0.add(esmUserReferrer.getId());
|
|
|
+ userPolicyList0 = esmUserReferrerMapper.queryOrderCount(userList0, null, null);
|
|
|
+ //汇总数据加工
|
|
|
+ EsmTeamPolicyVO esmTeamPolicyVO0 = esmUserReferrerMapper.queryOrderCountHz(userList0, null, null);
|
|
|
+ EsmTeamPolicyVO esmTeamPolicyVO1 = new EsmTeamPolicyVO();
|
|
|
+ EsmTeamPolicyVO esmTeamPolicyVO2 = new EsmTeamPolicyVO();
|
|
|
+ EsmTeamPolicyVO esmTeamPolicyVO3 = new EsmTeamPolicyVO();
|
|
|
+ esmTeamPolicyVO2.setTeamlevel("二级团队");
|
|
|
+ esmTeamPolicyVO3.setTeamlevel("三级团队");
|
|
|
+ if (esmTeamPolicyVO0 == null) {
|
|
|
+ esmTeamPolicyVO0 = new EsmTeamPolicyVO();
|
|
|
+ esmTeamPolicyVO0.setSumpremium(0);
|
|
|
+ esmTeamPolicyVO0.setUsernum(0);
|
|
|
+ } else {
|
|
|
+ esmTeamPolicyVO0.setUsernum(1);
|
|
|
}
|
|
|
- }
|
|
|
- resultList.add(levelOneteamManagementDto);
|
|
|
-// 一级非临时人员
|
|
|
- List<String> temporaryUserOne = userLevelOne.stream()
|
|
|
- .filter(dto -> "2".equals(dto.getStatus()) || "3".equals(dto.getStatus()) )
|
|
|
- .map(EsmUserReferrerDTO::getId)
|
|
|
- .collect(Collectors.toList());
|
|
|
- temporaryIds.addAll(temporaryUserOne);
|
|
|
-
|
|
|
-
|
|
|
+ esmTeamPolicyVO0.setTeamlevel("本人");
|
|
|
+ esmTeamPolicyVO0.setTeamnum(1);
|
|
|
+
|
|
|
+ // 一级团队信息
|
|
|
+ userList1 = esmUserReferrerMapper.getIdDown_1(esmUserReferrer.getId());
|
|
|
+ esmTeamPolicyVO1.setTeamlevel("一级团队");
|
|
|
+ if (userList1 != null && userList1.size() > 0) {
|
|
|
+ userPolicyList1 = esmUserReferrerMapper.queryOrderCount(userList1, null, null);
|
|
|
+ EsmTeamPolicyVO esmTeamPolicyVO1_t = esmUserReferrerMapper.queryOrderCountHz(userList1, null,
|
|
|
+ null);
|
|
|
+ if (esmTeamPolicyVO1_t != null) {
|
|
|
+ esmTeamPolicyVO1.setSumpremium(esmTeamPolicyVO1_t.getSumpremium());
|
|
|
+ esmTeamPolicyVO1.setUsernum(userPolicyList1.size());//出单人力
|
|
|
+ }
|
|
|
+ esmTeamPolicyVO1.setTeamnum(userList1.size());//团队人数
|
|
|
+ // 二级团队信息
|
|
|
+ userList2 = esmUserReferrerMapper.getIdDown_2(esmUserReferrer.getId());
|
|
|
+
|
|
|
+ esmTeamPolicyVO2.setTeamlevel("二级团队");
|
|
|
+ if (userList2 != null && userList2.size() > 0) {
|
|
|
+ userPolicyList2 = esmUserReferrerMapper.queryOrderCount(userList2, null, null);
|
|
|
+ EsmTeamPolicyVO esmTeamPolicyVO2_t = esmUserReferrerMapper.queryOrderCountHz(userList2, null,
|
|
|
+ null);
|
|
|
+ if (esmTeamPolicyVO2_t != null) {
|
|
|
+ esmTeamPolicyVO2.setSumpremium(esmTeamPolicyVO2_t.getSumpremium());
|
|
|
+ esmTeamPolicyVO2.setUsernum(userPolicyList2.size());
|
|
|
+ }
|
|
|
+ esmTeamPolicyVO2.setTeamnum(userList2.size());
|
|
|
+ // 三级团队信息
|
|
|
+ userList3 = esmUserReferrerMapper.getIdDown_3(esmUserReferrer.getId());
|
|
|
+ if(userList3!=null && userList3.size()>0){
|
|
|
+ userPolicyList3=esmUserReferrerMapper.queryOrderCount(userList3,null, null);
|
|
|
+ EsmTeamPolicyVO esmTeamPolicyVO3_t=esmUserReferrerMapper.queryOrderCountHz(userList3,null, null);
|
|
|
+ esmTeamPolicyVO3.setTeamlevel("三级团队");
|
|
|
+ esmTeamPolicyVO3.setTeamnum(userList3.size());
|
|
|
+ if (esmTeamPolicyVO2_t != null) {
|
|
|
+ esmTeamPolicyVO3.setSumpremium(esmTeamPolicyVO3_t.getSumpremium());
|
|
|
+ esmTeamPolicyVO3.setUsernum(userPolicyList3.size());
|
|
|
+ }
|
|
|
|
|
|
- qxFrontlineAgentVo.setLevel("2");
|
|
|
- List<EsmUserReferrerDTO> userLevelTwo = esmUserReferrerMapper.getUserLevel(qxFrontlineAgentVo);
|
|
|
- levelTwoteamManagementDto.setTeamLevel("一级团队");
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
- if(!CollectionUtils.isEmpty(userLevelTwo)){
|
|
|
- levelTwoteamManagementDto.setTotalManpower(userLevelTwo.size()+"");
|
|
|
- }
|
|
|
- List<String> userIdsTwo = userLevelTwo.stream()
|
|
|
- .filter(dto -> "1".equals(dto.getStatus()) )
|
|
|
- .map(EsmUserReferrerDTO::getId) // 将过滤后的DTO映射到它们的userId
|
|
|
- .collect(Collectors.toList());
|
|
|
- if(!CollectionUtils.isEmpty(userIdsTwo)){
|
|
|
- QxFrontlineAgentDto orderManpowerTwo = insAreaCompanyService.getOrderManpower(userIdsTwo);
|
|
|
- if(ObjectUtils.isNotEmpty(orderManpowerTwo)){
|
|
|
- levelTwoteamManagementDto.setTotalPremium(orderManpowerTwo.getTotalPremium());
|
|
|
- levelTwoteamManagementDto.setOrderManpower(orderManpowerTwo.getOrderManpower());
|
|
|
}
|
|
|
- }
|
|
|
- resultList.add(levelTwoteamManagementDto);
|
|
|
-
|
|
|
-// 一级团队临时
|
|
|
- List<String> temporaryUserTwo = userLevelTwo.stream()
|
|
|
- .filter(dto -> "2".equals(dto.getStatus()) || "3".equals(dto.getStatus())) // 过滤出status为2或3的DTO
|
|
|
- .map(EsmUserReferrerDTO::getId)
|
|
|
- .collect(Collectors.toList());
|
|
|
- temporaryIds.addAll(temporaryUserTwo);
|
|
|
-
|
|
|
- qxFrontlineAgentVo.setUserId(null);
|
|
|
- qxFrontlineAgentVo.setIds(userIdsTwo);
|
|
|
- qxFrontlineAgentVo.setLevel("3");
|
|
|
- List<EsmUserReferrerDTO> userLevelThree = esmUserReferrerMapper.getUserLevel(qxFrontlineAgentVo);
|
|
|
- levelThreeteamManagementDto.setTeamLevel("二级团队");
|
|
|
-
|
|
|
- if(!CollectionUtils.isEmpty(userLevelThree)){
|
|
|
- levelThreeteamManagementDto.setTotalManpower(userLevelThree.size()+"");
|
|
|
- }
|
|
|
- List<String> userIdsThree = userLevelThree.stream()
|
|
|
- .filter(dto -> "1".equals(dto.getStatus()) )
|
|
|
- .map(EsmUserReferrerDTO::getId) // 将过滤后的DTO映射到它们的userId
|
|
|
- .collect(Collectors.toList());
|
|
|
- if(!CollectionUtils.isEmpty(userIdsThree)){
|
|
|
- QxFrontlineAgentDto orderManpowerThree = insAreaCompanyService.getOrderManpower(userIdsThree);
|
|
|
- if(ObjectUtils.isNotEmpty(orderManpowerThree)){
|
|
|
- levelThreeteamManagementDto.setTotalPremium(orderManpowerThree.getTotalPremium());
|
|
|
- levelThreeteamManagementDto.setOrderManpower(orderManpowerThree.getOrderManpower());
|
|
|
- }
|
|
|
- }
|
|
|
- resultList.add(levelThreeteamManagementDto);
|
|
|
-
|
|
|
|
|
|
- // 二级团队临时
|
|
|
- List<String> temporaryUserThree = userLevelThree.stream()
|
|
|
- .filter(dto -> "2".equals(dto.getStatus()) || "3".equals(dto.getStatus())) // 过滤出status为2或3的DTO
|
|
|
- .map(EsmUserReferrerDTO::getId)
|
|
|
- .collect(Collectors.toList());
|
|
|
- temporaryIds.addAll(temporaryUserThree);
|
|
|
-
|
|
|
- qxFrontlineAgentVo.setUserId(null);
|
|
|
- qxFrontlineAgentVo.setIds(userIdsThree);
|
|
|
- qxFrontlineAgentVo.setLevel("4");
|
|
|
- List<EsmUserReferrerDTO> userLevelFour = esmUserReferrerMapper.getUserLevel(qxFrontlineAgentVo);
|
|
|
- levelFourteamManagementDto.setTeamLevel("三级团队");
|
|
|
-
|
|
|
- if(!CollectionUtils.isEmpty(userLevelFour)){
|
|
|
- levelFourteamManagementDto.setTotalManpower(userLevelFour.size()+"");
|
|
|
- }
|
|
|
- List<String> userIdsFouro = userLevelFour.stream()
|
|
|
- .filter(dto -> "1".equals(dto.getStatus()) )
|
|
|
- .map(EsmUserReferrerDTO::getId) // 将过滤后的DTO映射到它们的userId
|
|
|
- .collect(Collectors.toList());
|
|
|
- if(!CollectionUtils.isEmpty(userIdsFouro)){
|
|
|
- QxFrontlineAgentDto orderManpowerFour = insAreaCompanyService.getOrderManpower(userIdsFouro);
|
|
|
- if(ObjectUtils.isNotEmpty(orderManpowerFour)){
|
|
|
- levelFourteamManagementDto.setTotalPremium(orderManpowerFour.getTotalPremium());
|
|
|
- levelFourteamManagementDto.setOrderManpower(orderManpowerFour.getOrderManpower());
|
|
|
- }
|
|
|
- }
|
|
|
- resultList.add(levelFourteamManagementDto);
|
|
|
-
|
|
|
-
|
|
|
- // 三级级团队临时
|
|
|
- List<String> temporaryUserFour = userLevelFour.stream()
|
|
|
- .filter(dto -> "2".equals(dto.getStatus()) || "3".equals(dto.getStatus())) // 过滤出status为2或3的DTO
|
|
|
- .map(EsmUserReferrerDTO::getId)
|
|
|
- .collect(Collectors.toList());
|
|
|
-
|
|
|
- temporaryIds.addAll(temporaryUserFour);
|
|
|
- qxFrontlineAgentVo.setUserId(null);
|
|
|
- qxFrontlineAgentVo.setIds(temporaryIds);
|
|
|
- if(temporaryIds.size()>0){
|
|
|
- List<EsmUserReferrerDTO> userLevelTemporary = esmUserReferrerMapper.getUserLevel(qxFrontlineAgentVo);
|
|
|
- List<String> userIdsTemporary = userLevelTemporary.stream()
|
|
|
- .map(EsmUserReferrerDTO::getId) // 将过滤后的DTO映射到它们的userId
|
|
|
- .collect(Collectors.toList());
|
|
|
- QxFrontlineAgentDto orderManpowerTemporary = insAreaCompanyService.getOrderManpower(userIdsTemporary);
|
|
|
- if(ObjectUtils.isNotEmpty(orderManpowerTemporary)){
|
|
|
- levelTemporaryteamManagementDto.setTotalPremium(orderManpowerTemporary.getTotalPremium());
|
|
|
- levelTemporaryteamManagementDto.setOrderManpower(orderManpowerTemporary.getOrderManpower());
|
|
|
+ //临时团队
|
|
|
+ List<String> registList = esmUserReferrerMapper.getIdDown3_regist(qxFrontlineAgentVo.getUserId());
|
|
|
+ EsmTeamPolicyVO esmTeamPolicyVO9 = new EsmTeamPolicyVO();
|
|
|
+ esmTeamPolicyVO9.setTeamlevel("临时团队");
|
|
|
+ esmTeamPolicyVO9.setTeamnum(registList == null ? 0 : registList.size());
|
|
|
+
|
|
|
+ //汇总
|
|
|
+ List<String> userList = new ArrayList<>();
|
|
|
+ userList.addAll(userList0);
|
|
|
+ userList.addAll(userList1);
|
|
|
+ userList.addAll(userList2);
|
|
|
+ userList.addAll(userList3);
|
|
|
+ userList.addAll(registList);
|
|
|
+ userPolicyList = esmUserReferrerMapper.queryOrderCount(userList, null, null);
|
|
|
+ EsmTeamPolicyVO esmTeamPolicyVO = new EsmTeamPolicyVO();
|
|
|
+ EsmTeamPolicyVO esmTeamPolicyVO_t = esmUserReferrerMapper.queryOrderCountHz(userList, null, null);
|
|
|
+ if (esmTeamPolicyVO_t != null) {
|
|
|
+ esmTeamPolicyVO.setSumpremium(esmTeamPolicyVO_t.getSumpremium());
|
|
|
+ esmTeamPolicyVO.setUsernum(userPolicyList.size());
|
|
|
}
|
|
|
+ esmTeamPolicyVO.setTeamlevel("汇总");
|
|
|
+ esmTeamPolicyVO.setTeamnum(userList.size());
|
|
|
+ hzList.add(esmTeamPolicyVO);
|
|
|
+ hzList.add(esmTeamPolicyVO0);
|
|
|
+ hzList.add(esmTeamPolicyVO1);
|
|
|
+ hzList.add(esmTeamPolicyVO2);
|
|
|
+ hzList.add(esmTeamPolicyVO3);
|
|
|
+ hzList.add(esmTeamPolicyVO9);
|
|
|
+ esmUserCountVO.setHzList(hzList);
|
|
|
+ esmUserCountVO.setUserPolicyList(userPolicyList);
|
|
|
+ esmUserCountVO.setUserPolicyList0(userPolicyList0);
|
|
|
+ esmUserCountVO.setUserPolicyList1(userPolicyList1);
|
|
|
+ esmUserCountVO.setUserPolicyList2(userPolicyList2);
|
|
|
+ esmUserCountVO.setUserPolicyList3(userPolicyList3);
|
|
|
+ } else {
|
|
|
+ throw new SystemException("内部错误");
|
|
|
}
|
|
|
- levelTemporaryteamManagementDto.setTeamLevel("临时团队");
|
|
|
-
|
|
|
- if(!CollectionUtils.isEmpty(userLevelFour)){
|
|
|
- levelTemporaryteamManagementDto.setTotalManpower(userLevelFour.size()+"");
|
|
|
- }
|
|
|
- resultList.add(levelTemporaryteamManagementDto);
|
|
|
-
|
|
|
- return HttpResult.ok(resultList);
|
|
|
+ return HttpResult.ok(esmUserCountVO);
|
|
|
} catch (Exception e) {
|
|
|
e.printStackTrace();
|
|
|
return HttpResult.error("查询异常");
|
|
|
@@ -636,7 +612,7 @@ public class UserReportServiceImpl implements UserReportService {
|
|
|
TaskStatisticsDto taskStatisticsDto = insAreaCompanyMapper.NumberQuotations(userItem.getUserId());
|
|
|
userItem.setUnderwritingCount(taskStatisticsDto.getUnderwritingCount().toString());
|
|
|
userItem.setOrderNumber(taskStatisticsDto.getOrderNumber());
|
|
|
- userItem.setOrderNumber(taskStatisticsDto.getQutationInsureCount().toString());
|
|
|
+ userItem.setQutationInsureCount(taskStatisticsDto.getQutationInsureCount());
|
|
|
userItem.setTotalPremium(taskStatisticsDto.getTotalPremium());
|
|
|
}
|
|
|
}
|
|
|
@@ -683,6 +659,48 @@ public class UserReportServiceImpl implements UserReportService {
|
|
|
return qxFrontlineAgentDto;
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * @version
|
|
|
+ * @author: whp
|
|
|
+ * @Date: 2024/8/12
|
|
|
+ * @Description: 控制台代理人树形
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public List<EsmUserReferrerDTO> agentTreeStructure(QxFrontlineAgentVo qxFrontlineAgentVo) {
|
|
|
+ List<EsmUserReferrerDTO> employeeIncreaseReportDtos = esmUserReferrerMapper.getUserLevel(qxFrontlineAgentVo);
|
|
|
+ List<EsmUserReferrerDTO> esmUserReferrerDTOList = this.buildUserTree(employeeIncreaseReportDtos);
|
|
|
+ return esmUserReferrerDTOList;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 递归构建树形结构
|
|
|
+ * @param employeeIncreaseReportDtos 所有的用户数据list
|
|
|
+ * @param rootUser 用户对象
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ private List<EsmUserReferrerDTO> buildUserTree(List<EsmUserReferrerDTO> employeeIncreaseReportDtos) {
|
|
|
+ Map<String, EsmUserReferrerDTO> nodeMap = new HashMap<>();
|
|
|
+
|
|
|
+ // 第一步:将所有节点放入map中,以便快速查找
|
|
|
+ for (EsmUserReferrerDTO node : employeeIncreaseReportDtos) {
|
|
|
+ nodeMap.put(node.getId(), node);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 第二步:构建树形结构
|
|
|
+ List<EsmUserReferrerDTO> rootNodes = new ArrayList<>();
|
|
|
+ for (EsmUserReferrerDTO node : employeeIncreaseReportDtos) {
|
|
|
+ if (node.getReferrerId().equals(node.getId())) { // 自引用节点是根节点
|
|
|
+ rootNodes.add(node);
|
|
|
+ } else {
|
|
|
+ EsmUserReferrerDTO parentNode = nodeMap.get(node.getReferrerId());
|
|
|
+ if (parentNode != null) {
|
|
|
+ parentNode.getChildren().add(node);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return rootNodes;
|
|
|
+ }
|
|
|
+
|
|
|
}
|
|
|
|
|
|
|