From f165afcbf9e8837ea49b5c46d47c8b1b3bfb4a03 Mon Sep 17 00:00:00 2001
From: dubin <bindu_bean@163.com>
Date: 星期二, 20 一月 2026 11:17:34 +0800
Subject: [PATCH] 初始化

---
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java |  381 ++++++++++++++++++++++++++++++++++++++---------------
 1 files changed, 271 insertions(+), 110 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 a89b29e..96e5d34 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -39,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.entity.Config;
 import com.zy.system.service.ConfigService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -139,7 +140,20 @@
                 // 灏哄妫�娴嬪紓甯�
                 boolean back = false;
                 String errMsg = "";
-                Integer outCount=wrkMastService.selectOutCount();
+                // 妫�娴嬫槸鍚︽湁鍑哄簱浠诲姟 濡傛灉鏈夊嚭搴撲换鍔� 鍏ュ簱灏卞仠姝�
+                List<WrkMast> wrkMastList = wrkMastService.selectList(new EntityWrapper<WrkMast>().eq("crn_no",1).in("wrk_sts", 11, 12));
+                // 妫�娴�104绔欙紙鍫嗗灈鏈哄嚭搴撶珯 鍏ュ簱绔欙級鏄惁鏈夌墿 濡傛灉鏈夌墿娌℃湁宸ヤ綔鍙� 鍏ュ簱鍋滄 濡傛灉鏈夌墿宸ヤ綔鍙锋槸鍑哄簱 鍏ュ簱鍋滄 濡傛灉鏈夌墿宸ヤ綔鍙锋槸鍏ュ簱 鍙互鍏ュ簱 濡傛灉鏈夌墿宸ヤ綔鍙蜂笉瀛樺湪 鍏ュ簱鍋滄
+                StaProtocol staProtocol104 = devpThread.getStation().get(104);
+                if (staProtocol104 == null){
+                    log.error("104绔欑偣淇℃伅鏈幏鍙�");
+                    continue;
+                }
+                //104绔欐湁鐗� 鏈夊伐浣滃彿 鍒ゆ柇杩欎釜浠诲姟鐨勭被鍨�
+                WrkMast wrkMast1 = new WrkMast();
+                if (staProtocol104.isLoading() && staProtocol104.getWorkNo() != 0){
+                    wrkMast1 = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no", staProtocol104.getWorkNo()));
+                }
+
                 if (staProtocol.isFrontErr()) {
                     errMsg = "鍓嶈秴闄�";
                     back = true;
@@ -168,8 +182,26 @@
                     errMsg = "鎵爜澶辫触";
                     back = true;
                 }
-                if (!back && outCount > 0) {
-                    errMsg = "褰撳墠涓哄嚭搴撴椂娈�,鍏ュ簱鏆傚仠";
+                // 鍒ゆ柇鎵樼洏鐮佹牸寮�
+                if (!back &&(Cools.isEmpty(barcode) || "NG".endsWith(barcode) || "NoRead".equals(barcode) || "00000000".equals(barcode))){
+                    errMsg = "鎵樼洏鐮佹牸寮忔湁璇�--->" + barcode;
+                    back = true;
+                }
+                if (!back && (!barcode.startsWith("5") &&  !barcode.startsWith("6") &&  !barcode.startsWith("7") && !barcode.startsWith("8"))) {
+                    errMsg = "鎵樼洏鐮佹牸寮忔湁璇�--->" + barcode;
+                    back = true;
+                }
+                if (!back && !wrkMastList.isEmpty()) {
+                    errMsg = "鏈夊嚭搴撲换鍔�,鍏ュ簱鍋滄";
+                    back = true;
+                }if (!back && staProtocol104.isLoading() && staProtocol104.getWorkNo() == 0 && (barcode.startsWith("6") || barcode.startsWith("5"))){
+                    errMsg = "104绔欐湁鐗╀絾鏄棤宸ヤ綔鍙�,璇锋鏌�";
+                    back = true;
+                }if (!back && (!Cools.isEmpty(wrkMast1) && wrkMast1.getIoType() > 100)){
+                    errMsg = "鏈夊嚭搴撲换鍔�,鍏ュ簱鍋滄";
+                    back = true;
+                }if (!back && (staProtocol104.isLoading() && Cools.isEmpty(wrkMast1)) && (barcode.startsWith("5") || barcode.startsWith("6"))){
+                    errMsg = "104绔欐湁鐗╀絾鏄搴旂殑宸ヤ綔鍙锋棤宸ヤ綔妗�,璇锋鏌�";
                     back = true;
                 }
 
@@ -189,7 +221,7 @@
                     staProtocol.setStaNo(inSta.getBackSta().shortValue());
                     devpThread.setPakMk(staProtocol.getSiteId(), false);
                     MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
-                    log.error("杈撻�佺嚎涓嬪彂锛堣秴闄愬叏鏉块��鍥烇級锛�" + wrkNo + "," + inSta.getBackSta());
+                    log.error("杈撻�佺嚎涓嬪彂锛堝叏鏉块��鍥烇級锛�" + wrkNo + "," + inSta.getBackSta());
                     break;//瓒呴檺鎵樼洏閫�鍥炰笉鐢熸垚宸ヤ綔妗�
                 }
 
