知识库绑定工况库,知识库搜索、审批流程展示工况库

This commit is contained in:
2025-12-10 15:14:45 +08:00
parent 5cb62925ed
commit b3219dd39d
18 changed files with 343 additions and 70 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.GetFileSimulationMappingReq;
import com.sdm.common.entity.resp.data.FileMetadataInfoResp;
import com.sdm.common.entity.resp.data.FileSimulationMappingResp;
import com.sdm.common.feign.inter.data.IFileSimulationMappingFeignClient;
import com.sdm.common.entity.req.data.SaveFileSimulationMappingReq;
import com.sdm.common.log.annotation.SysLog;
@@ -58,7 +59,4 @@ public class FileSimulationMappingController implements IFileSimulationMappingFe
public SdmResponse<Map<String, List<FileMetadataInfoResp>>> batchGetFileSimulationMappingBySimulationPoolIdAndVersion(@RequestBody GetFileSimulationMappingReq getFileSimulationMappingReq){
return fileSimulationMappingService.batchGetFileSimulationMappingBySimulationPoolIdAndVersion(getFileSimulationMappingReq);
}
}

View File

@@ -1,24 +1,18 @@
package com.sdm.data.model.entity;
import com.baomidou.mybatisplus.annotation.*;
import java.time.LocalDateTime;
import java.io.Serializable;
import java.util.List;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.sdm.common.entity.req.data.SimulationPoolInfo;
import com.sdm.common.entity.resp.data.PoolInfo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import com.baomidou.mybatisplus.annotation.*;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.List;
/**
* <p>
* 文件元数据信息表存储MinIO文件的元数据及层级关系
* </p>
*
* @author author
* @since 2025-10-29
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@@ -219,5 +213,12 @@ public class FileMetadataInfo implements Serializable {
@TableField(value = "analysisDirectionName", insertStrategy = FieldStrategy.NEVER,select = false,updateStrategy = FieldStrategy.NEVER)
private String analysisDirectionName;
@Schema(description = "关联工况库信息")
@TableField(exist = false)
private List<SimulationPoolInfo> simulationPoolInfoList;
}
@Schema(description= "仿真任务池信息列表")
@TableField(exist = false)
private List<PoolInfo> poolInfos;
}

View File

@@ -1,6 +1,7 @@
package com.sdm.data.model.req;
import com.alibaba.fastjson2.annotation.JSONField;
import com.sdm.common.entity.req.data.SimulationPoolInfo;
import com.sdm.common.entity.req.data.UploadFilesReq;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@@ -31,6 +32,9 @@ public class UpdateFileReq {
@Schema(description = "关联项目id")
private String projectId;
@Schema(description = "关联工况库信息")
private List<SimulationPoolInfo> simulationPoolInfoList;
/**
* 关联分析项目id
*
@@ -44,24 +48,6 @@ public class UpdateFileReq {
@Schema(description = "备注信息")
private String remarks;
/**
* 所属工况库id
*/
@Schema(description = "所属工况库id")
private Integer simulationPoolId;
/**
* 工况库版本
*/
@Schema(description = "工况库版本")
private String simulationPoolVersion;
/**
* 关联工况
*/
@Schema(description = "关联工况")
private List<String> simulationPoolTaskIds;
@Schema(description = "知识库文件审批模板id")
private String templateId;

View File

