Przeglądaj źródła

递归删除归档树和增加保护

huangtf 2 lat temu
rodzic
commit
75e70fe32b

+ 3 - 0
blade-service/blade-archive/src/main/java/org/springblade/archive/utils/ArchiveTreeUtil.java

@@ -45,6 +45,9 @@ public class ArchiveTreeUtil {
                 subTreeList.add(subTree);
 
             }else {
+                if (subTree.getChildren() == null || subTree.getChildren().size() == 0) {
+                    continue;
+                }
                 if (subTree.getChildren().get(0).getExtType() == 2) {
                     for (ArchiveTreeContractVO2 contractNode : subTree.getChildren()){
                         subTreeList.add(contractNode);

+ 7 - 7
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/ArchiveTreeController.java

@@ -106,16 +106,16 @@ public class ArchiveTreeController extends BladeController {
     @ApiOperationSupport(order = 5)
     @ApiOperation(value = "逻辑删除", notes = "传入id")
     public R remove(@ApiParam(value = "id", required = true) @RequestParam String id) {
-        List<ArchiveTree> archiveTrees = archiveTreeService.selectByParentIdOrId(id);
-        archiveTrees.forEach(archiveTree -> {
-            if (archiveTree.getParentId() == Long.parseLong(id)) {
-                throw new ServiceException("当前节点下存在子节点,删除失败");
-            }
+//        List<ArchiveTree> archiveTrees = archiveTreeService.selectByParentIdOrId(id);
+//        archiveTrees.forEach(archiveTree -> {
+//            if (archiveTree.getParentId() == Long.parseLong(id)) {
+//                throw new ServiceException("当前节点下存在子节点,删除失败");
+//            }
 //            if (archiveTree.getIsUploadFileDisplayConfigurationTree() == 1) {
 //                throw new ServiceException("当前节点被引用中,删除失败");
 //            }
-        });
-        return R.status(archiveTreeService.deleteLogic(Func.toLongList(id)));
+//        });
+        return R.status(archiveTreeService.deleteTree(Long.parseLong(id)));
     }
 
     /**

+ 3 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/service/IArchiveTreeService.java

@@ -64,4 +64,7 @@ public interface IArchiveTreeService extends BaseService<ArchiveTree> {
 	 * @return
 	 */
 	Map<String,String> removeArchiveAutoRule(Long nodeId,boolean iswbsNode,Long projectId);
+
+	//删除子树
+	boolean deleteTree(Long id);
 }

+ 25 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ArchiveTreeServiceImpl.java

@@ -1199,4 +1199,29 @@ public class ArchiveTreeServiceImpl extends BaseServiceImpl<ArchiveTreeMapper, A
         }
         return true;
     }
+
+    /**
+     * 删除子树
+     * @param id
+     * @return
+     */
+    public  boolean deleteTree(Long id) {
+        ArchiveTree dstNode = this.getById(id);
+        if (dstNode == null ) {
+            return false;
+        }
+
+        List<ArchiveTreeVO2> dstTrees = this.tree2(AuthUtil.getTenantId(), dstNode.getProjectId(),null, null,null,false);
+        if (dstTrees == null || dstTrees.size() == 0) {
+            return false;
+        }
+
+        ArchiveTreeVO2 subTree = ForestNodeMergerEx.getSubTree(dstTrees.get(0),id);
+
+        List<Long> ids = ForestNodeMergerEx.getChildrenIds(subTree);
+
+        ids.add(id);
+
+        return this.deleteLogic(ids);
+    }
 }