From 1b7967093be5c6af64571a37bd9bbce27be11686 Mon Sep 17 00:00:00 2001
From: zjj <3272660260@qq.com>
Date: 星期五, 12 四月 2024 08:33:37 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java |  415 +++++++++++++++++++++++++++++++++++++++++++++--------------
 1 files changed, 317 insertions(+), 98 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 724a297..b1ab546 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -46,6 +46,7 @@
 import org.springframework.transaction.interceptor.TransactionAspectSupport;
 
 import java.util.*;
+import java.util.concurrent.TimeUnit;
 import java.util.stream.Collectors;
 
 /**
@@ -184,6 +185,13 @@
                     if(Cools.isEmpty(barcode) || "NG".endsWith(barcode) || "NoRead".equals(barcode) || "00000000".equals(barcode)) {
                         News.info("{}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", inSta.getBarcode(), barcode);
 
+                        staProtocol.setWorkNo(wrkNo);
+                        News.info("{}鍏ュ簱鍥為��锛歿}锛屼换鍔″彿锛歿}", 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());
                         continue;
                     }
                     // 鍒ゆ柇閲嶅宸ヤ綔妗�
@@ -198,7 +206,7 @@
                     }
                     WrkMast checkPick = wrkMastService.selectOne(new EntityWrapper<WrkMast>()
                             .eq("barcode", barcode)
-                            .in("io_type", 107,103));
+                            .in("io_type", 107,103,57));
                     if (!Cools.isEmpty(checkPick)) {
                         continue;
                     }
@@ -221,27 +229,31 @@
                             StartupDto dto = jsonObject.getObject("data", StartupDto.class);
                             barcodeThread.setBarcode("");
                             staProtocol.setWorkNo(dto.getWorkNo());
-                            staProtocol.setStaNo(dto.getStaNo().shortValue());
+                            staProtocol.setStaNo(RouteUtils.SouStaEnd(dto.getStaNo(),dto.getSourceStaNo()));
                             devpThread.setPakMk(staProtocol.getSiteId(), false);
                             boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
                             log.error("杈撻�佺嚎涓嬪彂2锛�"+dto.getWorkNo()+","+dto.getStaNo());
+
+                            ledThread.errorReset();
+                            log.error("缁勬墭璇锋眰鍚嶭ED閿欒娓呴櫎");
+
                             if (!result) {
                                 News.error(methodName + ":鏇存柊plc绔欑偣淇℃伅澶辫触");
 
                                 throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触");
                             }
                         } else {
-//                            staProtocol.setWorkNo(wrkNo);
-//                            wrkNo++;
-//                            staProtocol.setStaNo(inSta.getBackSta().shortValue());
-//                            devpThread.setPakMk(staProtocol.getSiteId(), false);
-//                            MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+                            staProtocol.setWorkNo(wrkNo);
+                            wrkNo++;
+                            staProtocol.setStaNo(inSta.getBackSta().shortValue());
+                            devpThread.setPakMk(staProtocol.getSiteId(), false);
+                            MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
 //
 //                            if (ledThread != null) {
-//                                String errorMsg = jsonObject.getString("msg");
-//                                if (!Cools.isEmpty(errorMsg)) {
-//                                    MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, errorMsg));
-//                                }
+                                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);
                         }
@@ -392,7 +404,7 @@
                     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(9989);
+                        staProtocol.setWorkNo(wrkNo++);
                         staProtocol.setStaNo((short) (pickSta.getStaNo().shortValue()-(short)1));
                         devpThread.setPakMk(staProtocol.getSiteId(), false);
                         MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
@@ -402,7 +414,7 @@
                         // led 寮傚父鏄剧ず
                         if (ledThread != null) {
                             String errorMsg = "姝や负鎷f枡銆佸苟鏉裤�佺洏鐐瑰啀鍏ュ簱.璇锋斁鍦�"+pickSta.getBackSta().shortValue()+"绔欑偣";
-                            MessageQueue.offer(SlaveType.Led, pickSta.getLed(), new Task(5, errorMsg));
+                            MessageQueue.offer(SlaveType.Led, pickSta.getLed(), new Task(3, errorMsg));
                         }
                         continue;
                     }
@@ -449,7 +461,7 @@
 
                     // 鏇存柊绔欑偣淇℃伅 涓� 涓嬪彂plc鍛戒护
                     staProtocol.setWorkNo(wrkMast.getWrkNo());
-                    staProtocol.setStaNo(wrkMast.getStaNo().shortValue());
+                    staProtocol.setStaNo((short) 161);
                     devpThread.setPakMk(staProtocol.getSiteId(), false);
                     boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
                     log.error("杈撻�佺嚎涓嬪彂5锛�"+wrkMast.getWrkNo()+","+wrkMast.getStaNo());
@@ -466,6 +478,170 @@
 
         }
 //        News.infoNoLog(""+mark+" - 0"+" - 鎷f枡銆佸苟鏉裤�佺洏鐐瑰啀鍏ュ簱  ===銆嬫墽琛屽畬鎴�");
+    }
+
+
+    //鐩樼偣鍐嶅叆搴�
+    public synchronized void stnToCrnStnPick2(){
+        for (DevpSlave devp : slaveProperties.getDevp()) {
+            // 閬嶅巻鎷f枡鍏ュ簱鍙�
+            for (DevpSlave.Sta pickSta : devp.getPickSta()) {
+                // 鑾峰彇鎷f枡鍏ュ簱绔欎俊鎭�
+                DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
+                StaProtocol staProtocol = devpThread.getStation().get(pickSta.getStaNo());
+                if (staProtocol == null) {
+                    continue;
+                } else {
+                    staProtocol = staProtocol.clone();
+                }
+                if (staProtocol.isAutoing()
+                        && staProtocol.isLoading()
+                        && staProtocol.isInEnable()
+                        && !staProtocol.isEmptyMk()
+//                        && staProtocol.getWorkNo() > 0
+                        && staProtocol.isPakMk()){
+
+                    // 鑾峰彇鏉$爜鎵弿浠俊鎭�
+                    BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, pickSta.getBarcode());
+                    if (barcodeThread == null) {
+                        continue;
+                    }
+                    String barcode = barcodeThread.getBarcode();
+                    if(!Cools.isEmpty(barcode)) {
+//                        log.info("{}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", pickSta.getBarcode(), barcode);
+                        if("NG".endsWith(barcode) || "NoRead".equals(barcode) || "empty".equals(barcode)) {
+                            staProtocol.setWorkNo(wrkNo++);
+                            staProtocol.setStaNo(pickSta.getBackSta().shortValue());
+                            devpThread.setPakMk(staProtocol.getSiteId(), false);
+                            MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+
+                            // led 寮傚父鏄剧ず
+                            LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, pickSta.getLed());
+                            if (ledThread != null) {
+                                String errorMsg = "鎵爜澶辫触锛岃閲嶈瘯";
+                                MessageQueue.offer(SlaveType.Led, pickSta.getLed(), new Task(3, errorMsg));
+                            }
+                            continue;
+                        }
+                    } else {
+                        staProtocol.setWorkNo(wrkNo++);
+                        staProtocol.setStaNo(pickSta.getBackSta().shortValue());
+                        devpThread.setPakMk(staProtocol.getSiteId(), false);
+                        MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+
+                        // led 寮傚父鏄剧ず
+                        LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, pickSta.getLed());
+                        if (ledThread != null) {
+                            String errorMsg = "鎵爜澶辫触锛岃閲嶈瘯";
+                            MessageQueue.offer(SlaveType.Led, pickSta.getLed(), new Task(3, errorMsg));
+                        }
+                        continue;
+                    }
+
+                    WrkMast wrkMast = wrkMastMapper.selectPickStep2(barcode);
+                    if (wrkMast == null) {
+                        // 鏃犵洏鐐规暟鎹�
+                        continue;
+                    }
+
+                    // 鍑哄簱纭淇″彿浣�
+//                    if ((Cools.isEmpty(wrkMast.getInvWh()) || wrkMast.getInvWh().equals("N")) && wrkMast.getIoType() != 107) {
+//                        continue;
+//                    }
+//                    if ( wrkMast.getIoType() != 107 || Cools.isEmpty(wrkMast.getStaNo())
+//                            || Cools.isEmpty(wrkMast.getSourceStaNo())) {
+//                        continue;
+//                    }
+
+                    //   鑾峰彇搴撲綅鍙�
+                    try {
+                        LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", wrkMast.getSourceLocNo()));
+                        LocTypeDto locTypeDto = new LocTypeDto(staProtocol);
+                        SearchLocParam param = new SearchLocParam();
+                        param.setBarcode(barcode);
+                        param.setIoType(107);
+                        param.setSourceStaNo(pickSta.getStaNo()); //浣滀笟绔欑偣
+                        if (!Cools.isEmpty(locMast)){
+                            param.setLocType1(locMast.getLocType1());
+                        }else {
+                            param.setLocType1(locTypeDto.getLocType1());
+                        }
+
+                        String response = "";
+                        log.info("鍏ュ簱浣滀笟绔�"+pickSta.getStaNo()+"鐩樼偣鍐嶅叆搴撲换鍔¤姹俉MS===>>鍙傛暟锛�" + param);
+                        try {
+                            response = new HttpHandler.Builder()
+                                    .setUri(wmsUrl)
+                                    .setPath("/rpc/pakin2/loc/v1")
+                                    .setJson(JSON.toJSONString(param))
+//                                    .setTimeout(15, TimeUnit.SECONDS)
+                                    .build()
+                                    .doPost();
+                        } catch(Exception e){
+                            log.error("鍏ュ簱浣滀笟绔�"+pickSta.getStaNo()+"鐩樼偣鍐嶅叆搴撲换鍔¤姹俉MS===>>鍙傛暟锛�" + param);
+                            log.error("stnToCrnStnPick2===>>鐩樼偣鏌ュ簱浣嶅叆搴撴帴鍙eけ璐�", e);
+                            e.printStackTrace();
+                            continue;
+                        }
+                        log.info("鍏ュ簱浣滀笟绔�"+pickSta.getStaNo()+"鐩樼偣鍐嶅叆搴撲换鍔¤姹俉MS===>>鍙傛暟锛�" + param);
+                        log.info("鍏ュ簱浣滀笟绔�"+pickSta.getStaNo()+"涓嬪彂鐩樼偣鍐嶅叆搴撲换鍔¤姹俉MS杩斿洖缁撴灉===>>" + response);
+                        if(response.equals("")) {
+                            continue;
+                        }
+                        JSONObject jsonObject = JSON.parseObject(response);
+                        LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, pickSta.getLed());
+                        Integer code = jsonObject.getInteger("code");
+                        if (code == 200) {
+                            StartupDto dto = jsonObject.getObject("data", StartupDto.class);
+                            if (Cools.isEmpty(dto) || Cools.isEmpty(dto.getStaNo())) {
+                                log.error("浠诲姟鍙�"+wrkMast.getWrkNo()+"鐩樼偣鍐嶅叆搴撴煡璇㈠簱浣嶅け璐�===>>" + jsonObject.toJSONString());
+                            } else {
+                                log.info("浠诲姟鍙�"+wrkMast.getWrkNo()+"鐩樼偣鍐嶅叆搴撴煡璇㈠簱浣嶆垚鍔�===>>" + jsonObject.toJSONString());
+                                try {
+                                    // 鏇存柊绔欑偣淇℃伅 涓� 涓嬪彂plc鍛戒护
+                                    staProtocol.setWorkNo(wrkMast.getWrkNo());
+                                    staProtocol.setStaNo((short)161);
+                                    devpThread.setPakMk(staProtocol.getSiteId(), false);
+
+                                    boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+                                    if (!result) {
+                                        log.error("鍙戝竷鍛戒护鑷宠緭閫佺嚎闃熷垪澶辫触锛侊紒锛� [plc缂栧彿锛歿}]", devp.getId());
+                                    }
+                                    log.info("浠诲姟鍙�"+wrkMast.getWrkNo()+"鐩樼偣鍐嶅叆搴撲换鍔′笅鍙戞垚鍔�===>>" + staProtocol);
+
+                                    ledThread.errorReset();
+                                    log.error("鐩樼偣鍚巐ed閿欒鍒犻櫎");
+
+                                } catch (Exception e) {
+                                    log.error("鐩樼偣鍐嶅叆搴撳け璐�===>>" + e);
+                                    e.printStackTrace();
+                                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+                                }
+                            }
+                        } else {
+                            staProtocol.setWorkNo(wrkNo++);
+                            staProtocol.setStaNo(pickSta.getBackSta().shortValue());
+                            devpThread.setPakMk(staProtocol.getSiteId(), false);
+                            MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+                            if (ledThread != null) {
+                                String errorMsg = jsonObject.getString("msg");
+                                if (!Cools.isEmpty(errorMsg)) {
+                                    MessageQueue.offer(SlaveType.Led, pickSta.getLed(), new Task(3, errorMsg));
+                                }
+                            }
+                            log.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/pakin2/loc/v1", JSON.toJSONString(param), response);
+                        }
+                    } catch (Exception e) {
+                        log.error("stnToCrnStnPick2===>>fail", e);
+                        e.printStackTrace();
+                        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+                    }
+
+                }
+
+            }
+
+        }
     }
 
     /**
@@ -505,7 +681,7 @@
                     if (crnProtocol.modeType == CrnModeType.AUTO && crnProtocol.getTaskNo().equals(wrkMast.getWrkNo().shortValue())
                             && crnProtocol.statusType == CrnStatusType.WAITING
                             && crnProtocol.forkPosType == CrnForkPosType.HOME) {
-                        News.warnNoLog(""+mark+" - 0"+" - 寮�濮嬫墽琛�");
+                        News.error("鍫嗗灈鏈哄嚭搴撳畬鎴� - 寮�濮嬫墽琛�");
 
                         // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
 
@@ -521,6 +697,7 @@
                         wrkMast.setCrnEndTime(new Date());
                         if (wrkMastMapper.updateById(wrkMast) != 0) {
                             // 澶嶄綅鍫嗗灈鏈�
+                            News.error("鍑哄簱浠诲姟瀹屾垚涓嬪彂鍫嗗灈鏈哄浣�", wrkMast.getWrkNo());
                             crnThread.setResetFlag(true);
                         } else {
                             News.error(""+mark+" - 1"+" - 鏇存柊宸ヤ綔妗g殑宸ヤ綔鐘舵�佷负14澶辫触锛侊紒锛� [宸ヤ綔鍙�:{}]", wrkMast.getWrkNo());
@@ -1400,7 +1577,7 @@
                                 ledCommand.setLocNo(dto.getLocNo());
                                 ledCommand.setStaNo(dto.getStaNo());
                                 commands.add(ledCommand);
-                                MessageQueue.offer(SlaveType.Led, emptyInSta.getLed(), new Task(3, commands));
+                                MessageQueue.offer(SlaveType.Led, emptyInSta.getLed(), new Task(1, commands));
 //                                ledThread.errorReset();
                             }
                         } else {
@@ -1413,12 +1590,12 @@
 //                                throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触");
 //                            }
 //
-//                            if (ledThread != null) {
-//                                String errorMsg = jsonObject.getString("msg");
-//                                if (!Cools.isEmpty(errorMsg)) {
-//                                    MessageQueue.offer(SlaveType.Led, emptyInSta.getLed(), new Task(5, errorMsg));
-//                                }
-//                            }
+                            if (ledThread != null) {
+                                String errorMsg = jsonObject.getString("msg");
+                                if (!Cools.isEmpty(errorMsg)) {
+                                    MessageQueue.offer(SlaveType.Led, emptyInSta.getLed(), new Task(3, errorMsg));
+                                }
+                            }
 //                            News.error(""+mark+" - 3"+" - 璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/pakin/loc/v1", JSON.toJSONString(param), response);
                         }
                     } catch (Exception e) {
@@ -1440,7 +1617,6 @@
      * 鍑哄簱  ===>> 宸ヤ綔妗d俊鎭啓鍏ed鏄剧ず鍣�
      */
     public synchronized void ledExecute(Integer mark) {
-
         for (LedSlave led : slaveProperties.getLed()) {
             // 鑾峰彇杈撻�佺嚎plc绾跨▼
             DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, led.getDevpPlcId());
@@ -1458,11 +1634,7 @@
                 }
                 // 鑾峰彇宸ヤ綔妗f暟鎹�
                 WrkMast wrkMast = wrkMastMapper.selectById(staProtocol.getWorkNo());
