From 8af4d8f9621cee06aca1207a180eba1cff7a0922 Mon Sep 17 00:00:00 2001
From: 1 <1>
Date: 星期一, 29 十二月 2025 09:06:51 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java |  687 ++++++++++++++++++++++++++++++++------------------------
 1 files changed, 392 insertions(+), 295 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 b4b2b85..155d1b3 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -114,6 +114,8 @@
     @Autowired
     private BasDevpOptService basDevpOptService;
     @Autowired
+    private BasRgvOptService basRgvOptService;
+    @Autowired
     private MatService matService;
 
     @Value("${wms.url}")
@@ -1038,7 +1040,11 @@
                         if (jsonObject.getInteger("code").equals(200)) {
                             staProtocolOut.setWorkNo(9997);
                             devpThread.setPakMk(staProtocolOut.getSiteId(), false);
-                            boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocolOut));
+                            Integer devpId = 1;
+                            if(staProtocolOut.getSiteId() > 2000){
+                                devpId = 2;
+                            }
+                            boolean result = MessageQueue.offer(SlaveType.Devp, devpId, new Task(2, staProtocolOut));
 
                             if (!result) {
                                 throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触");
@@ -1082,7 +1088,11 @@
                     if (jsonObject.getInteger("code").equals(200)) {
                         staProtocolIn.setWorkNo(9996);
                         devpThread.setPakMk(staProtocolIn.getSiteId(), false);
-                        boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocolIn));
+                        Integer devpId = 1;
+                        if(staProtocolIn.getSiteId() > 2000){
+                            devpId = 2;
+                        }
+                        boolean result = MessageQueue.offer(SlaveType.Devp, devpId, new Task(2, staProtocolIn));
 
                         if (!result) {
                             throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触");
@@ -1149,11 +1159,28 @@
                     }
                 }
             }
+
+            if (crnProtocol.getStatusType() == CrnStatusType.IDLE && crnProtocol.getTaskNo() == 0 && crnProtocol.getModeType() == CrnModeType.AUTO
+                    && crnProtocol.getLoaded() == 0 && crnProtocol.getForkPos() == 0 && crnProtocol.getCrnNo() == 3) {
+                News.warnNoLog(""+mark+" - 0"+" - 寮�濮嬫墽琛屽爢鍨涙満鍏ュ嚭搴撲綔涓氫笅鍙�");
+                if (crnProtocol.getLastIo().equals("O")) {
+                    if (basCrnp.getInEnable().equals("Y")) {
+                        this.locToCrnStn9996(crn, crnProtocol,mark); //  鍏ュ簱
+                    }
+                }
+                // 濡傛灉鏈�杩戜竴娆℃槸鍑哄簱妯″紡
+                else if (crnProtocol.getLastIo().equals("I")) {
+                    if (basCrnp.getOutEnable().equals("Y")) {
+                        this.locToCrnStn9997(crn, crnProtocol,mark); //  鍑哄簱
+                    }
+                }
+            }
+
             // 搴撲綅绉昏浆
             //mark - 3 - ....
             this.locToLoc(crn, crnProtocol,mark);
             //棰勮皟搴�
-            this.crnRebackHp(crn, crnProtocol, crnThread);
+//            this.crnRebackHp(crn, crnProtocol, crnThread);
 
         }
 //        News.infoNoLog(""+mark+" - 0"+" - 鍫嗗灈鏈哄叆鍑哄簱浣滀笟涓嬪彂鎵ц瀹屾垚");
@@ -1171,11 +1198,12 @@
                     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());
+                if(crnStn.getStaNo() == 4001){
+                    continue;
+                }
                 StaProtocol staProtocol = devpThread.getStation().get(crnStn.getStaNo2());
                 if (staProtocol == null) {
                     News.infoNoLog(" - 鍫嗗灈鏈哄叆搴撶珯淇℃伅(staProtocol!=null缁х画鎵ц)锛歴taProtocol="+staProtocol);
@@ -1190,8 +1218,8 @@
             int x=1;
             switch (crnProtocol.getCrnNo()){
                 case 1: x =2; break;
-                case 2: x =6; break;
-                case 3: x =11; break;
+                case 2: x =7; break;
+                case 3: x =10; break;
                 case 4: x =14; break;
                 case 5: x =18; break;
             }
@@ -1203,10 +1231,6 @@
                     return;
                 }
             }
