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)) {