优化数据总览
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -1525,6 +1525,7 @@ public class MinioFileIDataFileServiceImpl implements IDataFileService {
|
||||
|
||||
return SdmResponse.success(dtoList);
|
||||
} catch (Exception e) {
|
||||
log.error("获取目录列表失败", e);
|
||||
return SdmResponse.failed("获取目录列表失败");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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>
|
||||
Reference in New Issue
Block a user