فهرست منبع

档案系统案卷编辑逻辑优化

lvy 2 روز پیش
والد
کامیت
a97e6ef16d

+ 23 - 4
blade-service/blade-archive/src/main/java/org/springblade/archive/controller/ArchiveFileAutoController.java

@@ -20,6 +20,7 @@ import org.springblade.business.feign.ArchiveFileClient;
 import org.springblade.business.vo.ArchiveFileVO;
 import org.springblade.common.utils.SnowFlakeUtil;
 import org.springblade.core.boot.ctrl.BladeController;
+import org.springblade.core.log.exception.ServiceException;
 import org.springblade.core.oss.model.BladeFile;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.api.R;
@@ -132,8 +133,13 @@ ArchiveFileAutoController extends BladeController {
                     archivesAutoService.save(archive);
                 } else {
                     ArchivesAuto archivesAuto = archivesAutoService.getById(archive.getId());
+                    ArchivesAuto update= new ArchivesAuto();
+                    update.setId(archive.getId());
                     if (archivesAuto!= null ) {
-                        archive.setAutoFileSort(archivesAuto.getAutoFileSort());
+                        if (archivesAuto.getActionType() == 1 || archivesAuto.getActionType() == 2 ) {
+                            return R.fail("【" + archivesAuto.getName() + "】案卷已正在并卷或重组,请稍后再试!");
+                        }
+                        update.setAutoFileSort(archivesAuto.getAutoFileSort());
                     }
                     //如果有替换文件,则替换
                     List<ArchivesAutoVO.ApprovalFile> list = archive.getApprovalFileList();
@@ -156,12 +162,20 @@ ArchiveFileAutoController extends BladeController {
                                 archiveFile.setRectification(2);
                             }
                             //只修改档案的文件大小和页数
-                            archive.setPageN(file.getFilePage());
-                            archive.setFileSize(file.getFileSize());
+                            update.setPageN(file.getFilePage());
+                            update.setFileSize(file.getFileSize());
                             archiveFileClient.updateById2(archiveFile);
                         }
                     }
-                    archivesAutoService.updateById(archive);
+                    update.setName(archive.getName());
+                    update.setFileNumber(archive.getFileNumber());
+                    update.setUnit(archive.getUnit());
+                    update.setStorageTime(archive.getStorageTime());
+                    update.setRemark(archive.getRemark());
+                    update.setSecretLevel(archive.getSecretLevel());
+                    update.setStartDate(archive.getStartDate());
+                    update.setEndDate(archive.getEndDate());
+                    archivesAutoService.updateById(update);
 
                 }
             }
@@ -241,6 +255,11 @@ ArchiveFileAutoController extends BladeController {
                     }
                     archivesAutoService.save(archive);
                 } else {
+                    ArchivesAuto archivesAuto = archivesAutoService.getById(archive.getId());
+                    if (archivesAuto!= null && (archivesAuto.getActionType() == 1 || archivesAuto.getActionType() == 2)) {
+                        return R.fail("【" + archivesAuto.getName() + "】案卷已正在并卷或重组,请稍后再试!");
+                    }
+                    archive.setActionType(null);
                     archivesAutoService.updateById(archive);
                 }
             }

+ 14 - 0
blade-service/blade-archive/src/main/java/org/springblade/archive/controller/ArchiveFileController.java

