From 11f6eb0bcda5e562d26ebc2c5ccd0672d66da76d Mon Sep 17 00:00:00 2001
From: lty <876263681@qq.com>
Date: 星期一, 15 九月 2025 14:50:46 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java |   84 +++++++++++++++++++++++++++++++++++++++---
 1 files changed, 78 insertions(+), 6 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 f6f1c90..ca6a12f 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -2815,6 +2815,7 @@
                         && rgvProtocol.getModeType() == RgvModeType.AUTO
                         && (rgvProtocol.getStatusType() == RgvStatusType.WORKING1)
                 ){
+
                     log.info("{}鍙峰皬杞︾瓑寰厀cs纭锛岀姸鎬亄}锛屽弬鏁皗}",rgvProtocol.getRgvNo(),rgvProtocol.getStatusType(),rgvProtocol);
                     if(rgvProtocol.getTaskNo1() == 9999){ // 棰勮皟搴︿换鍔$‘璁�
                         BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
@@ -2847,6 +2848,23 @@
                     if (rgvProtocol.getTaskNo1()!=0 && rgvProtocol.getTaskNo1()!=9999){
                         WrkMastSta wrkMastSta = wrkMastStaMapper.selectByWrkNo(rgvProtocol.getTaskNo1());
                         if(wrkMastSta.getWrkSts() == 1){//鍙栬揣纭
+                            wrkMastSta.setWrkSts(4);  //琛岃蛋鐘舵��
+                            try{
+                                wrkMastStaMapper.updateById(wrkMastSta);
+                                log.error("鏇存柊灏忚溅浠诲姟鎴愬姛");
+                            }catch (Exception e){
+                                log.error("鏇存柊灏忚溅浠诲姟澶辫触");
+                            }
+                            boolean rgvComplete = false;
+
+                            rgvComplete = rgvComplete((int) rgvProtocol.getRgvNo(),7);
+                            if (!rgvComplete){
+                                log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{}锛�",rgvProtocol.getRgvNo());
+                                break;
+                            }
+                            break;
+                        }
+                        if(wrkMastSta.getWrkSts() == 4){//琛岃蛋纭
                             wrkMastSta.setWrkSts(2);
                             try{
                                 wrkMastStaMapper.updateById(wrkMastSta);
@@ -2923,7 +2941,24 @@
                     log.info("{}鍙峰皬杞︾瓑寰厀cs纭锛岀姸鎬亄}锛屽弬鏁皗}",rgvProtocol.getRgvNo(),rgvProtocol.getStatusType(),rgvProtocol);
                     if (rgvProtocol.getTaskNo2() !=0 ){
                         WrkMastSta wrkMastSta = wrkMastStaMapper.selectByWrkNo(rgvProtocol.getTaskNo1());
-                        if(wrkMastSta.getWrkSts() == 1){//缂鸿揣纭
+                        if(wrkMastSta.getWrkSts() == 1){//鍙栬揣纭
+                            wrkMastSta.setWrkSts(4);  //琛岃蛋鐘舵��
+                            try{
+                                wrkMastStaMapper.updateById(wrkMastSta);
+                                log.error("鏇存柊灏忚溅浠诲姟鎴愬姛");
+                            }catch (Exception e){
+                                log.error("鏇存柊灏忚溅浠诲姟澶辫触");
+                            }
+                            boolean rgvComplete = false;
+
+                            rgvComplete = rgvComplete((int) rgvProtocol.getRgvNo(),7);
+                            if (!rgvComplete){
+                                log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{}锛�",rgvProtocol.getRgvNo());
+                                break;
+                            }
+                            break;
+                        }
+                        if(wrkMastSta.getWrkSts() == 4){//琛岃蛋鍚庣‘璁�
                             wrkMastSta.setWrkSts(2);
                             try{
                                 wrkMastStaMapper.updateById(wrkMastSta);
@@ -3300,7 +3335,7 @@
             Short direction = 2;//鍙屽伐浣嶆渶缁堟姷杈句綅缃�
             boolean sign = false;
             //鑻ュ彇璐т负宸ヤ綅2涓斿彇璐у彛鍓嶄竴绔欑偣鏈夌墿锛岀粰鍙屽伐浣嶅悓鏃朵笅鍙戞寚浠�
-            if(wrkMastSta.getWorkSta() == 2 && staProtocol2 != null && staProtocol2.isLoading() && staProtocol2.getWorkNo() > 0){
+            if(wrkMastSta.getWorkSta() == 2 && staProtocol2 != null && staProtocol2.isLoading() && staProtocol2.getWorkNo() > 0 && sign){
                 WrkMastSta wrkMastSta3 = wrkMastStaMapper.selectNoInterfere(route, route, Long.valueOf(staProtocol2.getWorkNo()));//鏍规嵁绔欑偣宸ヤ綔鍙峰拰灏忚溅宸ヤ綔鑼冨洿妫�绱换鍔℃。
                 wrkMastSta3.setWorkSta(1);
                 wrkMastSta3.setRgvNo((int) rgvProtocol.getRgvNo());
@@ -3400,7 +3435,7 @@
             boolean sign = false;
             Short direction = 1;//宸ヤ綅1鏂瑰悜
             //鑻ュ彇璐т负宸ヤ綅2涓斿彇璐у彛鍓嶄竴绔欑偣鏈夌墿锛岀粰鍙屽伐浣嶅悓鏃朵笅鍙戞寚浠�
-            if(wrkMastSta.getWorkSta() == 1 && staProtocol2 != null && staProtocol2.isLoading() && staProtocol2.getWorkNo() > 0){
+            if(wrkMastSta.getWorkSta() == 1 && staProtocol2 != null && staProtocol2.isLoading() && staProtocol2.getWorkNo() > 0 && sign){
                 WrkMastSta wrkMastSta3 = wrkMastStaMapper.selectNoInterfere(route, route, Long.valueOf(staProtocol2.getWorkNo()));//鏍规嵁绔欑偣宸ヤ綔鍙峰拰灏忚溅宸ヤ綔鑼冨洿妫�绱换鍔℃。
                 wrkMastSta3.setWorkSta(2);
                 wrkMastSta3.setRgvNo((int) rgvProtocol.getRgvNo());
@@ -3876,13 +3911,50 @@
             boolean pakIn1 = true;
             boolean pakIn2 = true;
             rgvCommand.setRgvNo(rgvId); // RGV缂栧彿
-            if(wrkMastSta.getWrkSts() == 0){//鍙栬揣
+            if(wrkMastSta.getWrkSts() == 0 || wrkMastSta.getWrkSts() == 4){//鍒濆鍚庤璧�
+                if(wrkMastSta.getWorkSta() == 2){//鍑哄簱RGV鍙栬揣琛岃蛋
+                    rgvCommand.setAckFinish2(false);  // 宸ヤ綅2浠诲姟瀹屾垚纭浣�
+                    rgvCommand.setTaskNo2(Math.toIntExact(wrkMastSta.getWrkNo())); // 宸ヤ綅2宸ヤ綔鍙�
+                    rgvCommand.setTaskStatus2(RgvTaskStatusType.X_MOVE); // 宸ヤ綅2浠诲姟妯″紡:  鍙栨斁璐�
+                    rgvCommand.setEndStaNo2(wrkMastSta.getWrkEnd());   //宸ヤ綅2 鏀捐揣鍚庤鍘荤殑浣嶇疆
+                    rgvCommand.setTargetPosition1(wrkMastSta.getStaStart());   //宸ヤ綅2鐩爣绔欑偣
+                    rgvCommand.setDirection2(direction);
+                    rgvCommand.setCommand(true);   //宸ヤ綅1浠诲姟纭
+                    pakIn1 = false;
+                }else{  //鍏ュ簱RGV鍙栬揣琛岃蛋
+                    rgvCommand.setAckFinish1(false);  // 宸ヤ綅1浠诲姟瀹屾垚纭浣�
+                    rgvCommand.setTaskNo1(Math.toIntExact(wrkMastSta.getWrkNo())); // 宸ヤ綅1宸ヤ綔鍙�
+                    rgvCommand.setTaskStatus1(RgvTaskStatusType.X_MOVE); // 宸ヤ綅1浠诲姟妯″紡:  鍙栨斁璐�
+                    rgvCommand.setEndStaNo1(wrkMastSta.getWrkEnd());   //宸ヤ綅1 鏀捐揣鍚庤鍘荤殑浣嶇疆
+                    rgvCommand.setTargetPosition1(wrkMastSta.getStaStart());   //宸ヤ綅1鐩爣绔欑偣
+                    rgvCommand.setDirection1(direction);
+                    rgvCommand.setCommand(true);   //宸ヤ綅1浠诲姟纭
+                }
+                if(!pakIn1){
+                    if (!MessageQueue.offer(SlaveType.Rgv, rgvId, new Task(4, rgvCommand))) {
+                        //step=2,宸ヤ綅1銆�2鍐欎换鍔★紱   step=4锛屽伐浣�1鍐欎换鍔★紱     step=5锛屽伐浣�2鍐欎换鍔�
+                        log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgvId, JSON.toJSON(rgvCommand));
+                        return false;
+                    } else {
+                        return true;
+                    }
+                }else{
+                    if (!MessageQueue.offer(SlaveType.Rgv, rgvId, new Task(5, rgvCommand))) {
+                        //step=2,宸ヤ綅1銆�2鍐欎换鍔★紱   step=4锛屽伐浣�1鍐欎换鍔★紱     step=5锛屽伐浣�2鍐欎换鍔�
+                        log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgvId, JSON.toJSON(rgvCommand));
+                        return false;
+                    } else {
+                        return true;
+                    }
+                }
+            }
+            if(wrkMastSta.getWrkSts() == 1){//鍙栬揣
                 if(wrkMastSta.getWorkSta() == 2){//鍑哄簱RGV鍙栬揣
                     rgvCommand.setAckFinish2(false);  // 宸ヤ綅2浠诲姟瀹屾垚纭浣�
                     rgvCommand.setTaskNo2(Math.toIntExact(wrkMastSta.getWrkNo())); // 宸ヤ綅2宸ヤ綔鍙�
                     rgvCommand.setTaskStatus2(RgvTaskStatusType.FETCH); // 宸ヤ綅2浠诲姟妯″紡:  鍙栨斁璐�
                     rgvCommand.setEndStaNo2(wrkMastSta.getWrkEnd());   //宸ヤ綅2 鏀捐揣鍚庤鍘荤殑浣嶇疆
-                    rgvCommand.setTargetPosition2(wrkMastSta.getStaStart());   //宸ヤ綅2鐩爣绔欑偣
+                    rgvCommand.setTargetPosition1(wrkMastSta.getStaStart());   //宸ヤ綅2鐩爣绔欑偣
                     rgvCommand.setDirection2(direction);
                     rgvCommand.setCommand(true);   //宸ヤ綅1浠诲姟纭
                     pakIn1 = false;
@@ -3919,7 +3991,7 @@
                     rgvCommand.setTaskNo2(Math.toIntExact(wrkMastSta.getWrkNo())); // 宸ヤ綅2宸ヤ綔鍙�
                     rgvCommand.setTaskStatus2(RgvTaskStatusType.PUT); // 宸ヤ綅2浠诲姟妯″紡:  鏀捐揣
                     rgvCommand.setEndStaNo2(wrkMastSta.getWrkEnd());   //宸ヤ綅2 鏀捐揣鍚庤鍘荤殑浣嶇疆
-                    rgvCommand.setTargetPosition2(wrkMastSta.getStaEnd());   //宸ヤ綅2鐩爣绔欑偣
+                    rgvCommand.setTargetPosition1(wrkMastSta.getStaEnd());   //宸ヤ綅2鐩爣绔欑偣
                     rgvCommand.setCommand(true);   //宸ヤ綅1浠诲姟纭
                     pakIn2 = false;
                 }else{  //宸ヤ綅1浠诲姟鏀捐揣

--
Gitblit v1.9.1