Przeglądaj źródła

Merge branch 'lk20230628'

luok 2 lat temu
rodzic
commit
a7b20a701d

+ 57 - 4
blade-service/blade-archive/src/main/java/org/springblade/archive/service/impl/ArchivesAutoServiceImpl.java

@@ -1080,7 +1080,11 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 		//获取案卷内文件总页数
 		int pageN=0;
 		for(ArchiveFile file:waitArchiveFiles){
-			pageN=pageN+file.getFilePage();
+			Integer filePage=file.getFilePage();
+			if(filePage==null){
+				filePage=0;
+			}
+			pageN=pageN+filePage;
 		}
 		//默认组卷存在跨节点组卷  注意案卷归属节点,案卷命名方式
 		//获取案卷题名
@@ -1163,7 +1167,11 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 		//获取案卷内文件总页数
 		int pageN=0;
 		for(ArchiveFile file:waitArchiveFiles){
-			pageN=pageN+file.getFilePage();
+			Integer filePage= file.getFilePage();
+			if(filePage==null){
+				filePage=0;
+			}
+			pageN=pageN+filePage;
 		}
 
 
@@ -1190,9 +1198,9 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 
 
 	/**
-	 * 单租组卷流程  节点下的文件只在当前节点下组卷
+	 * 单租组卷流程  节点下的文件只在当前节点下组卷   满规格另组一卷 不跨节点
 	 */
-	private void archiveAutoMethod3(List<ArchiveTreeContract> list,Map<String,List<ArchiveFile>> boxMap){
+	private void archiveAutoMethod3_old(List<ArchiveTreeContract> list,Map<String,List<ArchiveFile>> boxMap){
 		//步骤1:遍历节点集合
 		for(ArchiveTreeContract node:list){
 			//步骤2:获取当前节点的案卷规格
@@ -1225,6 +1233,9 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 						//单独组卷流程
 						//步骤6:计算和判断待组卷文件集合是否达到组卷要求,达到要求创建案卷,案卷归属当前节点,案卷下文件改为已组卷
 						Integer filePage = file.getFilePage();
+						if(filePage==null){
+							filePage=0;
+						}
 						archivesSize=archivesSize+filePage;
 						Integer checkStatus = checkSpecificationSize(specificationSize, archivesSize);
 						//步骤6.1未到规格 不组卷
@@ -1282,6 +1293,45 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 		}
 	}
 
+	/**
+	 * 单租组卷流程  20230628 SBD又说单独组卷规则节点下只组一卷,不用满规格新组。这辈子没见过这样的人。
+	 * @param list
+	 * @param boxMap
+	 */
+	private void archiveAutoMethod3(List<ArchiveTreeContract> list,Map<String,List<ArchiveFile>> boxMap){
+		//步骤1:遍历节点集合
+		for(ArchiveTreeContract node:list){
+			//步骤2:查询节点下的未组卷文件
+			List<ArchiveFile> archiveFiles = archiveFileClient.getListByNodeID(node.getId().toString());
+			//步骤3:遍历未归档文件
+			//待组卷文件集合
+			List<ArchiveFile> waitArchiveFiles = new ArrayList<>();
+			//待组卷文件总页数
+			int archivesSize=0;
+			if(archiveFiles!=null){
+				for(ArchiveFile file:archiveFiles){
+					//步骤4:断文件是否存在分盒设置
+					if(file.getBoxNumber()!=null && file.getBoxNumber()!=-1){
+						//添加到分盒文件集合
+						addBoxMap(file,boxMap);
+					}else{
+						//单独组卷流程
+						Integer filePage = file.getFilePage();
+						if(filePage==null){
+							filePage=0;
+						}
+						archivesSize=archivesSize+filePage;
+						waitArchiveFiles.add(file);
+					}
+				}
+				//步骤3:将waitArchiveFiles组卷
+				createArchive3(waitArchiveFiles,node,archivesSize);
+				//将待组卷文件集合,总页数还原初始值,
+				waitArchiveFiles.clear();
+			}
+		}
+	}
+
 	/**
 	 * 分类并卷组卷  设置分类的节点下只有一个案卷,节点下的所有文件都组成这个案卷。如果设置分类节点(select=1的)多个,案卷归属排序第一个节点。
 	 */
@@ -1398,6 +1448,9 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 				}else{
 					//步骤3.5 计算和判断待组卷文件集合是否达到组卷要求,达到要求创建案卷,案卷归属当前节点,案卷下文件改为已组卷
 					Integer filePage = file.getFilePage();
+					if(filePage==null){
+						filePage=0;
+					}
 					archivesSize=archivesSize+filePage;
 					Integer checkStatus = checkSpecificationSize(specificationSize, archivesSize);
 					//步骤3.6未到规格 不组卷

+ 2 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/ArchiveAutoRuleWbsMapper.java

@@ -47,4 +47,6 @@ public interface ArchiveAutoRuleWbsMapper extends BaseMapper<ArchiveAutoRuleWbs>
 
     int removeArchiveAutoRule(@Param("id") Long id, @Param("time") Date time);
 
+    List<ArchiveAutoRuleWbs> getArchiveAutoRuleWbs(@Param("wbsId") Long wbsId, @Param("projectId") Long projectId);
+
 }

+ 8 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/ArchiveAutoRuleWbsMapper.xml

@@ -41,4 +41,12 @@
         where id = #{id}
     </update>
 
+
+
+    <select id="getArchiveAutoRuleWbs" resultMap="archiveAutoRuleWbsResultMap">
+        select *
+        from m_archive_auto_rule_wbs
+        where is_deleted = 0 and wbs_id=#{wbsId} and project_id = #{projectId}
+    </select>
+
 </mapper>

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

@@ -826,10 +826,13 @@ public class ArchiveTreeServiceImpl extends BaseServiceImpl<ArchiveTreeMapper, A
             ArchiveTree archiveTree = baseMapper.selectById(wbsNode2ArchiveTreeNodeId);
 
             //步骤1:找出wbs的规则设置
-            ArchiveAutoRuleWbs autoRuleWbs = archiveAutoRuleWbsMapper.selectOne(Wrappers.<ArchiveAutoRuleWbs>lambdaQuery()
-                    .eq(ArchiveAutoRuleWbs::getWbsId, id)
-                    .eq(ArchiveAutoRuleWbs::getIsDeleted, 0)
-                    .eq(ArchiveAutoRuleWbs::getProjectId, projectId));
+            ArchiveAutoRuleWbs  autoRuleWbs=null;
+            List<ArchiveAutoRuleWbs> autoRuleWbsList = archiveAutoRuleWbsMapper.getArchiveAutoRuleWbs(id, projectId);
+            if(autoRuleWbsList.size()==0){
+                //TODO 像上级找
+            }else{
+                autoRuleWbs=autoRuleWbsList.get(0);
+            }
 
             if (autoRuleWbs != null) {
                 Integer archiveAutoType = autoRuleWbs.getArchiveAutoType();