From 2b9d7d4ea779e6d8f3bf740ceab91202363f289d Mon Sep 17 00:00:00 2001 From: lidongyang <506508008@qq.com> Date: Tue, 10 Feb 2026 21:46:01 +0800 Subject: [PATCH] =?UTF-8?q?1=E3=80=81=E4=BC=98=E5=8C=96getTaskTree?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../project/model/req/ProjectTreeTagReq.java | 2 + .../service/impl/ProjectServiceImpl.java | 405 +++++++++++------- 2 files changed, 244 insertions(+), 163 deletions(-) diff --git a/project/src/main/java/com/sdm/project/model/req/ProjectTreeTagReq.java b/project/src/main/java/com/sdm/project/model/req/ProjectTreeTagReq.java index 0befa7f9..5ee57dd1 100644 --- a/project/src/main/java/com/sdm/project/model/req/ProjectTreeTagReq.java +++ b/project/src/main/java/com/sdm/project/model/req/ProjectTreeTagReq.java @@ -19,6 +19,8 @@ public class ProjectTreeTagReq { private List filterDiscipline; + private Integer queryTaskFlag = 0; + /** * 根据projectNodeId和phaseNodeId构建 diff --git a/project/src/main/java/com/sdm/project/service/impl/ProjectServiceImpl.java b/project/src/main/java/com/sdm/project/service/impl/ProjectServiceImpl.java index 6ab07a54..4122fb0b 100644 --- a/project/src/main/java/com/sdm/project/service/impl/ProjectServiceImpl.java +++ b/project/src/main/java/com/sdm/project/service/impl/ProjectServiceImpl.java @@ -61,6 +61,7 @@ import org.springframework.transaction.interceptor.TransactionAspectSupport; import java.io.File; import java.text.SimpleDateFormat; import java.util.*; +import java.util.function.Function; import java.util.stream.Collectors; import static com.sdm.project.service.impl.NodeServiceImpl.getTagProperty; @@ -457,18 +458,24 @@ public class ProjectServiceImpl extends BaseService implements IProjectService { log.error("未查询到顶级节点"); return SdmResponse.success(new ArrayList<>()); } + // queryTaskFlag为1待办不查询任务,只查询节点 + Integer queryTaskFlag = req.getQueryTaskFlag(); log.info("查询到的节点为:{}", taskTreeNodeList.stream().map(ProjectNodePo::getId).toList()); taskTreeReq.setFilterDiscipline(req.getFilterDiscipline()); - taskTreeTaskList = mapper.getTaskListByTag(taskTreeReq); - if (CollectionUtils.isNotEmpty(taskTreeTaskList)) { - log.info("查询到的任务为:{}", taskTreeTaskList.stream().map(TaskNodePo::getId).toList()); - taskTreeTaskList.forEach(task -> task.setNodeType("task")); - taskTreePerformanceList = mapper.getPerformanceListByNodeIdList(taskTreeTaskList.stream().map(TaskNodePo::getUuid).toList()); - if (CollectionUtils.isNotEmpty(taskTreePerformanceList)) { - log.info("查询到的指标为:{}", taskTreePerformanceList.stream().map(PerformanceNodePo::getId).toList()); - taskTreePerformanceList.forEach(performance -> performance.setNodeType("performance")); + + if (queryTaskFlag != 1) { + taskTreeTaskList = mapper.getTaskListByTag(taskTreeReq); + if (CollectionUtils.isNotEmpty(taskTreeTaskList)) { + log.info("查询到的任务为:{}", taskTreeTaskList.stream().map(TaskNodePo::getId).toList()); + taskTreeTaskList.forEach(task -> task.setNodeType("task")); + taskTreePerformanceList = mapper.getPerformanceListByNodeIdList(taskTreeTaskList.stream().map(TaskNodePo::getUuid).toList()); + if (CollectionUtils.isNotEmpty(taskTreePerformanceList)) { + log.info("查询到的指标为:{}", taskTreePerformanceList.stream().map(PerformanceNodePo::getId).toList()); + taskTreePerformanceList.forEach(performance -> performance.setNodeType("performance")); + } } } + taskTreeTagMap = req.getTagMap(); firstNodeTag = taskTreeTagMap.get(0).getValue(); lastNodeTag = taskTreeTagMap.get(taskTreeTagMap.size()-1).getValue(); @@ -495,8 +502,81 @@ public class ProjectServiceImpl extends BaseService implements IProjectService { List realTopProjectNodeList = taskTreeNodeList.stream().filter(node -> node.getNodeType().equals(realFirstTaskNodeType)).toList(); List addedIdList = new ArrayList<>(); List currentAddedIdList = new ArrayList<>(); + + + Map> taskMemberMap = new HashMap<>(); + Map cidUserMap = new HashMap<>(); + Map dataMap = new HashMap<>(); + Map> taskExtraMap = new HashMap<>(); + List performanceExtraList = new ArrayList<>(); + List nodeExtraList = new ArrayList<>(); + if (CollectionUtils.isNotEmpty(taskTreeTaskList)) { + List memberList = simulationTaskMemberService.lambdaQuery().in(SimulationTaskMember::getTaskId, taskTreeTaskList.stream().map(TaskNodePo::getUuid).collect(Collectors.toSet())).list(); + if (CollectionUtils.isNotEmpty(memberList)) { + taskMemberMap = memberList.stream().collect(Collectors.groupingBy(SimulationTaskMember::getTaskId)); + List allUserIdList = memberList.stream().map(SimulationTaskMember::getUserId).distinct().toList(); + SdmResponse> cidUserResp = sysUserFeignClient.listUserByIds(UserQueryReq.builder().userIds(allUserIdList).build()); + List cidUserRespList = cidUserResp.getData(); + if (CollectionUtils.isNotEmpty(cidUserRespList)) { + cidUserMap = cidUserRespList.stream().collect(Collectors.toMap(CIDUserResp::getUserId, Function.identity())); + } + } + + // 转换执行规范的文件id为文件名称 + List standardList = taskTreeTaskList.stream().map(TaskNodePo::getStandard).toList(); + if (CollectionUtils.isNotEmpty(standardList)) { + List fileIdList = new ArrayList<>(); + standardList = standardList.stream().filter(StringUtils::isNotBlank).toList(); + if (CollectionUtils.isNotEmpty(standardList)) { + for (String standard : standardList) { + if (standard.contains(";")) { + // 4883,4556; + List fileDirIdList = Arrays.stream(standard.split(";")).toList(); + for (String fileDirId : fileDirIdList) { + if (!isConvertibleToLong(fileDirId.split(",")[1])) { + continue; + } + fileIdList.add(Long.valueOf(fileDirId.split(",")[1])); + } + }else { + List normalFileIdList = Arrays.stream(standard.split(",")).toList().stream().filter(ProjectServiceImpl::isConvertibleToLong).toList(); + if (CollectionUtils.isEmpty(normalFileIdList)) { + continue; + } + fileIdList.addAll(normalFileIdList.stream().map(Long::valueOf).toList()); + } + } + QueryFileReq queryFileReq = new QueryFileReq(); + queryFileReq.setFileIdList(fileIdList); + SdmResponse> listSdmResponse = dataClientFeignClient.queryFileListByIdList(queryFileReq); + if (listSdmResponse.isSuccess()) { + List dataList = listSdmResponse.getData(); + if (CollectionUtils.isNotEmpty(dataList)) { + dataList = dataList.stream().filter(data -> data.getDataType() == DataTypeEnum.FILE.getValue()).toList(); + if (CollectionUtils.isNotEmpty(dataList)) { + dataMap = dataList.stream().collect(Collectors.toMap(FileMetadataInfoResp::getId, FileMetadataInfoResp::getOriginalName)); + } + } + } + } + } + + taskExtraMap = Optional.ofNullable(taskMapper.getTaskExtraList( + taskTreeTaskList.stream().map(TaskNodePo::getUuid).toList() + )).orElse(Collections.emptyList()).stream().collect(Collectors.groupingBy(TaskNodeExtraPo::getTaskId)); + if (CollectionUtils.isNotEmpty(taskTreePerformanceList)) { + performanceExtraList = performanceExtraService.lambdaQuery().in(SimulationPerformanceExtra::getPerformanceId, + taskTreePerformanceList.stream().map(PerformanceNodePo::getUuid).toList()).list(); + } + nodeExtraList = nodeMapper.getNodeExtraListByNodeIdList(realTopProjectNodeList.stream().map(ProjectNodePo::getUuid).toList()); + } + + + + for (ProjectNodePo projectNodePo : realTopProjectNodeList) { - generateTaskTree(projectNodePo,addedIdList,currentAddedIdList); + generateTaskTree(projectNodePo,addedIdList,currentAddedIdList,queryTaskFlag,taskMemberMap,cidUserMap, + dataMap,taskExtraMap,performanceExtraList,nodeExtraList); addedIdList.clear(); } // 汇总任务进度、仿真负责人、执行人 @@ -658,7 +738,8 @@ public class ProjectServiceImpl extends BaseService implements IProjectService { } } - private void generateTaskTree(ProjectNodePo projectNodePo,List addedIdList,List currentAddedIdList) { + private void generateTaskTree(ProjectNodePo projectNodePo,List addedIdList,List currentAddedIdList,Integer queryTaskFlag,Map> taskMemberMap,Map cidUserMap,Map dataMap,Map> taskExtraMap, + List performanceExtraList,List nodeExtraList) { currentAddedIdList.add(projectNodePo.getUuid()); String currentNodeType = projectNodePo.getNodeType(); String currentTag = taskTreeNodeTypeTagMap.get(currentNodeType); @@ -702,30 +783,28 @@ public class ProjectServiceImpl extends BaseService implements IProjectService { String realTagId = realTagObj.getValue(); // 查询当前节点下任务 List currentNodeAssociatedTaskList = new ArrayList<>(); - int currentNodeDepth = getCurrentNodeDepth(projectNodePo); - if (CollectionUtils.isNotEmpty(taskTreeTaskList)) { - currentNodeAssociatedTaskList = taskTreeTaskList.stream().filter(node -> { - try { - String nodeTagId = getTagProperty(node, realTag); - if (StringUtils.isBlank(nodeTagId)) { - return false; + if (queryTaskFlag != 1) { + int currentNodeDepth = getCurrentNodeDepth(projectNodePo); + if (CollectionUtils.isNotEmpty(taskTreeTaskList)) { + currentNodeAssociatedTaskList = taskTreeTaskList.stream().filter(node -> { + try { + String nodeTagId = getTagProperty(node, realTag); + if (StringUtils.isBlank(nodeTagId)) { + return false; + } + // tagId相同且:当前深度 = task深度 + 1 + return nodeTagId.equals(realTagId) && currentNodeDepth == getCurrentNodeDepth(node); + } catch (Exception e) { + throw new RuntimeException(e); } - // tagId相同且:当前深度 = task深度 + 1 - return nodeTagId.equals(realTagId) && currentNodeDepth == getCurrentNodeDepth(node); - } catch (Exception e) { - throw new RuntimeException(e); - } - }).collect(Collectors.toList()); + }).collect(Collectors.toList()); - if (CollectionUtils.isNotEmpty(currentNodeAssociatedTaskList)) { - // 转换执行规范的文件id为文件名称 - List standardList = currentNodeAssociatedTaskList.stream().map(TaskNodePo::getStandard).toList(); - Map dataMap = Map.of(); - if (CollectionUtils.isNotEmpty(standardList)) { - List fileIdList = new ArrayList<>(); - standardList = standardList.stream().filter(StringUtils::isNotBlank).toList(); - if (CollectionUtils.isNotEmpty(standardList)) { - for (String standard : standardList) { + if (CollectionUtils.isNotEmpty(currentNodeAssociatedTaskList)) { + for (TaskNodePo taskNodePo : currentNodeAssociatedTaskList) { + List fileIdList = new ArrayList<>(); + List fileNameList = new ArrayList<>(); + String standard = taskNodePo.getStandard(); + if (StringUtils.isNotBlank(taskNodePo.getStandard())) { if (standard.contains(";")) { // 4883,4556; List fileDirIdList = Arrays.stream(standard.split(";")).toList(); @@ -742,148 +821,143 @@ public class ProjectServiceImpl extends BaseService implements IProjectService { } fileIdList.addAll(normalFileIdList.stream().map(Long::valueOf).toList()); } - } - QueryFileReq queryFileReq = new QueryFileReq(); - queryFileReq.setFileIdList(fileIdList); - SdmResponse> listSdmResponse = dataClientFeignClient.queryFileListByIdList(queryFileReq); - if (listSdmResponse.isSuccess()) { - List dataList = listSdmResponse.getData(); - if (CollectionUtils.isNotEmpty(dataList)) { - dataList = dataList.stream().filter(data -> data.getDataType() == DataTypeEnum.FILE.getValue()).toList(); - if (CollectionUtils.isNotEmpty(dataList)) { - dataMap = dataList.stream().collect(Collectors.toMap(FileMetadataInfoResp::getId, FileMetadataInfoResp::getOriginalName)); - } - } - } - } - } - // 查询当前任务的所有拓展属性 - Map> taskExtraMap = Optional.ofNullable( - taskMapper.getTaskExtraList( - currentNodeAssociatedTaskList.stream() - .map(TaskNodePo::getUuid) - .toList() - ) - ).orElse(Collections.emptyList()).stream().collect(Collectors.groupingBy(TaskNodeExtraPo::getTaskId)); - for (TaskNodePo taskNodePo : currentNodeAssociatedTaskList) { - List fileIdList = new ArrayList<>(); - List fileNameList = new ArrayList<>(); - String standard = taskNodePo.getStandard(); - if (StringUtils.isNotBlank(taskNodePo.getStandard())) { - if (standard.contains(";")) { - // 4883,4556; - List fileDirIdList = Arrays.stream(standard.split(";")).toList(); - for (String fileDirId : fileDirIdList) { - if (!isConvertibleToLong(fileDirId.split(",")[1])) { + for (Long fileId : fileIdList) { + if (StringUtils.isBlank(dataMap.get(fileId))) { continue; } - fileIdList.add(Long.valueOf(fileDirId.split(",")[1])); + fileNameList.add(dataMap.get(fileId)); } - }else { - List normalFileIdList = Arrays.stream(standard.split(",")).toList().stream().filter(ProjectServiceImpl::isConvertibleToLong).toList(); - if (CollectionUtils.isEmpty(normalFileIdList)) { - continue; - } - fileIdList.addAll(normalFileIdList.stream().map(Long::valueOf).toList()); + taskNodePo.setStandardName(String.join(";", fileNameList)); } - for (Long fileId : fileIdList) { - if (StringUtils.isBlank(dataMap.get(fileId))) { - continue; - } - fileNameList.add(dataMap.get(fileId)); - } - taskNodePo.setStandardName(String.join(";", fileNameList)); - } - if (StringUtils.isNotBlank(taskNodePo.getFlowTemplate())) { - // 转换模板名称 - List flowTemplateNameList = new ArrayList<>(); - String[] flowTemplateArr = taskNodePo.getFlowTemplate().split(","); - for (String flowTemplate : flowTemplateArr) { - SdmResponse flowTemplateResp = flowFeignClient.queryFlowTemplateInfoByTemplateCode(flowTemplate); - if (flowTemplateResp.getData() == null) { - continue; - } - flowTemplateNameList.add(flowTemplateResp.getData().getTemplateName()); - } - if (CollectionUtils.isNotEmpty(flowTemplateNameList)) { - taskNodePo.setFlowTemplateNames(String.join(",", flowTemplateNameList)); - } - } - // 返回任务的拓展属性 - taskNodePo.setExtras(taskExtraMap.get(taskNodePo.getUuid())); - } - - // 查询当前任务下指标 - Map taskMap = currentNodeAssociatedTaskList.stream().collect(Collectors.groupingBy( - TaskNodePo::getUuid, - Collectors.collectingAndThen( - Collectors.toList(), - list -> list.get(0) - ) - )); - if (CollectionUtils.isNotEmpty(taskTreePerformanceList)) { - List eachPerformanceNodeList; - List currentTaskAssociatedPerformanceList = taskTreePerformanceList.stream().filter(performance -> ObjectUtils.isNotEmpty(taskMap.get(performance.getTaskId())) && performance.getRunId() == null).toList(); - if (CollectionUtils.isNotEmpty(currentTaskAssociatedPerformanceList)) { - // 设置拓展属性 - List performanceIdList = currentTaskAssociatedPerformanceList.stream().map(PerformanceNodePo::getUuid).toList(); - List performanceExtraList = performanceExtraService.lambdaQuery().in(SimulationPerformanceExtra::getPerformanceId, performanceIdList).list(); - Map> performanceExtraMap = new HashMap<>(); - if (CollectionUtils.isNotEmpty(performanceExtraList)) { - performanceExtraMap = performanceExtraList.stream().collect(Collectors.groupingBy(SimulationPerformanceExtra::getPerformanceId)); - } - - Map> performanceMap = currentTaskAssociatedPerformanceList.stream().collect(Collectors.groupingBy(PerformanceNodePo::getTaskId)); - for (TaskNodePo taskNodePo : currentNodeAssociatedTaskList) { - eachPerformanceNodeList = performanceMap.get(taskNodePo.getUuid()); - if (CollectionUtils.isNotEmpty(eachPerformanceNodeList)) { - for (PerformanceNodePo performanceNodePo : eachPerformanceNodeList) { - if (StringUtils.isBlank(performanceNodePo.getEnglishName())) { - performanceNodePo.setEnglishName(""); - } - performanceNodePo.setExtras(performanceExtraMap.get(performanceNodePo.getUuid())); + if (StringUtils.isNotBlank(taskNodePo.getFlowTemplate())) { + // 转换模板名称 + List flowTemplateNameList = new ArrayList<>(); + String[] flowTemplateArr = taskNodePo.getFlowTemplate().split(","); + for (String flowTemplate : flowTemplateArr) { + SdmResponse flowTemplateResp = flowFeignClient.queryFlowTemplateInfoByTemplateCode(flowTemplate); + if (flowTemplateResp.getData() == null) { + continue; + } + flowTemplateNameList.add(flowTemplateResp.getData().getTemplateName()); + } + if (CollectionUtils.isNotEmpty(flowTemplateNameList)) { + taskNodePo.setFlowTemplateNames(String.join(",", flowTemplateNameList)); + } + } + // 返回任务的拓展属性 + taskNodePo.setExtras(taskExtraMap.get(taskNodePo.getUuid())); + } + + // 查询当前任务下指标 + Map taskMap = currentNodeAssociatedTaskList.stream().collect(Collectors.groupingBy( + TaskNodePo::getUuid, + Collectors.collectingAndThen( + Collectors.toList(), + list -> list.get(0) + ) + )); + if (CollectionUtils.isNotEmpty(taskTreePerformanceList)) { + List eachPerformanceNodeList; + List currentTaskAssociatedPerformanceList = taskTreePerformanceList.stream().filter(performance -> ObjectUtils.isNotEmpty(taskMap.get(performance.getTaskId())) && performance.getRunId() == null).toList(); + if (CollectionUtils.isNotEmpty(currentTaskAssociatedPerformanceList)) { + // 设置拓展属性 + Map> performanceExtraMap = new HashMap<>(); + if (CollectionUtils.isNotEmpty(performanceExtraList)) { + performanceExtraMap = performanceExtraList.stream().collect(Collectors.groupingBy(SimulationPerformanceExtra::getPerformanceId)); + } + + Map> performanceMap = currentTaskAssociatedPerformanceList.stream().collect(Collectors.groupingBy(PerformanceNodePo::getTaskId)); + for (TaskNodePo taskNodePo : currentNodeAssociatedTaskList) { + eachPerformanceNodeList = performanceMap.get(taskNodePo.getUuid()); + if (CollectionUtils.isNotEmpty(eachPerformanceNodeList)) { + for (PerformanceNodePo performanceNodePo : eachPerformanceNodeList) { + if (StringUtils.isBlank(performanceNodePo.getEnglishName())) { + performanceNodePo.setEnglishName(""); + } + performanceNodePo.setExtras(performanceExtraMap.get(performanceNodePo.getUuid())); + } + taskNodePo.getChildren().addAll(eachPerformanceNodeList); } - taskNodePo.getChildren().addAll(eachPerformanceNodeList); } } } - } - // 查询当前任务的负责人和执行人 - for (TaskNodePo taskNodePo : currentNodeAssociatedTaskList) { - List memberList = simulationTaskMemberService.lambdaQuery().eq(SimulationTaskMember::getTaskId, taskNodePo.getUuid()).list(); - if (CollectionUtils.isNotEmpty(memberList)) { - List eUserIdList = memberList.stream().filter(member -> MemberTypeEnum.EXECUTOR.getCode().equals(member.getType())).map(SimulationTaskMember::getUserId).distinct().toList(); - List pUserIdList = memberList.stream().filter(member -> MemberTypeEnum.PRINCIPAL.getCode().equals(member.getType())).map(SimulationTaskMember::getUserId).distinct().toList(); - // 关注人 - List attionUserIdList = memberList.stream().filter(member -> MemberTypeEnum.ATTENTION.getCode().equals(member.getType())).map(SimulationTaskMember::getUserId).distinct().toList(); + // 查询当前任务的负责人和执行人 + for (TaskNodePo taskNodePo : currentNodeAssociatedTaskList) { + List memberList = taskMemberMap.get(taskNodePo.getUuid()); + if (CollectionUtils.isNotEmpty(memberList)) { + List eUserIdList = memberList.stream().filter(member -> MemberTypeEnum.EXECUTOR.getCode().equals(member.getType())).map(SimulationTaskMember::getUserId).distinct().toList(); + List pUserIdList = memberList.stream().filter(member -> MemberTypeEnum.PRINCIPAL.getCode().equals(member.getType())).map(SimulationTaskMember::getUserId).distinct().toList(); + // 关注人 + List attionUserIdList = memberList.stream().filter(member -> MemberTypeEnum.ATTENTION.getCode().equals(member.getType())).map(SimulationTaskMember::getUserId).distinct().toList(); - if (CollectionUtils.isNotEmpty(eUserIdList)) { - SdmResponse> cidUserResp= sysUserFeignClient.listUserByIds(UserQueryReq.builder().userIds(eUserIdList).build()); - taskNodePo.setEMemberList(cidUserResp.getData()); - if (CollectionUtils.isNotEmpty(taskNodePo.getEMemberList())) { - taskNodePo.setEMembers(taskNodePo.getEMemberList().stream().map(CIDUserResp::getNickname).collect(Collectors.joining(","))); + if (CollectionUtils.isNotEmpty(eUserIdList)) { + List eMemberList = new ArrayList<>(); + for (Long eUserId : eUserIdList) { + CIDUserResp cidUserResp = cidUserMap.get(eUserId); + if (ObjectUtils.isEmpty(cidUserResp)) { + continue; + } + eMemberList.add(cidUserResp); + } + taskNodePo.setEMemberList(eMemberList); + if (CollectionUtils.isNotEmpty(taskNodePo.getEMemberList())) { + taskNodePo.setEMembers(taskNodePo.getEMemberList().stream().map(CIDUserResp::getNickname).collect(Collectors.joining(","))); + } } - } - if (CollectionUtils.isNotEmpty(pUserIdList)) { - SdmResponse> cidUserResp= sysUserFeignClient.listUserByIds(UserQueryReq.builder().userIds(pUserIdList).build()); - taskNodePo.setPMemberList(cidUserResp.getData()); - if (CollectionUtils.isNotEmpty(taskNodePo.getPMemberList())) { - taskNodePo.setPMembers(taskNodePo.getPMemberList().stream().map(CIDUserResp::getNickname).collect(Collectors.joining(","))); - } - } - // 设置关注人 - if (CollectionUtils.isNotEmpty(attionUserIdList)) { - SdmResponse> cidUserResp= sysUserFeignClient.listUserByIds(UserQueryReq.builder().userIds(attionUserIdList).build()); - taskNodePo.setPayAttentionMemberList(cidUserResp.getData()); - if (CollectionUtils.isNotEmpty(taskNodePo.getPayAttentionMemberList())) { - taskNodePo.setAttionMembers(taskNodePo.getPayAttentionMemberList().stream().map(CIDUserResp::getNickname).collect(Collectors.joining(","))); - } - } + if (CollectionUtils.isNotEmpty(pUserIdList)) { + List pMemberList = new ArrayList<>(); + for (Long pUserId : pUserIdList) { + CIDUserResp cidUserResp = cidUserMap.get(pUserId); + if (ObjectUtils.isEmpty(cidUserResp)) { + continue; + } + pMemberList.add(cidUserResp); + } + taskNodePo.setPMemberList(pMemberList); + if (CollectionUtils.isNotEmpty(taskNodePo.getPMemberList())) { + taskNodePo.setPMembers(taskNodePo.getPMemberList().stream().map(CIDUserResp::getNickname).collect(Collectors.joining(","))); + } + } + + if (CollectionUtils.isNotEmpty(attionUserIdList)) { + List aMemberList = new ArrayList<>(); + for (Long aUserId : attionUserIdList) { + CIDUserResp cidUserResp = cidUserMap.get(aUserId); + if (ObjectUtils.isEmpty(cidUserResp)) { + continue; + } + aMemberList.add(cidUserResp); + } + taskNodePo.setPayAttentionMemberList(aMemberList); + if (CollectionUtils.isNotEmpty(taskNodePo.getPayAttentionMemberList())) { + taskNodePo.setAttionMembers(taskNodePo.getPayAttentionMemberList().stream().map(CIDUserResp::getNickname).collect(Collectors.joining(","))); + } + } + + + if (CollectionUtils.isNotEmpty(pUserIdList)) { + SdmResponse> cidUserResp= sysUserFeignClient.listUserByIds(UserQueryReq.builder().userIds(pUserIdList).build()); + taskNodePo.setPMemberList(cidUserResp.getData()); + if (CollectionUtils.isNotEmpty(taskNodePo.getPMemberList())) { + taskNodePo.setPMembers(taskNodePo.getPMemberList().stream().map(CIDUserResp::getNickname).collect(Collectors.joining(","))); + } + } + // 设置关注人 + if (CollectionUtils.isNotEmpty(attionUserIdList)) { + SdmResponse> cidUserResp= sysUserFeignClient.listUserByIds(UserQueryReq.builder().userIds(attionUserIdList).build()); + taskNodePo.setPayAttentionMemberList(cidUserResp.getData()); + if (CollectionUtils.isNotEmpty(taskNodePo.getPayAttentionMemberList())) { + taskNodePo.setAttionMembers(taskNodePo.getPayAttentionMemberList().stream().map(CIDUserResp::getNickname).collect(Collectors.joining(","))); + } + } + + } } } } } + // 查询子节点,可能是同类型节点也可能是不同类型节点 // 先查同类型节点:当前标签下,包含currentNodeTagId且深度+1 int depth = getCurrentNodeDepth(projectNodePo); @@ -905,7 +979,8 @@ public class ProjectServiceImpl extends BaseService implements IProjectService { if (CollectionUtils.isNotEmpty(sameTypeNodeList)) { // 递归 for (ProjectNodePo nodePo : sameTypeNodeList) { - generateTaskTree(nodePo,addedIdList,currentAddedIdList); + generateTaskTree(nodePo,addedIdList,currentAddedIdList,queryTaskFlag,taskMemberMap,cidUserMap, + dataMap,taskExtraMap,performanceExtraList,nodeExtraList); } if (CollectionUtils.isNotEmpty(sameTypeNodeList)) { addedIdList.addAll(sameTypeNodeList.stream().map(ProjectNodePo::getUuid).toList()); @@ -933,7 +1008,8 @@ public class ProjectServiceImpl extends BaseService implements IProjectService { if (CollectionUtils.isNotEmpty(childrenTypeNodeList)) { // 递归 for (ProjectNodePo nodePo : childrenTypeNodeList) { - generateTaskTree(nodePo,addedIdList,currentAddedIdList); + generateTaskTree(nodePo,addedIdList,currentAddedIdList,queryTaskFlag,taskMemberMap,cidUserMap, + dataMap,taskExtraMap,performanceExtraList,nodeExtraList); } addedIdList.addAll(childrenTypeNodeList.stream().map(ProjectNodePo::getUuid).toList()); for (ProjectNodePo nodePo : childrenTypeNodeList) { @@ -965,7 +1041,8 @@ public class ProjectServiceImpl extends BaseService implements IProjectService { if (CollectionUtils.isNotEmpty(otherChildrenNodeList)) { // 递归 for (ProjectNodePo nodePo : otherChildrenNodeList) { - generateTaskTree(nodePo,addedIdList,currentAddedIdList); + generateTaskTree(nodePo,addedIdList,currentAddedIdList,queryTaskFlag,taskMemberMap,cidUserMap, + dataMap,taskExtraMap,performanceExtraList,nodeExtraList); } addedIdList.addAll(otherChildrenNodeList.stream().map(ProjectNodePo::getUuid).toList()); for (ProjectNodePo nodePo : otherChildrenNodeList) { @@ -991,7 +1068,9 @@ public class ProjectServiceImpl extends BaseService implements IProjectService { } projectNodePo.setChildren(children); // 设置拓展属性 - projectNodePo.setExtras(nodeMapper.getNodeExtraListByNodeIdList(Collections.singletonList(projectNodePo.getUuid()))); + if (queryTaskFlag != 1) { + projectNodePo.setExtras(nodeExtraList.stream().filter(nodeExtra -> projectNodePo.getUuid().equals(nodeExtra.getNodeId())).toList()); + } } private TaskNodeTag getRealTagId(ProjectNodePo projectNodePo) {