From ac09ee9c9f39cb9d452b57504e5c79321e0371eb Mon Sep 17 00:00:00 2001
From: Junjie <xjj@123>
Date: 星期四, 03 四月 2025 15:34:34 +0800
Subject: [PATCH] #

---
 zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/NyShuttleThread.java        |   54 ++++++++++++-
 zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/KernelService.java              |   10 +-
 zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/service/impl/MainServiceImpl.java      |   27 ++++--
 zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/AnalyzeService.java             |    6 -
 zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/command/LiftCommandService.java |   30 -------
 zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/model/enums/LiftCommandModeType.java   |    4 
 zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/utils/ShuttleDispatcher.java           |    4 +
 zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/FyxcDevpThread.java         |   21 ++--
 zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/NyLiftThread.java           |   36 ++++----
 zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/utils/LiftDispatcher.java              |    7 +
 10 files changed, 115 insertions(+), 84 deletions(-)

diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/AnalyzeService.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/AnalyzeService.java
index 63022f5..d15a292 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/AnalyzeService.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/AnalyzeService.java
@@ -119,11 +119,6 @@
                 return motionList;
             }
 
-            BasConveyorSta basConveyorStaDest = basConveyorStaService.selectBySiteNo(task.getDestSite());
-            if (basConveyorStaDest == null) {
-                return motionList;
-            }
-
             //妫�娴嬬┛姊溅鏄惁鏈変换鍔$粦瀹�
             boolean shuttleResult = Utils.checkShuttleHasBinding(shuttleDevice, task.getTaskNo());
             if (shuttleResult) {
@@ -158,7 +153,6 @@
                             dto.setLiftNo(transferLiftDevice.getId().intValue());
                             dto.setLev(Utils.getLev(task.getDestLoc()));
                             dto.setStaNo(Integer.parseInt(task.getDestSite()));
-                            dto.setDevpNo(basConveyorStaDest.getConveyorDeviceId().intValue());
                             dto.setReleaseLift(1);//鎵ц瀹屾垚鍚庨噴鏀炬彁鍗囨満
                         }))
                 ));
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/KernelService.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/KernelService.java
index 386c3c6..ef67e16 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/KernelService.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/KernelService.java
@@ -95,11 +95,13 @@
             motion.setMotionCtg(MotionCtgType.LIFT_WITH_GOODS.val());
 
             if (null != origin) {
-                motion.setOrigin(String.valueOf(liftDispatcher.getLiftLevOffset(target.getLiftNo(), origin.getLev())));
-                motion.setOriDrt(origin.getStaNo());//婧愮珯
+//                motion.setOrigin(String.valueOf(liftDispatcher.getLiftLevOffset(target.getLiftNo(), origin.getLev())));
+//                motion.setOriDrt(origin.getStaNo());//婧愮珯
+                motion.setOrigin(String.valueOf(origin.getStaNo()));
             }
-            motion.setTarget(String.valueOf(liftDispatcher.getLiftLevOffset(target.getLiftNo(), target.getLev())));
-            motion.setTarDrt(target.getStaNo());//鐩爣绔�
+//            motion.setTarget(String.valueOf(liftDispatcher.getLiftLevOffset(target.getLiftNo(), target.getLev())));
+//            motion.setTarDrt(target.getStaNo());//鐩爣绔�
+            motion.setTarget(String.valueOf(target.getStaNo()));
 
             if (target.getDevpNo() != null) {
                 motion.setDockNo(String.valueOf(target.getDevpNo()));//杈撻�佺嚎ID
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/command/LiftCommandService.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/command/LiftCommandService.java
index c8680e1..615f3a8 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/command/LiftCommandService.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/command/LiftCommandService.java
@@ -113,12 +113,6 @@
 //                    return false;
 //                }
 
-                //鍒ゆ柇鐩爣绔欐槸鍚︽湁鎵樼洏
-                Integer conveyorDeviceId = Integer.parseInt(motion.getDockNo());
-                DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Conveyor, conveyorDeviceId);
-                if (devpThread == null) {
-                    return false;
-                }
 //                //*************鏍囧噯绯荤粺浠g爜********************
 //                StaProtocol staProtocol = devpThread.getStation().get(motion.getTarDrt());
 //                if (staProtocol == null) {