-            if(crnProtocol.getCrnNo() != 5){
-                return;
-            }
-
             // 宸茬粡瀛樺湪鍚婅溅鎵ц浠诲姟鏃讹紝鍒欒繃婊�3,12
             if (wrkMastMapper.selectWorking(crnProtocol.getCrnNo()) != null) {
                 return;
@@ -1464,214 +1488,15 @@
             // 鑾峰彇宸ヤ綔鐘舵�佷负11锛堢敓鎴愬嚭搴揑D锛夌殑鍑哄簱宸ヤ綔妗�
 //            WrkMast wrkMast = wrkMastMapper.selectPakOutStep1(slave.getId(), crnStn.getStaNo());
             List<WrkMast> wrkMasts = wrkMastMapper.selectPakOutStep11(slave.getId(), crnStn.getStaNo());
-            WrkMast wrkMast9997 = wrkMastMapper.selectByWrkNo9997(9997);
-            WrkMast wrkMast9996 = wrkMastMapper.selectByWrkNo9997(9996);
-
-
-            if (slave.getId() == 3 && wrkMast9997 != null) {
-                SiemensDevpThread devpThread1 = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1);
-                StaProtocol staProtocol2 = devpThread1.getStation().get(1015);
-                if (staProtocol2 == null) {
-                    News.infoNoLog("" + mark + " - 2" + " - 3" + " - 鍫嗗灈鏈哄嚭搴撶珯淇℃伅(staProtocol!=null缁х画鎵ц,鍚﹀垯寰幆缁堟)锛歴taProtocol=" + staProtocol2);
-                    break;
-                } else {
-                    staProtocol2 = staProtocol2.clone();
-                }
-                SiemensDevpThread devpThread2 = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 2);
-                StaProtocol staProtocol4004 = devpThread2.getStation().get(4004);
-                if (staProtocol4004 == null) {
-                    News.infoNoLog("" + mark + " - 2" + " - 3" + " - 鍫嗗灈鏈哄嚭搴撶珯淇℃伅(staProtocol!=null缁х画鎵ц,鍚﹀垯寰幆缁堟)锛歴taProtocol=" + staProtocol4004);
-                    break;
-                } else {
-                    staProtocol4004 = staProtocol4004.clone();
-                }
-                StaProtocol staProtocol3 = devpThread2.getStation().get(2016);
-                if (staProtocol3 == null) {
-                    News.infoNoLog("" + mark + " - 2" + " - 3" + " - 鍫嗗灈鏈哄嚭搴撶珯淇℃伅(staProtocol!=null缁х画鎵ц,鍚﹀垯寰幆缁堟)锛歴taProtocol=" + staProtocol2);
-                    break;
-                } else {
-                    staProtocol3 = staProtocol3.clone();
-                }
-                BasDevp staDetl = basDevpService.selectById(crnStn.getStaNo());
-                if (staDetl == null) {
-                    News.error(""+mark+" - 2"+" - 5"+" - 鍑哄簱 ===>> 鍫嗗灈鏈虹珯鐐瑰湪鏁版嵁搴撲笉瀛樺湪, 绔欑偣缂栧彿={}", crnStn.getStaNo());
-                    break;
-//                    continue;
-                }
-                if(staProtocol2.isLoading() && staProtocol2.isAutoing() && staDetl.getCanouting() != null && staDetl.getCanouting().equals("Y")){
-                    // 鍫嗗灈鏈烘帶鍒惰繃婊�
-                    if (!crnProtocol.getStatusType().equals(CrnStatusType.IDLE) || crnProtocol.getTaskNo() != 0) {
-//                        continue;
-                        break;
-                    }
-                    // 宸茬粡瀛樺湪鍚婅溅鎵ц浠诲姟鏃讹紝鍒欒繃婊�
-                    if (wrkMastMapper.selectWorking(slave.getId()) != null) {
-                        break;
-//                        return;
-                    }
-                    if(staProtocol4004.isLoading()){
-                        continue;
-                    }
-                    // 1.鍫嗗灈鏈哄紑濮嬬Щ鍔�
-                    CrnCommand crnCommand = new CrnCommand();
-                    crnCommand.setCrnNo(slave.getId()); // 鍫嗗灈鏈虹紪鍙�
-                    crnCommand.setTaskNo((short) 9997); // 宸ヤ綔鍙�
-//                    crnCommand.setAckFinish((short) 0);  // 浠诲姟瀹屾垚纭浣�
-                    crnCommand.setTaskMode(CrnTaskModeType.LOC_MOVE); // 浠诲姟妯″紡:  搴撲綅绉昏浆
-                    crnCommand.setSourcePosX((short) 9);     // 婧愬簱浣嶆帓
-                    crnCommand.setSourcePosY((short) 52);     // 婧愬簱浣嶅垪
-                    crnCommand.setSourcePosZ((short) 1);     // 婧愬簱浣嶅眰
-                    crnCommand.setDestinationPosX((short) 11);     // 鐩爣搴撲綅鎺�
-                    crnCommand.setDestinationPosY((short) 52);     // 鐩爣搴撲綅鍒�
-                    crnCommand.setDestinationPosZ((short) 3);     // 鐩爣搴撲綅灞�
-//                crnCommand.setTraySize(sourceSta.getLocType1() == 2);     //搴撲綅绫诲瀷
-                    if (!MessageQueue.offer(SlaveType.Crn, wrkMast9997.getCrnNo(), new Task(2, crnCommand))) {
-                        News.error("" + mark + " - 2" + " - 13" + " - 鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", wrkMast9997.getCrnNo(), JSON.toJSON(crnCommand));
-                    } else {
-                        // 淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓�
-                        Date now = new Date();
-                        wrkMast9997.setWrkSts(12L);
-                        wrkMast9997.setCrnStrTime(now);
-                        wrkMast9997.setModiTime(now);
-                        if (wrkMastMapper.updateById(wrkMast9997) == 0) {
-                            News.error("" + mark + " - 2" + " - 14" + " - 淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast9997.getWrkNo());
-                        }
-                        break;
-                    }
-                }
-                if(staProtocol3.isLoading() && staProtocol3.isAutoing()){
-                    // 鍫嗗灈鏈烘帶鍒惰繃婊�
-                    if (!crnProtocol.getStatusType().equals(CrnStatusType.IDLE) || crnProtocol.getTaskNo() != 0) {
-//                        continue;
-                        break;
-                    }
-                    // 宸茬粡瀛樺湪鍚婅溅鎵ц浠诲姟鏃讹紝鍒欒繃婊�
-                    if (wrkMastMapper.selectWorking(slave.getId()) != null) {
-                        break;
-//                        return;
-                    }
-                    if(staProtocol4004.isLoading()){
-                        continue;
-                    }
-                    // 1.鍫嗗灈鏈哄紑濮嬬Щ鍔�
-                    CrnCommand crnCommand = new CrnCommand();
-                    crnCommand.setCrnNo(slave.getId()); // 鍫嗗灈鏈虹紪鍙�
-                    crnCommand.setTaskNo((short) 9997); // 宸ヤ綔鍙�
-//                    crnCommand.setAckFinish((short) 0);  // 浠诲姟瀹屾垚纭浣�
-                    crnCommand.setTaskMode(CrnTaskModeType.LOC_MOVE); // 浠诲姟妯″紡:  搴撲綅绉昏浆
-                    crnCommand.setSourcePosX((short) 11);     // 婧愬簱浣嶆帓
-                    crnCommand.setSourcePosY((short) 52);     // 婧愬簱浣嶅垪
-                    crnCommand.setSourcePosZ((short) 2);     // 婧愬簱浣嶅眰
-                    crnCommand.setDestinationPosX((short) 11);     // 鐩爣搴撲綅鎺�
-                    crnCommand.setDestinationPosY((short) 52);     // 鐩爣搴撲綅鍒�
-                    crnCommand.setDestinationPosZ((short) 3);     // 鐩爣搴撲綅灞�
-//                crnCommand.setTraySize(sourceSta.getLocType1() == 2);     //搴撲綅绫诲瀷
-                    if (!MessageQueue.offer(SlaveType.Crn, wrkMast9997.getCrnNo(), new Task(2, crnCommand))) {
-                        News.error("" + mark + " - 2" + " - 13" + " - 鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", wrkMast9997.getCrnNo(), JSON.toJSON(crnCommand));
-                    } else {
-                        // 淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓�
-                        Date now = new Date();
-                        wrkMast9997.setWrkSts(12L);
-                        wrkMast9997.setCrnStrTime(now);
-                        wrkMast9997.setModiTime(now);
-                        if (wrkMastMapper.updateById(wrkMast9997) == 0) {
-                            News.error("" + mark + " - 2" + " - 14" + " - 淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast9997.getWrkNo());
-                        }
-                        break;
-                    }
-                }
-            }
-            if (slave.getId() == 3 && wrkMast9996 != null) {
-                SiemensDevpThread devpThread1 = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1);
-
-                SiemensDevpThread devpThread2 = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 2);
-                StaProtocol staProtocol4001 = devpThread2.getStation().get(4001);
-                if (staProtocol4001 == null) {
-                    News.infoNoLog("" + mark + " - 2" + " - 3" + " - 鍫嗗灈鏈哄嚭搴撶珯淇℃伅(staProtocol!=null缁х画鎵ц,鍚﹀垯寰幆缁堟)锛歴taProtocol=" + staProtocol4001);
-                    break;
-                } else {
-                    staProtocol4001 = staProtocol4001.clone();
-                }
-                StaProtocol staProtocol2013 = devpThread2.getStation().get(2013);
-                if (staProtocol2013 == null) {
-                    News.infoNoLog("" + mark + " - 2" + " - 3" + " - 鍫嗗灈鏈哄嚭搴撶珯淇℃伅(staProtocol!=null缁х画鎵ц,鍚﹀垯寰幆缁堟)锛歴taProtocol=" + staProtocol2013);
-                    break;
-                } else {
-                    staProtocol2013 = staProtocol2013.clone();
-                }
-                StaProtocol staProtocol1019 = devpThread1.getStation().get(1019);
-                if (staProtocol1019 == null) {
-                    News.infoNoLog("" + mark + " - 2" + " - 3" + " - 鍫嗗灈鏈哄嚭搴撶珯淇℃伅(staProtocol!=null缁х画鎵ц,鍚﹀垯寰幆缁堟)锛歴taProtocol=" + staProtocol1019);
-                    break;
-                } else {
-                    staProtocol1019 = staProtocol1019.clone();
-                }
-                BasDevp staDetl = basDevpService.selectById(crnStn.getStaNo());
-                if (staDetl == null) {
-                    News.error(""+mark+" - 2"+" - 5"+" - 鍑哄簱 ===>> 鍫嗗灈鏈虹珯鐐瑰湪鏁版嵁搴撲笉瀛樺湪, 绔欑偣缂栧彿={}", crnStn.getStaNo());
-                    break;
-//                    continue;
-                }
-                if(staProtocol4001.isLoading() && staProtocol4001.isAutoing() && staDetl.getCanouting() != null && staDetl.getCanouting().equals("Y")){
-                    // 鍫嗗灈鏈烘帶鍒惰繃婊�
-                    if (!crnProtocol.getStatusType().equals(CrnStatusType.IDLE) || crnProtocol.getTaskNo() != 0) {
-//                        continue;
-                        break;
-                    }
-                    // 宸茬粡瀛樺湪鍚婅溅鎵ц浠诲姟鏃讹紝鍒欒繃婊�
-                    if (wrkMastMapper.selectWorking(slave.getId()) != null) {
-                        break;
-//                        return;
-                    }
-                    if(staProtocol1019.isLoading() && wrkMast9996.getStaNo() < 2000){
-                        continue;
-                    }
-                    if(staProtocol2013.isLoading() && wrkMast9996.getStaNo() > 2000){
-                        continue;
-                    }
-                    // 1.鍫嗗灈鏈哄紑濮嬬Щ鍔�
-                    CrnCommand crnCommand = new CrnCommand();
-                    crnCommand.setCrnNo(slave.getId()); // 鍫嗗灈鏈虹紪鍙�
-                    crnCommand.setTaskNo((short) 9996); // 宸ヤ綔鍙�
-//                    crnCommand.setAckFinish((short) 0);  // 浠诲姟瀹屾垚纭浣�
-                    crnCommand.setTaskMode(CrnTaskModeType.LOC_MOVE); // 浠诲姟妯″紡:  搴撲綅绉昏浆
-                    crnCommand.setSourcePosX((short) 9);     // 婧愬簱浣嶆帓
-                    crnCommand.setSourcePosY((short) 52);     // 婧愬簱浣嶅垪
-                    crnCommand.setSourcePosZ((short) 3);     // 婧愬簱浣嶅眰
-                    if(wrkMast9996.getStaNo()>2000){
-                        crnCommand.setDestinationPosX((short) 9);     // 鐩爣搴撲綅鎺�
-                        crnCommand.setDestinationPosY((short) 52);     // 鐩爣搴撲綅鍒�
-                        crnCommand.setDestinationPosZ((short) 2);     // 鐩爣搴撲綅灞�
-                    }else{
-                        crnCommand.setDestinationPosX((short) 11);     // 鐩爣搴撲綅鎺�
-                        crnCommand.setDestinationPosY((short) 52);     // 鐩爣搴撲綅鍒�
-                        crnCommand.setDestinationPosZ((short) 1);     // 鐩爣搴撲綅灞�
-                    }
-//                crnCommand.setTraySize(sourceSta.getLocType1() == 2);     //搴撲綅绫诲瀷
-                    if (!MessageQueue.offer(SlaveType.Crn, wrkMast9996.getCrnNo(), new Task(2, crnCommand))) {
-                        News.error("" + mark + " - 2" + " - 13" + " - 鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", wrkMast9996.getCrnNo(), JSON.toJSON(crnCommand));
-                    } else {
-                        // 淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓�
-                        Date now = new Date();
-                        wrkMast9996.setWrkSts(12L);
-                        wrkMast9996.setCrnStrTime(now);
-                        wrkMast9996.setModiTime(now);
-                        if (wrkMastMapper.updateById(wrkMast9996) == 0) {
-                            News.error("" + mark + " - 2" + " - 14" + " - 淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast9996.getWrkNo());
-                        }
-                        break;
-                    }
-                }
-            }
             for (WrkMast wrkMast : wrkMasts) {
                 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;
-                    }
+//                    if (count >= inventoryNumber) {
+//                        continue;
+//                    }
                 }
                 // 宸ヤ綔妗g姸鎬佸垽鏂�
                 if (wrkMast.getIoType() < 100 || wrkMast.getSourceStaNo() == null) {
@@ -1819,6 +1644,222 @@
         News.infoNoLog(""+mark+" - 2"+" - 0"+" - 鍫嗗灈鏈哄叆鍑哄簱浣滀笟涓嬪彂 锛� 鍑哄簱鎵ц瀹屾瘯");
     }
 
