|
@@ -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下的文件夹名)
|