From 8201281992c1fe2968e6a9f7c87c5184c8c1c804 Mon Sep 17 00:00:00 2001
From: 1 <1>
Date: 星期四, 11 十二月 2025 15:53:19 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java |  478 +++++++++++++++++++++++++++++++++++++++++++++++------------
 1 files changed, 382 insertions(+), 96 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 8bd8a93..b4b2b85 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -50,6 +50,7 @@
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.interceptor.TransactionAspectSupport;
 
+import java.text.SimpleDateFormat;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -152,6 +153,10 @@
                     continue;
                 }
 
+                if(!staProtocol.isAutoing()){
+                    continue;
+                }
+
 
                 String barcode = barcodeThread.getBarcode();
 
@@ -196,6 +201,9 @@
                         continue;
                     }
                     if (!staProtocol.isPakMk()) {
+                        continue;
+                    }
+                    if(!staProtocol.isAutoing()){
                         continue;
                     }
                     // led 寮傚父鏄剧ず
@@ -1145,7 +1153,7 @@
             //mark - 3 - ....
             this.locToLoc(crn, crnProtocol,mark);
             //棰勮皟搴�
-//            this.crnRebackHp(crnProtocol, crnThread);
+            this.crnRebackHp(crn, crnProtocol, crnThread);
 
         }
 //        News.infoNoLog(""+mark+" - 0"+" - 鍫嗗灈鏈哄叆鍑哄簱浣滀笟涓嬪彂鎵ц瀹屾垚");
@@ -1154,10 +1162,30 @@
     /**
      * 鍥炲師鐐癸紝鍫嗗灈鏈烘病鏈夋墽琛屼腑浠诲姟锛岃澶囧瓨鍦ㄥ叆搴撲换鍔℃椂鍙洖鍘熺偣
      */