@@ -135,29 +129,7 @@
 //                }
 //                //*************************************************
 
-
-                //*************姝や唬鐮佷负鍏夋嘲瀹氬埗浠g爜********************
-                Integer tarDrt = motion.getTarDrt();
-                if (tarDrt == 31001) {
-                    tarDrt = 31004;
-                }
-
-                StaProtocol staProtocol = devpThread.getStation().get(tarDrt);
-                if (staProtocol == null) {
-                    return false;
-                }
-                if (!staProtocol.isAutoing()) {
-                    return false;
-                }
-                if (staProtocol.isLoading()) {
-                    return false;
-                }
-                if (staProtocol.getWorkNo().intValue() != 0) {
-                    return false;
-                }
-                //*************************************************
-
-                command = liftThread.getPalletInOutCommand(assignCommand.getDeviceTaskNo(), Integer.parseInt(motion.getOrigin()), Integer.parseInt(motion.getTarget()), motion.getOriDrt(), motion.getTarDrt(), LiftCommandModeType.PALLET_INOUT);
+                command = liftThread.getPalletInOutCommand(assignCommand.getDeviceTaskNo(), Integer.parseInt(motion.getOrigin()), Integer.parseInt(motion.getTarget()), motion.getOriDrt(), motion.getTarDrt(), task.getTaskSts() < 100 ? LiftCommandModeType.PALLET_IN : LiftCommandModeType.PALLET_OUT);
                 list.addAll(command);
 
                 motion.setTemp(String.valueOf(assignCommand.getDeviceTaskNo()));
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/model/enums/LiftCommandModeType.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/model/enums/LiftCommandModeType.java
index 1c74b5b..2ca1d57 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/model/enums/LiftCommandModeType.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/model/enums/LiftCommandModeType.java
@@ -4,11 +4,13 @@
 
     NONE(-1, "鏈煡绫诲瀷"),
     MOVE(1, "鎻愬崌鏈哄崌闄�"),
-    PALLET_INOUT(2, "鎵樼洏鍑哄叆"),
+//    PALLET_INOUT(2, "鎵樼洏鍑哄叆"),
     LOCK(3, "閿佸畾鎻愬崌鏈�"),
     UNLOCK(4, "瑙i攣鎻愬崌鏈�"),
     RESET(5, "澶嶄綅"),
     MOVE_CAR(6, "鎻愬崌鏈哄崌闄嶅皬杞�"),
+    PALLET_IN(7, "鎵樼洏鍏�"),
+    PALLET_OUT(8, "鎵樼洏鍑�"),
     ;
 
     public Integer id;
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/service/impl/MainServiceImpl.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/service/impl/MainServiceImpl.java
index 71a47fc..cbc2831 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/service/impl/MainServiceImpl.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/service/impl/MainServiceImpl.java
@@ -170,18 +170,23 @@
                             continue;
                         }
 