@@ -239,7 +271,7 @@
                         param.setBarcode(barcode);
                         param.setIoType(1);
                         param.setSourceStaNo(inSta.getStaNo());
-                        param.setLocType1(locTypeDto.getLocType1());
+                        param.setLocType1(locTypeDto.getLocType1()); // 楂樹綆
                         param.setWeight(staProtocol.getWeight());
                         String response = new HttpHandler.Builder()
                                 .setTimeout(30,TimeUnit.SECONDS)
@@ -388,10 +420,23 @@
 //                    News.error("绔欑偣淇℃伅鏈幏寰�");
                     continue;
                 }
+                // 妫�娴嬫槸鍚︽湁鍑哄簱浠诲姟 濡傛灉鏈夊嚭搴撲换鍔� 鍏ュ簱灏卞仠姝�
+                List<WrkMast> wrkMastList = wrkMastService.selectList(new EntityWrapper<WrkMast>().eq("crn_no", 1).in("wrk_sts", 11, 12));
+                // 妫�娴�104绔欙紙鍫嗗灈鏈哄嚭搴撶珯 鍏ュ簱绔欙級鏄惁鏈夌墿 濡傛灉鏈夌墿娌℃湁宸ヤ綔鍙� 鍏ュ簱鍋滄 濡傛灉鏈夌墿宸ヤ綔鍙锋槸鍑哄簱 鍏ュ簱鍋滄 濡傛灉鏈夌墿宸ヤ綔鍙锋槸鍏ュ簱 鍙互鍏ュ簱 濡傛灉鏈夌墿宸ヤ綔鍙蜂笉瀛樺湪 鍏ュ簱鍋滄
+                StaProtocol staProtocol104 = devpThread.getStation().get(104);
+                if (staProtocol104 == null){
+                    log.error("104绔欑偣淇℃伅鏈幏鍙�");
+                    continue;
+                }
+                //104绔欐湁鐗� 鏈夊伐浣滃彿 鍒ゆ柇杩欎釜浠诲姟鐨勭被鍨�
+                WrkMast wrkMast1 = new WrkMast();
+                if (staProtocol104.isLoading() && staProtocol104.getWorkNo() != 0){
+                    wrkMast1 = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no", staProtocol104.getWorkNo()));
+                }
                 // 灏哄妫�娴嬪紓甯�
                 boolean back = false;
                 String errMsg = "";
-                if (!back && staProtocol.isFrontErr()) {
+                if (staProtocol.isFrontErr()) {
                     errMsg = "鍓嶈秴闄�";
                     back = true;
                 }
@@ -419,11 +464,33 @@
                     errMsg = "鎵爜澶辫触";
                     back = true;
                 }
