Эх сурвалжийг харах

Merge branch 'lk20230330'

luok 2 жил өмнө
parent
commit
db3f6721df

+ 3 - 0
blade-service-api/blade-business-api/src/main/java/org/springblade/business/feign/ArchiveFileClient.java

@@ -61,4 +61,7 @@ public interface ArchiveFileClient {
 
 
     @PostMapping(API_PREFIX + "/getArchiveFileByArchivesId")
     @PostMapping(API_PREFIX + "/getArchiveFileByArchivesId")
     List<ArchiveFile> getArchiveFileByArchivesId(@RequestParam String archivesIds,@RequestParam String fileIds);
     List<ArchiveFile> getArchiveFileByArchivesId(@RequestParam String archivesIds,@RequestParam String fileIds);
+
+    @PostMapping(API_PREFIX + "/updateArchiveFileForCreateArchive")
+    void updateArchiveFileForCreateArchive(@RequestBody List<ArchiveFile> waitArchiveFiles);
 }
 }

+ 3 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/feign/ArchiveTreeContractClient.java

@@ -21,4 +21,7 @@ public interface ArchiveTreeContractClient {
     List<ArchiveTreeContract> queryAllChildByAncestors(@RequestParam String id);
     List<ArchiveTreeContract> queryAllChildByAncestors(@RequestParam String id);
 
 
 
 
+    @PostMapping(API_PREFIX + "/getHavedFileNodeByProjectID")
+    List<ArchiveTreeContract> getHavedFileNodeByProjectID(@RequestParam Long projectId);
+
 }
 }

+ 0 - 2
blade-service/blade-archive/src/main/java/org/springblade/archive/service/IArchivesAutoService.java

@@ -41,6 +41,4 @@ public interface IArchivesAutoService extends BaseService<ArchivesAuto> {
 	IPage<ArchivesAutoVO> selectArchivesAutoFilePage(ArchivesAutoVO queryVo);
 	IPage<ArchivesAutoVO> selectArchivesAutoFilePage(ArchivesAutoVO queryVo);
 
 
 	boolean updateArchivesAutoFileByNodeId(String ids, String nodeId,String nodeSort);
 	boolean updateArchivesAutoFileByNodeId(String ids, String nodeId,String nodeSort);
-
-	void splitArchvies(Long projectId);
 }
 }

+ 83 - 49
blade-service/blade-archive/src/main/java/org/springblade/archive/service/impl/ArchivesAutoServiceImpl.java

@@ -32,11 +32,13 @@ import org.springblade.core.mp.support.Condition;
 import org.springblade.core.mp.support.Query;
 import org.springblade.core.mp.support.Query;
 import org.springblade.core.tool.utils.Func;
 import org.springblade.core.tool.utils.Func;
 import org.springblade.manager.entity.ArchiveTreeContract;
 import org.springblade.manager.entity.ArchiveTreeContract;
+import org.springblade.manager.feign.ArchiveTreeContractClient;
 import org.springblade.system.entity.DictBiz;
 import org.springblade.system.entity.DictBiz;
 import org.springblade.system.feign.IDictBizClient;
 import org.springblade.system.feign.IDictBizClient;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 
 
