From 26583d39c1f57f8e2080006f3920f43f2cc68dea Mon Sep 17 00:00:00 2001
From: zhou zhou <3272660260@qq.com>
Date: 星期二, 23 十二月 2025 13:01:19 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java |  301 +++++++++++++++++++++++++++++++++++---------------
 1 files changed, 211 insertions(+), 90 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 0853960..b52333f 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -4,6 +4,7 @@
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.baomidou.mybatisplus.mapper.Wrapper;
+import com.baomidou.mybatisplus.plugins.Page;
 import com.core.common.Cools;
 import com.core.common.DateUtils;
 import com.core.exception.CoolException;
@@ -42,6 +43,7 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.interceptor.TransactionAspectSupport;
 
@@ -94,6 +96,10 @@
     private WrkMastService wrkMastService;
     @Autowired
     private BasRgvMapService basRgvMapService;
+    @Autowired
+    private BasCrnOptService crnOptService;
+    @Autowired
+    private MainServiceImpl mainService;
 
     @Value("${wms.url}")
     private String wmsUrl;
@@ -150,7 +156,7 @@
                     errMsg = "鍙宠秴闄�";
                     back = true;
                 }
-                if (!back && staProtocol.getWeight() > 1000) {
+                if (!back && staProtocol.getWeight() > 15000) {
                     errMsg = "瓒呴噸鎴栨湭璇诲彇";
                     back = true;
                 }
@@ -180,13 +186,14 @@
                     if (!staProtocol.isPakMk()) {
                         continue;
                     }
-                    staProtocol.setWorkNo(wrkNo);
+                    staProtocol.setWorkNo(wrkNo);//閫�鍥� 宸ヤ綔鍙�:10000
                     News.info("{}PLC鍏ュ簱鍥為��锛歿}锛屼换鍔″彿锛歿}", inSta.getStaNo(), errMsg, wrkNo);
-                    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());
+                    break;//瓒呴檺鎵樼洏閫�鍥炰笉鐢熸垚宸ヤ綔妗�
                 }
 
                 // 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢
@@ -196,12 +203,16 @@
                         && !staProtocol.isEmptyMk()
                         && staProtocol.isPakMk()
                         && staProtocol.getWorkNo()==9999) {
-                    if (Cools.isEmpty(barcode) || "NG".endsWith(barcode) || "NoRead".equals(barcode) || "00000000".equals(barcode)) {
+                    if (Cools.isEmpty(barcode) || "NG".endsWith(barcode) || "NoRead".equals(barcode) || "00000000".equals(barcode) || "ERROR\r\u0000\u0000".equals(barcode)) {
                         News.info("{}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", inSta.getBarcode(), barcode);
+                        if (ledThread != null){
+                            String errorMsg = "鎵爜澶辫触锛岃閲嶈瘯" + barcode;
+                            MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3,errorMsg));
+                        }
 
                         staProtocol.setWorkNo(wrkNo);
                         News.info("{}barcode鍏ュ簱鍥為��锛歿}锛屼换鍔″彿锛歿}", inSta.getStaNo(), errMsg, wrkNo);
-                        wrkNo++;
+//                        wrkNo++;
                         staProtocol.setStaNo(inSta.getBackSta().shortValue());
                         devpThread.setPakMk(staProtocol.getSiteId(), false);
                         MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
@@ -220,6 +231,13 @@
 //                        }
                         News.error(barcode + "鏉$爜宸插瓨鍦ㄧ姸鎬佷负锛� 2.璁惧涓婅蛋 锛夌殑鏁版嵁,璇锋煡鐪媁CS杈撻�佺嚎鐣岄潰,宸ヤ綔鍙�={}", wrkMast.getWrkNo());
                         MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, barcode + "鏉$爜宸插瓨鍦ㄧ姸鎬佷负锛� 2.璁惧涓婅蛋 锛夌殑浠诲姟,宸ヤ綔鍙�=" + wrkMast.getWrkNo()));
