fix:复制报告模板

This commit is contained in:
2026-01-13 14:33:03 +08:00
parent 2315e0be10
commit fe32e2769a
9 changed files with 36 additions and 19 deletions

View File

@@ -87,7 +87,7 @@ public class ReportTemplateDto {
@Schema(description = "分页参数,一页几条")
private int size;
@Schema(description = "是否复制模板")
private boolean isCopied;
@Schema(description = "是否复制模板 Y/N")
private String copyFlag;
}

View File

@@ -12,19 +12,23 @@ import com.sdm.capability.service.ISimulationReportTemplateService;
import com.sdm.common.common.SdmResponse;
import com.sdm.common.common.ThreadLocalContext;
import com.sdm.common.entity.bo.DataPageInfo;
import com.sdm.common.entity.constants.CommonConstants;
import com.sdm.common.entity.constants.NumberConstants;
import com.sdm.common.entity.enums.ApproveStatusEnum;
import com.sdm.common.entity.enums.ApproveTypeEnum;
import com.sdm.common.entity.req.data.DelFileReq;
import com.sdm.common.entity.req.data.GetFileBaseInfoReq;
import com.sdm.common.entity.req.data.UpdateScriptAndReportReq;
import com.sdm.common.entity.req.data.UploadFilesReq;
import com.sdm.common.entity.req.system.LaunchApproveReq;
import com.sdm.common.entity.resp.data.FileMetadataInfoResp;
import com.sdm.common.feign.impl.data.DataClientFeignClientImpl;
import com.sdm.common.feign.impl.system.ApproveFeignClientImpl;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mock.web.MockMultipartFile;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import org.springframework.web.multipart.MultipartFile;
@@ -54,12 +58,23 @@ public class SimulationReportTemplateServiceImpl extends ServiceImpl<SimulationR
reportTemplate.setTenantId(ThreadLocalContext.getTenantId());
// 复制模板的话 先根据fileId查到模板 再重新上传
MultipartFile file = null;
if (templateDto.isCopied()) {
SdmResponse<MultipartFile> response = dataFeignClient.getMultipartFileByFileId(templateDto.getFileId());
if (CommonConstants.GENERAL_Y.equals(templateDto.getCopyFlag())) {
GetFileBaseInfoReq getFileBaseInfoReq = new GetFileBaseInfoReq();
getFileBaseInfoReq.setFileId(templateDto.getFileId());
SdmResponse<FileMetadataInfoResp> fileBaseInfoResp = dataFeignClient.getFileBaseInfo(getFileBaseInfoReq);
if (!fileBaseInfoResp.isSuccess() || fileBaseInfoResp.getData() == null) {
return SdmResponse.failed("获取文件失败");
}
SdmResponse<byte[]> response = dataFeignClient.getMultipartFileByFileId(templateDto.getFileId());
if (!response.isSuccess()) {
return response;
}
file = response.getData();
file = new MockMultipartFile(
fileBaseInfoResp.getData().getOriginalName(),
fileBaseInfoResp.getData().getOriginalName(),
"application/octet-stream",
response.getData()
);
} else {
file = templateDto.getFile();
}

View File

@@ -10,4 +10,8 @@ public class CommonConstants {
*/
public static final String ROLE_CODE_GENERAL = "GENERAL_USER";
public static final String GENERAL_Y = "Y";
public static final String GENERAL_N = "N";
}

View File

@@ -247,8 +247,8 @@ public class DataClientFeignClientImpl implements IDataFeignClient {
}
@Override
public SdmResponse<MultipartFile> getMultipartFileByFileId(Long fileId) {
SdmResponse<MultipartFile> response;
public SdmResponse<byte[]> getMultipartFileByFileId(Long fileId) {
SdmResponse<byte[]> response;
try {
response = dataClient.getMultipartFileByFileId(fileId);
return response;

View File

@@ -95,6 +95,6 @@ public interface IDataFeignClient {
SdmResponse<Long> updateReportTemplateFile(UpdateScriptAndReportReq req);
@GetMapping("/data/getMultipartFileByFileId")
SdmResponse<MultipartFile> getMultipartFileByFileId(@RequestParam(value = "fileId") @Validated Long fileId);
SdmResponse<byte[]> getMultipartFileByFileId(@RequestParam(value = "fileId") @Validated Long fileId);
}

View File

@@ -489,7 +489,7 @@ public class DataFileController implements IDataFeignClient {
@GetMapping("/getMultipartFileByFileId")
@Operation(summary = "根据fileId获取MultipartFile文件", description = "根据fileId获取MultipartFile文件")
public SdmResponse<MultipartFile> getMultipartFileByFileId(@RequestParam(value = "fileId") @Validated Long fileId) {
public SdmResponse<byte[]> getMultipartFileByFileId(@RequestParam(value = "fileId") @Validated Long fileId) {
return IDataFileService.getMultipartFileByFileId(fileId);
}

View File

@@ -357,7 +357,7 @@ public interface IDataFileService {
SdmResponse downloadFileForEdit(Long fileId);
SdmResponse<MultipartFile> getMultipartFileByFileId(Long fileId);
SdmResponse<byte[]> getMultipartFileByFileId(Long fileId);
default SdmResponse<List<FileMetadataInfoResp>> queryFileListByIdList(QueryFileReq queryFileReq){return null;}

View File

@@ -2996,7 +2996,7 @@ public class MinioFileIDataFileServiceImpl implements IDataFileService {
}
@Override
public SdmResponse<MultipartFile> getMultipartFileByFileId(Long fileId) {
public SdmResponse<byte[]> getMultipartFileByFileId(Long fileId) {
try {
FileMetadataInfo fileMetadataInfo = fileMetadataInfoService.lambdaQuery().eq(FileMetadataInfo::getId, fileId).one();
if (ObjectUtils.isEmpty(fileMetadataInfo)) {
@@ -3005,14 +3005,7 @@ public class MinioFileIDataFileServiceImpl implements IDataFileService {
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);
return SdmResponse.success(fileData);
} catch (Exception e) {
log.error("获取文件失败", e);
}

View File

@@ -1620,5 +1620,10 @@ public class SystemFileIDataFileServiceImpl implements IDataFileService {
return null;
}
@Override
public SdmResponse<byte[]> getMultipartFileByFileId(Long fileId) {
return null;
}
}