+import java.time.LocalDateTime;
 import java.util.*;
 import java.util.*;
 
 
 /**
 /**
@@ -51,6 +53,9 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 
 
 	private final IDictBizClient iDictBizClient;
 	private final IDictBizClient iDictBizClient;
 	private ArchiveFileClient archiveFileClient;
 	private ArchiveFileClient archiveFileClient;
+	private ArchiveTreeContractClient archiveTreeContractClient;
+
+
 	@Override
 	@Override
 	public IPage<ArchivesAutoVO> selectArchivesAutoPage(IPage<ArchivesAutoVO> page, ArchivesAutoVO archivesAuto) {
 	public IPage<ArchivesAutoVO> selectArchivesAutoPage(IPage<ArchivesAutoVO> page, ArchivesAutoVO archivesAuto) {
 		return page.setRecords(baseMapper.selectArchivesAutoPage(page, archivesAuto));
 		return page.setRecords(baseMapper.selectArchivesAutoPage(page, archivesAuto));
@@ -112,26 +117,34 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 	}
 	}
 
 
 
 
-	/**
-	 * 自动归档前 将未锁定的案卷拆卷
-	 * @param projectId
-	 */
-	@Override
-	public void splitArchvies(Long projectId){
-		try{
-			baseMapper.splitArchvies(projectId);
-		}catch (Exception e){
-			e.printStackTrace();
-		}
-	}
-
-
 
 
-	public void archiveAutoMethod(){
+	public void archiveAutoMethod(Long projectId){
 		//步骤一:把项目下未锁定的案卷拆卷。
 		//步骤一:把项目下未锁定的案卷拆卷。
+		baseMapper.splitArchvies(projectId);
 		//步骤二:查询归档树节点。存在未归档文件的节点。
 		//步骤二:查询归档树节点。存在未归档文件的节点。
+		List<ArchiveTreeContract> list = archiveTreeContractClient.getHavedFileNodeByProjectID(projectId);
 		//步骤三:遍历归档树节点整理出 默认规则节点,分类并卷节点,单独组卷节点 三个集合。
 		//步骤三:遍历归档树节点整理出 默认规则节点,分类并卷节点,单独组卷节点 三个集合。
+		List<ArchiveTreeContract> list1= new ArrayList<>();
+		List<ArchiveTreeContract> list2= new ArrayList<>();
+		List<ArchiveTreeContract> list3= new ArrayList<>();
+		for(ArchiveTreeContract treeContract:list){
+			Integer archiveAutoType = treeContract.getArchiveAutoType();
+			switch (archiveAutoType){
+				case 1:
+					list1.add(treeContract);
+					break;
+				case 2:
+					list2.add(treeContract);
+					break;
+				case 3:
+					list3.add(treeContract);
+					break;
+			}
+		}
 		//步骤四:按照单独,分类,默认的顺序执行组卷流程。
 		//步骤四:按照单独,分类,默认的顺序执行组卷流程。
+		archiveAutoMethod3(list3);//单独组卷
+		archiveAutoMethod2(list2);//分类组卷
+		archiveAutoMethod1(list1);//默认组卷
 	}
 	}
 
 
 
 
@@ -171,46 +184,60 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 		return null;
 		return null;
 	}
 	}
 
 