+                        staProtocol.setWorkNo(wrkMast.getWrkNo());
+                        staProtocol.setStaNo(wrkMast.getStaNo().shortValue());
+                        devpThread.setPakMk(staProtocol.getSiteId(), false);
+                        boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+                        if (!result) {
+                            throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触");
+                        }
                         continue;
 //                        barcodeThread.setBarcode("");
 //                        staProtocol.setWorkNo(wrkMast.getWrkNo());
@@ -308,7 +326,7 @@
                                 continue;
                             }
                             staProtocol.setWorkNo(wrkNo);
-                            wrkNo++;
+//                            wrkNo++;
                             staProtocol.setStaNo(inSta.getBackSta().shortValue());
                             devpThread.setPakMk(staProtocol.getSiteId(), false);
                             MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
@@ -320,7 +338,7 @@
                                 MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, errorMsg));
                             }
 //                            }
-//                            News.error(methodName + ":璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/pakin/loc/v1", JSON.toJSONString(param), response);
+                            News.error(methodName + ":璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/pakin/loc/v1", JSON.toJSONString(param), response);
                         }
 
 
@@ -334,7 +352,7 @@
 
             }
         }
-//        News.infoNoLog(""+mark+" - 0"+" - 缁勬墭  ===銆嬫墽琛屽畬鎴�");
+        News.infoNoLog(""+mark+" - 0"+" - 缁勬墭  ===銆嬫墽琛屽畬鎴�");
 
     }
 
@@ -465,7 +483,7 @@
                 // 閫�鍥�
 //                if (back) {
 //                    log.info("errmsg: " + errMsg);
-////                        News.warn("鎵爜鍏ュ簱澶辫触锛寋}鍏ュ簱绔欏洜{}寮傚父锛屾墭鐩樺凡琚��鍥�", inSta.getStaNo(), errMsg);
+//                        News.warn("鎵爜鍏ュ簱澶辫触锛寋}鍏ュ簱绔欏洜{}寮傚父锛屾墭鐩樺凡琚��鍥�", inSta.getStaNo(), errMsg);
 //                    MessageQueue.offer(SlaveType.Led, pickSta.getLed(), new Task(5, errMsg));
 //                    if (!staProtocol.isLoading()) {
 //                        continue;
@@ -500,7 +518,7 @@
 //
 //
 //                    if (!Cools.isEmpty(barcode)) {
-////                    News.info(""+mark+" - 1"+" - {}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", pickSta.getBarcode(), barcode);
+//                    News.info(""+mark+" - 1"+" - {}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", pickSta.getBarcode(), barcode);
 //                        if ("NG".endsWith(barcode) || "NoRead".equals(barcode)) {
 //                            continue;
 //                        }
@@ -517,7 +535,7 @@
                     staProtocol = staProtocol.clone();
                 }
 
-//                // 鍏ュ嚭搴撴ā寮忓垽鏂�
+                // 鍏ュ嚭搴撴ā寮忓垽鏂�
 //                if (devpThread.ioMode != IoModeType.PAKIN_MODE) { continue; }
 
                 if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable() && staProtocol.isPakMk()) {
@@ -611,9 +629,9 @@
 
                     // 鏇存柊绔欑偣淇℃伅 涓� 涓嬪彂plc鍛戒护
                     staProtocol.setWorkNo(wrkMast.getWrkNo());
-                    if(staProtocol.getSiteId() < 400){
+//                    if(staProtocol.getSiteId() < 400){
                         staProtocol.setStaNo(Short.valueOf(wrkMast.getStaNo().toString()));
-                    }
+//                    }
                     devpThread.setPakMk(staProtocol.getSiteId(), false);
                     boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
                     log.error("杈撻�佺嚎涓嬪彂5锛�" + wrkMast.getWrkNo() + "," + wrkMast.getStaNo());
@@ -1195,14 +1213,18 @@
                 } else {
                     staProtocol = staProtocol.clone();
                 }
