From 6c6a1178f2e5900d56a381e12f9c9f998cf9b270 Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期二, 20 六月 2023 11:25:22 +0800
Subject: [PATCH] fix

---
 src/main/java/com/zy/core/thread/ShuttleThread.java |   49 +++++++++++++++++++++++++++++++++++++------------
 1 files changed, 37 insertions(+), 12 deletions(-)

diff --git a/src/main/java/com/zy/core/thread/ShuttleThread.java b/src/main/java/com/zy/core/thread/ShuttleThread.java
index f8e571e..e05f7e2 100644
--- a/src/main/java/com/zy/core/thread/ShuttleThread.java
+++ b/src/main/java/com/zy/core/thread/ShuttleThread.java
@@ -915,14 +915,15 @@
             qrCodeValues.add(Short.parseShort(basDevp.getQrCodeValue()));
         }
 
-        //閬嶅巻鎵�鏈夋寚浠わ紝鍒ゆ柇鏄惁鏈夊埌鎻愬崌鏈哄彛鐨勬寚浠わ紝骞惰幏鍙栧埌杈捐鎻愬崌鏈哄彛鎵�闇�姝ュ簭
+        //閬嶅巻鎵�鏈夋寚浠わ紝鍒ゆ柇鏄惁鏈夊埌鎻愬崌鏈哄彛鐨勬寚浠ゆ垨浠庢彁鍗囨満鍙e墠寰�鎻愬崌鏈哄唴鐨勬寚浠わ紝骞惰幏鍙栧埌杈捐鎻愬崌鏈哄彛鎵�闇�姝ュ簭
         int step = 0;
         Integer siteNo = null;//绔欑偣鍙�
         ShuttleCommand command = null;
         for (int i = 0; i < commands.size(); i++) {
             command = commands.get(i);
             for (Short qrCodeValue : qrCodeValues) {
-                if (qrCodeValue.intValue() == command.getDistCodeNum().intValue()) {
+                //鐩爣浣嶇疆鏄彁鍗囨満鍙o紝鎴栬捣鐐逛綅缃槸鎻愬崌鏈哄彛涓旂洰鏍囨槸鍘绘彁鍗囨満鍐�
+                if (qrCodeValue.intValue() == command.getDistCodeNum().intValue() || (qrCodeValue.intValue() == command.getStartCodeNum().intValue() && command.getDistCodeNum().intValue() == liftProtocol.getBarcode().intValue())) {
                     //瀛樺湪
                     step = i + 1;
                     BasDevp basDevp = basDevpService.queryByQrCode(qrCodeValue.intValue());
@@ -937,11 +938,21 @@
             return true;
         }
 
-        //鍒ゆ柇涓嬩竴姝ユ槸鍚︿负鎻愬崌鏈哄彛
-        if (commandStep + 1 != step) {
-            //涓嬩竴姝ヤ笉鏄彁鍗囨満鍙o紝璺宠繃鍚庣画娴佺▼
-            return true;
+        //鍒ゆ柇涓嬩竴姝ユ槸鍚︿负鎻愬崌鏈哄彛鎴栨彁鍗囨満鍐�
+        if (commandStep < commands.size()) {
+            ShuttleCommand command1 = commands.get(commandStep);
+            Short distCodeNum = command1.getDistCodeNum();
+            if (distCodeNum != null) {
+                BasDevp basDevp = basDevpService.queryByQrCode(Integer.valueOf(distCodeNum));
+                if (basDevp == null && distCodeNum.intValue() != liftProtocol.getBarcode().intValue()) {
+                    return true;//涓嬩竴姝ヤ笉鏄彁鍗囨満鍙o紝璺宠繃鍚庣画娴佺▼
+                }
+            }
         }
+//        if (commandStep + 1 != step) {
+//            //涓嬩竴姝ヤ笉鏄彁鍗囨満鍙o紝璺宠繃鍚庣画娴佺▼
+//            return true;
+//        }
 
         //鑾峰彇鍥涘悜绌挎杞﹀綋鍓嶆ゼ灞�
         String shuttleLocNo = shuttleProtocol.getCurrentLocNo();//浜岀淮鐮佸搴斿簱浣嶅彿
@@ -956,13 +967,28 @@
         if (siteNo != null) {
             SiemensDevpThread siemensDevpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1);
             StaProtocol staProtocol = siemensDevpThread.getStation().get(siteNo);
-            if (staProtocol.isLiftArrival()
-                && liftProtocol.getPositionArrivalFeedback$() == shuttleLocNoLev) {
-                //杈撻�佺嚎鍙嶉鎻愬崌鏈哄埌浣嶄笖鎻愬崌鏈烘ゼ灞傚弽棣堜负鍚屼竴灞傦紝鐩存帴鏀捐
+            if (!staProtocol.isLiftArrival()) {
+                //杈撻�佺嚎鍙嶉鎻愬崌鏈烘病鏈夊埌浣�
+                executeLift(liftThread, liftProtocol, redisCommand, shuttleLocNoLev);//璋冨害鎻愬崌鏈�
+                return false;
+            }
+
+            if (shuttleProtocol.getCurrentCode().intValue() == liftProtocol.getBarcode().intValue()) {
+                //灏忚溅澶勪簬鎻愬崌鏈哄唴
                 return true;
+            }else {
+                if (liftProtocol.getPositionArrivalFeedback$() == shuttleLocNoLev) {
+                    return true;//鎻愬崌鏈哄埌浣�
+                }
+                executeLift(liftThread, liftProtocol, redisCommand, shuttleLocNoLev);//璋冨害鎻愬崌鏈�
+                return false;//鎻愬崌鏈烘病鏈夊埌浣�
             }
         }
 
+        return false;
+    }
+
+    private boolean executeLift(LiftThread liftThread, LiftProtocol liftProtocol, ShuttleRedisCommand redisCommand, Integer shuttleLocNoLev) {//璋冨害鎻愬崌鏈�
         if (liftProtocol.getRunning()) {
             //鎻愬崌鏈鸿繍琛屼腑锛岀姝笅鍙�
             return false;
@@ -980,7 +1006,7 @@
         liftProtocol.setSecurityMk(true);//鏍囪缃负true锛岄槻姝㈠叾浠栦换鍔″崰鐢ㄥ綋鍓嶆彁鍗囨満
         redisCommand.setLiftSecurityMk(true);//鏍囪缃负true锛岄槻姝㈠叾浠栦换鍔″崰鐢ㄥ綋鍓嶆彁鍗囨満
         //浠诲姟鏁版嵁淇濆瓨鍒皉edis
-        redisUtil.set("shuttle_wrk_no_" + wrkNo, JSON.toJSONString(redisCommand));
+        redisUtil.set("shuttle_wrk_no_" + redisCommand.getWrkNo(), JSON.toJSONString(redisCommand));
 
         //鍛戒护list
         ArrayList<LiftCommand> liftCommands = new ArrayList<>();
@@ -993,8 +1019,7 @@
         liftAssignCommand.setTaskNo(liftProtocol.getTaskNo());
         //涓嬪彂浠诲姟
         MessageQueue.offer(SlaveType.Lift, liftProtocol.getLiftNo().intValue(), new Task(3, liftAssignCommand));
-
-        return false;
+        return true;
     }
 
     /**

--
Gitblit v1.9.1