-	/**
-	 * 单独组卷规则组卷
-	 * @param waitArchiveFiles
-	 * @param node
-	 */
-	private void createArchive3(List<ArchiveFile> waitArchiveFiles, ArchiveTreeContract node){
-		//1.创建新案卷
+	private ArchivesAuto builtArchives(ArchiveTreeContract node,int pageN,int fileN){
 		ArchivesAuto archivesAuto = new ArchivesAuto();
 		ArchivesAuto archivesAuto = new ArchivesAuto();
-		//archivesAuto.setProjectId();
-		//archivesAuto.setContractId();
-		//archivesAuto.setName();//案卷题名
-		//archivesAuto.setFileNumber();//档号
+		archivesAuto.setProjectId(node.getProjectId());
+		archivesAuto.setContractId(node.getContractId());
+		archivesAuto.setName("");//TODO 案卷题名
+		archivesAuto.setFileNumber("");//TODO 档号
 		//archivesAuto.setMicron();//微缩号
 		//archivesAuto.setMicron();//微缩号
-		//archivesAuto.setUnit();//单位
+		archivesAuto.setUnit("");//TODO 单位
 		//archivesAuto.setQuantity();//数量/单位
 		//archivesAuto.setQuantity();//数量/单位
-		//archivesAuto.setSpecification();//规格
-		//archivesAuto.setStartDate();
-		//archivesAuto.setEndDate();
-		//archivesAuto.setStorageTime();//保管时间
-		//archivesAuto.setSecretLevel();//保密级别
+		archivesAuto.setSpecification("");//TODO 规格 从节点规格获取
+		archivesAuto.setStartDate(null);//TODO 文件开始时间
+		archivesAuto.setEndDate(null);//TODO 文件结束时间
+		archivesAuto.setStorageTime("");//TODO 保管时间  从节点规格获取
+		archivesAuto.setSecretLevel("");//TODO 保密级别 从节点规格获取
 		//archivesAuto.setCarrierType();//载体类型
 		//archivesAuto.setCarrierType();//载体类型
 		//archivesAuto.setKeywords();//主题词
 		//archivesAuto.setKeywords();//主题词
 		//archivesAuto.setStorageLocation();//存放位置
 		//archivesAuto.setStorageLocation();//存放位置
-		//archivesAuto.setIsArchive(1);//已归档
+		archivesAuto.setIsArchive(1);//已归档
 		//archivesAuto.setRemark();//备注
 		//archivesAuto.setRemark();//备注
-		//archivesAuto.setRollDate();//立卷日期
-		//archivesAuto.setRollor();//立卷人
-		//archivesAuto.setNodeId();//归档树节点
-		//archivesAuto.setOutUrl();
-		//archivesAuto.setFileN();//文件数量
-		//archivesAuto.setPageN();//案卷页数
+		archivesAuto.setRollDate(null);// TODO 立卷日期
+		archivesAuto.setRollor("自动");//立卷人
+		archivesAuto.setNodeId(node.getId());//归档树节点
+		archivesAuto.setOutUrl("");//TODO 生成案卷的封面 目录 备考表,背级
+		archivesAuto.setFileN(fileN);//文件数量
+		archivesAuto.setPageN(pageN);//案卷页数
 		//archivesAuto.setMileage();
 		//archivesAuto.setMileage();
 		//archivesAuto.setFileType();
 		//archivesAuto.setFileType();
 		//archivesAuto.setSize();
 		//archivesAuto.setSize();
-		//archivesAuto.setTreeSort();
+		archivesAuto.setTreeSort(node.getTreeSort());
 		//archivesAuto.setIsOpen();
 		//archivesAuto.setIsOpen();
-		//archivesAuto.setIscheck();
-		//archivesAuto.setIsAutoFile();
+		archivesAuto.setIscheck(0);
+		archivesAuto.setIsAutoFile(0);//是否案卷收集上传的案卷
+		archivesAuto.setIsLock(0);//案卷锁定状态
+		baseMapper.insert(archivesAuto);
+		return archivesAuto;
+	}
 
 
+	/**
+	 * 单独组卷规则组卷
+	 * @param waitArchiveFiles
+	 * @param node
+	 */
+	private void createArchive3(List<ArchiveFile> waitArchiveFiles, ArchiveTreeContract node,int pageN){
+
+		//1.创建新案卷
+		ArchivesAuto archivesAuto = builtArchives(node, pageN, waitArchiveFiles.size());
 		//2.设置文件所属案卷,组卷状态
 		//2.设置文件所属案卷,组卷状态
+		Long archivesAutoId = archivesAuto.getId();
+		for(ArchiveFile file:waitArchiveFiles){
+			file.setArchiveId(archivesAutoId);//设置文件所属案卷
+			file.setIsArchive(1);
+			//TODO 重新打页码文件
+		}
+		archiveFileClient.updateArchiveFileForCreateArchive(waitArchiveFiles);
 	}
 	}
 
 
 
 