-                        // 鑾峰彇鏉$爜鎵弿浠俊鎭�
-                        DeviceBarcode deviceBarcode = deviceBarcodeService.getById(basConveyorSta.getBarcodeId());
-                        if(deviceBarcode == null) {
-                            continue;
-                        }
-                        BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, Integer.parseInt(deviceBarcode.getDeviceId()));
-                        if (barcodeThread == null) {
-                            continue;
-                        }
-                        String barcode = barcodeThread.getBarcode();
+//                        // 鑾峰彇鏉$爜鎵弿浠俊鎭�
+//                        DeviceBarcode deviceBarcode = deviceBarcodeService.getById(basConveyorSta.getBarcodeId());
+//                        if(deviceBarcode == null) {
+//                            continue;
+//                        }
+//                        BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, Integer.parseInt(deviceBarcode.getDeviceId()));
+//                        if (barcodeThread == null) {
+//                            continue;
+//                        }
+//                        String barcode = barcodeThread.getBarcode();
+//                        if (!Cools.isEmpty(barcode)) {
+//                            News.info("{}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", deviceBarcode.getId(), barcode);
+//                        }
+
+                        String barcode = staProtocol.getBarcode();
                         if (!Cools.isEmpty(barcode)) {
-                            News.info("{}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", deviceBarcode.getId(), barcode);
+                            News.info("鏉$爜鎵弿鍣ㄦ娴嬫潯鐮佷俊鎭細{}", barcode);
                         }
 
                         // 鍒ゆ柇閲嶅宸ヤ綔妗�
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/utils/LiftDispatcher.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/utils/LiftDispatcher.java
index 377f800..8460486 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/utils/LiftDispatcher.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/utils/LiftDispatcher.java
@@ -78,6 +78,13 @@
             }
 
             String liftLocNo = Utils.getLocNo(Utils.getRow(standby.getDeviceStandbyLoc()), Utils.getBay(standby.getDeviceStandbyLoc()), Utils.getLev(locNo));
+
+            if (locNo.equals(liftLocNo)) {
+                finalDistance = 100;
+                recentLiftThread = liftThread;
+                continue;
+            }
+
             List<NavigateNode> nodeList = navigateUtils.calc(locNo, liftLocNo, NavigationMapType.NONE.id, null);
             if (nodeList == null) {
                 continue;
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/utils/ShuttleDispatcher.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/utils/ShuttleDispatcher.java
index 1971cbf..09eb424 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/utils/ShuttleDispatcher.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/utils/ShuttleDispatcher.java
@@ -84,6 +84,10 @@
                 continue;
             }
 
