Bladeren bron

并卷/重组异步执行异常处理

lvy 3 dagen geleden
bovenliggende
commit
bc08890e97

+ 1 - 1
blade-service-api/blade-archive-api/src/main/java/org/springblade/archive/entity/ArchivesAuto.java

@@ -190,7 +190,7 @@ public class ArchivesAuto extends BaseEntity {
     @ApiModelProperty("颜色状态")
     private Integer colourStatus;
 
-    @ApiModelProperty("案卷操作(0:无,1:正在并卷,2:正在重组)")
+    @ApiModelProperty("案卷操作(0:无,1:正在并卷,2:正在重组,3:等待重组(拆卷完成后),-1:并卷失败,-2:重组失败)")
     private Integer actionType;
     //是否是影音
     public boolean isMedia() {

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

@@ -686,14 +686,14 @@ public class ArchivesAutoController extends BladeController {
 		if (archivesAutoList == null || archivesAutoList.isEmpty()) {
 			return;
 		}
-		List<ArchivesAuto> collect = archivesAutoList.stream().filter(item -> item.getActionType() != null && item.getActionType() != 0 && item.getActionType() != 3).collect(Collectors.toList());
+		List<ArchivesAuto> collect = archivesAutoList.stream().filter(item -> item.getActionType() != null && (item.getActionType() == 1 || item.getActionType() == 2)).collect(Collectors.toList());
 		if (!collect.isEmpty()) {
 			String names = collect.stream().map(ArchivesAuto::getName).collect(Collectors.joining(","));
 			throw  new ServiceException("【" + names + "】案卷正在重组或者并卷,请稍后在进行相关操作");
 		}
 		Set<Long> ids = archivesAutoList.stream().map(ArchivesAuto::getId).collect(Collectors.toSet());
 		boolean update = archivesAutoService.update(Wrappers.<ArchivesAuto>lambdaUpdate().set(ArchivesAuto::getActionType, type).in(ArchivesAuto::getId, ids)
-				.and(item -> item.in(ArchivesAuto::getActionType, 0,3).or().isNull(ArchivesAuto::getActionType)));
+				.and(item -> item.notIn(ArchivesAuto::getActionType, 1,2).or().isNull(ArchivesAuto::getActionType)));
 		if (!update) {
 			throw new ServiceException("操作失败,案卷可能正在重组或者并卷,请稍后在进行相关操作");
 		}
@@ -1301,7 +1301,7 @@ public class ArchivesAutoController extends BladeController {
 			}
 		}
 		// 修改标识
-		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))"));
+		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 not in (1,2))"));
 		if (!update) {
 			return R.fail("案卷【" + target.getName() + "】或【" + source.getName() + "】正在被其他用户操作,请稍后再试");
 		}

+ 25 - 15
blade-service/blade-archive/src/main/java/org/springblade/archive/service/impl/ArchivesAutoServiceImpl.java

@@ -5183,15 +5183,20 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 	@Async
 	public void reCreateArchiveAuto1(String ids) {
 		for (Long id : Func.toLongList(ids)) {
-			//先查出勾选的案卷
-			ArchivesAuto archivesAuto=this.getById(id);
-			//查出所有案卷文件
-			List<ArchiveFile>archiveFileList=archiveFileClient.getArchiveFileByArchiveIds(id+"");
-			//设置案卷页码和四要素
-			if (archiveFileList != null && !archiveFileList.isEmpty()) {
-				this.reCreateArchiveAuto(archivesAuto, archiveFileList);
+			try {
+				//先查出勾选的案卷
+				ArchivesAuto archivesAuto=this.getById(id);
+				//查出所有案卷文件
+				List<ArchiveFile>archiveFileList=archiveFileClient.getArchiveFileByArchiveIds(id+"");
+				//设置案卷页码和四要素
+				if (archiveFileList != null && !archiveFileList.isEmpty()) {
+					this.reCreateArchiveAuto(archivesAuto, archiveFileList);
+				}
+				this.update(Wrappers.<ArchivesAuto>lambdaUpdate().set(ArchivesAuto::getActionType, 0).eq(ArchivesAuto::getId, id));
+			} catch (Exception e) {
+				log.error("案卷重组失败," + "案卷ID:" + id, e);
+				this.update(Wrappers.<ArchivesAuto>lambdaUpdate().set(ArchivesAuto::getActionType, -2).eq(ArchivesAuto::getId, id));
 			}
-			this.update(Wrappers.<ArchivesAuto>lambdaUpdate().set(ArchivesAuto::getActionType, 0).eq(ArchivesAuto::getId, id));
 		}
 	}
 	@Override
@@ -5237,13 +5242,18 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 			file.setArchiveSort(i++);
 			waitArchiveFiles.add(file);
 		}
-		archiveFileClient.updateArchiveFile(waitArchiveFiles);
-		archivesAuto.setName(name);
-		//删除其他案卷
-		archivesAutoList.remove(archivesAuto);
-		this.deleteLogic(archivesAutoList.stream().map(o->o.getId()).collect(Collectors.toList()));
-		this.reCreateArchiveAuto(archivesAuto, archiveFileList);
-		this.update(Wrappers.<ArchivesAuto>lambdaUpdate().set(ArchivesAuto::getActionType, 0).in(ArchivesAuto::getId, ids));
+		try {
+			archiveFileClient.updateArchiveFile(waitArchiveFiles);
+			archivesAuto.setName(name);
+			//删除其他案卷
+			archivesAutoList.remove(archivesAuto);
+			this.deleteLogic(archivesAutoList.stream().map(o->o.getId()).collect(Collectors.toList()));
+			this.reCreateArchiveAuto(archivesAuto, archiveFileList);
+			this.update(Wrappers.<ArchivesAuto>lambdaUpdate().set(ArchivesAuto::getActionType, 0).in(ArchivesAuto::getId, ids));
+		} catch (Exception e) {
+			log.error("案卷并卷失败," + "案卷Ids:" + ids, e);
+			this.update(Wrappers.<ArchivesAuto>lambdaUpdate().set(ArchivesAuto::getActionType, -1).in(ArchivesAuto::getId, ids));
+		}
 	}
 
 	/**