fix:算例文件归档

This commit is contained in:
2026-02-26 15:50:58 +08:00
parent a8785a7d7b
commit f07412bb05
7 changed files with 59 additions and 8 deletions

View File

@@ -709,7 +709,7 @@ public class DataFileController implements IDataFeignClient {
@PostMapping("/copyFileToTask")
@Operation(summary = "复制关键结果文件到task下", description = "复制关键结果文件到task下")
public SdmResponse copyFileToTask(@RequestBody CopyFileToTaskReq req) {
public SdmResponse<Long> copyFileToTask(@RequestBody CopyFileToTaskReq req) {
return IDataFileService.copyFileToTask(req);
}

View File

@@ -412,7 +412,7 @@ public interface IDataFileService {
SdmResponse<List<BatchAddFileInfoResp>> batchAddFileInfo(UploadFilesReq req);
SdmResponse copyFileToTask(CopyFileToTaskReq req);
SdmResponse<Long> copyFileToTask(CopyFileToTaskReq req);
SdmResponse<ChunkUploadMinioFileResp> chunkUploadToMinio(ChunkUploadMinioFileReq req);

View File

@@ -1610,7 +1610,7 @@ public class MinioFileIDataFileServiceImpl implements IDataFileService {
}
@Override
public SdmResponse copyFileToTask(CopyFileToTaskReq req) {
public SdmResponse<Long> copyFileToTask(CopyFileToTaskReq req) {
// 源文件
FileMetadataInfo sourceMetadataInfo = fileMetadataInfoService.lambdaQuery().eq(FileMetadataInfo::getId, req.getSourceFileId()).one();
if (ObjectUtils.isEmpty(sourceMetadataInfo)) {
@@ -1647,7 +1647,15 @@ public class MinioFileIDataFileServiceImpl implements IDataFileService {
FileMetadataInfo fileInfo = createFileMetadata(newDirMinioObjectKey, sourceMetadataInfo.getOriginalName(),
null, null, null, targetParentMetadataInfo.getId(), sourceMetadataInfo.getFileSize(), sourceMetadataInfo.getTag1());
fileMetadataInfoService.save(fileInfo);
return SdmResponse.success("复制文件成功");
UploadFilesReq uploadFilesReq = new UploadFilesReq();
uploadFilesReq.setSize(sourceMetadataInfo.getFileSize());
List<Long> ancestorDirIds = collectAncestorDirIds(targetParentMetadataInfo.getId());
saveFileStorageStats(fileInfo, uploadFilesReq, ancestorDirIds);
saveCopyFileTags(uploadFilesReq, fileInfo, sourceMetadataInfo, ancestorDirIds);
createFilePermission(fileInfo.getId());
return SdmResponse.success(fileInfo.getId());
} catch (Exception e) {
log.error("复制文件失败", e);
throw new RuntimeException("复制文件失败: " + e.getMessage(), e);
@@ -2305,6 +2313,38 @@ public class MinioFileIDataFileServiceImpl implements IDataFileService {
}
}
private void saveCopyFileTags(UploadFilesReq req, FileMetadataInfo fileInfo, FileMetadataInfo oldFileInfo,
List<Long> ancestorDirIds) {
Long tenantId = ThreadLocalContext.getTenantId();
Long creatorId = ThreadLocalContext.getUserId();
long fileSize = resolveFileSize(req);
// 旧文件的标签
List<FileTagRel> oldTagRelList = fileTagRelService.lambdaQuery().eq(FileTagRel::getFileId, oldFileInfo.getId()).list();
if (CollectionUtils.isNotEmpty(oldTagRelList)) {
List<FileTagRel> allTagRelList = new ArrayList<>();
List<Integer> tagIdList = oldTagRelList.stream().map(FileTagRel::getTagId).distinct().toList();
for (Integer tagId : tagIdList) {
// 遍历查询结果,构造文件标签关系
// 为所有目录(当前目录 + 祖先目录)创建标签关系
for (Long dirIdItem : ancestorDirIds) {
FileTagRel tagRel = new FileTagRel();
tagRel.setFileId(fileInfo.getId());
tagRel.setTagId(tagId);
tagRel.setDirId(dirIdItem);
tagRel.setTenantId(tenantId);
tagRel.setCreatorId(creatorId);
tagRel.setFileSize(fileSize);
allTagRelList.add(tagRel);
}
}
// 一次性批量插入所有标签关系
if (CollectionUtils.isNotEmpty(allTagRelList)) {
fileTagRelService.saveBatch(allTagRelList);
}
}
}
private void bindSimulationPool(UploadFilesReq req, FileMetadataInfo fileInfo) {