From 27c129a348b3daa64a54195f1442748737148057 Mon Sep 17 00:00:00 2001
From: lsh <lsh123456>
Date: 星期四, 09 三月 2023 16:50:39 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java |  427 ++++++++++++++++++++++++++++++++++++++++++----------
 1 files changed, 341 insertions(+), 86 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 0297324..ca71a2d 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.core.common.Cools;
+import com.core.common.SpringUtils;
 import com.core.exception.CoolException;
 import com.zy.asrs.entity.*;
 import com.zy.asrs.mapper.*;
@@ -114,59 +115,51 @@
                     staProtocol = staProtocol.clone();
                 }
                 Short workNo = staProtocol.getWorkNo();
+                // 灏哄妫�娴嬪紓甯�
+                boolean back = false;
+                String errMsg = "寮傚父锛�";
+                if (staProtocol.isFrontErr()) {
+                    errMsg = errMsg+"鍓嶈秴闄愶紱";
+                    back = true;
+                }
+                if (staProtocol.isBackErr()) {
+                    errMsg = errMsg+"鍚庤秴闄�";
+                    back = true;
+                }
+                if (staProtocol.isHighErr()) {
+                    errMsg = errMsg+"楂樿秴闄�";
+                    back = true;
+                }
+                if (staProtocol.isLeftErr()) {
+                    errMsg = errMsg+"宸﹁秴闄�";
+                    back = true;
+                }
+                if (staProtocol.isRightErr()) {
+                    errMsg = errMsg+"鍙宠秴闄�";
+                    back = true;
+                }
+                if (staProtocol.isWeightErr()) {
+                    errMsg = errMsg+"瓒呴噸";
+                    back = true;
+                }
+                if (staProtocol.isBarcodeErr()) {
+                    errMsg = errMsg+"鎵爜澶辫触";
+                    back = true;
+                }
+                // 閫�鍥�
+                if (back) {
+                    // led 寮傚父鏄剧ず
+                    LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, inSta.getLed());
+                    if (ledThread != null) {
+                        MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, errMsg));
+                    }
+                    continue;
+                }
                 // 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢
                 if (staProtocol.isAutoing() && staProtocol.isLoading()
                         && staProtocol.isInEnable()
                         && !staProtocol.isEmptyMk() && (workNo == 0 || (workNo >= 9990 && workNo <= 9999))
                         && staProtocol.isPakMk()) {
-
-                    // 灏哄妫�娴嬪紓甯�
-                    boolean back = false;
-                    String errMsg = "";
-                    if (staProtocol.isFrontErr()) {
-                        errMsg = "鍓嶈秴闄�";
-                        back = true;
-                    }
-                    if (!back && staProtocol.isBackErr()) {
-                        errMsg = "鍚庤秴闄�";
-                        back = true;
-                    }
-                    if (!back && staProtocol.isHighErr()) {
-                        errMsg = "楂樿秴闄�";
-                        back = true;
-                    }
-                    if (!back && staProtocol.isLeftErr()) {
-                        errMsg = "宸﹁秴闄�";
-                        back = true;
-                    }
-                    if (!back && staProtocol.isRightErr()) {
-                        errMsg = "鍙宠秴闄�";
-                        back = true;
-                    }
-                    if (!back && staProtocol.isWeightErr()) {
-                        errMsg = "瓒呴噸";
-                        back = true;
-                    }
-                    if (!back && staProtocol.isBarcodeErr()) {
-                        errMsg = "鎵爜澶辫触";
-                        back = true;
-                    }
-
-                    // 閫�鍥�
-                    if (back) {
-                        News.warn("鎵爜鍏ュ簱澶辫触锛寋}鍏ュ簱绔欏洜{}寮傚父锛屾墭鐩樺凡琚��鍥�", inSta.getStaNo(), errMsg);
-                        staProtocol.setWorkNo((short) 32002);
-                        staProtocol.setStaNo(inSta.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, inSta.getLed());
-                        if (ledThread != null) {
-                            MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, errMsg));
-                        }
-                        continue;
-                    }
 
                     // 鑾峰彇鏉$爜鎵弿浠俊鎭�
                     BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, inSta.getBarcode());
