|
@@ -16,6 +16,7 @@
|
|
|
*/
|
|
|
package org.springblade.manager.service.impl;
|
|
|
|
|
|
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.StringPool;
|
|
|
import com.mixsmart.utils.StringUtils;
|
|
|
import org.springblade.common.utils.SnowFlakeUtil;
|
|
@@ -122,39 +123,127 @@ public class ArchiveTreeContractServiceImpl extends BaseServiceImpl<ArchiveTreeC
|
|
|
return ForestNodeMerger.merge(baseMapper.tree2(tenantId, disPlayTree, nodeType,projectId));
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 保存组卷规则设置
|
|
|
+ * @param archiveAutoType
|
|
|
+ * @param nodeIds
|
|
|
+ * @return
|
|
|
+ */
|
|
|
@Override
|
|
|
public boolean saveArchiveAutoRule(Integer archiveAutoType, String nodeIds) {
|
|
|
//项目级不需要考虑是否为wbs节点,已经同步出来了都属于归档树节点,直接按归档树节点处理
|
|
|
+ try{
|
|
|
+ //步骤1保存选择节点的立卷规则。
|
|
|
+ String[] ids = nodeIds.split(",");
|
|
|
|
|
|
- //步骤1保存选择节点的立卷规则。
|
|
|
- String[] ids = nodeIds.split(",");
|
|
|
+ Long archiveAutoNodeId=null;
|
|
|
+
|
|
|
+ //分类并卷规则的需要生成个随机数,作为同一个分类赋值archiveAutoNodeId
|
|
|
+ if(archiveAutoType==2){
|
|
|
+ double ran=(Math.random()*100000000) + 1;
|
|
|
+ archiveAutoNodeId=Long.parseLong(System.currentTimeMillis()+""+ran);
|
|
|
+ }
|
|
|
+ for(String nodeId:ids){
|
|
|
+ long nodeIdLong = Long.parseLong(nodeId);
|
|
|
+ ArchiveTreeContract archiveTreeContract = baseMapper.selectById(nodeIdLong);
|
|
|
+ archiveTreeContract.setArchiveAutoSelect(1);
|
|
|
+ archiveTreeContract.setArchiveAutoType(archiveAutoType);
|
|
|
+ if(archiveAutoType==2){
|
|
|
+ //分类并卷规则 提交都是一个分类类型
|
|
|
+ archiveTreeContract.setArchiveAutoNodeId(archiveAutoNodeId);
|
|
|
+ }else{
|
|
|
+ //最高并卷规则 选择节点的ID
|
|
|
+ archiveTreeContract.setArchiveAutoNodeId(nodeIdLong);
|
|
|
+ }
|
|
|
+ baseMapper.updateById(archiveTreeContract);
|
|
|
+
|
|
|
+ //TODO 步骤2保存选择节点下所有子节点的立卷规则。注意立卷规则优先级覆盖原则。(单独组卷>分类并卷>最高并卷)
|
|
|
+ baseMapper.updateAllSonNodeIdsForArchiveAutoRule(archiveTreeContract);
|
|
|
+ }
|
|
|
+
|
|
|
+ return true;
|
|
|
+
|
|
|
+ }catch (Exception e){
|
|
|
+ e.printStackTrace();
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取节点规则查看
|
|
|
+ * @param id
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public Map<String, List<ArchiveTreeContractVO>> getArchiveAutoRule(Long id) {
|
|
|
+
|
|
|
+ Map<String, List<ArchiveTreeContractVO>> map= new HashMap<>();
|
|
|
+ List<ArchiveTreeContractVO> voList_1_3 = new ArrayList<>();//最高规则和单独组卷的tab显示节点及节点下有设置的节点(archive_auto_select=1)
|
|
|
+ List<ArchiveTreeContractVO> voList_2 = new ArrayList<>();//分类并卷的tab显示当前节点的相同分类节点
|
|
|
+
|
|
|
+
|
|
|
+ ArchiveTreeContract archiveTreeContract = baseMapper.selectById(id);
|
|
|
|
|
|
- Long archiveAutoNodeId=null;
|
|
|
+ //获取当前节点下所有设置的节点
|
|
|
+ List<ArchiveTreeContractVO> list=baseMapper.getAllSonNodeIdsForArchiveAutoRuleSelected(archiveTreeContract);
|
|
|
+ for(ArchiveTreeContractVO vo:list){
|
|
|
|
|
|
- //分类并卷规则的需要生成个随机数,作为同一个分类赋值archiveAutoNodeId
|
|
|
- if(archiveAutoType==2){
|
|
|
- double ran=(Math.random()*100000000) + 1;
|
|
|
- archiveAutoNodeId=Long.parseLong(System.currentTimeMillis()+""+ran);
|
|
|
}
|
|
|
- for(String nodeId:ids){
|
|
|
- long nodeIdLong = Long.parseLong(nodeId);
|
|
|
- ArchiveTreeContract archiveTreeContract = baseMapper.selectById(nodeIdLong);
|
|
|
- archiveTreeContract.setArchiveAutoSelect(1);
|
|
|
- archiveTreeContract.setArchiveAutoType(archiveAutoType);
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ return map;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public boolean updateArchiveAutoRule(Integer archiveAutoType, String nodeIds) {
|
|
|
+ //项目级不需要考虑是否为wbs节点,已经同步出来了都属于归档树节点,直接按归档树节点处理
|
|
|
+
|
|
|
+
|
|
|
+ String[] ids = nodeIds.split(",");
|
|
|
+ Set<String> idsSet=new HashSet<>(Arrays.asList(ids));
|
|
|
+
|
|
|
+ //判断修改的原来是否是分类并卷规则类型
|
|
|
+ List<ArchiveTreeContract> archiveTreeContracts_db=null;
|
|
|
+ long nodeId_0_Long = Long.parseLong(ids[0]);
|
|
|
+ ArchiveTreeContract archiveTreeContract0 = baseMapper.selectById(nodeId_0_Long);
|
|
|
+ Integer archiveAutoType_db = archiveTreeContract0.getArchiveAutoType();
|
|
|
+ if(archiveAutoType_db==2){
|
|
|
+ //获取分类ID
|
|
|
+ Long archiveAutoNodeId_db = archiveTreeContract0.getArchiveAutoNodeId();
|
|
|
+ //获取该分类下的设置选择节点 archiveAutoSelect=1的,不是范围内的所有子节点
|
|
|
+ archiveTreeContracts_db = baseMapper.selectList(Wrappers.<ArchiveTreeContract>lambdaQuery()
|
|
|
+ .eq(ArchiveTreeContract::getArchiveAutoNodeId, archiveAutoNodeId_db)
|
|
|
+ .eq(ArchiveTreeContract::getArchiveAutoSelect, 1)
|
|
|
+ );
|
|
|
+ }else{
|
|
|
+ //原来是最高,单独规则类型的
|
|
|
+
|
|
|
if(archiveAutoType==2){
|
|
|
- //分类并卷规则 提交都是一个分类类型
|
|
|
- archiveTreeContract.setArchiveAutoNodeId(archiveAutoNodeId);
|
|
|
- }else{
|
|
|
- //最高并卷规则 选择节点的ID
|
|
|
- archiveTreeContract.setArchiveAutoNodeId(nodeIdLong);
|
|
|
+ //修改成分类并卷
|
|
|
+ }
|
|
|
+ if(archiveAutoType==1){
|
|
|
+ //修改成最高
|
|
|
+ }
|
|
|
+ if(archiveAutoType==3){
|
|
|
+ //修改成单独
|
|
|
+ for(String nodeId:ids){
|
|
|
+ //步骤1更新选择节点的立卷规则。
|
|
|
+ long nodeIdLong = Long.parseLong(nodeId);
|
|
|
+ ArchiveTreeContract archiveTreeContract = baseMapper.selectById(nodeIdLong);
|
|
|
+ archiveTreeContract.setArchiveAutoSelect(1);
|
|
|
+ archiveTreeContract.setArchiveAutoType(archiveAutoType);
|
|
|
+ archiveTreeContract.setArchiveAutoNodeId(nodeIdLong);//最高/单独规则 选择节点的ID
|
|
|
+ baseMapper.updateById(archiveTreeContract);
|
|
|
+ //步骤2保存选择节点下所有子节点的立卷规则。注意立卷规则优先级覆盖原则。(单独组卷>分类并卷>最高并卷)
|
|
|
+ baseMapper.updateAllSonNodeIdsForArchiveAutoRule(archiveTreeContract);
|
|
|
+ }
|
|
|
}
|
|
|
- baseMapper.updateById(archiveTreeContract);
|
|
|
}
|
|
|
|
|
|
- //TODO 步骤2保存选择节点下所有子节点的立卷规则。注意立卷规则优先级覆盖原则。(单独组卷>分类并卷>最高并卷)
|
|
|
- /*
|
|
|
- * 测试覆盖
|
|
|
- * */
|
|
|
+
|
|
|
return false;
|
|
|
}
|
|
|
|