fixbug:修改更新文件,审批流审批状态错误

This commit is contained in:
2026-01-13 19:53:57 +08:00
parent 66a865c59c
commit 80e41d3e48

View File

@@ -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);
}