Browse Source

递归当前目录以及子目录文件

yzc 1 year ago
parent
commit
c06983504c

+ 9 - 0
hx-oa/src/main/java/com/fjhx/oa/controller/netdisk/NetdiskController.java

@@ -3,6 +3,7 @@ package com.fjhx.oa.controller.netdisk;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fjhx.oa.entity.netdisk.dto.NetdiskDto;
 import com.fjhx.oa.entity.netdisk.dto.NetdiskSelectDto;
+import com.fjhx.oa.entity.netdisk.po.Netdisk;
 import com.fjhx.oa.entity.netdisk.vo.NetdiskVo;
 import com.fjhx.oa.service.netdisk.NetdiskService;
 import com.ruoyi.common.core.domain.BaseSelectDto;
@@ -44,6 +45,14 @@ public class NetdiskController {
     }
 
     /**
+     * 获取目录以及子目录文件
+     */
+    @PostMapping("/getFileList")
+    public List<Netdisk> getFileList(@RequestBody NetdiskDto dto) {
+        return netdiskService.getFileList(dto);
+    }
+
+    /**
      * 网盘明细
      */
     @PostMapping("/detail")

+ 12 - 7
hx-oa/src/main/java/com/fjhx/oa/service/netdisk/NetdiskService.java

@@ -1,11 +1,11 @@
 package com.fjhx.oa.service.netdisk;
 
-import com.fjhx.oa.entity.netdisk.po.Netdisk;
-import com.ruoyi.common.core.service.BaseService;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.fjhx.oa.entity.netdisk.vo.NetdiskVo;
-import com.fjhx.oa.entity.netdisk.dto.NetdiskSelectDto;
 import com.fjhx.oa.entity.netdisk.dto.NetdiskDto;
+import com.fjhx.oa.entity.netdisk.dto.NetdiskSelectDto;
+import com.fjhx.oa.entity.netdisk.po.Netdisk;
+import com.fjhx.oa.entity.netdisk.vo.NetdiskVo;
+import com.ruoyi.common.core.service.BaseService;
 
 import java.util.List;
 
@@ -27,9 +27,14 @@ public interface NetdiskService extends BaseService<Netdisk> {
 
     List<NetdiskVo> tree();
 
-        /**
-         * 网盘明细
-         */
+    /**
+     * 递归文件夹获取文件夹下的所有文件以及子文件夹下的文件
+     */
+    List<Netdisk> getFileList(NetdiskDto dto);
+
+    /**
+     * 网盘明细
+     */
     NetdiskVo detail(Long id);
 
     /**

+ 36 - 3
hx-oa/src/main/java/com/fjhx/oa/service/netdisk/impl/NetdiskServiceImpl.java

@@ -26,7 +26,9 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.List;
+import java.util.Objects;
 import java.util.stream.Collectors;
 
 
@@ -69,15 +71,46 @@ public class NetdiskServiceImpl extends ServiceImpl<NetdiskMapper, Netdisk> impl
         return treeRecursion(list,-1l);
     }
 
-    private List<NetdiskVo> treeRecursion(List<Netdisk> list, Long id){
+    private List<NetdiskVo> treeRecursion(List<Netdisk> list, Long id) {
         List<Netdisk> netdiskList = list.stream().filter(f -> f.getParentFolderId().equals(id)).collect(Collectors.toList());
         List<NetdiskVo> netdiskVos = BeanUtil.copyToList(netdiskList, NetdiskVo.class);
-        for (NetdiskVo netdisk :netdiskVos){
-            netdisk.setNetdiskList(treeRecursion(list,netdisk.getId()));
+        for (NetdiskVo netdisk : netdiskVos) {
+            netdisk.setNetdiskList(treeRecursion(list, netdisk.getId()));
         }
         return netdiskVos;
     }
 
+    /**
+     * 递归文件夹获取文件夹下的所有文件以及子文件夹下的文件
+     */
+    @Override
+    public List<Netdisk> getFileList(NetdiskDto dto) {
+        Long parentFolderId = dto.getParentFolderId();
+        if (ObjectUtil.isEmpty(parentFolderId)) {
+            parentFolderId = -1L;//不传默认根目录
+        }
+        return fileRecursion(Arrays.asList(parentFolderId));
+    }
+
+    /**
+     * 递归文件夹获取文件夹下的所有文件以及子文件夹下的文件
+     */
+    private List<Netdisk> fileRecursion(List<Long> parentFolderIds) {
+        List<Netdisk> list = this.list(q -> q.in(Netdisk::getParentFolderId, parentFolderIds));
+
+        //获取文件列表
+        List<Netdisk> collect = list.stream().filter(item -> Objects.equals(item.getType(), 2)).collect(Collectors.toList());
+
+        //递归文件夹
+        List<Long> parentFolderIds1 = list.stream().filter(item -> Objects.equals(item.getType(), 1)).map(Netdisk::getId).collect(Collectors.toList());
+        if (ObjectUtil.isNotEmpty(parentFolderIds1)) {
+            List<Netdisk> netdiskList = fileRecursion(parentFolderIds1);
+            collect.addAll(netdiskList);
+        }
+
+        return collect;
+    }
+
     @Override
     public NetdiskVo detail(Long id) {
         Netdisk Netdisk = this.getById(id);