From f2b2132ded0de6e3e8e2ff65bfbd98d46caa148e Mon Sep 17 00:00:00 2001
From: dubin <bindu_bean@163.com>
Date: 星期四, 13 十一月 2025 13:46:37 +0800
Subject: [PATCH] #1

---
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java |  387 +++++++++++++++++++++++++++++++++----------------------
 1 files changed, 232 insertions(+), 155 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 2d1f0c6..a89b29e 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;
@@ -38,6 +39,7 @@
 import com.zy.core.thread.LedThread;
 import com.zy.core.thread.RgvThread;
 import com.zy.core.thread.SiemensDevpThread;
+import com.zy.system.service.ConfigService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
@@ -94,6 +96,10 @@
     private WrkMastService wrkMastService;
     @Autowired
     private BasRgvMapService basRgvMapService;
+    @Autowired
+    private BasCrnOptService crnOptService;
+    @Autowired
+    private ConfigService configService;
 
     @Value("${wms.url}")
     private String wmsUrl;
@@ -101,6 +107,9 @@
     private boolean isToOrigin;
 
     public Integer wrkNo = 10000;
+
+    /*鍫嗗灈鏈哄叆鍑哄簱浠诲姟涓嬪彂鎺у埗鍙傛暟*/
+//    Integer ioControl=configService.selectCrnIo(Integer mark);
 
     /**
      * 缁勬墭
@@ -130,6 +139,7 @@
                 // 灏哄妫�娴嬪紓甯�
                 boolean back = false;
                 String errMsg = "";
+                Integer outCount=wrkMastService.selectOutCount();
                 if (staProtocol.isFrontErr()) {
                     errMsg = "鍓嶈秴闄�";
                     back = true;
@@ -150,28 +160,22 @@
                     errMsg = "鍙宠秴闄�";
                     back = true;
                 }
-                if (!back && staProtocol.getWeight() > 1000) {
-                    errMsg = "瓒呴噸鎴栨湭璇诲彇";
+                if (!back && staProtocol.isWeightErr()) {
+                    errMsg = "瓒呴噸";
                     back = true;
                 }
                 if (!back && staProtocol.isBarcodeErr()) {
                     errMsg = "鎵爜澶辫触";
                     back = true;
                 }
-//                if(staProtocol.getWeight() <= 0 ){
-//                    continue;
-//                }
-//                if (!back && staProtocol.getWeight() == 0.0) {
-//                    errMsg = "閲嶉噺鑾峰彇澶辫触";
-//                    back = true;
-//                }
-
-//                News.info("{}閲嶉噺", staProtocol.getWeight());
+                if (!back && outCount > 0) {
+                    errMsg = "褰撳墠涓哄嚭搴撴椂娈�,鍏ュ簱鏆傚仠";
+                    back = true;
+                }
 
                 // 閫�鍥�
                 if (back) {
                     log.info("errmsg: " + errMsg);
-//                        News.warn("鎵爜鍏ュ簱澶辫触锛寋}鍏ュ簱绔欏洜{}寮傚父锛屾墭鐩樺凡琚��鍥�", inSta.getStaNo(), errMsg);
                     MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, errMsg));
 
                     if (!staProtocol.isLoading()) {
@@ -180,13 +184,13 @@
                     if (!staProtocol.isPakMk()) {
                         continue;
                     }
-                    staProtocol.setWorkNo(wrkNo);
+                    staProtocol.setWorkNo(wrkNo);//閫�鍥� 宸ヤ綔鍙�:10000
                     News.info("{}PLC鍏ュ簱鍥為��锛歿}锛屼换鍔″彿锛歿}", inSta.getStaNo(), errMsg, wrkNo);
-                    wrkNo++;
                     staProtocol.setStaNo(inSta.getBackSta().shortValue());
                     devpThread.setPakMk(staProtocol.getSiteId(), false);
                     MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
-                    log.error("杈撻�佺嚎涓嬪彂1锛�" + wrkNo + "," + inSta.getBackSta());
+                    log.error("杈撻�佺嚎涓嬪彂锛堣秴闄愬叏鏉块��鍥烇級锛�" + wrkNo + "," + inSta.getBackSta());
+                    break;//瓒呴檺鎵樼洏閫�鍥炰笉鐢熸垚宸ヤ綔妗�
                 }
 
                 // 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢
@@ -194,50 +198,32 @@
                         && staProtocol.isLoading()
                         && staProtocol.isInEnable()
                         && !staProtocol.isEmptyMk()
-                        && staProtocol.isPakMk()) {
+                        && staProtocol.isPakMk()
+                        && staProtocol.getWorkNo()==9999) {
                     if (Cools.isEmpty(barcode) || "NG".endsWith(barcode) || "NoRead".equals(barcode) || "00000000".equals(barcode)) {
                         News.info("{}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", inSta.getBarcode(), barcode);
 
                         staProtocol.setWorkNo(wrkNo);
                         News.info("{}barcode鍏ュ簱鍥為��锛歿}锛屼换鍔″彿锛歿}", inSta.getStaNo(), errMsg, wrkNo);
-                        wrkNo++;
                         staProtocol.setStaNo(inSta.getBackSta().shortValue());
                         devpThread.setPakMk(staProtocol.getSiteId(), false);
                         MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
-                        log.error("杈撻�佺嚎涓嬪彂1锛�" + wrkNo + "," + inSta.getBackSta());
+                        log.error("杈撻�佺嚎涓嬪彂锛堟壂鐮佸叏鏉块��鍥烇級锛�" + wrkNo + "," + inSta.getBackSta());
                         continue;
                     }
                     // 鍒ゆ柇閲嶅宸ヤ綔妗�
                     WrkMast wrkMast = wrkMastMapper.selectPakInStep1(inSta.getStaNo(), barcode);
                     if (wrkMast != null) {
-//                        int wrkNo1 = basDevpService.selectCount(new EntityWrapper<BasDevp>().eq("wrk_no", wrkMast.getWrkNo()));
-//                        if (wrkNo1 != 0){
-//                            if (ledThread != null) {
-//                                News.error(methodName + ":鎵爜澶辫触锛岃閲嶈瘯");
-//                            }
-//
-//                        }
                         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());
-//                        staProtocol.setStaNo(RouteUtils.SouStaEnd(null,wrkMast.getSourceStaNo()));
-//                        devpThread.setPakMk(staProtocol.getSiteId(), false);
-//                        boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
-//                        log.info("杈撻�佺嚎涓嬪彂(瀛樺湪璁惧涓婅蛋鐨勫伐浣滄。锛岀洿鎺ヤ笅鍙戯紒))锛�"+wrkMast.getWrkNo()+","+wrkMast.getStaNo());
-//
-//                        ledThread.errorReset();
-//                        log.info("缁勬墭璇锋眰鍚嶭ED閿欒娓呴櫎");
-//
-//                        if (!result) {
-//                            News.error(methodName + ":鏇存柊plc绔欑偣淇℃伅澶辫触");
-//                            log.error("杈撻�佺嚎涓嬪彂(瀛樺湪璁惧涓婅蛋鐨勫伐浣滄。锛岀洿鎺ヤ笅鍙戯紒)==>鏇存柊plc绔欑偣淇℃伅澶辫触");
-//
-////                            throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触");
-//                            continue;
-//                        }
-
                     }
                     WrkMast checkPick = wrkMastService.selectOne(new EntityWrapper<WrkMast>()
                             .eq("barcode", barcode)
@@ -271,7 +257,7 @@
                             staProtocol.setStaNo(dto.getStaNo().shortValue());
                             devpThread.setPakMk(staProtocol.getSiteId(), false);
                             boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
-                            log.error("杈撻�佺嚎涓嬪彂2锛�" + dto.getWorkNo() + "," + dto.getStaNo());
+                            log.error("杈撻�佺嚎涓嬪彂锛堝叏鏉匡級锛�" + dto.getWorkNo() + "," + dto.getStaNo());
 
                             ledThread.errorReset();
                             log.error("缁勬墭璇锋眰鍚嶭ED閿欒娓呴櫎");
@@ -283,43 +269,19 @@
                             }
                         } else {
                             if (jsonObject.getString("msg").equals("宸ヤ綔妗e凡瀛樺湪")) {
-
-                                //宸ヤ綔妗e凡瀛樺湪    鍐嶆杩涘幓
-//                                wrkMast = wrkMastMapper.selectPakInStepBarcode(barcode);
-//                                if (wrkMast != null) {
-//                                    barcodeThread.setBarcode("");
-//                                    staProtocol.setWorkNo(9999);
-//                                    //staProtocol.setWorkNo(wrkMast.getWrkNo());
-//                                    //staProtocol.setStaNo(RouteUtils.SouStaEnd(dto.getStaNo(),dto.getSourceStaNo()));
-//                                    staProtocol.setStaNo(inSta.getBackSta().shortValue());
-//                                    devpThread.setPakMk(staProtocol.getSiteId(), false);
-//                                    boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
-//                                    log.error("杈撻�佺嚎涓嬪彂2锛�" + wrkMast.getWrkNo() + "," + wrkMast.getStaNo());
-//                                    ledThread.errorReset();
-//                                    log.error("缁勬墭璇锋眰鍚嶭ED閿欒娓呴櫎");
-//                                    if (!result) {
-//                                        News.error(methodName + ":鏇存柊plc绔欑偣淇℃伅澶辫触");
-//
-//                                        throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触");
-//                                    }
-//                                }
-
                                 continue;
                             }
                             staProtocol.setWorkNo(wrkNo);
-                            wrkNo++;
                             staProtocol.setStaNo(inSta.getBackSta().shortValue());
                             devpThread.setPakMk(staProtocol.getSiteId(), false);
                             MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
-                            log.error("杈撻�佺嚎涓嬪彂2锛�" + staProtocol.getWorkNo() + "," + staProtocol.getStaNo());
+                            log.error("杈撻�佺嚎涓嬪彂锛堝叏鏉块��鍥烇級锛�" + staProtocol.getWorkNo() + "," + staProtocol.getStaNo());
 
-//                            if (ledThread != null) {
                             String errorMsg = jsonObject.getString("msg");
                             if (!Cools.isEmpty(errorMsg)) {
                                 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);
                         }
 
 
@@ -333,7 +295,7 @@
 
             }
         }
-//        News.infoNoLog(""+mark+" - 0"+" - 缁勬墭  ===銆嬫墽琛屽畬鎴�");
+        News.infoNoLog(""+mark+" - 0"+" - 缁勬墭  ===銆嬫墽琛屽畬鎴�");
 
     }
 
@@ -355,7 +317,7 @@
                     staProtocol = staProtocol.clone();
                 }
 
-//                // 鍏ュ嚭搴撴ā寮忓垽鏂�
+                // 鍏ュ嚭搴撴ā寮忓垽鏂�
                 if (inSta.getStaNo() == 203 && devpThread.ioModeOf2F != IoModeType.PAKIN_MODE) {
                     continue;
                 }
@@ -457,14 +419,11 @@
                     errMsg = "鎵爜澶辫触";
                     back = true;
                 }
-                if(staProtocol.getSiteId() > 400){
-                    back = false;
-                }
 
                 // 閫�鍥�
                 if (back) {
                     log.info("errmsg: " + errMsg);
-//                        News.warn("鎵爜鍏ュ簱澶辫触锛寋}鍏ュ簱绔欏洜{}寮傚父锛屾墭鐩樺凡琚��鍥�", inSta.getStaNo(), errMsg);
+                        News.warn("鎵爜鍏ュ簱澶辫触锛寋}鍏ュ簱绔欏洜{}寮傚父锛屾墭鐩樺凡琚��鍥�", pickSta.getStaNo(), errMsg);
                     MessageQueue.offer(SlaveType.Led, pickSta.getLed(), new Task(5, errMsg));
                     if (!staProtocol.isLoading()) {
                         continue;
@@ -474,11 +433,9 @@
                     }
                     staProtocol.setWorkNo(wrkNo);
                     News.info("{}鍏ュ簱鍥為��锛歿}锛屼换鍔″彿锛歿}", pickSta.getStaNo(), errMsg, wrkNo);
-                    wrkNo++;
                     staProtocol.setStaNo(pickSta.getBackSta().shortValue());
                     devpThread.setPakMk(staProtocol.getSiteId(), false);
                     MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
-                    log.error("杈撻�佺嚎涓嬪彂1锛�" + 9999 + "," + pickSta.getBackSta());
                     LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, pickSta.getLed());
 
                     // led 寮傚父鏄剧ず
@@ -487,27 +444,27 @@
                     }
                     continue;
                 }
-                if(staProtocol.getSiteId() < 400){
-                    if (!Cools.isEmpty(barcode)) {
-                        News.infoNoLog("" + mark + " - 1" + " - {}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", pickSta.getBarcode(), barcode);
-                        if ("NG".endsWith(barcode) || "NoRead".equals(barcode)) {
-                            continue;
-                        }
-                    } else {
-                        continue;
-                    }
-
-
-                    if (!Cools.isEmpty(barcode)) {
+//                if(staProtocol.getSiteId() < 400){
+//                    if (!Cools.isEmpty(barcode)) {
+//                        News.infoNoLog("" + mark + " - 1" + " - {}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", pickSta.getBarcode(), barcode);
+//                        if ("NG".endsWith(barcode) || "NoRead".equals(barcode)) {
+//                            continue;
+//                        }
+//                    } else {
+//                        continue;
+//                    }
+//
+//
+//                    if (!Cools.isEmpty(barcode)) {
 //                    News.info(""+mark+" - 1"+" - {}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", pickSta.getBarcode(), barcode);
-                        if ("NG".endsWith(barcode) || "NoRead".equals(barcode)) {
-                            continue;
-                        }
-                    } else {
-                        continue;
-                    }
-
-                }
+//                        if ("NG".endsWith(barcode) || "NoRead".equals(barcode)) {
+//                            continue;
+//                        }
+//                    } else {
+//                        continue;
+//                    }
+//
+//                }
 
 
                 if (staProtocol == null) {
@@ -516,15 +473,12 @@
                     staProtocol = staProtocol.clone();
                 }
 
-//                // 鍏ュ嚭搴撴ā寮忓垽鏂�
+                // 鍏ュ嚭搴撴ā寮忓垽鏂�
 //                if (devpThread.ioMode != IoModeType.PAKIN_MODE) { continue; }
 
                 if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable() && staProtocol.isPakMk()) {
                     News.warnNoLog("" + mark + " - 0" + " - 寮�濮嬫墽琛�");
                     WrkMast wrkMast = wrkMastMapper.selectPickStep(barcode);
-                    if(staProtocol.getSiteId() > 400){
-                        wrkMast = wrkMastMapper.selectPickStep3(staProtocol.getWorkNo());
-                    }
 //                    WrkMast wrkMast = wrkMastMapper.selectPakInStep3(staProtocol.getWorkNo().intValue());
                     if (wrkMast == null) {
                         // 鏃犳嫞鏂欐暟鎹�
@@ -534,16 +488,6 @@
                             || Cools.isEmpty(wrkMast.getStaNo()) || Cools.isEmpty(wrkMast.getSourceStaNo())) {
                         continue;
                     }
-
-                    // 鎷c�佺洏銆佸苟 浣滀笟绔欒浆鎹�
-//                    int stnNo = 0;
-//                    if (wrkMast.getStaNo() == 109) {
-//                        stnNo = 127;
-//                    } else if (wrkMast.getStaNo() == 113) {
-//                        stnNo = 128;
-//                    } else {
-//                        log.error("{}鍙蜂换鍔℃暟鎹紓甯革紒", wrkMast.getWrkNo());
-//                    }
                     // 鑾峰彇鐩爣绔�
                     Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>()
                             .eq("type_no", wrkMast.getIoType() - 50)
@@ -552,11 +496,11 @@
                     StaDesc staDesc = staDescService.selectOne(wrapper);
                     if (Cools.isEmpty(staDesc)) {
                         News.error("" + mark + " - 2" + " - 鍏ュ簱璺緞涓嶅瓨鍦紒type_no={},stn_no={},crn_no={}", wrkMast.getIoType(), pickSta.getStaNo(), wrkMast.getCrnNo());
-                        staProtocol.setWorkNo(wrkNo++);
-                        staProtocol.setStaNo((short) (pickSta.getStaNo().shortValue() - (short) 1));
+                        staProtocol.setWorkNo(wrkNo);
+                        staProtocol.setStaNo(pickSta.getBackSta().shortValue());
                         devpThread.setPakMk(staProtocol.getSiteId(), false);
                         MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
-                        log.error("杈撻�佺嚎涓嬪彂4锛�" + 9989 + "," + (pickSta.getStaNo().shortValue() - (short) 1));
+                        log.error("杈撻�佺嚎涓嬪彂锛堢洏鐐广�佹嫞鏂欍�佸苟鏉块��鍥烇級锛�" + wrkNo + "," + pickSta.getBackSta());
                         //LED
                         LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, pickSta.getLed());
                         // led 寮傚父鏄剧ず
@@ -609,12 +553,10 @@
 
                     // 鏇存柊绔欑偣淇℃伅 涓� 涓嬪彂plc鍛戒护
                     staProtocol.setWorkNo(wrkMast.getWrkNo());
-                    if(staProtocol.getSiteId() < 400){
-                        staProtocol.setStaNo(Short.valueOf(wrkMast.getStaNo().toString()));
-                    }
+                    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());
+                    log.error("杈撻�佺嚎涓嬪彂锛堢洏鐐广�佹嫞鏂欍�佸苟鏉匡級锛�" + wrkMast.getWrkNo() + "," + wrkMast.getStaNo());
                     if (!result) {
                         News.error("" + mark + " - 3" + " - 鍙戝竷鍛戒护鑷宠緭閫佺嚎闃熷垪澶辫触锛侊紒锛� [plc缂栧彿锛歿}]", devp.getId());
                     }
@@ -627,7 +569,7 @@
             }
 
         }
-//        News.infoNoLog(""+mark+" - 0"+" - 鎷f枡銆佸苟鏉裤�佺洏鐐瑰啀鍏ュ簱  ===銆嬫墽琛屽畬鎴�");
+        News.infoNoLog(""+mark+" - 0"+" - 鎷f枡銆佸苟鏉裤�佺洏鐐瑰啀鍏ュ簱  ===銆嬫墽琛屽畬鎴�");
     }
 
 
@@ -896,6 +838,9 @@
      */
     public synchronized void crnIoExecute(Integer mark) {
 
+        /*鍫嗗灈鏈哄叆鍑哄簱浠诲姟涓嬪彂鎺у埗鍙傛暟*/
+        Integer ioControl=configService.selectCrnIo();
+
         for (CrnSlave crn : slaveProperties.getCrn()) {
             // 鑾峰彇鍫嗗灈鏈轰俊鎭�
             CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crn.getId());
@@ -919,25 +864,68 @@
                     && crnProtocol.getLoaded() == 0 && crnProtocol.getForkPos() == 0) {
                 News.warnNoLog("" + mark + " - 0" + " - 寮�濮嬫墽琛屽爢鍨涙満鍏ュ嚭搴撲綔涓氫笅鍙�");
                 // 濡傛灉鏈�杩戜竴娆℃槸鍏ュ簱妯″紡
-                if (crnProtocol.getLastIo().equals("I")) {
-                    if (basCrnp.getInEnable().equals("Y")) {
+//                if (crnProtocol.getLastIo().equals("I")) {
+//                    if (basCrnp.getInEnable().equals("Y")) {
+//                        //mark - 1 - ....
+//                        this.crnStnToLoc(crn, crnProtocol, mark); //  鍏ュ簱
+//                        crnProtocol.setLastIo("O");
+//                    } else if (basCrnp.getOutEnable().equals("Y")) {
+//                        //mark - 2 - ....
+//                        this.locToCrnStn(crn, crnProtocol, mark); //  鍑哄簱
+//                        crnProtocol.setLastIo("I");
+//                    }
+//                }
+                // 濡傛灉鏈�杩戜竴娆℃槸鍑哄簱妯″紡
+//                else if (crnProtocol.getLastIo().equals("O")) {
+//                    if (basCrnp.getOutEnable().equals("Y")) {
+//                        this.locToCrnStn(crn, crnProtocol, mark); //  鍑哄簱
+//                        crnProtocol.setLastIo("I");
+//                    } else if (basCrnp.getInEnable().equals("Y")) {
+//                        this.crnStnToLoc(crn, crnProtocol, mark); //  鍏ュ簱
+//                        crnProtocol.setLastIo("O");
+//                    }
+//                }
+                if (ioControl==1){
+                    //鍏ュ簱浼樺厛  鍏堟墽琛屽叆搴撳啀鎵ц鍑哄簱
+                    Integer inCount=wrkMastService.selectIn();
+                    if (inCount == 0 && basCrnp.getOutEnable().equals("Y")){
+                        this.locToCrnStn(crn, crnProtocol, mark); //  鍑哄簱
+                    }
+                    if (basCrnp.getInEnable().equals("Y")){
+                        this.crnStnToLoc(crn, crnProtocol, mark); //  鍏ュ簱
+                    }
+                }else if (ioControl==2){
+                    //鍑哄簱浼樺厛 鍏堟墽琛屽嚭搴撳啀鎵ц鍏ュ簱
+                    Integer outCount=wrkMastService.selectOut();
+                    if (outCount==0 && basCrnp.getInEnable().equals("Y")){
+                        this.crnStnToLoc(crn, crnProtocol, mark); //  鍏ュ簱
+                    }
+                    if (basCrnp.getOutEnable().equals("Y")){
+                        this.locToCrnStn(crn, crnProtocol, mark); //  鍑哄簱
+                    }
+                }else if(ioControl==3){
+                    //鍏ュ嚭搴撲氦鏇挎墽琛� 涓嶅仛闄愬埗
+                    // 濡傛灉鏈�杩戜竴娆℃槸鍏ュ簱妯″紡
+                    if (crnProtocol.getLastIo().equals("I")) {
+                        if (basCrnp.getInEnable().equals("Y")) {
                         //mark - 1 - ....
                         this.crnStnToLoc(crn, crnProtocol, mark); //  鍏ュ簱
                         crnProtocol.setLastIo("O");
-                    } else if (basCrnp.getOutEnable().equals("Y")) {
+                        } else if (basCrnp.getOutEnable().equals("Y")) {
                         //mark - 2 - ....
                         this.locToCrnStn(crn, crnProtocol, mark); //  鍑哄簱
                         crnProtocol.setLastIo("I");
+                        }
                     }
-                }
-                // 濡傛灉鏈�杩戜竴娆℃槸鍑哄簱妯″紡
-                else if (crnProtocol.getLastIo().equals("O")) {
-                    if (basCrnp.getOutEnable().equals("Y")) {
+                    // 濡傛灉鏈�杩戜竴娆℃槸鍑哄簱妯″紡
+                    else if (crnProtocol.getLastIo().equals("O")) {
+                        if (basCrnp.getOutEnable().equals("Y")) {
                         this.locToCrnStn(crn, crnProtocol, mark); //  鍑哄簱
                         crnProtocol.setLastIo("I");
-                    } else if (basCrnp.getInEnable().equals("Y")) {
+                        } else if (basCrnp.getInEnable().equals("Y")) {
                         this.crnStnToLoc(crn, crnProtocol, mark); //  鍏ュ簱
                         crnProtocol.setLastIo("O");
+                        }
                     }
                 }
             }
@@ -947,7 +935,7 @@
 //            this.crnRebackHp(crnProtocol, crnThread);
 
         }
-//        News.infoNoLog(""+mark+" - 0"+" - 鍫嗗灈鏈哄叆鍑哄簱浣滀笟涓嬪彂鎵ц瀹屾垚");
+        News.infoNoLog(""+mark+" - 0"+" - 鍫嗗灈鏈哄叆鍑哄簱浣滀笟涓嬪彂鎵ц瀹屾垚");
     }
 
     /**
@@ -1193,24 +1181,28 @@
                 } else {
                     staProtocol = staProtocol.clone();
                 }
-                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);
-                if (staProtocol2 == null) {
-                    News.infoNoLog("" + mark + " - 2" + " - 3" + " - 鍫嗗灈鏈哄嚭搴撶珯淇℃伅(staProtocol!=null缁х画鎵ц,鍚﹀垯寰幆缁堟)锛歴taProtocol=" + staProtocol);
-                    break;
-                } else {
-                    staProtocol2 = staProtocol2.clone();
-                }
+//                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 = 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;
+//                } else {
+//                    staProtocol2 = staProtocol2.clone();
+//                }
                 //鍑哄叆鍙h緭閫佺嚎鍙厑璁稿瓨鍦ㄤ竴涓墭鐩�
-                if(staProtocol.isLoading() || staProtocol1.isLoading() || staProtocol2.isLoading() ) {
-                    break;
-                }
+//                if(staProtocol.isLoading() || staProtocol1.isLoading() || staProtocol2.isLoading() || staProtocol.getWorkNo() != 0 || staProtocol1.getWorkNo() != 0 || staProtocol2.getWorkNo() != 0) {
+//                    break;
+//                }
 
 //            // 鍏ュ嚭搴撴ā寮忓垽鏂�
 //            if (devpThread.ioMode != IoModeType.PAKOUT_MODE) { continue; }
@@ -1539,7 +1531,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) {
@@ -1566,7 +1561,7 @@
 
 
         }
-//        News.infoNoLog(""+mark+" - 0"+" - 瀵瑰伐浣滄。鐨勫畬鎴愭搷浣滄墽琛屽畬鎴�");
+        News.infoNoLog(""+mark+" - 0"+" - 瀵瑰伐浣滄。鐨勫畬鎴愭搷浣滄墽琛屽畬鎴�");
     }
 
     /**
@@ -1688,7 +1683,7 @@
             }
 
         }
-//        News.infoNoLog(""+mark+" - 0"+" - 鍫嗗灈鏈哄紓甯镐俊鎭褰曟墽琛屽畬鎴�");
+        News.infoNoLog(""+mark+" - 0"+" - 鍫嗗灈鏈哄紓甯镐俊鎭褰曟墽琛屽畬鎴�");
     }
 
 
@@ -1753,7 +1748,7 @@
                             //staProtocol.setStaNo(staProtocol.getSiteId().shortValue());
                             devpThread.setPakMk(staProtocol.getSiteId(), false);
                             boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
-                            log.error("杈撻�佺嚎涓嬪彂6锛�" + dto.getWorkNo() + "," + staProtocol.getSiteId());
+                            log.error("杈撻�佺嚎涓嬪彂锛堢┖鏉匡級锛�" + dto.getWorkNo() + "," + staProtocol.getSiteId());
                             if (!result) {
                                 News.errorNoLog("" + mark + " - 1" + " - 鏇存柊plc绔欑偣淇℃伅澶辫触");
                                 throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触");
@@ -1766,7 +1761,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);
@@ -1803,7 +1798,7 @@
                 }
             }
         }
-//        News.infoNoLog(""+mark+" - 0"+" - 绌烘爤鏉垮垵濮嬪寲鍏ュ簱,鍙夎溅鍏ュ簱绔欐斁璐ф墽琛屽畬鎴�");
+        News.infoNoLog(""+mark+" - 0"+" - 绌烘爤鏉垮垵濮嬪寲鍏ュ簱,鍙夎溅鍏ュ簱绔欐斁璐ф墽琛屽畬鎴�");
     }
 
     /**
@@ -1846,6 +1841,9 @@
                     case 53:
                         ledCommand.setTitle("鎷f枡鍐嶅叆搴�");
                         break;
+                    case 54:
+                        ledCommand.setTitle("骞舵澘鍐嶅叆搴�");
+                        break;
                     case 57:
                         ledCommand.setTitle("鐩樼偣鍐嶅叆搴�");
                         break;
@@ -1884,13 +1882,13 @@
                         } else {
                             total = locDetl.getAnfme();
                         }
-                        if (wrkMast.getIoType() == 101 || wrkMast.getIoType() == 1 || wrkMast.getIoType() == 53 || wrkMast.getIoType() == 57) {
+                        if (wrkMast.getIoType() == 101 || wrkMast.getIoType() == 1 || wrkMast.getIoType() == 53 || wrkMast.getIoType() == 57||wrkMast.getIoType() == 54) {
                             ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getBatch(), wrkDetl.getSpecs(), wrkDetl.getOrderNo(),wrkDetl.getOutOrderNo(),wrkDetl.getUnit(),wrkDetl.getWeight(),wrkDetl.getSupp(),wrkDetl.getLength() ,wrkDetl.getTemp1(), wrkDetl.getProType(),wrkDetl.getAnfme(),wrkDetl.getTemp2(), total));
                         }
                         if (wrkMast.getIoType() == 103 ) {
                             ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getBatch(), wrkDetl.getSpecs(), wrkDetl.getOrderNo(),wrkDetl.getOutOrderNo(),wrkDetl.getUnit(),wrkDetl.getWeight(),wrkDetl.getSupp(),wrkDetl.getLength() ,wrkDetl.getTemp1(), wrkDetl.getProType(),wrkDetl.getAnfme(),wrkDetl.getTemp2(), total));
                         }
-                        if (wrkMast.getIoType() == 107) {
+                        if (wrkMast.getIoType() == 107||wrkMast.getIoType()==104) {
                             ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getBatch(), wrkDetl.getSpecs(), wrkDetl.getOrderNo(),wrkDetl.getOutOrderNo(),wrkDetl.getUnit(),wrkDetl.getWeight(),wrkDetl.getSupp(),wrkDetl.getLength() ,wrkDetl.getTemp1(), wrkDetl.getProType(),wrkDetl.getAnfme(),wrkDetl.getTemp2(), total));
                         }
                     });
@@ -2194,7 +2192,7 @@
                     }
 
                     LocMast sourceLoc = locMastService.queryDemoSourceLoc(crn.getId());
-                    LocMast loc = locMastService.queryDemoLoc(crn.getId());
+                    LocMast loc = locMastService.queryDemoLoc(crn.getId(),sourceLoc.getLocType2().toString());
                     if (null == sourceLoc || null == loc) {
                         continue;
                     }
@@ -3191,4 +3189,83 @@
         }
     }
 
+    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.getBay()==0 && 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) 0);     // 婧愬簱浣嶅垪
+                    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