@@ -176,7 +169,7 @@
                     String barcode = barcodeThread.getBarcode();
                     if(!Cools.isEmpty(barcode)) {
 //                        News.info("{}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", inSta.getBarcode(), barcode);
-                        if("NG".endsWith(barcode) || "NoRead".equals(barcode) || "empty".equals(barcode)) {
+                        if("NG".endsWith(barcode) || "NoRead".equals(barcode) || "empty".equals(barcode)|| "00000000".equals(barcode)) {
                             staProtocol.setWorkNo((short) 32002);
                             staProtocol.setStaNo(inSta.getBackSta().shortValue());
                             devpThread.setPakMk(staProtocol.getSiteId(), false);
@@ -407,7 +400,6 @@
                     if (staProtocol.getWorkNo() > 0 && staProtocol.getWorkNo() < 9990) {
                         wrkMast = wrkMastMapper.selectPickStep(staProtocol.getWorkNo());
                         if (null == wrkMast) {
-                            News.error("{}浠诲姟鍙烽敊璇紝鏆傛棤鎷f枡浠诲姟锛�", staProtocol.getWorkNo());
                             continue;
                         }
                     } else {
@@ -666,7 +658,7 @@
                 // 搴撲綅绉昏浆
 //                this.locToLoc(crn, crnProtocol);
                 // 婕旂ず
-                this.steMoveDemo(crn, crnProtocol);
+//                this.steMoveDemo(crn, crnProtocol);
             }
         }
     }
@@ -726,6 +718,51 @@
                 continue;
             }
 
+            List<LocMast> locMasts = null;
+            boolean sign=false;
+            if (locMast.getRow1()>=5){
+                locMasts=locMastService.selectList(new EntityWrapper<LocMast>().ge("row1", 5)
+                        .eq("bay1",locMast.getBay1()).eq("lev1",locMast.getLev1()));
+                for (LocMast locMast1:locMasts){
+                    if (locMast1.getRow1()>locMast.getRow1()){
+                        if (!locMast1.getLocSts().equals("F")){
+                            if (!locMast1.getLocSts().equals("X")){
+                                sign=true;
+                                break;
+                            }
+                        }
+                    }else if (locMast1.getRow1()<locMast.getRow1()){
+                        if (locMast1.getLocSts().equals("F")){
+                            News.error("褰撳墠宸ヤ綔妗g洰鏍囧簱浣嶆墍鍦ㄦ帓鍓嶈竟瀛樺湪璐х墿锛�", wrkMast.getWrkNo());
+                            sign=true;
+                            break;
+                        }
+                    }
+                }
+            }else {
+                locMasts=locMastService.selectList(new EntityWrapper<LocMast>().le("row1", 4)
+                        .eq("bay1",locMast.getBay1()).eq("lev1",locMast.getLev1()));
+                for (LocMast locMast1:locMasts){
+                    if (locMast1.getRow1()>locMast.getRow1()){
+                        if (locMast1.getLocSts().equals("F")){
+                            News.error("褰撳墠宸ヤ綔妗g洰鏍囧簱浣嶆墍鍦ㄦ帓鍓嶈竟瀛樺湪璐х墿锛�", wrkMast.getWrkNo());
+                            sign=true;
+                            break;
+                        }
+                    }else if (locMast1.getRow1()<locMast.getRow1()){
+                        if (!locMast1.getLocSts().equals("F")){
+                            if (!locMast1.getLocSts().equals("X")){
+                                sign=true;
+                                break;
+                            }
+                        }
+                    }
+                }
+            }
+            if (sign){
+                continue;
+            }
+
             // 妫�娴嬫槸鍚﹀瓨鍦ㄥ嚭搴撲换鍔�
             if (null != wrkMastMapper.selectPakout(slave.getId(), null)) {
                 News.error("{}鍏ュ簱浠诲姟鏃犳硶浣滀笟锛屽洜瀛樺湪鍑哄簱涓换鍔�!", wrkMast.getWrkNo());
@@ -733,7 +770,9 @@
             }
 
             // 缃《浠诲姟