-//                if (null == wrkMast || wrkMast.getWrkSts() < 14 || wrkMast.getIoType() < 100) { continue; }
-                if (null == wrkMast) {
-                    continue;
-                }
-                News.warnNoLog(""+mark+" - 0"+" - 寮�濮嬫墽琛�:鍑哄簱  ===>> 宸ヤ綔妗d俊鎭啓鍏ed鏄剧ず鍣�");
+                if (null == wrkMast) { continue; }
                 wrkMasts.add(wrkMast);
                 // 缁勮鍛戒护
                 LedCommand ledCommand = new LedCommand();
@@ -1493,16 +1665,34 @@
                         ledCommand.setEmptyMk(true);
                         break;
                     default:
-                        News.error(""+mark+" - 1"+" - 浠诲姟鍏ュ嚭搴撶被鍨嬮敊璇紒锛侊紒[宸ヤ綔鍙凤細{}] [鍏ュ嚭搴撶被鍨嬶細{}]", wrkMast.getWrkNo(), wrkMast.getIoType());
+                        News.error("浠诲姟鍏ュ嚭搴撶被鍨嬮敊璇紒锛侊紒[宸ヤ綔鍙凤細{}] [鍏ュ嚭搴撶被鍨嬶細{}]", wrkMast.getWrkNo(), wrkMast.getIoType());
                         break;
                 }
                 ledCommand.setSourceLocNo(wrkMast.getSourceLocNo());
