Forráskód Böngészése

原生电子文件自动组卷

huangtf 1 éve
szülő
commit
af63abb187

+ 4 - 3
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/ArchiveTreeContractController.java

@@ -201,8 +201,6 @@ public class ArchiveTreeContractController extends BladeController {
 
         archiveTreeContractService.updateAllSonNodeIdsForArchiveAutoRule(ar);
 
-
-
         return R.status(b);
     }
 
@@ -357,7 +355,7 @@ public class ArchiveTreeContractController extends BladeController {
     }
 
     /**
-     * 初始化归档树根节点
+     * 同步客户级
      */
     @PostMapping("/syncProjectTree")
     @ApiOperationSupport(order = 14)
@@ -374,6 +372,9 @@ public class ArchiveTreeContractController extends BladeController {
         boolean b = archiveTreeContractService.syncProjectTree(archiveTree);
 
         //TODO 待节点都同步完了以后,再去设置wbs节点的组卷规则。(方式:客户级wbs节点-》项目级wbs节点-》wbs项目级组卷规则-》设置规则到客户级wbs节点以及子节点)
+        if (b) {
+            archiveTreeContractService.updateWbsRuleNodes(archiveTree.getProjectId());
+        }
 
         if (b) {
             return R.success("同步成功");

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

@@ -124,4 +124,6 @@ public interface IArchiveTreeContractService extends BaseService<ArchiveTreeCont
 
     ArchiveTreeContract getMeasurementPeriodNode(String projectName,String contractName,
                                                  String periodName);
+
+    public void updateWbsRuleNodes(Long projectId);
 }

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

@@ -31,6 +31,7 @@ import org.springblade.core.tool.utils.Func;
 import org.springblade.manager.dto.ArchiveTreeContractDTO;
 import org.springblade.manager.entity.*;
 import org.springblade.manager.feign.WbsTreeContractClient;
+import org.springblade.manager.mapper.ArchiveAutoRuleWbsMapper;
 import org.springblade.manager.mapper.ArchiveTreeMapper;
 import org.springblade.manager.service.*;
 import org.springblade.manager.utils.DiffListUtil;
@@ -75,6 +76,8 @@ public class ArchiveTreeContractServiceImpl extends BaseServiceImpl<ArchiveTreeC
 
 	private final IWbsTreeContractService wbsTreeContractService;
 
+	private final ArchiveAutoRuleWbsMapper archiveAutoRuleWbsMapper;
+
 
 
 
@@ -1214,7 +1217,7 @@ public class ArchiveTreeContractServiceImpl extends BaseServiceImpl<ArchiveTreeC
 	}
 
 	/**
-	 *
+	 *  刷新自动组卷规则
 	 * @param archiveAutoType
 	 * @param ar
 	 * @return
@@ -1252,5 +1255,82 @@ public class ArchiveTreeContractServiceImpl extends BaseServiceImpl<ArchiveTreeC
 		}
 	}
 
+	/**
+	 * 根据项目级配置的wbs组卷节点,配置客户级节点
+	 * @param autoRuleWbs
+	 * @param treeContracts
+	 * @return
+	 */
+	private  List<ArchiveTreeContract> getSelectRuleNodes(List<ArchiveAutoRuleWbs> autoRuleWbs,List<ArchiveTreeContract> treeContracts){
+		List<ArchiveTreeContract> selectRuleNodes = new ArrayList<>();
+		Map<Long,ArchiveAutoRuleWbs> autoRuleWbsMap = new HashMap<>();
+		for (ArchiveAutoRuleWbs ruleWbs:autoRuleWbs) {
+			autoRuleWbsMap.put(ruleWbs.getWbsId(),ruleWbs);
+		}
+
+		//根据fro
+		for (ArchiveTreeContract treeContract :treeContracts) {
+
+			ArchiveAutoRuleWbs ruleWbs = autoRuleWbsMap.get(treeContract.getExtId());
+			if (ruleWbs!= null ) {
+				treeContract.setArchiveAutoType(ruleWbs.getArchiveAutoType());
+				selectRuleNodes.add(treeContract);
+				continue;
+			}
+			if (treeContract.getFromId()!= null
+					&& !(treeContract.getFromId().equals(treeContract.getExtId()))) {
+
+				ruleWbs = autoRuleWbsMap.get(treeContract.getFromId());
+				if (ruleWbs!= null ) {
+					treeContract.setArchiveAutoType(ruleWbs.getArchiveAutoType());
+					selectRuleNodes.add(treeContract);
+					continue;
+				}
+			}
+		}
+
+		return selectRuleNodes;
+	}
+
+	/**
+	 * 更新wbs节点规则
+	 * @param projectId
+	 */
+	public void updateWbsRuleNodes(Long projectId){
+
+		//获取projectId ,获取wbs树的配置的规则
+		List<ArchiveAutoRuleWbs> autoRuleWbs =    archiveAutoRuleWbsMapper.selectList(Wrappers.<ArchiveAutoRuleWbs>lambdaQuery()
+				.eq(ArchiveAutoRuleWbs::getIsDeleted, 0)
+				.eq(ArchiveAutoRuleWbs::getProjectId, projectId));
+		if (autoRuleWbs.size() == 0) {
+			return;
+		}
+
+		//先清空原有规则
+		int updatedRows = archiveTreeContractMapper.update(
+				null,
+				Wrappers.<ArchiveTreeContract>lambdaUpdate()
+						.set(ArchiveTreeContract::getArchiveAutoType, null)
+						.eq(ArchiveTreeContract::getIsDeleted, 0)
+						.eq(ArchiveTreeContract::getProjectId, projectId)
+						.eq(ArchiveTreeContract::getExtType, 1)
+		);
+
+		//获取所有的wbs节点
+		List<ArchiveTreeContract> treeContracts = archiveTreeContractMapper.selectList(
+				Wrappers.<ArchiveTreeContract>lambdaQuery()
+						.eq(ArchiveTreeContract::getIsDeleted, 0)
+						.eq(ArchiveTreeContract::getProjectId, projectId)
+						.eq(ArchiveTreeContract::getExtType, 1)
+		);
+
+		//获取匹配的客户端wbs节点
+		List<ArchiveTreeContract> selectNodes = getSelectRuleNodes(autoRuleWbs,treeContracts);
+
+		if (selectNodes.size() > 0) {
+			updateArchiveContractAutoRule(selectNodes);
+		}
+	}
+
 
 }