Browse Source

档案扫描移动

cr 2 weeks ago
parent
commit
c30ce7dbf3

+ 2 - 0
blade-service-api/blade-archive-api/src/main/java/org/springblade/archive/entity/ScanFile.java

@@ -47,4 +47,6 @@ public class ScanFile {
     private String responsible;
     @ApiModelProperty(value = "是否删除")
     private Integer isDeleted;
+    @ApiModelProperty(value = "是否移动")
+    private Integer isMove;
 }

+ 3 - 0
blade-service-api/blade-business-api/src/main/java/org/springblade/business/feign/ArchiveFileClient.java

@@ -175,4 +175,7 @@ public interface ArchiveFileClient {
 
     @PostMapping(API_PREFIX + "/getAllArchiveFileByIds")
     List<ArchiveFile> getAllArchiveFileByIds(@RequestBody List<String> strList);
+
+    @PostMapping(API_PREFIX + "/saveBatchArchiveFile")
+    void saveBatchArchiveFile(@RequestBody List<ArchiveFile> list);
 }

+ 9 - 2
blade-service/blade-archive/src/main/java/org/springblade/archive/controller/ScanFileController.java

@@ -116,8 +116,8 @@ public class ScanFileController {
     @GetMapping("/getScanFile")
     @ApiOperation("获取扫描文件")
     @ApiImplicitParams({@ApiImplicitParam(name = "contractId", value = "合同ID"),@ApiImplicitParam(name = "projectId", value = "项目ID"),@ApiImplicitParam(name = "folderId", value = "文件夹ID"),@ApiImplicitParam(name = "query", value = "查询参数")})
-    public R<IPage<ScanFile>> getScanFile(Long contractId, Long projectId, Long folderId, Query query){
-        IPage<ScanFile> page=scanFileService.getScanFile(contractId,projectId,folderId,query);
+    public R<IPage<ScanFile>> getScanFile(Long contractId, Long projectId, Long folderId, Query query,Integer move){
+        IPage<ScanFile> page=scanFileService.getScanFile(contractId,projectId,folderId,query,move);
         return R.data(page);
     }
     @GetMapping("/getDetil")
@@ -165,6 +165,13 @@ public class ScanFileController {
        return R.status(scanFileService.autoRecognize(ids));
     }
 
+    @PostMapping("/moveScanFile")
+    @ApiOperation("移动文件")
+    @ApiImplicitParams({@ApiImplicitParam(name = "ids", value = "文件IDs"),@ApiImplicitParam(name = "nodeId", value = "目标文件夹ID") })
+    public R moveScanFile(@RequestBody List<Long>ids,Long nodeId){
+        return R.status(scanFileService.moveScanFile(ids,nodeId));
+    }
+
 
 
 }

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

@@ -20,7 +20,7 @@ public interface ScanFileMapper extends BaseMapper<ScanFile> {
 
     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);
+    IPage<ScanFile> getScanFile(IPage<ScanFile> page, @Param("contractId") Long contractId, @Param("projectId") Long projectId, @Param("folderId") Long folderId,@Param("move")Integer  move);
 
     void removeScan(@Param("longList") List<Long> longList);
 }

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

@@ -22,5 +22,8 @@
     </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
+        <if test="move != null and move !=''">
+            and is_move = #{move}
+        </if>
     </select>
 </mapper>

+ 3 - 1
blade-service/blade-archive/src/main/java/org/springblade/archive/service/ScanFileService.java

@@ -21,9 +21,11 @@ public interface ScanFileService extends IService<ScanFile> {
 
     List<ScanFolderVO> getScanFolder(Long contractId, Long projectId);
 
-    IPage<ScanFile> getScanFile(Long contractId, Long projectId, Long folderId, Query query);
+    IPage<ScanFile> getScanFile(Long contractId, Long projectId, Long folderId, Query query,Integer move);
 
     String deleteScanFile(String ids);
 
     Boolean autoRecognize(String ids);
+
+    boolean moveScanFile(List<Long> ids, Long nodeId);
 }

+ 58 - 4
blade-service/blade-archive/src/main/java/org/springblade/archive/service/impl/ScanFileServiceImpl.java

@@ -4,7 +4,9 @@ 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 io.swagger.annotations.ApiModelProperty;
 import lombok.AllArgsConstructor;
+import org.springblade.archive.entity.ArchivesAuto;
 import org.springblade.archive.entity.ScanFile;
 import org.springblade.archive.entity.ScanFolder;
 import org.springblade.archive.mapper.ScanFileMapper;
@@ -12,14 +14,19 @@ 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.business.entity.ArchiveFile;
+import org.springblade.business.feign.ArchiveFileClient;
 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.core.tool.utils.Func;
 import org.springblade.core.tool.utils.StringUtil;
+import org.springblade.manager.entity.ArchiveTreeContract;
+import org.springblade.manager.feign.ArchiveTreeContractClient;
 import org.springblade.resource.feign.NewIOSSClient;
 import org.springframework.beans.BeanUtils;
+import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.stereotype.Service;
 import java.io.File;
 import java.io.IOException;
@@ -31,6 +38,7 @@ import java.nio.file.attribute.BasicFileAttributes;
 import java.security.DigestInputStream;
 import java.security.MessageDigest;
 import java.text.SimpleDateFormat;
+import java.time.LocalDateTime;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -50,6 +58,10 @@ public class ScanFileServiceImpl  extends ServiceImpl<ScanFileMapper, ScanFile>
     private final ScanFolderMapper scanFolderMapper;
     private final ScanFileMapper scanFileMapper;
     private final NewIOSSClient newIOSSClient;