@@ -3,6 +3,7 @@ package com.sdm.data.service;
import com.sdm.common.common.SdmResponse;
import com.sdm.common.entity.req.data.GetFileSimulationMappingReq;
import com.sdm.common.entity.resp.data.FileMetadataInfoResp;
import com.sdm.common.entity.resp.data.FileSimulationMappingResp;
import com.sdm.data.model.entity.FileSimulationMapping;
import com.baomidou.mybatisplus.extension.service.IService;
import com.sdm.common.entity.req.data.SaveFileSimulationMappingReq;
@@ -19,7 +20,6 @@ import java.util.Map;
* @since 2025-12-02
*/
public interface IFileSimulationMappingService extends IService<FileSimulationMapping> {
void saveFileSimulationMapping(Long fileId,Integer simulationPoolId,String simulationPoolVersion,List<String> simulationPoolTaskIds);
SdmResponse batchSaveFileSimulationMapping(List<SaveFileSimulationMappingReq> saveFileSimulationMappingReq);
@@ -34,4 +34,10 @@ public interface IFileSimulationMappingService extends IService<FileSimulationMa
* @return taskFileMapping; key: 工况任务ID; value: 文件信息列表
*/
SdmResponse<Map<String, List<FileMetadataInfoResp>>> batchGetFileSimulationMappingBySimulationPoolIdAndVersion(GetFileSimulationMappingReq getFileSimulationMappingReq);
/**
* 根据文件id查询绑定的工况Pool的ID和工况任务ID
* @return
*/
List<FileSimulationMappingResp> getFileSimulationMappingByFileId(List<Long> fileIds);
}

View File

@@ -3,6 +3,7 @@ package com.sdm.data.service.impl;
import com.sdm.common.common.SdmResponse;
import com.sdm.common.entity.req.data.GetFileSimulationMappingReq;
import com.sdm.common.entity.resp.data.FileMetadataInfoResp;
import com.sdm.common.entity.resp.data.FileSimulationMappingResp;
import com.sdm.data.model.entity.FileMetadataInfo;
import com.sdm.data.model.entity.FileSimulationMapping;
import com.sdm.data.dao.FileSimulationMappingMapper;
@@ -10,6 +11,7 @@ import com.sdm.common.entity.req.data.SaveFileSimulationMappingReq;
import com.sdm.data.service.IFileMetadataInfoService;
import com.sdm.data.service.IFileSimulationMappingService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import io.jsonwebtoken.lang.Collections;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -33,26 +35,14 @@ public class FileSimulationMappingServiceImpl extends ServiceImpl<FileSimulation
@Autowired
IFileMetadataInfoService fileMetadataInfoService;
public void saveFileSimulationMapping(Long fileId, Integer simulationPoolId, String simulationPoolVersion, List<String> simulationPoolTaskIds) {
// 先删除原先所有的文件绑定关系
this.lambdaUpdate().eq(FileSimulationMapping::getFileId, fileId).remove();
// 再新增新的文件绑定关系
for (String simulationPoolTaskId : simulationPoolTaskIds) {
FileSimulationMapping fileSimulationMapping = new FileSimulationMapping();
fileSimulationMapping.setFileId(fileId);
fileSimulationMapping.setSimulationPoolId(simulationPoolId);
fileSimulationMapping.setSimulationPoolVersion(simulationPoolVersion);
fileSimulationMapping.setSimulationPoolTaskId(simulationPoolTaskId);
this.save(fileSimulationMapping);
}
}
@Override
@Transactional(rollbackFor = Exception.class)
public SdmResponse batchSaveFileSimulationMapping(List<SaveFileSimulationMappingReq> saveFileSimulationMappingReqList) {
List<Long> fileIds = new ArrayList<>();
List<FileSimulationMapping> fileSimulationMappings = new ArrayList<>();
for (SaveFileSimulationMappingReq fileSimulationMappingReq : saveFileSimulationMappingReqList) {
fileSimulationMappingReq.getFileIds().forEach(fileId -> {
fileIds.add(fileId);
FileSimulationMapping fileSimulationMapping = new FileSimulationMapping();
fileSimulationMapping.setFileId(fileId);
fileSimulationMapping.setSimulationPoolId(fileSimulationMappingReq.getSimulationPoolId());
@@ -61,6 +51,8 @@ public class FileSimulationMappingServiceImpl extends ServiceImpl<FileSimulation
fileSimulationMappings.add(fileSimulationMapping);
});
}
// 先删除原先所有的文件绑定关系
this.lambdaUpdate().in(FileSimulationMapping::getFileId, fileIds).remove();
this.saveBatch(fileSimulationMappings);
return SdmResponse.success();
}
@@ -114,4 +106,19 @@ public class FileSimulationMappingServiceImpl extends ServiceImpl<FileSimulation
return SdmResponse.success(simulationPoolTaskId2Files);
}
public List<FileSimulationMappingResp> getFileSimulationMappingByFileId(List<Long> fileIds){
if(Collections.isEmpty(fileIds)){
return Collections.emptyList();
}
List<FileSimulationMapping> fileSimulationMappings = this.lambdaQuery().in(FileSimulationMapping::getFileId, fileIds).list();
List<FileSimulationMappingResp> resp = new ArrayList<>();
fileSimulationMappings.forEach(fileSimulationMapping -> {
FileSimulationMappingResp fileSimulationMappingResp = new FileSimulationMappingResp();
BeanUtils.copyProperties(fileSimulationMapping, fileSimulationMappingResp);
resp.add(fileSimulationMappingResp);
});
return resp;
}
}