+                // 鍒ゆ柇鎵樼洏鐮佹牸寮�
+                if (!back &&(Cools.isEmpty(barcode) || "NG".endsWith(barcode) || "NoRead".equals(barcode) || "00000000".equals(barcode))){
+                    errMsg = "鎵樼洏鐮佹牸寮忔湁璇�--->" + barcode;
+                    back = true;
+                }
+                if (!back && (!barcode.startsWith("5") &&  !barcode.startsWith("6") &&  !barcode.startsWith("7") && !barcode.startsWith("8"))) {
+                    errMsg = "鎵樼洏鐮佹牸寮忔湁璇�--->" + barcode;
+                    back = true;
+                }
+                if (!back && !wrkMastList.isEmpty()) {
+                    errMsg = "鏈夊嚭搴撲换鍔�,鍏ュ簱鍋滄";
+                    back = true;
+                }if (!back && staProtocol104.isLoading() && staProtocol104.getWorkNo() == 0 && (barcode.startsWith("6") || barcode.startsWith("5"))){
+                    errMsg = "104绔欐湁鐗╀絾鏄棤宸ヤ綔鍙�,璇锋鏌�";
+                    back = true;
+                }if (!back && (!Cools.isEmpty(wrkMast1) && wrkMast1.getIoType() > 100)){
+                    errMsg = "鏈夊嚭搴撲换鍔�,鍏ュ簱鍋滄";
+                    back = true;
+                }if (!back && (staProtocol104.isLoading() && Cools.isEmpty(wrkMast1)) && (barcode.startsWith("5") || barcode.startsWith("6"))){
+                    errMsg = "104绔欐湁鐗╀絾鏄搴旂殑宸ヤ綔鍙锋棤宸ヤ綔妗�,璇锋鏌�";
+                    back = true;
+                }
 
                 // 閫�鍥�
                 if (back) {
                     log.info("errmsg: " + errMsg);
-                        News.warn("鎵爜鍏ュ簱澶辫触锛寋}鍏ュ簱绔欏洜{}寮傚父锛屾墭鐩樺凡琚��鍥�", pickSta.getStaNo(), errMsg);
+                    News.warn("鎵爜鍏ュ簱澶辫触锛寋}鍏ュ簱绔欏洜{}寮傚父锛屾墭鐩樺凡琚��鍥�", pickSta.getStaNo(), errMsg);
                     MessageQueue.offer(SlaveType.Led, pickSta.getLed(), new Task(5, errMsg));
                     if (!staProtocol.isLoading()) {
                         continue;
@@ -864,71 +931,82 @@
                     && crnProtocol.getLoaded() == 0 && crnProtocol.getForkPos() == 0) {
                 News.warnNoLog("" + mark + " - 0" + " - 寮�濮嬫墽琛屽爢鍨涙満鍏ュ嚭搴撲綔涓氫笅鍙�");
                 // 濡傛灉鏈�杩戜竴娆℃槸鍏ュ簱妯″紡
-//                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")) {
+                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")) {
-                        this.locToCrnStn(crn, crnProtocol, mark); //  鍑哄簱
-                        crnProtocol.setLastIo("I");
-                        } else if (basCrnp.getInEnable().equals("Y")) {
-                        this.crnStnToLoc(crn, crnProtocol, mark); //  鍏ュ簱
-                        crnProtocol.setLastIo("O");
-                        }
                     }
                 }
+                // 濡傛灉鏈�杩戜竴娆℃槸鍑哄簱妯″紡
+                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")) {
+//                        //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");
+//                        }
+//                    }
+//                }
             }
+
+
+
+
             // 搴撲綅绉昏浆
             //mark - 3 - ....
             this.locToLoc(crn, crnProtocol, mark);
@@ -1218,9 +1296,27 @@
                     break;
 //                    continue;
                 }
+
+                // 鍫嗗灈鏈哄嚭搴撶珯鍙嚭淇″彿鏍¢獙鍙傛暟
+                Config config = configService.selectOne(new EntityWrapper<Config>().eq("code", "OutStationVerify"));
+                boolean out = false;
+                if (config != null){
+                    if (config.getValue().equals("Y")){
+                        if (staProtocol.isOutEnable()){
+                            out = true; // 鏍¢獙鍫嗗灈鏈哄嚭搴撶珯鍙嚭淇″彿  鍑哄簱绔欏彲鍑�
+                        }else {
+                            out = false; // 鏍¢獙鍫嗗灈鏈哄嚭搴撶珯淇″彿 鍑哄簱绔欎笉鍙嚭
+                        }
+                    }else if (config.getValue().equals("N")){
+                        out = true; // 涓嶆牎楠屽爢鍨涙満鍑哄簱绔欏彲鍑轰俊鍙�
+                    }else {
+                        throw new CoolException("鏍¢獙鍫嗗灈鏈哄嚭搴撶珯鍙嚭淇″彿鍙傛暟寮傚父 璇烽┈涓婃鏌ュ弬鏁板搴旂殑鍊�");
+                    }
+                }
+
                 // 鍒ゆ柇鍫嗗灈鏈哄嚭搴撶珯鐘舵��
                 if (staProtocol.isAutoing() && !staProtocol.isLoading() && staDetl.getCanouting() != null && staDetl.getCanouting().equals("Y")
-                        && staProtocol.getWorkNo() == 0 && staProtocol.isOutEnable()) {
+                        && staProtocol.getWorkNo() == 0 && out) {
                     // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
 
                     // 鍫嗗灈鏈烘帶鍒惰繃婊�
@@ -1230,53 +1326,53 @@
                     }
 
                     // 鍙屾繁搴撲綅涓旀祬搴撲綅鏈夎揣锛屽垯闇�鍏堝娴呭簱浣嶈繘琛屽簱浣嶇Щ杞�
