Merge remote-tracking branch 'origin/main'
This commit is contained in:
@@ -52,6 +52,7 @@ import com.sdm.project.model.bo.TaskExtraNode;
|
||||
import com.sdm.project.model.bo.TaskNode;
|
||||
import com.sdm.project.model.bo.TaskNodeTag;
|
||||
import com.sdm.project.model.entity.*;
|
||||
import com.sdm.project.model.po.NodeAllBase;
|
||||
import com.sdm.project.model.po.PerformanceNodePo;
|
||||
import com.sdm.project.model.po.ProjectNodePo;
|
||||
import com.sdm.project.model.req.*;
|
||||
@@ -1716,6 +1717,62 @@ public class NodeServiceImpl extends ServiceImpl<SimulationNodeMapper, Simulatio
|
||||
recursionAllNodeIdList(addNodeIdList, allNodeIdList);
|
||||
}
|
||||
|
||||
public static void moveTargetToFirst(List<ProjectNodePo> nodeList, String targetId) {
|
||||
// 空值判断
|
||||
if (nodeList == null || nodeList.isEmpty() || targetId == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
// 遍历找到目标对象
|
||||
ProjectNodePo targetNode = null;
|
||||
for (ProjectNodePo node : nodeList) {
|
||||
if (targetId.equals(node.getUuid())) {
|
||||
targetNode = node;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// 如果找到目标对象,先移除再添加到首位
|
||||
if (targetNode != null) {
|
||||
nodeList.remove(targetNode);
|
||||
nodeList.add(0, targetNode);
|
||||
}
|
||||
}
|
||||
|
||||
public List<ProjectNodePo> sortWorkspaceNode(List<ProjectNodePo> workspaceNodeList) {
|
||||
// 对工位进行排序,-M工位顺序排第一个
|
||||
List<ProjectNodePo> sortWorkspaceNodeList = workspaceNodeList.stream().filter(node -> !node.getNodeCode().contains("-M")).collect(Collectors.toList());
|
||||
sortWorkspaceNodeList.sort((o1, o2) -> {
|
||||
String[] workspaceNode1 = o1.getNodeCode().split("-");
|
||||
String[] workspaceNode2 = o2.getNodeCode().split("-");
|
||||
|
||||
if (o1.getNodeCode().contains("-M") || o2.getNodeCode().contains("-M")) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (workspaceNode1.length != 2 || workspaceNode2.length != 2) {
|
||||
return o1.getNodeCode().compareTo(o2.getNodeCode());
|
||||
}
|
||||
|
||||
int prefix1 = Integer.parseInt(workspaceNode1[0]);
|
||||
int prefix2 = Integer.parseInt(workspaceNode2[0]);
|
||||
if (prefix1 != prefix2) {
|
||||
return Integer.compare(prefix1, prefix2);
|
||||
}
|
||||
|
||||
int suffix1 = Integer.parseInt(workspaceNode1[1]);
|
||||
int suffix2 = Integer.parseInt(workspaceNode2[1]);
|
||||
return Integer.compare(suffix1, suffix2);
|
||||
});
|
||||
ProjectNodePo specialWorkspaceNode = workspaceNodeList.stream().filter(workspaceNode -> workspaceNode.getNodeCode().contains("-M")).findFirst().orElse(null);
|
||||
log.info("specialWorkspaceNode为:{}",specialWorkspaceNode);
|
||||
if (specialWorkspaceNode != null) {
|
||||
sortWorkspaceNodeList.add(specialWorkspaceNode);
|
||||
moveTargetToFirst(sortWorkspaceNodeList,specialWorkspaceNode.getUuid());
|
||||
}
|
||||
return sortWorkspaceNodeList;
|
||||
}
|
||||
|
||||
@Override
|
||||
public SdmResponse<List<ProjectNodePo>> getChildrenNodeList(List<String> nodeIdList, String nodeType) {
|
||||
log.info("getChildrenNodeList,nodeIdList:{},nodeType:{}", nodeIdList, nodeType);
|
||||
@@ -1724,17 +1781,21 @@ public class NodeServiceImpl extends ServiceImpl<SimulationNodeMapper, Simulatio
|
||||
return SdmResponse.success(new ArrayList<>());
|
||||
}
|
||||
// 兼容处理cid同步的数据
|
||||
List<ProjectNodePo> dirtyProjectNodeList = projectNodePoList.stream().filter(projectNode -> projectNode.getUuid().equals(projectNode.getParentId())).toList();
|
||||
List<ProjectNodePo> dirtyProjectNodeList = projectNodePoList.stream().filter(projectNode -> projectNode.getUuid().equals(projectNode.getParentId())).collect(Collectors.toList());
|
||||
if (CollectionUtils.isNotEmpty(dirtyProjectNodeList)) {
|
||||
log.error("以下节点id:{},的uuid和parentId相同,需要处理",dirtyProjectNodeList.stream().map(ProjectNodePo::getUuid).collect(Collectors.joining(",")));
|
||||
return SdmResponse.failed("节点:" + dirtyProjectNodeList.stream().map(ProjectNodePo::getNodeName).collect(Collectors.joining(",")) + "的数据有误,需要处理");
|
||||
}
|
||||
log.info("getChildrenNodeList为:{}",projectNodePoList);
|
||||
List<ProjectNodePo> returnProjectNodeList = projectNodePoList.stream().filter(projectNode -> nodeType.equals(projectNode.getNodeType())).toList();
|
||||
List<ProjectNodePo> returnProjectNodeList = projectNodePoList.stream().filter(projectNode -> nodeType.equals(projectNode.getNodeType())).collect(Collectors.toList());
|
||||
if (CollectionUtils.isNotEmpty(returnProjectNodeList)) {
|
||||
// 利元亨的工位排序
|
||||
if (lyricFlag == 1 && NodeTypeEnum.WORKSPACE.getValue().equals(nodeType)) {
|
||||
returnProjectNodeList = sortWorkspaceNode(returnProjectNodeList);
|
||||
}
|
||||
return SdmResponse.success(returnProjectNodeList);
|
||||
}
|
||||
return getChildrenNodeList(projectNodePoList.stream().map(ProjectNodePo::getUuid).toList(), nodeType);
|
||||
return getChildrenNodeList(projectNodePoList.stream().map(ProjectNodePo::getUuid).collect(Collectors.toList()), nodeType);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -635,7 +635,7 @@ public class ProjectServiceImpl extends BaseService implements IProjectService {
|
||||
return SdmResponse.success(realTopProjectNodeList.stream().flatMap(item -> item.getChildren().stream().filter(Objects::nonNull)).toList());
|
||||
}
|
||||
|
||||
private void sortWorkspaceNode(ProjectNodePo projectNodePo) {
|
||||
public void sortWorkspaceNode(ProjectNodePo projectNodePo) {
|
||||
List<NodeAllBase> children = projectNodePo.getChildren();
|
||||
if (CollectionUtils.isEmpty(children)) {
|
||||
return;
|
||||
|
||||
Reference in New Issue
Block a user