From 0e81b2e514cd11f56f23c455dbf75f6cd04e048a Mon Sep 17 00:00:00 2001
From: lty <876263681@qq.com>
Date: 星期五, 08 八月 2025 16:58:53 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java |  344 +++++++++++++++++++++++++++++++++++++++++---------------
 1 files changed, 249 insertions(+), 95 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 cf30bb9..b1dc376 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -97,6 +97,8 @@
 
     @Value("${wms.url}")
     private String wmsUrl;
+    @Value("${inventory.number}")
+    private Integer inventoryNumber;
 
     public Integer wrkNo = 10000;
 
@@ -112,6 +114,7 @@
             for (DevpSlave.Sta inSta : devp.getInSta()) {
                 // 鑾峰彇鏉$爜鎵弿浠俊鎭�
                 BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, inSta.getBarcode());
+                BarcodeThread barcodeThreadMat = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, inSta.getBarcodeMat());
                 LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, inSta.getLed());
                 SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
                 StaProtocol staProtocol = devpThread.getStation().get(inSta.getStaNo());
@@ -124,7 +127,14 @@
                 if (barcodeThread == null) {
                     continue;
                 }
+
+                if (barcodeThreadMat == null) {
+                    continue;
+                }
+
                 String barcode = barcodeThread.getBarcode();
+
+                String barcodeMat = barcodeThreadMat.getBarcode();
                 // 灏哄妫�娴嬪紓甯�
                 boolean back = false;
                 String errMsg = "";
@@ -154,6 +164,7 @@
                 }
                 if (!back && staProtocol.isBarcodeErr()) {
                     errMsg = "鎵爜澶辫触";
+                    log.error("鐗╂枡鐮佹壂鐮佸け璐�");
                     back = true;
                 }
                 // 閫�鍥�
@@ -166,6 +177,10 @@
                     }
                     if (!staProtocol.isPakMk()) {
                         continue;
+                    }
+                    // led 寮傚父鏄剧ず
+                    if (ledThread != null) {
+                        MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, errMsg));
                     }
                     staProtocol.setWorkNo(wrkNo);
                     News.info("{}鍏ュ簱鍥為��锛歿}锛屼换鍔″彿锛歿}", inSta.getStaNo(), errMsg,wrkNo);
@@ -184,7 +199,11 @@
                         && staProtocol.isPakMk()) {
                     if(Cools.isEmpty(barcode) || "NG".endsWith(barcode) || "NoRead".equals(barcode) || "00000000".equals(barcode)) {
                         News.info("{}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", inSta.getBarcode(), barcode);
-
+                        // led 寮傚父鏄剧ず
+                        if (ledThread != null) {
+                            String errorMsg = "鎵爜澶辫触锛岃閲嶈瘯";
+                            MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, errorMsg));
+                        }
                         staProtocol.setWorkNo(wrkNo);
                         News.info("{}鍏ュ簱鍥為��锛歿}锛屼换鍔″彿锛歿}", inSta.getStaNo(), errMsg,wrkNo);
                         wrkNo++;
@@ -194,6 +213,20 @@
                         log.error("杈撻�佺嚎涓嬪彂1锛�"+wrkNo+","+inSta.getBackSta());
                         continue;
                     }
+//                    if (staProtocol.getSiteId()!= 159){
+//                        if( Cools.isEmpty(barcodeMat) || "NG".endsWith(barcodeMat) || "NoRead".equals(barcodeMat) || "00000000".equals(barcodeMat)) {
+//                            News.info("{}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", inSta.getBarcodeMat(), barcodeMat);
+//
+//                            staProtocol.setWorkNo(wrkNo);
+//                            News.info("{}鍏ュ簱鍥為��锛歿}锛屼换鍔″彿锛歿}", inSta.getStaNo(), errMsg,wrkNo);
+//                            wrkNo++;
+//                            staProtocol.setStaNo(inSta.getBackSta().shortValue());
+//                            devpThread.setPakMk(staProtocol.getSiteId(), false);
+//                            MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+//                            log.error("杈撻�佺嚎涓嬪彂1锛�"+wrkNo+","+inSta.getBackSta());
+//                            continue;
+//                        }
+//                    }
                     // 鍒ゆ柇閲嶅宸ヤ綔妗�
                     WrkMast wrkMast = wrkMastMapper.selectPakInStep1(inSta.getStaNo(), barcode);
                     if (wrkMast != null) {
@@ -263,7 +296,34 @@
 
                                 throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触");
                             }
