From dcdfc93b50febf61301832d91dfcddcfa1ca5403 Mon Sep 17 00:00:00 2001
From: 1 <1@123>
Date: 星期三, 14 五月 2025 14:06:36 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java |   99 +++++++++++++++++++++++++++++++++++++------------
 1 files changed, 74 insertions(+), 25 deletions(-)

diff --git a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
index feaa189..df46146 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -563,20 +563,23 @@
      * 鍫嗗灈鏈虹珯鍑哄簱鍒板嚭搴撶珯
      */
     public void crnStnToOutStn() {
-        for (CrnSlave crnSlave : slaveProperties.getCrn()) {
+        for (CrnSlave crn : slaveProperties.getCrn()) {
 
             // 鑾峰彇鍫嗗灈鏈轰俊鎭�
-            CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crnSlave.getId());
+            CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crn.getId());
             CrnProtocol crnProtocol = crnThread.getCrnProtocol();
             if (crnProtocol == null) {
                 continue;
             }
-            BasCrnp basCrnp = basCrnpService.selectById(crnSlave.getId());
+            BasCrnp basCrnp = basCrnpService.selectById(crn.getId());
             if (basCrnp == null) {
-                log.error("{}鍙峰爢鍨涙満灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�", crnSlave.getId());
+                log.error("{}鍙峰爢鍨涙満灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�", crn.getId());
                 continue;
             }
-            if (!crnSlave.getId().equals(crnProtocol.getLaneNo())) {
+
+            CrnSlave crnSlave = new CrnSlave(crn);
+
+            if (!crn.getId().equals(crnProtocol.getLaneNo())) {
                 for (CrnSlave crnOther : slaveProperties.getCrn()) {
                     if (crnOther.getId().equals(crnProtocol.getLaneNo())) {
                         crnSlave.updateCrnInStn(crnOther);
@@ -641,30 +644,28 @@
      * 鍏ュ嚭搴�  ===>>  鍫嗗灈鏈哄叆鍑哄簱浣滀笟涓嬪彂
      */
     public synchronized void crnIoExecute() throws IOException {
-        for (CrnSlave crn : slaveProperties.getCrn()) {
+        for (CrnSlave crnSlave : slaveProperties.getCrn()) {
             // 鑾峰彇鍫嗗灈鏈轰俊鎭�
-            CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crn.getId());
+            CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crnSlave.getId());
             CrnProtocol crnProtocol = crnThread.getCrnProtocol();
             if (crnProtocol == null) {
                 continue;
             }
-            BasCrnp basCrnp = basCrnpService.selectById(crn.getId());
+            BasCrnp basCrnp = basCrnpService.selectById(crnSlave.getId());
             if (basCrnp == null) {
-                log.error("{}鍙峰爢鍨涙満灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�", crn.getId());
+                log.error("{}鍙峰爢鍨涙満灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�", crnSlave.getId());
                 continue;
             }
 
-            CrnSlave crnSlave = new CrnSlave(crn);
+            CrnSlave crn = new CrnSlave(crnSlave);
 
-            if (!crn.getId().equals(crnProtocol.getLaneNo())) {
+            if (!crnSlave.getId().equals(crnProtocol.getLaneNo())) {
                 for (CrnSlave crnOther : slaveProperties.getCrn()) {
                     if (crnOther.getId().equals(crnProtocol.getLaneNo())) {
-                        crnSlave.updateCrnInStn(crnOther);
+                        crn.updateCrnInStn(crnOther);
                     }
                 }
             }
-
-            crn = crnSlave;
 
             // 搴撲綅绉昏浆
             this.locToLoc(crn, crnProtocol);
@@ -800,7 +801,7 @@
                 crnCommand.setDestinationPosY(Utils.getBayShort(taskWrk.getTargetPoint()));     // 鐩爣搴撲綅灞�
                 crnCommand.setDestinationPosZ(Utils.getLevShort(taskWrk.getTargetPoint()));     // 鐩爣搴撲綅鎺�
                 crnCommand.setCommand((short) 1);
-                if (!MessageQueue.offer(SlaveType.Crn, taskWrk.getCrnNo(), new Task(2, crnCommand))) {
+                if (!MessageQueue.offer(SlaveType.Crn, slave.getId(), new Task(2, crnCommand))) {
                     log.error("鍫嗗灈鏈哄懡浠ょ敓鎴愬け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", taskWrk.getCrnNo(), JSON.toJSON(crnCommand));
                     throw new CoolException("鍫嗗灈鏈哄懡浠ょ敓鎴愬け璐�");
                 } else {
@@ -915,7 +916,7 @@
                         command.setDestinationPosY(crnStn.getBay().shortValue());     // 鐩爣搴撲綅鍒�
                         command.setDestinationPosZ(crnStn.getLev().shortValue());     // 鐩爣搴撲綅灞�
                         command.setCommand((short) 1);
-                        if (!MessageQueue.offer(SlaveType.Crn, taskWrk.getCrnNo(), new Task(2, command))) {
+                        if (!MessageQueue.offer(SlaveType.Crn, slave.getId(), new Task(2, command))) {
                             log.error("鍫嗗灈鏈哄懡浠ょ敓鎴愬け璐ワ紝鍫嗗灈鏈哄彿={}锛屽贩閬�={}锛屼换鍔℃暟鎹�={}", slave.getId(), taskWrk.getCrnNo(), JSON.toJSON(command));
                             throw new CoolException("鍫嗗灈鏈哄懡浠ょ敓鎴愬け璐�");
                         } else {
@@ -1028,7 +1029,7 @@
                 crnCommand.setDestinationPosY(Utils.getBayShort(taskWrk.getTargetPoint()));     // 鐩爣搴撲綅鍒�
                 crnCommand.setDestinationPosZ(Utils.getLevShort(taskWrk.getTargetPoint()));     // 鐩爣搴撲綅灞�
                 crnCommand.setCommand((short) 1);
-                if (!MessageQueue.offer(SlaveType.Crn, taskWrk.getCrnNo(), new Task(2, crnCommand))) {
+                if (!MessageQueue.offer(SlaveType.Crn, slave.getId(), new Task(2, crnCommand))) {
                     log.error("鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", taskWrk.getCrnNo(), JSON.toJSON(crnCommand));
                 } else {
                     // 淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓�
@@ -1082,15 +1083,17 @@
      * 鎵ц瀵瑰伐浣滄。鐨勫畬鎴愭搷浣�
      */
     public void storeFinished() throws InterruptedException {
-        for (CrnSlave crn : slaveProperties.getCrn()) {
+        for (CrnSlave crnSlave : slaveProperties.getCrn()) {
             // 鑾峰彇鍫嗗灈鏈轰俊鎭�
-            CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crn.getId());
+            CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crnSlave.getId());
             CrnProtocol crnProtocol = crnThread.getCrnProtocol();
             if (crnProtocol == null) {
                 continue;
             }
 
-            if (!crn.getId().equals(crnProtocol.getLaneNo())) {
+            CrnSlave crn = new CrnSlave(crnSlave);
+
+            if (!crnSlave.getId().equals(crnProtocol.getLaneNo())) {
                 for (CrnSlave crnOther : slaveProperties.getCrn()) {
                     if (crnOther.getId().equals(crnProtocol.getLaneNo())) {
                         crn.updateCrnInStn(crnOther);
@@ -1532,7 +1535,16 @@
                             for (Integer staNoNow : belongToRange) {
                                 for (RgvSlave.RgvStn rgvStn : rgvSlave.getRgvInSta()) {
                                     if (rgvStn.getStaNo().equals(staNoNow)) {
-                                        sign = taskGenerate(rgvSlave, rgvStn, 0);
+                                        TaskWrk taskWrk = deviceDetection(rgvStn);
+                                        if (taskWrk != null) {
+                                            Integer outStaNo = BarcodeUtils.getOutStaNo(taskWrk.getOriginTargetPoint());
+                                            for (RgvSlave.RgvStn rgvStnOut : rgvSlave.getRgvOutSta()) {
+                                                if (rgvStnOut.getStaNo().equals(outStaNo)) {
+                                                    sign = taskGenerate(rgvSlave, rgvStn, 0);
+                                                    break;
+                                                }
+                                            }
+                                        }
                                         break;
                                     }
                                 }
@@ -1541,10 +1553,29 @@
                                 }
                             }
                         }
-                        if (!sign && belongToRange.size()==1){
+                        if (!sign && staList.size()==1){
                             if (rgvOtherIDLEOther(rgvSlave)){
-                                if (!rgvOtherIDLE(rgvSlave,belongToRange.get(0))){
+                                if (!rgvOtherIDLE(rgvSlave,staList.get(0))){
                                     sign=true;
+                                }
+                            }
+                            if (sign){
+                                for (RgvSlave.RgvStn rgvStn : rgvSlave.getRgvInSta()) {
+                                    if (rgvStn.getStaNo().equals(staList.get(0))) {
+                                        TaskWrk taskWrk = deviceDetection(rgvStn);
+                                        if (taskWrk != null) {
+                                            Integer outStaNo = BarcodeUtils.getOutStaNo(taskWrk.getOriginTargetPoint());
+                                            for (RgvSlave.RgvStn rgvSuper : rgvSlave.getRgvSuperSta()){
+                                                if (rgvSuper.getStaNo().equals(outStaNo)){
+                                                    sign=false;
+                                                    break;
+                                                }
+                                            }
+                                        } else {
+                                            return;
+                                        }
+                                        break;
+                                    }
                                 }
                             }
                         }
@@ -1573,7 +1604,16 @@
                             for (Integer staNoNow : rangeList) {
                                 for (RgvSlave.RgvStn rgvStn : rgvSlave.getRgvInSta()) {
                                     if (rgvStn.getStaNo().equals(staNoNow)) {
-                                        sign = taskGenerate(rgvSlave, rgvStn, 0);
+                                        TaskWrk taskWrk = deviceDetection(rgvStn);
+                                        if (taskWrk != null) {
+                                            Integer outStaNo = BarcodeUtils.getOutStaNo(taskWrk.getOriginTargetPoint());
+                                            for (RgvSlave.RgvStn rgvStnOut : rgvSlave.getRgvOutSta()) {
+                                                if (rgvStnOut.getStaNo().equals(outStaNo)) {
+                                                    sign = taskGenerate(rgvSlave, rgvStn, 0);
+                                                    break;
+                                                }
+                                            }
+                                        }
                                         break;
                                     }
                                 }
@@ -1611,7 +1651,16 @@
                         for (Integer staNoNow : rangeList) {
                             for (RgvSlave.RgvStn rgvStn : rgvSlave.getRgvInSta()) {
                                 if (rgvStn.getStaNo().equals(staNoNow)) {
-                                    sign = taskGenerate(rgvSlave, rgvStn, 0);
+                                    TaskWrk taskWrk = deviceDetection(rgvStn);
+                                    if (taskWrk != null) {
+                                        Integer outStaNo = BarcodeUtils.getOutStaNo(taskWrk.getOriginTargetPoint());
+                                        for (RgvSlave.RgvStn rgvStnOut : rgvSlave.getRgvOutSta()) {
+                                            if (rgvStnOut.getStaNo().equals(outStaNo)) {
+                                                sign = taskGenerate(rgvSlave, rgvStn, 0);
+                                                break;
+                                            }
+                                        }
+                                    }
                                     break;
                                 }
                             }

--
Gitblit v1.9.1