-            wrkMast.setIoPri((double) 9999);
+            if (wrkMast.getIoPri()<8000){
+                wrkMast.setIoPri(wrkMast.getIoPri()+9000d);
+            }
             wrkMastMapper.updateById(wrkMast);
 
                 // 鐩爣搴撲綅 ===>> 鏈�澶栧眰搴撲綅
@@ -899,6 +938,36 @@
                 News.error("鍑哄簱鎿嶄綔搴撲綅鐘舵�佷笉绗﹀悎--鐘舵��, 搴撲綅鍙�={}锛屽簱浣嶇姸鎬�={}", wrkMast.getLocNo(), sourceSta.getLocSts());
                 continue;
             }
+            List<LocMast> locMasts = null;
+            boolean sign=false;
+            if (sourceSta.getRow1()>=5){
+                locMasts=locMastService.selectList(new EntityWrapper<LocMast>().ge("row1", 5)
+                        .eq("bay1",sourceSta.getBay1()).eq("lev1",sourceSta.getLev1()));
+                for (LocMast locMast1:locMasts){
+                    if (locMast1.getRow1()<sourceSta.getRow1()){
+                        if (!locMast1.getLocSts().equals("O")){
+                            News.error("褰撳墠宸ヤ綔妗f簮搴撲綅鎵�鍦ㄦ帓鍓嶈竟瀛樺湪璐х墿锛�", wrkMast.getWrkNo());
+                            sign=true;
+                            break;
+                        }
+                    }
+                }
+            }else {
+                locMasts=locMastService.selectList(new EntityWrapper<LocMast>().le("row1", 4)
+                        .eq("bay1",sourceSta.getBay1()).eq("lev1",sourceSta.getLev1()));
+                for (LocMast locMast1:locMasts){
+                    if (locMast1.getRow1()>sourceSta.getRow1()){
+                        if (!locMast1.getLocSts().equals("O")){
+                            News.error("褰撳墠宸ヤ綔妗g洰鏍囧簱浣嶆墍鍦ㄦ帓鍓嶈竟瀛樺湪璐х墿锛�", wrkMast.getWrkNo());
+                            sign=true;
+                            break;
+                        }
+                    }
+                }
+            }
+            if (sign){
+                continue;
+            }
 
             // 鍚屽簱浣嶇粍杩涜鏍¢獙
             List<String> groupLocNo = Utils.getGroupLocNo(wrkMast.getSourceLocNo());
@@ -948,7 +1017,9 @@
                 }
 
                 // 缃《浠诲姟
-                wrkMast.setIoPri((double) 9998);
+                if (wrkMast.getIoPri()<8000){
+                    wrkMast.setIoPri(wrkMast.getIoPri()+8999d);
+                }
                 wrkMastMapper.updateById(wrkMast);
 
                 // 鏈�澶栧眰搴撲綅锛岀洿鎺ュ爢鍨涙満鍑哄簱
@@ -1244,7 +1315,7 @@
             SteProtocol steProtocol = steThread.getSteProtocol();
             if (steProtocol == null) { continue; }
             if (!steProtocol.isIdle()) { continue; }
