modify、getTaskTree bug fix

This commit is contained in:
2025-10-20 13:30:13 +08:00
parent 8badf53d4d
commit 660550dd6c
4 changed files with 455 additions and 267 deletions

View File

@@ -1,6 +1,7 @@
package com.sdm.project.controller;
import com.sdm.common.common.SdmResponse;
import com.sdm.project.model.bo.ModifyProjectNode;
import com.sdm.project.model.req.SpdmAddDemandReq;
import com.sdm.project.model.req.SpdmDeleteDemandReq;
import com.sdm.project.model.req.SpdmDemandListReq;
@@ -69,4 +70,16 @@ public class SimulationDemandController {
return demandService.list(req);
}
// /**
// * 下发任务
// *
// * @param req
// * @return
// */
// @PostMapping("/issueTask")
// @Operation(summary = "下发任务", description = "下发任务")
// public SdmResponse issueTask(@RequestBody ModifyProjectNode req) {
// return demandService.issueTask(req);
// }
}

View File

@@ -104,25 +104,25 @@ public class SpdmNodeDetailReq extends BaseEntity {
private String bCapacity;
@JsonProperty(value = "Tag1")
private List<String> Tag1;
private String Tag1;
@JsonProperty(value = "Tag2")
private List<String> Tag2;
private String Tag2;
@JsonProperty(value = "Tag3")
private List<String> Tag3;
private String Tag3;
@JsonProperty(value = "Tag4")
private List<String> Tag4;
private String Tag4;
@JsonProperty(value = "Tag5")
private List<String> Tag5;
private String Tag5;
@JsonProperty(value = "Tag6")
private List<String> Tag6;
private String Tag6;
@JsonProperty(value = "Tag7")
private List<String> Tag7;
private String Tag7;
@JsonProperty(value = "Tag8")
private List<String> Tag8;
private String Tag8;
@JsonProperty(value = "Tag9")
private List<String> Tag9;
private String Tag9;
@JsonProperty(value = "Tag10")
private List<String> Tag10;
private String Tag10;
private String exeStatus;
}

View File