View File

@@ -13,6 +13,7 @@ import com.sdm.common.entity.ExportExcelFormat;
import com.sdm.common.entity.constants.NumberConstants;
import com.sdm.common.entity.constants.PermConstants;
import com.sdm.common.entity.enums.*;
import com.sdm.common.entity.pojo.task.TaskBaseInfo;
import com.sdm.common.entity.req.data.*;
import com.sdm.common.entity.req.project.SpdmNodeListReq;
import com.sdm.common.entity.req.system.LaunchApproveReq;
@@ -22,18 +23,22 @@ import com.sdm.common.entity.resp.PageDataResp;
import com.sdm.common.entity.resp.data.BatchAddFileInfoResp;
import com.sdm.common.entity.resp.data.ChunkUploadMinioFileResp;
import com.sdm.common.entity.resp.data.FileMetadataInfoResp;
import com.sdm.common.entity.resp.data.FileSimulationMappingResp;
import com.sdm.common.entity.resp.project.SimulationNodeResp;
import com.sdm.common.entity.resp.system.CIDUserResp;
import com.sdm.common.feign.impl.project.SimulationNodeFeignClientImpl;
import com.sdm.common.feign.impl.system.SysUserFeignClientImpl;
import com.sdm.common.feign.inter.project.ISimulationNodeFeignClient;
import com.sdm.common.feign.inter.system.IApproveFeignClient;
import com.sdm.common.feign.inter.task.ISimuluationTaskPoolFeignClient;
import com.sdm.common.log.CoreLogger;
import com.sdm.common.utils.*;
import com.sdm.common.utils.excel.ExcelUtil;
import com.sdm.data.aop.PermissionCheckAspect;
import com.sdm.data.model.bo.ApprovalFileDataContentsModel;
import com.sdm.data.model.entity.*;
import com.sdm.common.entity.resp.data.PoolInfo;
import com.sdm.data.model.req.*;
import com.sdm.data.model.resp.KKFileViewURLFromMinioResp;
import com.sdm.data.service.*;
@@ -139,6 +144,9 @@ public class MinioFileIDataFileServiceImpl implements IDataFileService {
@Autowired
private IFileSimulationMappingService fileSimulationMappingService;
@Autowired
private ISimuluationTaskPoolFeignClient isSimuluationTaskPoolFeignClient;
@Autowired
@Qualifier(value = "nonSensitiveTaskPool")
private Executor nonSensitiveTaskPool;
@@ -397,10 +405,18 @@ public class MinioFileIDataFileServiceImpl implements IDataFileService {
}
fileMetadataExtensionService.saveBatch(fileMetadataExtensionList);
//绑定文件和工况库的关系
if(CollectionUtils.isNotEmpty(req.getSimulationPoolInfoList())){
if (CollectionUtils.isNotEmpty(req.getSimulationPoolInfoList())) {
for (SimulationPoolInfo simulationPoolInfo : req.getSimulationPoolInfoList()) {
fileSimulationMappingService.saveFileSimulationMapping(fileInfo.getId(),simulationPoolInfo.getSimulationPoolId(),simulationPoolInfo.getSimulationPoolVersion(),simulationPoolInfo.getSimulationPoolTaskIds());
for (String simulationPoolTaskId : simulationPoolInfo.getSimulationPoolTaskIds()) {
FileSimulationMapping fileSimulationMapping = new FileSimulationMapping();
fileSimulationMapping.setFileId(fileInfo.getId());
fileSimulationMapping.setSimulationPoolId(simulationPoolInfo.getSimulationPoolId());
fileSimulationMapping.setSimulationPoolVersion(simulationPoolInfo.getSimulationPoolVersion());
fileSimulationMapping.setSimulationPoolTaskId(simulationPoolTaskId);
fileSimulationMappingService.save(fileSimulationMapping);
}
}
}
@@ -938,6 +954,7 @@ public class MinioFileIDataFileServiceImpl implements IDataFileService {
setCidInfos(files);
setProjectName(files);
setAnalysisDirectionName(files);
setSimulationPoolAndTaskInfo(files);
PageInfo<FileMetadataInfo> page = new PageInfo<>(files);
return PageUtils.getJsonObjectSdmResponse(files, page);
}
@@ -996,6 +1013,7 @@ public class MinioFileIDataFileServiceImpl implements IDataFileService {
setCidInfos(list);
setProjectName(list);
setAnalysisDirectionName(list);
setSimulationPoolAndTaskInfo(list);
PageInfo<FileMetadataInfo> page = new PageInfo<>(list);
long total = page.getTotal();
List<FileMetadataInfoResp> dtoList = list.stream().map(entity -> {
@@ -1367,6 +1385,21 @@ public class MinioFileIDataFileServiceImpl implements IDataFileService {
.orElse(null);
}
//绑定文件和工况库的关系
if (CollectionUtils.isNotEmpty(req.getSimulationPoolInfoList())) {
for (SimulationPoolInfo simulationPoolInfo : req.getSimulationPoolInfoList()) {
for (String simulationPoolTaskId : simulationPoolInfo.getSimulationPoolTaskIds()) {
FileSimulationMapping fileSimulationMapping = new FileSimulationMapping();
fileSimulationMapping.setFileId(fileInfo.getId());
fileSimulationMapping.setSimulationPoolId(simulationPoolInfo.getSimulationPoolId());
fileSimulationMapping.setSimulationPoolVersion(simulationPoolInfo.getSimulationPoolVersion());
fileSimulationMapping.setSimulationPoolTaskId(simulationPoolTaskId);
fileSimulationMappingService.save(fileSimulationMapping);
}
}
}
// 调用审批流,开启审批; 上面先入库拿到主键id,审批流创建失败后再回退数据
// String templateId, String templateName,String approveContents,int approveAction1新增 2修改 3删除
if(isknowledge){
@@ -1402,13 +1435,6 @@ public class MinioFileIDataFileServiceImpl implements IDataFileService {
}
fileMetadataExtensionService.saveBatch(fileMetadataExtensionList);
//绑定文件和工况库的关系
if(CollectionUtils.isNotEmpty(req.getSimulationPoolInfoList())){
for (SimulationPoolInfo simulationPoolInfo : req.getSimulationPoolInfoList()) {
fileSimulationMappingService.saveFileSimulationMapping(fileInfo.getId(),simulationPoolInfo.getSimulationPoolId(),simulationPoolInfo.getSimulationPoolVersion(),simulationPoolInfo.getSimulationPoolTaskIds());
}
}
// 创建默认权限记录
createFilePermission(fileInfo.getId());
@@ -1517,6 +1543,7 @@ public class MinioFileIDataFileServiceImpl implements IDataFileService {
tempFileMetadataInfo.setProjectId(req.getProjectId());
tempFileMetadataInfo.setAnalysisDirectionId(req.getAnalysisDirectionId());
tempFileMetadataInfo.setRemarks(req.getRemarks());
tempFileMetadataInfo.setSimulationPoolInfoList(req.getSimulationPoolInfoList());
fileMetadataInfo.setApprovalStatus(ApprovalFileDataStatusEnum.PENDING.getKey());
fileMetadataInfo.setApproveType(ApproveFileDataTypeEnum.MODIFY_METADATA_REVIEWING.getCode());
@@ -1588,6 +1615,22 @@ public class MinioFileIDataFileServiceImpl implements IDataFileService {
fileInfo.setIsLatest(false);
}
fileMetadataInfoService.save(fileInfo);
//绑定文件和工况库的关系
if (CollectionUtils.isNotEmpty(req.getSimulationPoolInfoList())) {
for (SimulationPoolInfo simulationPoolInfo : req.getSimulationPoolInfoList()) {
for (String simulationPoolTaskId : simulationPoolInfo.getSimulationPoolTaskIds()) {
FileSimulationMapping fileSimulationMapping = new FileSimulationMapping();
fileSimulationMapping.setFileId(fileInfo.getId());
fileSimulationMapping.setSimulationPoolId(simulationPoolInfo.getSimulationPoolId());
fileSimulationMapping.setSimulationPoolVersion(simulationPoolInfo.getSimulationPoolVersion());
fileSimulationMapping.setSimulationPoolTaskId(simulationPoolTaskId);
fileSimulationMappingService.save(fileSimulationMapping);
}
}
}
// 知识库创建审批流
if(dirMetadataInfo!=null&&Objects.equals(DirTypeEnum.KNOWLEDGE_BASE_DIR.getValue(), dirMetadataInfo.getDirType())){
// 获取前后变化的file信息
@@ -1643,11 +1686,6 @@ public class MinioFileIDataFileServiceImpl implements IDataFileService {
// 创建默认权限记录
createFilePermission(fileInfo.getId());
//绑定文件和工况库的关系
if(ObjectUtils.isNotEmpty(req.getSimulationPoolId()) && Objects.nonNull(req.getSimulationPoolVersion()) && CollectionUtils.isNotEmpty(req.getSimulationPoolTaskIds())){
fileSimulationMappingService.saveFileSimulationMapping(fileInfo.getId(),req.getSimulationPoolId(),req.getSimulationPoolVersion(),req.getSimulationPoolTaskIds());
}
// 非知识库的,设置 历史版本 文件为非最新
if(!(dirMetadataInfo!=null&&Objects.equals(DirTypeEnum.KNOWLEDGE_BASE_DIR.getValue(), dirMetadataInfo.getDirType()))){
fileMetadataInfo.setIsLatest(false);
@@ -2134,6 +2172,7 @@ public class MinioFileIDataFileServiceImpl implements IDataFileService {
setCreatorNames(beforeDatas);
setProjectName(beforeDatas);
setAnalysisDirectionName(beforeDatas);
setSimulationPoolAndTaskInfo(beforeDatas);
}
contentsModel.setBeforeData(beforeDatas);
// 只有修改有 afterData 值
@@ -2142,6 +2181,7 @@ public class MinioFileIDataFileServiceImpl implements IDataFileService {
setCreatorNames(afterDatas);
setProjectName(afterDatas);
setAnalysisDirectionName(afterDatas);
setSimulationPoolAndTaskInfo(afterDatas);
}
contentsModel.setAfterData(afterDatas);
}
@@ -2282,6 +2322,80 @@ 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();
List<TaskBaseInfo> result = new ArrayList<>();
List<FileSimulationMappingResp> fileSimulationMappingByFileId = fileSimulationMappingService.getFileSimulationMappingByFileId(fileIds);
if(CollectionUtils.isEmpty(fileSimulationMappingByFileId)){
return;
}
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);
taskBaseInfo.setPoolId(fileSimulationMappingResp.getSimulationPoolId());
taskBaseInfo.setFileId(fileSimulationMappingResp.getFileId());
result.add(taskBaseInfo);
}
});
// 按 fileId 和 poolId 双重分组
Map<Long, Map<Long, List<TaskBaseInfo>>> fileTaskPoolMap = result.stream()
.collect(Collectors.groupingBy(
TaskBaseInfo::getFileId,
Collectors.groupingBy(TaskBaseInfo::getPoolId)
));
// 按 fileId 和 poolId 分组收集 simulationPoolTaskId
Map<Long, Map<Long, 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<Long, List<TaskBaseInfo>> poolMap = fileTaskPoolMap.get(fileId);
Map<Long, List<String>> poolTaskIdsMap = filePoolTaskIdsMap.getOrDefault(fileId, new HashMap<>());
List<PoolInfo> poolInfos = new ArrayList<>();
for (Map.Entry<Long, List<TaskBaseInfo>> poolEntry : poolMap.entrySet()) {
Long 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).getPoolName());
}
poolInfos.add(poolInfo);
}
fileMetadataInfo.setPoolInfos(poolInfos);
}
}
}
}