-            if (steProtocol.getRow() == 1) { continue; }
+//            if (steProtocol.getRow() == 1) { continue; }
             String locNo = wrkMast.getWrkSts() < 10 ? wrkMast.getLocNo() : wrkMast.getSourceLocNo();
             // 濡傛灉鍦ㄥ悓涓�涓簱浣嶇粍
             if (Utils.getGroupRow(locNo, true).equals(Utils.getGroupRow(steProtocol.getRow().intValue(), true))
@@ -1613,6 +1684,17 @@
                     WrkCharge wrkCharge = wrkChargeService.selectById(crnProtocol.getTaskNo());
                     if (wrkCharge == null) {
                         News.error("鍫嗗灈鏈哄浜庣瓑寰呯‘璁や笖浠诲姟瀹屾垚鐘舵�侊紝浣嗘湭鎵惧埌宸ヤ綔妗c�傚爢鍨涙満鍙�={}锛屽伐浣滃彿={}", crn.getId(), crnProtocol.getTaskNo());
+                        wrkMast = wrkMastMapper.selectCrnWaiting2(crnProtocol.getTaskNo().intValue());
+                        if (wrkMast.getIoType() != 11) {
+                            // 淇敼鎴愬姛鍚庡浣嶅爢鍨涙満
+                            if (wrkMastMapper.updateById(wrkMast) > 0) {
+                                // 鍫嗗灈鏈哄浣�
+                                crnThread.setResetFlag(true);
+                                News.error("鍫嗗灈鏈哄浜庣瓑寰呯‘璁や笖浠诲姟瀹屾垚鐘舵��,澶嶄綅锛屼絾鏈壘鍒板伐浣滄。銆傚爢鍨涙満鍙�={}锛屽伐浣滃彿={}", crn.getId(), crnProtocol.getTaskNo());
+                            } else {
+                                News.error("鍫嗗灈鏈哄浜庣瓑寰呯‘璁や笖浠诲姟瀹屾垚鐘舵��,澶嶄綅澶辫触锛屼絾鏈壘鍒板伐浣滄。銆傚爢鍨涙満鍙�={}锛屽伐浣滃彿={}", crn.getId(), crnProtocol.getTaskNo());
+                            }
+                        }
                         continue;
                     } else {
                         // 灏忚溅鎼嚦鎸囧畾搴撲綅瀹屾垚
@@ -1835,6 +1917,22 @@
                             }
                         }
                         // 绉诲簱 ===>> 鍫嗗灈鏈烘惉鑷崇洰鏍囧簱浣嶇粍 瀹屾垚
+                    } else if (wrkMast.getWrkSts() == 16) {
+                        // 16.鍚婅溅鍑哄簱涓� ==> 17.鍑哄簱瀹屾垚
+                        wrkMast.setWrkSts(17L);
+                        Date now = new Date();
+                        wrkMast.setCrnEndTime(now);
+                        wrkMast.setModiTime(now);
+                        LocMast locMast = locMastService.selectById(wrkMast.getSourceLocNo());
+                        Integer outCrnNo = locMastService.getOutCrnNo(locMast);
+                        wrkMast.setCrnNo(outCrnNo);
+                        // 淇敼鎴愬姛鍚庡浣嶅爢鍨涙満
+                        if (wrkMastMapper.updateById(wrkMast) > 0) {
+                            // 鍫嗗灈鏈哄浣�
+                            crnThread.setResetFlag(true);
+                        } else {
+                            News.error("淇敼宸ヤ綔妗g姸鎬� 16.鍚婅溅鍑哄簱涓� ==> 17.鍑哄簱瀹屾垚 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo());
+                        }
                     }
                 }
             }
@@ -1879,15 +1977,17 @@
                                 } else {
                                     steThread.setResetFlag(true);
                                 }