-                ledCommand.setLocNo(wrkMast.getLocNo());
                 ledCommand.setStaNo(wrkMast.getStaNo());
-//                ledCommand.setSourceStaNo(wrkMast.getSourceStaNo());
+                ledCommand.setBarcode(wrkMast.getBarcode());
                 if (wrkMast.getIoType() != 110 && wrkMast.getIoType() != 10) {
                     List<WrkDetl> wrkDetls = wrkDetlService.findByWorkNo(wrkMast.getWrkNo());
-                    wrkDetls.forEach(wrkDetl -> ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getAnfme(),wrkDetl.getSpecs())));
+
+                    wrkDetls.forEach(wrkDetl -> {
+                        Double total = 0.0;
+                        EntityWrapper<LocDetl> wrapper = new EntityWrapper<>();
+                        LocDetl locDetl = locDetlService.selectOne(wrapper.eq("zpallet", wrkDetl.getZpallet()).eq("matnr", wrkDetl.getMatnr()));
+                        if (Cools.isEmpty(locDetl)) {
+                            total = wrkDetl.getAnfme();
+                        } else {
+                            total = locDetl.getAnfme();
+                        }
+                        if (wrkMast.getIoType() == 101 || wrkMast.getIoType() == 1) {
+                            ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getBatch(), wrkDetl.getSpecs(), wrkDetl.getManu(), wrkDetl.getMemo(), wrkDetl.getAnfme(),total));
+                        }
+                        if (wrkMast.getIoType() == 103 && (null == wrkDetl.getInspect() || 0 == wrkDetl.getInspect())) {
+                            ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getBatch(), wrkDetl.getSpecs(), wrkDetl.getManu(), wrkDetl.getMemo(), wrkDetl.getAnfme(),total));
+                        }
+                        if (wrkMast.getIoType() == 107) {
+                            ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getBatch(), wrkDetl.getSpecs(), wrkDetl.getManu(), wrkDetl.getMemo(), wrkDetl.getAnfme(),total));
+                        }
+                    });
                 }
                 commands.add(ledCommand);
             }