-    public synchronized void crnRebackHp(CrnProtocol crnProtocol, CrnThread crnThread) {
+    public synchronized void crnRebackHp(CrnSlave slave, CrnProtocol crnProtocol, CrnThread crnThread) {
         if (crnProtocol.getStatusType() == CrnStatusType.IDLE && crnProtocol.getTaskNo() == 0 && crnProtocol.getModeType() == CrnModeType.AUTO) {
-            if (crnProtocol.getBay() == 1) {
+            if (crnProtocol.getBay() == 52) {
                 return;
+            }
+            BasCrnp basCrnp = basCrnpService.selectOne(
+                    new EntityWrapper<BasCrnp>().eq("crn_no", crnProtocol.getCrnNo())
+            );
+            boolean result = true;
+            if(crnProtocol.getCrnNo() != 5){
+                return;
+            }
+            for (CrnSlave.CrnStn crnStn : slave.getCrnInStn()) {
+                DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, crnStn.getDevpPlcId());
+                StaProtocol staProtocol = devpThread.getStation().get(crnStn.getStaNo2());
+                if (staProtocol == null) {
+                    News.infoNoLog(" - 鍫嗗灈鏈哄叆搴撶珯淇℃伅(staProtocol!=null缁х画鎵ц)锛歴taProtocol="+staProtocol);
+                    return;
+                } else {
+                    staProtocol = staProtocol.clone();
+                }
+                if(staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.getWorkNo() > 0 ){
+                    result =false;
+                }
             }
             int x=1;
             switch (crnProtocol.getCrnNo()){
@@ -1167,10 +1195,18 @@
                 case 4: x =14; break;
                 case 5: x =18; break;
             }
-
+            Date modiTime = basCrnp.getModiTime();
+            Date now = new Date();
+            // 褰撳墠鏃堕棿 - 淇敼鏃堕棿 > 1鍒嗛挓锛�60000姣锛�
+            if(result){
+                if (now.getTime() - modiTime.getTime() < 60 * 1000) {
+                    return;
+                }
+            }
             if(crnProtocol.getCrnNo() != 5){
                 return;
             }
+
             // 宸茬粡瀛樺湪鍚婅溅鎵ц浠诲姟鏃讹紝鍒欒繃婊�3,12
             if (wrkMastMapper.selectWorking(crnProtocol.getCrnNo()) != null) {
                 return;
@@ -1203,8 +1239,6 @@
             }
             crnThread.setBackHpFlag(true);
         }
-
-//        }
     }
 
     /**
@@ -1997,9 +2031,6 @@
                 //  鐘舵�侊細绛夊緟纭 骞朵笖  浠诲姟瀹屾垚浣� = 1
                 if (crnProtocol.statusType == CrnStatusType.WAITING && crnProtocol.getTaskNo() != 0) {
                     News.warnNoLog("" + mark + " - 0" + " - 寮�濮嬫墽琛屽宸ヤ綔妗g殑瀹屾垚鎿嶄綔锛屼换鍔″彿:" + crnProtocol.getTaskNo());
-
-
-
                     // 鍫嗗灈鏈哄浣�
                     News.warnNoLog("" + mark + " - 2" + " - 淇敼鎴愬姛鍚庡浣嶅爢鍨涙満 : 鍫嗗灈鏈哄彿={}", crnThread.getCrnProtocol().getCrnNo());
                     crnThread.setResetFlag(true);
@@ -2387,7 +2418,7 @@
                         } else {
                             total = locDetl.getAnfme();
                         }
-                        ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getOrderNo(), wrkDetl.getSupp(), wrkDetl.getSku(),wrkDetl.getAnfme(),total));
+                        ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getOrderNo(), wrkDetl.getBoxType3(), wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3(),wrkDetl.getAnfme(),total));
                     });
                 }
                 if (wrkMast.getIoType() != 110 && wrkMast.getIoType() != 10) {
@@ -2403,13 +2434,13 @@
                             total = locDetl.getAnfme();
                         }
                         if (wrkMast.getIoType() == 101 || wrkMast.getIoType() == 1) {
-                            ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getOrderNo(), wrkDetl.getSupp(), wrkDetl.getSku(),wrkDetl.getAnfme(),total));
+                            ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getOrderNo(), wrkDetl.getBoxType3(), wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3(),wrkDetl.getAnfme(),total));
                         }
                         if (wrkMast.getIoType() == 103 && (null == wrkDetl.getInspect() || 0 == wrkDetl.getInspect())) {
-                            ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getOrderNo(), wrkDetl.getSupp(), wrkDetl.getSku(),wrkDetl.getAnfme(),total));
+                            ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getOrderNo(), wrkDetl.getBoxType3(), wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3(),wrkDetl.getAnfme(),total));
                         }
                         if (wrkMast.getIoType() == 107) {
-                            ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getOrderNo(), wrkDetl.getSupp(), wrkDetl.getSku(),wrkDetl.getAnfme(),total));
+                            ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getOrderNo(), wrkDetl.getBoxType3(), wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3(),wrkDetl.getAnfme(),total));
                         }
                     });
                 }
@@ -2978,8 +3009,12 @@
     }
 
     public synchronized void autoEmptyIn() {
-         SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1);
+        SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1);
         List<Integer> list = new ArrayList<>();
+        List<WrkMast> wrkMast = wrkMastService.selectList(new EntityWrapper<WrkMast>().eq("source_sta_no",1038));
+        if(wrkMast.size() >3){
+            return;
+        }
         list.add(1038);
         for (Integer site:list){
             StaProtocol staProtocol = devpThread.getStation().get(site);
@@ -3016,6 +3051,11 @@
                         staProtocol.setStaNo(site.shortValue());
                         devpThread.setPakMk(site,false);
                         MessageQueue.offer(SlaveType.Devp, 1, new Task(2, staProtocol));
+                        Date now = new Date();
+                        System.out.println("灏忚溅涓嬪彂鍛戒护鏃堕棿锛�" +
+                                    new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS").format(now));
+
+
                     } else {
                         News.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/auto/emptyIn/v1", JSON.toJSONString(locTypeDto), response);
                     }
@@ -3682,11 +3722,38 @@
 
             }
 
-//            if(rgvProtocol.getStatusType1() == RgvStatusType.IDLE && rgvProtocol.getTaskNo1() == 0 && rgvThread.isPakIn() && rgvThread.isPakRgv()){
-//                rgvPreScheduling();//鑻ユ殏鏃犱笅鍙戜换鍔¢璋冨害鎻愬墠鍒板彇璐х偣
-//            }
-
-
+            if(rgvProtocol.getStatusType1() == RgvStatusType.IDLE &&
+                    rgvProtocol.getModeType() == RgvModeType.AUTO && rgvThread.isPakMk()
+                    && rgvThread.isPaking() && basRgv.getPakAll().equals("1")){
+                if(basRgv.getPakOut().equals("1") && basRgv.getPakIn().equals("1")){
+                    rgvPreSchedulingIn(rgv, rgvProtocol);//鑻ユ殏鏃犱笅鍙戜换鍔¢璋冨害鎻愬墠鍒板彇璐х偣
+                    if (rgvProtocol.getLastIo().equals("I")) {
+                        if (basRgv.getInEnable().equals("1") && basRgv.getPakIn().equals("1")) {
+                            //mark - 1 - ....
+                            if (rgvProtocol.getTaskNo1()==0){
+                                rgvPreSchedulingIn(rgv, rgvProtocol);//鑻ユ殏鏃犱笅鍙戜换鍔¢璋冨害鎻愬墠鍒板彇璐х偣
+                            }
+                        } else if (basRgv.getOutEnable().equals("1") && basRgv.getPakOut().equals("1")) {
+                            //mark - 2 - ....
+                            if (rgvProtocol.getTaskNo2()==0){
+                                this.rgvPreSchedulingOut(rgv, rgvProtocol); //  鍑哄簱
+                            }
+                        }
+                    }
+                    // 濡傛灉鏈�杩戜竴娆℃槸鍑哄簱妯″紡
+                    else if (rgvProtocol.getLastIo().equals("O")) {
+                        if (basRgv.getOutEnable().equals("1")  && basRgv.getPakOut().equals("1")) {
+                            if (rgvProtocol.getTaskNo2()==0){
+                                this.rgvPreSchedulingOut(rgv, rgvProtocol); //  鍑哄簱
+                            }
+                        } else if (basRgv.getInEnable().equals("1") && basRgv.getPakIn().equals("1")) {
+                            if (rgvProtocol.getTaskNo1()==0){
+                                rgvPreSchedulingIn(rgv, rgvProtocol);//鑻ユ殏鏃犱笅鍙戜换鍔¢璋冨害鎻愬墠鍒板彇璐х偣
+                            }
+                        }
+                    }
+                }
+            }
         }
     }
     /**
@@ -3952,6 +4019,148 @@
                 basRgv.setPakIn("0");
                 basRgvService.updateById(basRgv);
 
+                rgvThread.setPaking(false);
+                try{
+                    wrkMastSta.setWrkSts(1);
+                    wrkMastStaMapper.updateById(wrkMastSta);
+                    log.error("鏇存柊灏忚溅浠诲姟鎴愬姛{}",wrkMastSta);
+                }catch (Exception e){
+                    log.error("鏇存柊灏忚溅浠诲姟澶辫触");
+                }
+            } else {
+                log.error("宸ヤ綔鍙穥}鎵�灞炰换鍔′笅鍙戝け璐�",wrkMastSta.getWrkNo());
+            }
+
+
+        }
+    }
+    /**
+     * 灏忚溅鍑哄簱浠诲姟鍙栬揣涓嬪彂
+     */
+    public synchronized void rgvPreSchedulingOut(RgvSlave slave, RgvProtocol rgvProtocol){
+        for (RgvSlave.RgvStn rgvStn : slave.getRgvOutTStn()) {//rgv鍑哄簱鍙栬揣绔欑偣
+            boolean flag = false;
+            //閬嶅巻rgv鍏ュ簱鍙栬揣绔欑偣
+            DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, rgvStn.getDevpPlcId());
+            StaProtocol staProtocol = devpThread.getStation().get(rgvStn.getStaNo2());
+            RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, (int) rgvProtocol.getRgvNo());
+            BasRgv basRgv = basRgvService.selectById(slave.getId());
+            if (basRgv == null) {
+                log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�4", slave.getId());
+                continue;
+            }
+            if(staProtocol.getWorkNo() == 0){
+                continue;
+            }
+            StaProtocol staProtocol2 = null;
+            WrkMastSta wrkMastSta3 = null;
+
+//            if(rgvStn.getStaNo2()!= null ){
+//                staProtocol2 = devpThread.getStation().get(rgvStn.getStaNo2());
+//                if (staProtocol2 == null) {
+//                    News.infoNoLog(" - Rgv鍑哄簱绔欎俊鎭�(staProtocol!=null缁х画鎵ц)锛歴taProtocol=" + staProtocol);
+//                    continue;
+//                } else {
+//                    staProtocol2 = staProtocol2.clone();
+//                }
+//                BasDevp staDetl2 = basDevpService.selectById(rgvStn.getStaNo2());
+//                if (staDetl2 == null) {
+//                    News.error( " - 鍑哄簱 ===>>Rgv绔欑偣鍦ㄦ暟鎹簱涓嶅瓨鍦�, 绔欑偣缂栧彿={}", rgvStn.getStaNo());
+//                    continue;
+//                }
+//                wrkMastSta3 = wrkMastStaMapper.selectByWrkNo(staProtocol2.getWorkNo());
+//
+//            }
+            if (staProtocol == null) {
+                News.infoNoLog(" - Rgv鍑哄簱绔欎俊鎭�(staProtocol!=null缁х画鎵ц)锛歴taProtocol=" + staProtocol);
+                continue;
+            } else {
+                staProtocol = staProtocol.clone();
+            }
+
+            // 鏌ヨ绔欑偣璇︾粏淇℃伅
+            BasDevp staDetl = basDevpService.selectById(rgvStn.getStaNo());
+            if (staDetl == null) {
+                News.error(" - 鍑哄簱 ===>>Rgv绔欑偣鍦ㄦ暟鎹簱涓嶅瓨鍦�, 绔欑偣缂栧彿={}", rgvStn.getStaNo());
+                continue;
+            }
+
+            if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.getWorkNo() > 0
+                    && staDetl.getCanouting() != null && staDetl.getCanouting().equals("Y")) {
+                flag = true;
+            }
+            if (!flag) {
+                News.errorNoLog(" - Rgv鍑哄簱鍙栬揣绔欎俊鎭�(浠ヤ笅闇�瑕佸叏true):"
+                        + "鑷姩淇″彿" + staProtocol.isAutoing() + "鏈夌墿淇″彿" + staProtocol.isLoading()
+                        + "宸ヤ綔鍙�>0" + staProtocol.getWorkNo() + "鍙叆淇″彿" + staProtocol.isOutEnable()
+                        + "鑳藉叆淇″彿锛坵ms璁剧疆锛�.equals(\"Y\")" + staDetl.getCanouting());
+                continue;
+            }
+            BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
+            List<Integer> route = new ArrayList<>();
+            switch (rgvProtocol.getRgvNo()){
+                case 1: route = RouteUtils.getRouteOne();break;
+                case 2: route = RouteUtils.getRouteTwo();break;
+            }
+            basRgvMap.setNowRoute(rgvProtocol.getRgvNo() == 1?rgvProtocol.getRgvPosI1():rgvProtocol.getRgvPosI2()); //鏇存柊灏忚溅褰撳墠浣嶇疆绔欑偣鍙�
+            basRgvMapService.updateById(basRgvMap);
+            WrkMastSta wrkMastSta = wrkMastStaMapper.selectNoInterfere(route, route, Long.valueOf(staProtocol.getWorkNo()));//鏍规嵁绔欑偣宸ヤ綔鍙峰拰灏忚溅宸ヤ綔鑼冨洿妫�绱换鍔℃。
+            WrkMastSta wrkMastSta1 = wrkMastStaMapper.selectByWrkNo( rgvProtocol.getTaskNo1());
+            if(basRgv.getPakToCrn().equals("0")){
+                wrkMastSta = wrkMastStaMapper.selectNoInterfereCrn(route, route, Long.valueOf(staProtocol2.getWorkNo()));//澶勭悊鎺ラ┏浠诲姟鏃讹紝杩炵画鍙彇鎺ラ┏浠诲姟
+            }
+            if( null == wrkMastSta ) {
+                News.infoNoLog(" - 鏌ヨ鏃犲緟鍑哄簱鏁版嵁--wrk_sts0, 宸ヤ綔鍙�={}", staProtocol2.getWorkNo());
+                continue;
+            }
+            boolean result = false;
+            if( LEFT_POSITION.contains(wrkMastSta.getStaEnd())){
+                StaProtocol staProtocolSta = devpThread.getStation().get(wrkMastSta.getStaEnd());
+                if (staProtocolSta == null) {
+                    News.infoNoLog(" - Rgv鍑哄簱绔欎俊鎭�(staProtocol!=null缁х画鎵ц)锛歴taProtocol=" + staProtocol);
+                    continue;
+                } else {
+                    staProtocolSta = staProtocolSta.clone();
+                }
+                if(staProtocolSta.isLoading()){
+                    continue;
+                }
+            }
+            wrkMastSta.setWorkSta(1);//鑻�1鍙峰伐浣嶆湁浠诲姟缁�2鍙峰伐浣�
+            wrkMastSta.setRgvNo((int) rgvProtocol.getRgvNo());
+            boolean sign = false;
+
+            sign = rgvTakeFullAll(basRgvMap.getRgvNo(), wrkMastSta); //鍛戒护涓嬪彂
+            if (sign){
+                if(wrkMastSta.getMk() == 1){//鑻ュ凡鎵ц
+                    basRgv.setPakAll("1");
+                    basRgvService.updateById(basRgv);
+                }
+                if(LEFT_POSITION.contains(wrkMastSta.getStaEnd())){
+                    basRgv.setPakToCrn("0");
+                    basRgvService.updateById(basRgv);
+                    if(wrkMastSta3 != null){
+                        if(!LEFT_POSITION.contains(wrkMastSta3.getStaEnd())){
+                            wrkMastSta3 = null;//鑻ユ帴椹崇浜屼綅涓嶆帴椹虫椂鍙栨秷杩炵画鍙栬揣
+                        }
+                    }
+                }
+                if(wrkMastSta3 != null ){
+                    List<WrkMastSta> wrkMastStaPaking = wrkMastStaService.selectPakingWrk(wrkMastSta3.getStaStart());
+                    if(wrkMastStaPaking.size() < 1){
+                        wrkMastSta3.setMk(1);
+                        basRgv.setPakAll("0");
+                        basRgvService.updateById(basRgv);
+                        try{
+                            wrkMastStaMapper.updateById(wrkMastSta3);
+                            log.error("閿佸畾鐩搁殧绔欑偣浠诲姟");
+                        }catch (Exception e){
+                            log.error("閿佸畾鐩搁殧绔欑偣浠诲姟澶辫触");
+                        }
+                    }
+                }
+                basRgv.setPakIn("0");
+                basRgvService.updateById(basRgv);
                 rgvThread.setPaking(false);
                 try{
                     wrkMastSta.setWrkSts(1);
@@ -4233,77 +4442,140 @@
     /**
      * 灏忚溅棰勮皟搴�
      */
-//    public synchronized  void rgvPreScheduling(){
-//        try{
-//            List<BasRgvMap> basRgvMaps = basRgvMapService.selectList(new EntityWrapper<>());
-//            for (BasRgvMap rgvSlave:basRgvMaps) {
-//                RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getRgvNo());
-//                RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
-//                if (rgvProtocol == null) {
-//                    continue;
-//                }else {
-//                    rgvProtocol = rgvProtocol.clone();
-//                }
-//                BasRgv basRgv = basRgvService.selectById(rgvSlave.getRgvNo());
-//                if (basRgv == null) {
-//                    log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�4", rgvSlave.getRgvNo());
-//                    continue;
-//                }
-//
-//                // 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,宸ヤ綅涓�鏃犵墿//rgv鍙敤  鎵嶈繘琛岄璋冨害
-//                if (rgvProtocol.getStatusType() == RgvStatusType.IDLE
-//                        && rgvProtocol.getModeType() == RgvModeType.AUTO
-//                        && !rgvProtocol.isLoaded1ing()
-//                        && rgvProtocol.getTaskNo1() == 0
-//                        && !rgvProtocol.isLoaded2ing()
-//                        && rgvProtocol.getTaskNo2() == 0
-//                        && rgvThread.isPakMk()
-//                ) {
-//                    BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
-//                    if (basRgvMap == null) {
-//                        log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱鍦板浘涓繘琛岀淮鎶わ紒", rgvProtocol.getRgvNo());
-//                        continue;
-//                    }
-//                    List<Integer> route = RouteUtils.getRoute(basRgvMap.getStartRoute(), basRgvMap.getEndRoute());
-//                    basRgvMap.setNowRoute(rgvProtocol.getRgvPosI()); //鏇存柊灏忚溅褰撳墠浣嶇疆绔欑偣鍙�
-//                    // 鏍规嵁杈撻�佺嚎plc閬嶅巻
-//                    for (DevpSlave devp : slaveProperties.getDevp()) {
-//                        // 閬嶅巻鍏ュ簱鍙�  鍏ュ簱棰勮皟搴�
-//                        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);
-//                            if(staProtocol.isLoading()){
-//                                RgvCommand rgvCommand = new RgvCommand();
-//                                rgvCommand.setRgvNo((int) rgvProtocol.getRgvNo()); // RGV缂栧彿
-//                                rgvCommand.setAckFinish1(false);  // 宸ヤ綅1浠诲姟瀹屾垚纭浣�
-//                                rgvCommand.setTaskNo(9999); // 宸ヤ綅1宸ヤ綔鍙�
-//                                rgvCommand.setTaskMode1(RgvTaskModeType.X_MOVE); // 宸ヤ綅1浠诲姟妯″紡:  绉诲姩
-//                                switch (staNo){
-//                                    case 1043: rgvCommand.setTargetPosition1(1042);break;  //宸ヤ綅1鐩爣绔欑偣
-//                                    case 1104: rgvCommand.setTargetPosition1(1105);break;
-//                                    case 1037: rgvCommand.setTargetPosition1(1036);break;
-//
-//                                }
-//                                if(Objects.equals(basRgvMap.getNowRoute(), staNo)){
-//                                    continue;
-//                                }
-//                                rgvCommand.setCommand(true);   //宸ヤ綅1浠诲姟纭
-//                                if (!MessageQueue.offer(SlaveType.Rgv, (int) rgvProtocol.getRgvNo(), new Task(4, rgvCommand))) {
-//                                    //step=2,宸ヤ綅1銆�2鍐欎换鍔★紱   step=4锛屽伐浣�1鍐欎换鍔★紱     step=5锛屽伐浣�2鍐欎换鍔�
-//                                    log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", (int) rgvProtocol.getRgvNo(), JSON.toJSON(rgvCommand));
-//                                }
-//                            }
-//                        }
-//
-//                    }
-//
-//                }
-//            }
-//        }catch (Exception e){
-//            log.error("鎵ц灏忚溅绉诲姩涓嬪彂澶辫触");
-//        }
-//    }
+    public synchronized  void rgvPreSchedulingIn(RgvSlave slave, RgvProtocol rgvProtocol){
+        for (RgvSlave.RgvStn rgvStn : slave.getRgvInTStn()) {//rgv鍏ュ簱鍙栬揣绔欑偣
+            boolean flag = false;
+            BasRgv basRgv = basRgvService.selectById(slave.getId());
+            if (basRgv == null) {
+                log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�4", slave.getId());
+                continue;
+            }
+            if(rgvStn.getStaNo2() == null){
+                continue;
+            }
+            //閬嶅巻rgv鍏ュ簱鍙栬揣绔欑偣
+            DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, rgvStn.getDevpPlcId());
+            StaProtocol staProtocol = devpThread.getStation().get(rgvStn.getStaNo2()); //鍊掓暟绗簩涓�
+            StaProtocol staProtocol2 = null;  //杩炵画鍙栬揣浠诲姟绔欑偣
+            RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, (int) rgvProtocol.getRgvNo());
+            WrkMastSta wrkMastSta3 = null;//杩炲彇涓や釜
+            Integer staNo = null;  //涓庤皟搴�
+            switch (rgvStn.getStaNo2()){
+                case 1043: staNo = 1044;break;
+                case 1104: staNo = 1103;break;
+            }
+            if(staNo != null ){
+                staProtocol2 = devpThread.getStation().get(staNo);
+                if (staProtocol2 == null) {
+                    News.infoNoLog(" - Rgv鍏ュ簱绔欎俊鎭�(staProtocol!=null缁х画鎵ц)锛歴taProtocol=" + staProtocol);
+                    continue;
+                } else {
+                    staProtocol2 = staProtocol2.clone();
+                }
+                BasDevp staDetl2 = basDevpService.selectById(rgvStn.getStaNo2());
+                if (staDetl2 == null) {
+                    News.error(" - 鍏ュ簱 ===>>Rgv绔欑偣鍦ㄦ暟鎹簱涓嶅瓨鍦�, 绔欑偣缂栧彿={}", rgvStn.getStaNo());
+                    continue;
+                }
+                if((staProtocol.getWorkNo()>9999 && staProtocol2.getWorkNo()>9999) || (staProtocol.getWorkNo()<10000 && staProtocol2.getWorkNo()<10000)){
+                    //褰撹繛缁彇璐х珯鐐逛负鐩稿悓绫诲瀷鏃舵墠鑳借繛缁彇
+                    wrkMastSta3 = wrkMastStaMapper.selectByWrkNo(staProtocol2.getWorkNo());
+                }
+
+            }
+            if(rgvProtocol.getTaskNo2() > 9999 && staProtocol.getWorkNo() < 10000){
+                continue;
+            }
+
+            if (staProtocol == null) {
+                News.infoNoLog( " - Rgv鍏ュ簱绔欎俊鎭�(staProtocol!=null缁х画鎵ц)锛歴taProtocol=" + staProtocol);
+                continue;
+            } else {
+                staProtocol = staProtocol.clone();
+            }
+            // 鏌ヨ绔欑偣璇︾粏淇℃伅
+            BasDevp staDetl = basDevpService.selectById(rgvStn.getStaNo());
+            if (staDetl == null) {
+                News.error(" - 鍏ュ簱 ===>>Rgv绔欑偣鍦ㄦ暟鎹簱涓嶅瓨鍦�, 绔欑偣缂栧彿={}", rgvStn.getStaNo());
+                continue;
+            }
+            if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.getWorkNo() != 0
+                    && staDetl.getCanining() != null && staDetl.getCanining().equals("Y")) {
+                flag = true;
+            }
+            if (!flag) {
+                News.errorNoLog(" - 3" + " - Rgv鍏ュ簱鍙栬揣绔欎俊鎭�(浠ヤ笅闇�瑕佸叏true):"
+                        + "鑷姩淇″彿" + staProtocol.isAutoing() + "鏈夌墿淇″彿" + staProtocol.isLoading()
+                        + "宸ヤ綔鍙�>0" + staProtocol.getWorkNo() + "鑳藉叆淇″彿锛坵ms璁剧疆锛�.equals(\"Y\")" + staDetl.getCanining());
+                continue;
+            }
+            BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
+            List<Integer> route = new ArrayList<>();
+            switch (rgvProtocol.getRgvNo()){
+                case 1: route = RouteUtils.getRouteOne();break;
+                case 2: route = RouteUtils.getRouteTwo();break;
+            }
+            basRgvMap.setNowRoute(rgvProtocol.getRgvNo() == 1?rgvProtocol.getRgvPosI1():rgvProtocol.getRgvPosI2()); //鏇存柊灏忚溅褰撳墠浣嶇疆绔欑偣鍙�
+            basRgvMapService.updateById(basRgvMap);
+            WrkMastSta wrkMastSta = wrkMastStaMapper.selectNoInterfere(route, route, Long.valueOf(staProtocol.getWorkNo()));//鏍规嵁绔欑偣宸ヤ綔鍙峰拰灏忚溅宸ヤ綔鑼冨洿妫�绱换鍔℃。
+            if( null == wrkMastSta ) {
+                News.infoNoLog(" - 鏌ヨ鏃犲緟鍏ュ簱鏁版嵁--wrk_sts0, 宸ヤ綔鍙�={}", staProtocol.getWorkNo());
+                continue;
+            }
+            WrkMastSta wrkMastSta2 = null;
+            if(rgvProtocol.getTaskNo2() != null){
+                wrkMastSta2 = wrkMastStaMapper.selectByWrkNo(rgvProtocol.getTaskNo2());
+            }
+            boolean result = false;
+            if(wrkMastSta2 != null && rgvProtocol.getRgvNo() == 1){ //璺濈璁$畻   2妤煎崟鍏ュ簱鍙d笉闇�瑕佽绠�
+                result = rgvCalcDistance((int) rgvProtocol.getRgvNo(),wrkMastSta2.getStaEnd(),wrkMastSta.getStaStart());//宸ヤ綅2鏀捐揣绔欑偣锛屽伐浣�1鍙栬揣绔欑偣
+            }
+            if(result){//鑻ュ皬杞﹁窛绂绘斁璐х偣璺濈杩戜簬鍙栬揣鐐瑰垯璺宠繃鍙栬揣 true璺宠繃鍙栬揣/false浼樺厛鍙栬揣
+                basRgv.setPakRgv("0");
+                basRgvService.updateById(basRgv);
+
+//                rgvThread.setPakRgv(false);
+                continue;
+            }
+            wrkMastSta.setWorkSta(wrkMastSta2 !=null ? 1 : 2);
+            wrkMastSta.setRgvNo((int) rgvProtocol.getRgvNo());
+            boolean sign = false;
+            sign = rgvTakeFullAll(basRgvMap.getRgvNo(), wrkMastSta); //鍛戒护涓嬪彂
+            if (sign){
+
+                if(wrkMastSta3 != null ){
+                    List<WrkMastSta> wrkMastStaPaking = wrkMastStaService.selectPakingWrk(wrkMastSta3.getStaStart());
+                    if(wrkMastStaPaking.size() < 1 && !wrkMastSta3.getWrkNo().equals(wrkMastSta.getWrkNo())){//宸叉湁鏍囪涓嶅啀鏍囪
+                        wrkMastSta3.setMk(1);
+                        basRgv.setPakAll("0");
+                        basRgvService.updateById(basRgv);
+
+                        try{
+                            wrkMastStaMapper.updateById(wrkMastSta3);
+                            log.error("閿佸畾鐩搁殧绔欑偣浠诲姟");
+                        }catch (Exception e){
+                            log.error("閿佸畾鐩搁殧绔欑偣浠诲姟澶辫触");
+                        }
+                    }
+                }
+                basRgv.setPakOut("0");//鍑哄簱涓嶅厑璁�
+                basRgvService.updateById(basRgv);
+                rgvThread.setPaking(false);//浠诲姟涓嬪彂閿佸畾
+
+                try{
+                    wrkMastSta.setWrkSts(1);
+                    wrkMastStaMapper.updateById(wrkMastSta);
+                    log.error("鏇存柊灏忚溅浠诲姟鎴愬姛{}",wrkMastSta);
+                }catch (Exception e){
+                    log.error("鏇存柊灏忚溅浠诲姟澶辫触");
+                }
+            } else {
+                log.error("宸ヤ綔鍙穥}鎵�灞炰换鍔′笅鍙戝け璐�",wrkMastSta.getWrkNo());
+            }
+
+
+        }
+    }
 
 
 