-                StaProtocol staProtocol1 = devpThread.getStation().get(crnStn.getStaNo() - 1);
+                StaProtocol staProtocol1 = staProtocol.getSiteId()==101?devpThread.getStation().get(crnStn.getStaNo() + 1):devpThread.getStation().get(crnStn.getStaNo() - 1);
+//                StaProtocol staProtocol1 = devpThread.getStation().get(crnStn.getStaNo() - 1);
+//                StaProtocol staProtocol1 = devpThread.getStation().get(crnStn.getStaNo() + 1);
                 if (staProtocol1 == null) {
                     News.infoNoLog("" + mark + " - 2" + " - 3" + " - 鍫嗗灈鏈哄嚭搴撶珯淇℃伅(staProtocol!=null缁х画鎵ц,鍚﹀垯寰幆缁堟)锛歴taProtocol=" + staProtocol);
                     break;
                 } else {
                     staProtocol1 = staProtocol1.clone();
                 }
-                StaProtocol staProtocol2 = devpThread.getStation().get(crnStn.getStaNo() - 2);
+                StaProtocol staProtocol2 = staProtocol.getSiteId()==101?devpThread.getStation().get(crnStn.getStaNo() + 2):devpThread.getStation().get(crnStn.getStaNo());
+//                StaProtocol staProtocol2 = devpThread.getStation().get(crnStn.getStaNo() - 2);
+//                StaProtocol staProtocol2 = devpThread.getStation().get(crnStn.getStaNo() + 2);
                 if (staProtocol2 == null) {
                     News.infoNoLog("" + mark + " - 2" + " - 3" + " - 鍫嗗灈鏈哄嚭搴撶珯淇℃伅(staProtocol!=null缁х画鎵ц,鍚﹀垯寰幆缁堟)锛歴taProtocol=" + staProtocol);
                     break;
@@ -1210,7 +1232,7 @@
                     staProtocol2 = staProtocol2.clone();
                 }
                 //鍑哄叆鍙h緭閫佺嚎鍙厑璁稿瓨鍦ㄤ竴涓墭鐩�
-                if(staProtocol.isLoading() || staProtocol1.isLoading() || staProtocol2.isLoading() ) {
+                if(staProtocol.isLoading() || staProtocol1.isLoading() || staProtocol2.isLoading() || staProtocol.getWorkNo() != 0 || staProtocol1.getWorkNo() != 0 || staProtocol2.getWorkNo() != 0) {
                     break;
                 }
 
@@ -1541,7 +1563,10 @@
             //  鐘舵�侊細绛夊緟纭 骞朵笖  浠诲姟瀹屾垚浣� = 1
             if (crnProtocol.statusType == CrnStatusType.WAITING && crnProtocol.getTaskNo() != 0) {
                 News.warnNoLog("" + mark + " - 0" + " - 寮�濮嬫墽琛屽宸ヤ綔妗g殑瀹屾垚鎿嶄綔锛屼换鍔″彿:" + crnProtocol.getTaskNo());
-
+                if (crnProtocol.getTaskNo() == 9999){
+                    crnThread.setResetFlag(true);
+                    continue;
+                }
                 // 鑾峰彇鍏ュ簱寰呯‘璁ゅ伐浣滄。
                 WrkMast wrkMast = wrkMastMapper.selectPakInStep3(crnProtocol.getTaskNo().intValue());
                 if (wrkMast == null) {
@@ -1768,7 +1793,7 @@
                                 LedCommand ledCommand = new LedCommand();
                                 ledCommand.setWorkNo(dto.getWorkNo());
                                 ledCommand.setIoType(1);
-                                ledCommand.setTitle("鍏ㄦ澘鍏ュ簱");
+                                ledCommand.setTitle("绌烘澘鍏ュ簱");
                                 ledCommand.setLocNo(dto.getLocNo());
                                 ledCommand.setStaNo(dto.getStaNo());
                                 commands.add(ledCommand);
@@ -1805,7 +1830,7 @@
                 }
             }
         }