@@ -1513,32 +1703,11 @@
             if (CollectionUtils.equals(ledThread.getWorkNos(), workNos)) {
                 continue;
             }
-//             鍛戒护涓嬪彂 -------------------------------------------------------------------------------
-//            if (!commands.isEmpty()) {
-//                if (led.getId() < 7) {
-//                    if (!MessageQueue.offer(SlaveType.Led, led.getId(), new Task(3, commands))) {
-//                        News.error(""+mark+" - 2"+" - {}鍙稬ED鍛戒护涓嬪彂澶辫触锛侊紒锛乕ip锛歿}] [port锛歿}]", led.getId(), led.getIp(), led.getPort());
-//                        continue;
-//                    } else {
-//                        ledThread.setLedMk(false);
-//                    }
-//                } else {
-//                    if (!MessageQueue.offer(SlaveType.Led, led.getId(), new Task(1, commands))) {
-//                        News.error(""+mark+" - 3"+" - {}鍙稬ED鍛戒护涓嬪彂澶辫触锛侊紒锛乕ip锛歿}] [port锛歿}]", led.getId(), led.getIp(), led.getPort());
-//                        continue;
-//                    } else {
-//                        ledThread.setLedMk(false);
-//                    }
-//                }
-//
-//            }
             // 鍛戒护涓嬪彂 -------------------------------------------------------------------------------
             if (!commands.isEmpty()) {
-                if (!MessageQueue.offer(SlaveType.Led, led.getId(), new Task(3, commands))) {
-                    News.error("{}鍙稬ED鍛戒护涓嬪彂澶辫触锛侊紒锛乕ip锛歿}] [port锛歿}]", led.getId(), led.getIp(), led.getPort());
+                if (!MessageQueue.offer(SlaveType.Led, led.getId(), new Task(1, commands))) {
+                    News.error("{}鍙稬ED鏄剧ず鍐呭鍛戒护涓嬪彂澶辫触锛侊紒锛乕ip锛歿}] [port锛歿}]", led.getId(), led.getIp(), led.getPort());
                     continue;
-                }else {
-                    ledThread.setLedMk(false);
                 }
             }
 
@@ -1548,7 +1717,6 @@
                     wrkMast.setOveMk("Y");
                     wrkMast.setModiTime(new Date());
                     if (wrkMastMapper.updateById(wrkMast) == 0) {
-                        News.errorNoLog(""+mark+" - 4"+" - 鏇存柊宸ヤ綔妗eけ璐�");
                         throw new CoolException("鏇存柊宸ヤ綔妗eけ璐�");
                     }
                 }
