fix:复制报告模板
This commit is contained in:
@@ -87,4 +87,7 @@ public class ReportTemplateDto {
|
|||||||
@Schema(description = "分页参数,一页几条")
|
@Schema(description = "分页参数,一页几条")
|
||||||
private int size;
|
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.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.util.CollectionUtils;
|
import org.springframework.util.CollectionUtils;
|
||||||
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
|
||||||
@@ -51,8 +52,19 @@ public class SimulationReportTemplateServiceImpl extends ServiceImpl<SimulationR
|
|||||||
reportTemplate.setTemplateCode(generateUuid("report_code_"));
|
reportTemplate.setTemplateCode(generateUuid("report_code_"));
|
||||||
reportTemplate.setCreator(ThreadLocalContext.getUserId());
|
reportTemplate.setCreator(ThreadLocalContext.getUserId());
|
||||||
reportTemplate.setTenantId(ThreadLocalContext.getTenantId());
|
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();
|
UploadFilesReq req = new UploadFilesReq();
|
||||||
req.setFile(templateDto.getFile());
|
req.setFile(file);
|
||||||
SdmResponse<Long> response = dataFeignClient.uploadReportTemplateFile(req);
|
SdmResponse<Long> response = dataFeignClient.uploadReportTemplateFile(req);
|
||||||
if (!response.isSuccess()) {
|
if (!response.isSuccess()) {
|
||||||
return response;
|
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)
|
@PostMapping(value = "/data/updateReportTemplateFile", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
|
||||||
SdmResponse<Long> updateReportTemplateFile(UpdateScriptAndReportReq req);
|
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);
|
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 回调
|
* only office 回调
|
||||||
* @param callbackData
|
* @param callbackData
|
||||||
|
|||||||
@@ -357,6 +357,8 @@ public interface IDataFileService {
|
|||||||
|
|
||||||
SdmResponse downloadFileForEdit(Long fileId);
|
SdmResponse downloadFileForEdit(Long fileId);
|
||||||
|
|
||||||
|
SdmResponse<MultipartFile> getMultipartFileByFileId(Long fileId);
|
||||||
|
|
||||||
default SdmResponse<List<FileMetadataInfoResp>> queryFileListByIdList(QueryFileReq queryFileReq){return null;}
|
default SdmResponse<List<FileMetadataInfoResp>> queryFileListByIdList(QueryFileReq queryFileReq){return null;}
|
||||||
|
|
||||||
default SdmResponse<FileMetadataInfoResp> queryFileIdByNodeId(QueryFileIdReq queryFileIdReq){return null;};
|
default SdmResponse<FileMetadataInfoResp> queryFileIdByNodeId(QueryFileIdReq queryFileIdReq){return null;};
|
||||||
|
|||||||
@@ -2995,6 +2995,30 @@ public class MinioFileIDataFileServiceImpl implements IDataFileService {
|
|||||||
return SdmResponse.failed("onlyoffice编辑文件失败");
|
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) {
|
public SdmResponse<List<FileMetadataInfoResp>> queryFileListByIdList(QueryFileReq queryFileReq) {
|
||||||
List<FileMetadataInfo> fileMetadataInfos = fileMetadataInfoService.lambdaQuery().in(FileMetadataInfo::getId, queryFileReq.getFileIdList()).list();
|
List<FileMetadataInfo> fileMetadataInfos = fileMetadataInfoService.lambdaQuery().in(FileMetadataInfo::getId, queryFileReq.getFileIdList()).list();
|
||||||
if (CollectionUtils.isEmpty(fileMetadataInfos)) {
|
if (CollectionUtils.isEmpty(fileMetadataInfos)) {
|
||||||
|
|||||||
Reference in New Issue
Block a user