@@ -4324,6 +4596,12 @@
                 type = RgvTaskStatusType.PUT; //鏀捐揣
                 targetPosition = wrkMastSta.getStaEnd();
             }
+            Date now = new Date();
+            if (targetPosition == 1038) {
+                System.out.println("灏忚溅涓嬪彂鍛戒护鏃堕棿锛�" +
+                        new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS").format(now));
+            }
+
             rgvCommand.setTaskNo(Math.toIntExact(wrkMastSta.getWrkNo())); // 宸ヤ綅宸ヤ綔鍙�
             rgvCommand.setTaskStatus(type); // 宸ヤ綅浠诲姟妯″紡:  鍙栬揣
             rgvCommand.setTargetPosition(targetPosition);   //宸ヤ綅鐩爣绔欑偣
@@ -4905,7 +5183,7 @@
                                         .eq("sta_no", basArm.getStaNoSou())
                                         .eq("status", 0)
                         );
-                        if (basArmMastList.isEmpty()){
+                         if (basArmMastList.isEmpty()){
                             continue;
                         }
                         if (basArmMastList.size()>1){
@@ -5046,6 +5324,7 @@
                     continue;
                 }
                 if (staProtocol.isAutoing() ) {
+                    //staProtocol.getWorkNo()>10000
                     if(staProtocol.getWorkNo()>10000){
                         BasAgvMast basAgvMast = new BasAgvMast();
                         List<BasAgvMast> basAgvMastList = basAgvMastService.selectList(new EntityWrapper<BasAgvMast>().eq("task_no", staProtocol.getWorkNo()));
@@ -5086,8 +5365,8 @@
                                 AgvBindCtnrAndBinParam agvBindCtnrAndBinParam = new AgvBindCtnrAndBinParam(basAgvMast);
                                 agvBindCtnrAndBinParam.setCtnrCode(basAgvMast.getTimestamp().toString());
                                 agvBindCtnrAndBinParam.setCtnrTyp("1");
-                                ReturnT<String> resultBind = new PostMesDataUtils().postMesDataAgv("AGV鍑哄簱瀹瑰櫒缁戝畾瑙g粦", AgvConstant.AGV_URL, AgvConstant.AGV_CTNRANDBING, agvBindCtnrAndBinParam);
-
+                                ReturnT<String> resultBind = new PostMesDataUtils().postMesDataAgv("AGV鍑哄簱瀹瑰櫒瑙g粦", AgvConstant.AGV_URL, AgvConstant.AGV_CTNRANDBING, agvBindCtnrAndBinParam);
+                                break;
                             }
                         }catch (Exception e){
                             News.error(JSON.toJSONString(e.getMessage()));
@@ -5096,7 +5375,10 @@
 
                     }
                     WrkMast wrkMast = wrkMastService.selectByWrkNo(staProtocol.getWorkNo());
-                    if(wrkMast.getIoType() == 110){
+                    if(Cools.isEmpty(wrkMast)){
+                        continue;
+                    }
+                    if(wrkMast.getIoType() == 110 ){
                         BasAgvMast basAgvMast = new BasAgvMast();
                         List<BasAgvMast> basAgvMastList = basAgvMastService.selectList(new EntityWrapper<BasAgvMast>().eq("task_no", staProtocol.getWorkNo()));
                         if(!basAgvMastList.isEmpty()){
@@ -5136,7 +5418,7 @@
                                 AgvBindCtnrAndBinParam agvBindCtnrAndBinParam = new AgvBindCtnrAndBinParam(basAgvMast);
                                 agvBindCtnrAndBinParam.setCtnrCode(basAgvMast.getTimestamp().toString());
                                 agvBindCtnrAndBinParam.setCtnrTyp("1");
-                                ReturnT<String> resultBind = new PostMesDataUtils().postMesDataAgv("AGV鍑哄簱瀹瑰櫒缁戝畾瑙g粦", AgvConstant.AGV_URL, AgvConstant.AGV_CTNRANDBING, agvBindCtnrAndBinParam);
+                                ReturnT<String> resultBind = new PostMesDataUtils().postMesDataAgv("AGV鍑哄簱瀹瑰櫒瑙g粦", AgvConstant.AGV_URL, AgvConstant.AGV_CTNRANDBING, agvBindCtnrAndBinParam);
 
                             }
                         }catch (Exception e){
@@ -5196,9 +5478,13 @@
                             basAgvMastService.insert(basAgvMast);
                             AgvBindCtnrAndBinParam agvBindCtnrAndBinParam = new AgvBindCtnrAndBinParam(basAgvMast);
                             agvBindCtnrAndBinParam.setCtnrCode(basAgvMast.getBarcode());
+                            if(basAgvMast.getFloorNo() == 3){
+                                LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no",dto.getLocNo()));
+                                locMast.setBarcode(wrkMast.getBarcode());
+                                locMastService.updateById(locMast);
+                            }
                             agvBindCtnrAndBinParam.setCtnrTyp("1");
                             ReturnT<String> resultBind = new PostMesDataUtils().postMesDataAgv("AGV瀹瑰櫒缁戝畾", AgvConstant.AGV_URL, AgvConstant.AGV_CTNRANDBING, agvBindCtnrAndBinParam);
-
                             wrkMast.setTakeNone("2");
                             wrkMastMapper.updateById(wrkMast);
                         } else {

--
Gitblit v1.9.1