@@ -1562,17 +1730,13 @@
             }
 
         }
-//        News.infoNoLog(""+mark+" - 0"+" - 鍑哄簱  ===>> 宸ヤ綔妗d俊鎭啓鍏ed鏄剧ず鍣ㄦ墽琛屽畬鎴�");
     }
 
     /**
      * 鍏朵粬  ===>> LED鏄剧ず鍣ㄥ浣嶏紝鏄剧ず榛樿淇℃伅
      */
-    public synchronized void ledReset(Integer mark) {
-
-//        News.warnNoLog(""+mark+" - 0"+" - 寮�濮嬫墽琛�:鍏朵粬  ===>> LED鏄剧ず鍣ㄥ浣嶏紝鏄剧ず榛樿淇℃伅");
+    public synchronized void ledReset() {
         for (LedSlave led : slaveProperties.getLed()) {
-
             // 鑾峰彇杈撻�佺嚎plc绾跨▼
             DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, led.getDevpPlcId());
             // 鍛戒护闆嗗悎
@@ -1580,27 +1744,25 @@
             for (Integer staNo : led.getStaArr()) {
                 // 鑾峰彇鍙夎溅绔欑偣
                 StaProtocol staProtocol = devpThread.getStation().get(staNo);
-                if (staProtocol == null) {
-                    continue;
-                }
-                if (staProtocol.getWorkNo() != 0 && staProtocol.isLoading()) {
+                if (staProtocol == null) { continue; }
+                if (staProtocol.getWorkNo() != 0) {
                     reset = false;
                     break;
                 }
             }
             // 鑾峰彇led绾跨▼
-            LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, led.getId());
+            LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, led.getDevpPlcId());
             // led鏄剧ず榛樿鍐呭
-            if (reset && !ledThread.isLedMk()) {
-                ledThread.setLedMk(true);
-                if (!MessageQueue.offer(SlaveType.Led, led.getId(), new Task(4, new ArrayList<>()))) {
-                    News.error(""+mark+" - 1"+" - {}鍙稬ED鍛戒护涓嬪彂澶辫触锛侊紒锛乕ip锛歿}] [port锛歿}]", led.getId(), led.getIp(), led.getPort());
-                } else {
-
+            if (reset) {
+                if (ledThread == null) {
+                    continue;
+                }
+                ledThread.errorReset();
+                if (!MessageQueue.offer(SlaveType.Led, led.getId(), new Task(2, new ArrayList<>()))) {
+                    News.error("{}鍙稬ED鏄剧ず榛樿鍛戒护涓嬪彂澶辫触锛侊紒锛乕ip锛歿}] [port锛歿}]", led.getId(), led.getIp(), led.getPort());
                 }
             }
         }
-//        News.infoNoLog(""+mark+" - 0"+" - 鎵ц瀹屾垚锛氬叾浠�  ===>> LED鏄剧ず鍣ㄥ浣嶏紝鏄剧ず榛樿淇℃伅");
     }
 
     /**
@@ -2082,7 +2244,7 @@
                         String data = jsonObject.get("data").toString();
                         News.info((String) jsonObject.get("msg")+","+data);
                     } else {
-                        News.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/auto/emptyOut/v1","", response);
+                        News.warnNoLog("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/auto/emptyOut/v1","", response);
                     }
                 } catch (Exception e) {
                     e.printStackTrace();
@@ -2148,7 +2310,7 @@
     /*
      * 灏忚溅鍦板浘鏇存柊  鏇存柊閿�
      * */
-    public synchronized boolean rgvMapUpdate(BasRgvMap basRgvMapCurrent,Integer staStart,Integer staEnd){
+    public synchronized boolean rgvMapUpdate(BasRgvMap basRgvMapCurrent,Integer staStart,Integer staEnd,String sign){
 
 //        List<Integer> integers = RouteUtils.RouteMapCurrentFar(basRgvMapCurrent.getNowRoute(),staStart,staEnd, basRgvMapCurrent.getLockStartRoute());
         //鏇存柊褰撳墠灏忚溅閿�
@@ -2156,15 +2318,21 @@
             Integer farCurrentStaNo = RouteUtils.RouteIndexFarMas(basRgvMapCurrent.getNowRoute(), staStart, staEnd, basRgvMapCurrent.getLockStartRoute());//鑾峰彇鏈�杩滅珯鐐�
             Integer fallMerge = RouteUtils.RouteIndexFarMas(basRgvMapCurrent.getRgvNo(), farCurrentStaNo); //鑾峰彇鍚堝苟骞叉秹椤�
             basRgvMapCurrent.setLockEndRoute(fallMerge);
-            basRgvMapMapper.updateById(basRgvMapCurrent);
+            Integer i = basRgvMapMapper.updateById(basRgvMapCurrent);
+//            if (i>0){
+                log.error("{}:==>{}:{}鍙疯溅鏇存柊缁撴潫閿�,{}",sign,new Date(),basRgvMapCurrent.getRgvNo(),JSON.toJSONString(basRgvMapCurrent));
+//            }
 
             //鏇存柊鍙︿竴鍙板皬杞﹀湴鍥�
-            Integer rgvNoOther = basRgvMapCurrent.getRgvNoOther();
+            Integer rgvNoOther = basRgvMapCurrent.getRgvNoOther(basRgvMapCurrent.getRgvNo());
             BasRgvMap basRgvMapOther = basRgvMapMapper.selectById(rgvNoOther);
             List<Integer> integers = RouteUtils.RouteMapCurrentFar(fallMerge, basRgvMapCurrent.getLockStartRoute());
             Integer lockEndRoute = RouteUtils.RouteMapOtherFarStnNo(integers, basRgvMapCurrent.getLockStartRoute());//鍙︿竴鍙板皬杞﹀彲娲诲姩鏈�杩滀綅缃�
             basRgvMapOther.setEndRoute(lockEndRoute);
-            basRgvMapMapper.updateById(basRgvMapOther);
+            Integer i1 = basRgvMapMapper.updateById(basRgvMapOther);
+//            if (i1>0){
+                log.error("{}:==>{}:{}鍙疯溅鏇存柊缁撴潫浣嶇疆,{}",sign,new Date(),basRgvMapOther.getRgvNo(),JSON.toJSONString(basRgvMapOther));
+//            }
             return true;
         }catch (Exception e){
             log.error("灏忚溅鍦板浘鏇存柊鍑洪敊锛�");
@@ -2193,15 +2361,41 @@
                 }
 
                 // 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,宸ヤ綅涓�鏃犵墿//rgv鍙敤
-                if (rgvProtocol.getStatusType() == RgvStatusType.IDLE
-                        && rgvProtocol.getModeType() == RgvModeType.AUTO
-                        && rgvProtocol.getLoaded1()==0  //鐜板満淇敼锛氬彔鐩樻満锛屼笉婊¢兘绠楁棤鐗╋紝鎬庝箞鍒ゆ柇闇�瑕佽窡鐢垫帶瀵规帴
-                        && (rgvProtocol.getTaskNo1()==0 || rgvProtocol.getTaskNo1()==9999)
-
+                if (rgvProtocol.getStatusType() == RgvStatusType.IDLE &&
+                    rgvProtocol.getModeType() == RgvModeType.AUTO
+                    && rgvProtocol.getLoaded1()==0  //鐜板満淇敼锛氬彔鐩樻満锛屼笉婊¢兘绠楁棤鐗╋紝鎬庝箞鍒ゆ柇闇�瑕佽窡鐢垫帶瀵规帴
+                    && (rgvProtocol.getTaskNo1()==0)
+                        &&rgvThread.isPakMk()
                 ) {
                     BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
-                    basRgvMap.setNowRoute(rgvProtocol.getRgvPosI());
-                    rgvMapUpdate(basRgvMap,basRgvMap.getStartRoute(),basRgvMap.getStartRoute());
+
+                    Integer rgvNoOther = basRgvMap.getRgvNoOther(rgvProtocol.getRgvNo());
+                    RgvThread rgvThreadOther = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvNoOther);
+                    RgvProtocol rgvProtocolOther = rgvThreadOther.getRgvProtocol();
+                    if (rgvProtocolOther == null) {
+                        continue;
+                    }else {
+                        rgvProtocolOther = rgvProtocolOther.clone();
+                    }
+                    if (rgvProtocolOther.getStatusType() == RgvStatusType.IDLE
+                        && rgvProtocolOther.getModeType() == RgvModeType.AUTO
+                        && rgvProtocolOther.getLoaded1()==0
+                        && (rgvProtocolOther.getTaskNo1()==0)
+                        &&rgvThreadOther.isPakMk()
+                    ){
+                        //瀵瑰伐浣滄。杩涜鍒ゆ柇
+                        basRgvMap.setNowRoute(rgvProtocol.getRgvPosI());
+                        if (rgvProtocol.getTaskNo1() >0 && rgvProtocol.getTaskNo1()<=9000){
+                            WrkMastSta wrkMastSta = wrkMastStaMapper.selectByWrkNo(rgvProtocol.getTaskNo1().intValue());
+                            rgvMapUpdate(basRgvMap, wrkMastSta.getStaStart(), wrkMastSta.getStaEnd(),"2366");
+                        }else if (rgvProtocol.getTaskNo1() == 0){
+                            rgvMapUpdate(basRgvMap,basRgvMap.getStartRoute(),basRgvMap.getStartRoute(),"2366");
+                        }
+
+                    }
+
+
+
                 }
             }
         }catch (Exception e){
@@ -2246,7 +2440,8 @@
                             }
                             BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
                             basRgvMap.setNowRoute(rgvProtocol.getRgvPosI());
