From c0c7a0144c1d080487a75dac65461619e05675bf Mon Sep 17 00:00:00 2001
From: gulongcheng <474084054@qq.com>
Date: Mon, 15 Dec 2025 20:09:50 +0800
Subject: [PATCH] =?UTF-8?q?=E6=95=B0=E6=8D=AE=E6=80=BB=E8=A7=88=E5=A4=9A?=
=?UTF-8?q?=E7=BB=B4=E5=BA=A6=E5=90=88=E5=B9=B6=E5=B1=95=E7=A4=BA?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.idea/inspectionProfiles/Project_Default.xml | 8 ++
.vscode/settings.json | 3 +
.../service/IDimensionTemplateService.java | 3 -
.../impl/DimensionTemplateServiceImpl.java | 131 ++++++++++++------
4 files changed, 102 insertions(+), 43 deletions(-)
create mode 100644 .idea/inspectionProfiles/Project_Default.xml
create mode 100644 .vscode/settings.json
diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml
new file mode 100644
index 00000000..7693510d
--- /dev/null
+++ b/.idea/inspectionProfiles/Project_Default.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.vscode/settings.json b/.vscode/settings.json
new file mode 100644
index 00000000..7b016a89
--- /dev/null
+++ b/.vscode/settings.json
@@ -0,0 +1,3 @@
+{
+ "java.compile.nullAnalysis.mode": "automatic"
+}
\ No newline at end of file
diff --git a/data/src/main/java/com/sdm/data/service/IDimensionTemplateService.java b/data/src/main/java/com/sdm/data/service/IDimensionTemplateService.java
index 3e20867b..51673ddd 100644
--- a/data/src/main/java/com/sdm/data/service/IDimensionTemplateService.java
+++ b/data/src/main/java/com/sdm/data/service/IDimensionTemplateService.java
@@ -35,9 +35,6 @@ public interface IDimensionTemplateService extends IService {
/**
* 根据数据显示维度展示左侧节点树
- * dimensionTemplateId+chooseUuid+chooseNodeType根据数据显示维度查询当前节点下的文件夹和文件,
- * dimensionTemplateId+fileId支持进入普通文件夹和节点文件夹查询下一层,
- * 支持分页查询
*
* @param req 获取模拟节点树的请求参数
* @return SdmResponse 响应对象,包含模拟节点树数据或错误信息
diff --git a/data/src/main/java/com/sdm/data/service/impl/DimensionTemplateServiceImpl.java b/data/src/main/java/com/sdm/data/service/impl/DimensionTemplateServiceImpl.java
index aa063265..f9d152b6 100644
--- a/data/src/main/java/com/sdm/data/service/impl/DimensionTemplateServiceImpl.java
+++ b/data/src/main/java/com/sdm/data/service/impl/DimensionTemplateServiceImpl.java
@@ -16,6 +16,7 @@ import com.sdm.common.entity.req.data.UploadFilesReq;
import com.sdm.common.entity.req.project.DelNodeReq;
import com.sdm.common.entity.req.system.UserQueryReq;
import com.sdm.common.entity.resp.AllNodeByProjectIdAndTypeResp;
+import com.sdm.common.entity.resp.PageDataResp;
import com.sdm.common.entity.resp.data.FileMetadataInfoResp;
import com.sdm.common.entity.resp.system.CIDUserResp;
import com.sdm.common.feign.impl.project.SimulationNodeFeignClientImpl;
@@ -39,6 +40,7 @@ import com.sdm.data.service.IFileMetadataInfoService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.ObjectUtils;
+import org.jetbrains.annotations.NotNull;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -240,19 +242,19 @@ public class DimensionTemplateServiceImpl extends ServiceImpl> nodeTaskList = simuluationNodeFeignClient.getNodeTaskList(chooseUuids);
- if (nodeTaskList.isSuccess()) {
- uuids.addAll(nodeTaskList.getData().stream().map(AllNodeByProjectIdAndTypeResp::getUuid).toList());
- log.info("获取节点下task的uudis:{}", uuids);
- }
+ // 3、获取当前节点下的任务、算列
+ SdmResponse> nodeTaskList = simuluationNodeFeignClient.getNodeTaskList(chooseUuids);
+ if (nodeTaskList.isSuccess()) {
+ uuids.addAll(nodeTaskList.getData().stream().map(AllNodeByProjectIdAndTypeResp::getUuid).toList());
+ log.info("获取节点下task的uudis:{}", uuids);
+ }
- SdmResponse> taskRunList = simuluationNodeFeignClient.getTaskRunList(chooseUuids);
- if (taskRunList.isSuccess()) {
- uuids.addAll(taskRunList.getData().stream().map(AllNodeByProjectIdAndTypeResp::getUuid).toList());
- log.info("获取节点下taskRun的uudis:{}", uuids);
+ SdmResponse> taskRunList = simuluationNodeFeignClient.getTaskRunList(chooseUuids);
+ if (taskRunList.isSuccess()) {
+ uuids.addAll(taskRunList.getData().stream().map(AllNodeByProjectIdAndTypeResp::getUuid).toList());
+ log.info("获取节点下taskRun的uudis:{}", uuids);
+ }
}
}
}
@@ -318,55 +320,104 @@ public class DimensionTemplateServiceImpl extends ServiceImpl dirInfos = null;
- if(ObjectUtils.isEmpty(req.getFileId()) && ObjectUtils.isEmpty(req.getFileIds())){
+
+ // 处理空参数情况
+ if (ObjectUtils.isEmpty(req.getFileId()) && ObjectUtils.isEmpty(req.getFileIds())) {
// 第一次进入数据总览页面,右侧不展示文件和文件夹
return SdmResponse.success();
}
- if(0L==req.getFileId()){
+ // 处理根目录情况
+ if (0L == req.getFileId()) {
// 和前端规定 0=触发根目录按钮,相当于获取左侧文件树的根节点文件夹
- GetSimulationNodeTreeReq getSimulationNodeTreeReq = new GetSimulationNodeTreeReq();
- getSimulationNodeTreeReq.setDimensionTemplateId(req.getDimensionTemplateId());
- getSimulationNodeTreeReq.setFileIds(null);
- SdmResponse> nodeDirInfos = getSimulationNodeTree(getSimulationNodeTreeReq);
- if (nodeDirInfos.isSuccess() && ObjectUtils.isNotEmpty(nodeDirInfos.getData())) {
- dirInfos = nodeDirInfos.getData().stream().flatMap(fileMetadataChildrenDTO -> fileMetadataChildrenDTO.getChildren().stream()).map(FileMetadataInfoResp::getId).toList();
- }
-
- PageHelper.startPage(req.getCurrent(), req.getSize());
- List fileMetadataInfos = fileMetadataInfoService.listSimulationNodeDir(dirInfos, req.isFilterEmptyData(), tenantId);
-
- PageInfo page = new PageInfo<>(fileMetadataInfos);
- return PageUtils.getJsonObjectSdmResponse(fileMetadataInfos, page);
+ return handleRootDirectory(req, tenantId);
}
- //fileId 不为空也不为0,是右侧点击进入文件夹下一层级查询
- // relatedResourceUuid和relatedResourceUuidOwnType不为空才是节点文件夹,才需要查询子节点文件夹文件
+ // 处理普通目录情况
+ return handleNormalDirectory(req, tenantId);
+ }
+
+ private SdmResponse handleRootDirectory(ListSimulationNodeTreeReq req, Long tenantId) {
+ GetSimulationNodeTreeReq getSimulationNodeTreeReq = new GetSimulationNodeTreeReq();
+ getSimulationNodeTreeReq.setDimensionTemplateId(req.getDimensionTemplateId());
+ getSimulationNodeTreeReq.setFileIds(null);
+
+ SdmResponse> nodeDirInfos = getSimulationNodeTree(getSimulationNodeTreeReq);
+ List dirInfos = extractDirIdsFromResponse(nodeDirInfos);
+
+ // 获取所有数据
+ List allFileMetadataInfos = fileMetadataInfoService.listSimulationNodeDir(dirInfos, req.isFilterEmptyData(), tenantId);
+
+ return processAndPageResults(allFileMetadataInfos, req);
+ }
+
+ private SdmResponse handleNormalDirectory(ListSimulationNodeTreeReq req, Long tenantId) {
GetSimulationNodeTreeReq getSimulationNodeTreeReq = new GetSimulationNodeTreeReq();
getSimulationNodeTreeReq.setDimensionTemplateId(req.getDimensionTemplateId());
getSimulationNodeTreeReq.setFileIds(req.getFileIds());
+
SdmResponse> nodeDirInfos = getSimulationNodeTree(getSimulationNodeTreeReq);
- if (nodeDirInfos.isSuccess() && ObjectUtils.isNotEmpty(nodeDirInfos.getData())) {
- dirInfos = nodeDirInfos.getData().stream().flatMap(fileMetadataChildrenDTO -> fileMetadataChildrenDTO.getChildren().stream()).map(FileMetadataInfoResp::getId).toList();
+ List dirInfos = extractDirIdsFromResponse(nodeDirInfos);
+
+ // 获取所有数据
+ List allFileMetadataInfos = fileMetadataInfoService.listSimulationNodeFiles(
+ req.getFileIds(),
+ dirInfos,
+ req.isFilterEmptyData(),
+ tenantId);
+
+ return processAndPageResults(allFileMetadataInfos, req);
+ }
+
+ private List extractDirIdsFromResponse(SdmResponse> response) {
+ if (response.isSuccess() && ObjectUtils.isNotEmpty(response.getData())) {
+ return response.getData().stream()
+ .flatMap(dto -> dto.getChildren().stream())
+ .map(FileMetadataInfoResp::getId)
+ .toList();
}
+ return Collections.emptyList();
+ }
-
- PageHelper.startPage(req.getCurrent(), req.getSize());
- List fileMetadataInfos = fileMetadataInfoService.listSimulationNodeFiles(req.getFileIds(), dirInfos,req.isFilterEmptyData(),tenantId);
+ private SdmResponse processAndPageResults(List fileMetadataInfos, ListSimulationNodeTreeReq req) {
+ // 设置创建者名称
setCreatorNames(fileMetadataInfos);
- PageInfo page = new PageInfo<>(fileMetadataInfos);
- return PageUtils.getJsonObjectSdmResponse(fileMetadataInfos, page);
+ // 使用 mergeNodeDirInfos 处理所有数据
+ List mergedResults = mergeNodeDirInfos(fileMetadataInfos);
+
+ // 手动分页
+ int pageSize = req.getSize();
+ int currentPage = req.getCurrent();
+ int fromIndex = (currentPage - 1) * pageSize;
+ int toIndex = Math.min(fromIndex + pageSize, mergedResults.size());
+
+ List pagedResults = new ArrayList<>();
+ if (fromIndex < mergedResults.size()) {
+ pagedResults = mergedResults.subList(fromIndex, toIndex);
+ }
+
+ PageInfo pageInfo = new PageInfo<>(pagedResults);
+ pageInfo.setTotal(mergedResults.size());
+ pageInfo.setPageNum(currentPage);
+ pageInfo.setPageSize(pageSize);
+
+ return PageUtils.getJsonObjectSdmResponse(pagedResults, pageInfo);
}
+
private void setCreatorNames(List list) {
try {
if (ObjectUtils.isNotEmpty(list)) {