-                    if (Utils.isDeepLoc(slaveProperties, wrkMast.getSourceLocNo())) {
-                        News.warnNoLog("" + mark + " - 2" + " - 6" + " - 鍙屾繁搴撲綅涓旀祬搴撲綅鏈夎揣锛屽垯闇�鍏堝娴呭簱浣嶈繘琛屽簱浣嶇Щ杞� : 寮�濮嬫墽琛� 浠诲姟鍙�={}", wrkMast.getWrkNo());
-                        String shallowLocNo = Utils.getShallowLoc(slaveProperties, wrkMast.getSourceLocNo());
-                        LocMast shallowLoc = locMastService.selectById(shallowLocNo);
-                        // O.绌哄簱浣嶃�丵.鎷f枡/鐩樼偣/骞舵澘鍐嶅叆搴撱�丼.鍏ュ簱棰勭害銆乆.绂佺敤 鐩存帴鎼紒
-                        if (shallowLoc.getLocSts().equals("P") || shallowLoc.getLocSts().equals("R")) {
-                            News.warnNoLog("" + mark + " - 2" + " - 7" + " - // O.绌哄簱浣嶃�丵.鎷f枡/鐩樼偣/骞舵澘鍐嶅叆搴撱�丼.鍏ュ簱棰勭害銆乆.绂佺敤 鐩存帴鎼紒搴撲綅鐘舵��={}", shallowLoc.getLocSts());
-                            WrkMast waitWrkMast = wrkMastMapper.selectByLocNo(shallowLocNo);
-                            if (null == waitWrkMast) {
-                                News.error("{}搴撲綅寮傚父锛屾湭妫�绱㈠埌鐩稿簲宸ヤ綔妗o紒", shallowLocNo);
-                            } else {
-                                if (waitWrkMast.getWrkSts() == 11) {
-                                    waitWrkMast.setIoPri(15D);
-                                    waitWrkMast.setModiTime(new Date());
-                                    if (wrkMastMapper.updateById(waitWrkMast) == 0) {
-                                        News.error("" + mark + " - 2" + " - 8" + " - 璋冩暣宸ヤ綔妗d紭鍏堢骇澶辫触锛佸伐浣滃彿={}", waitWrkMast.getWrkNo());
-                                    }
-                                    continue;
-                                } else {
-
-                                }
-                            }
-                        } else if (shallowLoc.getLocSts().equals("F") || shallowLoc.getLocSts().equals("D")) {
-                            News.warnNoLog("" + mark + " - 2" + " - 9" + " - // F銆丏  搴撲綅鐘舵��={}", shallowLoc.getLocSts());
+//                    if (Utils.isDeepLoc(slaveProperties, wrkMast.getSourceLocNo())) {
+//                        News.warnNoLog("" + mark + " - 2" + " - 6" + " - 鍙屾繁搴撲綅涓旀祬搴撲綅鏈夎揣锛屽垯闇�鍏堝娴呭簱浣嶈繘琛屽簱浣嶇Щ杞� : 寮�濮嬫墽琛� 浠诲姟鍙�={}", wrkMast.getWrkNo());
+//                        String shallowLocNo = Utils.getShallowLoc(slaveProperties, wrkMast.getSourceLocNo());
+//                        LocMast shallowLoc = locMastService.selectById(shallowLocNo);
+//                        // O.绌哄簱浣嶃�丵.鎷f枡/鐩樼偣/骞舵澘鍐嶅叆搴撱�丼.鍏ュ簱棰勭害銆乆.绂佺敤 鐩存帴鎼紒
+//                        if (shallowLoc.getLocSts().equals("P") || shallowLoc.getLocSts().equals("R")) {
+//                            News.warnNoLog("" + mark + " - 2" + " - 7" + " - // O.绌哄簱浣嶃�丵.鎷f枡/鐩樼偣/骞舵澘鍐嶅叆搴撱�丼.鍏ュ簱棰勭害銆乆.绂佺敤 鐩存帴鎼紒搴撲綅鐘舵��={}", shallowLoc.getLocSts());
 //                            WrkMast waitWrkMast = wrkMastMapper.selectByLocNo(shallowLocNo);
-                            //2022-08-16 modify,涓嶆牴鎹畊pdmk鏍囪绉诲簱浠诲姟(瀹规槗琚彇娑堝鑷村牭濉�)锛屾煡璇㈠伐浣滄。鏄惁瀛樺湪浠诲姟
-                            WrkMast waitWrkMast = wrkMastMapper.selectByLocNo1(shallowLocNo);
-                            // 姝ゆ爣璁伴伩鍏嶅娆℃墽琛岀Щ搴撲换鍔�
-//                            if (Cools.isEmpty(wrkMast.getUpdMk()) || "N".equals(wrkMast.getUpdMk())
-//                                || Cools.isEmpty(waitWrkMast)) {
-                            if (Cools.isEmpty(waitWrkMast)) {
-                                wrkMast.setUpdMk("Y");
-                                wrkMastMapper.updateById(wrkMast);
-                                // 鐢熸垚宸ヤ綔妗�,灏嗘祬搴撲綅绉昏浆鍒版柊鐨勫簱浣嶄腑
-                                moveLocForDeepLoc(slave, shallowLoc, mark);
-                            }
-                            News.error("{}浠诲姟鍑哄簱澶辫触锛屾祬搴撲綅鍫靛锛佹祬搴撲綅鍙�:{}", wrkMast.getWrkNo(), shallowLocNo);
-                            continue;
-                        } else if (shallowLoc.getLocSts().equals("Q") || shallowLoc.getLocSts().equals("S")) {
-                            News.warnNoLog("" + mark + " - 2" + " - 10" + " - // Q銆丼  搴撲綅鐘舵��={}", shallowLoc.getLocSts());
-                            WrkMast waitWrkMast = wrkMastMapper.selectByLocNo1(shallowLocNo);
-                            if (null != waitWrkMast && waitWrkMast.getWrkSts() == 4) {
-                                News.infoNoLog("" + mark + " - 2" + " - 11" + " - // F銆丏  宸ヤ綔鐘舵��(鍒ゆ柇鏉′欢涓�==4)={}", waitWrkMast.getWrkSts());
-                                continue;
-                            }
-                        }
-                    }
+//                            if (null == waitWrkMast) {
+//                                News.error("{}搴撲綅寮傚父锛屾湭妫�绱㈠埌鐩稿簲宸ヤ綔妗o紒", shallowLocNo);
+//                            } else {
+//                                if (waitWrkMast.getWrkSts() == 11) {
+//                                    waitWrkMast.setIoPri(15D);
+//                                    waitWrkMast.setModiTime(new Date());
+//                                    if (wrkMastMapper.updateById(waitWrkMast) == 0) {
+//                                        News.error("" + mark + " - 2" + " - 8" + " - 璋冩暣宸ヤ綔妗d紭鍏堢骇澶辫触锛佸伐浣滃彿={}", waitWrkMast.getWrkNo());
+//                                    }
+//                                    continue;
+//                                } else {
+//
+//                                }
+//                            }
+//                        } else if (shallowLoc.getLocSts().equals("F") || shallowLoc.getLocSts().equals("D")) {
+//                            News.warnNoLog("" + mark + " - 2" + " - 9" + " - // F銆丏  搴撲綅鐘舵��={}", shallowLoc.getLocSts());
+////                            WrkMast waitWrkMast = wrkMastMapper.selectByLocNo(shallowLocNo);
+//                            //2022-08-16 modify,涓嶆牴鎹畊pdmk鏍囪绉诲簱浠诲姟(瀹规槗琚彇娑堝鑷村牭濉�)锛屾煡璇㈠伐浣滄。鏄惁瀛樺湪浠诲姟
+//                            WrkMast waitWrkMast = wrkMastMapper.selectByLocNo1(shallowLocNo);
+//                            // 姝ゆ爣璁伴伩鍏嶅娆℃墽琛岀Щ搴撲换鍔�
+////                            if (Cools.isEmpty(wrkMast.getUpdMk()) || "N".equals(wrkMast.getUpdMk())
+////                                || Cools.isEmpty(waitWrkMast)) {
+//                            if (Cools.isEmpty(waitWrkMast)) {
+//                                wrkMast.setUpdMk("Y");
+//                                wrkMastMapper.updateById(wrkMast);
+//                                // 鐢熸垚宸ヤ綔妗�,灏嗘祬搴撲綅绉昏浆鍒版柊鐨勫簱浣嶄腑
+//                                moveLocForDeepLoc(slave, shallowLoc, mark);
+//                            }
+//                            News.error("{}浠诲姟鍑哄簱澶辫触锛屾祬搴撲綅鍫靛锛佹祬搴撲綅鍙�:{}", wrkMast.getWrkNo(), shallowLocNo);
+//                            continue;
+//                        } else if (shallowLoc.getLocSts().equals("Q") || shallowLoc.getLocSts().equals("S")) {
+//                            News.warnNoLog("" + mark + " - 2" + " - 10" + " - // Q銆丼  搴撲綅鐘舵��={}", shallowLoc.getLocSts());
+//                            WrkMast waitWrkMast = wrkMastMapper.selectByLocNo1(shallowLocNo);
+//                            if (null != waitWrkMast && waitWrkMast.getWrkSts() == 4) {
+//                                News.infoNoLog("" + mark + " - 2" + " - 11" + " - // F銆丏  宸ヤ綔鐘舵��(鍒ゆ柇鏉′欢涓�==4)={}", waitWrkMast.getWrkSts());
+//                                continue;
+//                            }
+//                        }
+//                    }
 
                     // 宸茬粡瀛樺湪鍚婅溅鎵ц浠诲姟鏃讹紝鍒欒繃婊�
                     if (wrkMastMapper.selectWorking(slave.getId()) != null) {
@@ -1697,6 +1793,12 @@
         for (DevpSlave devp : slaveProperties.getDevp()) {
             // 閬嶅巻绌烘澘鍏ュ簱鍙�
             for (DevpSlave.Sta emptyInSta : devp.getEmptyInSta()) {
+                // 鑾峰彇鏉$爜鎵弿浠俊鎭�
+                BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, emptyInSta.getBarcode());
+                if (barcodeThread == null) {
+                    continue;
+                }
+                String barcode = barcodeThread.getBarcode();
                 // 鑾峰彇绌烘澘鍏ュ簱绔欎俊鎭�
                 SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
                 StaProtocol staProtocol = devpThread.getStation().get(emptyInSta.getStaNo());
@@ -1715,6 +1817,64 @@
                     continue;
                 }
 
+                // 灏哄妫�娴嬪紓甯�
+                boolean back = false;
+                String errMsg = "";
+                // 妫�娴嬫槸鍚︽湁鍑哄簱浠诲姟 濡傛灉鏈夊嚭搴撲换鍔� 鍏ュ簱灏卞仠姝�
+                List<WrkMast> wrkMastList = wrkMastService.selectList(new EntityWrapper<WrkMast>().eq("crn_no",1).in("wrk_sts", 11, 12));
+                // 妫�娴�104绔欙紙鍫嗗灈鏈哄嚭搴撶珯 鍏ュ簱绔欙級鏄惁鏈夌墿 濡傛灉鏈夌墿娌℃湁宸ヤ綔鍙� 鍏ュ簱鍋滄 濡傛灉鏈夌墿宸ヤ綔鍙锋槸鍑哄簱 鍏ュ簱鍋滄 濡傛灉鏈夌墿宸ヤ綔鍙锋槸鍏ュ簱 鍙互鍏ュ簱 濡傛灉鏈夌墿宸ヤ綔鍙蜂笉瀛樺湪 鍏ュ簱鍋滄
+                StaProtocol staProtocol104 = devpThread.getStation().get(104);
+                if (staProtocol104 == null){
+                    log.error("104绔欑偣淇℃伅鏈幏鍙�");
+                    continue;
+                }
+                //104绔欐湁鐗� 鏈夊伐浣滃彿 鍒ゆ柇杩欎釜浠诲姟鐨勭被鍨�
+                WrkMast wrkMast1 = new WrkMast();
+                if (staProtocol104.isLoading() && staProtocol104.getWorkNo() != 0){
+                    wrkMast1 = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no", staProtocol104.getWorkNo()));
+                }
+                // 鍒ゆ柇鎵樼洏鐮佹牸寮�
+                if (Cools.isEmpty(barcode) || "NG".endsWith(barcode) || "NoRead".equals(barcode) || "00000000".equals(barcode)){
+                    errMsg = "鎵樼洏鐮佹牸寮忔湁璇�--->" + barcode;
+                    back = true;
+                }
+                if (!back && (!barcode.startsWith("5") &&  !barcode.startsWith("6") &&  !barcode.startsWith("7") && !barcode.startsWith("8"))) {
+                    errMsg = "鎵樼洏鐮佹牸寮忔湁璇�--->" + barcode;
+                    back = true;
+                }
+                if (!back && !wrkMastList.isEmpty()) {
+                    errMsg = "鏈夊嚭搴撲换鍔�,鍏ュ簱鍋滄";
+                    back = true;
+                }if (!back && staProtocol104.isLoading() && staProtocol104.getWorkNo() == 0 && (barcode.startsWith("5") || barcode.startsWith("6"))){ // 104铏界劧鏈夌墿娌℃湁宸ヤ綔鍙� 浣嗘槸濡傛灉102鐨勮揣鐗╄杩涚殑鏄�2鍙峰爢鍨涙満 涓嶈兘闃绘嫤 锛�1鍙峰爢鍨涙満鏉$爜 5xxx 6xxx   2鍙峰爢鍨涙満 7xxx 8xxx锛�
+                    errMsg = "104绔欐湁鐗╀絾鏄棤宸ヤ綔鍙�,璇锋鏌�";
+                    back = true;
+                }if (!back && (!Cools.isEmpty(wrkMast1) && wrkMast1.getIoType() > 100)){
+                    errMsg = "鏈夊嚭搴撲换鍔�,鍏ュ簱鍋滄";
+                    back = true;
+                }if (!back && (staProtocol104.isLoading() && Cools.isEmpty(wrkMast1)) && (barcode.startsWith("5") || barcode.startsWith("6"))){ // 鍚屼笂
+                    errMsg = "104绔欐湁鐗╀絾鏄搴旂殑宸ヤ綔鍙锋棤宸ヤ綔妗�,璇锋鏌�";
+                    back = true;
+                }
+
+                // 閫�鍥�
+                if (back) {
+                    log.info("errmsg: " + errMsg);
+                    MessageQueue.offer(SlaveType.Led, emptyInSta.getLed(), new Task(3, errMsg));
+
+                    if (!staProtocol.isLoading()) {
+                        continue;
+                    }
+                    if (!staProtocol.isPakMk()) {
+                        continue;
+                    }
+                    staProtocol.setWorkNo(wrkNo);//閫�鍥� 宸ヤ綔鍙�:10000
+                    News.info("{}PLC鍏ュ簱鍥為��锛歿}锛屼换鍔″彿锛歿}", emptyInSta.getStaNo(), errMsg, wrkNo);
+                    staProtocol.setStaNo(emptyInSta.getBackSta().shortValue());
+                    devpThread.setPakMk(staProtocol.getSiteId(), false);
+                    MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+                    log.error("杈撻�佺嚎涓嬪彂(姝e湪鎵ц鍑哄簱浠诲姟 绌烘澘鍏ュ簱鏆傚仠)锛�" + wrkNo + "," + emptyInSta.getBackSta());
+                    break;//鎵樼洏閫�鍥炰笉鐢熸垚宸ヤ綔妗�
+                }
                 // 绔欑偣鏉′欢鍒ゆ柇
                 if (staProtocol.isAutoing()
                         && staProtocol.isLoading()
@@ -1732,6 +1892,7 @@
                         param.setIoType(10);
                         param.setSourceStaNo(emptyInSta.getStaNo());
                         param.setLocType1(locTypeDto.getLocType1());
+                        param.setBarcode(barcode); // 绌烘墭鐩樺叆搴撻渶瑕佹牴鎹墭鐩樼爜鍒嗗簱浣�
                         String response = new HttpHandler.Builder()
                                 .setUri(wmsUrl)
                                 .setPath("/rpc/pakin/loc/v1")

--
Gitblit v1.9.1