-                            rgvMapUpdate(basRgvMap,basRgvMap.getStartRoute(),basRgvMap.getStartRoute());
+                            rgvMapUpdate(basRgvMap,basRgvMap.getStartRoute(),basRgvMap.getStartRoute(),"2415");
+                            rgvThread.setPakMk(true);
                             break;
                         }
                         WrkMastSta wrkMastSta = wrkMastStaMapper.selectByWrkNo(rgvProtocol.getTaskNo1().intValue());
@@ -2278,6 +2473,19 @@
                             if (!MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol))) {
                                 continue;
                             }
+                        }else {
+                            log.error("rgv浠诲姟瀹屾垚缁欒緭閫佺嚎涓嬪彂鍛戒护,浣嗘湭鏌ヨ鍒板伐浣滄。");
+                            // 涓嬪彂绔欑偣淇℃伅
+                            Map<Integer,Integer> map = new HashMap<>();
+                            map.put(101,102);map.put(112,111);
+                            map.put(100,100);
+                            staProtocol.setWorkNo(rgvProtocol.getTaskNo1().intValue());
+                            staProtocol.setStaNo(map.get(rgvProtocol.getRgvPosI()).shortValue());
+                            devpThread.setPakMk(staProtocol.getSiteId(), false);
+//                            log.error("rgv浠诲姟瀹屾垚缁欒緭閫佺嚎涓嬪彂鍛戒护锛�"+wrkMast.getWrkNo()+","+wrkMast.getStaNo());
+                            if (!MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol))) {
+                                continue;
+                            }
                         }
                         boolean rgvComplete = rgvComplete(rgvProtocol.getRgvNo());
 //                        boolean rgvComplete = true;