+    private final ArchiveTreeContractClient archiveTreeContractClient;
+    private final JdbcTemplate jdbcTemplate;
+    private final ArchiveFileClient archiveFileClient;
+
 
 
 
@@ -104,9 +116,9 @@ public class ScanFileServiceImpl  extends ServiceImpl<ScanFileMapper, ScanFile>
     }
 
     @Override
-    public IPage<ScanFile> getScanFile(Long contractId, Long projectId, Long folderId, Query query) {
+    public IPage<ScanFile> getScanFile(Long contractId, Long projectId, Long folderId, Query query,Integer move) {
         IPage<ScanFile> page = new Page<>(query.getCurrent(), query.getSize());
-        page=baseMapper.getScanFile(page,contractId,projectId,folderId);
+        page=baseMapper.getScanFile(page,contractId,projectId,folderId,move);
         return page;
     }
 
@@ -124,10 +136,51 @@ public class ScanFileServiceImpl  extends ServiceImpl<ScanFileMapper, ScanFile>
     public Boolean autoRecognize(String ids) {
         List<Long> longList = Func.toLongList(ids);
         List<ScanFile> scanFiles = baseMapper.selectList(new LambdaQueryWrapper<>(ScanFile.class).in(ScanFile::getId, longList));
-
         return true;
     }
 
+
+    @Override
+    public boolean moveScanFile(List<Long> ids, Long nodeId) {
+        try {
+            List<ScanFile> scanFiles = baseMapper.selectList(new LambdaQueryWrapper<>(ScanFile.class).in(ScanFile::getId, ids));
+            ArchiveTreeContract contract = archiveTreeContractClient.getArchiveTreeContractById(nodeId);
+            String sql="select IFNULL(max(sort),0) from u_archive_file where project_id="+contract.getProjectId()+" and contract_id="+contract.getContractId()+" and is_deleted=0";
+            Integer sort = jdbcTemplate.queryForObject(sql, Integer.class);
+            List<ArchiveFile>list=new ArrayList<>();
+            if(contract!=null){
+                for (ScanFile file : scanFiles) {
+                    ArchiveFile archiveFile = new ArchiveFile();
+                    archiveFile.setId(SnowFlakeUtil.getId());
+                    archiveFile.setProjectId(contract.getProjectId()+"");
+                    archiveFile.setContractId(contract.getContractId()+"");
+                    archiveFile.setNodeId(nodeId+"");
+                    archiveFile.setFileNumber(file.getFileNum());
+                    archiveFile.setFileName(file.getFileName());
+                    archiveFile.setFileTime(file.getFileDate());
+                    archiveFile.setFileUrl(file.getOssUrl());
+                    archiveFile.setPdfFileUrl(file.getOssUrl());
+                    archiveFile.setFilePage(file.getFileSize()!=null?Integer.parseInt(file.getFileSize()):0);
+                    archiveFile.setIsApproval(0);
+                    archiveFile.setIsNeedCertification(0);
+                    archiveFile.setIsCertification(0);
+                    archiveFile.setDutyUser(file.getResponsible());
+                    archiveFile.setIsArchive(0);
+                    archiveFile.setSourceType(2);
+                    archiveFile.setIsElement(0);
+                    archiveFile.setClassify(contract.getClassify());
+                    archiveFile.setNodeTreeStructure(contract.getTreeStructure());
+                    archiveFile.setSort(sort++);
+                    list.add(archiveFile);
+                }
+                archiveFileClient.saveBatchArchiveFile(list);
+            }
+            return true;
+        }catch (Exception e){
+            return false;
+        }
+    }
+
     /**
      * 入口方法:扫描并入库指定contractId的所有文件夹
      * @param contractId 传入的合同ID(对应D:\PDF下的文件夹名)
@@ -259,7 +312,7 @@ public class ScanFileServiceImpl  extends ServiceImpl<ScanFileMapper, ScanFile>
 
     @Override
     public void sortNumber(Long contractId, Long projectId) {
-        List<ScanFile> scanFiles = scanFileMapper.selectList(new LambdaQueryWrapper<ScanFile>().eq(ScanFile::getContractId, contractId).eq(ScanFile::getProjectId, projectId).isNull(ScanFile::getSort).isNull(ScanFile::getDigitalNum).orderByDesc(ScanFile::getFileDate));
+        List<ScanFile> scanFiles = scanFileMapper.selectList(new LambdaQueryWrapper<ScanFile>().eq(ScanFile::getContractId, contractId).eq(ScanFile::getProjectId, projectId).isNull(ScanFile::getSort).isNull(ScanFile::getDigitalNum).orderByAsc(ScanFile::getCreatTime));
         Integer maxDigitalNum=scanFileMapper.selectMaxDigitalNum(contractId,projectId);
         if(maxDigitalNum==null||maxDigitalNum<1){
             maxDigitalNum=0;
@@ -359,6 +412,7 @@ public class ScanFileServiceImpl  extends ServiceImpl<ScanFileMapper, ScanFile>
                     filePath,
                     bladeFile.getLink(),//OSS路径
                     null,//负责人
+                    0,
                     0
             );
             // 入库

+ 5 - 0
blade-service/blade-business/src/main/java/org/springblade/business/feignClient/ArchiveFileClientImpl.java

@@ -455,4 +455,9 @@ public class ArchiveFileClientImpl implements ArchiveFileClient {
         return fileMapper.getAllArchiveFileByIds(strList);
     }
 
+    @Override
+    public void saveBatchArchiveFile(List<ArchiveFile> list) {
+        iArchiveFileService.saveBatch(list);
+    }
+
 }