Ver Fonte

档案扫描

cr há 2 semanas atrás
pai
commit
6bbb04082f

+ 15 - 0
blade-service-api/blade-archive-api/src/main/java/org/springblade/archive/vo/ScanFolderVO.java

@@ -0,0 +1,15 @@
+package org.springblade.archive.vo;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.springblade.archive.entity.ScanFolder;
+
+import java.util.List;
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class ScanFolderVO extends ScanFolder {
+    private Boolean hasChildren;
+    private List<ScanFolderVO> childs;
+}

+ 38 - 0
blade-service/blade-archive/src/main/java/org/springblade/archive/controller/ScanFileController.java

@@ -1,18 +1,24 @@
 package org.springblade.archive.controller;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.AllArgsConstructor;
+import org.springblade.archive.entity.ScanFile;
 import org.springblade.archive.entity.ScanFolder;
 import org.springblade.archive.service.ScanFileService;
 import org.springblade.archive.service.ScanFolderService;
+import org.springblade.archive.vo.ScanFolderVO;
+import org.springblade.core.mp.support.Query;
 import org.springblade.core.tool.api.R;
 import org.springblade.manager.entity.ContractInfo;
+import org.springblade.meter.vo.InterimPayCertificateVO;
 import org.springframework.jdbc.core.BeanPropertyRowMapper;
 import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
@@ -111,4 +117,36 @@ public class ScanFileController {
             }
         }
     }
+
+    @GetMapping("/getScanFolder")
+    @ApiOperation("获取扫描文件夹")
+    public R<List<ScanFolderVO>> getScanFolder(Long contractId, Long projectId){
+        List<ScanFolderVO> list = scanFileService.getScanFolder(contractId,projectId);
+        return R.data( list);
+    }
+
+    @GetMapping("/getScanFile")
+    @ApiOperation("获取扫描文件")
+    public R<IPage<ScanFile>> getScanFile(Long contractId, Long projectId, Long folderId, Query query){
+        IPage<ScanFile> page=scanFileService.getScanFile(contractId,projectId,folderId,query);
+        return R.data(page);
+    }
+    @GetMapping("/getDetil")
+    @ApiOperation("获取扫描文件详情")
+    public R<ScanFile> getDetil(Long id){
+        return R.data(scanFileService.getById(id));
+    }
+    @PostMapping("/updateScanFile")
+    @ApiOperation("更新扫描文件")
+    public R updateScanFile(List<ScanFile> scanFiles){
+        return R.data(scanFileService.updateBatchById(scanFiles));
+    }
+
+    @GetMapping("/deleteScanFile")
+    @ApiOperation("删除扫描文件")
+    public R deleteScanFile(List<String> fileNames){
+        return R.success(scanFileService.deleteScanFile(fileNames));
+    }
+
+
 }

+ 5 - 0
blade-service/blade-archive/src/main/java/org/springblade/archive/mapper/ScanFileMapper.java

@@ -1,8 +1,10 @@
 package org.springblade.archive.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import feign.Param;
 import org.springblade.archive.entity.ScanFile;
+import org.springblade.archive.entity.ScanFolder;
 
 import java.util.List;
 
@@ -16,4 +18,7 @@ public interface ScanFileMapper extends BaseMapper<ScanFile> {
 
     Integer selectMaxSort(@Param("contractId") Long contractId, @Param("projectId") Long projectId, @Param("folderId") Long folderId);
 
+    List<ScanFolder> getScanFolder(@Param("contractId") Long contractId, @Param("projectId") Long projectId);
+
+    IPage<ScanFile> getScanFile(IPage<ScanFile> page, @Param("contractId") Long contractId, @Param("projectId") Long projectId, @Param("folderId") Long folderId);
 }

+ 6 - 0
blade-service/blade-archive/src/main/java/org/springblade/archive/mapper/ScanFileMapper.xml

@@ -10,4 +10,10 @@
     <select id="selectMaxSort" resultType="java.lang.Integer">
         select MAX(sort) FROM scan_file WHERE project_id = #{projectId} AND contract_id = #{contractId} And folder_id = #{folderId}
     </select>
+    <select id="getScanFolder" resultType="org.springblade.archive.entity.ScanFolder">
+        select * from scan_folder where project_id = #{projectId} and contract_id = #{contractId} and is_deleted = 0
+    </select>
+    <select id="getScanFile" resultType="org.springblade.archive.entity.ScanFile">
+        select * from scan_file where project_id = #{projectId} and contract_id = #{contractId} and folder_id = #{folderId} and is_deleted = 0
+    </select>
 </mapper>