@@ -2285,11 +2493,17 @@
                             log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{}锛�",rgvProtocol.getRgvNo());
                             break;
                         }
+                        WrkMast wrkMast1 = wrkMastService.selectByWrkNo(rgvProtocol.getTaskNo1().intValue());
+                        wrkMast1.setUpdMk("Y");
+
+                        wrkMastService.updateById(wrkMast1);
+
                         wrkMastSta.setWrkSts(3);
                         wrkMastStaMapper.updateById(wrkMastSta);
                         BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
                         basRgvMap.setNowRoute(rgvProtocol.getRgvPosI());
-                        rgvMapUpdate(basRgvMap,basRgvMap.getStartRoute(),basRgvMap.getStartRoute());
+                        rgvMapUpdate(basRgvMap,basRgvMap.getStartRoute(),basRgvMap.getStartRoute(),"2471");
+                        rgvThread.setPakMk(true);
                     }
 
                     else {
@@ -2327,6 +2541,7 @@
                 if (rgvProtocol.getStatusType() == RgvStatusType.IDLE
                         && rgvProtocol.getModeType() == RgvModeType.AUTO
                         && rgvProtocol.getLoaded1()==0
+                        && rgvProtocol.getTaskNo1() == 0
                 ) {
                     BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
                     if (basRgvMap == null) {
@@ -2343,11 +2558,14 @@
                         boolean sign = rgvTakeFullAll(basRgvMap.getRgvNo(), wrkMastSta); //鍛戒护涓嬪彂
                         wrkEnable = true;
                         if (sign){
-                            boolean signMap = rgvMapUpdate(basRgvMap, wrkMastSta.getStaStart(), wrkMastSta.getStaEnd());
+                            rgvThread.setPakMk(false);
+                            boolean signMap = rgvMapUpdate(basRgvMap, wrkMastSta.getStaStart(), wrkMastSta.getStaEnd(),"2526");
                             if (signMap){
+                                Thread.sleep(300);
                                 wrkMastSta.setWrkSts(1);
                                 try{
                                     wrkMastStaMapper.updateById(wrkMastSta);
+                                    return;
                                 }catch (Exception e){
                                     log.error("鏇存柊灏忚溅浠诲姟澶辫触");
                                 }
@@ -2527,21 +2745,22 @@
                 // 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,宸ヤ綅涓�鏃犵墿//rgv鍙敤
                 if (rgvProtocol.getStatusType() == RgvStatusType.IDLE
                         && rgvProtocol.getModeType() == RgvModeType.AUTO
-//                        && rgvProtocol.getLoaded1()==0  //鐜板満淇敼锛氬彔鐩樻満锛屼笉婊¢兘绠楁棤鐗╋紝鎬庝箞鍒ゆ柇闇�瑕佽窡鐢垫帶瀵规帴
+                        && rgvProtocol.getLoaded1()==0  //鐜板満淇敼锛氬彔鐩樻満锛屼笉婊¢兘绠楁棤鐗╋紝鎬庝箞鍒ゆ柇闇�瑕佽窡鐢垫帶瀵规帴
                         && rgvProtocol.getTaskNo1()==0
+                        && rgvProtocol.getStatusType1() == RgvStatusType.IDLE
 //                        && rgvProtocol.getTaskNo2()==0
                 ) {
                     BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
                     if (rgvProtocol.getRgvPosI().equals(basRgvMap.getStartRoute())){
                         continue;
                     }
-                    if (rgvProtocol.getRgvNo()==1 && rgvProtocol.getRgvPosI().equals(100)){
-                        continue;
-                    } else if (rgvProtocol.getRgvNo()==2 && rgvProtocol.getRgvPosI().equals(157)  ){
-                        continue;
-                    }
+//                    if (rgvProtocol.getRgvNo()==1 && rgvProtocol.getRgvPosI().equals(100)){
+//                        continue;
+//                    } else if (rgvProtocol.getRgvNo()==2 && rgvProtocol.getRgvPosI().equals(157)  ){
+//                        continue;
+//                    }
                     rgvAvoidanceXY(rgvProtocol.getRgvNo());
-                    rgvMapUpdate(basRgvMap,basRgvMap.getStartRoute(),basRgvMap.getStartRoute());
+                    rgvMapUpdate(basRgvMap,basRgvMap.getStartRoute(),basRgvMap.getStartRoute(),"2727");
                 }
             }
         }catch (Exception e){
@@ -2555,7 +2774,7 @@
      * */
     public synchronized boolean rgvAvoidanceXY(Integer rgvId){
         BasRgvMap basRgvMap = basRgvMapService.selectByRgvNo(rgvId);
-        if (basRgvMap.getStartRoute() == 100){
+        if (basRgvMap.getStartRoute() == 100 || basRgvMap.getStartRoute() == 101){
             try{
 
                 //  鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
@@ -2565,7 +2784,7 @@
                 rgvCommand.setTaskNo1((short)32222); // 宸ヤ綅1宸ヤ綔鍙�
                 rgvCommand.setTaskMode1(RgvTaskModeType.X_MOVE); // 宸ヤ綅1浠诲姟妯″紡:  鍥炲師鐐�
                 //basRgvMap.getLockStartRoute().shortValue()
-                rgvCommand.setSourceStaNo1( (short)100);
+                rgvCommand.setSourceStaNo1(basRgvMap.getStartRoute().shortValue());
                 rgvCommand.setCommand((short) 1);   //宸ヤ綅1浠诲姟纭
                 if (!MessageQueue.offer(SlaveType.Rgv, rgvId, new Task(4, rgvCommand))) {
                     //step=2,宸ヤ綅1銆�2鍐欎换鍔★紱   step=4锛屽伐浣�1鍐欎换鍔★紱     step=5锛屽伐浣�2鍐欎换鍔�   step=9锛屽洖鍘熺偣 9999浠诲姟鍙�
@@ -2587,7 +2806,7 @@
                 rgvCommand.setTaskNo1((short)32222); // 宸ヤ綅1宸ヤ綔鍙�
                 rgvCommand.setTaskMode1(RgvTaskModeType.X_MOVE); // 宸ヤ綅1浠诲姟妯″紡:  鍥炲師鐐�
                 //basRgvMap.getLockStartRoute().shortValue()
-                rgvCommand.setSourceStaNo1( (short)157);
+                rgvCommand.setSourceStaNo1(basRgvMap.getStartRoute().shortValue());
                 rgvCommand.setCommand((short) 1);   //宸ヤ綅1浠诲姟纭
                 if (!MessageQueue.offer(SlaveType.Rgv, rgvId, new Task(4, rgvCommand))) {
                     //step=2,宸ヤ綅1銆�2鍐欎换鍔★紱   step=4锛屽伐浣�1鍐欎换鍔★紱     step=5锛屽伐浣�2鍐欎换鍔�   step=9锛屽洖鍘熺偣 9999浠诲姟鍙�

--
Gitblit v1.9.1