fixbug:修改更新文件,审批流审批状态错误
This commit is contained in:
@@ -1636,7 +1636,6 @@ public class MinioFileIDataFileServiceImpl implements IDataFileService {
|
||||
if (!hasUploadPermission) {
|
||||
return SdmResponse.failed("没有更新权限");
|
||||
}*/
|
||||
String oldFileMinioObjectKey = fileMetadataInfo.getObjectKey();
|
||||
Long fileGroupId = fileMetadataInfo.getFileGroupId();
|
||||
Long versionNo = fileMetadataInfo.getVersionNo();
|
||||
// 修改待审批的元数据主键id
|
||||
@@ -1698,12 +1697,12 @@ public class MinioFileIDataFileServiceImpl implements IDataFileService {
|
||||
fileMetadataInfoService.updateById(fileMetadataInfo);
|
||||
} else {
|
||||
// 需要上传minio新文件,更新文件元数据
|
||||
uploadAndUpdateFile(req, oldFileMinioObjectKey, fileMetadataInfo, versionNo, fileGroupId,dirMetadataInfo);
|
||||
uploadAndUpdateFile(req, fileMetadataInfo, versionNo, fileGroupId,dirMetadataInfo);
|
||||
}
|
||||
return SdmResponse.success("更新成功");
|
||||
}
|
||||
|
||||
public void uploadAndUpdateFile(UpdateFileReq req, String oldFileMinioObjectKey, FileMetadataInfo fileMetadataInfo, Long versionNo, Long fileGroupId,FileMetadataInfo dirMetadataInfo) {
|
||||
public void uploadAndUpdateFile(UpdateFileReq req, FileMetadataInfo oldFileMetadataInfo, Long versionNo, Long fileGroupId,FileMetadataInfo dirMetadataInfo) {
|
||||
String newFileMinioObjectKey = "";
|
||||
try {
|
||||
// 保留历史文件版本,新增一条文件版本记录
|
||||
@@ -1721,25 +1720,26 @@ public class MinioFileIDataFileServiceImpl implements IDataFileService {
|
||||
throw new RuntimeException("文件没有后缀");
|
||||
}
|
||||
|
||||
// 处理历史版本objectkey= 1/test1_V1.txt originalName=test1.txt 替换为 newFileMinioObjectKey= 1/test1_V2.txt
|
||||
newFileMinioObjectKey = getFileMinioObjectKey(oldFileMinioObjectKey.substring(0, oldFileMinioObjectKey.lastIndexOf(fileMetadataInfo.getOriginalName().substring(0, fileMetadataInfo.getOriginalName().lastIndexOf('.')))) + modifiedFileName);
|
||||
// 新文件名 modifiedFileName = newFile_V2.txt ,处理历史版本 oldFileMinioObjectKey= a/b/c/oldFile_V1.txt originalName=oldFile.txt , 替换为 newFileMinioObjectKey= a/b/c/test1_V2.txt
|
||||
String parDirObjectKey = dirMetadataInfo.getObjectKey();
|
||||
newFileMinioObjectKey = getFileMinioObjectKey(parDirObjectKey + modifiedFileName);
|
||||
|
||||
minioService.uploadFile(req.getFile(), newFileMinioObjectKey, null,fileMetadataInfo.getBucketName());
|
||||
minioService.uploadFile(req.getFile(), newFileMinioObjectKey, null,oldFileMetadataInfo.getBucketName());
|
||||
// 创建目录元数据并保存到数据库
|
||||
FileMetadataInfo fileInfo = createFileMetadata(newFileMinioObjectKey, req.getFileName(), req.getFileType(),
|
||||
req.getProjectId(), req.getAnalysisDirectionId(), req.getRemarks(), fileMetadataInfo.getParentId(), req.getFile().getSize()
|
||||
FileMetadataInfo newFileInfo = createFileMetadata(newFileMinioObjectKey, req.getFileName(), req.getFileType(),
|
||||
req.getProjectId(), req.getAnalysisDirectionId(), req.getRemarks(), oldFileMetadataInfo.getParentId(), req.getFile().getSize()
|
||||
);
|
||||
fileInfo.setFileGroupId(fileGroupId);
|
||||
fileInfo.setVersionNo(versionNo + 1);
|
||||
newFileInfo.setFileGroupId(fileGroupId);
|
||||
newFileInfo.setVersionNo(versionNo + 1);
|
||||
|
||||
fileMetadataInfoService.save(fileInfo);
|
||||
fileMetadataInfoService.save(newFileInfo);
|
||||
|
||||
//绑定文件和工况库的关系
|
||||
if (CollectionUtils.isNotEmpty(req.getSimulationPoolInfoList())) {
|
||||
for (SimulationPoolInfo simulationPoolInfo : req.getSimulationPoolInfoList()) {
|
||||
for (String simulationPoolTaskId : simulationPoolInfo.getSimulationPoolTaskIds()) {
|
||||
FileSimulationMapping fileSimulationMapping = new FileSimulationMapping();
|
||||
fileSimulationMapping.setFileId(fileInfo.getId());
|
||||
fileSimulationMapping.setFileId(newFileInfo.getId());
|
||||
fileSimulationMapping.setSimulationPoolId(simulationPoolInfo.getSimulationPoolId());
|
||||
fileSimulationMapping.setSimulationPoolVersion(simulationPoolInfo.getSimulationPoolVersion());
|
||||
fileSimulationMapping.setSimulationPoolTaskId(simulationPoolTaskId);
|
||||
@@ -1754,7 +1754,7 @@ public class MinioFileIDataFileServiceImpl implements IDataFileService {
|
||||
if (fileMetadataExtensionRequestList != null && !fileMetadataExtensionRequestList.isEmpty()) {
|
||||
fileMetadataExtensionRequestList.forEach(extensionRequest -> {
|
||||
FileMetadataExtension fileMetadataExtension = new FileMetadataExtension();
|
||||
fileMetadataExtension.setTFilemetaId(fileInfo.getId());
|
||||
fileMetadataExtension.setTFilemetaId(newFileInfo.getId());
|
||||
fileMetadataExtension.setExtensionKey(extensionRequest.getExtensionKey());
|
||||
fileMetadataExtension.setExtensionValue(extensionRequest.getExtensionValue());
|
||||
fileMetadataExtension.setDataType(Objects.toString(extensionRequest.getDataType(), "string")); // 默认为字符串类型,可根据需要调整
|
||||
@@ -1767,13 +1767,13 @@ public class MinioFileIDataFileServiceImpl implements IDataFileService {
|
||||
Long parentDirId = dirMetadataInfo.getId();
|
||||
FileStorage fileStorage = new FileStorage();
|
||||
|
||||
fileStorage.setFileId(fileInfo.getId());
|
||||
fileStorage.setFileName(fileInfo.getOriginalName());
|
||||
fileStorage.setFileId(newFileInfo.getId());
|
||||
fileStorage.setFileName(newFileInfo.getOriginalName());
|
||||
fileStorage.setUserId(ThreadLocalContext.getUserId());
|
||||
fileStorage.setTenantId(ThreadLocalContext.getTenantId());
|
||||
fileStorage.setFileBizType(fileInfo.getFileType());
|
||||
fileStorage.setFileBizType(newFileInfo.getFileType());
|
||||
// 文件后缀
|
||||
fileStorage.setFileSuffix(getSuffixWithoutDot(fileInfo.getOriginalName()));
|
||||
fileStorage.setFileSuffix(getSuffixWithoutDot(newFileInfo.getOriginalName()));
|
||||
fileStorage.setFileSize(req.getFile().getSize());
|
||||
while (parentDirId != null) {
|
||||
fileStorage.setId(null);
|
||||
@@ -1785,21 +1785,21 @@ public class MinioFileIDataFileServiceImpl implements IDataFileService {
|
||||
}
|
||||
|
||||
// 创建默认权限记录
|
||||
createFilePermission(fileInfo.getId());
|
||||
createFilePermission(newFileInfo.getId());
|
||||
|
||||
// 知识库创建审批流
|
||||
boolean isKnowledge = dirMetadataInfo != null && Objects.equals(DirTypeEnum.KNOWLEDGE_BASE_DIR.getValue(), dirMetadataInfo.getDirType());
|
||||
// 知识库修改
|
||||
if(isKnowledge){
|
||||
// 新增的一条暂时不展示
|
||||
fileInfo.setIsLatest(false);
|
||||
newFileInfo.setIsLatest(false);
|
||||
FileApproveRequestBuilder uploadAndUpdateFileApproveRequestBuilder = FileApproveRequestBuilder.builder()
|
||||
.fileIds(List.of(fileInfo.getId()))
|
||||
.fileIds(List.of(newFileInfo.getId()))
|
||||
.contents("知识库文件修改")
|
||||
.approveType(ApproveTypeEnum.KNOWLEDGE_APPROVE)
|
||||
.approveFileActionENUM(ApproveFileActionENUM.MODIFY)
|
||||
.beforeData(List.of(fileMetadataInfo))
|
||||
.afterData(List.of(fileInfo))
|
||||
.beforeData(List.of(oldFileMetadataInfo))
|
||||
.afterData(List.of(newFileInfo))
|
||||
.templateId(req.getTemplateId())
|
||||
.templateName(req.getTemplateName())
|
||||
.build();
|
||||
@@ -1818,15 +1818,15 @@ public class MinioFileIDataFileServiceImpl implements IDataFileService {
|
||||
setSimulationPoolAndTaskInfo(uploadAndUpdateFileApproveRequestBuilder.getAfterData());
|
||||
}
|
||||
|
||||
fileApproveExecutor.launchApproveAndUpdateStatus(uploadAndUpdateFileApproveRequestBuilder, List.of(fileInfo), ApproveFileDataTypeEnum.UPLOAD_REVIEWING);
|
||||
fileApproveExecutor.launchApproveAndUpdateStatus(uploadAndUpdateFileApproveRequestBuilder, List.of(newFileInfo), ApproveFileDataTypeEnum.MODIFY_REVIEWING);
|
||||
}else {
|
||||
// 非知识库的,设置 历史版本 文件为非最新
|
||||
fileMetadataInfo.setIsLatest(false);
|
||||
fileMetadataInfoService.updateById(fileMetadataInfo);
|
||||
oldFileMetadataInfo.setIsLatest(false);
|
||||
fileMetadataInfoService.updateById(oldFileMetadataInfo);
|
||||
}
|
||||
|
||||
} catch (Exception e) {
|
||||
minioService.deleteFile(newFileMinioObjectKey, fileMetadataInfo.getBucketName());
|
||||
minioService.deleteFile(newFileMinioObjectKey, oldFileMetadataInfo.getBucketName());
|
||||
log.error("更新文件失败", e);
|
||||
throw new RuntimeException("更新文件失败: " + e.getMessage(), e);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user