+ 11 - 0
blade-service/blade-archive/src/main/java/org/springblade/archive/service/ScanFileService.java

@@ -1,9 +1,14 @@
 package org.springblade.archive.service;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
 import org.springblade.archive.entity.ScanFile;
+import org.springblade.archive.vo.ScanFolderVO;
+import org.springblade.core.mp.support.Query;
 import org.springblade.core.tool.api.R;
 
+import java.util.List;
+
 
 public interface ScanFileService extends IService<ScanFile> {
     R scanAndSaveFolder(Long contractId, Long projectId);
@@ -13,4 +18,10 @@ public interface ScanFileService extends IService<ScanFile> {
     void sortNumber(Long contractId, Long projectId);
 
     void scanAndSave(Long contractId,Long projectId);
+
+    List<ScanFolderVO> getScanFolder(Long contractId, Long projectId);
+
+    IPage<ScanFile> getScanFile(Long contractId, Long projectId, Long folderId, Query query);
+
+    String deleteScanFile(List<String> fileNames);
 }

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

@@ -1,6 +1,8 @@
 package org.springblade.archive.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import lombok.AllArgsConstructor;
 import org.springblade.archive.entity.ScanFile;
@@ -9,10 +11,13 @@ import org.springblade.archive.mapper.ScanFileMapper;
 import org.springblade.archive.mapper.ScanFolderMapper;
 import org.springblade.archive.service.ScanFileService;
 import org.springblade.archive.utils.FileUtils;
+import org.springblade.archive.vo.ScanFolderVO;
 import org.springblade.common.utils.SnowFlakeUtil;
+import org.springblade.core.mp.support.Query;
 import org.springblade.core.oss.model.BladeFile;
 import org.springblade.core.tool.api.R;
 import org.springblade.resource.feign.NewIOSSClient;
+import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
 import java.io.File;
 import java.io.IOException;
@@ -24,9 +29,7 @@ import java.nio.file.attribute.BasicFileAttributes;
 import java.security.DigestInputStream;
 import java.security.MessageDigest;
 import java.text.SimpleDateFormat;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.stream.Collectors;
 
 
@@ -54,6 +57,59 @@ public class ScanFileServiceImpl  extends ServiceImpl<ScanFileMapper, ScanFile>
         sortNumber(contractId, projectId);
     }
 
+    @Override
+    public List<ScanFolderVO> getScanFolder(Long contractId, Long projectId) {
+        List<ScanFolder> list = scanFileMapper.getScanFolder(contractId,projectId);
+        // 将ScanFolder转换为ScanFolderVO
+        List<ScanFolderVO> voList = list.stream().map(scanFolder -> {
+            ScanFolderVO vo = new ScanFolderVO();
+            // 复制属性
+            BeanUtils.copyProperties(scanFolder, vo);
+            // 初始化子节点列表
+            vo.setChilds(new ArrayList<>());
+            // 默认为没有子节点,后续会重新判断
+            vo.setHasChildren(false);
+            return vo;
+        }).collect(Collectors.toList());
+
+        // 构建父子关系
+        Map<Long, ScanFolderVO> voMap = voList.stream()
+                .collect(Collectors.toMap(ScanFolderVO::getId, v -> v));
+
+        List<ScanFolderVO> result = new ArrayList<>();
+
+        for (ScanFolderVO vo : voList) {
+            Long parentId = vo.getParentId();
+            if (parentId == null || parentId == 0) {
+                // 没有父节点的作为根节点
+                result.add(vo);
+            } else {
+                // 有父节点的添加到对应父节点的子列表中
+                ScanFolderVO parent = voMap.get(parentId);
+                if (parent != null) {
+                    parent.getChilds().add(vo);
+                    parent.setHasChildren(true); // 标记父节点有子节点
+                }
+            }
+        }
+
+        return result;
+
+    }
+
+    @Override
+    public IPage<ScanFile> getScanFile(Long contractId, Long projectId, Long folderId, Query query) {
+        IPage<ScanFile> page = new Page<>(query.getCurrent(), query.getSize());
+        page=baseMapper.getScanFile(page,contractId,projectId,folderId);
+        return page;
+    }
+
+    @Override
+    public String deleteScanFile(List<String>fileNames) {
+        newIOSSClient.removeFiles(fileNames);
+        return "";
+    }
+
     /**
      * 入口方法:扫描并入库指定contractId的所有文件夹
      * @param contractId 传入的合同ID(对应D:\PDF下的文件夹名)