-//        News.infoNoLog(""+mark+" - 0"+" - 绌烘爤鏉垮垵濮嬪寲鍏ュ簱,鍙夎溅鍏ュ簱绔欐斁璐ф墽琛屽畬鎴�");
+        News.infoNoLog(""+mark+" - 0"+" - 绌烘爤鏉垮垵濮嬪寲鍏ュ簱,鍙夎溅鍏ュ簱绔欐斁璐ф墽琛屽畬鎴�");
     }
 
     /**
@@ -2095,79 +2120,85 @@
 
             if (null == loc) {
                 News.error("" + mark + "moveLocForDeepLoc" + " - 1" + " - 鍙屾繁搴撲綅 --- 娴呭簱浣嶉樆濉炲紓甯革紒 寰呯Щ杞祬搴撲綅锛�" + shallowLoc.getLocNo());
-                throw new CoolException("鍙屾繁搴撲綅 --- 娴呭簱浣嶉樆濉炲紓甯革紒 寰呯Щ杞祬搴撲綅锛�" + shallowLoc.getLocNo());
+//                throw new CoolException("鍙屾繁搴撲綅 --- 娴呭簱浣嶉樆濉炲紓甯革紒 寰呯Щ杞祬搴撲綅锛�" + shallowLoc.getLocNo());
+            }else {
+                mainService.createMoveWrkMast(crn, shallowLoc, loc);
             }
 
-            // 鑾峰彇宸ヤ綔鍙�
-            int workNo = commonService.getWorkNo(0);
-            // 淇濆瓨宸ヤ綔妗�
-            WrkMast wrkMast = new WrkMast();
-            wrkMast.setWrkNo(workNo);
-            wrkMast.setIoTime(new Date());
-            wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID
-            wrkMast.setIoType(11); // 鍏ュ嚭搴撶姸鎬侊細 11.搴撴牸绉昏浇
-            wrkMast.setIoPri(13D);
-            wrkMast.setCrnNo(crn.getId());
-            wrkMast.setSourceLocNo(shallowLoc.getLocNo()); // 婧愬簱浣�
-            wrkMast.setLocNo(loc.getLocNo()); // 鐩爣搴撲綅
-            wrkMast.setFullPlt(shallowLoc.getFullPlt()); // 婊℃澘
-            wrkMast.setPicking("N"); // 鎷f枡
-            wrkMast.setExitMk("N"); // 閫�鍑�
-            wrkMast.setEmptyMk(shallowLoc.getLocSts().equals("D") ? "Y" : "N"); // 绌烘澘
-            wrkMast.setBarcode(shallowLoc.getBarcode()); // 鎵樼洏鐮�
-            wrkMast.setLinkMis("N");
-            wrkMast.setAppeTime(new Date());
-            wrkMast.setModiTime(new Date());
-            int res = wrkMastMapper.insert(wrkMast);
-            if (res == 0) {
-                News.errorNoLog("" + mark + "moveLocForDeepLoc" + " - 2" + " - 淇濆瓨宸ヤ綔妗eけ璐�");
-                throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
-            }
-            // 宸ヤ綔妗f槑缁嗕繚瀛�
-            if (shallowLoc.getLocSts().equals("F")) {
-                List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_no", shallowLoc.getLocNo()));
-                for (LocDetl locDetl : locDetls) {
-                    WrkDetl wrkDetl = new WrkDetl();
-                    wrkDetl.setWrkNo(workNo);
-                    wrkDetl.setIoTime(new Date());
-                    wrkDetl.setAnfme(locDetl.getAnfme());
-                    VersionUtils.setWrkDetl(wrkDetl, locDetl); // 鐗堟湰鎺у埗
-                    wrkDetl.setAppeTime(new Date());
-                    wrkDetl.setModiTime(new Date());
-                    if (!wrkDetlService.insert(wrkDetl)) {
-                        News.errorNoLog("" + mark + "moveLocForDeepLoc" + " - 3" + " - 淇濆瓨宸ヤ綔妗f槑缁嗗け璐�");
-                        throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�");
-                    }
-                }
-            }
-            // 淇敼婧愬簱浣嶇姸鎬�
-            if (shallowLoc.getLocSts().equals("D") || shallowLoc.getLocSts().equals("F")) {
-                shallowLoc.setLocSts("R"); // R.鍑哄簱棰勭害
-                shallowLoc.setModiTime(new Date());
-                if (!locMastService.updateById(shallowLoc)) {
-                    News.errorNoLog("" + mark + "moveLocForDeepLoc" + " - 4" + " - 鏇存柊婧愬簱浣嶇姸鎬佸け璐�");
-                    throw new CoolException("鏇存柊婧愬簱浣嶇姸鎬佸け璐�");
-                }
-            } else {
-                News.errorNoLog("" + mark + "moveLocForDeepLoc" + " - 5" + " - 婧愬簱浣嶅嚭搴撳け璐�");
-                throw new CoolException("婧愬簱浣嶅嚭搴撳け璐�");
-            }
-            // 淇敼鐩爣搴撲綅鐘舵��
-            if (loc.getLocSts().equals("O")) {
-                loc.setLocSts("S"); // S.鍏ュ簱棰勭害
-                loc.setModiTime(new Date());
-                if (!locMastService.updateById(loc)) {
-                    News.errorNoLog("" + mark + "moveLocForDeepLoc" + " - 6" + " - 鏇存柊鐩爣搴撲綅鐘舵�佸け璐�");
-                    throw new CoolException("鏇存柊鐩爣搴撲綅鐘舵�佸け璐�");
-                }
-            } else {
-                News.errorNoLog("" + mark + "moveLocForDeepLoc" + " - 7" + " - 绉昏浆澶辫触");
-                throw new CoolException("绉昏浆澶辫触");
-            }
+
         } catch (Exception e) {
             News.error("" + mark + "moveLocForDeepLoc" + " - 8" + " - 鍙屾繁搴撲綅闃诲锛屽娴呭簱浣嶈繘琛岀Щ杞け璐�", e);
-            e.printStackTrace();
-            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+
+        }
+    }
+
+    @Transactional(rollbackFor = Exception.class,propagation = Propagation.REQUIRES_NEW)
+    public synchronized void createMoveWrkMast(CrnSlave crn, LocMast shallowLoc, LocMast loc) {
+        // 鑾峰彇宸ヤ綔鍙�
+        int workNo = commonService.getWorkNo(0);
+        // 淇濆瓨宸ヤ綔妗�
+        WrkMast wrkMast = new WrkMast();
+        wrkMast.setWrkNo(workNo);
+        wrkMast.setIoTime(new Date());
+        wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID
+        wrkMast.setIoType(11); // 鍏ュ嚭搴撶姸鎬侊細 11.搴撴牸绉昏浇
+        wrkMast.setIoPri(13D);
+        wrkMast.setCrnNo(crn.getId());
+        wrkMast.setSourceLocNo(shallowLoc.getLocNo()); // 婧愬簱浣�
+        wrkMast.setLocNo(loc.getLocNo()); // 鐩爣搴撲綅
+        wrkMast.setFullPlt(shallowLoc.getLocSts().equals("F") ? "Y" : "N"); // 婊℃澘锛歒
+        wrkMast.setPicking("N"); // 鎷f枡
+        wrkMast.setExitMk("N"); // 閫�鍑�
+        wrkMast.setEmptyMk(shallowLoc.getLocSts().equals("D") ? "Y" : "N"); // 绌烘澘
+        wrkMast.setBarcode(shallowLoc.getBarcode()); // 鎵樼洏鐮�
+        wrkMast.setLinkMis("N");
+        wrkMast.setAppeTime(new Date());
+        wrkMast.setModiTime(new Date());
+        int res = wrkMastMapper.insert(wrkMast);
+        if (res == 0) {
+            News.errorNoLog(""  + "moveLocForDeepLoc" + " - 2" + " - 淇濆瓨宸ヤ綔妗eけ璐�");
+            throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
+        }
+        // 宸ヤ綔妗f槑缁嗕繚瀛�
+        if (shallowLoc.getLocSts().equals("F")) {
+            List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_no", shallowLoc.getLocNo()));
+            for (LocDetl locDetl : locDetls) {
+                WrkDetl wrkDetl = new WrkDetl();
+                wrkDetl.setWrkNo(workNo);
+                wrkDetl.setIoTime(new Date());
+                wrkDetl.setAnfme(locDetl.getAnfme());
+                VersionUtils.setWrkDetl(wrkDetl, locDetl); // 鐗堟湰鎺у埗
+                wrkDetl.setAppeTime(new Date());
+                wrkDetl.setModiTime(new Date());
+                if (!wrkDetlService.insert(wrkDetl)) {
+                    News.errorNoLog(""  + "moveLocForDeepLoc" + " - 3" + " - 淇濆瓨宸ヤ綔妗f槑缁嗗け璐�");
+                    throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�");
+                }
+            }
+        }
+        // 淇敼婧愬簱浣嶇姸鎬�
+        if (shallowLoc.getLocSts().equals("D") || shallowLoc.getLocSts().equals("F")) {
+            shallowLoc.setLocSts("R"); // R.鍑哄簱棰勭害
+            shallowLoc.setModiTime(new Date());
+            if (!locMastService.updateById(shallowLoc)) {
+                News.errorNoLog(""  + "moveLocForDeepLoc" + " - 4" + " - 鏇存柊婧愬簱浣嶇姸鎬佸け璐�");
+                throw new CoolException("鏇存柊婧愬簱浣嶇姸鎬佸け璐�");
+            }
+        } else {
+            News.errorNoLog(""  + "moveLocForDeepLoc" + " - 5" + " - 婧愬簱浣嶅嚭搴撳け璐�");
+            throw new CoolException("婧愬簱浣嶅嚭搴撳け璐�");
+        }
+        // 淇敼鐩爣搴撲綅鐘舵��
+        if (loc.getLocSts().equals("O")) {
+            loc.setLocSts("S"); // S.鍏ュ簱棰勭害
+            loc.setModiTime(new Date());
+            if (!locMastService.updateById(loc)) {
+                News.errorNoLog(""  + "moveLocForDeepLoc" + " - 6" + " - 鏇存柊鐩爣搴撲綅鐘舵�佸け璐�");
+                throw new CoolException("鏇存柊鐩爣搴撲綅鐘舵�佸け璐�");
+            }
+        } else {
+            News.errorNoLog(""  + "moveLocForDeepLoc" + " - 7" + " - 绉昏浆澶辫触");
+            throw new CoolException("绉昏浆澶辫触");
         }
     }
 
@@ -2405,10 +2436,14 @@
 
     public synchronized void autoEmptyOut() {
         SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1);
+        StaProtocol staProtocol1 = devpThread.getStation().get(103);
+        if (staProtocol1.isAutoing()&&staProtocol1.isLoading()){
+            return;
+        }
         List<Integer> list = new ArrayList<>();
-        list.add(101);
+        list.add(103);//绌烘墭鐩樺嚭搴撶洰鏍囩珯闆嗗悎
         Map<Integer, Integer> map = new HashMap<>();
-        map.put(101, 102);
+        map.put(103, 103);
         for (Integer site : list) {
             WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("sta_no", map.get(site)));
             if (!Cools.isEmpty(wrkMast)) {
@@ -3193,4 +3228,90 @@
         }
     }
 
+    public synchronized void crnMove() {
+        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.getCrnNo()==3 || crnProtocol.getCrnNo()==4) && crnProtocol.getBay()==0 && crnProtocol.getLevel() == 1) {
+//                    continue;
+//                }
+//                if ((crnProtocol.getCrnNo()==1 || crnProtocol.getCrnNo()==2) && crnProtocol.getBay()==1 && crnProtocol.getLevel() == 1) {
+//                    continue;
+//                }
+                if (crnProtocol.getBay()==1 && crnProtocol.getLevel() == 1) {
+                    continue;
+                }
+                Page<BasCrnOpt> basCrnOptPage = crnOptService.selectPage(new Page<>(1, 1), new EntityWrapper<BasCrnOpt>().eq("crn_no", crn.getId()).orderBy("send_time", false));
+                if (basCrnOptPage != null && basCrnOptPage.getRecords() != null && basCrnOptPage.getRecords().size() > 0) {
+                    if (System.currentTimeMillis() - basCrnOptPage.getRecords().get(0).getSendTime().getTime() < 1000 * 60 * 3) {
+                        continue;
+                    }
+                } else {
+                    if (System.currentTimeMillis() - crnProtocol.getLastCommandTime() < 1000 * 60 * 2) {
+                        continue;
+                    }
+                }
+                List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>()
+                        .eq("crn_no", crn.getId())
+                        .notIn("wrk_sts", 5, 14, 15)
+                );
+                if (!wrkMasts.isEmpty()) {
+                    continue;
+                }
+
+                CrnSlave.CrnStn crnStn = crn.getCrnInStn().get(0);
+
+                News.info("鍫嗗灈鏈烘棤浠诲姟鑷姩鍥炲叆搴撳彛寰呮満==>>" + crnProtocol.getCrnNo() + "鍙峰爢鍨涙満");
+                // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
+                CrnCommand crnCommand = new CrnCommand();
+//                if (crnProtocol.getCrnNo()==3 || crnProtocol.getCrnNo()==4){
+//                    crnCommand.setCrnNo(crnProtocol.getCrnNo()); // 鍫嗗灈鏈虹紪鍙�
+//                    crnCommand.setTaskNo((short) 9999); // 宸ヤ綔鍙�
+//                    crnCommand.setAckFinish((short) 0);  // 浠诲姟瀹屾垚纭浣�
+//                    crnCommand.setTaskMode(CrnTaskModeType.GO_ORIGIN); // 浠诲姟妯″紡:  鍫嗗灈鏈虹Щ鍔�
+//                    crnCommand.setSourcePosX(crnStn.getRow().shortValue());     // 婧愬簱浣嶆帓
+//                    crnCommand.setSourcePosY((short) 0);     // 婧愬簱浣嶅垪
+//                    crnCommand.setSourcePosZ((short) 1);     // 婧愬簱浣嶅眰
+//                    crnCommand.setDestinationPosX((short) 0);     // 鐩爣搴撲綅鎺�
+//                    crnCommand.setDestinationPosY((short) 0);     // 鐩爣搴撲綅鍒�
+//                    crnCommand.setDestinationPosZ((short) 0);     // 鐩爣搴撲綅灞�
+//                    crnCommand.setCommand((short) 1);
+//                }else {
+                    crnCommand.setCrnNo(crnProtocol.getCrnNo()); // 鍫嗗灈鏈虹紪鍙�
+                    crnCommand.setTaskNo((short) 9999); // 宸ヤ綔鍙�
+                    crnCommand.setAckFinish((short) 0);  // 浠诲姟瀹屾垚纭浣�
+//                    crnCommand.setTaskMode(CrnTaskModeType.GO_ORIGIN); // 浠诲姟妯″紡:  鍫嗗灈鏈虹Щ鍔�
+                    crnCommand.setTaskMode(CrnTaskModeType.X_MOVE);//浣欏閿愰簰鍥炲師鐐逛换鍔℃ā寮�:  绔欎綅杞Щ
+                    crnCommand.setSourcePosX(crnStn.getRow().shortValue());     // 婧愬簱浣嶆帓
+                    crnCommand.setSourcePosY((short) 1);     // 婧愬簱浣嶅垪
+                    crnCommand.setSourcePosZ((short) 1);     // 婧愬簱浣嶅眰
+                    crnCommand.setDestinationPosX((short) 0);     // 鐩爣搴撲綅鎺�
+                    crnCommand.setDestinationPosY((short) 0);     // 鐩爣搴撲綅鍒�
+                    crnCommand.setDestinationPosZ((short) 0);     // 鐩爣搴撲綅灞�
+                    crnCommand.setCommand((short) 1);//浠诲姟纭浣�
+//                }
+                if (!MessageQueue.offer(SlaveType.Crn, crnProtocol.getCrnNo(), new Task(2, crnCommand))) {
+                    News.error("鍫嗗灈鏈虹Щ鍔ㄥ懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", crnProtocol.getCrnNo(), JSON.toJSON(crnCommand));
+                }
+                crnThread.setBackHpFlag(true);
+                try {
+                    Thread.sleep(500);
+                } catch (Exception e) {
+                    e.printStackTrace();
+                }
+            }
+        }
+    }
 }

--
Gitblit v1.9.1