-                            } else if (wrkCharge.getWrkSts() == 29) {
-                                // 29.寮�濮嬪厖鐢� ===>> 30.瀹屾垚鍏呯數
-                                wrkCharge.setWrkSts(30L);
-                                if (!wrkChargeService.updateById(wrkCharge)) {
-                                    News.error("淇敼鍏呯數浠诲姟鐘舵�� 29.寮�濮嬪厖鐢� ===>> 30.瀹屾垚鍏呯數 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkCharge.getWrkNo());
-                                } else {
-                                    steThread.setResetFlag(true);
-                                }
-                            } else if (wrkCharge.getWrkSts() == 32) {
+                            }
+//                            else if (wrkCharge.getWrkSts() == 29) {
+//                                // 29.寮�濮嬪厖鐢� ===>> 30.瀹屾垚鍏呯數
+//                                wrkCharge.setWrkSts(30L);
+//                                if (!wrkChargeService.updateById(wrkCharge)) {
+//                                    News.error("淇敼鍏呯數浠诲姟鐘舵�� 29.寮�濮嬪厖鐢� ===>> 30.瀹屾垚鍏呯數 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkCharge.getWrkNo());
+//                                } else {
+//                                    steThread.setResetFlag(true);
+//                                }
+//                            }
+                            else if (wrkCharge.getWrkSts() == 32) {
                                 // 32.灏忚溅璧拌 ===>> 33.灏忚溅寰呮惉
                                 wrkCharge.setWrkSts(33L);
                                 if (!wrkChargeService.updateById(wrkCharge)) {
@@ -2366,18 +2466,11 @@
                         break;
                 }
                 ledCommand.setSourceLocNo(wrkMast.getSourceLocNo());
+                ledCommand.setLocNo(wrkMast.getLocNo());
                 ledCommand.setStaNo(wrkMast.getStaNo());
-                if (wrkMast.getIoType() != 110) {
+                if (wrkMast.getIoType() != 110 && wrkMast.getIoType() != 10) {
                     List<WrkDetl> wrkDetls = wrkDetlService.findByWorkNo(wrkMast.getWrkNo());
-                    try {
-                        WrkDetl wrkDetl = wrkDetls.get(0);
-                        if (!Cools.isEmpty(wrkDetl.getOrderNo())) {
-                            OrderDetl orderDetl = orderDetlMapper.selectItemNoneOfBatch(wrkDetl.getOrderNo(), wrkDetl.getMatnr());
-                            ledCommand.getMatDtos().add(new MatDto(orderDetl));
-                        }
-                    } catch (Exception e) {
-                        News.error("led execute fail", e);
-                    }
+                    wrkDetls.forEach(wrkDetl -> ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getAnfme(),wrkDetl.getSpecs())));
                 }
                 commands.add(ledCommand);
             }
@@ -2390,9 +2483,20 @@
             }
             // 鍛戒护涓嬪彂 -------------------------------------------------------------------------------
             if (!commands.isEmpty()) {
-                if (!MessageQueue.offer(SlaveType.Led, led.getId(), new Task(1, commands))) {
-                    News.error("{}鍙稬ED鍛戒护涓嬪彂澶辫触锛侊紒锛乕ip锛歿}] [port锛歿}]", led.getId(), led.getIp(), led.getPort());
-                    continue;
+                if (led.getId()>3){
+                    if (!MessageQueue.offer(SlaveType.Led, led.getId()-3, new Task(1, commands))) {
+                        log.error("{}鍙稬ED鍛戒护涓嬪彂澶辫触锛侊紒锛乕ip锛歿}] [port锛歿}]", led.getId()-3, led.getIp(), led.getPort());
+                        continue;
+                    }else {
+                        ledThread.setLedMk(false);
+                    }
+                }else {
+                    if (!MessageQueue.offer(SlaveType.Led, led.getId(), new Task(1, commands))) {
+                        log.error("{}鍙稬ED鍛戒护涓嬪彂澶辫触锛侊紒锛乕ip锛歿}] [port锛歿}]", led.getId(), led.getIp(), led.getPort());
+                        continue;
+                    }else {
+                        ledThread.setLedMk(false);
+                    }
                 }
             }
 
@@ -2422,6 +2526,35 @@
      */
     public void ledReset() {
         for (LedSlave led : slaveProperties.getLed()) {
+
+            // 鑾峰彇杈撻�佺嚎plc绾跨▼
+            DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, led.getDevpPlcId());
+            // 鍛戒护闆嗗悎
+            boolean reset = true;
+            for (Integer staNo : led.getStaArr()) {
+                // 鑾峰彇鍙夎溅绔欑偣
+                StaProtocol staProtocol = devpThread.getStation().get(staNo);
+                if (staProtocol == null) {
+                    continue;
+                }
+                if (staProtocol.getWorkNo() != 0 && staProtocol.isLoading()) {
+                    reset = false;
+                    break;
+                }
+            }
+            // 鑾峰彇led绾跨▼
+            LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, led.getId());
+            // led鏄剧ず榛樿鍐呭
+            if (reset && !ledThread.isLedMk()) {
+                ledThread.setLedMk(true);
+                if (!MessageQueue.offer(SlaveType.Led, led.getId(), new Task(4, new ArrayList<>()))) {
+                    News.error(" - {}鍙稬ED鍛戒护涓嬪彂澶辫触锛侊紒锛乕ip锛歿}] [port锛歿}]", led.getId(), led.getIp(), led.getPort());
+                } else {
+
+                }
+            }
+        }
+        for (LedSlave led : slaveProperties.getLed()) {
             // 鑾峰彇杈撻�佺嚎plc绾跨▼
             DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, led.getDevpPlcId());
             // 鍛戒护闆嗗悎
