fix:数据查询支持列头无关联,基于tag查询,排序

This commit is contained in:
2026-03-09 21:03:06 +08:00
parent ddd7cadd47
commit 79301ee565

View File

@@ -15,6 +15,7 @@ import com.sdm.common.entity.req.data.TagReq;
import com.sdm.common.entity.req.export.FileAnalysisExportExcelFormat;
import com.sdm.common.entity.req.export.FileAnalysisExportExcelParam;
import com.sdm.common.entity.resp.PageDataResp;
import com.sdm.common.utils.FileSizeUtils;
import com.sdm.common.utils.PageUtils;
import com.sdm.common.utils.SystemOperate;
import com.sdm.data.bo.ExportOperate;
@@ -109,12 +110,19 @@ public class DataAnalysisServiceImpl implements IDataAnalysisService {
// 所属项目、阶段、机台、工位、任务、算列
applyTagFilters(wrapper, req.getTagReq());
List<FileMetadataInfo> fileMetadataInfos = wrapper.orderByDesc(FileMetadataInfo::getCreateTime).list();
if (ObjectUtils.isEmpty(req.getOrderBy())) {
wrapper.orderByDesc(FileMetadataInfo::getCreateTime);
}
List<FileMetadataInfo> fileMetadataInfos = wrapper.list();
PageInfo<FileMetadataInfo> page = new PageInfo<>(fileMetadataInfos);
List<SimulationTaskResultCurveResp> finalResultList = fileMetadataInfos.stream().map(file -> {
SimulationTaskResultCurveResp resp = new SimulationTaskResultCurveResp();
BeanUtils.copyProperties(file, resp);
if (ObjectUtils.isNotEmpty(file.getFileSize())) {
resp.setFormatFileSize(FileSizeUtils.formatFileSize(BigDecimal.valueOf(file.getFileSize())));
}
hierarchyHelper.setTagReqFromFileMetadata(file, resp);
return resp;
}).collect(Collectors.toList());
@@ -273,6 +281,33 @@ public class DataAnalysisServiceImpl implements IDataAnalysisService {
}
}
private void fillFormatFileSizeForTaskLevel(List<SimulationTaskResultCurveResp> resultList, List<Long> fileIdList) {
if (CollectionUtils.isEmpty(resultList) || CollectionUtils.isEmpty(fileIdList)) {
return;
}
List<FileMetadataInfo> metadataInfos = fileMetadataInfoService.lambdaQuery()
.in(FileMetadataInfo::getId, fileIdList)
.eq(FileMetadataInfo::getTenantId, ThreadLocalContext.getTenantId())
.isNull(FileMetadataInfo::getDeletedAt)
.select(FileMetadataInfo::getId, FileMetadataInfo::getFileSize)
.list();
if (CollectionUtils.isEmpty(metadataInfos)) {
return;
}
Map<Long, Long> fileSizeMap = metadataInfos.stream()
.collect(Collectors.toMap(FileMetadataInfo::getId, FileMetadataInfo::getFileSize, (left, right) -> left));
for (SimulationTaskResultCurveResp resp : resultList) {
Long fileSize = fileSizeMap.get(resp.getId());
if (ObjectUtils.isNotEmpty(fileSize)) {
resp.setFormatFileSize(FileSizeUtils.formatFileSize(BigDecimal.valueOf(fileSize)));
}
}
}
private void sortByTagFieldInCurrentPage(List<SimulationTaskResultCurveResp> data, String orderBy, String orderType) {
if (CollectionUtils.isEmpty(data) || StringUtils.isBlank(orderBy)) {
return;
@@ -294,6 +329,17 @@ public class DataAnalysisServiceImpl implements IDataAnalysisService {
if (ObjectUtils.isEmpty(item)) {
return null;
}
if ("createTime".equalsIgnoreCase(orderBy)) {
return ObjectUtils.isNotEmpty(item.getCreateTime()) ? item.getCreateTime().toString() : null;
}
if ("originalName".equalsIgnoreCase(orderBy)) {
return item.getOriginalName();
}
if ("formatFileSize".equalsIgnoreCase(orderBy)) {
return item.getFormatFileSize();
}
TagReq tagReq = item.getTagReq();
if (ObjectUtils.isEmpty(tagReq)) {
return null;
@@ -359,6 +405,7 @@ public class DataAnalysisServiceImpl implements IDataAnalysisService {
);
setTagReqForSimulationResult(finalResultList, fileIdList);
fillFormatFileSizeForTaskLevel(finalResultList, fileIdList);
sortByTagFieldInCurrentPage(finalResultList, req.getOrderBy(), req.getOrderType());
List<SimulationTaskResultCurveResp> sortedList = finalResultList.stream()