+    public synchronized void locToCrnStn9996(CrnSlave slave, CrnProtocol crnProtocol,Integer mark) {
+        News.warnNoLog(""+mark+" - 2"+" - 0"+" - 鍫嗗灈鏈哄叆鍑哄簱浣滀笟涓嬪彂锛氭墽琛屽嚭搴�");
+        for (CrnSlave.CrnStn crnStn : slave.getCrnOutStn()) {
+            // 鑾峰彇宸ヤ綔鐘舵�佷负11锛堢敓鎴愬嚭搴揑D锛夌殑鍑哄簱宸ヤ綔妗�
+//            WrkMast wrkMast = wrkMastMapper.selectPakOutStep1(slave.getId(), crnStn.getStaNo());
+            List<WrkMast> wrkMasts = wrkMastMapper.selectPakOutStep11(slave.getId(), crnStn.getStaNo());
+            WrkMast wrkMast9996 = wrkMastMapper.selectByWrkNo9997(9996);
+            if (slave.getId() == 3 && wrkMast9996 != null) {
+                SiemensDevpThread devpThread1 = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1);
+
+                SiemensDevpThread devpThread2 = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 2);
+                StaProtocol staProtocol4001 = devpThread2.getStation().get(4001);
+                if (staProtocol4001 == null) {
+                    News.infoNoLog("" + mark + " - 2" + " - 3" + " - 鍫嗗灈鏈哄嚭搴撶珯淇℃伅(staProtocol!=null缁х画鎵ц,鍚﹀垯寰幆缁堟)锛歴taProtocol=" + staProtocol4001);
+                    break;
+                } else {
+                    staProtocol4001 = staProtocol4001.clone();
+                }
+                StaProtocol staProtocol2013 = devpThread2.getStation().get(2013);
+                if (staProtocol2013 == null) {
+                    News.infoNoLog("" + mark + " - 2" + " - 3" + " - 鍫嗗灈鏈哄嚭搴撶珯淇℃伅(staProtocol!=null缁х画鎵ц,鍚﹀垯寰幆缁堟)锛歴taProtocol=" + staProtocol2013);
+                    break;
+                } else {
+                    staProtocol2013 = staProtocol2013.clone();
+                }
+                StaProtocol staProtocol1019 = devpThread1.getStation().get(1019);
+                if (staProtocol1019 == null) {
+                    News.infoNoLog("" + mark + " - 2" + " - 3" + " - 鍫嗗灈鏈哄嚭搴撶珯淇℃伅(staProtocol!=null缁х画鎵ц,鍚﹀垯寰幆缁堟)锛歴taProtocol=" + staProtocol1019);
+                    break;
+                } else {
+                    staProtocol1019 = staProtocol1019.clone();
+                }
+                BasDevp staDetl = basDevpService.selectById(crnStn.getStaNo());
+                if (staDetl == null) {
+                    News.error(""+mark+" - 2"+" - 5"+" - 鍑哄簱 ===>> 鍫嗗灈鏈虹珯鐐瑰湪鏁版嵁搴撲笉瀛樺湪, 绔欑偣缂栧彿={}", crnStn.getStaNo());
+                    break;
+//                    continue;
+                }
+                if(staProtocol4001.isLoading() && staProtocol4001.isAutoing() && staDetl.getCanouting() != null && staDetl.getCanouting().equals("Y")){
+                    // 鍫嗗灈鏈烘帶鍒惰繃婊�
+                    if (!crnProtocol.getStatusType().equals(CrnStatusType.IDLE) || crnProtocol.getTaskNo() != 0) {
+//                        continue;
+                        break;
+                    }
+                    // 宸茬粡瀛樺湪鍚婅溅鎵ц浠诲姟鏃讹紝鍒欒繃婊�
+                    if (wrkMastMapper.selectWorking(slave.getId()) != null) {
+                        break;
+//                        return;
+                    }
+                    if(staProtocol1019.isLoading() && wrkMast9996.getStaNo() < 2000){
+                        continue;
+                    }
+                    if(staProtocol2013.isLoading() && wrkMast9996.getStaNo() > 2000){
+                        continue;
+                    }
+                    // 1.鍫嗗灈鏈哄紑濮嬬Щ鍔�
+                    CrnCommand crnCommand = new CrnCommand();
+                    crnCommand.setCrnNo(slave.getId()); // 鍫嗗灈鏈虹紪鍙�
+                    crnCommand.setTaskNo((short) 9996); // 宸ヤ綔鍙�
+//                    crnCommand.setAckFinish((short) 0);  // 浠诲姟瀹屾垚纭浣�
+                    crnCommand.setTaskMode(CrnTaskModeType.LOC_MOVE); // 浠诲姟妯″紡:  搴撲綅绉昏浆
+                    crnCommand.setSourcePosX((short) 9);     // 婧愬簱浣嶆帓
+                    crnCommand.setSourcePosY((short) 52);     // 婧愬簱浣嶅垪
+                    crnCommand.setSourcePosZ((short) 3);     // 婧愬簱浣嶅眰
+                    if(wrkMast9996.getStaNo()>2000){
+                        crnCommand.setDestinationPosX((short) 9);     // 鐩爣搴撲綅鎺�
+                        crnCommand.setDestinationPosY((short) 52);     // 鐩爣搴撲綅鍒�
+                        crnCommand.setDestinationPosZ((short) 2);     // 鐩爣搴撲綅灞�
+                    }else{
+                        crnCommand.setDestinationPosX((short) 11);     // 鐩爣搴撲綅鎺�
+                        crnCommand.setDestinationPosY((short) 52);     // 鐩爣搴撲綅鍒�
+                        crnCommand.setDestinationPosZ((short) 1);     // 鐩爣搴撲綅灞�
+                    }
+//                crnCommand.setTraySize(sourceSta.getLocType1() == 2);     //搴撲綅绫诲瀷
+                    if (!MessageQueue.offer(SlaveType.Crn, wrkMast9996.getCrnNo(), new Task(2, crnCommand))) {
+                        News.error("" + mark + " - 2" + " - 13" + " - 鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", wrkMast9996.getCrnNo(), JSON.toJSON(crnCommand));
+                    } else {
+                        // 淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓�
+                        Date now = new Date();
+                        wrkMast9996.setWrkSts(12L);
+                        wrkMast9996.setCrnStrTime(now);
+                        wrkMast9996.setModiTime(now);
+                        if (wrkMastMapper.updateById(wrkMast9996) == 0) {
+                            News.error("" + mark + " - 2" + " - 14" + " - 淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast9996.getWrkNo());
+                        }
+                        break;
+                    }
+                }
+            }
+        }
+        News.infoNoLog(""+mark+" - 2"+" - 0"+" - 鍫嗗灈鏈哄叆鍑哄簱浣滀笟涓嬪彂 锛� 鍑哄簱鎵ц瀹屾瘯");
+    }
+    public synchronized void locToCrnStn9997(CrnSlave slave, CrnProtocol crnProtocol,Integer mark) {
+        News.warnNoLog(""+mark+" - 2"+" - 0"+" - 鍫嗗灈鏈哄叆鍑哄簱浣滀笟涓嬪彂锛氭墽琛屽嚭搴�");
+        for (CrnSlave.CrnStn crnStn : slave.getCrnOutStn()) {
+            // 鑾峰彇宸ヤ綔鐘舵�佷负11锛堢敓鎴愬嚭搴揑D锛夌殑鍑哄簱宸ヤ綔妗�
+//            WrkMast wrkMast = wrkMastMapper.selectPakOutStep1(slave.getId(), crnStn.getStaNo());
+            List<WrkMast> wrkMasts = wrkMastMapper.selectPakOutStep11(slave.getId(), crnStn.getStaNo());
+            WrkMast wrkMast9997 = wrkMastMapper.selectByWrkNo9997(9997);
+
+            if (slave.getId() == 3 && wrkMast9997 != null) {
+                SiemensDevpThread devpThread1 = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1);
+                StaProtocol staProtocol2 = devpThread1.getStation().get(1015);
+                if (staProtocol2 == null) {
+                    News.infoNoLog("" + mark + " - 2" + " - 3" + " - 鍫嗗灈鏈哄嚭搴撶珯淇℃伅(staProtocol!=null缁х画鎵ц,鍚﹀垯寰幆缁堟)锛歴taProtocol=" + staProtocol2);
+                    break;
+                } else {
+                    staProtocol2 = staProtocol2.clone();
+                }
+                SiemensDevpThread devpThread2 = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 2);
+                StaProtocol staProtocol4004 = devpThread2.getStation().get(4004);
+                if (staProtocol4004 == null) {
+                    News.infoNoLog("" + mark + " - 2" + " - 3" + " - 鍫嗗灈鏈哄嚭搴撶珯淇℃伅(staProtocol!=null缁х画鎵ц,鍚﹀垯寰幆缁堟)锛歴taProtocol=" + staProtocol4004);
+                    break;
+                } else {
+                    staProtocol4004 = staProtocol4004.clone();
+                }
+                StaProtocol staProtocol3 = devpThread2.getStation().get(2016);
+                if (staProtocol3 == null) {
+                    News.infoNoLog("" + mark + " - 2" + " - 3" + " - 鍫嗗灈鏈哄嚭搴撶珯淇℃伅(staProtocol!=null缁х画鎵ц,鍚﹀垯寰幆缁堟)锛歴taProtocol=" + staProtocol2);
+                    break;
+                } else {
+                    staProtocol3 = staProtocol3.clone();
+                }
+                BasDevp staDetl = basDevpService.selectById(crnStn.getStaNo());
+                if (staDetl == null) {
+                    News.error("" + mark + " - 2" + " - 5" + " - 鍑哄簱 ===>> 鍫嗗灈鏈虹珯鐐瑰湪鏁版嵁搴撲笉瀛樺湪, 绔欑偣缂栧彿={}", crnStn.getStaNo());
+                    break;
+//                    continue;
+                }
+                if (staProtocol2.isLoading() && staProtocol2.isAutoing() && staProtocol2.getWorkNo() == 9997) {
+                    // 鍫嗗灈鏈烘帶鍒惰繃婊�
+                    if (!crnProtocol.getStatusType().equals(CrnStatusType.IDLE) || crnProtocol.getTaskNo() != 0) {
+//                        continue;
+                        break;
+                    }
+                    // 宸茬粡瀛樺湪鍚婅溅鎵ц浠诲姟鏃讹紝鍒欒繃婊�
+                    if (wrkMastMapper.selectWorking(slave.getId()) != null) {
+                        break;
+//                        return;
+                    }
+                    if (staProtocol4004.isLoading()) {
+                        continue;
+                    }
+                    // 1.鍫嗗灈鏈哄紑濮嬬Щ鍔�
+                    CrnCommand crnCommand = new CrnCommand();
+                    crnCommand.setCrnNo(slave.getId()); // 鍫嗗灈鏈虹紪鍙�
+                    crnCommand.setTaskNo((short) 9997); // 宸ヤ綔鍙�
+//                    crnCommand.setAckFinish((short) 0);  // 浠诲姟瀹屾垚纭浣�
+                    crnCommand.setTaskMode(CrnTaskModeType.LOC_MOVE); // 浠诲姟妯″紡:  搴撲綅绉昏浆
+                    crnCommand.setSourcePosX((short) 9);     // 婧愬簱浣嶆帓
+                    crnCommand.setSourcePosY((short) 52);     // 婧愬簱浣嶅垪
+                    crnCommand.setSourcePosZ((short) 1);     // 婧愬簱浣嶅眰
+                    crnCommand.setDestinationPosX((short) 11);     // 鐩爣搴撲綅鎺�
+                    crnCommand.setDestinationPosY((short) 52);     // 鐩爣搴撲綅鍒�
+                    crnCommand.setDestinationPosZ((short) 3);     // 鐩爣搴撲綅灞�
+//                crnCommand.setTraySize(sourceSta.getLocType1() == 2);     //搴撲綅绫诲瀷
+                    if (!MessageQueue.offer(SlaveType.Crn, wrkMast9997.getCrnNo(), new Task(2, crnCommand))) {
+                        News.error("" + mark + " - 2" + " - 13" + " - 鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", wrkMast9997.getCrnNo(), JSON.toJSON(crnCommand));
+                    } else {
+                        // 淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓�
+                        Date now = new Date();
+                        wrkMast9997.setWrkSts(12L);
+                        wrkMast9997.setCrnStrTime(now);
+                        wrkMast9997.setModiTime(now);
+                        if (wrkMastMapper.updateById(wrkMast9997) == 0) {
+                            News.error("" + mark + " - 2" + " - 14" + " - 淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast9997.getWrkNo());
+                        }
+                        break;
+                    }
+                }
+                if (staProtocol3.isLoading() && staProtocol3.isAutoing()&& staProtocol3.getWorkNo() == 9997) {
+                    // 鍫嗗灈鏈烘帶鍒惰繃婊�
+                    if (!crnProtocol.getStatusType().equals(CrnStatusType.IDLE) || crnProtocol.getTaskNo() != 0) {
+//                        continue;
+                        break;
+                    }
+                    // 宸茬粡瀛樺湪鍚婅溅鎵ц浠诲姟鏃讹紝鍒欒繃婊�
+                    if (wrkMastMapper.selectWorking(slave.getId()) != null) {
+                        break;
+//                        return;
+                    }
+                    if (staProtocol4004.isLoading()) {
+                        continue;
+                    }
+                    // 1.鍫嗗灈鏈哄紑濮嬬Щ鍔�
+                    CrnCommand crnCommand = new CrnCommand();
+                    crnCommand.setCrnNo(slave.getId()); // 鍫嗗灈鏈虹紪鍙�
+                    crnCommand.setTaskNo((short) 9997); // 宸ヤ綔鍙�
+//                    crnCommand.setAckFinish((short) 0);  // 浠诲姟瀹屾垚纭浣�
+                    crnCommand.setTaskMode(CrnTaskModeType.LOC_MOVE); // 浠诲姟妯″紡:  搴撲綅绉昏浆
+                    crnCommand.setSourcePosX((short) 11);     // 婧愬簱浣嶆帓
+                    crnCommand.setSourcePosY((short) 52);     // 婧愬簱浣嶅垪
+                    crnCommand.setSourcePosZ((short) 2);     // 婧愬簱浣嶅眰
+                    crnCommand.setDestinationPosX((short) 11);     // 鐩爣搴撲綅鎺�
+                    crnCommand.setDestinationPosY((short) 52);     // 鐩爣搴撲綅鍒�
+                    crnCommand.setDestinationPosZ((short) 3);     // 鐩爣搴撲綅灞�
+//                crnCommand.setTraySize(sourceSta.getLocType1() == 2);     //搴撲綅绫诲瀷
+                    if (!MessageQueue.offer(SlaveType.Crn, wrkMast9997.getCrnNo(), new Task(2, crnCommand))) {
+                        News.error("" + mark + " - 2" + " - 13" + " - 鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", wrkMast9997.getCrnNo(), JSON.toJSON(crnCommand));
+                    } else {
+                        // 淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓�
+                        Date now = new Date();
+                        wrkMast9997.setWrkSts(12L);
+                        wrkMast9997.setCrnStrTime(now);
+                        wrkMast9997.setModiTime(now);
+                        if (wrkMastMapper.updateById(wrkMast9997) == 0) {
+                            News.error("" + mark + " - 2" + " - 14" + " - 淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast9997.getWrkNo());
+                        }
+                        break;
+                    }
+                }
+            }
+        }
+        News.infoNoLog(""+mark+" - 2"+" - 0"+" - 鍫嗗灈鏈哄叆鍑哄簱浣滀笟涓嬪彂 锛� 鍑哄簱鎵ц瀹屾瘯");
+    }
 //    /**
 //     * 鍑哄簱  ===>>  搴撲綅鍒板爢鍨涙満绔�
 //     */
