fix:复制报告模板
This commit is contained in:
@@ -87,4 +87,7 @@ public class ReportTemplateDto {
|
||||
@Schema(description = "分页参数,一页几条")
|
||||
private int size;
|
||||
|
||||
@Schema(description = "是否复制模板")
|
||||
private boolean isCopied;
|
||||
|
||||
}
|
||||
|
||||
@@ -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<SimulationR
|
||||
reportTemplate.setTemplateCode(generateUuid("report_code_"));
|
||||
reportTemplate.setCreator(ThreadLocalContext.getUserId());
|
||||
reportTemplate.setTenantId(ThreadLocalContext.getTenantId());
|
||||
// 复制模板的话 先根据fileId查到模板 再重新上传
|
||||
MultipartFile file = null;
|
||||
if (templateDto.isCopied()) {
|
||||
SdmResponse<MultipartFile> 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<Long> response = dataFeignClient.uploadReportTemplateFile(req);
|
||||
if (!response.isSuccess()) {
|
||||
return response;
|
||||
|
||||
@@ -246,4 +246,16 @@ public class DataClientFeignClientImpl implements IDataFeignClient {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public SdmResponse<MultipartFile> getMultipartFileByFileId(Long fileId) {
|
||||
SdmResponse<MultipartFile> response;
|
||||
try {
|
||||
response = dataClient.getMultipartFileByFileId(fileId);
|
||||
return response;
|
||||
} catch (Exception e) {
|
||||
log.error("获取文件失败:", e);
|
||||
return SdmResponse.failed("获取文件失败");
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -94,4 +94,7 @@ public interface IDataFeignClient {
|
||||
@PostMapping(value = "/data/updateReportTemplateFile", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
|
||||
SdmResponse<Long> updateReportTemplateFile(UpdateScriptAndReportReq req);
|
||||
|
||||
@GetMapping("/data/getMultipartFileByFileId")
|
||||
SdmResponse<MultipartFile> getMultipartFileByFileId(@RequestParam(value = "fileId") @Validated Long fileId);
|
||||
|
||||
}
|
||||
|
||||
@@ -487,6 +487,12 @@ public class DataFileController implements IDataFeignClient {
|
||||
return IDataFileService.downloadFileForEdit(fileId);
|
||||
}
|
||||
|
||||
@GetMapping("/getMultipartFileByFileId")
|
||||
@Operation(summary = "根据fileId获取MultipartFile文件", description = "根据fileId获取MultipartFile文件")
|
||||
public SdmResponse<MultipartFile> getMultipartFileByFileId(@RequestParam(value = "fileId") @Validated Long fileId) {
|
||||
return IDataFileService.getMultipartFileByFileId(fileId);
|
||||
}
|
||||
|
||||
/**
|
||||
* only office 回调
|
||||
* @param callbackData
|
||||
|
||||
@@ -357,6 +357,8 @@ public interface IDataFileService {
|
||||
|
||||
SdmResponse downloadFileForEdit(Long fileId);
|
||||
|
||||
SdmResponse<MultipartFile> getMultipartFileByFileId(Long fileId);
|
||||
|
||||
default SdmResponse<List<FileMetadataInfoResp>> queryFileListByIdList(QueryFileReq queryFileReq){return null;}
|
||||
|
||||
default SdmResponse<FileMetadataInfoResp> queryFileIdByNodeId(QueryFileIdReq queryFileIdReq){return null;};
|
||||
|
||||
@@ -2995,6 +2995,30 @@ public class MinioFileIDataFileServiceImpl implements IDataFileService {
|
||||
return SdmResponse.failed("onlyoffice编辑文件失败");
|
||||
}
|
||||
|
||||
@Override
|
||||
public SdmResponse<MultipartFile> 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<List<FileMetadataInfoResp>> queryFileListByIdList(QueryFileReq queryFileReq) {
|
||||
List<FileMetadataInfo> fileMetadataInfos = fileMetadataInfoService.lambdaQuery().in(FileMetadataInfo::getId, queryFileReq.getFileIdList()).list();
|
||||
if (CollectionUtils.isEmpty(fileMetadataInfos)) {
|
||||
|
||||
Reference in New Issue
Block a user