소스 검색

自动组卷

luok 2 년 전
부모
커밋
67b50d9991

+ 12 - 0
blade-service/blade-archive/src/main/java/org/springblade/archive/mapper/ArchivesAutoMapper.java

@@ -57,18 +57,30 @@ public interface ArchivesAutoMapper extends BaseMapper<ArchivesAuto> {
 	 */
     Integer splitArchvies(@Param("projectId") Long projectId);
 
+	Integer splitArchviesByContract(@Param("projectId") Long projectId,@Param("contractId") Long contractId,@Param("treeCode") String treeCode);
+
+	Integer splitArchviesByNode(@Param("projectId") Long projectId,@Param("ancestors") String ancestors,@Param("nodeId") String nodeId);
+
 	/**
 	 * 获取案卷封面等pdfurl
 	 * @param projectId
 	 * @return
 	 */
 	List<String> getArchivesOutUrlList(@Param("projectId") Long projectId);
+
+	List<String> getArchivesOutUrlListByContract(@Param("projectId") Long projectId,@Param("contractId") Long contractId,@Param("treeCode") String treeCode);
+
+	List<String> getArchivesOutUrlListByNode(@Param("projectId") Long projectId,@Param("ancestors") String ancestors,@Param("nodeId") String nodeId);
 	/**
 	 * 获取文件页面pdfurl
 	 * @param projectId
 	 * @return
 	 */
 	List<String> getFilePageUrlList(@Param("projectId") Long projectId);
+
+	List<String> getFilePageUrlListByContract(@Param("projectId") Long projectId,@Param("contractId") Long contractId,@Param("treeCode") String treeCode);
+
+	List<String> getFilePageUrlListByNode(@Param("projectId") Long projectId,@Param("ancestors") String ancestors,@Param("nodeId") String nodeId);
 	/**
 	 *  根据项目id获取所有档案
 	 */

+ 129 - 3
blade-service/blade-archive/src/main/java/org/springblade/archive/mapper/ArchivesAutoMapper.xml

@@ -153,6 +153,69 @@
             and is_lock!=1;
     </update>
 
+    <update id="splitArchviesByContract">
+        update u_archive_file
+        set archive_id = null,
+            is_archive=0
+        WHERE
+            is_deleted = 0
+          AND archive_id IN (
+            select id from u_archives_auto where project_id=#{projectId}
+            and is_auto_file!=1
+            and is_deleted=0
+            and is_lock!=1
+            and node_id in (
+                SELECT id FROM m_archive_tree_contract
+                WHERE is_deleted = 0 AND project_id = #{projectId} AND ( contract_id = #{contractId} OR tree_code = #{treeCode} )
+            )
+          );
+
+        update u_archives_auto set is_deleted=1 where  project_id=#{projectId}
+            and is_auto_file!=1
+            and is_deleted=0
+            and is_lock!=1
+            and node_id in (
+                SELECT id FROM m_archive_tree_contract
+                WHERE is_deleted = 0 AND project_id = #{projectId} AND ( contract_id = #{contractId} OR tree_code = #{treeCode} )
+            );
+    </update>
+
+    <update id="splitArchviesByNode">
+        update u_archive_file
+        set archive_id = null,
+            is_archive=0
+        WHERE
+            is_deleted = 0
+          AND archive_id IN (
+            SELECT
+                id
+            FROM
+                u_archives_auto
+            WHERE
+                project_id = #{projectId}
+                AND is_auto_file != 1
+                AND is_deleted = 0
+                AND is_lock != 1
+                AND node_id IN (
+                    SELECT id FROM m_archive_tree_contract
+                    WHERE
+                    is_deleted = 0 AND project_id = #{projectId} AND ancestors IS NOT NULL
+                    AND ancestors LIKE concat('',#{ancestors},'%') OR id = #{nodeId}
+                )
+         );
+
+        update u_archives_auto set is_deleted=1 where project_id = #{projectId}
+          AND is_auto_file != 1
+          AND is_deleted = 0
+          AND is_lock != 1
+          AND node_id IN (
+               SELECT id FROM m_archive_tree_contract
+               WHERE
+               is_deleted = 0 AND project_id = #{projectId} AND ancestors IS NOT NULL
+               AND ancestors LIKE concat('',#{ancestors},'%') OR id = #{nodeId}
+          );
+    </update>
+
     <select id="getFilePageUrlList" resultType="java.lang.String">
         select pdf_page_url from u_archive_file
         where
@@ -161,15 +224,78 @@
                 select id from u_archives_auto where project_id=#{projectId}
                         and is_auto_file!=1
                         and is_deleted=0
-                        and is_lock=0
-                );
+                        and is_lock!=1
+            )
+    </select>
+
+    <select id="getFilePageUrlListByContract" resultType="java.lang.String">
+        select pdf_page_url from u_archive_file
+        where
+            is_deleted=0 and
+            archive_id in(
+                    select id from u_archives_auto where project_id=#{projectId}
+                    and is_auto_file!=1
+                    and is_deleted=0
+                    and is_lock!=1
+                    and node_id in (
+                        SELECT id FROM m_archive_tree_contract
+                        WHERE is_deleted = 0 AND project_id = #{projectId} AND ( contract_id = #{contractId} OR tree_code = #{treeCode} )
+                    )
+            );
+    </select>
+
+    <select id="getFilePageUrlListByNode" resultType="java.lang.String">
+        select pdf_page_url from u_archive_file
+        where
+            is_deleted=0 and
+            archive_id in(
+                SELECT
+                    id
+                FROM
+                    u_archives_auto
+                WHERE
+                  project_id = #{projectId}
+                    AND is_auto_file != 1
+                    AND is_deleted = 0
+                    AND is_lock != 1
+                    AND node_id IN (
+                        SELECT id FROM m_archive_tree_contract
+                        WHERE
+                        is_deleted = 0 AND project_id = #{projectId} AND ancestors IS NOT NULL
+                        AND ancestors LIKE concat('',#{ancestors},'%') OR id = #{nodeId}
+                    )
+            );
     </select>
 
     <select id="getArchivesOutUrlList" resultType="java.lang.String">
         select out_url from u_archives_auto where project_id=#{projectId}
           and is_auto_file!=1
           and is_deleted=0
-          and is_lock=0
+          and is_lock!=1
+    </select>
+
+    <select id="getArchivesOutUrlListByContract" resultType="java.lang.String">
+        select out_url from u_archives_auto where project_id=#{projectId}
+            and is_auto_file!=1
+            and is_deleted=0
+            and is_lock!=1
+            and node_id in (
+                SELECT id FROM m_archive_tree_contract
+                WHERE is_deleted = 0 AND project_id = #{projectId} AND ( contract_id = #{contractId} OR tree_code = #{treeCode} )
+            )
+    </select>
+
+    <select id="getArchivesOutUrlListByNode" resultType="java.lang.String">
+        select out_url from u_archives_auto where project_id=#{projectId}
+            AND is_auto_file != 1
+            AND is_deleted = 0
+            AND is_lock != 1
+            AND node_id IN (
+                    SELECT id FROM m_archive_tree_contract
+                    WHERE
+                    is_deleted = 0 AND project_id = #{projectId} AND ancestors IS NOT NULL
+                    AND ancestors LIKE concat('',#{ancestors},'%') OR id = #{nodeId}
+            )
     </select>
 
     <select id="getListByProjectId" resultType="org.springblade.archive.dto.ArchivesAutoDTO">

+ 97 - 19
blade-service/blade-archive/src/main/java/org/springblade/archive/service/impl/ArchivesAutoServiceImpl.java

@@ -258,33 +258,111 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 	@Override
 	public void splitArchvies(Long projectId,Long contractId,Long nodeId){
 		List<String> removeFiles = new ArrayList<>();
-		//清除案卷封面等pdf
-		List<String> archivesOutUrlList = baseMapper.getArchivesOutUrlList(projectId);
-		if(archivesOutUrlList!=null && archivesOutUrlList.size()>0){
-			for(String outUrl:archivesOutUrlList){
-				String[] splits = outUrl.split(",");
-				for(String url:splits){
+		//没合同段的默认整个项目
+		if (contractId == null) {
+			//清除案卷封面等pdf
+			List<String> archivesOutUrlList = baseMapper.getArchivesOutUrlList(projectId);
+			if(archivesOutUrlList!=null && archivesOutUrlList.size()>0){
+				for(String outUrl:archivesOutUrlList){
+					String[] splits = outUrl.split(",");
+					for(String url:splits){
+						if(StringUtils.isNotEmpty(url.trim())){
+							removeFiles.add(FileUtils.getAliYunSubUrl(url));
+						}
+					}
+				}
+			}
+			//清除文件页面pdf
+			List<String> filePageUrlList = baseMapper.getFilePageUrlList(projectId);
+			if(filePageUrlList!=null && filePageUrlList.size()>0){
+				for(String url:filePageUrlList){
 					if(StringUtils.isNotEmpty(url.trim())){
 						removeFiles.add(FileUtils.getAliYunSubUrl(url));
 					}
 				}
 			}
-		}
-		//清除文件页面pdf
-		List<String> filePageUrlList = baseMapper.getFilePageUrlList(projectId);
-		if(filePageUrlList!=null && filePageUrlList.size()>0){
-			for(String url:filePageUrlList){
-				if(StringUtils.isNotEmpty(url.trim())){
-					removeFiles.add(FileUtils.getAliYunSubUrl(url));
+			executorService.execute(()->{
+				iossClient.removeFiles(removeFiles);
+				log.debug("文件删完了");
+			});
+
+			//取消未锁定案卷文件关联
+			baseMapper.splitArchvies(projectId);
+
+		}else{
+			String treeCode = getAuthCode(contractId);
+			if (nodeId!= null) {
+				//有节点的按节点
+				String strNodeId  = nodeId.toString();
+				ArchiveTreeContract archiveTreeContract = archiveTreeContractClient.getArchiveTreeContractById(nodeId);
+				String ancestors=archiveTreeContract.getAncestors()+","+nodeId;
+
+				//清除案卷封面等pdf
+				List<String> archivesOutUrlList = baseMapper.getArchivesOutUrlListByNode(projectId,ancestors,strNodeId);
+				if(archivesOutUrlList!=null && archivesOutUrlList.size()>0){
+					for(String outUrl:archivesOutUrlList){
+						String[] splits = outUrl.split(",");
+						for(String url:splits){
+							if(StringUtils.isNotEmpty(url.trim())){
+								removeFiles.add(FileUtils.getAliYunSubUrl(url));
+							}
+						}
+					}
 				}
+				//清除文件页面pdf
+				List<String> filePageUrlList = baseMapper.getFilePageUrlListByNode(projectId,ancestors,strNodeId);
+				if(filePageUrlList!=null && filePageUrlList.size()>0){
+					for(String url:filePageUrlList){
+						if(StringUtils.isNotEmpty(url.trim())){
+							removeFiles.add(FileUtils.getAliYunSubUrl(url));
+						}
+					}
+				}
+				executorService.execute(()->{
+					iossClient.removeFiles(removeFiles);
+					log.debug("文件删完了");
+				});
+
+				baseMapper.splitArchviesByNode(projectId,ancestors,strNodeId);
+			}else{
+				//没节点的按合同段
+				//清除案卷封面等pdf
+				List<String> archivesOutUrlList = baseMapper.getArchivesOutUrlListByContract(projectId,contractId,treeCode);
+				if(archivesOutUrlList!=null && archivesOutUrlList.size()>0){
+					for(String outUrl:archivesOutUrlList){
+						String[] splits = outUrl.split(",");
+						for(String url:splits){
+							if(StringUtils.isNotEmpty(url.trim())){
+								removeFiles.add(FileUtils.getAliYunSubUrl(url));
+							}
+						}
+					}
+				}
+				//清除文件页面pdf
+				List<String> filePageUrlList = baseMapper.getFilePageUrlListByContract(projectId,contractId,treeCode);
+				if(filePageUrlList!=null && filePageUrlList.size()>0){
+					for(String url:filePageUrlList){
+						if(StringUtils.isNotEmpty(url.trim())){
+							removeFiles.add(FileUtils.getAliYunSubUrl(url));
+						}
+					}
+				}
+				executorService.execute(()->{
+					iossClient.removeFiles(removeFiles);
+					log.debug("文件删完了");
+				});
+
+				//没节点的按合同段
+				baseMapper.splitArchviesByContract(projectId,contractId,treeCode);
 			}
+
 		}
-		executorService.execute(()->{
-			iossClient.removeFiles(removeFiles);
-			log.debug("文件删完了");
-		});
-		//取消未锁定案卷文件关联
-		baseMapper.splitArchvies(projectId);
+
+
+
+
+
+
 
 	}
 

+ 1 - 1
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ArchiveTreeContractServiceImpl.java

@@ -855,7 +855,7 @@ public class ArchiveTreeContractServiceImpl extends BaseServiceImpl<ArchiveTreeC
 				}
 				if (StringUtils.isEmpty(node.getSpecification())) {
 					//默认30mm ,对应枚举 1
-					node.setSpecification("1");
+					node.setSpecification("30");
 				}
 				//没有默认
 				if (StringUtils.isEmpty(node.getArchiveNameSuffix())) {