From aeaf3e43e425ef0de84c1819f318f20e90471f90 Mon Sep 17 00:00:00 2001
From: 1 <1>
Date: 星期四, 02 十月 2025 11:49:37 +0800
Subject: [PATCH] #和得服务器

---
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java |  109 +++++++++++++++++++++++++++++++++---------------------
 1 files changed, 66 insertions(+), 43 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 ff0b065..1b70a6d 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -3045,7 +3045,7 @@
             // 鑾峰彇RGV淇℃伅
             RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgv.getId());
             RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
-            if (rgvProtocol == null) {
+            if (rgvProtocol.getStatusType1() != RgvStatusType.IDLE && rgvProtocol.getModeType() != RgvModeType.AUTO) {
                 continue;
             }
             BasRgv basRgv = basRgvService.selectById(rgv.getId());
@@ -3054,10 +3054,16 @@
                 continue;
             }
             //灏忚溅鏃犱换鍔℃椂璺宠繃
-            if(rgvProtocol.getTaskNo1() ==0 && rgvProtocol.getTaskNo2() == 0){
+            if(rgvProtocol.getTaskNo1() ==0 && rgvProtocol.getTaskNo2() == 0 ){
                 continue;
             }
-            //鍏ュ簱鏀捐揣
+            if(!rgvThread.isPaking()){
+                continue;
+            }
+            List<WrkMastSta> wrkMastStaLock = wrkMastStaService.selectLockWrk(rgv.getId());
+            if(wrkMastStaLock.size() == 1){
+                continue;
+            }
             if(rgvThread.isPakIn()){
                 for(RgvSlave.RgvStn rgvStn : rgv.getRgvInPStn()){//鍏ュ簱鏀捐揣绔欑偣
                     boolean flag = false;
@@ -3101,6 +3107,7 @@
                     boolean sign = rgvTakeFullAll(basRgvMap.getRgvNo(), wrkMastSta); //鍛戒护涓嬪彂
                     if (sign){
                         try{
+                            rgvThread.setPaking(false);
                             wrkMast.setSheetNo("2");
                             wrkMastSta.setWrkSts(2);
                             wrkMastStaMapper.updateById(wrkMastSta);
@@ -3163,6 +3170,7 @@
                     boolean sign = rgvTakeFullAll(basRgvMap.getRgvNo(), wrkMastSta); //鍛戒护涓嬪彂
                     if (sign){
                         try{
+                            rgvThread.setPaking(false);
                             wrkMastSta.setWrkSts(2);
                             wrkMastStaMapper.updateById(wrkMastSta);
                             log.error("鏇存柊灏忚溅浠诲姟鎴愬姛");
@@ -3214,6 +3222,7 @@
                     && !rgvProtocol.isLoaded1ing()
                     && !rgvProtocol.isLoaded2ing()){
                 rgvThread.setPakRgv(true);
+                rgvThread.setPakMk(true);
                 rgvThread.setPakIn(true);
                 rgvThread.setPakOut(true);
                 rgvThread.setPakToCrn(true);
@@ -3239,8 +3248,12 @@
                 log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�4", rgv.getId());
                 continue;
             }
+            if(rgvProtocol.getStatusType1() == RgvStatusType.WORKING){
+//                log.error("瑙i攣");
+                rgvThread.setPaking(true);
+            }
             // 鍙湁褰揜GV绌洪棽 骞朵笖 鏃犱换鍔℃椂鎵嶇户缁墽琛�
-            if (rgvProtocol.getStatusType1() == RgvStatusType.IDLE && rgvProtocol.getModeType() == RgvModeType.AUTO && rgvThread.isPakMk() && rgvThread.isPakToCrn()) {
+            if (rgvProtocol.getStatusType1() == RgvStatusType.IDLE && rgvProtocol.getModeType() == RgvModeType.AUTO && rgvThread.isPakMk() && rgvThread.isPakToCrn() && rgvThread.isPaking()) {
                 News.warnNoLog(""+mark+" - 0"+" - 寮�濮嬫墽琛孯GV鍏ュ嚭搴撲綔涓氫笅鍙�");
                 // 濡傛灉鏈�杩戜竴娆℃槸鍏ュ簱妯″紡
 //                rgvRunWrkMastInTest();
@@ -3279,11 +3292,12 @@
 //                rgvPreScheduling();//鑻ユ殏鏃犱笅鍙戜换鍔¢璋冨害鎻愬墠鍒板彇璐х偣
 //            }
 
-            if (rgvProtocol.getStatusType1() == RgvStatusType.IDLE && rgvProtocol.getModeType() == RgvModeType.AUTO) {
-                //灏忚溅鎵ц鏀捐揣浠诲姟
-                rgvOutExecute();
 
-            }
+//            if (rgvProtocol.getStatusType1() == RgvStatusType.IDLE && rgvProtocol.getModeType() == RgvModeType.AUTO) {
+//                //灏忚溅鎵ц鏀捐揣浠诲姟
+//                rgvOutExecute();
+//
+//            }
         }
     }
     public synchronized void rgvRunWrkMastInTest(){
@@ -3335,6 +3349,7 @@
             StaProtocol staProtocol = devpThread.getStation().get(rgvStn.getStaNo());
             StaProtocol staProtocol2 = null;  //杩炵画鍙栬揣浠诲姟绔欑偣
             RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, (int) rgvProtocol.getRgvNo());
+            WrkMastSta wrkMastSta3 = null;//杩炲彇涓や釜
             if(rgvStn.getStaNo2()!= null ){
                 staProtocol2 = devpThread.getStation().get(rgvStn.getStaNo2());
                 if (staProtocol2 == null) {
@@ -3348,18 +3363,9 @@
                     News.error("" + mark + " - 1" + " - 2" + " - 鍏ュ簱 ===>>Rgv绔欑偣鍦ㄦ暟鎹簱涓嶅瓨鍦�, 绔欑偣缂栧彿={}", rgvStn.getStaNo());
                     continue;
                 }
-                WrkMastSta wrkMastSta2 = wrkMastStaMapper.selectByWrkNo(staProtocol2.getWorkNo());
-                if(wrkMastSta2 != null){
-                    wrkMastSta2.setMk(1);
-                    try{
-                        wrkMastStaMapper.updateById(wrkMastSta2);
-                        log.error("閿佸畾鐩搁殧绔欑偣浠诲姟");
-                    }catch (Exception e){
-                        log.error("閿佸畾鐩搁殧绔欑偣浠诲姟澶辫触");
-                    }
-
-                }
+                wrkMastSta3 = wrkMastStaMapper.selectByWrkNo(staProtocol2.getWorkNo());
             }
+
             if (staProtocol == null) {
                 News.infoNoLog("" + mark + " - 1" + " - 1" + " - Rgv鍏ュ簱绔欎俊鎭�(staProtocol!=null缁х画鎵ц)锛歴taProtocol=" + staProtocol);
                 continue;
@@ -3389,7 +3395,7 @@
                 case 2: route = RouteUtils.getRouteTwo();break;
             }
             basRgvMap.setNowRoute(rgvProtocol.getRgvPosI2()); //鏇存柊灏忚溅褰撳墠浣嶇疆绔欑偣鍙�
-            WrkMastSta wrkMastSta = wrkMastStaMapper.selectNoInterfere(route, route, Long.valueOf(staProtocol.getWorkNo()));//鏍规嵁绔欑偣宸ヤ綔鍙峰拰灏忚溅宸ヤ綔鑼冨洿妫�绱换鍔℃。
+             WrkMastSta wrkMastSta = wrkMastStaMapper.selectNoInterfere(route, route, Long.valueOf(staProtocol.getWorkNo()));//鏍规嵁绔欑偣宸ヤ綔鍙峰拰灏忚溅宸ヤ綔鑼冨洿妫�绱换鍔℃。
             if( null == wrkMastSta ) {
                 News.infoNoLog("" + mark + " - 1" + " - 4" + " - 鏌ヨ鏃犲緟鍏ュ簱鏁版嵁--wrk_sts0, 宸ヤ綔鍙�={}", staProtocol.getWorkNo());
                 continue;
@@ -3411,7 +3417,17 @@
             boolean sign = false;
             sign = rgvTakeFullAll(basRgvMap.getRgvNo(), wrkMastSta); //鍛戒护涓嬪彂
             if (sign){
+                if(wrkMastSta3 != null){
+                    wrkMastSta3.setMk(1);
+                    try{
+                        wrkMastStaMapper.updateById(wrkMastSta3);
+                        log.error("閿佸畾鐩搁殧绔欑偣浠诲姟");
+                    }catch (Exception e){
+                        log.error("閿佸畾鐩搁殧绔欑偣浠诲姟澶辫触");
+                    }
 
+                }
+                rgvThread.setPaking(false);
                 rgvThread.setPakOut(false);//鍑哄簱涓嶅厑璁�
                 try{
                     wrkMastSta.setWrkSts(1);
@@ -3438,6 +3454,8 @@
             StaProtocol staProtocol = devpThread.getStation().get(rgvStn.getStaNo());
             RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, (int) rgvProtocol.getRgvNo());
             StaProtocol staProtocol2 = null;
+            WrkMastSta wrkMastSta3 = null;
+
             if(rgvStn.getStaNo2()!= null ){
                 staProtocol2 = devpThread.getStation().get(rgvStn.getStaNo2());
                 if (staProtocol2 == null) {
@@ -3451,18 +3469,7 @@
                     News.error("" + mark + " - 1" + " - 2" + " - 鍏ュ簱 ===>>Rgv绔欑偣鍦ㄦ暟鎹簱涓嶅瓨鍦�, 绔欑偣缂栧彿={}", rgvStn.getStaNo());
                     continue;
                 }
-                WrkMastSta wrkMastSta2 = wrkMastStaMapper.selectByWrkNo(staProtocol2.getWorkNo());
-                if(wrkMastSta2 != null){
-                    wrkMastSta2.setMk(1);
-                    try{
-                        wrkMastStaMapper.updateById(wrkMastSta2);
-                        log.error("閿佸畾鐩搁殧绔欑偣浠诲姟");
-                    }catch (Exception e){
-                        log.error("閿佸畾鐩搁殧绔欑偣浠诲姟澶辫触");
-                    }
-
-                }
-
+                wrkMastSta3 = wrkMastStaMapper.selectByWrkNo(staProtocol2.getWorkNo());
 
             }
             if (staProtocol == null) {
@@ -3519,6 +3526,17 @@
                 if(LEFT_POSITION.contains(wrkMastSta.getStaEnd())){
                     rgvThread.setPakToCrn(false); //閿佸畾灏忚溅鍙兘鎺ユ帴椹充换鍔�
                 }
+                if(wrkMastSta3 != null){
+                    wrkMastSta3.setMk(1);
+                    try{
+                        wrkMastStaMapper.updateById(wrkMastSta3);
+                        log.error("閿佸畾鐩搁殧绔欑偣浠诲姟");
+                    }catch (Exception e){
+                        log.error("閿佸畾鐩搁殧绔欑偣浠诲姟澶辫触");
+                    }
+
+                }
+                rgvThread.setPaking(false);
                 rgvThread.setPakIn(false);//鍏ュ簱涓嶅厑璁�
                 try{
                     wrkMastSta.setWrkSts(1);
@@ -3754,9 +3772,9 @@
 //        }
 //        return wrkEnable;
 //    }
-//    /**
-//     * 灏忚溅棰勮皟搴�
-//     */
+    /**
+     * 灏忚溅棰勮皟搴�
+     */
 //    public synchronized  void rgvPreScheduling(){
 //        try{
 //            List<BasRgvMap> basRgvMaps = basRgvMapService.selectList(new EntityWrapper<>());
@@ -3793,7 +3811,7 @@
 //                    // 鏍规嵁杈撻�佺嚎plc閬嶅巻
 //                    for (DevpSlave devp : slaveProperties.getDevp()) {
 //                        // 閬嶅巻鍏ュ簱鍙�  鍏ュ簱棰勮皟搴�
-//                        List<Integer> staNos = Arrays.asList( 1043, 1104,1037);
+//                        List<Integer> staNos = Arrays.asList( 1043, 1104, 1029, 1022, 1019, 1008, 1005);
 //                        for (Integer staNo : staNos) {
 //                            SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
 //                            StaProtocol staProtocol = devpThread.getStation().get(staNo);
@@ -3801,9 +3819,8 @@
 //                                RgvCommand rgvCommand = new RgvCommand();
 //                                rgvCommand.setRgvNo((int) rgvProtocol.getRgvNo()); // RGV缂栧彿
 //                                rgvCommand.setAckFinish1(false);  // 宸ヤ綅1浠诲姟瀹屾垚纭浣�
-//                                rgvCommand.setTaskNo1(9999); // 宸ヤ綅1宸ヤ綔鍙�
+//                                rgvCommand.setTaskNo(9999); // 宸ヤ綅1宸ヤ綔鍙�
 //                                rgvCommand.setTaskMode1(RgvTaskModeType.X_MOVE); // 宸ヤ綅1浠诲姟妯″紡:  绉诲姩
-//                                rgvCommand.setEndStaNo1(0);   //宸ヤ綅1 鏀捐揣鍚庤鍘荤殑浣嶇疆
 //                                switch (staNo){
 //                                    case 1043: rgvCommand.setTargetPosition1(1042);break;  //宸ヤ綅1鐩爣绔欑偣
 //                                    case 1104: rgvCommand.setTargetPosition1(1105);break;
@@ -3858,6 +3875,7 @@
                 log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgvId, JSON.toJSON(rgvCommand));
                 return false;
             } else {
+
                 return true;
             }
 
@@ -3927,18 +3945,23 @@
             for (DevpSlave devp : slaveProperties.getDevp()) {
                 // 閬嶅巻鎷f枡鍏ュ簱鍙�
                 for (DevpSlave.Sta armSta : devp.getArmSta()) {
-                    // 鑾峰彇鏉$爜鎵弿浠俊鎭�
-                    BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, armSta.getBarcode());
-                    if (barcodeThread == null) {
+
+                    // 鑾峰彇绔欑偣淇℃伅
+                    SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
+                    StaProtocol staProtocol = devpThread.getStation().get(armSta.getStaNo());
+                    if (staProtocol == null) {
                         continue;
+                    } else {
+                        staProtocol = staProtocol.clone();
                     }
-                    String barcode = barcodeThread.getBarcode();
-                    barcode="999997";
+                    String barcode = staProtocol.getBarcode();
                     if(!Cools.isEmpty(barcode)) {
                         if("NG".endsWith(barcode) || "NoRead".equals(barcode)) {
+                            log.error("鏈烘鑷傛姄鍙栦换鍔″畬鎴愶細"+JSON.toJSON(barcode)+"===銆嬫墭鐩樻潯鐮佸紓甯�");
                             continue;
                         }
                     } else {
+                        log.error("鏈烘鑷傛姄鍙栦换鍔″畬鎴愶細===銆嬫墭鐩樻潯鐮佷负绌�");
                         continue;
                     }
 

--
Gitblit v1.9.1