diff --git a/.idea/MarsCodeWorkspaceAppSettings.xml b/.idea/MarsCodeWorkspaceAppSettings.xml
index 68fda07e..bb04b6c5 100644
--- a/.idea/MarsCodeWorkspaceAppSettings.xml
+++ b/.idea/MarsCodeWorkspaceAppSettings.xml
@@ -2,6 +2,5 @@
-
\ No newline at end of file
diff --git a/common/src/main/java/com/sdm/common/entity/req/project/GetAllNodeByNodeTypeReq.java b/common/src/main/java/com/sdm/common/entity/req/project/GetAllNodeByNodeTypeReq.java
new file mode 100644
index 00000000..6704c817
--- /dev/null
+++ b/common/src/main/java/com/sdm/common/entity/req/project/GetAllNodeByNodeTypeReq.java
@@ -0,0 +1,23 @@
+package com.sdm.common.entity.req.project;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * 根据节点类型和 UUIDs 查询节点列表请求参数
+ */
+@Schema(description = "根据节点类型和 UUIDs 查询节点列表请求参数")
+@Data
+public class GetAllNodeByNodeTypeReq {
+
+ @Schema(description = "节点 UUID 列表", example = "[\"uuid1\", \"uuid2\"]")
+ private List uuids;
+
+ @Schema(description = "节点类型", example = "PROJECT")
+ private String nodeType;
+
+ @Schema(description = "关键词", example = "测试")
+ private String keyword;
+}
diff --git a/common/src/main/java/com/sdm/common/feign/impl/project/SimulationNodeFeignClientImpl.java b/common/src/main/java/com/sdm/common/feign/impl/project/SimulationNodeFeignClientImpl.java
index 58871e98..7cfdccb2 100644
--- a/common/src/main/java/com/sdm/common/feign/impl/project/SimulationNodeFeignClientImpl.java
+++ b/common/src/main/java/com/sdm/common/feign/impl/project/SimulationNodeFeignClientImpl.java
@@ -2,6 +2,7 @@ package com.sdm.common.feign.impl.project;
import com.sdm.common.common.SdmResponse;
import com.sdm.common.entity.req.project.DelNodeReq;
+import com.sdm.common.entity.req.project.GetAllNodeByNodeTypeReq;
import com.sdm.common.entity.req.project.SpdmNodeListReq;
import com.sdm.common.entity.req.project.SpdmQueryRunInfoListReq;
import com.sdm.common.entity.req.project.SpdmQueryRunListReq;
@@ -22,17 +23,17 @@ public class SimulationNodeFeignClientImpl implements ISimulationNodeFeignClient
ISimulationNodeFeignClient simulationNodeFeignClient;
/**
- * 根据节点类型和节点ID获取所有节点信息
+ * 根据节点类型和节点 ID 获取所有节点信息(Feign 接口方法)
*
- * @param nodeType 节点类型
- * @param uuids 节点ID
- * @return SdmResponse> key 为节点id,value 为节点名称
+ * @param req 查询请求参数
+ * @return SdmResponse> key 为节点 id,value 为节点名称
*/
- public SdmResponse> getAllNodeByNodeTypeAndUUidsWithKeyWord(List uuids, String nodeType, String keyword) {
- SdmResponse> response;
+ @Override
+ public SdmResponse> getAllNodeByNodeTypeAndUUidsWithKeyWord(GetAllNodeByNodeTypeReq req) {
+ SdmResponse> response;
try {
- log.info("根据节点类型和节点ID获取所有节点信息请求参数:uuids={}, nodeType={}, keyword={}", uuids, nodeType, keyword);
- response = simulationNodeFeignClient.getAllNodeByNodeTypeAndUUidsWithKeyWord(uuids, nodeType, keyword);
+ log.info("根据节点类型和节点 ID 获取所有节点信息请求参数:uuids={}, nodeType={}, keyword={}", req.getUuids(), req.getNodeType(), req.getKeyword());
+ response = simulationNodeFeignClient.getAllNodeByNodeTypeAndUUidsWithKeyWord(req);
if (!response.isSuccess() || response.getData() == null || response.getData().isEmpty()) {
return SdmResponse.failed("获取节点信息失败");
}
diff --git a/common/src/main/java/com/sdm/common/feign/inter/project/ISimulationNodeFeignClient.java b/common/src/main/java/com/sdm/common/feign/inter/project/ISimulationNodeFeignClient.java
index 716d8066..94ad5bac 100644
--- a/common/src/main/java/com/sdm/common/feign/inter/project/ISimulationNodeFeignClient.java
+++ b/common/src/main/java/com/sdm/common/feign/inter/project/ISimulationNodeFeignClient.java
@@ -2,6 +2,7 @@ package com.sdm.common.feign.inter.project;
import com.sdm.common.common.SdmResponse;
import com.sdm.common.entity.req.project.DelNodeReq;
+import com.sdm.common.entity.req.project.GetAllNodeByNodeTypeReq;
import com.sdm.common.entity.req.project.SpdmNodeListReq;
import com.sdm.common.entity.req.project.SpdmQueryRunInfoListReq;
import com.sdm.common.entity.req.project.SpdmQueryRunListReq;
@@ -20,11 +21,11 @@ import java.util.List;
public interface ISimulationNodeFeignClient {
/**
* 根据节点类型获取所有节点
- * @param nodeType 节点类型
+ * @param req 查询请求参数
* @return SdmResponse>
*/
- @GetMapping("/node/getAllNodeByNodeType")
- SdmResponse> getAllNodeByNodeTypeAndUUidsWithKeyWord(@RequestParam(value = "uuids", required = false) List uuids, @RequestParam(value = "nodeType") String nodeType, @RequestParam(value = "keyword", required = false) String keyword);
+ @PostMapping("/node/getAllNodeByNodeType")
+ SdmResponse> getAllNodeByNodeTypeAndUUidsWithKeyWord(@RequestBody GetAllNodeByNodeTypeReq req);
/**
* 根据项目ID和节点类型获取所有节点信息
diff --git a/data/src/main/java/com/sdm/data/controller/DataOverviewController.java b/data/src/main/java/com/sdm/data/controller/DataOverviewController.java
index bafee17d..ecb6d4d4 100644
--- a/data/src/main/java/com/sdm/data/controller/DataOverviewController.java
+++ b/data/src/main/java/com/sdm/data/controller/DataOverviewController.java
@@ -44,7 +44,11 @@ public class DataOverviewController {
@PostMapping("/getSimulationNodeTree")
@Operation(summary = "根据数据显示维度展示左侧节点树")
public SdmResponse> getSimulationNodeTree(@RequestBody GetSimulationNodeTreeReq req) {
- return dimensionTemplateService.getSimulationNodeTree(req);
+ long start = System.currentTimeMillis();
+ SdmResponse> simulationNodeTree = dimensionTemplateService.getSimulationNodeTree(req);
+ long end = System.currentTimeMillis();
+ System.out.println("getSimulationNodeTree方法耗时:" + (end - start) + "毫秒,入参:" + req.toString());
+ return simulationNodeTree;
}
/**
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 ad1314b4..a08267cd 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
@@ -13,6 +13,7 @@ import com.sdm.common.entity.req.data.DelDirReq;
import com.sdm.common.entity.req.data.DelFileReq;
import com.sdm.common.entity.req.data.UploadFilesReq;
import com.sdm.common.entity.req.project.DelNodeReq;
+import com.sdm.common.entity.req.project.GetAllNodeByNodeTypeReq;
import com.sdm.common.entity.req.project.GetTaskDetailReq;
import com.sdm.common.entity.req.project.SpdmQueryRunInfoListReq;
import com.sdm.common.entity.req.project.SpdmQueryRunListReq;
@@ -236,7 +237,11 @@ public class DimensionTemplateServiceImpl extends ServiceImpl rootNodeTypes = dimensionNodeTypeLevels.get(0);
for (String rootNodeType : rootNodeTypes) {
- SdmResponse> allNodeByNodeTypeResponse = simuluationNodeFeignClient.getAllNodeByNodeTypeAndUUidsWithKeyWord(null, rootNodeType, req.getKeyword());
+ GetAllNodeByNodeTypeReq nodeReq = new GetAllNodeByNodeTypeReq();
+ nodeReq.setUuids(null);
+ nodeReq.setNodeType(rootNodeType);
+ nodeReq.setKeyword(req.getKeyword());
+ SdmResponse> allNodeByNodeTypeResponse = simuluationNodeFeignClient.getAllNodeByNodeTypeAndUUidsWithKeyWord(nodeReq);
if (!allNodeByNodeTypeResponse.isSuccess()) {
log.error("获取节点信息失败,nodeType:{}", rootNodeType);
@@ -265,7 +270,7 @@ public class DimensionTemplateServiceImpl extends ServiceImpl nodeDirInfos = fileMetadataInfoService.lambdaQuery().in(FileMetadataInfo::getId, fileIds).orderByDesc(FileMetadataInfo::getCreateTime).list();
- if(CollectionUtils.isNotEmpty(nodeDirInfos)) {
+ if (CollectionUtils.isNotEmpty(nodeDirInfos)) {
String chooseNodeType = nodeDirInfos.get(0).getRelatedResourceUuidOwnType();
List chooseUuids = nodeDirInfos.stream().map(FileMetadataInfo::getRelatedResourceUuid).toList();
@@ -319,16 +324,12 @@ public class DimensionTemplateServiceImpl extends ServiceImpl nodeCodeMap = getNodeCodeMapByUuid(uuids);
- resultDir.forEach(item -> item.setNodeCode(nodeCodeMap.get(item.getRelatedResourceUuid())));
}
- if(CollectionUtils.isEmpty(resultDir)){
+ if (CollectionUtils.isEmpty(resultDir)) {
return SdmResponse.success(Collections.emptyList());
}
-
+
// 对nodeDirInfos按照originalName进行合并,并处理bucketName生成totalName
List mergedResult = mergeNodeDirInfos(resultDir);
return SdmResponse.success(mergedResult);
@@ -336,15 +337,19 @@ public class DimensionTemplateServiceImpl extends ServiceImpl getNodeCodeMapByUuid(List uuids) {
- SdmResponse> allNodeByProjectIdAndType = simuluationNodeFeignClient.getAllNodeByNodeTypeAndUUidsWithKeyWord(uuids, null, null );
+ GetAllNodeByNodeTypeReq req = new GetAllNodeByNodeTypeReq();
+ req.setUuids(uuids);
+ SdmResponse> allNodeByProjectIdAndType = simuluationNodeFeignClient.getAllNodeByNodeTypeAndUUidsWithKeyWord(req);
if (allNodeByProjectIdAndType.isSuccess() && CollectionUtils.isNotEmpty(allNodeByProjectIdAndType.getData())) {
List data = allNodeByProjectIdAndType.getData();
- return data.stream().collect(Collectors.toMap(AllNodeByProjectIdAndTypeResp::getUuid, AllNodeByProjectIdAndTypeResp::getNodeCode));
+ return data.stream()
+ .filter(node -> StringUtils.isNotBlank(node.getNodeCode()))
+ .collect(Collectors.toMap(AllNodeByProjectIdAndTypeResp::getUuid, AllNodeByProjectIdAndTypeResp::getNodeCode));
}
return Collections.emptyMap();
}
@@ -356,6 +361,10 @@ public class DimensionTemplateServiceImpl extends ServiceImpl mergeNodeDirInfos(List nodeDirInfos) {
+ // 设置节点的nodeCode
+ Map nodeCodeMap = getNodeCodeMapByUuid(nodeDirInfos.stream().map(FileMetadataInfo::getRelatedResourceUuid).distinct().toList());
+ nodeDirInfos.forEach(item -> item.setNodeCode(nodeCodeMap.get(item.getRelatedResourceUuid())));
+
// 按originalName分组
Map> groupedByOriginalName = nodeDirInfos.stream()
.collect(Collectors.groupingBy(FileMetadataInfo::getOriginalName));
diff --git a/project/src/main/java/com/sdm/project/controller/SimulationNodeController.java b/project/src/main/java/com/sdm/project/controller/SimulationNodeController.java
index d520df19..23385bd8 100644
--- a/project/src/main/java/com/sdm/project/controller/SimulationNodeController.java
+++ b/project/src/main/java/com/sdm/project/controller/SimulationNodeController.java
@@ -151,13 +151,13 @@ public class SimulationNodeController implements ISimulationNodeFeignClient {
/**
* 根据节点类型获取所有节点
*
- * @param nodeType 节点类型
- * @return SdmResponse