瀏覽代碼

删除打码文件。

huangtf 2 年之前
父節點
當前提交
de45d7c4f1

+ 39 - 5
blade-service/blade-archive/src/main/java/org/springblade/archive/service/impl/ArchivesAutoServiceImpl.java

@@ -304,11 +304,17 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 			List<String> removeFiles = new ArrayList<>();
 			for (ArchiveFile file : files) {
 				if (StringUtils.isNotBlank(file.getFileUrl())){
-					removeFiles.add(file.getFileUrl().substring(file.getFileUrl().lastIndexOf("upload")));
+					removeFiles.add(FileUtils.getAliYunSubUrl(file.getFileUrl()));
 				}
 				if (StringUtils.isNotBlank(file.getPdfFileUrl())){
-					removeFiles.add(file.getPdfFileUrl().substring(file.getPdfFileUrl().lastIndexOf("upload")));
+					removeFiles.add(FileUtils.getAliYunSubUrl(file.getFileUrl()));
 				}
+
+				//打码的也要删除
+				if (StringUtils.isNotBlank(file.getPdfPageUrl())){
+					removeFiles.add(FileUtils.getAliYunSubUrl(file.getPdfPageUrl()));
+				}
+
 			}
 			iossClient.removeFiles(removeFiles);
 			//删除文件
@@ -1114,12 +1120,22 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 
 		//更新
 		List<ArchiveFile> files = archiveFileClient.getAllArchiveFileByArchiveIds(strIds);
+		List<String> removeFiles = new ArrayList<>();
 		if (files != null && files.size() > 0) {
 
 			List<Long> fids = files.stream()
 					.map(ArchiveFile::getId)
 					.collect(Collectors.toList());
 			baseMapper.splitFiles(fids);
+
+			//删除打码文件
+			for (ArchiveFile file : files) {
+				//打码的也要删除
+				if (StringUtils.isNotBlank(file.getPdfPageUrl())){
+					removeFiles.add(FileUtils.getAliYunSubUrl(file.getPdfPageUrl()));
+				}
+			}
+			iossClient.removeFiles(removeFiles);
 		}
 
 		//删除案卷
@@ -1134,6 +1150,24 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 	public  boolean removeFiles(String ids) {
 		List<Long> fids = Func.toLongList(ids);
 		baseMapper.splitFiles(fids);
+
+		LambdaQueryWrapper<ArchiveFile> wrapper = Wrappers.lambdaQuery();
+		wrapper.in(ArchiveFile::getId, fids);
+
+		// 调用 listWrappers() 方法来获取符合条件的 ArchiveFile 对象列表
+		List<ArchiveFile> files = archiveFileClient.listWrappers(wrapper);
+		if (files != null && files.size() > 0) {
+			List<String> removeFiles = new ArrayList<>();
+			//删除打码文件
+			for (ArchiveFile file : files) {
+				//打码的也要删除
+				if (StringUtils.isNotBlank(file.getPdfPageUrl())){
+					removeFiles.add(FileUtils.getAliYunSubUrl(file.getPdfPageUrl()));
+				}
+			}
+			iossClient.removeFiles(removeFiles);
+		}
+
 		return true;
 	}
 
@@ -1188,7 +1222,7 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 			strNodeId  = nodeId.toString();
 		}
 
-		return archiveTreeContractFilter(archiveTreeContracts, treeCode, strNodeId);
+		return archiveTreeContractFilter(archiveTreeContracts, treeCode, strNodeId,contractId);
 	}
 
 	/**
@@ -1198,7 +1232,7 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 	 * @param nodeId 筛选条件:节点编号
 	 * @return 符合条件的档案列表
 	 */
-	public List<ArchiveTreeContract> archiveTreeContractFilter(List<ArchiveTreeContract> archiveTreeContracts, String treeCode, String nodeId) {
+	public List<ArchiveTreeContract> archiveTreeContractFilter(List<ArchiveTreeContract> archiveTreeContracts, String treeCode, String nodeId,Long contractId) {
 		List<ArchiveTreeContract> result = new ArrayList<>();
 
 		if (StringUtils.isEmpty(treeCode) && StringUtils.isEmpty(nodeId)) {
@@ -1211,7 +1245,7 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 					result.add(contract);
 				}
 			} else {
-				if (treeCode.equals(contract.getTreeCode())) {
+				if (treeCode.equals(contract.getTreeCode()) || contractId.toString().equals(contract.getTreeCode())) {
 					result.add(contract);
 				}
 			}

+ 18 - 0
blade-service/blade-archive/src/main/java/org/springblade/archive/utils/FileUtils.java

@@ -621,4 +621,22 @@ public class FileUtils {
         }
         return 99;
     }
+
+    public static String getSubUrl(String url, String separator) {
+        int startIndex = url.indexOf(separator) + separator.length();
+        return url.substring(startIndex);
+    }
+
+
+    public static String getAliYunSubUrl(String url) {
+        return getSubUrl(url,"aliyuncs.com/");
+    }
+
+    public static void main(String[] args) {
+        String url = "https://bladex-chongqing-info.oss-cn-hangzhou.aliyuncs.com/1578599210897772545/archive/ed4305eb971b062046c1ffd4e2da3c32-page1-1.pdf";
+        String url1 = "https://bladex-chongqing-info.oss-cn-hangzhou.aliyuncs.com/upload/ed4305eb971b062046c1ffd4e2da3c32-page1-1.pdf";
+
+        System.out.println(getAliYunSubUrl(url));
+        System.out.println(getAliYunSubUrl(url1));
+    }
 }

+ 19 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ContractInfoServiceImpl.java

@@ -281,6 +281,25 @@ public class ContractInfoServiceImpl extends BaseServiceImpl<ContractInfoMapper,
     @Override
     public List<WbsTreeContractVO6> tree8(String wbsId, String projectId, String contractId) {
         List<WbsTreeContractVO6> wbsTreeContractVOS = baseMapper.tree6(Long.parseLong(wbsId), Long.parseLong(projectId), Long.parseLong(contractId));
+
+        //进行id去重复操作,删掉id相同且oldid不为空的,用于规避哪些错误配置的数据
+        Map<Long, WbsTreeContractVO6> map = new LinkedHashMap<>(); // 创建一个Map用于存储已出现过的元素
+
+        for (WbsTreeContractVO6 vo : wbsTreeContractVOS) {
+            if (vo.getOldId() != null && map.containsKey(vo.getId())) {
+                // 当oldId不为空且id已经存在于map中时,替换原有的元素
+                map.replace(vo.getId(), vo);
+            } else {
+                // 否则将该元素加入到map中
+                map.put(vo.getId(), vo);
+            }
+        }
+
+        // 将去重后的元素重新放入原有的链表中
+        wbsTreeContractVOS.clear();
+        wbsTreeContractVOS.addAll(map.values());
+
+
         List<WbsTreeContractVO6> wbsTreeVO2s = ForestNodeMerger.merge(wbsTreeContractVOS);
         List<WbsTreeContractVO6> list = wbsTreeVO2s.stream().filter(f -> f.getParentId() == 0L).collect(Collectors.toList());
         return list;