From 7f9435bb4a074b4964f290c4d6905e0e233a19ec Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期五, 21 十一月 2025 12:56:18 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/core/network/fake/ZyStationFakeConnect.java |   98 ++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 97 insertions(+), 1 deletions(-)

diff --git a/src/main/java/com/zy/core/network/fake/ZyStationFakeConnect.java b/src/main/java/com/zy/core/network/fake/ZyStationFakeConnect.java
index 2425a7f..b1281e2 100644
--- a/src/main/java/com/zy/core/network/fake/ZyStationFakeConnect.java
+++ b/src/main/java/com/zy/core/network/fake/ZyStationFakeConnect.java
@@ -77,6 +77,20 @@
     }
 
     private void handleCommand(StationCommand command) {
+        Integer stationId = command.getStationId();
+        Integer targetStationId = command.getTargetStaNo();
+
+        String startLev = String.valueOf(stationId).substring(0, 1);
+        String endLev = String.valueOf(targetStationId).substring(0, 1);
+
+        if (startLev.equals(endLev)) {
+            currentLevCommand(command);
+        }else {
+            diffLevCommand(command);
+        }
+    }
+
+    private void currentLevCommand(StationCommand command) {
         NavigateUtils navigateUtils = SpringUtils.getBean(NavigateUtils.class);
         if (navigateUtils == null) {
             return;
@@ -86,10 +100,12 @@
         Integer stationId = command.getStationId();
         Integer targetStationId = command.getTargetStaNo();
 
+        String startLev = String.valueOf(stationId).substring(0, 1);
+
         List<NavigateNode> navigateNodes = null;
 
         try {
-            navigateNodes = navigateUtils.calcByStationId(stationId, targetStationId);
+            navigateNodes = navigateUtils.calcByStationId(Integer.parseInt(startLev), stationId, targetStationId);
         } catch (Exception e) {
             e.printStackTrace();
         }
@@ -98,6 +114,86 @@
             return;
         }
 
+        stationMove(navigateNodes, taskNo, targetStationId);
+    }
+
+    private void diffLevCommand(StationCommand command) {
+        NavigateUtils navigateUtils = SpringUtils.getBean(NavigateUtils.class);
+        if (navigateUtils == null) {
+            return;
+        }
+
+        Integer taskNo = command.getTaskNo();
+        Integer stationId = command.getStationId();
+        Integer targetStationId = command.getTargetStaNo();
+
+        String startLev = String.valueOf(stationId).substring(0, 1);
+        String endLev = String.valueOf(targetStationId).substring(0, 1);
+        
+        List<NavigateNode> navigateNodes = null;
+        List<NavigateNode> targetNavigateNodes = null;
+
+        try {
+            List<NavigateNode> liftStationList = navigateUtils.findLiftStationList(Integer.parseInt(startLev));
+            if(liftStationList.isEmpty()){
+                //鏈壘鍒版彁鍗囨満鑺傜偣
+                return;
+            }
+
+            List<NavigateNode> targetLiftStationList = navigateUtils.findLiftStationList(Integer.parseInt(endLev));
+            if(targetLiftStationList.isEmpty()){
+                //鏈壘鍒版彁鍗囨満鑺傜偣
+                return;
+            }
+            for (NavigateNode liftStation : liftStationList) {
+                JSONObject valuObject = JSON.parseObject(liftStation.getNodeValue());
+                if(valuObject == null){
+                    continue;
+                }
+                Integer liftStationId = valuObject.getInteger("stationId");
+                Integer liftNo = valuObject.getInteger("liftNo");
+
+                Integer targetLiftStationId = null;
+                for (NavigateNode targetLiftStation : targetLiftStationList) {
+                    JSONObject targetValuObject = JSON.parseObject(targetLiftStation.getNodeValue());
+                    if(targetValuObject == null){
+                        continue;
+                    }
+                    Integer targetLiftNo = targetValuObject.getInteger("liftNo");
+                    if(liftNo.equals(targetLiftNo)){
+                        targetLiftStationId = targetValuObject.getInteger("stationId");
+                        break;
+                    }
+                }
+
+                if(targetLiftStationId == null){
+                    continue;
+                }
+
+                navigateNodes = navigateUtils.calcByStationId(Integer.parseInt(startLev), stationId, liftStationId);
+                if(navigateNodes == null){
+                    continue;
+                }
+
+                //璁$畻鎻愬崌鏈哄埌鐩爣绔欑殑璺緞
+                targetNavigateNodes = navigateUtils.calcByStationId(Integer.parseInt(endLev), targetLiftStationId, targetStationId);
+                if(targetNavigateNodes == null) {
+                    continue;
+                }
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+
+        if (navigateNodes == null || targetNavigateNodes == null) {
+            return;
+        }
+
+        stationMove(navigateNodes, taskNo, stationId);
+        stationMove(targetNavigateNodes, taskNo, targetStationId);
+    }
+
+    private void stationMove(List<NavigateNode> navigateNodes, Integer taskNo, Integer targetStationId) {
         Integer lastStationId = null;
         for (int i = 0; i < navigateNodes.size(); i++) {
             NavigateNode navigateNode = navigateNodes.get(i);

--
Gitblit v1.9.1