View File

@@ -3,11 +3,17 @@ package com.sdm.data.service.impl.dataFileHandle;
import com.alibaba.fastjson2.JSONObject;
import com.sdm.common.entity.constants.NumberConstants;
import com.sdm.common.entity.enums.ApproveFileDataTypeEnum;
import com.sdm.common.entity.req.data.SimulationPoolInfo;
import com.sdm.data.model.entity.FileMetadataInfo;
import com.sdm.data.model.entity.FileSimulationMapping;
import com.sdm.data.service.IFileMetadataInfoService;
import com.sdm.data.service.IFileSimulationMappingService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
@Slf4j
public class ModifyMetadataApproveStrategy implements ApproveStrategy {
@@ -17,6 +23,7 @@ public class ModifyMetadataApproveStrategy implements ApproveStrategy {
FileMetadataInfo metadata = context.getApproveMetadataInfos().get(0);
int status = context.getApproveStatus();
IFileMetadataInfoService service = context.getFileMetadataInfoService();
IFileSimulationMappingService fileSimulationMappingService = context.getFileSimulationMappingService();
// 审批通过
if (NumberConstants.TWO == status) {
@@ -27,6 +34,23 @@ public class ModifyMetadataApproveStrategy implements ApproveStrategy {
updateInfo.setApprovalStatus(null);
updateInfo.setApproveType(ApproveFileDataTypeEnum.COMPLETED.getCode());
service.updateById(updateInfo);
//绑定文件和工况库的关系
List<SimulationPoolInfo> simulationPoolInfoList = updateInfo.getSimulationPoolInfoList();
if (CollectionUtils.isNotEmpty(simulationPoolInfoList)) {
// 先删除原先所有的文件绑定关系
fileSimulationMappingService.lambdaUpdate().eq(FileSimulationMapping::getFileId, metadata.getId()).remove();
for (SimulationPoolInfo simulationPoolInfo : simulationPoolInfoList) {
for (String simulationPoolTaskId : simulationPoolInfo.getSimulationPoolTaskIds()) {
FileSimulationMapping fileSimulationMapping = new FileSimulationMapping();
fileSimulationMapping.setFileId(metadata.getId());
fileSimulationMapping.setSimulationPoolId(simulationPoolInfo.getSimulationPoolId());
fileSimulationMapping.setSimulationPoolVersion(simulationPoolInfo.getSimulationPoolVersion());
fileSimulationMapping.setSimulationPoolTaskId(simulationPoolTaskId);
fileSimulationMappingService.save(fileSimulationMapping);
}
}
}
return true;
}