@@ -390,6 +390,20 @@ public class ArchiveFileController extends BladeController {
     @ApiOperation(value = "修改基础信息")
     public R<Boolean> batchUpdateInfo(@RequestBody ArchiveFileVO vo) {
         try {
+            List<ArchiveFileVO> list = vo.getList();
+            if (list != null && !list.isEmpty()) {
+                List<ArchiveFileVO> newList = new ArrayList<>();
+                for (ArchiveFileVO fileVO : list) {
+                    ArchiveFileVO newVo = new ArchiveFileVO();
+                    newVo.setId(fileVO.getId());
+                    newVo.setFileName(fileVO.getFileName());
+                    newVo.setFileNumber(fileVO.getFileNumber());
+                    newVo.setFileTime(fileVO.getFileTime());
+                    newVo.setDutyUser(fileVO.getDutyUser());
+                    newList.add(newVo);
+                }
+                vo.setList(newList);
+            }
             this.archiveFileClient.batchUpdateInfo(vo);
         } catch (Exception e) {
             e.printStackTrace();

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

@@ -53,6 +53,7 @@ import org.springblade.core.log.exception.ServiceException;
 import org.springblade.core.mp.support.Condition;
 import org.springblade.core.mp.support.Query;
 import org.springblade.core.secure.BladeUser;
+import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.Func;
 import org.springblade.manager.entity.ArchiveTreeContract;
@@ -694,7 +695,10 @@ public class ArchivesAutoController extends BladeController {
 			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)
+		Date now = new Date();
+		boolean update = archivesAutoService.update(Wrappers.<ArchivesAuto>lambdaUpdate().set(ArchivesAuto::getActionType, type).set(ArchivesAuto::getUpdateTime, now)
+				// createDept 并卷批次
+				.set(ArchivesAuto::getUpdateUser, AuthUtil.getUserId()).set(ArchivesAuto::getCreateDept, SnowFlakeUtil.getId()).in(ArchivesAuto::getId, ids)
 				.and(item -> item.notIn(ArchivesAuto::getActionType, 1,2).or().isNull(ArchivesAuto::getActionType)));
 		if (!update) {
 			throw new ServiceException("操作失败,案卷可能正在重组或者并卷,请稍后在进行相关操作");

+ 44 - 40
blade-service/blade-archive/src/main/java/org/springblade/archive/service/impl/ArchivesAutoServiceImpl.java

@@ -4844,7 +4844,7 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 			}
 		}
 		if (!updates.isEmpty()) {
-			return this.updateBatchById(archivesAutos);
+			return this.updateBatchById(updates);
 		}
 		return true;
 	}
@@ -5206,6 +5206,7 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 				List<ArchiveFile>archiveFileList=archiveFileClient.getArchiveFileByArchiveIds(id+"");
 				//设置案卷页码和四要素
 				if (archiveFileList != null && !archiveFileList.isEmpty()) {
+					archivesAuto.setActionType(null);
 					this.reCreateArchiveAuto(archivesAuto, archiveFileList);
 				}
 				this.update(Wrappers.<ArchivesAuto>lambdaUpdate().set(ArchivesAuto::getActionType, 0).eq(ArchivesAuto::getId, id));
@@ -5220,58 +5221,60 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 	@Override
 	@Async
 	public void reCreateArchiveAuto2(List<ArchivesAuto> archivesAutoList, String ids, String name) {
-		//根据档号后缀排序 拿到第一个
-		ArchivesAuto archivesAuto = archivesAutoList.get(0);
-		archivesAutoList.sort(Comparator.comparingInt(a -> {
-			String fileNumber = a.getFileNumber();
-			if (fileNumber == null || fileNumber.isEmpty()) {
-				return Integer.MAX_VALUE;
-			}
-			String[] parts;
-			if (fileNumber.indexOf("_") > 0) {
-				parts = fileNumber.split("_");
-			} else if (fileNumber.indexOf("-") > 0) {
-				parts = fileNumber.split("-");
-			} else {
-				return Integer.MAX_VALUE;
-			}
-			if (parts.length > 0) {
-				try {
-					return Integer.parseInt(parts[parts.length - 1]);
-				} catch (NumberFormatException e) {
+		try {
+			//根据档号后缀排序 拿到第一个
+			ArchivesAuto archivesAuto = archivesAutoList.get(0);
+			archivesAutoList.sort(Comparator.comparingInt(a -> {
+				String fileNumber = a.getFileNumber();
+				if (fileNumber == null || fileNumber.isEmpty()) {
+					return Integer.MAX_VALUE;
+				}
+				String[] parts;
+				if (fileNumber.indexOf("_") > 0) {
+					parts = fileNumber.split("_");
+				} else if (fileNumber.indexOf("-") > 0) {
+					parts = fileNumber.split("-");
+				} else {
 					return Integer.MAX_VALUE;
 				}
+				if (parts.length > 0) {
+					try {
+						return Integer.parseInt(parts[parts.length - 1]);
+					} catch (NumberFormatException e) {
+						return Integer.MAX_VALUE;
+					}
+				}
+				return Integer.MAX_VALUE;
+			}));
+			//将除第一个以外的案卷文件archiveId 设置成第一个的id
+			List<ArchiveFile> waitArchiveFiles = new ArrayList<>();
+			//查出所有案卷文件
+			List<ArchiveFile>archiveFileList=new ArrayList<>();
+			List<Long> longList = Func.toLongList(ids);
+			for (Long id : longList) {
+				archiveFileList.addAll(archiveFileClient.getArchiveFileByArchiveIds(id+""));
 			}
-			return Integer.MAX_VALUE;
-		}));
-		//将除第一个以外的案卷文件archiveId 设置成第一个的id
-		List<ArchiveFile> waitArchiveFiles = new ArrayList<>();
-		//查出所有案卷文件
-		List<ArchiveFile>archiveFileList=new ArrayList<>();
-		List<Long> longList = Func.toLongList(ids);
-		for (Long id : longList) {
-			archiveFileList.addAll(archiveFileClient.getArchiveFileByArchiveIds(id+""));
-		}
-		int i=1;
-		for (ArchiveFile file : archiveFileList) {
-			if (!file.getArchiveId().equals(archivesAuto.getId())) {
-				file.setArchiveId(archivesAuto.getId());
+			int i=1;
+			for (ArchiveFile file : archiveFileList) {
+				if (!file.getArchiveId().equals(archivesAuto.getId())) {
+					file.setArchiveId(archivesAuto.getId());
+				}
+				file.setArchiveSort(i++);
+				waitArchiveFiles.add(file);
 			}
-			file.setArchiveSort(i++);
-			waitArchiveFiles.add(file);
-		}
-		try {
 			archiveFileClient.updateArchiveFile(waitArchiveFiles);
 			archivesAuto.setName(name);
+			archivesAuto.setActionType(null);
 			//删除其他案卷
 			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));
+			this.update(Wrappers.<ArchivesAuto>lambdaUpdate().set(ArchivesAuto::getActionType, 0).in(ArchivesAuto::getId, longList));
 		} catch (Exception e) {
 			log.error("案卷并卷失败," + "案卷Ids:" + ids, e);
-			this.update(Wrappers.<ArchivesAuto>lambdaUpdate().set(ArchivesAuto::getActionType, -1).in(ArchivesAuto::getId, ids));
+			this.update(Wrappers.<ArchivesAuto>lambdaUpdate().set(ArchivesAuto::getActionType, -1).in(ArchivesAuto::getId, Func.toLongList(ids)));
 		}
+
 	}
 
 	/**
@@ -5515,6 +5518,7 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 					List<ArchiveFile>archiveFileList=archiveFileClient.getArchiveFileByArchiveIds(archivesAuto.getId()+"");
 					//设置案卷页码和四要素
 					if (archiveFileList != null && !archiveFileList.isEmpty()) {
+						archivesAuto.setActionType(null);
 						this.reCreateArchiveAuto(archivesAuto, archiveFileList);
 					}
 					this.update(Wrappers.<ArchivesAuto>lambdaUpdate().set(ArchivesAuto::getActionType, 0).eq(ArchivesAuto::getId, archivesAuto.getId()));