|
|
@@ -6,17 +6,20 @@ 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.dto.AddScanFileDto;
|
|
|
import org.springblade.archive.entity.ArchivesAuto;
|
|
|
import org.springblade.archive.entity.ScanFile;
|
|
|
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;
|
|
|
import org.springblade.business.feign.ArchiveFileClient;
|
|
|
import org.springblade.common.utils.SnowFlakeUtil;
|
|
|
+import org.springblade.core.log.exception.ServiceException;
|
|
|
import org.springblade.core.mp.support.Query;
|
|
|
import org.springblade.core.oss.model.BladeFile;
|
|
|
import org.springblade.core.tool.api.R;
|
|
|
@@ -61,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
|
|
|
@@ -97,6 +99,8 @@ public class ScanFileServiceImpl extends ServiceImpl<ScanFileMapper, ScanFile>
|
|
|
List<ScanFolderVO> result = new ArrayList<>();
|
|
|
|
|
|
for (ScanFolderVO vo : voList) {
|
|
|
+ List<ScanFolder> scanFolders = scanFolderMapper.selectAllChildren(vo.getId());
|
|
|
+ vo.setIsRemove(scanFolders.isEmpty());
|
|
|
Long parentId = vo.getParentId();
|
|
|
if (parentId == null || parentId == 0) {
|
|
|
// 没有父节点的作为根节点
|
|
|
@@ -110,7 +114,6 @@ public class ScanFileServiceImpl extends ServiceImpl<ScanFileMapper, ScanFile>
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
return result;
|
|
|
|
|
|
}
|
|
|
@@ -126,10 +129,10 @@ public class ScanFileServiceImpl extends ServiceImpl<ScanFileMapper, ScanFile>
|
|
|
public String deleteScanFile(String ids) {
|
|
|
List<Long> longList = Func.toLongList(ids);
|
|
|
List<ScanFile> scanFiles = baseMapper.selectList(new LambdaQueryWrapper<>(ScanFile.class).in(ScanFile::getId, longList));
|
|
|
- List<String> fileNames = scanFiles.stream().filter(o-> !StringUtil.isBlank(o.getFileName())).map(o -> o.getFileName()).collect(Collectors.toList());
|
|
|
- baseMapper.removeScan(longList);
|
|
|
+ List<String> fileNames = scanFiles.stream().filter(o-> !StringUtil.isBlank(o.getOssUrl())).map(o -> (FileUtils.getAliYunSubUrl(o.getOssUrl()))).collect(Collectors.toList());
|
|
|
+ baseMapper.removeScan(longList,scanFiles.get(0).getProjectId(),scanFiles.get(0).getContractId());
|
|
|
newIOSSClient.removeFiles(fileNames);
|
|
|
- return "";
|
|
|
+ return "删除成功";
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
@@ -185,6 +188,95 @@ public class ScanFileServiceImpl extends ServiceImpl<ScanFileMapper, ScanFile>
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public boolean addScanFolder(Long projectId, Long contractId, Long parentId, String forderName) {
|
|
|
+ ScanFolder scanFolder = new ScanFolder();
|
|
|
+ scanFolder.setId(SnowFlakeUtil.getId());
|
|
|
+ scanFolder.setProjectId(projectId);
|
|
|
+ scanFolder.setContractId(contractId);
|
|
|
+ scanFolder.setFolderName(forderName);
|
|
|
+ scanFolder.setParentId(parentId);
|
|
|
+ scanFolder.setIsDeleted(0);
|
|
|
+// String folderPath="";
|
|
|
+// if(parentId!=0){
|
|
|
+// ScanFolder fatherFolder = scanFolderMapper.selectById(parentId);
|
|
|
+// if (fatherFolder!=null){
|
|
|
+// String fatherPath = fatherFolder.getFolderPath();
|
|
|
+// folderPath=fatherPath+"/"+forderName;
|
|
|
+// }
|
|
|
+// }else {
|
|
|
+// folderPath=ROOT_PREFIX+"/"+contractId+"/"+forderName;
|
|
|
+// }
|
|
|
+// File folder = new File(folderPath);
|
|
|
+// if (!folder.exists()) {
|
|
|
+// boolean created = folder.mkdirs();
|
|
|
+// if (!created) {
|
|
|
+// throw new ServiceException("创建文件夹失败");
|
|
|
+// }
|
|
|
+// }
|
|
|
+// scanFolder.setFolderPath(folderPath);
|
|
|
+ int insert = scanFolderMapper.insert(scanFolder);
|
|
|
+ return insert == 1;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public boolean addScanFile(List<AddScanFileDto>list) {
|
|
|
+ List<ScanFile>fileList=new ArrayList<>();
|
|
|
+ Integer digitalNum = baseMapper.selectMaxDigitalNum(list.get(0).getContractId(), list.get(0).getProjectId());
|
|
|
+ if(digitalNum==null||digitalNum<1){
|
|
|
+ digitalNum=0;
|
|
|
+ }
|
|
|
+ Integer sort = baseMapper.selectMaxSort(list.get(0).getContractId(), list.get(0).getProjectId(), list.get(0).getForderId());
|
|
|
+ if(sort==null||sort<1){
|
|
|
+ sort=0;
|
|
|
+ }
|
|
|
+ for (AddScanFileDto dto : list) {
|
|
|
+ ScanFile file = new ScanFile();
|
|
|
+ BeanUtils.copyProperties(dto,file);
|
|
|
+ if(dto.getFileName().indexOf(".")>0&&dto.getFileName().indexOf("pdf")>0){
|
|
|
+ file.setFileName(dto.getFileName().substring(0,dto.getFileName().lastIndexOf(".")));
|
|
|
+ }else {
|
|
|
+ file.setFileName(dto.getFileName());
|
|
|
+ }
|
|
|
+ file.setFileNameSuffix(dto.getFileName());
|
|
|
+ file.setId(SnowFlakeUtil.getId());
|
|
|
+ file.setDigitalNum(++digitalNum);
|
|
|
+ file.setSort(++sort);
|
|
|
+ file.setIsDeleted(0);
|
|
|
+ file.setIsMove(0);
|
|
|
+ fileList.add(file);
|
|
|
+ }
|
|
|
+ return this.saveBatch(fileList);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public boolean deleteScanFolder(Long id) {
|
|
|
+ List<ScanFolder> scanFolders = scanFolderMapper.selectAllChildren(id);
|
|
|
+ List<Long> longList = scanFolders.stream().map(ScanFolder::getId).collect(Collectors.toList());
|
|
|
+ List<ScanFile> scanFiles = baseMapper.selectList(new LambdaQueryWrapper<>(ScanFile.class).in(ScanFile::getFolderId, longList));
|
|
|
+ if(!scanFiles.isEmpty()){
|
|
|
+ throw new ServiceException("当前节点或子节点存在文件,无法删除");
|
|
|
+ }
|
|
|
+ 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下的文件夹名)
|
|
|
@@ -409,7 +501,8 @@ public class ScanFileServiceImpl extends ServiceImpl<ScanFileMapper, ScanFile>
|
|
|
null,//序号
|
|
|
null,//数字编号
|
|
|
null,//文件编号
|
|
|
- fileName,
|
|
|
+ fileName.substring(0,fileName.lastIndexOf(".")),//文件题名
|
|
|
+ fileName,//文件名
|
|
|
pdfNum,//文件页数
|
|
|
null,//文件日期
|
|
|
createTime,
|