From c293af38aa63f5f56b06b299861d684f9829dafb Mon Sep 17 00:00:00 2001 From: gulongcheng <474084054@qq.com> Date: Wed, 11 Mar 2026 10:07:21 +0800 Subject: [PATCH] =?UTF-8?q?fix:=E6=95=B0=E6=8D=AE=E6=80=BB=E8=A7=88?= =?UTF-8?q?=E6=94=AF=E6=8C=81=E9=A1=B9=E7=9B=AE=E7=BC=96=E7=A0=81=E6=A8=A1?= =?UTF-8?q?=E7=B3=8A=E6=9F=A5=E8=AF=A2=EF=BC=8C=E8=BF=94=E5=9B=9E=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E5=8C=85=E5=90=AB=E9=A1=B9=E7=9B=AE=E7=BC=96=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/MarsCodeWorkspaceAppSettings.xml | 1 - .../req/project/GetAllNodeByNodeTypeReq.java | 23 ++++++++++++++ .../SimulationNodeFeignClientImpl.java | 17 +++++----- .../project/ISimulationNodeFeignClient.java | 7 +++-- .../controller/DataOverviewController.java | 6 +++- .../impl/DimensionTemplateServiceImpl.java | 31 ++++++++++++------- .../controller/SimulationNodeController.java | 10 +++--- 7 files changed, 66 insertions(+), 29 deletions(-) create mode 100644 common/src/main/java/com/sdm/common/entity/req/project/GetAllNodeByNodeTypeReq.java 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> key 为节点id,value 为节点名称 + * @param req 查询请求参数 + * @return SdmResponse> key 为节点 id,value 为节点名称 */ - @GetMapping("/getAllNodeByNodeType") + @PostMapping("/getAllNodeByNodeType") @Operation(summary = "根据节点类型获取所有节点", description = "根据节点类型获取所有节点") - public SdmResponse> getAllNodeByNodeTypeAndUUidsWithKeyWord(@RequestParam(value = "uuids", required = false) List uuids, @RequestParam(value = "nodeType") String nodeType, @RequestParam(value = "keyword", required = false) String keyword) { - return nodeService.getAllNodeByNodeTypeAndUUidsWithKeyWord(nodeType, uuids, keyword); + public SdmResponse> getAllNodeByNodeTypeAndUUidsWithKeyWord(@RequestBody GetAllNodeByNodeTypeReq req) { + return nodeService.getAllNodeByNodeTypeAndUUidsWithKeyWord(req.getNodeType(), req.getUuids(), req.getKeyword()); } /**