@@ -2436,9 +2569,10 @@
                 }
             }
             // 鑾峰彇led绾跨▼
-            LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, led.getDevpPlcId());
+            LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, led.getId());
             // led鏄剧ず榛樿鍐呭
-            if (reset) {
+            if (reset && !ledThread.isLedMk()) {
+                ledThread.setLedMk(true);
                 if (!MessageQueue.offer(SlaveType.Led, led.getId(), new Task(2, new ArrayList<>()))) {
                     News.error("{}鍙稬ED鍛戒护涓嬪彂澶辫触锛侊紒锛乕ip锛歿}] [port锛歿}]", led.getId(), led.getIp(), led.getPort());
                 }
@@ -2486,7 +2620,7 @@
                     SteChargeType steCharge = null;
                     do {
                         String locNo;
-                        if (!devpThread.charge0) {
+                        if (devpThread.charge0) {
                             SteChargeType first = SteChargeType.FIRST;
                             locNo = first.locNo;
                             if (basSteService.hasCarOfLocNo(locNo) == null
@@ -2537,7 +2671,7 @@
                     }
 
                     // 澶勪簬鍏呯數搴撲綅缁�
-                    if (steProtocol.getRow().intValue() == Utils.getRow(chargeLocNo)
+                    if ( 0<steProtocol.getRow().intValue() && steProtocol.getRow().intValue()<=4
                             && steProtocol.getBay().intValue() == Utils.getBay(chargeLocNo)
                             && steProtocol.getLev().intValue() == Utils.getLev(chargeLocNo)) {
                         // 淇敼宸ヤ綔妗g姸鎬� 21.鍑嗗鍏呯數 => 24.灏忚溅鍒拌揪
@@ -2564,10 +2698,26 @@
      */
     public synchronized void executeSteCharge() {
         WrkCharge wrkCharge = wrkChargeService.selectWorking(null, WrkChargeType.charge);
-        if (null == wrkCharge) { return; }
-        Integer steNo = wrkCharge.getSteNo();
-        SteThread steThread = (SteThread) SlaveConnection.get(SlaveType.Ste, steNo);
+        SteThread steThread = (SteThread) SlaveConnection.get(SlaveType.Ste, 1);
         SteProtocol steProtocol = steThread.getSteProtocol();
+        if (null == wrkCharge) {
+            try{
+                if (steProtocol.getChargeStatus()==(short)0 && steProtocol.isBrushConnect()){
+                    SteCommand steCommand = new SteCommand();
+                    steCommand.setSteNo(1); // 绌挎杞︾紪鍙�
+                    steCommand.setTaskNo(10060); // 宸ヤ綔鍙�
+                    steCommand.setTaskMode(SteTaskModeType.CLOSE_CHARGE); // 浠诲姟妯″紡: 鏂紑鍏呯數
+                    if (!MessageQueue.offer(SlaveType.Ste, 1, new Task(2, steCommand))) {
+                        News.error("绌挎杞﹀懡浠や笅鍙戝け璐ワ紝绌挎杞﹀彿={}锛屼换鍔℃暟鎹�={}", wrkCharge.getSteNo(), JSON.toJSON(steCommand));
+                    }
+                }
+            }catch (Exception e){
+                return;
+            }
+            return;
+        }
+        Integer steNo = wrkCharge.getSteNo();
+
         BasSte basSte = basSteService.selectById(steNo);
         if (Cools.isEmpty(steProtocol, basSte)) { return; }
         if (steProtocol.getMode() == 0
@@ -2581,9 +2731,35 @@
         if (!steProtocol.isEnable()) {
             return;
         }
-        if (steProtocol.getCharge() > Float.parseFloat(basSte.getChargeLine())) {
+        if (steProtocol.getCharge() > Float.parseFloat(basSte.getChargeLine())+40) {
+            MessageQueue.offer(SlaveType.Devp, 1, new Task(3, 999));//涓柇鍏呯數鏍囪
             wrkCharge.setWrkSts(30L);
-            wrkChargeMapper.updateById(wrkCharge);
+            if (!wrkChargeService.updateById(wrkCharge)) {
+                News.error("淇敼鍏呯數浠诲姟鐘舵�� 29.寮�濮嬪厖鐢� ===>> 30.瀹屾垚鍏呯數 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkCharge.getWrkNo());
+            }else {
+                SteCommand steCommand = new SteCommand();
+                steCommand.setSteNo(wrkCharge.getSteNo()); // 绌挎杞︾紪鍙�
+                steCommand.setTaskNo(wrkCharge.getWrkNo()); // 宸ヤ綔鍙�
+                steCommand.setTaskMode(SteTaskModeType.CLOSE_CHARGE); // 浠诲姟妯″紡: 鏂紑鍏呯數
+                if (!MessageQueue.offer(SlaveType.Ste, wrkCharge.getSteNo(), new Task(2, steCommand))) {
+                    News.error("绌挎杞﹀懡浠や笅鍙戝け璐ワ紝绌挎杞﹀彿={}锛屼换鍔℃暟鎹�={}", wrkCharge.getSteNo(), JSON.toJSON(steCommand));
+                }
+            }
+            return;
+        }else if (steProtocol.getCharge() > Float.parseFloat(basSte.getChargeLine()) && steProtocol.getChargeStatus()==(short)0 && steProtocol.isBrushConnect()) {
+            MessageQueue.offer(SlaveType.Devp, 1, new Task(3, 999));//涓柇鍏呯數鏍囪
+            wrkCharge.setWrkSts(30L);
+            if (!wrkChargeService.updateById(wrkCharge)) {
+                News.error("淇敼鍏呯數浠诲姟鐘舵�� 29.寮�濮嬪厖鐢� ===>> 30.瀹屾垚鍏呯數 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkCharge.getWrkNo());
+            }else {
+                SteCommand steCommand = new SteCommand();
+                steCommand.setSteNo(wrkCharge.getSteNo()); // 绌挎杞︾紪鍙�
+                steCommand.setTaskNo(wrkCharge.getWrkNo()); // 宸ヤ綔鍙�
+                steCommand.setTaskMode(SteTaskModeType.CLOSE_CHARGE); // 浠诲姟妯″紡: 鏂紑鍏呯數
+                if (!MessageQueue.offer(SlaveType.Ste, wrkCharge.getSteNo(), new Task(2, steCommand))) {
+                    News.error("绌挎杞﹀懡浠や笅鍙戝け璐ワ紝绌挎杞﹀彿={}锛屼换鍔℃暟鎹�={}", wrkCharge.getSteNo(), JSON.toJSON(steCommand));
+                }
+            }
             return;
         }
         try {
@@ -2644,7 +2820,7 @@
                     SteCommand steCommand = new SteCommand();
                     steCommand.setSteNo(wrkCharge.getSteNo()); // 绌挎杞︾紪鍙�
                     steCommand.setTaskNo(wrkCharge.getWrkNo()); // 宸ヤ綔鍙�
-                    steCommand.setTaskMode(SteTaskModeType.GO_ORIGIN);  // 鍘诲彸绔�
+                    steCommand.setTaskMode(SteTaskModeType.BACK_ORIGIN);  // 鍘诲彸绔�
 
                     steCommand.setRow(Utils.getGroupRow(steProtocol.getRow().intValue(), false).shortValue());
                     steCommand.setBay(steProtocol.getBay());
@@ -2663,6 +2839,7 @@
                     }
                 }
             } else if (wrkCharge.getWrkSts() == 26) {
+                //26.绛夊緟鍏呯數 ===>
                 // 绌挎杞︿笅鍙戝厖鐢典换鍔�
                 SteCommand steCommand = new SteCommand();
                 steCommand.setSteNo(wrkCharge.getSteNo()); // 绌挎杞︾紪鍙�
@@ -2675,6 +2852,27 @@
                     wrkCharge.setWrkSts(29L);
                     if (!wrkChargeService.updateById(wrkCharge)) {
                         News.error("淇敼鍏呯數浠诲姟鐘舵�� 28.鍏呯數灏辩华 ===>> 29.寮�濮嬪厖鐢� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkCharge.getWrkNo());
+                    }
+                }
+            } else if (wrkCharge.getWrkSts() == 29) {
+                Float idle2 = steProtocol.isIdle2();
+                String chargeLine = SpringUtils.getBean(BasSteService.class).selectById(1).getChargeLine();
+                if (idle2<(Float.parseFloat(chargeLine)+2)){
+                    MessageQueue.offer(SlaveType.Devp, 1, new Task(3, 666));//鍏呯數鏍囪
+                }else if (idle2 >= 100f){
+                    MessageQueue.offer(SlaveType.Devp, 1, new Task(3, 999));//涓柇鍏呯數鏍囪
+                    // 29.寮�濮嬪厖鐢� ===>> 30.瀹屾垚鍏呯數
+                    wrkCharge.setWrkSts(30L);
+                    if (!wrkChargeService.updateById(wrkCharge)) {
+                        News.error("淇敼鍏呯數浠诲姟鐘舵�� 29.寮�濮嬪厖鐢� ===>> 30.瀹屾垚鍏呯數 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkCharge.getWrkNo());
+                    }else {
+                        SteCommand steCommand = new SteCommand();
+                        steCommand.setSteNo(wrkCharge.getSteNo()); // 绌挎杞︾紪鍙�
+                        steCommand.setTaskNo(wrkCharge.getWrkNo()); // 宸ヤ綔鍙�
+                        steCommand.setTaskMode(SteTaskModeType.CLOSE_CHARGE); // 浠诲姟妯″紡: 鏂紑鍏呯數
+                        if (!MessageQueue.offer(SlaveType.Ste, wrkCharge.getSteNo(), new Task(2, steCommand))) {
+                            News.error("绌挎杞﹀懡浠や笅鍙戝け璐ワ紝绌挎杞﹀彿={}锛屼换鍔℃暟鎹�={}", wrkCharge.getSteNo(), JSON.toJSON(steCommand));
+                        }
                     }
                 }
             }
@@ -3201,6 +3399,63 @@
         }
 
     }
+    /**
+     * 鍑哄叆搴撴ā寮忓垏鎹�
+     */
+    public synchronized void outAndIn() {
+        try {
+            // 鏍规嵁杈撻�佺嚎plc閬嶅巻
+            for (DevpSlave devp : slaveProperties.getDevp()) {
+                for (DevpSlave.Sta inSta : devp.getInSta()) {
+                    Thread.sleep(500);
+                    boolean a=true,b=true;
+                    List<WrkMast> wrkMasts = wrkMastMapper.selectAll(inSta.getStaNo());
+                    if (Cools.isEmpty(wrkMasts)){
+                        b=false;
+                    }else {
+                        for (WrkMast wrkMast:wrkMasts){
+                            if (wrkMast.getSourceStaNo() > wrkMast.getStaNo()){
+                                a=false;
+                                break;
+                            }
+                        }
+                    }
+                    switch (inSta.getStaNo()) {
+                        case 102://1F
+                            if (a && b){
+                                MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(3, 11));
+                            }else if (b){
+                                MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(3, 12));
+                            }else {
+                                MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(3, 10));
+                            }
+                            break;
+                        case 202://2F
+                            if (a && b){
+                                MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(3, 21));
+                            }else if (b){
+                                MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(3, 22));
+                            }else {
+                                MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(3, 20));
+                            }
+                            break;
+                        case 302://3F
+                            if (a && b){
+                                MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(3, 31));
+                            }else if (b){
+                                MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(3, 32));
+                            }else {
+                                MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(3, 30));
+                            }
+                            break;
+                    }
+                }
+            }
+
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
 
 
 }

--
Gitblit v1.9.1