Merge remote-tracking branch 'origin/main'
This commit is contained in:
@@ -66,6 +66,8 @@ import org.apache.commons.lang3.ObjectUtils;
|
||||
import org.assertj.core.util.DateUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
|
||||
import java.util.Optional;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Qualifier;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
@@ -3666,78 +3668,136 @@ public class MinioFileIDataFileServiceImpl implements IDataFileService {
|
||||
}
|
||||
|
||||
private void setSimulationPoolAndTaskInfo(List<FileMetadataInfo> list) {
|
||||
if (ObjectUtils.isNotEmpty(list)) {
|
||||
List<Long> fileIds = list.stream()
|
||||
.map(FileMetadataInfo::getId)
|
||||
.distinct()
|
||||
.toList();
|
||||
if (ObjectUtils.isEmpty(list)) {
|
||||
return;
|
||||
}
|
||||
|
||||
List<TaskBaseInfo> result = new ArrayList<>();
|
||||
List<FileSimulationMappingResp> fileSimulationMappingByFileId = fileSimulationMappingService.getFileSimulationMappingByFileId(fileIds);
|
||||
if(CollectionUtils.isEmpty(fileSimulationMappingByFileId)){
|
||||
return;
|
||||
List<FileMetadataInfo> pendingQueryList = new ArrayList<>();
|
||||
for (FileMetadataInfo fileMetadataInfo : list) {
|
||||
if (!trySetPoolInfosFromTemp(fileMetadataInfo)) {
|
||||
pendingQueryList.add(fileMetadataInfo);
|
||||
}
|
||||
log.info("文件绑定知识库的查询结果 :{}",fileSimulationMappingByFileId);
|
||||
}
|
||||
|
||||
fileSimulationMappingByFileId.forEach(fileSimulationMappingResp -> {
|
||||
SdmResponse<Map<String, TaskBaseInfo>> taskPoolTaskMap = isSimuluationTaskPoolFeignClient.getTaskPoolTaskMap(fileSimulationMappingResp.getSimulationPoolId());
|
||||
if(taskPoolTaskMap.isSuccess() && !Objects.isNull(taskPoolTaskMap.getData())) {
|
||||
Map<String, TaskBaseInfo> data = taskPoolTaskMap.getData();
|
||||
TaskBaseInfo taskBaseInfo = data.getOrDefault(fileSimulationMappingResp.getSimulationPoolTaskId(), null);
|
||||
if(ObjectUtils.isNotEmpty(taskBaseInfo)) {
|
||||
taskBaseInfo.setPoolId(fileSimulationMappingResp.getSimulationPoolId());
|
||||
taskBaseInfo.setFileId(fileSimulationMappingResp.getFileId());
|
||||
result.add(taskBaseInfo);
|
||||
if (CollectionUtils.isNotEmpty(pendingQueryList)) {
|
||||
fillPoolInfosFromMappings(pendingQueryList);
|
||||
}
|
||||
}
|
||||
|
||||
private boolean trySetPoolInfosFromTemp(FileMetadataInfo fileMetadataInfo) {
|
||||
List<SimulationPoolInfo> simulationPoolInfoList = fileMetadataInfo.getSimulationPoolInfoList();
|
||||
if (CollectionUtils.isEmpty(simulationPoolInfoList)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
List<PoolInfo> poolInfos = new ArrayList<>();
|
||||
for (SimulationPoolInfo simulationPoolInfo : simulationPoolInfoList) {
|
||||
Integer poolId = simulationPoolInfo.getSimulationPoolId();
|
||||
SdmResponse<Map<String, TaskBaseInfo>> taskPoolTaskMap = isSimuluationTaskPoolFeignClient.getTaskPoolTaskMap(poolId);
|
||||
Map<String, TaskBaseInfo> data = taskPoolTaskMap.isSuccess() ? taskPoolTaskMap.getData() : null;
|
||||
|
||||
List<String> taskIds = Optional.ofNullable(simulationPoolInfo.getSimulationPoolTaskIds()).orElseGet(ArrayList::new);
|
||||
List<TaskBaseInfo> taskList = new ArrayList<>();
|
||||
if (CollectionUtils.isNotEmpty(taskIds) && ObjectUtils.isNotEmpty(data)) {
|
||||
taskIds.forEach(taskId -> {
|
||||
TaskBaseInfo taskBaseInfo = data.getOrDefault(taskId, null);
|
||||
if (ObjectUtils.isNotEmpty(taskBaseInfo)) {
|
||||
taskBaseInfo.setPoolId(poolId);
|
||||
taskBaseInfo.setFileId(fileMetadataInfo.getId());
|
||||
taskList.add(taskBaseInfo);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
PoolInfo poolInfo = new PoolInfo();
|
||||
poolInfo.setSimulationPoolId(poolId);
|
||||
poolInfo.setSimulationPoolName("");
|
||||
poolInfo.setSimulationPoolVersion(simulationPoolInfo.getSimulationPoolVersion());
|
||||
poolInfo.setSimulationPoolTaskIds(taskIds);
|
||||
poolInfo.setTaskBaseInfoList(taskList);
|
||||
if (CollectionUtils.isNotEmpty(taskList)) {
|
||||
poolInfo.setSimulationPoolName(taskList.get(0).getPoolName());
|
||||
poolInfo.setSimulationPoolVersion(taskList.get(0).getVersion());
|
||||
}
|
||||
|
||||
poolInfos.add(poolInfo);
|
||||
}
|
||||
|
||||
fileMetadataInfo.setPoolInfos(poolInfos);
|
||||
return true;
|
||||
}
|
||||
|
||||
private void fillPoolInfosFromMappings(List<FileMetadataInfo> fileMetadataInfoList) {
|
||||
List<Long> fileIds = fileMetadataInfoList.stream()
|
||||
.map(FileMetadataInfo::getId)
|
||||
.distinct()
|
||||
.toList();
|
||||
|
||||
List<TaskBaseInfo> result = new ArrayList<>();
|
||||
List<FileSimulationMappingResp> fileSimulationMappingByFileId = fileSimulationMappingService.getFileSimulationMappingByFileId(fileIds);
|
||||
if (CollectionUtils.isEmpty(fileSimulationMappingByFileId)) {
|
||||
return;
|
||||
}
|
||||
log.info("文件绑定知识库的查询结果 :{}", fileSimulationMappingByFileId);
|
||||
|
||||
fileSimulationMappingByFileId.forEach(fileSimulationMappingResp -> {
|
||||
SdmResponse<Map<String, TaskBaseInfo>> taskPoolTaskMap = isSimuluationTaskPoolFeignClient.getTaskPoolTaskMap(fileSimulationMappingResp.getSimulationPoolId());
|
||||
if (taskPoolTaskMap.isSuccess() && !Objects.isNull(taskPoolTaskMap.getData())) {
|
||||
Map<String, TaskBaseInfo> data = taskPoolTaskMap.getData();
|
||||
TaskBaseInfo taskBaseInfo = data.getOrDefault(fileSimulationMappingResp.getSimulationPoolTaskId(), null);
|
||||
if (ObjectUtils.isNotEmpty(taskBaseInfo)) {
|
||||
taskBaseInfo.setPoolId(fileSimulationMappingResp.getSimulationPoolId());
|
||||
taskBaseInfo.setFileId(fileSimulationMappingResp.getFileId());
|
||||
result.add(taskBaseInfo);
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
// 按 fileId 和 poolId 双重分组
|
||||
Map<Long, Map<Integer, List<TaskBaseInfo>>> fileTaskPoolMap = result.stream()
|
||||
.collect(Collectors.groupingBy(
|
||||
TaskBaseInfo::getFileId,
|
||||
Collectors.groupingBy(TaskBaseInfo::getPoolId)
|
||||
));
|
||||
// 按 fileId 和 poolId 双重分组
|
||||
Map<Long, Map<Integer, List<TaskBaseInfo>>> fileTaskPoolMap = result.stream()
|
||||
.collect(Collectors.groupingBy(
|
||||
TaskBaseInfo::getFileId,
|
||||
Collectors.groupingBy(TaskBaseInfo::getPoolId)
|
||||
));
|
||||
|
||||
// 按 fileId 和 poolId 分组收集 simulationPoolTaskId
|
||||
Map<Long, Map<Integer, List<String>>> filePoolTaskIdsMap = fileSimulationMappingByFileId.stream()
|
||||
.collect(Collectors.groupingBy(
|
||||
FileSimulationMappingResp::getFileId,
|
||||
Collectors.groupingBy(
|
||||
FileSimulationMappingResp::getSimulationPoolId,
|
||||
Collectors.mapping(FileSimulationMappingResp::getSimulationPoolTaskId, Collectors.toList())
|
||||
)
|
||||
));
|
||||
// 按 fileId 和 poolId 分组收集 simulationPoolTaskId
|
||||
Map<Long, Map<Integer, List<String>>> filePoolTaskIdsMap = fileSimulationMappingByFileId.stream()
|
||||
.collect(Collectors.groupingBy(
|
||||
FileSimulationMappingResp::getFileId,
|
||||
Collectors.groupingBy(
|
||||
FileSimulationMappingResp::getSimulationPoolId,
|
||||
Collectors.mapping(FileSimulationMappingResp::getSimulationPoolTaskId, Collectors.toList())
|
||||
)
|
||||
));
|
||||
|
||||
// 为每个文件创建 PoolInfo 列表
|
||||
for (FileMetadataInfo fileMetadataInfo : list) {
|
||||
Long fileId = fileMetadataInfo.getId();
|
||||
if (fileTaskPoolMap.containsKey(fileId)) {
|
||||
Map<Integer, List<TaskBaseInfo>> poolMap = fileTaskPoolMap.get(fileId);
|
||||
Map<Integer, List<String>> poolTaskIdsMap = filePoolTaskIdsMap.getOrDefault(fileId, new HashMap<>());
|
||||
// 为每个文件创建 PoolInfo 列表
|
||||
for (FileMetadataInfo fileMetadataInfo : fileMetadataInfoList) {
|
||||
Long fileId = fileMetadataInfo.getId();
|
||||
if (fileTaskPoolMap.containsKey(fileId)) {
|
||||
Map<Integer, List<TaskBaseInfo>> poolMap = fileTaskPoolMap.get(fileId);
|
||||
Map<Integer, List<String>> poolTaskIdsMap = filePoolTaskIdsMap.getOrDefault(fileId, new HashMap<>());
|
||||
|
||||
List<PoolInfo> poolInfos = new ArrayList<>();
|
||||
for (Map.Entry<Integer, List<TaskBaseInfo>> poolEntry : poolMap.entrySet()) {
|
||||
Integer poolId = poolEntry.getKey();
|
||||
List<TaskBaseInfo> taskList = poolEntry.getValue();
|
||||
List<String> taskIds = poolTaskIdsMap.getOrDefault(poolId, new ArrayList<>());
|
||||
List<PoolInfo> poolInfos = new ArrayList<>();
|
||||
for (Map.Entry<Integer, List<TaskBaseInfo>> poolEntry : poolMap.entrySet()) {
|
||||
Integer poolId = poolEntry.getKey();
|
||||
List<TaskBaseInfo> taskList = poolEntry.getValue();
|
||||
List<String> taskIds = poolTaskIdsMap.getOrDefault(poolId, new ArrayList<>());
|
||||
|
||||
PoolInfo poolInfo = new PoolInfo();
|
||||
poolInfo.setSimulationPoolId(poolId);
|
||||
poolInfo.setSimulationPoolName("");
|
||||
poolInfo.setSimulationPoolVersion("");
|
||||
poolInfo.setSimulationPoolTaskIds(taskIds);
|
||||
poolInfo.setTaskBaseInfoList(taskList);
|
||||
if(CollectionUtils.isNotEmpty(taskList)) {
|
||||
poolInfo.setSimulationPoolName(taskList.get(0).getPoolName());
|
||||
poolInfo.setSimulationPoolVersion(taskList.get(0).getVersion());
|
||||
}
|
||||
|
||||
poolInfos.add(poolInfo);
|
||||
PoolInfo poolInfo = new PoolInfo();
|
||||
poolInfo.setSimulationPoolId(poolId);
|
||||
poolInfo.setSimulationPoolName("");
|
||||
poolInfo.setSimulationPoolVersion("");
|
||||
poolInfo.setSimulationPoolTaskIds(taskIds);
|
||||
poolInfo.setTaskBaseInfoList(taskList);
|
||||
if (CollectionUtils.isNotEmpty(taskList)) {
|
||||
poolInfo.setSimulationPoolName(taskList.get(0).getPoolName());
|
||||
poolInfo.setSimulationPoolVersion(taskList.get(0).getVersion());
|
||||
}
|
||||
|
||||
fileMetadataInfo.setPoolInfos(poolInfos);
|
||||
poolInfos.add(poolInfo);
|
||||
}
|
||||
|
||||
fileMetadataInfo.setPoolInfos(poolInfos);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user