@@ -2433,7 +2474,7 @@
                         } else {
                             total = locDetl.getAnfme();
                         }
-                        if (wrkMast.getIoType() == 101 || wrkMast.getIoType() == 1) {
+                        if (wrkMast.getIoType() == 101 || wrkMast.getIoType() == 1 ||wrkMast.getIoType() == 57 || wrkMast.getIoType() == 53) {
                             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())) {
@@ -2964,13 +3005,13 @@
             StaProtocol staProtocol = null;
             if(emptyCount >= 2 && site == 1108){
                 continue;
-            }else if(emptyCount > 1 && site == 2031){
+            }else if(emptyCount > 0 && site == 2031){
                 continue;
             }
             //濡傛灉绔欑偣鍙嚭绂佺敤锛屽垯涓嶇敓鎴愮┖鐩樺嚭搴撲换鍔�
             switch (site){
                 case 1108:staProtocol = devpThread.getStation().get(site - 2);break;
-                case 2031:staProtocol = devpThread2.getStation().get(site);break;
+                case 2031:staProtocol = devpThread2.getStation().get(site + 1);break;
             }
             if (staProtocol == null) {
                 return;
@@ -3721,7 +3762,29 @@
                 rgvThread.setPakMk(false);  //灏忚溅鍙屽伐浣嶉攣瀹�
 
             }
+        }
+    }
 