@@ -28,6 +28,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import reactor.util.function.Tuple2;
import java.text.SimpleDateFormat;
import java.util.*;
@@ -53,6 +54,8 @@ public class ProjectServiceImpl extends BaseService implements IProjectService {
private HashMap<String, List<String>> idMap = new HashMap<>();
private HashMap<String, List<String>> taskIdMap = new HashMap<>();
private HashMap<String, List<String>> projectIdMap = new HashMap<>();
List<TaskNodeTag> tagMap;
@@ -71,6 +74,10 @@ public class ProjectServiceImpl extends BaseService implements IProjectService {
Map<String,List<ProjectNodePo>> taskTreeProjectNodeMap = new HashMap<>();
String lastNodeTag;
String firstNodeTag;
@Override
@Transactional
public SdmResponse add(JSONObject jsonObject) {
@@ -226,6 +233,8 @@ public class ProjectServiceImpl extends BaseService implements IProjectService {
}
}
taskTreeTagMap = req.getTagMap();
firstNodeTag = taskTreeTagMap.get(0).getValue();
lastNodeTag = taskTreeTagMap.get(taskTreeTagMap.size()-1).getValue();
log.info("taskTreeTagMap为{}", taskTreeTagMap);
if (CollectionUtils.isEmpty(taskTreeTagMap)) {
log.error("tagMap不能为空");
@@ -301,6 +310,12 @@ public class ProjectServiceImpl extends BaseService implements IProjectService {
private void generateTaskTree(ProjectNodePo projectNodePo) {
String currentNodeType = projectNodePo.getNodeType();
String currentTag = taskTreeNodeTypeTagMap.get(currentNodeType);
TaskNodeTag nextNodeTag = getNextNodeTag(currentTag);
if (ObjectUtils.isEmpty(nextNodeTag)) {
log.error("未找到子标签");
return;
}
log.info("当前标签:{},子标签:{}",currentTag,nextNodeTag);
String currentNodeTagId = "";
try {
currentNodeTagId = getTagProperty(projectNodePo, currentTag);
@@ -308,21 +323,43 @@ public class ProjectServiceImpl extends BaseService implements IProjectService {
throw new RuntimeException(e);
}
if (StringUtils.isBlank(currentNodeTagId)) {
String realCurrentTag = currentTag;
log.info("找前一个标签");
while (StringUtils.isBlank(currentNodeTagId) && !firstNodeTag.equals(realCurrentTag) && !lastNodeTag.equals(realCurrentTag)) {
realCurrentTag = getPreNodeTag(realCurrentTag).getValue();
try {
currentNodeTagId = getTagProperty(projectNodePo, realCurrentTag);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
currentTag = realCurrentTag;
}
if (StringUtils.isBlank(currentNodeTagId)) {
log.error("currentNodeTagId为空");
return;
}
String finalCurrentNodeTagId = currentNodeTagId;
// 需要找到当前节点创建节点时的tagId
TaskNodeTag realTagObj = getRealTagId(projectNodePo);
if (StringUtils.isBlank(realTagObj.getKey()) && StringUtils.isBlank(realTagObj.getValue())) {
log.error("realTagObj为空");
return;
}
String realTag = realTagObj.getKey();
String realTagId = realTagObj.getValue();
// 查询当前节点下任务
List<TaskNodePo> currentNodeAssociatedTaskList = new ArrayList<>();
int currentNodeDepth = getCurrentNodeDepth(projectNodePo);
if (CollectionUtils.isNotEmpty(taskTreeTaskList)) {
currentNodeAssociatedTaskList = taskTreeTaskList.stream().filter(node -> {
try {
String nodeTagId = getTagProperty(node, currentTag);
String nodeTagId = getTagProperty(node, realTag);
if (StringUtils.isBlank(nodeTagId)) {
return false;
}
// tagId相同且当前深度 = task深度 + 1
return nodeTagId.equals(finalCurrentNodeTagId) && currentNodeDepth == getCurrentNodeDepth(node);
return nodeTagId.equals(realTagId) && currentNodeDepth == getCurrentNodeDepth(node);
} catch (Exception e) {
throw new RuntimeException(e);
}
@@ -354,54 +391,182 @@ public class ProjectServiceImpl extends BaseService implements IProjectService {
}
// 查询子节点,可能是同类型节点也可能是不同类型节点
// 先查同类型节点当前标签下包含currentNodeTagId且深度+1
int depth = finalCurrentNodeTagId.split(",").length;
// int depth = finalCurrentNodeTagId.split(",").length;
int depth = getCurrentNodeDepth(projectNodePo);
String finalCurrentTag = currentTag;
List<ProjectNodePo> sameTypeNodeList = taskTreeNodeList.stream().filter(node -> {
try {
String nodeTagId = getTagProperty(node, currentTag);
String nodeTagId = getTagProperty(node, finalCurrentTag);
if (StringUtils.isBlank(nodeTagId)) {
return false;
}
return node.getNodeType().equals(currentNodeType) && nodeTagId.contains(finalCurrentNodeTagId) && (nodeTagId.split(",").length == depth + 1);
return node.getNodeType().equals(currentNodeType) && nodeTagId.contains(finalCurrentNodeTagId) && getCurrentNodeDepth(node) == depth + 1;
} catch (Exception e) {
throw new RuntimeException(e);
}
}).collect(Collectors.toList());
// 再查不同类型的节点:下一标签下的节点
TaskNodeTag finalNextNodeTag = nextNodeTag;
// List<ProjectNodePo> childrenTypeNodeList = taskTreeNodeList.stream().filter(node -> {
// try {
// String nodeTagId = getTagProperty(node, currentTag);
// if (StringUtils.isBlank(nodeTagId)) {
// return false;
// }
// // tagId相同且当前深度 = task深度 + 1
// // tagId相同且nodeType是nextNodeTag类型且子tagId的深度最少
// return nodeTagId.equals(finalCurrentNodeTagId) && node.getNodeType().equals(finalNextNodeTag.getKey());
//// return nodeTagId.equals(finalCurrentNodeTagId) && currentNodeDepth == getCurrentNodeDepth(node) - 1;
// } catch (Exception e) {
// throw new RuntimeException(e);
// }
// }).collect(Collectors.toList());
// maxNodeTagSize
List<NodeAllBase> children = new ArrayList<>();
if (CollectionUtils.isNotEmpty(sameTypeNodeList)) {
// 递归
for (ProjectNodePo nodePo : sameTypeNodeList) {
generateTaskTree(nodePo);
}
if (CollectionUtils.isNotEmpty(sameTypeNodeList)) {
children.addAll(sameTypeNodeList);
}
}else if (!currentTag.equals(finalNextNodeTag.getValue()) && !lastNodeTag.equals(currentTag)){
List<ProjectNodePo> childrenTypeNodeList = getChildrenTypeNodeList(currentTag,finalNextNodeTag,finalCurrentNodeTagId);
if (CollectionUtils.isNotEmpty(childrenTypeNodeList)) {
int firstLayerNodeDepth = getFirstLayerNodeDepth(childrenTypeNodeList);
childrenTypeNodeList = childrenTypeNodeList.stream().filter(node -> getCurrentNodeDepth(node) == firstLayerNodeDepth).collect(Collectors.toList());
if (CollectionUtils.isNotEmpty(childrenTypeNodeList)) {
// 递归
for (ProjectNodePo nodePo : childrenTypeNodeList) {
generateTaskTree(nodePo);
}
}
}
if (CollectionUtils.isNotEmpty(childrenTypeNodeList)) {
children.addAll(childrenTypeNodeList);
}
}
if (CollectionUtils.isNotEmpty(currentNodeAssociatedTaskList)) {
currentNodeAssociatedTaskList.forEach(task -> task.setNodeName(task.getTaskName()));
children.addAll(currentNodeAssociatedTaskList);
}
projectNodePo.setChildren(children);
}
private TaskNodeTag getRealTagId(ProjectNodePo projectNodePo) {
TaskNodeTag taskNodeTag = new TaskNodeTag();
String tag10 = projectNodePo.getTag10();
if (StringUtils.isNotBlank(tag10)) {
taskNodeTag.setKey("Tag10");
taskNodeTag.setValue(tag10);
return taskNodeTag;
}
String tag9 = projectNodePo.getTag9();
if (StringUtils.isNotBlank(tag9)) {
taskNodeTag.setKey("Tag9");
taskNodeTag.setValue(tag9);
return taskNodeTag;
}
String tag8 = projectNodePo.getTag8();
if (StringUtils.isNotBlank(tag8)) {
taskNodeTag.setKey("Tag8");
taskNodeTag.setValue(tag8);
return taskNodeTag;
}
String tag7 = projectNodePo.getTag7();
if (StringUtils.isNotBlank(tag7)) {
taskNodeTag.setKey("Tag7");
taskNodeTag.setValue(tag7);
return taskNodeTag;
}
String tag6 = projectNodePo.getTag6();
if (StringUtils.isNotBlank(tag6)) {
taskNodeTag.setKey("Tag6");
taskNodeTag.setValue(tag6);
return taskNodeTag;
}
String tag5 = projectNodePo.getTag5();
if (StringUtils.isNotBlank(tag5)) {
taskNodeTag.setKey("Tag5");
taskNodeTag.setValue(tag5);
return taskNodeTag;
}
String tag4 = projectNodePo.getTag4();
if (StringUtils.isNotBlank(tag4)) {
taskNodeTag.setKey("Tag4");
taskNodeTag.setValue(tag4);
return taskNodeTag;
}
String tag3 = projectNodePo.getTag3();
if (StringUtils.isNotBlank(tag3)) {
taskNodeTag.setKey("Tag3");
taskNodeTag.setValue(tag3);
return taskNodeTag;
}
String tag2 = projectNodePo.getTag2();
if (StringUtils.isNotBlank(tag2)) {
taskNodeTag.setKey("Tag2");
taskNodeTag.setValue(tag2);
return taskNodeTag;
}
String tag1 = projectNodePo.getTag1();
if (StringUtils.isNotBlank(tag1)) {
taskNodeTag.setKey("Tag1");
taskNodeTag.setValue(tag1);
}
return taskNodeTag;
}
private List<ProjectNodePo> getChildrenTypeNodeList(String currentTag, TaskNodeTag nextNodeTag, String currentNodeTagId) {
List<ProjectNodePo> childrenTypeNodeList = taskTreeNodeList.stream().filter(node -> {
try {
String nodeTagId = getTagProperty(node, currentTag);
if (StringUtils.isBlank(nodeTagId)) {
return false;
}
// tagId相同且:当前深度 = task深度 + 1
return nodeTagId.equals(finalCurrentNodeTagId) && currentNodeDepth == getCurrentNodeDepth(node) - 1;
// tagId相同且nodeType是nextNodeTag类型且子tagId的深度最少
return nodeTagId.equals(currentNodeTagId) && node.getNodeType().equals(nextNodeTag.getKey());
} catch (Exception e) {
throw new RuntimeException(e);
}
}).collect(Collectors.toList());
if (CollectionUtils.isNotEmpty(sameTypeNodeList)) {
// 递归
for (ProjectNodePo nodePo : sameTypeNodeList) {
generateTaskTree(nodePo);
}
}else if (CollectionUtils.isNotEmpty(childrenTypeNodeList)) {
// 递归
for (ProjectNodePo nodePo : childrenTypeNodeList) {
generateTaskTree(nodePo);
if (CollectionUtils.isNotEmpty(childrenTypeNodeList) || lastNodeTag.equals(nextNodeTag.getValue())) {
return childrenTypeNodeList;
}
return getChildrenTypeNodeList(currentTag,getNextNodeTag(nextNodeTag.getValue()),currentNodeTagId);
}
private TaskNodeTag getNextNodeTag(String currentTag) {
TaskNodeTag nextNodeTag = null;
for (int i = 0; i < taskTreeTagMap.size(); i++) {
if (taskTreeTagMap.get(i).getValue().equals(currentTag)) {
nextNodeTag = taskTreeTagMap.get(Math.min(i+1,taskTreeTagMap.size()-1));
break;
}
}
List<NodeAllBase> children = new ArrayList<>();
if (CollectionUtils.isNotEmpty(sameTypeNodeList)) {
children.addAll(sameTypeNodeList);
return nextNodeTag;
}
private TaskNodeTag getPreNodeTag(String currentTag) {
TaskNodeTag nextNodeTag = null;
for (int i = 0; i < taskTreeTagMap.size(); i++) {
if (taskTreeTagMap.get(i).getValue().equals(currentTag)) {
nextNodeTag = taskTreeTagMap.get(Math.max(i-1,0));
break;
}
}
if (CollectionUtils.isNotEmpty(childrenTypeNodeList)) {
children.addAll(childrenTypeNodeList);
return nextNodeTag;
}
private int getFirstLayerNodeDepth(List<ProjectNodePo> childrenTypeNodeList) {
int firstLayerNodeDepth = getCurrentNodeDepth(childrenTypeNodeList.get(0));
for (ProjectNodePo projectNodePo : childrenTypeNodeList) {
firstLayerNodeDepth = Math.min(getCurrentNodeDepth(projectNodePo),firstLayerNodeDepth);
}
if (CollectionUtils.isNotEmpty(currentNodeAssociatedTaskList)) {
currentNodeAssociatedTaskList.forEach(task -> task.setNodeName(task.getTaskName()));
children.addAll(currentNodeAssociatedTaskList);
}
projectNodePo.setChildren(children);
return firstLayerNodeDepth;
}
@Override
@@ -872,9 +1037,9 @@ public class ProjectServiceImpl extends BaseService implements IProjectService {
for (TaskNodeTag taskNodeTag : tagList) {
if ("Tag1".equals(taskNodeTag.getValue())) {
if (CollectionUtils.isNotEmpty(tag1List)) {
tag1List.addAll(idMap.get(taskNodeTag.getKey()));
tag1List.addAll(taskIdMap.get(taskNodeTag.getKey()));
} else {
tag1List = idMap.get(taskNodeTag.getKey());
tag1List = taskIdMap.get(taskNodeTag.getKey());
}
if (CollectionUtils.isNotEmpty(tag1List)) {
projectNode.setTag1(tag1List);
@@ -891,9 +1056,9 @@ public class ProjectServiceImpl extends BaseService implements IProjectService {
for (TaskNodeTag taskNodeTag : tagList) {
if ("Tag2".equals(taskNodeTag.getValue())) {
if (CollectionUtils.isNotEmpty(tag2List)) {
tag2List.addAll(idMap.get(taskNodeTag.getKey()));
tag2List.addAll(taskIdMap.get(taskNodeTag.getKey()));
} else {
tag2List = idMap.get(taskNodeTag.getKey());
tag2List = taskIdMap.get(taskNodeTag.getKey());
}
if (CollectionUtils.isNotEmpty(tag2List)) {
projectNode.setTag2(tag2List);
@@ -910,9 +1075,9 @@ public class ProjectServiceImpl extends BaseService implements IProjectService {
for (TaskNodeTag taskNodeTag : tagList) {
if ("Tag3".equals(taskNodeTag.getValue())) {
if (CollectionUtils.isNotEmpty(tag3List)) {
tag3List.addAll(idMap.get(taskNodeTag.getKey()));
tag3List.addAll(taskIdMap.get(taskNodeTag.getKey()));
} else {
tag3List = idMap.get(taskNodeTag.getKey());
tag3List = taskIdMap.get(taskNodeTag.getKey());
}
if (CollectionUtils.isNotEmpty(tag3List)) {
projectNode.setTag3(tag3List);
@@ -929,9 +1094,9 @@ public class ProjectServiceImpl extends BaseService implements IProjectService {
for (TaskNodeTag taskNodeTag : tagList) {
if ("Tag4".equals(taskNodeTag.getValue())) {
if (CollectionUtils.isNotEmpty(tag4List)) {
tag4List.addAll(idMap.get(taskNodeTag.getKey()));
tag4List.addAll(taskIdMap.get(taskNodeTag.getKey()));
} else {
tag4List = idMap.get(taskNodeTag.getKey());
tag4List = taskIdMap.get(taskNodeTag.getKey());
}
if (CollectionUtils.isNotEmpty(tag4List)) {
projectNode.setTag4(tag4List);
@@ -948,9 +1113,9 @@ public class ProjectServiceImpl extends BaseService implements IProjectService {
for (TaskNodeTag taskNodeTag : tagList) {
if ("Tag5".equals(taskNodeTag.getValue())) {
if (CollectionUtils.isNotEmpty(tag5List)) {
tag5List.addAll(idMap.get(taskNodeTag.getKey()));
tag5List.addAll(taskIdMap.get(taskNodeTag.getKey()));
} else {
tag5List = idMap.get(taskNodeTag.getKey());
tag5List = taskIdMap.get(taskNodeTag.getKey());
}
if (CollectionUtils.isNotEmpty(tag5List)) {
projectNode.setTag5(tag5List);
@@ -967,9 +1132,9 @@ public class ProjectServiceImpl extends BaseService implements IProjectService {
for (TaskNodeTag taskNodeTag : tagList) {
if ("Tag6".equals(taskNodeTag.getValue())) {
if (CollectionUtils.isNotEmpty(tag6List)) {
tag6List.addAll(idMap.get(taskNodeTag.getKey()));
tag6List.addAll(taskIdMap.get(taskNodeTag.getKey()));
} else {
tag6List = idMap.get(taskNodeTag.getKey());
tag6List = taskIdMap.get(taskNodeTag.getKey());
}
if (CollectionUtils.isNotEmpty(tag6List)) {
projectNode.setTag6(tag6List);
@@ -986,9 +1151,9 @@ public class ProjectServiceImpl extends BaseService implements IProjectService {
for (TaskNodeTag taskNodeTag : tagList) {
if ("Tag7".equals(taskNodeTag.getValue())) {
if (CollectionUtils.isNotEmpty(tag7List)) {
tag7List.addAll(idMap.get(taskNodeTag.getKey()));
tag7List.addAll(taskIdMap.get(taskNodeTag.getKey()));
} else {
tag7List = idMap.get(taskNodeTag.getKey());
tag7List = taskIdMap.get(taskNodeTag.getKey());
}
if (CollectionUtils.isNotEmpty(tag7List)) {
projectNode.setTag7(tag7List);
@@ -1005,9 +1170,9 @@ public class ProjectServiceImpl extends BaseService implements IProjectService {
for (TaskNodeTag taskNodeTag : tagList) {
if ("Tag8".equals(taskNodeTag.getValue())) {
if (CollectionUtils.isNotEmpty(tag8List)) {
tag8List.addAll(idMap.get(taskNodeTag.getKey()));
tag8List.addAll(taskIdMap.get(taskNodeTag.getKey()));
} else {
tag8List = idMap.get(taskNodeTag.getKey());
tag8List = taskIdMap.get(taskNodeTag.getKey());
}
if (CollectionUtils.isNotEmpty(tag8List)) {
projectNode.setTag8(tag8List);
@@ -1024,9 +1189,9 @@ public class ProjectServiceImpl extends BaseService implements IProjectService {
for (TaskNodeTag taskNodeTag : tagList) {
if ("Tag9".equals(taskNodeTag.getValue())) {
if (CollectionUtils.isNotEmpty(tag9List)) {
tag9List.addAll(idMap.get(taskNodeTag.getKey()));
tag9List.addAll(taskIdMap.get(taskNodeTag.getKey()));
} else {
tag9List = idMap.get(taskNodeTag.getKey());
tag9List = taskIdMap.get(taskNodeTag.getKey());
}
if (CollectionUtils.isNotEmpty(tag9List)) {
projectNode.setTag9(tag9List);
@@ -1043,9 +1208,9 @@ public class ProjectServiceImpl extends BaseService implements IProjectService {
for (TaskNodeTag taskNodeTag : tagList) {
if ("Tag10".equals(taskNodeTag.getValue())) {
if (CollectionUtils.isNotEmpty(tag10List)) {
tag10List.addAll(idMap.get(taskNodeTag.getKey()));
tag10List.addAll(taskIdMap.get(taskNodeTag.getKey()));
} else {
tag10List = idMap.get(taskNodeTag.getKey());
tag10List = taskIdMap.get(taskNodeTag.getKey());
}
if (CollectionUtils.isNotEmpty(tag10List)) {
projectNode.setTag10(tag10List);
@@ -1093,6 +1258,7 @@ public class ProjectServiceImpl extends BaseService implements IProjectService {
}
tagList.add(projectNode.getUuid());
idMap.put(projectNode.getNodeType(), tagList);
taskIdMap.put(projectNode.getNodeType(), tagList);
projectNodeList.add(projectNode);
List<TaskMemberNode> taskMemberNodeList = projectNode.getMemberList();
if (CollectionUtils.isNotEmpty(taskMemberNodeList)) {
@@ -1169,205 +1335,15 @@ public class ProjectServiceImpl extends BaseService implements IProjectService {
List<TaskExtraNode> taskNodeExtraList = new ArrayList<>();
List<TaskNode> projectNodePerformanceList = new ArrayList<>();
List<TaskExtraNode> projectNodePerformanceExtraList = new ArrayList<>();
List<String> newAllProjectNodeList = new ArrayList<>();
List<TaskNode> eachProjectNodeList = new ArrayList<>();
// List<String> newAllProjectNodeList = new ArrayList<>();
// List<TaskNode> eachProjectNodeList = new ArrayList<>();
for (TaskNode taskNode : taskNodeTree.getNodeList()) {
currentTopNodeType = taskNode.getNodeType();
traverseTaskNode(taskNode.getPid(), tenantId, VersionEnum.INITIAL.getCode(), taskNode, projectNodeList, projectNodeMemberList, projectNodeExtraList, taskNodeList, taskNodeMemberList, taskNodeExtraList, projectNodePerformanceList, projectNodePerformanceExtraList, tagList);
eachProjectNodeList = projectNodeList.stream().filter(node -> !newAllProjectNodeList.contains(node.getUuid())).toList();
newAllProjectNodeList.addAll(eachProjectNodeList.stream().map(TaskNode::getUuid).toList());
for (TaskNode projectNode : eachProjectNodeList) {
List<String> tag1List = projectNode.getTag1();
if (CollectionUtils.isNotEmpty(tag1List)) {
if (tag1List.contains(null)) {
tag1List = tag1List.stream().filter(ObjectUtils::isNotEmpty).collect(Collectors.toList());
for (TaskNodeTag taskNodeTag : tagList) {
if ("Tag1".equals(taskNodeTag.getValue())) {
if (CollectionUtils.isNotEmpty(tag1List)) {
tag1List.addAll(idMap.get(taskNodeTag.getKey()));
} else {
tag1List = idMap.get(taskNodeTag.getKey());
}
if (CollectionUtils.isNotEmpty(tag1List)) {
projectNode.setTag1(tag1List);
}
}
}
}
}
// eachProjectNodeList = projectNodeList.stream().filter(node -> !newAllProjectNodeList.contains(node.getUuid())).toList();
// newAllProjectNodeList.addAll(eachProjectNodeList.stream().map(TaskNode::getUuid).toList());
List<String> tag2List = projectNode.getTag2();
if (CollectionUtils.isNotEmpty(tag2List)) {
if (tag2List.contains(null)) {
tag2List = tag2List.stream().filter(ObjectUtils::isNotEmpty).collect(Collectors.toList());
for (TaskNodeTag taskNodeTag : tagList) {
if ("Tag2".equals(taskNodeTag.getValue())) {
if (CollectionUtils.isNotEmpty(tag2List)) {
tag2List.addAll(idMap.get(taskNodeTag.getKey()));
} else {
tag2List = idMap.get(taskNodeTag.getKey());
}
if (CollectionUtils.isNotEmpty(tag2List)) {
projectNode.setTag2(tag2List);
}
}
}
}
}
List<String> tag3List = projectNode.getTag3();
if (CollectionUtils.isNotEmpty(tag3List)) {
if (tag3List.contains(null)) {
tag3List = tag3List.stream().filter(ObjectUtils::isNotEmpty).collect(Collectors.toList());
for (TaskNodeTag taskNodeTag : tagList) {
if ("Tag3".equals(taskNodeTag.getValue())) {
if (CollectionUtils.isNotEmpty(tag3List)) {
tag3List.addAll(idMap.get(taskNodeTag.getKey()));
} else {
tag3List = idMap.get(taskNodeTag.getKey());
}
if (CollectionUtils.isNotEmpty(tag3List)) {
projectNode.setTag3(tag3List);
}
}
}
}
}
List<String> tag4List = projectNode.getTag4();
if (CollectionUtils.isNotEmpty(tag4List)) {
if (tag4List.contains(null)) {
tag4List = tag4List.stream().filter(ObjectUtils::isNotEmpty).collect(Collectors.toList());
for (TaskNodeTag taskNodeTag : tagList) {
if ("Tag4".equals(taskNodeTag.getValue())) {
if (CollectionUtils.isNotEmpty(tag4List)) {
tag4List.addAll(idMap.get(taskNodeTag.getKey()));
} else {
tag4List = idMap.get(taskNodeTag.getKey());
}
if (CollectionUtils.isNotEmpty(tag4List)) {
projectNode.setTag4(tag4List);
}
}
}
}
}
List<String> tag5List = projectNode.getTag5();
if (CollectionUtils.isNotEmpty(tag5List)) {
if (tag5List.contains(null)) {
tag5List = tag5List.stream().filter(ObjectUtils::isNotEmpty).collect(Collectors.toList());
for (TaskNodeTag taskNodeTag : tagList) {
if ("Tag5".equals(taskNodeTag.getValue())) {
if (CollectionUtils.isNotEmpty(tag5List)) {
tag5List.addAll(idMap.get(taskNodeTag.getKey()));
} else {
tag5List = idMap.get(taskNodeTag.getKey());
}
if (CollectionUtils.isNotEmpty(tag5List)) {
projectNode.setTag5(tag5List);
}
}
}
}
}
List<String> tag6List = projectNode.getTag6();
if (CollectionUtils.isNotEmpty(tag6List)) {
if (tag6List.contains(null)) {
tag6List = tag6List.stream().filter(ObjectUtils::isNotEmpty).collect(Collectors.toList());
for (TaskNodeTag taskNodeTag : tagList) {
if ("Tag6".equals(taskNodeTag.getValue())) {
if (CollectionUtils.isNotEmpty(tag6List)) {
tag6List.addAll(idMap.get(taskNodeTag.getKey()));
} else {
tag6List = idMap.get(taskNodeTag.getKey());
}
if (CollectionUtils.isNotEmpty(tag6List)) {
projectNode.setTag6(tag6List);
}
}
}
}
}
List<String> tag7List = projectNode.getTag7();
if (CollectionUtils.isNotEmpty(tag7List)) {
if (tag7List.contains(null)) {
tag7List = tag7List.stream().filter(ObjectUtils::isNotEmpty).collect(Collectors.toList());
for (TaskNodeTag taskNodeTag : tagList) {
if ("Tag7".equals(taskNodeTag.getValue())) {
if (CollectionUtils.isNotEmpty(tag7List)) {
tag7List.addAll(idMap.get(taskNodeTag.getKey()));
} else {
tag7List = idMap.get(taskNodeTag.getKey());
}
if (CollectionUtils.isNotEmpty(tag7List)) {
projectNode.setTag7(tag7List);
}
}
}
}
}
List<String> tag8List = projectNode.getTag8();
if (CollectionUtils.isNotEmpty(tag8List)) {
if (tag8List.contains(null)) {
tag8List = tag8List.stream().filter(ObjectUtils::isNotEmpty).collect(Collectors.toList());
for (TaskNodeTag taskNodeTag : tagList) {
if ("Tag8".equals(taskNodeTag.getValue())) {
if (CollectionUtils.isNotEmpty(tag8List)) {
tag8List.addAll(idMap.get(taskNodeTag.getKey()));
} else {
tag8List = idMap.get(taskNodeTag.getKey());
}
if (CollectionUtils.isNotEmpty(tag8List)) {
projectNode.setTag8(tag8List);
}
}
}
}
}
List<String> tag9List = projectNode.getTag9();
if (CollectionUtils.isNotEmpty(tag9List)) {
if (tag9List.contains(null)) {
tag9List = tag9List.stream().filter(ObjectUtils::isNotEmpty).collect(Collectors.toList());
for (TaskNodeTag taskNodeTag : tagList) {
if ("Tag9".equals(taskNodeTag.getValue())) {
if (CollectionUtils.isNotEmpty(tag9List)) {
tag9List.addAll(idMap.get(taskNodeTag.getKey()));
} else {
tag9List = idMap.get(taskNodeTag.getKey());
}
if (CollectionUtils.isNotEmpty(tag9List)) {
projectNode.setTag9(tag9List);
}
}
}
}
}
List<String> tag10List = projectNode.getTag10();
if (CollectionUtils.isNotEmpty(tag10List)) {
if (tag10List.contains(null)) {
tag10List = tag10List.stream().filter(ObjectUtils::isNotEmpty).collect(Collectors.toList());
for (TaskNodeTag taskNodeTag : tagList) {
if ("Tag10".equals(taskNodeTag.getValue())) {
if (CollectionUtils.isNotEmpty(tag10List)) {
tag10List.addAll(idMap.get(taskNodeTag.getKey()));
} else {
tag10List = idMap.get(taskNodeTag.getKey());
}
if (CollectionUtils.isNotEmpty(tag10List)) {
projectNode.setTag10(tag10List);
}
}
}
}
}
}
idMap.clear();
taskIdMap.clear();
}
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String createTime = format.format(new Date());
@@ -1780,32 +1756,231 @@ public class ProjectServiceImpl extends BaseService implements IProjectService {
// log.info("调用创建文件夹的返回值为:{}", response);
}
private void traverseTaskNode(String parentId, String tenantId, String nodeVersion, TaskNode projectNode, List<TaskNode> projectNodeList, List<TaskMemberNode> projectNodeMemberList, List<TaskExtraNode> projectNodeExtraList, List<TaskNode> taskNodeList, List<TaskMemberNode> taskNodeMemberList, List<TaskExtraNode> taskNodeExtraList, List<TaskNode> taskPerformanceList, List<TaskExtraNode> performanceExtraList, List<TaskNodeTag> tagList) {
private void traverseTaskNode(String parentId, String tenantId, String nodeVersion, TaskNode eachProjectNode, List<TaskNode> projectNodeList, List<TaskMemberNode> projectNodeMemberList, List<TaskExtraNode> projectNodeExtraList, List<TaskNode> taskNodeList, List<TaskMemberNode> taskNodeMemberList, List<TaskExtraNode> taskNodeExtraList, List<TaskNode> taskPerformanceList, List<TaskExtraNode> performanceExtraList, List<TaskNodeTag> tagList) {
// if (!bStringNotBlank(projectNode.getUuid())) {//兼容在已有节点下添加分析项情况
// projectNode.setUuid(generateUuid());
// }
log.info("当前顶级节点类型为:{}", currentTopNodeType);
projectNode.setUuid(generateUuid());
projectNode.setParentId(StringUtils.isNotEmpty(parentId) ? parentId : "0");
projectNode.setNodeId(projectNode.getParentId());
projectNode.setNodeVersion(nodeVersion);
projectNode.setTenantId(tenantId);
String nodeType = projectNode.getNodeType();
List<TaskNode> childrenNodeList = projectNode.getChildren();
eachProjectNode.setUuid(generateUuid());
eachProjectNode.setParentId(StringUtils.isNotEmpty(parentId) ? parentId : "0");
eachProjectNode.setNodeId(eachProjectNode.getParentId());
eachProjectNode.setNodeVersion(nodeVersion);
eachProjectNode.setTenantId(tenantId);
String nodeType = eachProjectNode.getNodeType();
List<TaskNode> childrenNodeList = eachProjectNode.getChildren();
if (SystemConstants.TASK_TAG.equals(nodeType)) {
handleTaskExtraAndMember(projectNode, taskNodeList, taskNodeMemberList, taskNodeExtraList, tagList);
handleTaskExtraAndMember(eachProjectNode, taskNodeList, taskNodeMemberList, taskNodeExtraList, tagList);
} else if (SystemConstants.PERFORMANCE_TAG.equals(nodeType)) {
projectNode.setTaskId(parentId);
handlePerformanceExtra(projectNode, taskPerformanceList, performanceExtraList);
eachProjectNode.setTaskId(parentId);
handlePerformanceExtra(eachProjectNode, taskPerformanceList, performanceExtraList);
} else {
handleNodeExtraAndMember(projectNode, projectNodeList, projectNodeMemberList, projectNodeExtraList);
handleNodeExtraAndMember(eachProjectNode, projectNodeList, projectNodeMemberList, projectNodeExtraList);
}
if (CollectionUtils.isEmpty(childrenNodeList)) {
for (TaskNode projectNode : projectNodeList) {
List<String> tag1List = projectNode.getTag1();
if (CollectionUtils.isNotEmpty(tag1List)) {
if (tag1List.contains(null)) {
tag1List = tag1List.stream().filter(ObjectUtils::isNotEmpty).collect(Collectors.toList());
for (TaskNodeTag taskNodeTag : tagList) {
if ("Tag1".equals(taskNodeTag.getValue())) {
if (CollectionUtils.isNotEmpty(tag1List)) {
tag1List.addAll(idMap.get(taskNodeTag.getKey()));
} else {
tag1List = idMap.get(taskNodeTag.getKey());
}
if (CollectionUtils.isNotEmpty(tag1List)) {
projectNode.setTag1(tag1List);
}
}
}
}
}
List<String> tag2List = projectNode.getTag2();
if (CollectionUtils.isNotEmpty(tag2List)) {
if (tag2List.contains(null)) {
tag2List = tag2List.stream().filter(ObjectUtils::isNotEmpty).collect(Collectors.toList());
for (TaskNodeTag taskNodeTag : tagList) {
if ("Tag2".equals(taskNodeTag.getValue())) {
if (CollectionUtils.isNotEmpty(tag2List)) {
tag2List.addAll(idMap.get(taskNodeTag.getKey()));
} else {
tag2List = idMap.get(taskNodeTag.getKey());
}
if (CollectionUtils.isNotEmpty(tag2List)) {
projectNode.setTag2(tag2List);
}
}
}
}
}
List<String> tag3List = projectNode.getTag3();
if (CollectionUtils.isNotEmpty(tag3List)) {
if (tag3List.contains(null)) {
tag3List = tag3List.stream().filter(ObjectUtils::isNotEmpty).collect(Collectors.toList());
for (TaskNodeTag taskNodeTag : tagList) {
if ("Tag3".equals(taskNodeTag.getValue())) {
if (CollectionUtils.isNotEmpty(tag3List)) {
tag3List.addAll(idMap.get(taskNodeTag.getKey()));
} else {
tag3List = idMap.get(taskNodeTag.getKey());
}
if (CollectionUtils.isNotEmpty(tag3List)) {
projectNode.setTag3(tag3List);
}
}
}
}
}
List<String> tag4List = projectNode.getTag4();
if (CollectionUtils.isNotEmpty(tag4List)) {
if (tag4List.contains(null)) {
tag4List = tag4List.stream().filter(ObjectUtils::isNotEmpty).collect(Collectors.toList());
for (TaskNodeTag taskNodeTag : tagList) {
if ("Tag4".equals(taskNodeTag.getValue())) {
if (CollectionUtils.isNotEmpty(tag4List)) {
tag4List.addAll(idMap.get(taskNodeTag.getKey()));
} else {
tag4List = idMap.get(taskNodeTag.getKey());
}
if (CollectionUtils.isNotEmpty(tag4List)) {
projectNode.setTag4(tag4List);
}
}
}
}
}
List<String> tag5List = projectNode.getTag5();
if (CollectionUtils.isNotEmpty(tag5List)) {
if (tag5List.contains(null)) {
tag5List = tag5List.stream().filter(ObjectUtils::isNotEmpty).collect(Collectors.toList());
for (TaskNodeTag taskNodeTag : tagList) {
if ("Tag5".equals(taskNodeTag.getValue())) {
if (CollectionUtils.isNotEmpty(tag5List)) {
tag5List.addAll(idMap.get(taskNodeTag.getKey()));
} else {
tag5List = idMap.get(taskNodeTag.getKey());
}
if (CollectionUtils.isNotEmpty(tag5List)) {
projectNode.setTag5(tag5List);
}
}
}
}
}
List<String> tag6List = projectNode.getTag6();
if (CollectionUtils.isNotEmpty(tag6List)) {
if (tag6List.contains(null)) {
tag6List = tag6List.stream().filter(ObjectUtils::isNotEmpty).collect(Collectors.toList());
for (TaskNodeTag taskNodeTag : tagList) {
if ("Tag6".equals(taskNodeTag.getValue())) {
if (CollectionUtils.isNotEmpty(tag6List)) {
tag6List.addAll(idMap.get(taskNodeTag.getKey()));
} else {
tag6List = idMap.get(taskNodeTag.getKey());
}
if (CollectionUtils.isNotEmpty(tag6List)) {
projectNode.setTag6(tag6List);
}
}
}
}
}
List<String> tag7List = projectNode.getTag7();
if (CollectionUtils.isNotEmpty(tag7List)) {
if (tag7List.contains(null)) {
tag7List = tag7List.stream().filter(ObjectUtils::isNotEmpty).collect(Collectors.toList());
for (TaskNodeTag taskNodeTag : tagList) {
if ("Tag7".equals(taskNodeTag.getValue())) {
if (CollectionUtils.isNotEmpty(tag7List)) {
tag7List.addAll(idMap.get(taskNodeTag.getKey()));
} else {
tag7List = idMap.get(taskNodeTag.getKey());
}
if (CollectionUtils.isNotEmpty(tag7List)) {
projectNode.setTag7(tag7List);
}
}
}
}
}
List<String> tag8List = projectNode.getTag8();
if (CollectionUtils.isNotEmpty(tag8List)) {
if (tag8List.contains(null)) {
tag8List = tag8List.stream().filter(ObjectUtils::isNotEmpty).collect(Collectors.toList());
for (TaskNodeTag taskNodeTag : tagList) {
if ("Tag8".equals(taskNodeTag.getValue())) {
if (CollectionUtils.isNotEmpty(tag8List)) {
tag8List.addAll(idMap.get(taskNodeTag.getKey()));
} else {
tag8List = idMap.get(taskNodeTag.getKey());
}
if (CollectionUtils.isNotEmpty(tag8List)) {
projectNode.setTag8(tag8List);
}
}
}
}
}
List<String> tag9List = projectNode.getTag9();
if (CollectionUtils.isNotEmpty(tag9List)) {
if (tag9List.contains(null)) {
tag9List = tag9List.stream().filter(ObjectUtils::isNotEmpty).collect(Collectors.toList());
for (TaskNodeTag taskNodeTag : tagList) {
if ("Tag9".equals(taskNodeTag.getValue())) {
if (CollectionUtils.isNotEmpty(tag9List)) {
tag9List.addAll(idMap.get(taskNodeTag.getKey()));
} else {
tag9List = idMap.get(taskNodeTag.getKey());
}
if (CollectionUtils.isNotEmpty(tag9List)) {
projectNode.setTag9(tag9List);
}
}
}
}
}
List<String> tag10List = projectNode.getTag10();
if (CollectionUtils.isNotEmpty(tag10List)) {
if (tag10List.contains(null)) {
tag10List = tag10List.stream().filter(ObjectUtils::isNotEmpty).collect(Collectors.toList());
for (TaskNodeTag taskNodeTag : tagList) {
if ("Tag10".equals(taskNodeTag.getValue())) {
if (CollectionUtils.isNotEmpty(tag10List)) {
tag10List.addAll(idMap.get(taskNodeTag.getKey()));
} else {
tag10List = idMap.get(taskNodeTag.getKey());
}
if (CollectionUtils.isNotEmpty(tag10List)) {
projectNode.setTag10(tag10List);
}
}
}
}
}
}
for (Map.Entry<String, List<String>> entry : idMap.entrySet()) {
if (!currentTopNodeType.equals(entry.getKey())) {
entry.setValue(null);
}
}
return;
}
// 处理子节点
for (TaskNode node : childrenNodeList) {
traverseTaskNode(projectNode.getUuid(), tenantId, nodeVersion, node, projectNodeList, projectNodeMemberList, projectNodeExtraList, taskNodeList, taskNodeMemberList, taskNodeExtraList, taskPerformanceList, performanceExtraList, tagList);
traverseTaskNode(eachProjectNode.getUuid(), tenantId, nodeVersion, node, projectNodeList, projectNodeMemberList, projectNodeExtraList, taskNodeList, taskNodeMemberList, taskNodeExtraList, taskPerformanceList, performanceExtraList, tagList);
}
}

View File

@@ -56,16 +56,16 @@
description = #{editNode.description},
</if>
<if test="editNode.detailImgUrl != null and editNode.detailImgUrl != ''">
detailImgUrl = #{editNode.detailImgUrl}
detailImgUrl = #{editNode.detailImgUrl},
</if>
<if test="editNode.exeStatus != null and editNode.exeStatus != ''">
exe_status = #{editNode.exeStatus}
exe_status = #{editNode.exeStatus},
</if>
<if test="editNode.updater != null and editNode.updater != ''">
updater = #{editNode.updater},
</if>
<if test="editNode.updateTime != null and editNode.updateTime != ''">
update_time = #{editNode.updateTime},
update_time = #{editNode.updateTime}
</if>
</trim>
where uuid = #{editNode.uuid}