huangtf 1 anno fa
parent
commit
6ede3b4f35

+ 75 - 1
blade-service/blade-archive/src/main/java/org/springblade/archive/service/impl/ArchivesAutoServiceImpl.java

@@ -1801,7 +1801,7 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 		for (List<ArchiveTreeContract> subList: subGroupedList) {
 
 			//根据 authFilter函数过滤
-			subList = authFilter(subList,contractId,nodeId);
+			subList = authFilterNum(subList,contractId,nodeId);
 			List<Long> ids = subList.stream()
 					.map(ArchiveTreeContract::getId)
 					.collect(Collectors.toList());
@@ -2151,6 +2151,79 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 			return archiveTreeContracts;
 		}
 
+		for (ArchiveTreeContract contract : archiveTreeContracts) {
+			if (StringUtils.isEmpty(treeCode)) {
+				//业主合同段时treeCode为空串
+				if(StringUtils.isNotEmpty(nodeId)){
+					//如果还选择了节点
+					if (StringUtils.isNotEmpty(contract.getAncestors()) && contract.getAncestors().contains(nodeId)) {
+						result.add(contract);
+					}
+				}else{
+					if (StringUtils.isEmpty(contract.getTreeCode()) || contractId.toString().equals(contract.getTreeCode())  || contractId.equals(contract.getContractId())) {
+						result.add(contract);
+					}
+				}
+			} else {
+				if (treeCode.equals(contract.getTreeCode()) || contractId.toString().equals(contract.getTreeCode()) || contractId.equals(contract.getContractId())) {
+					if(StringUtils.isNotEmpty(nodeId)){
+						//如果还选择了节点
+						if (StringUtils.isNotEmpty(contract.getAncestors()) && contract.getAncestors().contains(nodeId)) {
+							result.add(contract);
+						}
+					}else{
+						result.add(contract);
+					}
+				}
+			}
+		}
+
+		return result;
+	}
+
+	/**
+	 * 带权限筛选的档案列表筛选函数
+	 * 规则,1. 合同段ID为空,则不过滤
+	 *      2. 业主或者管理员,treeCode为空,则按照nodeid过滤,nodeid为空,则不过滤
+	 *      3. 合同段用户,安装找contractId过滤,过滤该合同段所有节点。
+	 * @param archiveTreeContracts 档案列表archiveTreeContracts
+	 * @param contractId 合同编号,用于获取权限码
+	 * @param nodeId 筛选条件:节点编号
+	 * @return 符合条件的档案列表
+	 */
+	public List<ArchiveTreeContract> authFilterNum(List<ArchiveTreeContract> archiveTreeContracts, Long contractId, Long nodeId) {
+		//合同段ID为空则全部返回
+		if (contractId == null) {
+			return  archiveTreeContracts;
+		}
+
+		String treeCode = getAuthCode(contractId);
+		String strNodeId = "";
+		if (nodeId!= null) {
+			ArchiveTreeContract node = archiveTreeContractClient.getArchiveTreeContractById(nodeId);
+			strNodeId  = nodeId.toString();
+			if(node.getContractId()==null || node.getContractId()==-1){
+				treeCode="";
+			}
+		}
+
+		return archiveTreeContractFilterNum(archiveTreeContracts, treeCode, strNodeId,contractId);
+	}
+
+	/**
+	 * 对档案列表进行筛选
+	 * @param archiveTreeContracts 档案列表
+	 * @param treeCode 筛选条件:权限码
+	 * @param nodeId 筛选条件:节点编号
+	 * @return 符合条件的档案列表
+	 */
+	public List<ArchiveTreeContract> archiveTreeContractFilterNum(List<ArchiveTreeContract> archiveTreeContracts, String treeCode, String nodeId,Long contractId) {
+		List<ArchiveTreeContract> result = new ArrayList<>();
+
+		if (contractId==null) {
+			return archiveTreeContracts;
+		}
+
 		for (ArchiveTreeContract contract : archiveTreeContracts) {
 			if (StringUtils.isEmpty(treeCode)) {
 				//业主合同段时treeCode为空串
@@ -2174,6 +2247,7 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 		return result;
 	}
 
+
 	public void test(){
 		String ids = "1654406079229165569";
 

+ 35 - 31
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ArchiveTreeContractSyncImpl.java

@@ -508,38 +508,42 @@ public class ArchiveTreeContractSyncImpl {
                 }
 
 
-                //归档文件里没有则新增
-                if ( archiveFile == null) {
-                    if (sort!= null) {
-                        info.setSort(sort);
+                try {
+                    //归档文件里没有则新增
+                    if ( archiveFile == null) {
+                        if (sort!= null) {
+                            info.setSort(sort);
+                        }
+                        newInformationQueryList.add(info);
+                    }//文件不同,则说明重签过,需要更新,顺序不同也更新
+                    else  if (info.getEVisaPdfUrl() != null && !info.getEVisaPdfUrl().equals(archiveFile.getPdfFileUrl())
+                            || sort != null && !sort.equals(archiveFile.getSort())) {
+
+                        if (updateMap.get(archiveFile.getId())!= null) {
+                            continue;
+                        }
+
+                        if (StringUtils.isEmpty(info.getEVisaPdfUrl())) {
+                            continue;
+                        }
+
+                        //需要更新的
+                        //todo 后续需增加判断已组件或者锁定的不要更新?
+                        archiveFile.setPdfFileUrl(info.getEVisaPdfUrl());
+                        archiveFile.setEVisaFile(info.getEVisaPdfUrl());
+
+                        archiveFile.setFilePage(info.getEVisaPdfPage());
+                        archiveFile.setFileSize(info.getEVisaPdfSize());
+                        archiveFile.setIsCertification(1);
+                        archiveFile.setCertificationTime(info.getBusinessTime());
+                        archiveFile.setFileTime(info.getBusinessTime());
+                        archiveFile.setSort(sort);
+                        updateArchiveFiles.add(archiveFile);
+
+                        updateMap.put(archiveFile.getId(),"1");
                     }
-                    newInformationQueryList.add(info);
-                }//文件不同,则说明重签过,需要更新,顺序不同也更新
-                else if (!archiveFile.getPdfFileUrl().equals(info.getEVisaPdfUrl())
-                        || (!sort.equals(archiveFile.getSort()))) {
-
-                    if (updateMap.get(archiveFile.getId())!= null) {
-                        continue;
-                    }
-
-                    if (StringUtils.isEmpty(info.getEVisaPdfUrl())) {
-                        continue;
-                    }
-
-                    //需要更新的
-                    //todo 后续需增加判断已组件或者锁定的不要更新?
-                    archiveFile.setPdfFileUrl(info.getEVisaPdfUrl());
-                    archiveFile.setEVisaFile(info.getEVisaPdfUrl());
-
-                    archiveFile.setFilePage(info.getEVisaPdfPage());
-                    archiveFile.setFileSize(info.getEVisaPdfSize());
-                    archiveFile.setIsCertification(1);
-                    archiveFile.setCertificationTime(info.getBusinessTime());
-                    archiveFile.setFileTime(info.getBusinessTime());
-                    archiveFile.setSort(sort);
-                    updateArchiveFiles.add(archiveFile);
-
-                    updateMap.put(archiveFile.getId(),"1");
+                } catch (Exception e) {
+                    e.printStackTrace();
                 }
             }
         }