+    public synchronized void rgvIoExecuteScheduling() {
+        for (RgvSlave rgv : slaveProperties.getRgv()) {
+            RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgv.getId());
+            RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
+            if (rgvProtocol == null) {
+                continue;
+            }
+            BasRgv basRgv = basRgvService.selectById(rgv.getId());
+            if (basRgv == null) {
+                log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�4", rgv.getId());
+                continue;
+            }
+            if(rgvProtocol.getStatusType1() == RgvStatusType.WORKING){
+                rgvThread.setPaking(true);
+            }
+
+            if(rgvProtocol.isLoaded1ing() && rgvProtocol.isLoaded2ing()){
+                basRgv.setPakAll("1");
+                basRgvService.updateById(basRgv);
+            }
             if(rgvProtocol.getStatusType1() == RgvStatusType.IDLE &&
                     rgvProtocol.getModeType() == RgvModeType.AUTO && rgvThread.isPakMk()
                     && rgvThread.isPaking() && basRgv.getPakAll().equals("1")){
@@ -3989,7 +4052,7 @@
 
             sign = rgvTakeFullAll(basRgvMap.getRgvNo(), wrkMastSta); //鍛戒护涓嬪彂
             if (sign){
-                if(wrkMastSta.getMk() == 1){//鑻ュ凡鎵ц
+                if(wrkMastSta.getMk() != null && wrkMastSta.getMk() == 1){//鑻ュ凡鎵ц
                     basRgv.setPakAll("1");
                     basRgvService.updateById(basRgv);
                 }
@@ -4043,6 +4106,8 @@
             //閬嶅巻rgv鍏ュ簱鍙栬揣绔欑偣
             DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, rgvStn.getDevpPlcId());
             StaProtocol staProtocol = devpThread.getStation().get(rgvStn.getStaNo2());
+            StaProtocol staProtocol2 = devpThread.getStation().get(rgvStn.getStaNo());
+
             RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, (int) rgvProtocol.getRgvNo());
             BasRgv basRgv = basRgvService.selectById(slave.getId());
             if (basRgv == null) {
@@ -4052,7 +4117,9 @@
             if(staProtocol.getWorkNo() == 0){
                 continue;
             }
-            StaProtocol staProtocol2 = null;
+            if(staProtocol2.getWorkNo() != 0 ){
+                continue;
+            }
             WrkMastSta wrkMastSta3 = null;
 
 //            if(rgvStn.getStaNo2()!= null ){
@@ -4455,34 +4522,34 @@
             }
             //閬嶅巻rgv鍏ュ簱鍙栬揣绔欑偣
             DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, rgvStn.getDevpPlcId());
-            StaProtocol staProtocol = devpThread.getStation().get(rgvStn.getStaNo2()); //鍊掓暟绗簩涓�
+            StaProtocol staProtocol = devpThread.getStation().get(rgvStn.getStaNo2()==1043?1044:1103); //鍊掓暟绗簩涓�
             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());