@@ -240,8 +267,9 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 					//步骤5:判断文件是否存在分盒设置
 					//步骤5:判断文件是否存在分盒设置
 					if(file.getBoxNumber()!=null){
 					if(file.getBoxNumber()!=null){
 						//TODO 走分盒组卷流程
 						//TODO 走分盒组卷流程
-						if(archiveFilesSize==archiveFiles.size()){
-							//TODO 最后一个文件直接将waitArchiveFiles组卷
+						if(archiveFilesSize==archiveFiles.size() && waitArchiveFiles.size()>0){
+							//最后一个文件直接将waitArchiveFiles组卷
+							createArchive3(waitArchiveFiles,node,archivesSize);
 						}
 						}
 					}else{
 					}else{
 						//单独组卷流程
 						//单独组卷流程
@@ -254,7 +282,8 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 							waitArchiveFiles.add(file);
 							waitArchiveFiles.add(file);
 							//判断是否最后一个文件
 							//判断是否最后一个文件
 							if(archiveFilesSize==archiveFiles.size()){
 							if(archiveFilesSize==archiveFiles.size()){
-								//TODO 最后一个文件直接将waitArchiveFiles组卷
+								//最后一个文件直接将waitArchiveFiles组卷
+								createArchive3(waitArchiveFiles,node,archivesSize);
 							}else{
 							}else{
 								continue;
 								continue;
 							}
 							}
@@ -262,7 +291,8 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 						//步骤6.2达到规格 可以组一卷
 						//步骤6.2达到规格 可以组一卷
 						if(checkStatus==1){
 						if(checkStatus==1){
 							waitArchiveFiles.add(file);
 							waitArchiveFiles.add(file);
-							//TODO 将waitArchiveFiles组卷
+							//将waitArchiveFiles组卷
+							createArchive3(waitArchiveFiles,node,archivesSize);
 							//将待组卷文件集合,总页数还原初始值,
 							//将待组卷文件集合,总页数还原初始值,
 							waitArchiveFiles.clear();
 							waitArchiveFiles.clear();
 							archivesSize=0;
 							archivesSize=0;
@@ -271,7 +301,9 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 						if(checkStatus==-1){
 						if(checkStatus==-1){
 							//如果waitArchiveFiles集合size>0,先将集合中文件组卷。再将当前文件放入集合
 							//如果waitArchiveFiles集合size>0,先将集合中文件组卷。再将当前文件放入集合
 							if(waitArchiveFiles.size()>0){
 							if(waitArchiveFiles.size()>0){
-								//TODO 将waitArchiveFiles组卷,然后将待组卷文件集合,总页数还原初始值,
+								//将waitArchiveFiles组卷,
+								createArchive3(waitArchiveFiles,node,archivesSize);
+								//然后将待组卷文件集合,总页数还原初始值,
 								waitArchiveFiles.clear();
 								waitArchiveFiles.clear();
 								//保存当前文件进入待组卷集合,待组卷页数=当前文件页数
 								//保存当前文件进入待组卷集合,待组卷页数=当前文件页数
 								waitArchiveFiles.add(file);
 								waitArchiveFiles.add(file);
@@ -279,14 +311,16 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 
 
 								//判断是否最后一个文件
 								//判断是否最后一个文件
 								if(archiveFilesSize==archiveFiles.size()){
 								if(archiveFilesSize==archiveFiles.size()){
-									//TODO 如果当前文件最后一个文件直接将waitArchiveFiles组卷
+									//如果当前文件最后一个文件直接将waitArchiveFiles组卷
+									createArchive3(waitArchiveFiles,node,archivesSize);
 									waitArchiveFiles.clear();
 									waitArchiveFiles.clear();
 									archivesSize=0;
 									archivesSize=0;
 								}
 								}
 							}else{
 							}else{
 								//步骤6.3.2如果waitArchiveFiles集合size=0,说明当前文件已经超过规格,直接将当前文件组卷
 								//步骤6.3.2如果waitArchiveFiles集合size=0,说明当前文件已经超过规格,直接将当前文件组卷
 								waitArchiveFiles.add(file);
 								waitArchiveFiles.add(file);
-								//TODO 直接将waitArchiveFiles组卷
+								//直接将waitArchiveFiles组卷
+								createArchive3(waitArchiveFiles,node,archivesSize);
 								waitArchiveFiles.clear();
 								waitArchiveFiles.clear();
 								archivesSize=0;
 								archivesSize=0;
 							}
 							}

+ 9 - 0
blade-service/blade-business/src/main/java/org/springblade/business/feignClient/ArchiveFileClientImpl.java

@@ -85,4 +85,13 @@ public class ArchiveFileClientImpl implements ArchiveFileClient {
 
 
         return this.iArchiveFileService.getArchiveFileByArchivesId(archivesIds,fileIds);
         return this.iArchiveFileService.getArchiveFileByArchivesId(archivesIds,fileIds);
     }
     }
+
+    /**
+     * 组卷完成 设置文件对应案卷
+     * @param waitArchiveFiles
+     */
+    @Override
+    public void updateArchiveFileForCreateArchive(List<ArchiveFile> waitArchiveFiles) {
+        iArchiveFileService.updateBatchById(waitArchiveFiles);
+    }
 }
 }

+ 2 - 0
blade-service/blade-business/src/main/java/org/springblade/business/service/impl/ArchiveFileServiceImpl.java

@@ -156,6 +156,7 @@ public class ArchiveFileServiceImpl extends BaseServiceImpl<ArchiveFileMapper, A
 		}
 		}
 	}
 	}
 
 
+
 	@Override
 	@Override
 	public IPage<ArchiveFileVO> selectArchiveFilePageByBoxName(ArchiveFileVO vo) {
 	public IPage<ArchiveFileVO> selectArchiveFilePageByBoxName(ArchiveFileVO vo) {
 		Query query = new Query();
 		Query query = new Query();
@@ -179,4 +180,5 @@ public class ArchiveFileServiceImpl extends BaseServiceImpl<ArchiveFileMapper, A
 
 
 		return iPage.setRecords(pageVoList);
 		return iPage.setRecords(pageVoList);
 	}
 	}
+
 }
 }

+ 16 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/feign/ArchiveTreeContractImpl.java

