Merge remote-tracking branch 'origin/main'

This commit is contained in:
2026-03-17 15:43:25 +08:00
2 changed files with 65 additions and 4 deletions

View File

@@ -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("getChildrenNodeListnodeIdList{}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);
}
/**

View File

@@ -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;