huangtf 1 anno fa
parent
commit
b4f4d50842

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

@@ -857,6 +857,10 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 		ArchivesAuto archivesAuto = new ArchivesAuto();
 		archivesAuto.setProjectId(node.getProjectId());
 		archivesAuto.setContractId(node.getContractId());
+		//增加保护
+		if (StringUtils.isNotEmpty(archiveName) && archiveName.length() > 450){
+			archiveName = archiveName.substring(0,450);
+		}
 		archivesAuto.setName(archiveName);//案卷题名
 		if(indexMap==null){
 			indexMap=new HashMap<>(); //监理,施工的按合同段分类从0开始依次设置档号,建设单位的没有合同段 就先按一类依次设置
@@ -1088,11 +1092,29 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 				String nodeId = file.getNodeId();
 				nodeIdSet.add(nodeId);
 			}
-			for(String nodeId:nodeIdSet){
-				ArchiveTreeContract treeNode = archiveTreeContractClient.getArchiveTreeContractById(Long.parseLong(nodeId));
-				String nodeName = treeNode.getNodeName();
-				archiveName=archiveName+nodeName;
+			if (nodeIdSet.size() >= 3) {
+				for(String nodeId:nodeIdSet){
+					ArchiveTreeContract treeNode = archiveTreeContractClient.getArchiveTreeContractById(Long.parseLong(nodeId));
+					if (treeNode== null )  {
+						continue;
+					}
+
+					ArchiveTreeContract pNode = archiveTreeContractClient.getArchiveTreeContractById(treeNode.getParentId());
+					if (pNode == null) {
+						continue;
+					}
+					String nodeName = pNode.getNodeName();
+					archiveName=archiveName+nodeName;
+					break;
+				}
+			}else {
+				for(String nodeId:nodeIdSet){
+					ArchiveTreeContract treeNode = archiveTreeContractClient.getArchiveTreeContractById(Long.parseLong(nodeId));
+					String nodeName = treeNode.getNodeName();
+					archiveName=archiveName+nodeName;
+				}
 			}
+
 		}else{
 			//不存在跨节点  项目名称+节点名称
 			archiveName=archiveName+node.getNodeName();

+ 5 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/ArchiveTreeContractController.java

@@ -196,6 +196,11 @@ public class ArchiveTreeContractController extends BladeController {
             ar.setArchiveAutoGroupSelect(1);
         }
 
+        if (archiveTreeContract.getArchiveAutoType() != null && archiveTreeContract.getArchiveAutoType()==1) {
+            //最高并卷规则 选择节点的ID
+            ar.setArchiveAutoNodeId(ar.getId());
+        }
+
         boolean b = archiveTreeContractService.updateById(ar);
         //更新下级节点为同一规则
 

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

@@ -484,6 +484,15 @@
             is_deleted = 0 and ancestors like concat('', #{ancestors}, '%');
         </if>
 
+        <if test="archiveAutoType ==1 and archiveAutoGroupId != null">
+            update m_archive_tree_contract
+            set
+            archive_auto_type= #{archiveAutoType}
+            where
+            is_deleted = 0 and ancestors like concat('', #{ancestors}, '%')
+            and archive_auto_group_id = #{archiveAutoGroupId} and archive_auto_type = 2 and  archive_auto_group_select = 0 ;
+        </if>
+
         update m_archive_tree_contract
         set
         archive_auto_type= #{archiveAutoType}