Browse Source

推送三环

laibulaizheli 1 month ago
parent
commit
abe3596966

+ 6 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/feign/ArchiveTreeContractClient.java

@@ -82,4 +82,10 @@ public interface ArchiveTreeContractClient {
     @PostMapping(API_PREFIX+"/adsArchiveTreeContract")
     public void addArchiveTreeContract(@RequestBody List<ArchiveTreeContract> archiveTreeContracts,@RequestParam Long rootId);
 
+
+    @PostMapping(API_PREFIX + "/getNodeIdByName")
+    Long getNodeIdByName(@RequestParam("projectName") String projectName,
+                         @RequestParam("contractName") String contractName,
+                         @RequestParam("nodeName") String nodeName);
+
 }

+ 37 - 1
blade-service/blade-archive/src/main/java/org/springblade/archive/external/impl/ExternalDataArchiveBuildService.java

@@ -4,6 +4,7 @@ import lombok.AllArgsConstructor;
 import org.springblade.archive.external.bean.ExternalDataInfo;
 import org.springblade.archive.external.utils.TransUtil;
 import org.springblade.archive.trans.ArchiveReq;
+import org.springblade.manager.feign.ArchiveTreeContractClient;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -18,8 +19,11 @@ public class ExternalDataArchiveBuildService {
     @Autowired
     private  ExternalDataArchiveTreeService externalTreeService;
 
+
     private ExternalDataArchiveMetaService externalMetaService;
 
+    private final ArchiveTreeContractClient archiveTreeContractClient;
+
 
     /**
      *
@@ -31,7 +35,39 @@ public class ExternalDataArchiveBuildService {
             throw new IllegalArgumentException("请求参数不能为空");
         }
 
-        ExternalDataInfo externalDataInfo = externalTreeService.getDataByIds(req.getNodeId(),req.getRemoteId());
+        // 当 transType 为 1 时,使用新方式获取 remoteId, 并且在传输开始时设置
+        if (req.getTransType() != null && req.getTransType() == 1 && req.getType()== 0) {
+            // 获取节点ID
+            Long remoteIdLong = archiveTreeContractClient.getNodeIdByName(
+                    req.getProjectName(),
+                    req.getContractName(),
+                    req.getNodeName()
+            );
+
+            if (remoteIdLong == null) {
+                throw new RuntimeException("无法找到匹配的节点: " +
+                        req.getProjectName() + "/" +
+                        req.getContractName() + "/" +
+                        req.getNodeName());
+            }
+
+            // 将 Long 转换为 String
+            req.setRemoteId(String.valueOf(remoteIdLong));
+        }
+
+        // 调用获取数据的方法
+        ExternalDataInfo externalDataInfo = externalTreeService.getDataByIds(
+                req.getNodeId(),
+                req.getRemoteId(),
+                req.getProjectName(),
+                req.getContractName(),
+                req.getNodeName(),
+                req.getTransType()
+        );
+
+        if (externalDataInfo == null) {
+            return;
+        }
 
         switch (req.getType()) {
             case 0:

+ 21 - 1
blade-service/blade-archive/src/main/java/org/springblade/archive/external/impl/ExternalDataArchiveTreeService.java

@@ -26,7 +26,27 @@ public class ExternalDataArchiveTreeService {
     private ArchivesAutoMapper autoMapper;
     private final MetadataClassificationClient metadataClassificationClient;
 
-    public  ExternalDataInfo getDataByIds(String nodeId, String remoteId){
+    public ExternalDataInfo getDataByIds(String nodeId, String remoteId,
+                                         String projectName, String contractName,
+                                         String nodeName, Integer transType) {
+
+        // 当 transType 为 1 时,重新获取 remoteId
+        if (transType != null && transType == 1) {
+            // 获取节点ID
+            Long remoteIdLong = archiveTreeContractClient.getNodeIdByName(
+                    projectName,
+                    contractName,
+                    nodeName
+            );
+
+            if (remoteIdLong == null) {
+                throw new RuntimeException("无法找到匹配的节点: " +
+                        projectName + "/" + contractName + "/" + nodeName);
+            }
+
+            // 将 Long 转换为 String
+            remoteId = String.valueOf(remoteIdLong);
+        }
         ExternalDataInfo externalDataInfo = TransUtil.getDataByIds(nodeId, remoteId);
 
         if (externalDataInfo.getParent() == null) {

+ 7 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/feign/ArchiveTreeContractImpl.java

@@ -177,5 +177,12 @@ public class ArchiveTreeContractImpl implements ArchiveTreeContractClient {
         return archiveTreeContractMapper.getTopAutoTypeNodeByProjectID(projectId);
     }
 
+    @Override
+    public Long getNodeIdByName( String projectName,
+                         String contractName,
+                          String nodeName){
+        return  archiveTreeContractService.getNodeIdByName(projectName,contractName,nodeName);
+    }
+
 
 }

+ 2 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/service/IArchiveTreeContractService.java

@@ -143,4 +143,6 @@ public interface IArchiveTreeContractService extends BaseService<ArchiveTreeCont
     List<ArchiveTreeContractDTO> getArchiveTreeContractDto(List<JiLinQueryDto>dtos,Long projectId);
 
     void addArchiveTreeContract(List<ArchiveTreeContract> archiveTreeContracts, Long rootId);
+
+    Long getNodeIdByName(String projectName, String contractName, String nodeName);
 }

+ 32 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ArchiveTreeContractServiceImpl.java

@@ -52,6 +52,7 @@ import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.CollectionUtils;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestParam;
 
@@ -1789,5 +1790,36 @@ public class ArchiveTreeContractServiceImpl extends BaseServiceImpl<ArchiveTreeC
 		this.saveOrUpdateBatch(changeArchiveList);
 	}
 
+	public Long getNodeIdByName(String projectName, String contractName, String nodeName) {
+		// 1. 获取合同ID
+		Long contractId = projectInfoService.getContractIdbyName(projectName, contractName);
+
+		// 2. 检查合同ID有效性
+		if (contractId == null) {
+			System.out.println("Contract not found with projectName: " + projectName + ", contractName: " + contractName);
+			return null;
+		}
+
+		// 3. 根据合同ID和节点名称查询节点
+		List<ArchiveTreeContract> nodes = baseMapper.selectList(Wrappers.<ArchiveTreeContract>query().lambda()
+				.eq(ArchiveTreeContract::getContractId, contractId)
+				.like(ArchiveTreeContract::getNodeName, nodeName)
+				.eq(ArchiveTreeContract::getIsDeleted, 0));
+
+		// 4. 处理查询结果
+		if (nodes == null || nodes.isEmpty()) {
+			System.out.println("No node found for contractId: " + contractId + ", nodeName: " + nodeName);
+			return null;
+		}
+
+		// 打印找到的节点数
+		System.out.println("Found " + nodes.size() + " nodes matching the criteria");
+
+		// 返回第一个匹配节点的ID
+		Long nodeId = nodes.get(0).getId();
+		System.out.println("Returning nodeId: " + nodeId);
+		return nodeId;
+	}
+
 
 }