-                }
-
-            }
+//            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;
             }
@@ -4543,21 +4610,21 @@
             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("閿佸畾鐩搁殧绔欑偣浠诲姟澶辫触");
-                        }
-                    }
-                }
+//                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);//浠诲姟涓嬪彂閿佸畾
@@ -4600,6 +4667,21 @@
             if (targetPosition == 1038) {
                 System.out.println("灏忚溅涓嬪彂鍛戒护鏃堕棿锛�" +
                         new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS").format(now));
+            }
+            EntityWrapper<BasRgvOpt> entityWrapper = new EntityWrapper<>();
+            entityWrapper.eq("rgv_no", rgvId)
+                    .orderBy("send_time");
+            BasRgvOpt basRgvOpt = basRgvOptService.selectOne(entityWrapper);
+            // 闃叉閲嶅涓嬪彂鍛戒护
+            if (basRgvOpt != null) {
+                // 鑾峰彇鏈�鏂拌褰曠殑 mode 瀵瑰簲鐨勪换鍔$被鍨�
+                RgvTaskStatusType latestTaskStatus = RgvTaskStatusType.valueOf(basRgvOpt.getMode());
+                // 鍒ゆ柇褰撳墠鍛戒护涓庢渶鏂拌褰曟槸鍚︾浉鍚�
+                if (latestTaskStatus == type && basRgvOpt.getPosSta().equals(wrkMastSta.getWorkSta())) {
+                    // 濡傛灉鏈�鏂拌褰曠殑 mode 鍜� posSta 涓庡綋鍓嶅懡浠ょ浉鍚岋紝璁や负鏄噸澶嶅懡浠�
+                    log.error("鍛戒护閲嶅涓嬪彂锛屽綋鍓嶅懡浠や笌鏈�鏂拌褰曠浉鍚岋紝浠诲姟涓嶄笅鍙戯紒");
+                    return false;
+                }
             }
 
             rgvCommand.setTaskNo(Math.toIntExact(wrkMastSta.getWrkNo())); // 宸ヤ綅宸ヤ綔鍙�
@@ -4749,20 +4831,26 @@
 
                     // 鑾峰彇绔欑偣淇℃伅
                     SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
-                    StaProtocol staProtocol = devpThread.getStation().get(armSta.getStaNo());
-                    if (staProtocol == null) {
-                        continue;
-                    } else {
-                        staProtocol = staProtocol.clone();
+                    StaProtocol staProtocol = null;
+                    String barcode = null;
+                    // 鍙互杞璇诲彇锛岀‘淇濇潯鐮佺ǔ瀹氫笉鍙�
+                    for(int retry=0; retry<3; retry++){
+                        staProtocol = devpThread.getStation().get(armSta.getStaNo());
+                        barcode = staProtocol.getBarcode();
+                        if (staProtocol == null) {
+                            continue;
+                        } else {
+                            staProtocol = staProtocol.clone();
+                        }
+                        Thread.sleep(150); // 灏忓欢鏃剁瓑寰匬LC鍒锋柊
                     }
-                    String barcode = staProtocol.getBarcode();
                     if(!Cools.isEmpty(barcode)) {
                         if("NG".endsWith(barcode) || "NoRead".equals(barcode) || "0".equals(barcode) || barcode.length()<5) {
-                            armTaskAssignmentCallApiLogSave(staProtocol, "鎵樼洏鏉$爜涓虹┖", staProtocol.getSiteId()+"鐮佸灈浣嶇疆锛�===銆嬫墭鐩樻潯鐮佷负绌�", false);
+                            armTaskAssignmentCallApiLogSave(staProtocol, "鎷嗗灈鏉$爜涓虹┖", staProtocol.getSiteId()+"鐮佸灈浣嶇疆锛�===銆嬫墭鐩樻潯鐮佷负绌�", false);
                             continue;
                         }
                     } else {
-                        armTaskAssignmentCallApiLogSave(staProtocol, "鎵樼洏鏉$爜涓虹┖", staProtocol.getSiteId()+"鐮佸灈浣嶇疆锛�===銆嬫墭鐩樻潯鐮佷负绌�", false);
+                        armTaskAssignmentCallApiLogSave(staProtocol, "鎷嗗灈鏉$爜涓虹┖", staProtocol.getSiteId()+"鐮佸灈浣嶇疆锛�===銆嬫墭鐩樻潯鐮佷负绌�", false);
                         continue;
                     }
                     String[] barcodeList = barcode.split(";");
@@ -4790,11 +4878,9 @@
                         continue;
                     }
                     List<BasArm> basArmList = basArmService.selectList(new EntityWrapper<BasArm>().eq("arm_no",armSta.getArmNo()));
-                    boolean sign = true;
+                    BasArmMast basArmMastFinal = null;
+                    Integer num = 0;
                     for (BasArm basArm : basArmList){
-                        if (basArm.getStaNo()==2){//NG
-                            continue;
-                        }
                         LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", basArm.getStaNoSou()));
                         if (Cools.isEmpty(locMast) || !locMast.getLocSts().equals("D")){
                             continue;
@@ -4816,25 +4902,14 @@
                         basArmMast.setArmNo(basArm.getArmNo());
                         basArmMast.setStaNo(basArm.getStaNoSou());
                         basArmMast.setSortingLine(basArm.getSortingLineSou());
-                        basArmMastService.insert(basArmMast);
-                        sign = false;
-                        break;
-                    }
-                    if (sign){
-                        for (BasArm basArm : basArmList){
-                            if (basArm.getStaNo()==2){//NG
-                                LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", basArm.getStaNoSou()));
-                                if (Cools.isEmpty(locMast) || !locMast.getLocSts().equals("D")){
-                                    continue;
-                                }
-                                BasArmMast basArmMast = new BasArmMast(armBarcodeTwoParam);
-                                basArmMast.setArmNo(basArm.getArmNo());
-                                basArmMast.setStaNo(basArm.getStaNoSou());
-                                basArmMast.setSortingLine(basArm.getSortingLineSou());
-                                basArmMastService.insert(basArmMast);
-                                break;
-                            }
+                        if(basArmMastList2.size() >= num){
+                            basArmMastFinal = basArmMast;
+                            num = basArmMastList2.size();
                         }
+                    }
+                    if(basArmMastFinal != null){
+                        basArmMastService.insert(basArmMastFinal);
+                        break;
                     }
                 }
             }
@@ -5045,7 +5120,7 @@
                                         new EntityWrapper<BasArmMast>()
                                                 .eq("status", 2)
                                                 .eq("binding_tags", basArmMast.getBindingTags()));