@@ -3,6 +3,7 @@ package org.springblade.manager.feign;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import lombok.AllArgsConstructor;
 import lombok.AllArgsConstructor;
 import org.springblade.manager.entity.ArchiveTreeContract;
 import org.springblade.manager.entity.ArchiveTreeContract;
+import org.springblade.manager.mapper.ArchiveTreeContractMapper;
 import org.springblade.manager.service.IArchiveTreeContractService;
 import org.springblade.manager.service.IArchiveTreeContractService;
 import org.springframework.web.bind.annotation.RestController;
 import org.springframework.web.bind.annotation.RestController;
 
 
@@ -15,6 +16,8 @@ public class ArchiveTreeContractImpl implements ArchiveTreeContractClient {
 
 
     private final IArchiveTreeContractService archiveTreeContractService;
     private final IArchiveTreeContractService archiveTreeContractService;
 
 
+    private ArchiveTreeContractMapper archiveTreeContractMapper;
+
     @Override
     @Override
     public List<ArchiveTreeContract> queryAllChildByAncestors(String id) {
     public List<ArchiveTreeContract> queryAllChildByAncestors(String id) {
         List<ArchiveTreeContract> archiveTreeList = this.archiveTreeContractService.list(Wrappers.<ArchiveTreeContract>lambdaQuery().like(ArchiveTreeContract::getAncestors, id));
         List<ArchiveTreeContract> archiveTreeList = this.archiveTreeContractService.list(Wrappers.<ArchiveTreeContract>lambdaQuery().like(ArchiveTreeContract::getAncestors, id));
@@ -29,4 +32,17 @@ public class ArchiveTreeContractImpl implements ArchiveTreeContractClient {
 
 
         return archiveTreeList;
         return archiveTreeList;
     }
     }
+
+    /**
+     * 获取项目下存在未组卷文件的归档树节点
+     * @param projectId
+     * @return
+     */
+    @Override
+    public List<ArchiveTreeContract> getHavedFileNodeByProjectID(Long projectId) {
+        List<ArchiveTreeContract> list = archiveTreeContractMapper.getHavedFileNodeByProjectID(projectId);
+        return list;
+    }
+
+
 }
 }

+ 3 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/ArchiveTreeContractMapper.java

@@ -65,4 +65,7 @@ public interface ArchiveTreeContractMapper extends BaseMapper<ArchiveTreeContrac
 	int updateBatch2(@Param("diffRent") List<String> diffRent);
 	int updateBatch2(@Param("diffRent") List<String> diffRent);
 
 
 	int updateBatch3();
 	int updateBatch3();
+
+
+	List<ArchiveTreeContract> getHavedFileNodeByProjectID(@Param("projectId") Long projectId);
 }
 }

+ 25 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/ArchiveTreeContractMapper.xml

@@ -283,4 +283,29 @@
         AND status = 1
         AND status = 1
     </update>
     </update>
 
 
+    <select id="getHavedFileNodeByProjectID" resultMap="archiveTreeContractResultMap">
+        SELECT
+            *
+        FROM
+            m_archive_tree_contract
+        WHERE
+            1 = 1
+          AND project_id = #{projectId}
+          AND is_deleted = 0
+          AND archive_auto_type IS NOT NULL
+          AND id IN (
+            SELECT
+                node_id
+            FROM
+                u_archive_file
+            WHERE
+                1 = 1
+              AND project_id = #{projectId}
+              AND is_deleted = 0
+              AND ( is_archive = 0 OR is_archive IS NULL )
+              AND node_id IS NOT NULL
+        )
+        order by tree_sort asc
+    </select>
+
 </mapper>
 </mapper>

+ 2 - 2
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ArchiveTreeServiceImpl.java

@@ -430,7 +430,7 @@ public class ArchiveTreeServiceImpl extends BaseServiceImpl<ArchiveTreeMapper, A
     }
     }
 
 
     /**
     /**
-     * 归档树节点规则设置保存(系统级)
+     * 归档树节点规则设置保存
      * @param archiveAutoType
      * @param archiveAutoType
      * @param nodeIds
      * @param nodeIds
      * @return
      * @return
@@ -479,7 +479,7 @@ public class ArchiveTreeServiceImpl extends BaseServiceImpl<ArchiveTreeMapper, A
     }
     }
 
 
     /**
     /**
-     * 归档树wbs节点规则设置保存(系统级)
+     * 归档树wbs节点规则设置保存
      * @param archiveAutoType
      * @param archiveAutoType
      * @param nodeIds
      * @param nodeIds
      * @return
      * @return