Sfoglia il codice sorgente

档案插卷逻辑优化

lvy 5 giorni fa
parent
commit
49fd342886

+ 4 - 4
blade-service-api/blade-archive-api/src/main/java/org/springblade/archive/vo/ArchivesAutoInsertVO.java

@@ -35,8 +35,8 @@ public class ArchivesAutoInsertVO implements Serializable {
 	@ApiModelProperty("目标案卷id")
 	private Long targetId;
 
-	@ApiModelProperty("type, 0:后,1:前")
-	private Integer type;
+//	@ApiModelProperty("type, 0:后,1:前")
+//	private Integer type;
 
 	@ApiModelProperty("被选择的案卷id")
 	private Long sourceId;
@@ -44,8 +44,8 @@ public class ArchivesAutoInsertVO implements Serializable {
 	@ApiModelProperty("被插入的文件ids")
 	private String sourceArchiveFileIds;
 
-	@ApiModelProperty("选择位置的文件id")
-	private Long targetIndexFileId;
+//	@ApiModelProperty("选择位置的文件id")
+//	private Long targetIndexFileId;
 
 	@ApiModelProperty("ids")
 	private String sortFileList;

+ 23 - 82
blade-service/blade-archive/src/main/java/org/springblade/archive/controller/ArchivesAutoController.java

@@ -1238,6 +1238,12 @@ public class ArchivesAutoController extends BladeController {
 		if (target == null || source == null) {
 			return R.fail("插入或选择的案卷不存在");
 		}
+		if (target.getActionType() != null && (target.getActionType() == 1 || target.getActionType() == 2)) {
+			return R.fail("案卷【"+ target.getName() + "进行重组或者并卷,请稍后再试");
+		}
+		if (source.getActionType() != null && (source.getActionType() == 1 || source.getActionType() == 2)) {
+			return R.fail("案卷【"+ source.getName() + "进行重组或者并卷,请稍后再试");
+		}
 		List<ArchiveFile> sourceArchiveFileList = archiveFileClient.getAllArchiveFileByIds(sourceFileIds);
 		if (sourceArchiveFileList == null || sourceArchiveFileList.isEmpty()) {
 			return R.fail("请择要插入的文件不存在");
@@ -1247,97 +1253,32 @@ public class ArchivesAutoController extends BladeController {
 				return R.fail("文件【" + archiveFile.getFileName() + "】不属于【" + source.getName() + "】案卷,请重新选择");
 			}
 		}
-		if ((vo.getTargetIndexFileId() ==  null || vo.getTargetIndexFileId() <= 0)) {
-			return R.fail("请选择要插入的位置");
+		if ((vo.getSortFileList() ==  null || !vo.getSortFileList().contains(","))) {
+			return R.fail("参数错误");
 		}
 		List<ArchiveFile> updateArchiveFileList = new ArrayList<>();
 		int sort = 0;
-		if (vo.getSortFileList() != null && !vo.getSortFileList().isEmpty()) {
-			String[] split1 = vo.getSortFileList().split(",");
-			// sourceArchiveFileList id 可能存在split1中,需要过滤
-			Map<Long, Long> longMap = Arrays.stream(split1).filter(StringUtils::isNumeric).map(Long::parseLong).collect(Collectors.toMap(k -> k, v -> v, (k1, k2) -> k1));
-			sourceArchiveFileList.removeIf(file -> longMap.containsKey(file.getId()));
-			for (String s : split1) {
-				if (StringUtils.isNumeric(s)) {
-					ArchiveFile file = new ArchiveFile();
-					file.setId(Long.parseLong(s));
-					updateArchiveFileList.add(file);
-					if (s.equals(vo.getTargetIndexFileId() + "")) {
-						sourceArchiveFileList.sort(Comparator.comparingInt(ArchiveFile::getArchiveSort));
-						if (vo.getType() == null || vo.getType() == 0) {
-							file.setSort( sort);
-							for (ArchiveFile file1 : sourceArchiveFileList) {
-								ArchiveFile file2 = new ArchiveFile();
-								file2.setId(file1.getId());
-								file2.setArchiveId(target.getId());
-								file2.setPageNum("");
-								sort++;
-								file2.setSort(sort);
-								updateArchiveFileList.add(file2);
-							}
-						} else {
-							for (ArchiveFile file1 : sourceArchiveFileList) {
-								ArchiveFile file2 = new ArchiveFile();
-								file2.setId(file1.getId());
-								file2.setArchiveId(target.getId());
-								file2.setPageNum("");
-								file2.setSort(sort);
-								sort++;
-								updateArchiveFileList.add(file2);
-							}
-							file.setSort( sort);
-						}
-					} else {
-						file.setSort( sort);
-					}
-					sort++;
-				}
-			}
-		} else {
-			List<ArchiveFile> targetArchiveFileList = archiveFileClient.getArchiveFileByArchiveIds(vo.getTargetId() + "");
-			targetArchiveFileList.sort(Comparator.comparingInt(ArchiveFile::getArchiveSort));
-			for (ArchiveFile archiveFile : targetArchiveFileList) {
-				if (archiveFile.getId().equals(vo.getTargetIndexFileId())) {
-					sort = archiveFile.getArchiveSort();
-					ArchiveFile file = new ArchiveFile();
-					file.setId(archiveFile.getId());
-					file.setArchiveId(archiveFile.getArchiveId());
-					sourceArchiveFileList.sort(Comparator.comparingInt(ArchiveFile::getArchiveSort));
-					if (vo.getType() == null || vo.getType() == 0) {
-						updateArchiveFileList.add(file);
-						for (ArchiveFile file1 : sourceArchiveFileList) {
-							ArchiveFile file2 = new ArchiveFile();
-							file2.setId(file1.getId());
-							file2.setArchiveId(archiveFile.getArchiveId());
-							file2.setPageNum("");
-							updateArchiveFileList.add(file2);
-						}
-					} else {
-						for (ArchiveFile file1 : sourceArchiveFileList) {
-							ArchiveFile file2 = new ArchiveFile();
-							file2.setId(file1.getId());
-							file2.setArchiveId(archiveFile.getArchiveId());
-							file2.setPageNum("");
-							updateArchiveFileList.add(file2);
-						}
-						updateArchiveFileList.add(file);
-					}
-				} else if (!updateArchiveFileList.isEmpty()) {
-					ArchiveFile file = new ArchiveFile();
-					file.setId(archiveFile.getId());
-					updateArchiveFileList.add(file);
+		String[] split1 = vo.getSortFileList().split(",");
+		Map<Long, Integer> map = sourceArchiveFileList.stream().collect(Collectors.toMap(ArchiveFile::getId, ArchiveFile::getSort));
+		for (String s : split1) {
+			if (StringUtils.isNumeric(s)) {
+				ArchiveFile file = new ArchiveFile();
+				file.setId(Long.parseLong(s));
+				updateArchiveFileList.add(file);
+				file.setSort(sort);
+				if (map.containsKey(file.getId())) {
+					file.setPageNum("");
+					file.setArchiveId(target.getId());
 				}
-			}
-			// 修改排序
-			for (ArchiveFile archiveFile : updateArchiveFileList) {
-				archiveFile.setArchiveSort(sort);
-				archiveFile.setArchiveId(vo.getTargetId());
 				sort++;
 			}
 		}
 		// 修改标识
 		archiveFileClient.updateArchiveFile(updateArchiveFileList);
-		archivesAutoService.update(Wrappers.<ArchivesAuto>lambdaUpdate().in(ArchivesAuto::getId,vo.getTargetId(), vo.getSourceId()).set(ArchivesAuto::getActionType, 3));
+		boolean update = archivesAutoService.update(Wrappers.<ArchivesAuto>lambdaUpdate().in(ArchivesAuto::getId, vo.getTargetId(), vo.getSourceId()).set(ArchivesAuto::getActionType, 3).last("and (action_type is null or action_type in (0,3))"));
+		if (!update) {
+			return R.fail("案卷【" + target.getName() + "】或【" + source.getName() + "】正在被其他用户操作,请稍后再试");
+		}
 		return R.status(true);
 	}