瀏覽代碼

扫描仓库删除节点

cr 1 周之前
父節點
當前提交
3efc831500

+ 4 - 0
blade-service/blade-archive/src/main/java/org/springblade/archive/mapper/ScanFolderMapper.java

@@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.apache.ibatis.annotations.Param;
 import org.springblade.archive.entity.ScanFolder;
 
+import java.util.List;
+
 public interface ScanFolderMapper extends BaseMapper<ScanFolder> {
 
     int exists(@Param("projectId") Long projectId, @Param("contractId") Long contractId, @Param("folderName") String folderName);
@@ -12,4 +14,6 @@ public interface ScanFolderMapper extends BaseMapper<ScanFolder> {
 
 
     Long getId(@Param("folderName") String folderName, @Param("contractId") Long contractId, @Param("projectId") Long projectId);
+
+    List<ScanFolder> selectAllChildren(@Param("id") Long id);
 }

+ 3 - 0
blade-service/blade-archive/src/main/java/org/springblade/archive/mapper/ScanFolderMapper.xml

@@ -9,4 +9,7 @@
     <select id="getId" resultType="java.lang.Long">
         select id from scan_folder where project_id = #{projectId} AND contract_id = #{contractId} AND folder_name = #{folderName}
     </select>
+    <select id="selectAllChildren" resultType="org.springblade.archive.entity.ScanFolder">
+        CALL GetScanFolderChildren(#{id})
+    </select>
 </mapper>

+ 20 - 3
blade-service/blade-archive/src/main/java/org/springblade/archive/service/impl/ScanFileServiceImpl.java

@@ -13,6 +13,7 @@ import org.springblade.archive.entity.ScanFolder;
 import org.springblade.archive.mapper.ScanFileMapper;
 import org.springblade.archive.mapper.ScanFolderMapper;
 import org.springblade.archive.service.ScanFileService;
+import org.springblade.archive.service.ScanFolderService;
 import org.springblade.archive.utils.FileUtils;
 import org.springblade.archive.vo.ScanFolderVO;
 import org.springblade.business.entity.ArchiveFile;
@@ -63,8 +64,7 @@ public class ScanFileServiceImpl  extends ServiceImpl<ScanFileMapper, ScanFile>
     private final ArchiveTreeContractClient archiveTreeContractClient;
     private final JdbcTemplate jdbcTemplate;
     private final ArchiveFileClient archiveFileClient;
-
-
+    private final ScanFolderService scanFolderService;
 
 
     @Override
@@ -248,10 +248,27 @@ public class ScanFileServiceImpl  extends ServiceImpl<ScanFileMapper, ScanFile>
         if(scanFiles.size()>0){
             throw new ServiceException("当前节点存在文件,无法删除");
         }
-        scanFolderMapper.deleteById(id);
+        List<ScanFolder> scanFolders = scanFolderMapper.selectAllChildren(id);
+        for (ScanFolder folder : scanFolders) {
+            scanFolderMapper.deleteById(folder.getId());
+            this.deleteScanFolderLinux(folder.getId());
+        }
         return true;
     }
 
+    private void deleteScanFolderLinux(Long id) {
+        ScanFolder scanFolder = scanFolderMapper.selectById(id);
+        if (scanFolder != null&&scanFolder.getFolderPath()!=null){
+            File folder = new File(scanFolder.getFolderPath());
+            if (folder.exists()) {
+                boolean deleted = folder.delete();
+                if (!deleted) {
+                    throw new ServiceException("删除文件夹失败");
+                }
+            }
+        }
+    }
+
     /**
      * 入口方法:扫描并入库指定contractId的所有文件夹
      * @param contractId 传入的合同ID(对应D:\PDF下的文件夹名)