From 7ec08c91e7fc14c9178412f753c76a0c61ae786e Mon Sep 17 00:00:00 2001 From: lidongyang <506508008@qq.com> Date: Tue, 17 Mar 2026 15:29:13 +0800 Subject: [PATCH] =?UTF-8?q?1=E3=80=81getChildrenNodeList=E5=B7=A5=E4=BD=8D?= =?UTF-8?q?=E6=8E=92=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../project/service/impl/NodeServiceImpl.java | 67 ++++++++++++++++++- .../service/impl/ProjectServiceImpl.java | 2 +- 2 files changed, 65 insertions(+), 4 deletions(-) diff --git a/project/src/main/java/com/sdm/project/service/impl/NodeServiceImpl.java b/project/src/main/java/com/sdm/project/service/impl/NodeServiceImpl.java index c79156a2..0c373311 100644 --- a/project/src/main/java/com/sdm/project/service/impl/NodeServiceImpl.java +++ b/project/src/main/java/com/sdm/project/service/impl/NodeServiceImpl.java @@ -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 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 sortWorkspaceNode(List workspaceNodeList) { + // 对工位进行排序,-M工位顺序排第一个 + List 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> getChildrenNodeList(List nodeIdList, String nodeType) { log.info("getChildrenNodeList,nodeIdList:{},nodeType:{}", nodeIdList, nodeType); @@ -1724,17 +1781,21 @@ public class NodeServiceImpl extends ServiceImpl()); } // 兼容处理cid同步的数据 - List dirtyProjectNodeList = projectNodePoList.stream().filter(projectNode -> projectNode.getUuid().equals(projectNode.getParentId())).toList(); + List 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 returnProjectNodeList = projectNodePoList.stream().filter(projectNode -> nodeType.equals(projectNode.getNodeType())).toList(); + List 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); } /** 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 45b0d37b..63f1906f 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 @@ -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 children = projectNodePo.getChildren(); if (CollectionUtils.isEmpty(children)) { return;