+            if (shuttleProtocol.getCurrentLocNo() == null) {
+                continue;
+            }
+
             int shuttleLev = Utils.getLev(shuttleProtocol.getCurrentLocNo());
             if (shuttleLev == lev) {
                 currentLevDevices.add(device);
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/FyxcDevpThread.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/FyxcDevpThread.java
index f5a37ec..eced132 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/FyxcDevpThread.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/FyxcDevpThread.java
@@ -158,9 +158,8 @@
 
 
 //                staProtocol.setWorkMode((int) siemensS7Net.getByteTransform().TransInt16(result.Content, i * 40 + 8));// 宸ヤ綔妯″紡
-                staProtocol.setWorkNo((short) siemensS7Net.getByteTransform().TransInt32(result.Content, i * 18 + 10));     // 宸ヤ綔鍙�
-                staProtocol.setStaNo((short) siemensS7Net.getByteTransform().TransInt32(result.Content, i * 18 + 14));   // 鐩爣绔�
-
+                staProtocol.setWorkNo((short) siemensS7Net.getByteTransform().TransInt16(result.Content, i * 18 + 10));     // 宸ヤ綔鍙�
+                staProtocol.setStaNo((short) siemensS7Net.getByteTransform().TransInt16(result.Content, i * 18 + 12));   // 鐩爣绔�
 
                 if (!staProtocol.isPakMk() && !staProtocol.isLoading()) {
                     staProtocol.setPakMk(true);
@@ -245,6 +244,7 @@
     @Override
     public boolean writeWorkNo(int siteId, short workNo) {
         int index = staNos1.indexOf(siteId);
+        index += 1;
 
         OperateResult write = siemensS7Net.Write("DB83." + (index *8+6),(int) workNo);    // 宸ヤ綔鍙�
 
@@ -266,6 +266,7 @@
     @Override
     public boolean writeStaNo(int siteId,short staNo) {
         int index = staNos1.indexOf(siteId);
+        index += 1;
 
         OperateResult write = siemensS7Net.Write("DB101." + (index * 8 + 4),(int) staNo);    // 鐩爣绔�
 
@@ -287,27 +288,27 @@
     @Override
     public boolean writeWorkSta(int siteId, short workNo, short staNo) {
         int index = staNos1.indexOf(siteId);
+        index += 1;
 
         short[] array = new short[2];
         array[0] = workNo;
         array[1] = staNo;
 
-
-        String workNoAddress = "DB101." + (index * 8 + 6);
-        String staNoAddress = "DB101." + (index * 8 + 4);
+        String workNoAddress = "DB83." + (index * 8 + 6);
+        String staNoAddress = "DB83." + (index * 8 + 4);
         OperateResult write1 = null;    // 宸ヤ綔鍙�
         OperateResult write2 = null;     // 鐩爣绔�
 
         //浠诲姟涓嬪彂娆℃暟
         int writeCount = 0;
         do {
-            write1 = siemensS7Net.Write(workNoAddress, (int) workNo);    // 宸ヤ綔鍙�
-            write2 = siemensS7Net.Write(staNoAddress, (int) staNo);
+            write1 = siemensS7Net.Write(workNoAddress,  workNo);    // 宸ヤ綔鍙�
+            write2 = siemensS7Net.Write(staNoAddress, staNo);
             if ((write1.IsSuccess && write2.IsSuccess)) {
                 OperateResultExOne<byte[]> readResult = siemensS7Net.Read(staNoAddress, (short) 8);
                 if (readResult.IsSuccess) {
-                    int staNo2 = siemensS7Net.getByteTransform().TransInt32(readResult.Content, 0);
-                    int workNo2 = siemensS7Net.getByteTransform().TransInt32(readResult.Content, 4);
+                    int staNo2 = siemensS7Net.getByteTransform().TransInt16(readResult.Content, 0);
+                    int workNo2 = siemensS7Net.getByteTransform().TransInt16(readResult.Content, 4);
                     if (workNo == workNo2 && staNo == staNo2) {
                         //浠诲姟鍛戒护鍐欏叆鎴愬姛
                         log.info("鍐欏叆杈撻�佺嚎鍛戒护鍚庤繑鍥炴垚鍔燂紝骞朵笖鍥炶鎴愬姛銆傝緭閫佺嚎plc缂栧彿={}锛寋},{}锛屽啓鍏ユ鏁�={}", siteId, JSON.toJSON(workNo), JSON.toJSON(staNo), writeCount);
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/NyLiftThread.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/NyLiftThread.java
index c03eb2c..0be1c20 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/NyLiftThread.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/NyLiftThread.java
@@ -286,20 +286,16 @@
         }
 
         LiftDispatcher liftDispatcher = SpringUtils.getBean(LiftDispatcher.class);
-        Integer lev = liftDispatcher.getLiftLevOffset(this.device.getId().intValue(), liftProtocol.getLev());
-        if (null == lev){
-            News.error("鎻愬崌鏈鸿幏鍙栧綋鍓嶅眰涓虹┖");
-            response.setMessage("鎻愬崌鏈鸿幏鍙栧綋鍓嶅眰涓虹┖");
-            return response;
+
+        Integer origin = command.getOriginLev();
+        Integer target = command.getTargetLev();
+        if (command.getMode() == 2) {
+            origin = liftDispatcher.getLiftLevOffset(this.device.getId().intValue(), liftProtocol.getLev());
+            target = liftDispatcher.getLiftLevOffset(this.device.getId().intValue(), command.getTargetLev());
         }
-        array[1] = lev.shortValue();
-        Integer targetLev = liftDispatcher.getLiftLevOffset(this.device.getId().intValue(), command.getTargetLev());
-        if (null == targetLev){
-            News.error("鎻愬崌鏈鸿幏鍙栫洰鏍囧眰涓虹┖");
-            response.setMessage("鎻愬崌鏈鸿幏鍙栫洰鏍囧眰涓虹┖");
-            return response;
-        }
-        array[2] = targetLev.shortValue();
+
+        array[1] = origin.shortValue();
+        array[2] = target.shortValue();
 
         OperateResult result = siemensS7Net.Write("DB83.0", array);
         if (result != null && result.IsSuccess) {
@@ -413,12 +409,16 @@
     public List<LiftCommand> getMoveCommand(Integer taskNo, Integer sourceLev, Integer targetLev, LiftCommandModeType mode) {
         /**
          * 浠诲姟绫诲瀷
-         * 1=绉绘墭鐩橈紱鍗囬檷鏈哄皢婧愮珯鍙版墭鐩樼Щ鍒扮洰鏍囩珯鍙�
-         * 2=绉诲皬杞︼紝鍗囬檷鏈虹Щ鍒扮洰鏍囧眰锛岀瓑寰�
+         1=绉绘墭鐩橈紱鍗囬檷鏈哄皢婧愮珯鍙版墭鐩樼Щ鍒扮洰鏍囩珯鍙�
+         2=鎹㈠眰锛屽崌闄嶆満绉诲埌鐩爣灞傦紝绛夊緟
+         3=鍏ュ簱鎵樼洏,鍗囬檷鏈哄皢婧愮珯鍙版墭鐩樼Щ鍒扮洰鏍囧眰鏁帮紱
+         4=鍑哄簱鎵樼洏锛屽崌闄嶆満灏嗘簮绔欏彴鎵樼洏绉诲埌鐩爣绔欏彴
          */
         short taskMode = 2;
-        if (mode.equals(LiftCommandModeType.PALLET_INOUT)) {
-            taskMode = 1;
+        if (mode.equals(LiftCommandModeType.PALLET_IN)) {
+            taskMode = 3;
+        } else if (mode.equals(LiftCommandModeType.PALLET_OUT)) {
+            taskMode = 4;
         }
 
         // 寮�濮嬩换鍔�
@@ -435,7 +435,7 @@
         LiftCommand command = new LiftCommand();
         command.setLiftNo(Integer.valueOf(this.device.getDeviceNo()));
         command.setBody(JSON.toJSONString(array));
-        command.setMode(LiftCommandModeType.MOVE.id);
+        command.setMode(mode.id);
         command.setOriginLev(sourceLev);
         command.setTargetLev(targetLev);
 
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/NyShuttleThread.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/NyShuttleThread.java
index ab95590..e6fa940 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/NyShuttleThread.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/NyShuttleThread.java
@@ -62,6 +62,7 @@
 
     private static final boolean DEBUG = false;//璋冭瘯妯″紡
 
+    private List<JSONObject> socketReadResults = new ArrayList<>();
     private List<JSONObject> socketResults = new ArrayList<>();
 
     //鍘熷璁惧鏁版嵁
@@ -82,6 +83,7 @@
             while (true) {
                 try {
                     listenSocketMessage();
+                    listenInit();//鐩戝惉鍒濆鍖栦簨浠�
                 } catch (Exception e) {
                     e.printStackTrace();
                 }
@@ -137,7 +139,6 @@
         Thread otherThread = new Thread(() -> {
             while (true) {
                 try {
-                    listenInit();//鐩戝惉鍒濆鍖栦簨浠�
                     saveLog();//淇濆瓨鏁版嵁
                 } catch (Exception e) {
                     e.printStackTrace();
@@ -223,7 +224,19 @@
             }
 
             JSONObject result = JSON.parseObject(sb.toString());//寰楀埌鍝嶅簲缁撴灉闆�
-            if (!socketResults.isEmpty() && socketResults.size() >= 5) {
+
+            String msgType = result.getString("msgType");
+            if ("responseMsg".equals(msgType)) {
+                JSONObject response = result.getJSONObject("response");
+                JSONObject body = response.getJSONObject("body");
+                if (body.containsKey("workingMode")) {
+                    //read
+                    socketReadResults.add(body);
+                    return;
+                }
+            }
+
+            if (!socketResults.isEmpty() && socketResults.size() >= 20) {
                 socketResults.remove(0);//娓呯悊澶磋妭鐐�
             }
             socketResults.add(result);//娣诲姞鏁版嵁
@@ -307,7 +320,18 @@
 
             //----------璇诲彇鍥涘悜绌挎杞︾姸鎬�-----------
             NyShuttleHttpCommand readStatusCommand = getReadStatusCommand(Integer.parseInt(device.getDeviceNo()));
-            JSONObject data = requestCommand(readStatusCommand);
+            requestCommandAsync(readStatusCommand);//璇锋眰鐘舵��
+
+            if (this.socketReadResults.isEmpty()) {
+                if (System.currentTimeMillis() - shuttleProtocol.getLastOnlineTime() > 1000 * 60) {
+                    //鏈�鍚庝竴娆′笂绾挎椂闂磋秴杩�60s锛岃瀹氱绾�
+                    this.shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.OFFLINE);
+                }
+                return;
+            }
+
+            JSONObject data = this.socketReadResults.get(0);
+            this.socketReadResults.remove(0);
             if (data == null) {
                 if (System.currentTimeMillis() - shuttleProtocol.getLastOnlineTime() > 1000 * 60) {
                     //鏈�鍚庝竴娆′笂绾挎椂闂磋秴杩�60s锛岃瀹氱绾�
@@ -356,13 +380,17 @@
                 ///璇诲彇鍥涘悜绌挎杞︾姸鎬�-end
 
                 //灏忚溅澶勪簬杩愯涓紝灏嗘爣璁扮疆涓簍rue
-                if (shuttleProtocol.getDeviceStatus() == 1) {
+                if (shuttleProtocol.getDeviceStatus() == 0) {
                     shuttleProtocol.setPakMk(true);
                 }
 
-                if (shuttleProtocol.getProtocolStatusType() == null && shuttleProtocol.getDeviceStatus().intValue() == 0) {
+                if (shuttleProtocol.getProtocolStatusType() == null && shuttleProtocol.getDeviceStatus().intValue() == 1) {
                     //灏忚溅绌洪棽鐘舵�併�佸皬杞︿换鍔$姸鎬佷负鏈煡锛岃瀹氭浘绂荤嚎杩囷紝闇�瑕佸浣嶆垚绌洪棽
                     shuttleProtocol.setProtocolStatusType(ShuttleProtocolStatusType.IDLE);
+                }
+
+                if (shuttleProtocol.getProtocolStatusType().equals(ShuttleProtocolStatusType.OFFLINE) && shuttleProtocol.getDeviceStatus().intValue() == 1) {
+                    this.shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.IDLE);
                 }
 
                 this.originDeviceData = data;
@@ -1109,6 +1137,22 @@
         return result;//杩斿洖Body缁撴灉闆�
     }
 
+    private void requestCommandAsync(NyShuttleHttpCommand httpCommand) throws IOException {
+        if (this.socket == null) {
+            return;
+        }
+
+        //鍘嬬缉鏁版嵁鍖�
+        JSONObject data = JSON.parseObject(JSON.toJSONString(httpCommand));
+        data.remove("nodes");
+
+        // 鑾峰彇杈撳嚭娴�
+        OutputStreamWriter writer = new OutputStreamWriter(this.socket.getOutputStream());
+        writer.write(JSON.toJSONString(data) + "\r\n");
+        writer.flush();
+//            System.out.println("Sent message to server: " + JSON.toJSONString(httpCommand));
+    }
+
     private JSONObject filterBodyData(JSONObject data) {
         Object response = data.get("response");
         if (response == null) {

--
Gitblit v1.9.1