-                                if (binding_tags<2){
+                                if (binding_tags==1){
                                     BasArmMast basArmMastOne = basArmMastService.selectOne(
                                             new EntityWrapper<BasArmMast>()
                                                     .eq("status", 2)
@@ -5056,6 +5131,25 @@
                                         continue;
                                     }
 
+                                } else if (binding_tags == 0){
+                                    boolean signBinding_tags_barcode = false;
+                                    List<BasArmMast> binding_tags_barcodeList = basArmMastService.selectList(
+                                            new EntityWrapper<BasArmMast>()
+                                                    .eq("barcode", barcode));
+                                    for (BasArmMast basArmMastBarcode : binding_tags_barcodeList){
+                                        Integer selectCountAndBindingTags = basArmMastService.selectCountAndBindingTags(basArmMastBarcode.getArmNo(), basArmMastBarcode.getOrderNo(), basArmMastBarcode.getMatnr(),basArmMastBarcode.getBindingTags());
+                                        Integer selectCountAndBindingTagsLog = basArmMastService.selectCountAndBindingTagsLog(basArmMastBarcode.getArmNo(),basArmMastBarcode.getOrderNo(), basArmMastBarcode.getMatnr(),basArmMastBarcode.getBindingTags());
+
+                                        Double anfmeSignOne = basArmMastService.selectBasArmMastSignValue(basArmMastBarcode.getOrderNo(), basArmMastBarcode.getMatnr(),basArmMastBarcode.getBindingTags());
+                                        if ((selectCountAndBindingTags + selectCountAndBindingTagsLog) != anfmeSignOne.intValue()) {
+//                                            signBinding_tags_barcode = true; /////
+                                            break;
+                                        }
+                                    }
+                                    if (signBinding_tags_barcode){
+                                        armTaskAssignmentCallApiLogSave(staProtocol, "鏁版嵁寮傚父锛侊紒锛�", staProtocol.getSiteId()+"鐮佸灈浣嶇疆锛屼笂涓�涓垎鎷g粍鏈叏閮ㄥ畬鎴愶紒锛侊紒", false);
+                                        continue;
+                                    }
                                 }
                             }
 //                            OrderDetlValueResultUtil orderDetlValueResultUtil = basArmMastService.selectOrderDetlValue(basArmMast.getOrderNo(), basArmMast.getMatnr());
