fix:编辑试验结果
This commit is contained in:
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user