fix:编辑试验结果

This commit is contained in:
2025-12-25 20:01:19 +08:00
parent acc7a1c1d9
commit e15297d225

View File

@@ -1617,48 +1617,65 @@ public class SimulationRunServiceImpl extends ServiceImpl<SimulationRunMapper, S
experimentResult.setExpDesc(req.getExpDesc());
}
List<Long> deleteFileIds = new ArrayList<>();
// 传了新的图片文件
if (ObjectUtils.isNotEmpty(req.getAddImageInfo())) {
req.getAddFileInfoList().add(req.getAddImageInfo());
}
if (CollectionUtils.size(req.getAddFileInfoList()) > 0) {
UploadFilesReq filesReq = new UploadFilesReq();
BeanUtils.copyProperties(req, filesReq);
filesReq.setUuid(req.getTaskId());
filesReq.setSourceFiles(req.getAddFileInfoList().stream().map(i -> new UploadFilesReq(i.getFileName(), i.getFileSize(), i.getFileType())).toList());
// 批量存储文件信息,返回数据供第二步分片上传使用
SdmResponse<List<BatchAddFileInfoResp>> sdmResponse = dataFeignClient.batchAddFileInfo(filesReq);
if (sdmResponse.isSuccess() && CollectionUtils.isNotEmpty(sdmResponse.getData())) {
List<BatchAddFileInfoResp> batchAddFileInfoResps = sdmResponse.getData();
if (CollectionUtils.size(req.getAddFileInfoList()) > 0 || CollectionUtils.size(req.getDeleteFileIds()) > 0) {
SdmResponse<List<BatchAddFileInfoResp>> batchAddResponse = SdmResponse.success();
// 之前上传的附件文件id
List<Long> oldFileIds = new ArrayList<>();
if (StringUtils.isNotBlank(experimentResult.getFileId())) {
oldFileIds = new ArrayList<>(Arrays.stream(experimentResult.getFileId().split(",")).mapToLong(Long::parseLong).boxed().toList());
}
// 先处理删除的文件
if (CollectionUtils.size(req.getDeleteFileIds()) > 0) {
Set<Long> deleteSet = new HashSet<>(req.getDeleteFileIds());
// 删掉前端删除的附件文件
oldFileIds.removeIf(deleteSet::contains);
deleteFileIds.addAll(req.getDeleteFileIds());
}
// 再处理新增的文件
if (CollectionUtils.size(req.getAddFileInfoList()) > 0) {
UploadFilesReq filesReq = new UploadFilesReq();
BeanUtils.copyProperties(req, filesReq);
filesReq.setUuid(req.getTaskId());
filesReq.setSourceFiles(req.getAddFileInfoList().stream().map(i -> new UploadFilesReq(i.getFileName(), i.getFileSize(), i.getFileType())).toList());
// 批量存储文件信息,返回数据供第二步分片上传使用
batchAddResponse = dataFeignClient.batchAddFileInfo(filesReq);
if (!batchAddResponse.isSuccess()) {
return batchAddResponse;
}
List<BatchAddFileInfoResp> batchAddFileInfoResps = batchAddResponse.getData();
// 传了新的图片文件 默认删除以前的
if (ObjectUtils.isNotEmpty(req.getAddImageInfo())) {
batchAddFileInfoResps.stream().filter(i -> StringUtils.equals(i.getSourceFileName(), req.getAddImageInfo().getFileName())).findFirst().ifPresent(i -> {
deleteFileIds.add(experimentResult.getImageId());
experimentResult.setImageId(i.getBusinessId());
});
}
// 过滤掉图片文件剩下的是附件文件
List<Long> addFileIds = batchAddFileInfoResps.stream().filter(i -> !Objects.equals(i.getBusinessId(), experimentResult.getImageId())).map(BatchAddFileInfoResp::getBusinessId).collect(Collectors.toList());
List<Long> oldFileIds = new ArrayList<>(Arrays.stream(experimentResult.getFileId().split(",")).mapToLong(Long::parseLong).boxed().toList());
if (CollectionUtils.isNotEmpty(req.getDeleteFileIds()) && CollectionUtils.isNotEmpty(oldFileIds)) {
Set<Long> deleteSet = new HashSet<>(req.getDeleteFileIds());
oldFileIds.removeIf(deleteSet::contains);
deleteFileIds.addAll(req.getDeleteFileIds());
}
// 加上新增的附件文件
oldFileIds.addAll(addFileIds);
String fileIds = oldFileIds.stream().map(String::valueOf).collect(Collectors.joining(","));
experimentResult.setFileId(fileIds);
simulationExpResultService.updateById(experimentResult);
// 删除文件
if (CollectionUtils.isNotEmpty(deleteFileIds)) {
for (Long deleteFileId : deleteFileIds) {
DelFileReq delFileReq = new DelFileReq();
delFileReq.setDelFileId(deleteFileId);
SdmResponse response = dataFeignClient.delFile(delFileReq);
if (!response.isSuccess()) {
return response;
}
}
String fileIds = oldFileIds.stream().map(String::valueOf).collect(Collectors.joining(","));
experimentResult.setFileId(fileIds);
simulationExpResultService.updateById(experimentResult);
// 删除文件
if (CollectionUtils.isNotEmpty(deleteFileIds)) {
for (Long deleteFileId : deleteFileIds) {
DelFileReq delFileReq = new DelFileReq();
delFileReq.setDelFileId(deleteFileId);
SdmResponse response = dataFeignClient.delFile(delFileReq);
if (!response.isSuccess()) {
return response;
}
}
}
return sdmResponse;
return batchAddResponse;
}
simulationExpResultService.updateById(experimentResult);
return SdmResponse.success();