@@ -5123,11 +5217,11 @@
                     String barcode = locMastEnd.getBarcode();
                     if(!Cools.isEmpty(barcode)) {
                         if("NG".endsWith(barcode) || "NoRead".equals(barcode) || "0".equals(barcode)) {
-                            armTaskAssignmentCallApiLogSave(locMastEnd, "鎵樼洏鏉$爜涓虹┖", basArm.getStaNoSou()+"鐮佸灈浣嶇疆锛�===銆嬫墭鐩樻潯鐮佷负绌�", false);
+                            log.error( "鍙栬揣鏉$爜涓虹┖", basArm.getStaNoSou());
                             continue;
                         }
                     } else {
-                        armTaskAssignmentCallApiLogSave(locMastEnd, "鎵樼洏鏉$爜涓虹┖", basArm.getStaNoSou()+"鐮佸灈浣嶇疆锛�===銆嬫墭鐩樻潯鐮佷负绌�", false);
+                        log.error( "鍙栬揣鏉$爜涓虹┖", basArm.getStaNoSou());
                         continue;
                     }
 
@@ -5391,6 +5485,7 @@
                             SearchLocParam param = new SearchLocParam();
                             param.setBarcode(staProtocol.getWorkNo().toString());
                             param.setIoType(1);
+                            param.setOutArea(wrkMast.getCtnKind());
                             param.setSourceStaNo(outStaAgv.getStaNo());
                             param.setLocType1(locTypeDto.getLocType1());
                             String response = new HttpHandler.Builder()
@@ -5449,6 +5544,7 @@
                         SearchLocParam param = new SearchLocParam();
                         param.setBarcode(wrkMast.getBarcode());
                         param.setIoType(1);
+                        param.setOutArea(wrkMast.getCtnKind());
                         param.setSourceStaNo(outStaAgv.getStaNo());
                         param.setLocType1(locTypeDto.getLocType1());
                         String response = new HttpHandler.Builder()
@@ -5482,9 +5578,10 @@
                                 LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no",dto.getLocNo()));
                                 locMast.setBarcode(wrkMast.getBarcode());
                                 locMastService.updateById(locMast);
+                            }else{
+                                agvBindCtnrAndBinParam.setCtnrTyp("1");
+                                ReturnT<String> resultBind = new PostMesDataUtils().postMesDataAgv("AGV瀹瑰櫒缁戝畾", AgvConstant.AGV_URL, AgvConstant.AGV_CTNRANDBING, agvBindCtnrAndBinParam);
                             }
-                            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