|
@@ -31,6 +31,7 @@ import org.springblade.core.tool.utils.Func;
|
|
import org.springblade.manager.dto.ArchiveTreeContractDTO;
|
|
import org.springblade.manager.dto.ArchiveTreeContractDTO;
|
|
import org.springblade.manager.entity.*;
|
|
import org.springblade.manager.entity.*;
|
|
import org.springblade.manager.feign.WbsTreeContractClient;
|
|
import org.springblade.manager.feign.WbsTreeContractClient;
|
|
|
|
+import org.springblade.manager.mapper.ArchiveAutoRuleWbsMapper;
|
|
import org.springblade.manager.mapper.ArchiveTreeMapper;
|
|
import org.springblade.manager.mapper.ArchiveTreeMapper;
|
|
import org.springblade.manager.service.*;
|
|
import org.springblade.manager.service.*;
|
|
import org.springblade.manager.utils.DiffListUtil;
|
|
import org.springblade.manager.utils.DiffListUtil;
|
|
@@ -75,6 +76,8 @@ public class ArchiveTreeContractServiceImpl extends BaseServiceImpl<ArchiveTreeC
|
|
|
|
|
|
private final IWbsTreeContractService wbsTreeContractService;
|
|
private final IWbsTreeContractService wbsTreeContractService;
|
|
|
|
|
|
|
|
+ private final ArchiveAutoRuleWbsMapper archiveAutoRuleWbsMapper;
|
|
|
|
+
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@@ -1214,7 +1217,7 @@ public class ArchiveTreeContractServiceImpl extends BaseServiceImpl<ArchiveTreeC
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
- *
|
|
|
|
|
|
+ * 刷新自动组卷规则
|
|
* @param archiveAutoType
|
|
* @param archiveAutoType
|
|
* @param ar
|
|
* @param ar
|
|
* @return
|
|
* @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);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
|
|
}
|
|
}
|