From 78489da7e2185f53faaec9356fa1a8997cedab70 Mon Sep 17 00:00:00 2001
From: whycq <123456>
Date: 星期三, 28 五月 2025 08:46:55 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java |  160 ++++++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 120 insertions(+), 40 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 42262b7..992fb0f 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -40,14 +40,17 @@
 import com.zy.core.thread.LedThread;
 import com.zy.core.thread.SiemensDevpThread;
 import lombok.extern.slf4j.Slf4j;
-import net.bytebuddy.asm.Advice;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.interceptor.TransactionAspectSupport;
 
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Set;
+import java.util.concurrent.TimeUnit;
 import java.util.stream.Collectors;
 
 /**
@@ -118,6 +121,7 @@
                 if (barcodeThread == null) {
                     continue;
                 }
+
                 String barcode = barcodeThread.getBarcode();
                 // 灏哄妫�娴嬪紓甯�
                 boolean back = false;
@@ -150,10 +154,15 @@
                     errMsg = "鎵爜澶辫触";
                     back = true;
                 }
+
+
+
                 // 閫�鍥�
                 if (back) {
 //                        News.warn("鎵爜鍏ュ簱澶辫触锛寋}鍏ュ簱绔欏洜{}寮傚父锛屾墭鐩樺凡琚��鍥�", inSta.getStaNo(), errMsg);
-                    MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, errMsg));
+                    if(!staProtocol.isOutEnable()){
+                        continue;
+                    }
 
                     if (!staProtocol.isLoading()){
                         continue;
@@ -167,28 +176,43 @@
                     staProtocol.setStaNo(inSta.getBackSta().shortValue());
                     devpThread.setPakMk(staProtocol.getSiteId(), false);
                     MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+                    MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, errMsg));
                 }
-
+                //鎷f枡銆佺洏鐐逛换鍔★紝涓嶈繘鍏ユ柊鏉垮叆搴撴柟娉曪紝鐩存帴璺冲嚭
+                if(staProtocol.getWorkNo()>=3001 && staProtocol.getWorkNo()<=6000){
+                    continue;
+                }
                 // 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢
                 if (staProtocol.isAutoing()
                         && staProtocol.isLoading()
                         && staProtocol.isInEnable()
                         && !staProtocol.isEmptyMk()
-                        && staProtocol.isPakMk()) {// && !Cools.isEmpty(barcode)) {
+                        && staProtocol.isPakMk() && !back) {// && !Cools.isEmpty(barcode)) {
 
                     if(Cools.isEmpty(barcode) || "NG".endsWith(barcode) || "NoRead".equals(barcode) || "00000000".equals(barcode)) {
                         News.info("{}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", inSta.getBarcode(), barcode);
                         //鏉$爜涓虹┖鎴栬�呬笉绗﹀悎锛岄��搴撳埌172绔欑偣
-//                        staProtocol.setWorkNo((short)9999);
-//                        staProtocol.setStaNo((short)172);
-//                        devpThread.setPakMk(staProtocol.getSiteId(), false);
-//                        boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
-//                        if (!result) {
-//                            throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触");
-//                        }
+                        staProtocol.setWorkNo(wrkNo);
+                        staProtocol.setStaNo(inSta.getBackSta().shortValue());
+                        wrkNo++;
+                        devpThread.setPakMk(staProtocol.getSiteId(), false);
+                        boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+                        if (!result) {
+                            throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触");
+                        }
                         continue;
                     }
-
+//                    //鍒ゆ柇101鍜�104鏄惁鏄嫞鏂欍�佸苟鏉裤�佺洏鐐瑰啀鍏ュ簱   璁惧鏆備笉鏀寔101銆�104绔欑洏鐐�/鎷f枡鍏ュ簱
+//                    WrkMast wrkMast1=wrkMastMapper.selectpj(inSta.getStaNo(),barcode);
+//                    if(!Cools.isEmpty(wrkMast1)){
+//                        if (wrkMast1.getIoType()!=1){
+//                            continue;
+//                        }
+//                    }
+//                    if( !Cools.isEmpty(barcode)&&!Cools.isEmpty(wrkMast1)){
+//                        log.error("101鎴�104鎷f枡銆佸苟鏉裤�佺洏鐐瑰啀鍏ュ簱", wrkMast1.getWrkNo());
+//                        continue;
+//                    }
                     // 鍒ゆ柇閲嶅宸ヤ綔妗�
                     WrkMast wrkMast = wrkMastMapper.selectPakInStep1(inSta.getStaNo(), barcode);
                     if (wrkMast != null) {
@@ -202,9 +226,11 @@
 
                     WrkMast checkPick = wrkMastService.selectOne(new EntityWrapper<WrkMast>()
                             .eq("barcode", barcode)
-                            .in("io_type", 107,103));
+                            .in("io_type", 107,103,104,57,53));
                     if (!Cools.isEmpty(checkPick)) {
                         continue;
+                    } else {
+                        News.info("鏂版澘鍏ュ簱鏉$爜===>>" + barcode);
                     }
 //                    WrkMast checkPick2 = wrkMastService.selectOne(new EntityWrapper<WrkMast>()
 //                            .eq("barcode", barcode)
@@ -224,6 +250,7 @@
                         param.setLocType1(locTypeDto.getLocType1());
                         String response = new HttpHandler.Builder()
                                 .setUri(wmsUrl)
+                                .setTimeout(30, TimeUnit.SECONDS)
                                 .setPath("/rpc/pakin/loc/v1")
                                 .setJson(JSON.toJSONString(param))
                                 .build()
@@ -241,6 +268,8 @@
                                 News.error(methodName + ":鏇存柊plc绔欑偣淇℃伅澶辫触");
 
                                 throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触");
+                            }else {
+                                ledThread.errorReset();
                             }
 
 
@@ -419,33 +448,46 @@
                 }
                 String barcode = barcodeThread.getBarcode();
 
-                if (!Cools.isEmpty(barcode)) {
+                WrkMast wrkMast1 = wrkMastMapper.selectPickStep1(staProtocol.getWorkNo().intValue());
+
+                //浠诲姟鍙峰鏋滃湪宸ヤ綔妗d腑瀛樺湪锛屽氨涓嶇敤鍘诲垽鏂潯鐮�
+                if(Cools.isEmpty(wrkMast1)) {
+//                    WrkMast mast = wrkMastMapper.selectPickStep(barcode);
+//                    if (Cools.isEmpty(mast)) {
+//                        break;
+//                    }
+
+                    if (!Cools.isEmpty(barcode)) {
+
+
 //                    log.info("{}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", pickSta.getBarcode(), barcode);
-                    if ("NG".endsWith(barcode) || "NoRead".equals(barcode) || "00000000".equals(barcode)) {
-                        if (!staProtocol.isLoading()) {
+                        if ("NG".endsWith(barcode) || "NoRead".equals(barcode)  && staProtocol.isPakMk()) {
+                            if (!staProtocol.isLoading()) {
+                                continue;
+                            }
+                            if (!staProtocol.isPakMk()) {
+                                continue;
+                            }
+                            if (staProtocol.getWorkNo() != 0) {
+                                continue;
+                            }
+
+                            staProtocol.setWorkNo(wrkNo);
+                            wrkNo++;
+                            staProtocol.setStaNo(pickSta.getBackSta().shortValue());
+                            devpThread.setPakMk(staProtocol.getSiteId(), false);
+                            MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+                            // led 寮傚父鏄剧ず
+                            if (ledThread != null) {
+                                String errorMsg = "鎵爜澶辫触锛岃閲嶈瘯";
+                                News.error(methodName + ":鎵爜澶辫触锛岃閲嶈瘯");
+                                MessageQueue.offer(SlaveType.Led, pickSta.getLed(), new Task(3, errorMsg));
+                            }
                             continue;
                         }
-                        if (!staProtocol.isPakMk()) {
-                            continue;
-                        }
-                        if(staProtocol.getWorkNo() != 0) {
-                            continue;
-                        }
-                        staProtocol.setWorkNo(wrkNo);
-                        wrkNo++;
-                        staProtocol.setStaNo(pickSta.getBackSta().shortValue());
-                        devpThread.setPakMk(staProtocol.getSiteId(), false);
-                        MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
-                        // led 寮傚父鏄剧ず
-                        if (ledThread != null) {
-                            String errorMsg = "鎵爜澶辫触锛岃閲嶈瘯";
-                            News.error(methodName + ":鎵爜澶辫触锛岃閲嶈瘯");
-                            MessageQueue.offer(SlaveType.Led, pickSta.getLed(), new Task(3, errorMsg));
-                        }
+                    } else {
                         continue;
                     }
-                } else {
-                    continue;
                 }
 
 
@@ -459,7 +501,12 @@
 //                        && (staProtocol.getWorkNo() == 9999 || staProtocol.getWorkNo() == 9997 || staProtocol.getWorkNo() == 9995)
                         && staProtocol.isPakMk()) {
 
-                    WrkMast wrkMast = wrkMastMapper.selectPickStep(barcode);
+                    WrkMast wrkMast = null;
+                    //浼樺厛鏌ヨ浠诲姟鍙峰搴旂殑宸ヤ綔妗f湁娌℃湁锛屽鏋滄湁鐨勮瘽灏变笉鐢ㄦ煡鏉$爜鍙�
+                    wrkMast = wrkMastMapper.selectPickStep1(staProtocol.getWorkNo().intValue());
+                    if(Cools.isEmpty(wrkMast)) {
+                        wrkMast = wrkMastMapper.selectPickStep(barcode);
+                    }
 //                    WrkMast wrkMast = wrkMastMapper.selectPakInStep3(staProtocol.getWorkNo().intValue());
                     if (wrkMast == null) {
                         // 鏃犳嫞鏂欐暟鎹�
@@ -469,6 +516,9 @@
                             || Cools.isEmpty(wrkMast.getStaNo()) || Cools.isEmpty(wrkMast.getSourceStaNo())) {
                         continue;
                     }
+                    LocMast locMast1 = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", wrkMast.getSourceLocNo()));
+
+
 
                     // 鎷c�佺洏銆佸苟 浣滀笟绔欒浆鎹�
 //                    int stnNo = 0;
@@ -538,12 +588,16 @@
                         TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                         continue;
                     }
-
+                    if (ledThread != null) {
+                        ledThread.errorReset();
+                    }
                     // 鏇存柊绔欑偣淇℃伅 涓� 涓嬪彂plc鍛戒护
                     staProtocol.setWorkNo(wrkMast.getWrkNo().shortValue());
                     staProtocol.setStaNo(wrkMast.getStaNo().shortValue());
                     devpThread.setPakMk(staProtocol.getSiteId(), false);
                     boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+
+
                     if (!result) {
                         News.error(methodName + ":鍙戝竷鍛戒护鑷宠緭閫佺嚎闃熷垪澶辫触锛侊紒锛� [plc缂栧彿锛歿}]", devp.getId());
 
@@ -610,6 +664,7 @@
                         wrkMast.setCrnEndTime(new Date());
                         if (wrkMastMapper.updateById(wrkMast) != 0) {
                             // 澶嶄綅鍫嗗灈鏈�
+                            News.info("crnStnToOutStn鍫嗗灈鏈哄浣嶆椂宸ヤ綔鍙�===>>" + crnProtocol.getTaskNo());
                             crnThread.setResetFlag(true);
                         } else {
                             News.error(methodName + ":鏇存柊宸ヤ綔妗g殑宸ヤ綔鐘舵�佷负14澶辫触锛侊紒锛� [宸ヤ綔鍙�:{}]", wrkMast.getWrkNo());
@@ -786,6 +841,12 @@
             // 鍫嗗灈鏈烘帶鍒惰繃婊�
             if (!crnProtocolNow.getStatusType().equals(CrnStatusType.IDLE) || crnProtocolNow.getTaskNo() != 0) {
                 continue;
+            }
+
+            // 宸茬粡瀛樺湪鍚婅溅鎵ц浠诲姟鏃讹紝鍒欒繃婊�
+            if (wrkMastMapper.selectWorking(slave.getId()) != null) {
+                break;
+//                        return;
             }
 
             // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
@@ -1150,6 +1211,7 @@
 //                    continue;
                 }
                 // 鍒ゆ柇鍫嗗灈鏈哄嚭搴撶珯鐘舵��
+
                 if (staProtocol.isAutoing() && !staProtocol.isLoading() && staDetl.getCanouting() != null && staDetl.getCanouting().equals("Y")
                         && staProtocol.getWorkNo() == 0 && staProtocol.isOutEnable()) {
                     // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
@@ -1499,6 +1561,7 @@
                     }
                     // 鍏ュ簱 + 搴撲綅杞Щ  ==> 4.鍏ュ簱瀹屾垚
                     if (wrkMast.getWrkSts() == 3 || (wrkMast.getWrkSts() == 12 && wrkMast.getIoType() == 11)) {
+                        log.error("鍏ュ簱瀹屾垚鍫嗗灈鏈轰换鍔�=========銆�"+JSON.toJSONString(wrkMast));
                         wrkMast.setWrkSts(4L);
                     } else {
                         continue;
@@ -1509,6 +1572,7 @@
                     // 淇敼鎴愬姛鍚庡浣嶅爢鍨涙満
                     if (wrkMastMapper.updateById(wrkMast) > 0) {
                         // 鍫嗗灈鏈哄浣�
+                        News.info("storeFinished鍫嗗灈鏈哄浣嶆椂宸ヤ綔鍙�===>>" + crnProtocol.getTaskNo());
                         crnThread.setResetFlag(true);
                     }
                 }
@@ -1674,6 +1738,7 @@
                         param.setLocType1(locTypeDto.getLocType1());
                         String response = new HttpHandler.Builder()
                                 .setUri(wmsUrl)
+                                .setTimeout(30, TimeUnit.SECONDS)
                                 .setPath("/rpc/pakin/loc/v1")
                                 .setJson(JSON.toJSONString(param))
                                 .build()
@@ -1848,6 +1913,8 @@
                 if (!MessageQueue.offer(SlaveType.Led, led.getId(), new Task(1, commands))) {
                     News.error("{}鍙稬ED鍛戒护涓嬪彂澶辫触锛侊紒锛乕ip锛歿}] [port锛歿}]", led.getId(), led.getIp(), led.getPort());
                     continue;
+                } else {
+//                    News.info("{}鍙稬ED鍛戒护涓嬪彂鎴愬姛锛侊紒锛乕ip锛歿}] [port锛歿}] [port锛歿}]", led.getId(), led.getIp(), led.getPort(),commands);
                 }
             }
 
@@ -1884,16 +1951,27 @@
             for (Integer staNo : led.getStaArr()) {
                 // 鑾峰彇鍙夎溅绔欑偣
                 StaProtocol staProtocol = devpThread.getStation().get(staNo);
+                StaProtocol staProtocol1 = devpThread.getStation().get(staNo+1);
                 if (staProtocol == null) { continue; }
-                if (staProtocol.getWorkNo() != 0) {
+                if (staProtocol1 == null) { continue; }
+                if (staProtocol.getWorkNo() != 0 || staProtocol.isLoading()) {
                     reset = false;
                     break;
                 }
+                if (staProtocol1.isLoading() || staProtocol1.getWorkNo() != 0) {
+                    reset = false;
+                    break;
+                }
+                if (!staProtocol.isLoading() && staProtocol.getWorkNo() == 0 && !staProtocol1.isLoading() && staProtocol1.getWorkNo() == 0){
+//                    News.error("{}鍙稬ED鍏ュ簱鍙�2涓珯鐐归兘娌℃湁鏁版嵁,鍑嗗reset澶嶄綅鏄剧ず鍣紒锛侊紒[ip锛歿}] [port锛歿}]", led.getId(), led.getIp(), led.getPort());
+                }
             }
             // 鑾峰彇led绾跨▼
-            LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, led.getDevpPlcId());
+//            LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, led.getDevpPlcId());
+            LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, led.getId());
             // led鏄剧ず榛樿鍐呭
             if (reset) {
+                //News.info("{}鍙稬ED鍛戒护閲嶇疆锛侊紒锛乕ip锛歿}] [port锛歿}]", led.getId(), led.getIp(), led.getPort());
                 if (ledThread == null) {
                     continue;
                 }
@@ -2360,6 +2438,7 @@
             try {
                 String response = new HttpHandler.Builder()
                         .setUri(wmsUrl)
+                        .setTimeout(30, TimeUnit.SECONDS)
                         .setPath("/rpc/auto/emptyOut/v1")
                         .build()
                         .doPost();
@@ -2398,6 +2477,7 @@
 
                 String response = new HttpHandler.Builder()
                         .setUri(wmsUrl)
+                        .setTimeout(30, TimeUnit.SECONDS)
                         .setPath("/rpc/auto/emptyIn/v1")
                         .setJson(JSON.toJSONString(locTypeDto))
                         .build()

--
Gitblit v1.9.1