提交查询项目任务树接口
This commit is contained in:
@@ -29,7 +29,7 @@ spring:
|
||||
cloud:
|
||||
nacos:
|
||||
discovery:
|
||||
server-addr: 192.168.65.161:8848
|
||||
server-addr: 127.0.0.1:8848
|
||||
# server-addr: 127.0.0.1:8848
|
||||
enabled: true
|
||||
# username: nacos
|
||||
|
||||
@@ -57,7 +57,7 @@ public class TaskNode extends BaseEntity {
|
||||
/**
|
||||
* 项目进度状态(未开始、进行中、已完成)
|
||||
*/
|
||||
private Integer exeStatus;
|
||||
private String exeStatus;
|
||||
|
||||
private String exeStatusValue;
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.sdm.project.model.po;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import com.sdm.common.entity.pojo.BaseEntity;
|
||||
import lombok.Data;
|
||||
|
||||
@@ -116,7 +117,7 @@ public class NodeAllBase extends BaseEntity {
|
||||
/**
|
||||
* 项目进度状态(未开始、进行中、已完成)
|
||||
*/
|
||||
private Integer exeStatus;
|
||||
private String exeStatus;
|
||||
|
||||
private String exeStatusValue;
|
||||
|
||||
@@ -190,4 +191,25 @@ public class NodeAllBase extends BaseEntity {
|
||||
|
||||
public String extras;
|
||||
|
||||
@JsonProperty(value = "Tag1")
|
||||
private String Tag1;
|
||||
@JsonProperty(value = "Tag2")
|
||||
private String Tag2;
|
||||
@JsonProperty(value = "Tag3")
|
||||
private String Tag3;
|
||||
@JsonProperty(value = "Tag4")
|
||||
private String Tag4;
|
||||
@JsonProperty(value = "Tag5")
|
||||
private String Tag5;
|
||||
@JsonProperty(value = "Tag6")
|
||||
private String Tag6;
|
||||
@JsonProperty(value = "Tag7")
|
||||
private String Tag7;
|
||||
@JsonProperty(value = "Tag8")
|
||||
private String Tag8;
|
||||
@JsonProperty(value = "Tag9")
|
||||
private String Tag9;
|
||||
@JsonProperty(value = "Tag10")
|
||||
private String Tag10;
|
||||
|
||||
}
|
||||
|
||||
@@ -38,11 +38,6 @@ public class TaskNodePo extends NodeAllBase {
|
||||
*/
|
||||
private String taskCode;
|
||||
|
||||
/**
|
||||
* 项目进度状态(未开始、进行中、已完成)
|
||||
*/
|
||||
private Integer exeStatus;
|
||||
|
||||
private String exeStatusValue;
|
||||
|
||||
/**
|
||||
|
||||
@@ -36,20 +36,36 @@ public class SpdmTaskListReq {
|
||||
*/
|
||||
private String achieveStatus;
|
||||
|
||||
private Integer status;
|
||||
|
||||
/**
|
||||
* 任务进度
|
||||
*/
|
||||
private Integer process;
|
||||
|
||||
/**
|
||||
* 仿真负责人
|
||||
*/
|
||||
@JsonProperty(value = "pMemberList")
|
||||
private String pMemberList;
|
||||
@JsonProperty(value = "pMemberIdList")
|
||||
private Integer pMemberIdList;
|
||||
|
||||
/**
|
||||
* 仿真执行人
|
||||
*/
|
||||
@JsonProperty(value = "eMemberList")
|
||||
private String eMemberList;
|
||||
@JsonProperty(value = "eMemberIdList")
|
||||
private Integer eMemberIdList;
|
||||
|
||||
/**
|
||||
* 项目名称
|
||||
*/
|
||||
private String projectName;
|
||||
|
||||
/**
|
||||
* 阶段名称
|
||||
*/
|
||||
private String phaseName;
|
||||
|
||||
/**
|
||||
* 学科名称
|
||||
*/
|
||||
private String disciplineName;
|
||||
|
||||
}
|
||||
|
||||
@@ -662,7 +662,7 @@ public class NodeServiceImpl extends ServiceImpl<SimulationNodeMapper, Simulatio
|
||||
private void createDir(Long nodeId, Long parentNodeId, String dirName) {
|
||||
CreateDirReq createDirReq = new CreateDirReq();
|
||||
createDirReq.setNodeId(nodeId.intValue());
|
||||
createDirReq.setParentNodeId(parentNodeId.intValue());
|
||||
createDirReq.setParentNodeId(ObjectUtils.isNotEmpty(parentNodeId) ? parentNodeId.intValue() : null);
|
||||
createDirReq.setDirName(dirName);
|
||||
log.info("创建项目阶段时,调用创建文件夹的参数为:{}", createDirReq);
|
||||
SdmResponse response = dataClientFeignClient.createDir(createDirReq);
|
||||
|
||||
@@ -16,6 +16,7 @@ import com.sdm.project.dao.SimulationProjectMapper;
|
||||
import com.sdm.project.model.bo.*;
|
||||
import com.sdm.project.model.po.*;
|
||||
import com.sdm.project.model.req.*;
|
||||
import com.sdm.project.model.vo.SpdmAnalysisTaskVo;
|
||||
import com.sdm.project.service.IProjectService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
@@ -68,6 +69,8 @@ public class ProjectServiceImpl extends BaseService implements IProjectService {
|
||||
|
||||
Map<String, String> taskTreeNodeTypeTagMap;
|
||||
|
||||
Map<String,List<ProjectNodePo>> taskTreeProjectNodeMap = new HashMap<>();
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public SdmResponse add(JSONObject jsonObject) {
|
||||
@@ -261,9 +264,15 @@ public class ProjectServiceImpl extends BaseService implements IProjectService {
|
||||
}
|
||||
log.info("查询到的节点为:{}", taskTreeNodeList.stream().map(ProjectNodePo::getId).toList());
|
||||
taskTreeTaskList = mapper.getTaskListByTag(taskTreeReq);
|
||||
log.info("查询到的任务为:{}", taskTreeTaskList.stream().map(TaskNodePo::getId).toList());
|
||||
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());
|
||||
log.info("查询到的指标为:{}", taskTreePerformanceList.stream().map(PerformanceNodePo::getId).toList());
|
||||
if (CollectionUtils.isNotEmpty(taskTreePerformanceList)) {
|
||||
log.info("查询到的指标为:{}", taskTreePerformanceList.stream().map(PerformanceNodePo::getId).toList());
|
||||
taskTreePerformanceList.forEach(performance -> performance.setNodeType("performance"));
|
||||
}
|
||||
taskTreeTagMap = req.getTagMap();
|
||||
log.info("taskTreeTagMap为:{}", taskTreeTagMap);
|
||||
if (CollectionUtils.isEmpty(taskTreeTagMap)) {
|
||||
@@ -271,7 +280,7 @@ public class ProjectServiceImpl extends BaseService implements IProjectService {
|
||||
return SdmResponse.success(new ArrayList<>());
|
||||
}
|
||||
// key:节点类型,value:标签
|
||||
taskTreeNodeTypeTagMap = taskTreeTagMap.stream().collect(Collectors.toMap(TaskNodeTag::getValue, TaskNodeTag::getKey));
|
||||
taskTreeNodeTypeTagMap = taskTreeTagMap.stream().collect(Collectors.toMap(TaskNodeTag::getKey, TaskNodeTag::getValue));
|
||||
// key:标签,value:节点类型
|
||||
taskTreeTagNodeTypeMap = taskTreeTagMap.stream().collect(Collectors.toMap(TaskNodeTag::getValue, TaskNodeTag::getKey));
|
||||
log.info("taskTreeTagNodeTypeMap为:{}", taskTreeTagNodeTypeMap);
|
||||
@@ -319,85 +328,111 @@ public class ProjectServiceImpl extends BaseService implements IProjectService {
|
||||
// }
|
||||
|
||||
// 如果idMap中的id都不为null,说明查的是最后一层节点下的所有任务、指标
|
||||
TaskNodeTag realFirstTaskNodeTag = idMapList.stream().filter(tag -> StringUtils.isBlank(tag.getKey())).findFirst().orElseGet(() -> idMapList.get(idMapList.size() - 1));
|
||||
log.info("实际需要展示的最顶层节点类型为:{},id为:{}", taskTreeTagNodeTypeMap.get(realFirstTaskNodeTag.getValue()), realFirstTaskNodeTag.getKey());
|
||||
List<ProjectNodePo> realFirstNodeList = taskTreeNodeList.stream().filter(node -> node.getNodeType().equals(realFirstTaskNodeTag.getKey())).toList();
|
||||
|
||||
String realFirstNodeTagId = "";
|
||||
String[] currentNodeTagIdArray;
|
||||
Map<Integer,List<ProjectNodePo>> projectNodeMap = new HashMap<>();
|
||||
|
||||
int currentNodeDepth = 1;
|
||||
int maxNodeDepth = 1;
|
||||
for (ProjectNodePo realFirstNode : realFirstNodeList) {
|
||||
// 根据tag中的分隔符数量,来确定当前节点类型的层数(层数 = 分隔符 + 1)
|
||||
// 找到最大层数然后去遍历
|
||||
try {
|
||||
realFirstNodeTagId = getTagProperty(realFirstNode, realFirstTaskNodeTag.getValue());
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException(e);
|
||||
// TaskNodeTag realFirstTaskNodeTag = idMapList.stream().filter(tag -> StringUtils.isBlank(tag.getKey())).findFirst().orElseGet(() -> idMapList.get(idMapList.size() - 1));
|
||||
TaskNodeTag realFirstTaskNodeTag = idMapList.get(idMapList.size() - 1);
|
||||
for (TaskNodeTag taskNodeTag : idMapList) {
|
||||
if (StringUtils.isNotBlank(taskNodeTag.getKey())) {
|
||||
realFirstTaskNodeTag = taskNodeTag;
|
||||
}
|
||||
if (StringUtils.isBlank(realFirstNodeTagId)) {
|
||||
throw new RuntimeException("查询任务树异常");
|
||||
}
|
||||
// if (StringUtils.isEmpty(realFirstNodeTagId)) {
|
||||
// log.info("节点id:{}的{}的值为空", realFirstNode.getId(), realFirstTaskNodeTag.getValue());
|
||||
// continue;
|
||||
// }
|
||||
|
||||
currentNodeDepth = realFirstNodeTagId.split(",").length + 1;
|
||||
List<ProjectNodePo> currentProjectNodeList = projectNodeMap.get(currentNodeDepth);
|
||||
if (CollectionUtils.isEmpty(currentProjectNodeList)) {
|
||||
currentProjectNodeList = new ArrayList<>();
|
||||
}
|
||||
currentProjectNodeList.add(realFirstNode);
|
||||
maxNodeDepth = Math.max(maxNodeDepth, currentNodeDepth);
|
||||
}
|
||||
log.info("节点类型为:{}的最大深度为:{},深度分别为:{},节点为:{}", realFirstTaskNodeTag.getKey(), maxNodeDepth,projectNodeMap.keySet(), realFirstNodeList);
|
||||
List<ProjectNodePo> realTopProjectNodeList = projectNodeMap.get(1);
|
||||
String realFirstTaskNodeType = taskTreeTagNodeTypeMap.get(realFirstTaskNodeTag.getValue());
|
||||
log.info("实际需要展示的最顶层节点类型为:{},id为:{}", taskTreeTagNodeTypeMap.get(realFirstTaskNodeTag.getValue()),realFirstTaskNodeType);
|
||||
// List<ProjectNodePo> realFirstNodeList = taskTreeNodeList.stream().filter(node -> node.getNodeType().equals(realFirstTaskNodeType)).toList();
|
||||
// String realFirstNodeTagId = "";
|
||||
// int currentNodeDepth = 1;
|
||||
// int maxNodeDepth = 1;
|
||||
// for (ProjectNodePo realFirstNode : realFirstNodeList) {
|
||||
// // 根据tag中的分隔符数量,来确定当前节点类型的层数(层数 = 分隔符 + 1)
|
||||
// // 找到最大层数然后去遍历
|
||||
// try {
|
||||
// realFirstNodeTagId = getTagProperty(realFirstNode, realFirstTaskNodeTag.getValue());
|
||||
// } catch (Exception e) {
|
||||
// throw new RuntimeException(e);
|
||||
// }
|
||||
// if (StringUtils.isBlank(realFirstNodeTagId)) {
|
||||
// throw new RuntimeException("查询任务树异常");
|
||||
// }
|
||||
//// if (StringUtils.isEmpty(realFirstNodeTagId)) {
|
||||
//// log.info("节点id:{}的{}的值为空", realFirstNode.getId(), realFirstTaskNodeTag.getValue());
|
||||
//// continue;
|
||||
//// }
|
||||
//
|
||||
// currentNodeDepth = realFirstNodeTagId.split(",").length;
|
||||
// List<ProjectNodePo> currentProjectNodeList = taskTreeProjectNodeMap.get(currentNodeDepth);
|
||||
// if (CollectionUtils.isEmpty(currentProjectNodeList)) {
|
||||
// currentProjectNodeList = new ArrayList<>();
|
||||
// }
|
||||
// currentProjectNodeList.add(realFirstNode);
|
||||
// taskTreeProjectNodeMap.put(currentNodeDepth,currentProjectNodeList);
|
||||
// maxNodeDepth = Math.max(maxNodeDepth, currentNodeDepth);
|
||||
// }
|
||||
|
||||
// int currentNodeDepth = 0;
|
||||
// for (ProjectNodePo eachNode : taskTreeNodeList) {
|
||||
// currentNodeDepth = getCurrentNodeDepth(eachNode);
|
||||
// List<ProjectNodePo> currentProjectNodeList = taskTreeProjectNodeMap.get(currentNodeDepth);
|
||||
// if (CollectionUtils.isEmpty(currentProjectNodeList)) {
|
||||
// currentProjectNodeList = new ArrayList<>();
|
||||
// }
|
||||
// currentProjectNodeList.add(eachNode);
|
||||
// taskTreeProjectNodeMap.put(currentNodeDepth,currentProjectNodeList);
|
||||
// }
|
||||
|
||||
taskTreeProjectNodeMap = taskTreeNodeList.stream().collect(Collectors.groupingBy(ProjectNodePo::getNodeType));
|
||||
|
||||
List<ProjectNodePo> realTopProjectNodeList = taskTreeNodeList.stream().filter(node -> node.getNodeType().equals(realFirstTaskNodeType)).toList();
|
||||
for (ProjectNodePo projectNodePo : realTopProjectNodeList) {
|
||||
generateTaskTree(projectNodePo);
|
||||
}
|
||||
|
||||
|
||||
|
||||
// 每个nodeId都代表当前节点类型下的一层数据
|
||||
// for (String nodeId : realFirstNodeTagId.split(",")) {
|
||||
// // 下层数据可能为node或task或都有
|
||||
// List<ProjectNodePo> childrenNodeList = generateChildrenTree(nodeId);
|
||||
// ProjectNodePo currentNode = nodeList.stream().filter(node -> nodeId.equals(node.getUuid())).findFirst().get();
|
||||
// currentNode.setChildren(childrenNodeList);
|
||||
// projectNodeList.add(currentNode);
|
||||
// }
|
||||
|
||||
|
||||
// // 第一层
|
||||
// TaskNodeTag firstTag = tagMap.get(0);
|
||||
// TaskNodeTag secondTag = tagMap.get(1);
|
||||
// TaskNodeTag thirdTag = tagMap.get(2);
|
||||
// TaskNodeTag fourthTag = tagMap.get(3);
|
||||
// TaskNodeTag fifthTag = tagMap.get(4);
|
||||
//
|
||||
// List<ProjectNodePo> secondNodeList = nodeList.stream().filter(node -> node.getNodeType().equals(nodeTypeMap.get(secondTag.getValue()))).toList();
|
||||
// List<ProjectNodePo> thirdNodeList = nodeList.stream().filter(node -> node.getNodeType().equals(nodeTypeMap.get(thirdTag.getValue()))).toList();
|
||||
// List<ProjectNodePo> fourthNodeList = nodeList.stream().filter(node -> node.getNodeType().equals(nodeTypeMap.get(fourthTag.getValue()))).toList();
|
||||
// List<ProjectNodePo> fifthNodeList = nodeList.stream().filter(node -> node.getNodeType().equals(nodeTypeMap.get(fifthTag.getValue()))).toList();
|
||||
// if (CollectionUtils.isNotEmpty(fifthNodeList)) {
|
||||
//
|
||||
// } else if (CollectionUtils.isNotEmpty(fourthNodeList)) {
|
||||
//
|
||||
// } else if (CollectionUtils.isNotEmpty(fourthNodeList)) {
|
||||
//
|
||||
// } else if (CollectionUtils.isNotEmpty(fourthNodeList)) {
|
||||
//
|
||||
// } else {
|
||||
//
|
||||
// }
|
||||
|
||||
return SdmResponse.success(realTopProjectNodeList);
|
||||
}
|
||||
|
||||
private List<NodeAllBase> generateTaskTree(ProjectNodePo projectNodePo) {
|
||||
private int getCurrentNodeDepth(NodeAllBase eachNode) {
|
||||
String tag1 = eachNode.getTag1();
|
||||
String tag2 = eachNode.getTag2();
|
||||
String tag3 = eachNode.getTag3();
|
||||
String tag4 = eachNode.getTag4();
|
||||
String tag5 = eachNode.getTag5();
|
||||
String tag6 = eachNode.getTag6();
|
||||
String tag7 = eachNode.getTag7();
|
||||
String tag8 = eachNode.getTag8();
|
||||
String tag9 = eachNode.getTag9();
|
||||
String tag10 = eachNode.getTag10();
|
||||
int currentNodeDepth = 0;
|
||||
if (StringUtils.isNotBlank(tag1) && !tag1.equals("null")) {
|
||||
currentNodeDepth += tag1.split(",").length;
|
||||
}
|
||||
if (StringUtils.isNotBlank(tag2) && !tag2.equals("null")) {
|
||||
currentNodeDepth += tag2.split(",").length;
|
||||
}
|
||||
if (StringUtils.isNotBlank(tag3) && !tag3.equals("null")) {
|
||||
currentNodeDepth += tag3.split(",").length;
|
||||
}
|
||||
if (StringUtils.isNotBlank(tag4) && !tag4.equals("null")) {
|
||||
currentNodeDepth += tag4.split(",").length;
|
||||
}
|
||||
if (StringUtils.isNotBlank(tag5) && !tag5.equals("null")) {
|
||||
currentNodeDepth += tag5.split(",").length;
|
||||
}
|
||||
if (StringUtils.isNotBlank(tag6) && !tag6.equals("null")) {
|
||||
currentNodeDepth += tag6.split(",").length;
|
||||
}
|
||||
if (StringUtils.isNotBlank(tag7) && !tag7.equals("null")) {
|
||||
currentNodeDepth += tag7.split(",").length;
|
||||
}
|
||||
if (StringUtils.isNotBlank(tag8) && !tag8.equals("null")) {
|
||||
currentNodeDepth += tag8.split(",").length;
|
||||
}
|
||||
if (StringUtils.isNotBlank(tag9) && !tag9.equals("null")) {
|
||||
currentNodeDepth += tag9.split(",").length;
|
||||
}
|
||||
if (StringUtils.isNotBlank(tag10) && !tag10.equals("null")) {
|
||||
currentNodeDepth += tag10.split(",").length;
|
||||
}
|
||||
return currentNodeDepth;
|
||||
}
|
||||
|
||||
private void generateTaskTree(ProjectNodePo projectNodePo) {
|
||||
String currentNodeType = projectNodePo.getNodeType();
|
||||
String currentTag = taskTreeNodeTypeTagMap.get(currentNodeType);
|
||||
String currentNodeTagId = "";
|
||||
@@ -411,41 +446,109 @@ public class ProjectServiceImpl extends BaseService implements IProjectService {
|
||||
}
|
||||
String finalCurrentNodeTagId = currentNodeTagId;
|
||||
// 查询当前节点下任务
|
||||
List<TaskNodePo> currentNodeAssociatedTaskList = taskTreeTaskList.stream().filter(node -> {
|
||||
try {
|
||||
String nodeTagId = getTagProperty(node, currentTag);
|
||||
if (StringUtils.isBlank(nodeTagId)) {
|
||||
return false;
|
||||
List<TaskNodePo> currentNodeAssociatedTaskList = new ArrayList<>();
|
||||
int currentNodeDepth = getCurrentNodeDepth(projectNodePo);
|
||||
if (CollectionUtils.isNotEmpty(taskTreeTaskList)) {
|
||||
currentNodeAssociatedTaskList = taskTreeTaskList.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);
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
return nodeTagId.equals(finalCurrentNodeTagId);
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}).collect(Collectors.toList());
|
||||
}).collect(Collectors.toList());
|
||||
|
||||
if (CollectionUtils.isNotEmpty(currentNodeAssociatedTaskList)) {
|
||||
// 查询当前任务下指标
|
||||
Map<String, TaskNodePo> taskMap = currentNodeAssociatedTaskList.stream().collect(Collectors.groupingBy(
|
||||
TaskNodePo::getUuid,
|
||||
Collectors.collectingAndThen(
|
||||
Collectors.toList(),
|
||||
list -> list.get(0)
|
||||
)
|
||||
));
|
||||
if (CollectionUtils.isNotEmpty(taskTreePerformanceList)) {
|
||||
List<PerformanceNodePo> eachPerformanceNodeList;
|
||||
List<PerformanceNodePo> currentTaskAssociatedPerformanceList = taskTreePerformanceList.stream().filter(performance -> ObjectUtils.isNotEmpty(taskMap.get(performance.getTaskId()))).toList();
|
||||
if (CollectionUtils.isNotEmpty(currentTaskAssociatedPerformanceList)) {
|
||||
Map<String, List<PerformanceNodePo>> performanceMap = currentTaskAssociatedPerformanceList.stream().collect(Collectors.groupingBy(PerformanceNodePo::getTaskId));
|
||||
for (TaskNodePo taskNodePo : currentNodeAssociatedTaskList) {
|
||||
eachPerformanceNodeList = performanceMap.get(taskNodePo.getUuid());
|
||||
if (CollectionUtils.isNotEmpty(eachPerformanceNodeList)) {
|
||||
taskNodePo.getChildren().addAll(eachPerformanceNodeList);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// 查询子节点,可能是同类型节点也可能是不同类型节点
|
||||
// 先查同类型节点:当前标签下,包含currentNodeTagId且深度+1
|
||||
int depth = finalCurrentNodeTagId.split(",").length + 1;
|
||||
int depth = finalCurrentNodeTagId.split(",").length;
|
||||
List<ProjectNodePo> sameTypeNodeList = taskTreeNodeList.stream().filter(node -> {
|
||||
try {
|
||||
String nodeTagId = getTagProperty(node, currentTag);
|
||||
if (StringUtils.isBlank(nodeTagId)) {
|
||||
return false;
|
||||
}
|
||||
return nodeTagId.contains(finalCurrentNodeTagId) && (finalCurrentNodeTagId.split(",").length == depth);
|
||||
return node.getNodeType().equals(currentNodeType) && nodeTagId.contains(finalCurrentNodeTagId) && (finalCurrentNodeTagId.split(",").length == depth + 1);
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}).collect(Collectors.toList());
|
||||
// 再查不同类型的节点:下一标签下的节点
|
||||
// int childrenIndex = 0;
|
||||
// String childrenNodeType = "";
|
||||
// for (int i = 0; i < taskTreeTagMap.size(); i++) {
|
||||
// if (taskTreeTagMap.get(i).getKey().equals(currentNodeType)) {
|
||||
//// childrenIndex = Math.min(i+1, taskTreeTagMap.size() - 1);
|
||||
// childrenNodeType = taskTreeTagMap.get(Math.min(i+1, taskTreeTagMap.size() - 1)).getKey();
|
||||
// break;
|
||||
// }
|
||||
// }
|
||||
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;
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}).collect(Collectors.toList());
|
||||
// List<ProjectNodePo> childrenTypeNodeList = taskTreeProjectNodeMap.get(childrenNodeType);
|
||||
// childrenIndex = 0,说明没有不同类型的子节点了
|
||||
// if (childrenIndex > 0) {
|
||||
// childrenTypeNodeList = taskTreeProjectNodeMap.get(childrenIndex);
|
||||
// }
|
||||
if (CollectionUtils.isNotEmpty(sameTypeNodeList)) {
|
||||
// 递归
|
||||
for (ProjectNodePo nodePo : sameTypeNodeList) {
|
||||
generateTaskTree(nodePo);
|
||||
}
|
||||
}else if (CollectionUtils.isNotEmpty(childrenTypeNodeList)) {
|
||||
// 递归
|
||||
for (ProjectNodePo nodePo : childrenTypeNodeList) {
|
||||
generateTaskTree(nodePo);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
projectNodePo.setChildren(generateTaskTree(null));
|
||||
// 关联子节点
|
||||
// 关联任务
|
||||
return null;
|
||||
List<NodeAllBase> children = new ArrayList<>();
|
||||
if (CollectionUtils.isNotEmpty(sameTypeNodeList)) {
|
||||
children.addAll(sameTypeNodeList);
|
||||
}
|
||||
if (CollectionUtils.isNotEmpty(childrenTypeNodeList)) {
|
||||
children.addAll(childrenTypeNodeList);
|
||||
}
|
||||
if (CollectionUtils.isNotEmpty(currentNodeAssociatedTaskList)) {
|
||||
children.addAll(currentNodeAssociatedTaskList);
|
||||
}
|
||||
projectNodePo.setChildren(children);
|
||||
}
|
||||
|
||||
private List<ProjectNodePo> getNodeList(List<ProjectNodePo> nodeList, String tag, Map<String, String> nodeTypeMap) {
|
||||
|
||||
@@ -72,45 +72,50 @@ public class TaskServiceImpl implements ITaskService {
|
||||
List<SpdmTaskMemberVo> taskMemberVoList = mapper.getMemberList(taskIdList, null);
|
||||
Map<String, List<SpdmTaskMemberVo>> memberMap = Map.of();
|
||||
if (CollectionUtils.isNotEmpty(taskMemberVoList)) {
|
||||
// if (ObjectUtils.isNotEmpty(req.getPMemberIdList())) {
|
||||
// // 通过仿真负责人过滤
|
||||
// taskMemberVoList.stream().filter(member -> MemberTypeEnum.PRINCIPAL.getCode().equals(member.getType()) && member.getUserId())
|
||||
// }
|
||||
// if (StringUtils.isNotBlank(req.getEMemberList())) {
|
||||
// // 通过仿真执行人过滤
|
||||
// }
|
||||
memberMap = taskMemberVoList.stream().collect(Collectors.groupingBy(SpdmTaskMemberVo::getTaskId));
|
||||
}
|
||||
List<SpdmTaskMemberVo> eachMemberList;
|
||||
JSONObject jsonObject = new JSONObject();
|
||||
jsonObject.put("currentPage",req.getCurrent());
|
||||
jsonObject.put("pageSize",req.getSize());
|
||||
|
||||
jsonObject.put("currentPage", req.getCurrent());
|
||||
jsonObject.put("pageSize", req.getSize());
|
||||
if (type == 2) {
|
||||
if (CollectionUtils.isNotEmpty(taskList)) {
|
||||
List<SpdmTaskAttentionMemberVo> attentionMemberList = mapper.getAttentionMemberList(taskList.stream().map(SpdmTaskVo::getUuid).toList());
|
||||
Map<String, List<SpdmTaskAttentionMemberVo>> attentionMap = Map.of();
|
||||
List<SpdmTaskAttentionMemberVo> eachAttentionMemberList;
|
||||
if (CollectionUtils.isNotEmpty(attentionMemberList)) {
|
||||
attentionMap = attentionMemberList.stream().collect(Collectors.groupingBy(SpdmTaskAttentionMemberVo::getTaskId));
|
||||
}
|
||||
for (SpdmTaskVo task : taskList) {
|
||||
eachAttentionMemberList = attentionMap.get(task.getUuid());
|
||||
task.setAttentionFlag(CollectionUtils.isEmpty(eachAttentionMemberList) ? 0 :
|
||||
(eachAttentionMemberList.stream().map(SpdmTaskAttentionMemberVo::getUserId).toList().contains(Long.valueOf(jobNumber)) ? 1 : 0));
|
||||
eachMemberList = memberMap.get(task.getUuid());
|
||||
if (CollectionUtils.isEmpty(eachMemberList)) {
|
||||
continue;
|
||||
}
|
||||
task.setPMemberList(eachMemberList.stream().filter(member -> MemberTypeEnum.PRINCIPAL.getCode().equals(member.getType())).toList());
|
||||
task.setEMemberList(eachMemberList.stream().filter(member -> MemberTypeEnum.EXECUTOR.getCode().equals(member.getType())).toList());
|
||||
}
|
||||
jsonObject.put("total",taskList.size());
|
||||
jsonObject.put("data", taskList.stream().skip((long) (req.getCurrent() - 1) * req.getSize()).limit(req.getSize()).toList());
|
||||
return SdmResponse.success(jsonObject);
|
||||
} else {
|
||||
if (CollectionUtils.isEmpty(taskList)) {
|
||||
return SdmResponse.success(new ArrayList<>());
|
||||
}
|
||||
List<SpdmTaskAttentionMemberVo> attentionMemberList = mapper.getAttentionMemberList(taskList.stream().map(SpdmTaskVo::getUuid).toList());
|
||||
Map<String, List<SpdmTaskAttentionMemberVo>> attentionMap = Map.of();
|
||||
List<SpdmTaskAttentionMemberVo> eachAttentionMemberList;
|
||||
if (CollectionUtils.isNotEmpty(attentionMemberList)) {
|
||||
attentionMap = attentionMemberList.stream().collect(Collectors.groupingBy(SpdmTaskAttentionMemberVo::getTaskId));
|
||||
}
|
||||
for (SpdmTaskVo task : taskList) {
|
||||
eachAttentionMemberList = attentionMap.get(task.getUuid());
|
||||
task.setAttentionFlag(CollectionUtils.isEmpty(eachAttentionMemberList) ? 0 :
|
||||
(eachAttentionMemberList.stream().map(SpdmTaskAttentionMemberVo::getUserId).toList().contains(Long.valueOf(jobNumber)) ? 1 : 0));
|
||||
eachMemberList = memberMap.get(task.getUuid());
|
||||
if (CollectionUtils.isEmpty(eachMemberList)) {
|
||||
continue;
|
||||
}
|
||||
task.setPMemberList(eachMemberList.stream().filter(member -> MemberTypeEnum.PRINCIPAL.getCode().equals(member.getType())).toList());
|
||||
task.setEMemberList(eachMemberList.stream().filter(member -> MemberTypeEnum.EXECUTOR.getCode().equals(member.getType())).toList());
|
||||
}
|
||||
jsonObject.put("total", taskList.size());
|
||||
jsonObject.put("data", taskList.stream().skip((long) (req.getCurrent() - 1) * req.getSize()).limit(req.getSize()).toList());
|
||||
return SdmResponse.success(jsonObject);
|
||||
}
|
||||
if (type == 0) {
|
||||
// 仿真执行人是当前用户
|
||||
if (CollectionUtils.isNotEmpty(taskMemberVoList)) {
|
||||
SpdmUserVo userByJobNumber = demandMapper.getUserByJobNumber(jobNumber);
|
||||
if (ObjectUtils.isEmpty(userByJobNumber)) {
|
||||
log.error("根据jobNumber:{},未查询到用户",jobNumber);
|
||||
log.error("根据jobNumber:{},未查询到用户", jobNumber);
|
||||
return SdmResponse.success(new ArrayList<>());
|
||||
}
|
||||
taskMemberVoList = taskMemberVoList.stream().filter(taskMember -> MemberTypeEnum.EXECUTOR.getCode().equals(taskMember.getType())).toList();
|
||||
@@ -143,7 +148,7 @@ public class TaskServiceImpl implements ITaskService {
|
||||
} else {
|
||||
SpdmUserVo userByJobNumber = demandMapper.getUserByJobNumber(jobNumber);
|
||||
if (ObjectUtils.isEmpty(userByJobNumber)) {
|
||||
log.error("根据jobNumber:{},未查询到用户",jobNumber);
|
||||
log.error("根据jobNumber:{},未查询到用户", jobNumber);
|
||||
return SdmResponse.success(new ArrayList<>());
|
||||
}
|
||||
List<SpdmTaskAttentionMemberVo> taskAttentionMemberVoList = mapper.getAttentionMemberList(taskIdList);
|
||||
@@ -177,7 +182,7 @@ public class TaskServiceImpl implements ITaskService {
|
||||
log.error("taskList为空");
|
||||
return SdmResponse.success(new ArrayList<>());
|
||||
}
|
||||
jsonObject.put("total",taskList.size());
|
||||
jsonObject.put("total", taskList.size());
|
||||
taskList = taskList.stream().skip((long) (req.getCurrent() - 1) * req.getSize()).limit(req.getSize()).toList();
|
||||
List<SpdmTaskAttentionMemberVo> attentionMemberList = mapper.getAttentionMemberList(taskList.stream().map(SpdmTaskVo::getUuid).toList());
|
||||
Map<String, List<SpdmTaskAttentionMemberVo>> attentionMap = Map.of();
|
||||
@@ -243,7 +248,7 @@ public class TaskServiceImpl implements ITaskService {
|
||||
task.setUpdateTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
|
||||
if (mapper.updateTask(task) > 0) {
|
||||
return SdmResponse.success();
|
||||
}else {
|
||||
} else {
|
||||
return SdmResponse.failed("编辑任务失败");
|
||||
}
|
||||
}
|
||||
@@ -270,7 +275,7 @@ public class TaskServiceImpl implements ITaskService {
|
||||
log.error("指标查询中,未查询到任务1");
|
||||
return SdmResponse.success(new ArrayList<>());
|
||||
}
|
||||
JSONObject data = (JSONObject)response.getData();
|
||||
JSONObject data = (JSONObject) response.getData();
|
||||
List<SpdmAnalysisTaskVo> taskVoList = (List<SpdmAnalysisTaskVo>) data.get("data");
|
||||
if (CollectionUtils.isEmpty(taskVoList)) {
|
||||
log.error("指标查询中,未查询到任务2");
|
||||
@@ -310,9 +315,9 @@ public class TaskServiceImpl implements ITaskService {
|
||||
performanceNodePo.setPMembers(eachTaskVo.getPMembers());
|
||||
}
|
||||
JSONObject jsonObject = new JSONObject();
|
||||
jsonObject.put("currentPage",req.getCurrent());
|
||||
jsonObject.put("pageSize",req.getSize());
|
||||
jsonObject.put("total",performanceNodePoList.size());
|
||||
jsonObject.put("currentPage", req.getCurrent());
|
||||
jsonObject.put("pageSize", req.getSize());
|
||||
jsonObject.put("total", performanceNodePoList.size());
|
||||
jsonObject.put("data", performanceNodePoList.stream().skip((long) (req.getCurrent() - 1) * req.getSize()).limit(req.getSize()).toList());
|
||||
return SdmResponse.success(jsonObject);
|
||||
}
|
||||
@@ -377,9 +382,9 @@ public class TaskServiceImpl implements ITaskService {
|
||||
}
|
||||
}
|
||||
JSONObject jsonObject = new JSONObject();
|
||||
jsonObject.put("currentPage",req.getCurrent());
|
||||
jsonObject.put("pageSize",req.getSize());
|
||||
jsonObject.put("total",taskVoList.size());
|
||||
jsonObject.put("currentPage", req.getCurrent());
|
||||
jsonObject.put("pageSize", req.getSize());
|
||||
jsonObject.put("total", taskVoList.size());
|
||||
jsonObject.put("data", taskVoList.stream().skip((long) (req.getCurrent() - 1) * req.getSize()).limit(req.getSize()).toList());
|
||||
return SdmResponse.success(jsonObject);
|
||||
}
|
||||
@@ -396,7 +401,7 @@ public class TaskServiceImpl implements ITaskService {
|
||||
log.error("指标查询中,未查询到任务1");
|
||||
return SdmResponse.success(new ArrayList<>());
|
||||
}
|
||||
JSONObject data = (JSONObject)response.getData();
|
||||
JSONObject data = (JSONObject) response.getData();
|
||||
List<SpdmAnalysisTaskVo> taskVoList = (List<SpdmAnalysisTaskVo>) data.get("data");
|
||||
if (CollectionUtils.isEmpty(taskVoList)) {
|
||||
log.error("指标查询中,未查询到任务2");
|
||||
@@ -436,9 +441,9 @@ public class TaskServiceImpl implements ITaskService {
|
||||
}
|
||||
|
||||
JSONObject jsonObject = new JSONObject();
|
||||
jsonObject.put("currentPage",req.getCurrent());
|
||||
jsonObject.put("pageSize",req.getSize());
|
||||
jsonObject.put("total",runPoList.size());
|
||||
jsonObject.put("currentPage", req.getCurrent());
|
||||
jsonObject.put("pageSize", req.getSize());
|
||||
jsonObject.put("total", runPoList.size());
|
||||
jsonObject.put("data", runPoList.stream().skip((long) (req.getCurrent() - 1) * req.getSize()).limit(req.getSize()).toList());
|
||||
return SdmResponse.success(jsonObject);
|
||||
}
|
||||
@@ -467,8 +472,8 @@ public class TaskServiceImpl implements ITaskService {
|
||||
attentionList.add(spdmTaskAttentionReq);
|
||||
}
|
||||
mapper.saveAttentionList(attentionList);
|
||||
}else {
|
||||
mapper.deleteAttentionByUserIdList(taskId,cancelUserIdList);
|
||||
} else {
|
||||
mapper.deleteAttentionByUserIdList(taskId, cancelUserIdList);
|
||||
}
|
||||
return SdmResponse.success();
|
||||
}
|
||||
|
||||
@@ -29,7 +29,7 @@ spring:
|
||||
cloud:
|
||||
nacos:
|
||||
discovery:
|
||||
server-addr: 192.168.65.161:8848
|
||||
server-addr: 127.0.0.1:8848
|
||||
enabled: true
|
||||
# username: nacos
|
||||
# password: ENC(+QKYnI6gAYu1SbLaZQTkZA==)
|
||||
|
||||
@@ -29,7 +29,7 @@ spring:
|
||||
cloud:
|
||||
nacos:
|
||||
discovery:
|
||||
server-addr: 192.168.65.161:8848
|
||||
server-addr: 127.0.0.1:8848
|
||||
# server-addr: localhost:8848
|
||||
enabled: true
|
||||
data:
|
||||
|
||||
@@ -30,7 +30,7 @@ spring:
|
||||
cloud:
|
||||
nacos:
|
||||
discovery:
|
||||
server-addr: 192.168.65.161:8848
|
||||
server-addr: 127.0.0.1:8848
|
||||
# server-addr: 127.0.0.1:8848
|
||||
enabled: true
|
||||
# username: nacos
|
||||
|
||||
Reference in New Issue
Block a user