diff --git a/capability/src/main/java/com/sdm/capability/model/dto/ReportTemplateDto.java b/capability/src/main/java/com/sdm/capability/model/dto/ReportTemplateDto.java index f1b17076..55a384ab 100644 --- a/capability/src/main/java/com/sdm/capability/model/dto/ReportTemplateDto.java +++ b/capability/src/main/java/com/sdm/capability/model/dto/ReportTemplateDto.java @@ -86,5 +86,8 @@ public class ReportTemplateDto { @Schema(description = "分页参数,一页几条") private int size; + + @Schema(description = "是否复制模板") + private boolean isCopied; } diff --git a/capability/src/main/java/com/sdm/capability/service/impl/SimulationReportTemplateServiceImpl.java b/capability/src/main/java/com/sdm/capability/service/impl/SimulationReportTemplateServiceImpl.java index 686bf6e2..13e8522f 100644 --- a/capability/src/main/java/com/sdm/capability/service/impl/SimulationReportTemplateServiceImpl.java +++ b/capability/src/main/java/com/sdm/capability/service/impl/SimulationReportTemplateServiceImpl.java @@ -27,6 +27,7 @@ import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; +import org.springframework.web.multipart.MultipartFile; import java.util.*; @@ -51,8 +52,19 @@ public class SimulationReportTemplateServiceImpl extends ServiceImpl response = dataFeignClient.getMultipartFileByFileId(templateDto.getFileId()); + if (!response.isSuccess()) { + return response; + } + file = response.getData(); + } else { + file = templateDto.getFile(); + } UploadFilesReq req = new UploadFilesReq(); - req.setFile(templateDto.getFile()); + req.setFile(file); SdmResponse response = dataFeignClient.uploadReportTemplateFile(req); if (!response.isSuccess()) { return response; diff --git a/common/src/main/java/com/sdm/common/feign/impl/data/DataClientFeignClientImpl.java b/common/src/main/java/com/sdm/common/feign/impl/data/DataClientFeignClientImpl.java index 112e98cd..75231dec 100644 --- a/common/src/main/java/com/sdm/common/feign/impl/data/DataClientFeignClientImpl.java +++ b/common/src/main/java/com/sdm/common/feign/impl/data/DataClientFeignClientImpl.java @@ -246,4 +246,16 @@ public class DataClientFeignClientImpl implements IDataFeignClient { } } + @Override + public SdmResponse getMultipartFileByFileId(Long fileId) { + SdmResponse response; + try { + response = dataClient.getMultipartFileByFileId(fileId); + return response; + } catch (Exception e) { + log.error("获取文件失败:", e); + return SdmResponse.failed("获取文件失败"); + } + } + } diff --git a/common/src/main/java/com/sdm/common/feign/inter/data/IDataFeignClient.java b/common/src/main/java/com/sdm/common/feign/inter/data/IDataFeignClient.java index d92e16ed..e60b9e43 100644 --- a/common/src/main/java/com/sdm/common/feign/inter/data/IDataFeignClient.java +++ b/common/src/main/java/com/sdm/common/feign/inter/data/IDataFeignClient.java @@ -94,4 +94,7 @@ public interface IDataFeignClient { @PostMapping(value = "/data/updateReportTemplateFile", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) SdmResponse updateReportTemplateFile(UpdateScriptAndReportReq req); + @GetMapping("/data/getMultipartFileByFileId") + SdmResponse getMultipartFileByFileId(@RequestParam(value = "fileId") @Validated Long fileId); + } diff --git a/data/src/main/java/com/sdm/data/controller/DataFileController.java b/data/src/main/java/com/sdm/data/controller/DataFileController.java index b965c990..6a8ed74b 100644 --- a/data/src/main/java/com/sdm/data/controller/DataFileController.java +++ b/data/src/main/java/com/sdm/data/controller/DataFileController.java @@ -487,6 +487,12 @@ public class DataFileController implements IDataFeignClient { return IDataFileService.downloadFileForEdit(fileId); } + @GetMapping("/getMultipartFileByFileId") + @Operation(summary = "根据fileId获取MultipartFile文件", description = "根据fileId获取MultipartFile文件") + public SdmResponse getMultipartFileByFileId(@RequestParam(value = "fileId") @Validated Long fileId) { + return IDataFileService.getMultipartFileByFileId(fileId); + } + /** * only office 回调 * @param callbackData diff --git a/data/src/main/java/com/sdm/data/service/IDataFileService.java b/data/src/main/java/com/sdm/data/service/IDataFileService.java index 7284b178..e1515bc2 100644 --- a/data/src/main/java/com/sdm/data/service/IDataFileService.java +++ b/data/src/main/java/com/sdm/data/service/IDataFileService.java @@ -357,6 +357,8 @@ public interface IDataFileService { SdmResponse downloadFileForEdit(Long fileId); + SdmResponse getMultipartFileByFileId(Long fileId); + default SdmResponse> queryFileListByIdList(QueryFileReq queryFileReq){return null;} default SdmResponse queryFileIdByNodeId(QueryFileIdReq queryFileIdReq){return null;}; diff --git a/data/src/main/java/com/sdm/data/service/impl/MinioFileIDataFileServiceImpl.java b/data/src/main/java/com/sdm/data/service/impl/MinioFileIDataFileServiceImpl.java index df78bc66..7b24e0d2 100644 --- a/data/src/main/java/com/sdm/data/service/impl/MinioFileIDataFileServiceImpl.java +++ b/data/src/main/java/com/sdm/data/service/impl/MinioFileIDataFileServiceImpl.java @@ -2995,6 +2995,30 @@ public class MinioFileIDataFileServiceImpl implements IDataFileService { return SdmResponse.failed("onlyoffice编辑文件失败"); } + @Override + public SdmResponse getMultipartFileByFileId(Long fileId) { + try { + FileMetadataInfo fileMetadataInfo = fileMetadataInfoService.lambdaQuery().eq(FileMetadataInfo::getId, fileId).one(); + if (ObjectUtils.isEmpty(fileMetadataInfo)) { + return SdmResponse.failed("未查询到文件的元数据信息"); + } + String fileObjectKey = fileMetadataInfo.getObjectKey(); + // 从MinIO下载文件 + byte[] fileData = minioService.downloadFile(fileObjectKey,fileMetadataInfo.getBucketName()); + String contentType = getContentTypeByFileName(fileMetadataInfo.getOriginalName()); + MultipartFile multipartFile = new MockMultipartFile( + fileMetadataInfo.getOriginalName(), + fileMetadataInfo.getOriginalName(), + contentType, + fileData + ); + return SdmResponse.success(multipartFile); + } catch (Exception e) { + log.error("获取文件失败", e); + } + return SdmResponse.failed("获取文件失败"); + } + public SdmResponse> queryFileListByIdList(QueryFileReq queryFileReq) { List fileMetadataInfos = fileMetadataInfoService.lambdaQuery().in(FileMetadataInfo::getId, queryFileReq.getFileIdList()).list(); if (CollectionUtils.isEmpty(fileMetadataInfos)) {