-                        } else {
+                        }
+//                        else if (jsonObject.getInteger("code").equals(700)) {
+//                            SearchLocParam param2 = new SearchLocParam();
+//                            param2.setBarcode(barcode);
+//                            param2.setBarcodeMat(barcodeMat);
+//                            param2.setSourceStaNo(inSta.getStaNo());
+//                            param2.setLocType1(locTypeDto.getLocType1());
+//                            String response2 = new HttpHandler.Builder()
+//                                    .setUri(wmsUrl)
+//                                    .setPath("/rpc/pakin/yk/loc/v33")
+//                                    .setJson(JSON.toJSONString(param2))
+//                                    .build()
+//                                    .doPost();
+//                            JSONObject jsonObject2 = JSON.parseObject(response2);
+//                            if (jsonObject2.getInteger("code").equals(200)) {
+//                                log.info("鑷姩缁勬墭鎴愬姛锛侊紒");
+//                                MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, "鑷姩缁勬墭鎴愬姛"));
+//                            } else {
+//                                MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, "鑷姩缁勬墭澶辫触锛侊紒锛乥arcodeMat==>"+barcodeMat));
+//                                News.error(methodName + "==>缁勬墭澶辫触:璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/pakin/yk/loc/v33", JSON.toJSONString(param), response2);
+//                            }
+//                            try{
+//                                Thread.sleep(500);
+//                            } catch (Exception e){
+//
+//                            }
+//                        }
+                        else {
                             staProtocol.setWorkNo(wrkNo);
                             wrkNo++;
                             staProtocol.setStaNo(inSta.getBackSta().shortValue());
@@ -530,7 +590,7 @@
                     String barcode = barcodeThread.getBarcode();
                     if(!Cools.isEmpty(barcode)) {
 //                        log.info("{}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", pickSta.getBarcode(), barcode);
-                        if("NG".endsWith(barcode) || "NoRead".equals(barcode) || "empty".equals(barcode)) {
+                        if("00000000".equals(barcode) || "NG".endsWith(barcode) || "NoRead".equals(barcode) || "empty".equals(barcode)) {
                             staProtocol.setWorkNo(wrkNo++);
                             staProtocol.setStaNo(pickSta.getBackSta().shortValue());
                             devpThread.setPakMk(staProtocol.getSiteId(), false);
@@ -620,7 +680,7 @@
                                 log.info("浠诲姟鍙�"+wrkMast.getWrkNo()+"鐩樼偣鍐嶅叆搴撴煡璇㈠簱浣嶆垚鍔�===>>" + jsonObject.toJSONString());
                                 try {
                                     // 鏇存柊绔欑偣淇℃伅 涓� 涓嬪彂plc鍛戒护
-                                    staProtocol.setWorkNo(wrkMast.getWrkNo());
+                                    staProtocol.setWorkNo(dto.getWorkNo());
                                     staProtocol.setStaNo((short)161);
                                     devpThread.setPakMk(staProtocol.getSiteId(), false);
 
@@ -794,7 +854,8 @@
             // 搴撲綅绉昏浆
             //mark - 3 - ....
             this.locToLoc(crn, crnProtocol,mark);
-//            this.crnRebackHp(crnProtocol, crnThread);
+            //棰勮皟搴�
+            this.crnRebackHp(crnProtocol, crnThread);
 
         }
 //        News.infoNoLog(""+mark+" - 0"+" - 鍫嗗灈鏈哄叆鍑哄簱浣滀笟涓嬪彂鎵ц瀹屾垚");
@@ -804,21 +865,17 @@
      * 鍥炲師鐐癸紝鍫嗗灈鏈烘病鏈夋墽琛屼腑浠诲姟锛岃澶囧瓨鍦ㄥ叆搴撲换鍔℃椂鍙洖鍘熺偣
      */
     public synchronized void crnRebackHp(CrnProtocol crnProtocol, CrnThread crnThread) {
-//        for (CrnSlave crn : slaveProperties.getCrn()) {
-//            // 鑾峰彇鍫嗗灈鏈轰俊鎭�
-//            CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crn.getId());
-//            CrnProtocol crnProtocol = crnThread.getCrnProtocol();
-//            if (crnProtocol == null) {
-//                continue;
-//            }
-//            BasCrnp basCrnp = basCrnpService.selectById(crn.getId());
-//            if (basCrnp == null) {
-//                log.error("{}鍙峰爢鍨涙満灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�", crn.getId());
-//                continue;
-//            }
         if (crnProtocol.getStatusType() == CrnStatusType.IDLE && crnProtocol.getTaskNo() == 0 && crnProtocol.getModeType() == CrnModeType.AUTO) {
-            if (crnProtocol.getBay() == 1 && crnProtocol.getLevel() == 1) {
+            if (crnProtocol.getBay() == 1) {
                 return;
+            }
+            int x=1;
+            switch (crnProtocol.getCrnNo()){
+                case 1: x =1; break;
+                case 2: x =3; break;
+                case 3: x =5; break;
+                case 4: x =7; break;
+                case 5: x =9; break;
             }
 
             // 宸茬粡瀛樺湪鍚婅溅鎵ц浠诲姟鏃讹紝鍒欒繃婊�3,12
@@ -832,7 +889,7 @@
             }
 
             //杈撻�佺嚎娌℃湁鍏ュ簱浠诲姟锛岃繃婊�2
-            if (wrkMastMapper.selectDevWorking(crnProtocol.getCrnNo()) == null) {
+            if (wrkMastMapper.selectDevWorking(crnProtocol.getCrnNo()) != null) {
                 return;
             }
             News.info("鍫嗗灈鏈哄彫鍥炲師鐐�==>>" + crnProtocol.getCrnNo() + "鍙峰爢鍨涙満鏈夊叆搴撲换鍔�,鍙洖鍘熺偣");
@@ -841,10 +898,10 @@
             crnCommand.setCrnNo(crnProtocol.getCrnNo()); // 鍫嗗灈鏈虹紪鍙�
             crnCommand.setTaskNo((short) 9999); // 宸ヤ綔鍙�
             crnCommand.setAckFinish((short) 0);  // 浠诲姟瀹屾垚纭浣�
-            crnCommand.setTaskMode(CrnTaskModeType.GO_ORIGIN); // 浠诲姟妯″紡:  鍥炲師鐐�
-            crnCommand.setSourcePosX((short) 0);     // 婧愬簱浣嶆帓
-            crnCommand.setSourcePosY((short) 0);     // 婧愬簱浣嶅垪
-            crnCommand.setSourcePosZ((short) 0);     // 婧愬簱浣嶅眰
+            crnCommand.setTaskMode(CrnTaskModeType.X_MOVE); // 浠诲姟妯″紡:  鍥炲師鐐�
+            crnCommand.setSourcePosX((short) x);     // 婧愬簱浣嶆帓
+            crnCommand.setSourcePosY((short) 1);     // 婧愬簱浣嶅垪
+            crnCommand.setSourcePosZ((short) 1);     // 婧愬簱浣嶅眰
             crnCommand.setDestinationPosX((short) 0);     // 鐩爣搴撲綅鎺�
             crnCommand.setDestinationPosY((short) 0);     // 鐩爣搴撲綅鍒�
             crnCommand.setDestinationPosZ((short) 0);     // 鐩爣搴撲綅灞�
@@ -853,6 +910,7 @@
             }
             crnThread.setBackHpFlag(true);
         }
+
 //        }
     }
 
@@ -1020,6 +1078,12 @@
                 if (wrkMast == null) {
                     continue;
                 }
+                if (wrkMast.getIoType() == 107){
+                    int count = wrkMastService.selectCount(new EntityWrapper<WrkMast>().eq("io_type", wrkMast.getIoType()).eq("wrk_sts", 14));
+                    if (count >= inventoryNumber) {
+                        continue;
+                    }
+                }
                 // 宸ヤ綔妗g姸鎬佸垽鏂�
                 if (wrkMast.getIoType() < 100 || wrkMast.getSourceStaNo() == null) {
                     News.error(""+mark+" - 2"+" - 1"+" - 鏌ヨ宸ヤ綔妗f暟鎹笉绗﹀悎鏉′欢--鍏ュ嚭绫诲瀷/绔欑偣, 宸ヤ綔鍙�={}锛屾簮搴撲綅={}锛屽叆鍑虹被鍨�={}", wrkMast.getWrkNo(), wrkMast.getSourceLocNo(), wrkMast.getIoType());
@@ -1057,8 +1121,16 @@
 //                    continue;
                 }
                 // 鍒ゆ柇鍫嗗灈鏈哄嚭搴撶珯鐘舵��
-                if (staProtocol.isAutoing() && !staProtocol.isLoading() && staDetl.getCanouting() != null && staDetl.getCanouting().equals("Y")
-                        && staProtocol.getWorkNo() == 0 && staProtocol.isOutEnable()) {
+//                if (staProtocol.isAutoing() && !staProtocol.isLoading() && staDetl.getCanouting() != null && staDetl.getCanouting().equals("Y")
+//                        && staProtocol.getWorkNo() == 0 && staProtocol.isOutEnable()) {
+
+                if (staProtocol.isAutoing() && staDetl.getCanouting() != null && staDetl.getCanouting().equals("Y")
+                        ) {
+                    if (slave.getId() == 1 || slave.getId() == 2){
+                        if (staProtocol.isLoading() || staProtocol.getWorkNo() != 0 || !staProtocol.isOutEnable()){
+                            continue;
+                        }
+                    }
                     // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
 
                     // 鍫嗗灈鏈烘帶鍒惰繃婊�
@@ -1368,7 +1440,7 @@
             }
             //  鐘舵�侊細绛夊緟纭 骞朵笖  浠诲姟瀹屾垚浣� = 1
             if (crnProtocol.statusType == CrnStatusType.WAITING && crnProtocol.getTaskNo() != 0) {
-                News.warnNoLog(""+mark+" - 0"+" - 寮�濮嬫墽琛屽宸ヤ綔妗g殑瀹屾垚鎿嶄綔");
+                News.warnNoLog(""+mark+" - 0"+" - 寮�濮嬫墽琛屽宸ヤ綔妗g殑瀹屾垚鎿嶄綔锛屼换鍔″彿:"+crnProtocol.getTaskNo());
 
                     // 鑾峰彇鍏ュ簱寰呯‘璁ゅ伐浣滄。
                     WrkMast wrkMast = wrkMastMapper.selectPakInStep3(crnProtocol.getTaskNo().intValue());
@@ -1767,13 +1839,13 @@
                 // 鑾峰彇鍙夎溅绔欑偣
                 StaProtocol staProtocol = devpThread.getStation().get(staNo);
                 if (staProtocol == null) { continue; }
-                if (staProtocol.getWorkNo() != 0) {
+                if (staProtocol.getWorkNo() != 0 || staProtocol.isErr()) {
                     reset = false;
                     break;
                 }
             }
             // 鑾峰彇led绾跨▼
-            LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, led.getDevpPlcId());
+            LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, led.getId());
             // led鏄剧ず榛樿鍐呭
             if (reset) {
                 if (ledThread == null) {
@@ -1927,7 +1999,7 @@
             wrkMast.setCrnNo(crn.getId());
             wrkMast.setSourceLocNo(shallowLoc.getLocNo()); // 婧愬簱浣�
             wrkMast.setLocNo(loc.getLocNo()); // 鐩爣搴撲綅
-            wrkMast.setFullPlt(shallowLoc.getFullPlt()); // 婊℃澘
+            wrkMast.setFullPlt(shallowLoc.getLocSts().equals("F") ? "Y" : "N"); // 婊℃澘
             wrkMast.setPicking("N"); // 鎷f枡
             wrkMast.setExitMk("N"); // 閫�鍑�
             wrkMast.setEmptyMk(shallowLoc.getLocSts().equals("D") ? "Y" : "N"); // 绌烘澘
@@ -2223,7 +2295,7 @@
     public synchronized void autoEmptyOut() {
         SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1);
         List<Integer> list = new ArrayList<>();
-        list.add(101);list.add(112);
+        list.add(1108);list.add(112);
         Map<Integer,Integer> map = new HashMap<>();
         map.put(101,102);map.put(112,111);
         for (Integer site:list){
@@ -2248,9 +2320,6 @@
                     return;
                 }
                 Short loctype1 = 1;
-                if (site == 101){
-                    loctype1 = 2;
-                }
                 LocTypeDto locTypeDto = new LocTypeDto(loctype1, (short) 1, (short) 1);
                 locTypeDto.setSiteId(site);
                 try {
@@ -2279,7 +2348,7 @@
     public synchronized void autoEmptyIn() {
         SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1);
         List<Integer> list = new ArrayList<>();
-        list.add(153);list.add(157);
+        list.add(1038);
         for (Integer site:list){
             StaProtocol staProtocol = devpThread.getStation().get(site);
             if (staProtocol == null) {
@@ -2296,9 +2365,6 @@
 
                 try {
                     Short loctype1 = 1;
-                    if (site == 153){
-                        loctype1 = 2;
-                    }
                     LocTypeDto locTypeDto = new LocTypeDto(loctype1, (short) 1, (short) 1);
                     locTypeDto.setSiteId(site);
 
@@ -2332,12 +2398,15 @@
      * 灏忚溅鍦板浘鏇存柊  鏇存柊閿�
      * */
     public synchronized boolean rgvMapUpdate(BasRgvMap basRgvMapCurrent,Integer staStart,Integer staEnd,String sign){
+//        log.info("灏忚溅鍦板浘鏇存柊锛乕鏍囪锛歿}];[BasRgvMap锛歿}];[staStart锛歿}];[staEnd锛歿}];",sign,JSON.toJSONString(basRgvMapCurrent),staStart,staEnd);
 
 //        List<Integer> integers = RouteUtils.RouteMapCurrentFar(basRgvMapCurrent.getNowRoute(),staStart,staEnd, basRgvMapCurrent.getLockStartRoute());
         //鏇存柊褰撳墠灏忚溅閿�
         try{
             Integer farCurrentStaNo = RouteUtils.RouteIndexFarMas(basRgvMapCurrent.getNowRoute(), staStart, staEnd, basRgvMapCurrent.getLockStartRoute());//鑾峰彇鏈�杩滅珯鐐�
+//            log.info("灏忚溅鍦板浘鏇存柊锛佽幏鍙栨渶杩滅珯鐐�;[farCurrentStaNo锛歿}]",farCurrentStaNo);
             Integer fallMerge = RouteUtils.RouteIndexFarMas(basRgvMapCurrent.getRgvNo(), farCurrentStaNo); //鑾峰彇鍚堝苟骞叉秹椤�
+//            log.info("灏忚溅鍦板浘鏇存柊锛佽幏鍙栧悎骞跺共娑夐」;[fallMerge锛歿}]",fallMerge);
             basRgvMapCurrent.setLockEndRoute(fallMerge);
             Integer i = basRgvMapMapper.updateById(basRgvMapCurrent);
 //            if (i>0){
@@ -2346,9 +2415,14 @@
 
             //鏇存柊鍙︿竴鍙板皬杞﹀湴鍥�
             Integer rgvNoOther = basRgvMapCurrent.getRgvNoOther(basRgvMapCurrent.getRgvNo());
+//            log.info("灏忚溅鍦板浘鏇存柊锛佸彟涓�鍙板皬杞﹀彿;[rgvNoOther锛歿}]",rgvNoOther);
+
             BasRgvMap basRgvMapOther = basRgvMapMapper.selectById(rgvNoOther);
+//            log.info("灏忚溅鍦板浘鏇存柊锛佸彟涓�鍙板皬杞�;[basRgvMapOther锛歿}]",JSON.toJSONString(basRgvMapOther));
+
             List<Integer> integers = RouteUtils.RouteMapCurrentFar(fallMerge, basRgvMapCurrent.getLockStartRoute());
             Integer lockEndRoute = RouteUtils.RouteMapOtherFarStnNo(integers, basRgvMapCurrent.getLockStartRoute());//鍙︿竴鍙板皬杞﹀彲娲诲姩鏈�杩滀綅缃�
+//            log.info("灏忚溅鍦板浘鏇存柊锛佸彟涓�鍙板皬杞﹀彲娲诲姩鏈�杩滀綅缃�;[lockEndRoute锛歿}]",lockEndRoute);
             basRgvMapOther.setEndRoute(lockEndRoute);
             Integer i1 = basRgvMapMapper.updateById(basRgvMapOther);
 //            if (i1>0){
@@ -2356,7 +2430,7 @@
 //            }
             return true;
         }catch (Exception e){
-            log.error("灏忚溅鍦板浘鏇存柊鍑洪敊锛�");
+            log.error("灏忚溅鍦板浘鏇存柊鍑洪敊锛佸紓甯稿師鍥狅細"+e);
             return false;
         }
     }
@@ -2425,6 +2499,26 @@
         }
     }
 
+    /**
+     *  鑷姩鐢熸垚RGV鎺ラ┏浠诲姟锛堟绱㈠嚭鍏ュ彛浠诲姟锛岀敓鎴愬搴擱GV浠诲姟锛屾绱�4妤间换鍔★紝闈�3鍙峰爢鍨涙満锛屽垯鐢熸垚瀵瑰簲鎺ラ┏浠诲姟锛�
+     */
+//    public synchronized  void rgvCreateWrkMastSta(){
+//        try{
+//            for (DevpSlave devp : slaveProperties.getDevp()) {
+//                SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
+//                StaProtocol staProtocol = devpThread.getStation().get(1105);
+//                if (staProtocol == null) {
+//                    continue;
+//                } else {
+//                    staProtocol = staProtocol.clone();
+//                }
+//                if (!staProtocol.isAutoing() || !staProtocol.isLoading()){
+//                    continue;
+//                }
+//            }
+//        }
+//    }
+
 
     /**
      *  瀹屾垚灏忚溅浠诲姟
@@ -2454,17 +2548,17 @@
                 ){
                     log.info("{}鍙峰皬杞︾瓑寰厀cs纭锛岀姸鎬亄}锛屽弬鏁皗}",rgvProtocol.getRgvNo(),rgvProtocol.getStatusType(),rgvProtocol);
                     if (rgvProtocol.getTaskNo1()!=0){
-                        if (rgvProtocol.getTaskNo1()==32222){
-                            boolean rgvComplete = rgvComplete(rgvProtocol.getRgvNo());
-                            if (!rgvComplete){
-                                log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{}锛�",rgvProtocol.getRgvNo());
-                            }
-                            BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
-                            basRgvMap.setNowRoute(rgvProtocol.getRgvPosI());
-                            rgvMapUpdate(basRgvMap,basRgvMap.getStartRoute(),basRgvMap.getStartRoute(),"2415");
-                            rgvThread.setPakMk(true);
-                            break;
-                        }
+//                        if (rgvProtocol.getTaskNo1()==32222){
+//                            boolean rgvComplete = rgvComplete(rgvProtocol.getRgvNo());
+//                            if (!rgvComplete){
+//                                log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{}锛�",rgvProtocol.getRgvNo());
+//                            }
+//                            BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
+//                            basRgvMap.setNowRoute(rgvProtocol.getRgvPosI());
+//                            rgvMapUpdate(basRgvMap,basRgvMap.getStartRoute(),basRgvMap.getStartRoute(),"2415");
+//                            rgvThread.setPakMk(true);
+//                            break;
+//                        }
                         WrkMastSta wrkMastSta = wrkMastStaMapper.selectByWrkNo(rgvProtocol.getTaskNo1().intValue());
                         if (Cools.isEmpty(wrkMastSta) || wrkMastSta.getWrkSts()!=1){
                             log.error("鏈煡鍒板皬杞︽墽琛屼换鍔℃垨鑰呮墽琛屼换鍔$姸鎬佷笉绗﹀悎锛�"+wrkMastSta);
@@ -2494,22 +2588,31 @@
                             if (!MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol))) {
                                 continue;
                             }
-                        }else {
-                            log.error("rgv浠诲姟瀹屾垚缁欒緭閫佺嚎涓嬪彂鍛戒护,浣嗘湭鏌ヨ鍒板伐浣滄。");
-                            // 涓嬪彂绔欑偣淇℃伅
-                            Map<Integer,Integer> map = new HashMap<>();
-                            map.put(101,102);map.put(112,111);
-                            map.put(100,100);
-                            staProtocol.setWorkNo(rgvProtocol.getTaskNo1().intValue());
-                            staProtocol.setStaNo(map.get(rgvProtocol.getRgvPosI()).shortValue());
-                            devpThread.setPakMk(staProtocol.getSiteId(), false);
-//                            log.error("rgv浠诲姟瀹屾垚缁欒緭閫佺嚎涓嬪彂鍛戒护锛�"+wrkMast.getWrkNo()+","+wrkMast.getStaNo());
-                            if (!MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol))) {
-                                continue;
-                            }
                         }
-                        boolean rgvComplete = rgvComplete(rgvProtocol.getRgvNo());
-//                        boolean rgvComplete = true;
+//                        else {
+//                            log.error("rgv浠诲姟瀹屾垚缁欒緭閫佺嚎涓嬪彂鍛戒护,浣嗘湭鏌ヨ鍒板伐浣滄。");
+//                            // 涓嬪彂绔欑偣淇℃伅
+//                            Map<Integer,Integer> map = new HashMap<>();
+//                            map.put(101,102);map.put(112,111);
+//                            map.put(100,100);
+//                            staProtocol.setWorkNo(rgvProtocol.getTaskNo1().intValue());
+//                            staProtocol.setStaNo(map.get(rgvProtocol.getRgvPosI()).shortValue());
+//                            devpThread.setPakMk(staProtocol.getSiteId(), false);
+////                            log.error("rgv浠诲姟瀹屾垚缁欒緭閫佺嚎涓嬪彂鍛戒护锛�"+wrkMast.getWrkNo()+","+wrkMast.getStaNo());
+//                            if (!MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol))) {
+//                                continue;
+//                            }
+//                        }
+                        int sourceSta = wrkMast.getSourceStaNo();
+                        boolean rgvComplete = false;
+
+                        //鍙屽伐浣嶅嚭鍏ュ簱涓嶅悓宸ヤ綅澶嶄綅
+                        if((sourceSta >= 1001 && sourceSta <= 1035) || (sourceSta >= 2001 && sourceSta <= 2030)){
+                            rgvComplete = rgvComplete(rgvProtocol.getRgvNo(),6);
+                        }else{
+                            rgvComplete = rgvComplete(rgvProtocol.getRgvNo(),3);
+
+                        }
                         if (!rgvComplete){
                             log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{}锛�",rgvProtocol.getRgvNo());
                             break;
@@ -2540,7 +2643,7 @@
     /**
      * 鎵ц灏忚溅鎼繍浠诲姟
      */
-    public synchronized void rgvRunWrkMastFullSta() {
+    public synchronized boolean rgvRunWrkMastFullSta() {
         boolean wrkEnable = false;
         try{
             List<BasRgvMap> basRgvMaps = basRgvMapService.selectList(new EntityWrapper<>());
@@ -2561,8 +2664,10 @@
                 // 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,宸ヤ綅涓�鏃犵墿//rgv鍙敤
                 if (rgvProtocol.getStatusType() == RgvStatusType.IDLE
                         && rgvProtocol.getModeType() == RgvModeType.AUTO
-                        && rgvProtocol.getLoaded1()==0
+                        && rgvProtocol.getLoaded1() == 0
                         && rgvProtocol.getTaskNo1() == 0
+                        && rgvProtocol.getTaskNo2() == 0
+                        && rgvProtocol.getLoaded2() == 0
                         && rgvThread.isPakMk()
                 ) {
                     BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
@@ -2574,42 +2679,71 @@
                     basRgvMap.setNowRoute(rgvProtocol.getRgvPosI()); //鏇存柊灏忚溅褰撳墠浣嶇疆绔欑偣鍙�
                     List<WrkMastSta> wrkMastStaList = wrkMastStaMapper.selectNoInterfereList(route, route);
                     for (WrkMastSta wrkMastSta : wrkMastStaList){
-                        if (wrkMastSta.getType()!=0 || wrkMastSta.getWrkType()!=3){//1:婊$増   3锛氬彇鏀�
-                            continue;
-                        }
+//                        if (wrkMastSta.getType()!=0 || wrkMastSta.getWrkType()!=3 || wrkMastSta.getWrkSts()!=0){//1:婊$増   3锛氬彇鏀�
+//                            continue;
+//                        }
+                        //鍒ゆ柇宸ヤ綔缁撴潫浣嶇疆鐘舵��
+//                        boolean signDev = false;
+//                        BasDevp devNo = basDevpService.selectOne(new EntityWrapper<BasDevp>().eq("dev_no", wrkMastSta.getStaEnd()));
+//                        if (devNo.getDevNo()==113){
+//                            BasDevp devNo114 = basDevpService.selectOne(new EntityWrapper<BasDevp>().eq("dev_no", 114));
+//                            if (!Cools.isEmpty(devNo114)){
+//                                if (devNo114.getOutEnable().equals("Y")){
+//                                    signDev = true;
+//                                }
+//                            }
+//                        }
+//                        if (!Cools.isEmpty(devNo)){
+//                            if (devNo.getAutoing().equals("Y") && !devNo.getWrkNo().equals(0) && !devNo.getLoading().equals("N")){
+//                                continue;
+//                            }
+//                            if (!signDev && devNo.getDevNo()==113){
+//                                if (!devNo.getAutoing().equals("Y") || !devNo.getWrkNo().equals(0) || !devNo.getLoading().equals("N")){
+//                                    wrkEnable = true;
+//                                    continue;
+//                                }
+//                                if (!devNo.getOutEnable().equals("Y")){
+//                                    wrkEnable = true;
+//                                    continue;
+//                                }
+//                            }
+//                        }
                         boolean sign = rgvTakeFullAll(basRgvMap.getRgvNo(), wrkMastSta); //鍛戒护涓嬪彂
                         wrkEnable = true;
                         if (sign){
+                            wrkMastSta.setWrkSts(1);
+                            try{
+                                wrkMastStaMapper.updateById(wrkMastSta);
+                                log.error("鏇存柊灏忚溅浠诲姟鎴愬姛");
+                            }catch (Exception e){
+                                log.error("鏇存柊灏忚溅浠诲姟澶辫触");
+                            }
                             rgvThread.setPakMk(false);
                             boolean signMap = rgvMapUpdate(basRgvMap, wrkMastSta.getStaStart(), wrkMastSta.getStaEnd(),"2526");
                             if (signMap){
-                                Thread.sleep(300);
-                                wrkMastSta.setWrkSts(1);
-                                try{
-                                    wrkMastStaMapper.updateById(wrkMastSta);
-                                    return;
-                                }catch (Exception e){
-                                    log.error("鏇存柊灏忚溅浠诲姟澶辫触");
-                                }
-                                break;
+                                return wrkEnable;
+//                                break;
                             }else {
                                 log.error("3864琛岋紝璐х墿鎼繍浠诲姟锛氬伐浣滃彿{}鎵�灞炰换鍔′笅鍙戝悗鍦板浘鍚屾澶辫触",wrkMastSta.getWrkNo());
+                                Thread.sleep(500);
                             }
                         } else {
                             log.error("宸ヤ綔鍙穥}鎵�灞炰换鍔′笅鍙戝け璐�",wrkMastSta.getWrkNo());
+                            Thread.sleep(500);
                         }
                         break;
                     }
                 }
 
             }
-            if (!wrkEnable){
-                rgvRunWrkMastEmptyStaAvoidance();
-            }
+//            if (!wrkEnable){
+//                rgvRunWrkMastEmptyStaAvoidance();
+//            }
         }catch (Exception e){
             log.error("3875琛屾墽琛屽皬杞︽惉杩愪换鍔′笅鍙戝け璐�");
             log.error("3875琛�"+e);
         }
+        return wrkEnable;
     }
     /**
      * 鎵ц灏忚溅鎼繍浠诲姟
@@ -2851,21 +2985,41 @@
      * */
     public synchronized boolean rgvTakeFullAll(Integer rgvId,WrkMastSta wrkMastSta){
         try{
+            int startSta = wrkMastSta.getStaStart();
             //  鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
             RgvCommand rgvCommand = new RgvCommand();
             rgvCommand.setRgvNo(rgvId); // RGV缂栧彿
-            rgvCommand.setAckFinish1((short) 0);  // 宸ヤ綅1浠诲姟瀹屾垚纭浣�
-            rgvCommand.setTaskNo1(wrkMastSta.getWrkNo().shortValue()); // 宸ヤ綅1宸ヤ綔鍙�
-            rgvCommand.setTaskMode1(RgvTaskModeType.FETCH_PUT); // 宸ヤ綅1浠诲姟妯″紡:  鍙栨斁璐�
-            rgvCommand.setSourceStaNo1(wrkMastSta.getStaStart().shortValue());   //宸ヤ綅1璧风偣
-            rgvCommand.setDestinationStaNo1(wrkMastSta.getStaEnd().shortValue());   //宸ヤ綅1鐩爣绔欑偣
-            rgvCommand.setCommand((short) 1);   //宸ヤ綅1浠诲姟纭
-            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;
+            if((startSta >= 1001 && startSta <= 1035) || (startSta >= 2001 && startSta <= 2030)){//鍑哄簱RGV鍙栬揣
+                rgvCommand.setAckFinish2((short) 0);  // 宸ヤ綅1浠诲姟瀹屾垚纭浣�
+                rgvCommand.setTaskNo2(wrkMastSta.getWrkNo().shortValue()); // 宸ヤ綅2宸ヤ綔鍙�
+                rgvCommand.setTaskMode2(RgvTaskModeType.FETCH_PUT); // 宸ヤ綅2浠诲姟妯″紡:  鍙栨斁璐�
+                rgvCommand.setSourceStaNo2(wrkMastSta.getStaStart().shortValue());   //宸ヤ綅2璧风偣
+                rgvCommand.setDestinationStaNo2(wrkMastSta.getStaEnd().shortValue());   //宸ヤ綅2鐩爣绔欑偣
+                rgvCommand.setCommand((short) 2);   //宸ヤ綅1浠诲姟纭
+            }else{  //鍏ュ簱RGV鍙栬揣
+                rgvCommand.setAckFinish1((short) 0);  // 宸ヤ綅1浠诲姟瀹屾垚纭浣�
+                rgvCommand.setTaskNo1(wrkMastSta.getWrkNo().shortValue()); // 宸ヤ綅1宸ヤ綔鍙�
+                rgvCommand.setTaskMode1(RgvTaskModeType.FETCH_PUT); // 宸ヤ綅1浠诲姟妯″紡:  鍙栨斁璐�
+                rgvCommand.setSourceStaNo1(wrkMastSta.getStaStart().shortValue());   //宸ヤ綅1璧风偣
+                rgvCommand.setDestinationStaNo1(wrkMastSta.getStaEnd().shortValue());   //宸ヤ綅1鐩爣绔欑偣
+                rgvCommand.setCommand((short) 1);   //宸ヤ綅1浠诲姟纭
+            }
+            if(rgvCommand.getCommand() == 1){
+                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;
+                }
             }
         }catch (Exception e){
             return false;
@@ -2975,10 +3129,10 @@
     /*
      * 灏忚溅澶嶄綅
      * */
-    public synchronized boolean rgvComplete(Integer rgvId){
+    public synchronized boolean rgvComplete(Integer rgvId,Integer step){
         try{
             //  鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
-            if (!MessageQueue.offer(SlaveType.Rgv, rgvId, new Task(3, new RgvCommand()))) {
+            if (!MessageQueue.offer(SlaveType.Rgv, rgvId, new Task(step, new RgvCommand()))) {
                 //step=2,宸ヤ綅1銆�2鍐欎换鍔★紱   step=4锛屽伐浣�1鍐欎换鍔★紱     step=5锛屽伐浣�2鍐欎换鍔�
                 log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}",rgvId);
                 return false;

--
Gitblit v1.9.1