优化数据总览

This commit is contained in:
2025-12-17 09:41:57 +08:00
parent 6966153446
commit 5260a5a8b4
6 changed files with 38 additions and 10 deletions

View File

@@ -4,6 +4,7 @@ package com.sdm.data.controller;
import com.sdm.common.common.SdmResponse;
import com.sdm.common.entity.req.data.CreateDirReq;
import com.sdm.common.entity.req.data.UploadFilesReq;
import com.sdm.common.entity.resp.PageDataResp;
import com.sdm.data.model.dto.FileMetadataChildrenDTO;
import com.sdm.data.model.entity.FileMetadataInfo;
import com.sdm.data.model.req.*;
@@ -50,7 +51,7 @@ public class DataOverviewController {
*/
@PostMapping("/listSimulationNodeFiles")
@Operation(summary = "dimensionTemplateId+fileId支持进入文件夹和节点文件夹查询下一层,支持分页查询")
public SdmResponse listSimulationNodeFiles(@RequestBody ListSimulationNodeTreeReq req) {
public SdmResponse<PageDataResp<List<FileMetadataChildrenDTO>>> listSimulationNodeFiles(@RequestBody ListSimulationNodeTreeReq req) {
return dimensionTemplateService.listSimulationNodeFiles(req);
}

View File

@@ -15,6 +15,11 @@ public class FileMetadataChildrenDTO extends FileMetadataInfoResp {
@Schema(description = "子节点列表")
private List<FileMetadataInfoResp> children;
/**
* 聚合文件ID列表
*/
private List<Long> fileIds;
@Schema(description = "总名称去除projectNode/前缀的bucketName")
private String totalName;
}

View File

@@ -3,6 +3,7 @@ package com.sdm.data.service;
import com.sdm.common.common.SdmResponse;
import com.sdm.common.entity.req.data.CreateDirReq;
import com.sdm.common.entity.req.data.UploadFilesReq;
import com.sdm.common.entity.resp.PageDataResp;
import com.sdm.data.model.dto.FileMetadataChildrenDTO;
import com.sdm.data.model.entity.DimensionTemplate;
import com.baomidou.mybatisplus.extension.service.IService;
@@ -39,7 +40,7 @@ public interface IDimensionTemplateService extends IService<DimensionTemplate> {
* @param req 获取模拟节点树的请求参数
* @return SdmResponse 响应对象,包含模拟节点树数据或错误信息
*/
SdmResponse listSimulationNodeFiles(ListSimulationNodeTreeReq req);
SdmResponse<PageDataResp<List<FileMetadataChildrenDTO>>> listSimulationNodeFiles(ListSimulationNodeTreeReq req);
SdmResponse createSimulationNodeDir(CreateDirReq req);

View File

@@ -314,9 +314,27 @@ public class DimensionTemplateServiceImpl extends ServiceImpl<DimensionTemplateM
}
dto.setChildren(children);
dto.setFileIds(children.stream().map(FileMetadataInfoResp::getId).toList());
result.add(dto);
}
}
// 根据children中的最大创建时间对result进行倒序排序
result.sort((dto1, dto2) -> {
LocalDateTime maxCreateTime1 = dto1.getChildren().stream()
.map(FileMetadataInfoResp::getCreateTime)
.filter(Objects::nonNull)
.max(LocalDateTime::compareTo)
.orElse(LocalDateTime.MIN);
LocalDateTime maxCreateTime2 = dto2.getChildren().stream()
.map(FileMetadataInfoResp::getCreateTime)
.filter(Objects::nonNull)
.max(LocalDateTime::compareTo)
.orElse(LocalDateTime.MIN);
return maxCreateTime2.compareTo(maxCreateTime1); // 倒序排序
});
return result;
}
@@ -330,7 +348,7 @@ public class DimensionTemplateServiceImpl extends ServiceImpl<DimensionTemplateM
* @return 文件列表
*/
@Override
public SdmResponse listSimulationNodeFiles(ListSimulationNodeTreeReq req) {
public SdmResponse<PageDataResp<List<FileMetadataChildrenDTO>>> listSimulationNodeFiles(ListSimulationNodeTreeReq req) {
Long tenantId = ThreadLocalContext.getTenantId();
// 处理空参数情况
@@ -349,7 +367,7 @@ public class DimensionTemplateServiceImpl extends ServiceImpl<DimensionTemplateM
return handleNormalDirectory(req, tenantId);
}
private SdmResponse handleRootDirectory(ListSimulationNodeTreeReq req, Long tenantId) {
private SdmResponse<PageDataResp<List<FileMetadataChildrenDTO>>> handleRootDirectory(ListSimulationNodeTreeReq req, Long tenantId) {
GetSimulationNodeTreeReq getSimulationNodeTreeReq = new GetSimulationNodeTreeReq();
getSimulationNodeTreeReq.setDimensionTemplateId(req.getDimensionTemplateId());
getSimulationNodeTreeReq.setFileIds(null);
@@ -363,7 +381,7 @@ public class DimensionTemplateServiceImpl extends ServiceImpl<DimensionTemplateM
return processAndPageResults(allFileMetadataInfos, req);
}
private SdmResponse handleNormalDirectory(ListSimulationNodeTreeReq req, Long tenantId) {
private SdmResponse<PageDataResp<List<FileMetadataChildrenDTO>>> handleNormalDirectory(ListSimulationNodeTreeReq req, Long tenantId) {
GetSimulationNodeTreeReq getSimulationNodeTreeReq = new GetSimulationNodeTreeReq();
getSimulationNodeTreeReq.setDimensionTemplateId(req.getDimensionTemplateId());
getSimulationNodeTreeReq.setFileIds(req.getFileIds());
@@ -391,7 +409,7 @@ public class DimensionTemplateServiceImpl extends ServiceImpl<DimensionTemplateM
return Collections.emptyList();
}
private SdmResponse processAndPageResults(List<FileMetadataInfo> fileMetadataInfos, ListSimulationNodeTreeReq req) {
private SdmResponse<PageDataResp<List<FileMetadataChildrenDTO>>> processAndPageResults(List<FileMetadataInfo> fileMetadataInfos, ListSimulationNodeTreeReq req) {
// 设置创建者名称
setCreatorNames(fileMetadataInfos);

View File

@@ -1525,6 +1525,7 @@ public class MinioFileIDataFileServiceImpl implements IDataFileService {
return SdmResponse.success(dtoList);
} catch (Exception e) {
log.error("获取目录列表失败", e);
return SdmResponse.failed("获取目录列表失败");
}
}

View File

@@ -19,11 +19,12 @@
<if test="filterEmptyData != null and filterEmptyData">
AND file_storage.fileId IS NOT NULL
</if>
ORDER BY updateTime DESC
</select>
<select id="listSimulationNodeFiles" resultType="com.sdm.data.model.entity.FileMetadataInfo">
<!-- 第一个子查询文件(必执行) -->
<!-- 第一个子查询文件(必执行) -->
SELECT distinct file_metadata_info.*
FROM file_metadata_info
WHERE parentId IN (
@@ -35,8 +36,8 @@
AND dataType = 2
AND isLatest = true
<!-- 动态判断uuids 不为空且有元素时,才拼接 UNION ALL + 第二个子查询普通文件夹和节点文件夹 -->
<if test="fileIds != null">
<!-- 动态判断uuids 不为空且有元素时,才拼接 UNION ALL + 第二个子查询普通文件夹和节点文件夹 -->
<if test="fileIds != null and fileIds.size() > 0">
UNION ALL
(
SELECT file_metadata_info.*
@@ -46,6 +47,7 @@
</if>
WHERE
file_metadata_info.tenantId = #{tenantId}
and
file_metadata_info.id IN (
<foreach collection="fileIds" item="fileId" separator=",">
@@ -60,6 +62,6 @@
</if>
<!-- 排序:无论是否联合,都对最终结果排序 -->
ORDER BY file_metadata_info.originalName
ORDER BY updateTime DESC
</select>
</mapper>