cr 3 napja
szülő
commit
9ba155d13a

+ 22 - 1
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreePrivateServiceImpl.java

@@ -3217,6 +3217,7 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
     }
 
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public boolean copyNode(List<String> leftIds, List<String> rightIds) {
         List<WbsTreePrivate> leftLists = baseMapper.selectAllChildNode(leftIds);
         for (String rightId : rightIds) {
@@ -3230,7 +3231,27 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
                     })
                     .collect(Collectors.toList());
             WbsTreePrivate rightWbsTreePrivate = baseMapper.getByPKeyId(Long.parseLong(rightId));
-
+            Integer rightNodeType = rightWbsTreePrivate.getNodeType();
+            if (rightNodeType == 1) {
+                rightNodeType=1;
+            }else if(rightNodeType==18){
+                rightNodeType=2;
+            }else {
+                rightNodeType=rightNodeType++;
+            }
+            for (WbsTreePrivate leftList : leftLists) {
+                Integer leftType=leftList.getNodeType();
+                if(leftType==1){
+                    leftType=1;
+                }else if(leftType==18){
+                    leftType=2;
+                }else {
+                    leftType=leftType++;
+                }
+                if(leftType<=rightNodeType){
+                    throw new ServiceException(leftList.getNodeName()+"不能复制到"+rightWbsTreePrivate.getNodeName()+",原因节点类型不能复制");
+                }
+            }
             // 找到leftLists中所有的根节点(没有在leftLists中作为子节点出现的节点)
             Set<Long> allPIds = workingList.stream()
                     .map(WbsTreePrivate::getPId)

+ 23 - 1
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreeServiceImpl.java

@@ -622,7 +622,29 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
 
             // 获取目标父节点信息
             WbsTree wbsTree = baseMapper.selectById(rightId);
-
+               Integer rightNodeType=wbsTree.getNodeType();
+            if (rightNodeType == 1) {
+                rightNodeType=1;
+            }else if(rightNodeType==18){
+                rightNodeType=2;
+            }else {
+                rightNodeType=rightNodeType++;
+            }
+            Set<Integer> typeSet = leftLists.stream().filter(o -> o.getType()==1).map(o -> o.getNodeType()).collect(Collectors.toSet());
+            for (Integer type : typeSet) {
+                Integer leftType;
+                if(type==1){
+                    leftType=1;
+                }else if(type==18){
+                    leftType=2;
+                }else {
+                    leftType=type+1;
+                }
+                if(leftType<=rightNodeType){
+                    WbsTree leftList = leftLists.stream().filter(f -> f.getNodeType().equals(type)).findFirst().get();
+                    throw new ServiceException("【"+leftList.getNodeName()+"】不能复制到【"+wbsTree.getNodeName()+"】,原因:节点类型不能复制");
+                }
+            }
             // 第三要求:重新构建整个树的id、parentId和ancestors
             rebuildTreeStructure(leftLists, rootNodes, rightId, wbsTree);