From ffb11402e5e1784f619977caed5a66440ae2b496 Mon Sep 17 00:00:00 2001
From: TQS <56479841@qq.com>
Date: 星期三, 23 十月 2024 15:10:32 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java |  851 +++++++++++++++++++++++++++++++++++++++++++++-----------
 1 files changed, 681 insertions(+), 170 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 cdb869d..72d6f90 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -12,8 +12,6 @@
 import com.zy.asrs.mapper.WrkChargeMapper;
 import com.zy.asrs.mapper.WrkMastMapper;
 import com.zy.asrs.service.*;
-import com.zy.asrs.utils.Monitor;
-import com.zy.asrs.utils.Roles;
 import com.zy.asrs.utils.Utils;
 import com.zy.common.model.LocTypeDto;
 import com.zy.common.model.MatDto;
@@ -117,34 +115,51 @@
                 }
                 Short workNo = staProtocol.getWorkNo();
 
-                Monitor.ledError(100,"娴嬭瘯");
                 // 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢
                 if (staProtocol.isAutoing() && staProtocol.isLoading()
                         && staProtocol.isInEnable()
                         && !staProtocol.isEmptyMk() && (workNo == 0 || (workNo >= 9990 && workNo <= 9999))
                         && staProtocol.isPakMk()) {
 
-                    //20230201. 2鍙峰爢鍨涙満鏈夊嚭搴撲换鍔℃椂锛岀姝㈡柊鏉垮叆搴�
-                    if (staProtocol.getWorkNo() == 9995) {
-                        if ( inSta.getStaNo()==103 && devpThread.ioModeOf1F == IoModeType.PAKOUT_MODE) {
-                            //鏈夊嚭搴撲换鍔★紝閫�搴撳埌鍏ュ簱鍙�
-                            staProtocol.setWorkNo((short) 9999);
-                            staProtocol.setStaNo((short)100);
-                            devpThread.setPakMk(staProtocol.getSiteId(), false);
-                            boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
-                            News.error("MainServiceImpl  generateStoreWrkFile"+"103涓哄嚭搴撴ā寮忥紝绂佹鍏ュ簱锛岄��鍥炲叆搴撳彛銆傦紒锛侊紒");
-                            continue;
-                        }
-                        if ( inSta.getStaNo()==203 && devpThread.ioModeOf2F == IoModeType.PAKOUT_MODE) {
-                            //鏈夊嚭搴撲换鍔★紝閫�搴撳埌鍏ュ簱鍙�
-                            staProtocol.setWorkNo((short) 9999);
-                            staProtocol.setStaNo((short)200);
-                            devpThread.setPakMk(staProtocol.getSiteId(), false);
-                            boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
-                            News.error("MainServiceImpl  generateStoreWrkFile"+"203涓哄嚭搴撴ā寮忥紝绂佹鍏ュ簱锛岄��鍥炲叆搴撳彛銆傦紒锛侊紒");
-                            continue;
-                        }
-                    }
+//                    //20230201. 2鍙峰爢鍨涙満鏈夊嚭搴撲换鍔℃椂锛岀姝㈡柊鏉垮叆搴�
+//                    if (staProtocol.getWorkNo() == 9995) {
+//                        if ( inSta.getStaNo()==103 && devpThread.ioModeOf1F == IoModeType.PAKOUT_MODE) {
+//                            //鏈夊嚭搴撲换鍔★紝閫�搴撳埌鍏ュ簱鍙�
+//                            staProtocol.setWorkNo((short) 9999);
+//                            staProtocol.setStaNo((short)100);
+//                            devpThread.setPakMk(staProtocol.getSiteId(), false);
+//                            boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+//                            News.error("MainServiceImpl  generateStoreWrkFile"+"103涓哄嚭搴撴ā寮忥紝绂佹鍏ュ簱锛岄��鍥炲叆搴撳彛銆傦紒锛侊紒");
+//                            continue;
+//                        }
+//                        if ( inSta.getStaNo()==203 && devpThread.ioModeOf2F == IoModeType.PAKOUT_MODE) {
+//                            //鏈夊嚭搴撲换鍔★紝閫�搴撳埌鍏ュ簱鍙�
+//                            staProtocol.setWorkNo((short) 9999);
+//                            staProtocol.setStaNo((short)200);
+//                            devpThread.setPakMk(staProtocol.getSiteId(), false);
+//                            boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+//                            News.error("MainServiceImpl  generateStoreWrkFile"+"203涓哄嚭搴撴ā寮忥紝绂佹鍏ュ簱锛岄��鍥炲叆搴撳彛銆傦紒锛侊紒");
+//                            continue;
+//                        }
+//                        if ( inSta.getStaNo()==113 && devpThread.ioModeOf3F == IoModeType.PAKOUT_MODE) {
+//                            //鏈夊嚭搴撲换鍔★紝閫�搴撳埌鍏ュ簱鍙�
+//                            staProtocol.setWorkNo((short) 9999);
+//                            staProtocol.setStaNo((short)114);
+//                            devpThread.setPakMk(staProtocol.getSiteId(), false);
+//                            boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+//                            News.error("MainServiceImpl  generateStoreWrkFile"+"103涓哄嚭搴撴ā寮忥紝绂佹鍏ュ簱锛岄��鍥炲叆搴撳彛銆傦紒锛侊紒");
+//                            continue;
+//                        }
+//                        if ( inSta.getStaNo()==213 && devpThread.ioModeOf4F == IoModeType.PAKOUT_MODE) {
+//                            //鏈夊嚭搴撲换鍔★紝閫�搴撳埌鍏ュ簱鍙�
+//                            staProtocol.setWorkNo((short) 9999);
+//                            staProtocol.setStaNo((short)214);
+//                            devpThread.setPakMk(staProtocol.getSiteId(), false);
+//                            boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+//                            News.error("MainServiceImpl  generateStoreWrkFile"+"203涓哄嚭搴撴ā寮忥紝绂佹鍏ュ簱锛岄��鍥炲叆搴撳彛銆傦紒锛侊紒");
+//                            continue;
+//                        }
+//                    }
 
                     // 鑾峰彇鏉$爜鎵弿浠俊鎭�
                     BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, inSta.getBarcode());
@@ -216,7 +231,7 @@
                             // plc 澶勭悊
                             barcodeThread.setBarcode("");
                             staProtocol.setWorkNo(dto.getWorkNo().shortValue());
-                            staProtocol.setStaNo(dto.getStaNo().shortValue());
+                            staProtocol.setStaNo(Utils.getStaNoConvertCentreOther3(dto.getStaNo(),inSta.getStaNo()).shortValue());
                             devpThread.setPakMk(staProtocol.getSiteId(), false);
 
                             ledThread.errorReset();
@@ -225,14 +240,14 @@
                             if (!result) {
                                 throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触");
                             }
-                        } else if (code == 500){
-                            if (ledThread != null) {
-                                String errorMsg = jsonObject.getString("msg");
-                                if (!Cools.isEmpty(errorMsg)) {
-                                    MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, errorMsg));
-                                }
-                            }
-                            News.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/pakin/loc/v1", JSON.toJSONString(param), response);
+//                        } else if (code == 500){
+//                            if (ledThread != null) {
+//                                String errorMsg = jsonObject.getString("msg");
+//                                if (!Cools.isEmpty(errorMsg)) {
+//                                    MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, errorMsg));
+//                                }
+//                            }
+//                            News.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/pakin/loc/v1", JSON.toJSONString(param), response);
                         } else if (code == 700) {
                             staProtocol.setWorkNo((short) 9995);
                             staProtocol.setStaNo(inSta.getBackSta().shortValue());
@@ -244,6 +259,42 @@
                                 String errorMsg = barcode + "鎵樼洏璇嗗埆寮傚父锛岃鍏堣繘琛岀粍鎵橈紒";
                                 MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, errorMsg));
                             }
+                        } else if (code == 500 || code == 1000){
+                            if (inSta.getStaNo().equals(103)){
+                                staProtocol.setWorkNo((short)9996);
+                                staProtocol.setStaNo((short)203);
+                            }
+                            if (inSta.getStaNo().equals(203)){
+                                staProtocol.setWorkNo((short)9996);
+                                staProtocol.setStaNo((short)103);
+                            }if (inSta.getStaNo().equals(113)){
+                                staProtocol.setWorkNo((short)9995);
+                                staProtocol.setStaNo((short)114);
+                            }else if (inSta.getStaNo().equals(213)){
+                                staProtocol.setWorkNo((short)9995);
+                                staProtocol.setStaNo((short)214);
+                            }else {
+                                staProtocol.setWorkNo((short)9995);
+                                staProtocol.setStaNo(inSta.getBackSta().shortValue());
+                            }
+                            devpThread.setPakMk(staProtocol.getSiteId(), false);
+                            MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+                            String data = jsonObject.getString("data");
+                            String msg = jsonObject.getString("msg");
+                            if (code == 500){
+                                // led 寮傚父鏄剧ず
+                                if (ledThread != null) {
+                                    String errorMsg ="鍏ュ簱绔欙細" + staProtocol.getStaNo() + "---" + barcode + "妫�绱㈠簱浣嶅け璐�,璇锋鏌ュ簱瀛樺墿浣欍��===>>" + data + "--" + msg;
+                                    MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, errorMsg));
+                                }
+                            } else if (code == 1000){
+                                // led 寮傚父鏄剧ず
+                                if (ledThread != null) {
+                                    String errorMsg ="鍏ュ簱绔欙細" + staProtocol.getStaNo() + "---" + barcode + "闇�瑕佹崲鍏ュ簱绔欍��";
+                                    MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, errorMsg));
+                                }
+                            }
+
                         }
                     } catch (Exception e) {
                         e.printStackTrace();
@@ -339,8 +390,6 @@
                             staNo = 103;
                             if (basDevps1.size()!=0 && basDevps2.size()!=0){
                                 continue;
-                            } else if (basDevps1.size()!=0){
-                                staNo = 203;
                             }
 
                             List<WrkMast> wrkMasts1 = wrkMastMapper.selectWrkStsAndIoType((int)staNo);
@@ -363,8 +412,6 @@
                             staNo = 203;
                             if (basDevps1.size()!=0 && basDevps2.size()!=0){
                                 continue;
-                            } else if (basDevps2.size()!=0){
-                                staNo = 103;
                             }
 
 //                            if (basDevps2.size()!=0){
@@ -394,9 +441,17 @@
                     staProtocol.setWorkNo(wrkMast.getWrkNo().shortValue());
                     staProtocol.setStaNo(staNo);
                     devpThread.setPakMk(staProtocol.getSiteId(), false);
+                    if (staProtocol.getStaNo().equals(300)){
+                        BasDevp basDevp = basDevpMapper.selectByDevNo(300);
+                        basDevp.setWrkNo1(wrkMast.getWrkNo());
+                        basDevpService.selectById(basDevp);
+                        News.info("300绔欏幓鍏ュ簱绔欎换鍔′笅鍙戯紝鏇存柊绔欑偣琛紝[浠诲姟鍙�:{}锛岀珯鐐瑰彿:{}]", wrkMast.getWrkNo().shortValue(), staNo);
+                    }
                     boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
                     if (!result) {
                         News.error("鍙戝竷鍛戒护鑷宠緭閫佺嚎闃熷垪澶辫触锛侊紒锛� [plc缂栧彿锛歿}]", devp.getId());
+                    } else {
+                        News.info("300绔欏幓鍏ュ簱绔欎换鍔″凡涓嬪彂锛孾浠诲姟鍙�:{}锛岀珯鐐瑰彿:{}]", wrkMast.getWrkNo().shortValue(), staNo);
                     }
                 }
             }
@@ -495,6 +550,15 @@
                             .eq("crn_no", wrkMast.getCrnNo()); // 鍫嗗灈鏈哄彿
                     StaDesc staDesc = staDescService.selectOne(wrapper);
                     if (Cools.isEmpty(staDesc)) {
+                        // led 寮傚父鏄剧ず
+                        String errorMsg = "";
+                        LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, pickSta.getLed());
+                        if (wrkMast.getIoType() == 103) {
+                            errorMsg = "褰撳墠鎷f枡浠诲姟璇风Щ鍔ㄨ嚦203绔�";
+                        } else {
+                            errorMsg = "褰撳墠鎷f枡浠诲姟璇风Щ鍔ㄨ嚦103绔�";
+                        }
+                        if (ledThread != null) {MessageQueue.offer(SlaveType.Led, pickSta.getLed(), new Task(3, errorMsg));}
                         News.error("鍏ュ簱璺緞涓嶅瓨鍦紒type_no={},stn_no={},crn_no={}", wrkMast.getIoType(), pickSta.getStaNo(), wrkMast.getCrnNo());
                         continue;
                     }
@@ -564,6 +628,11 @@
                     staProtocol.setWorkNo(wrkMast.getWrkNo().shortValue());
                     staProtocol.setStaNo(wrkMast.getStaNo().shortValue());
                     devpThread.setPakMk(staProtocol.getSiteId(), false);
+                    if (staProtocol.getStaNo().equals(300)){
+                        BasDevp basDevp = basDevpMapper.selectByDevNo(300);
+                        basDevp.setWrkNo1(wrkMast.getWrkNo());
+                        basDevpService.selectById(basDevp);
+                    }
                     boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
                     if (!result) {
                         News.error("鍙戝竷鍛戒护鑷宠緭閫佺嚎闃熷垪澶辫触锛侊紒锛� [plc缂栧彿锛歿}]", devp.getId());
@@ -813,6 +882,67 @@
                     // 鏌ヨ宸ヤ綔妗�
                     WrkMast wrkMast = wrkMastMapper.selectPakOutStep16(staProtocol.getSiteId());
                     if (wrkMast == null) {
+                        try{
+                            if (crnSlave.getId()!=2){
+                                // 鍒ゆ柇鍚婅溅鏄惁瀹為檯宸插畬鎴愶紝涓旂數鑴戠姸鎬佸湪move涓紝浠ュ鐢佃剳杩涜鏇存柊宸ヤ綔妗�
+                                CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crnSlave.getId());
+                                CrnProtocol crnProtocol = crnThread.getCrnProtocol();
+                                if (crnProtocol.statusType == CrnStatusType.FETCHING || crnProtocol.statusType == CrnStatusType.PUTTING) {
+                                    // 绉诲姩涓�
+                                    continue;
+                                }
+                                WrkMast onlyWrkNo = wrkMastMapper.selectByOnlyWrkNo(crnProtocol.getTaskNo().intValue());
+                                if (Cools.isEmpty(onlyWrkNo) && (crnStn.getStaNo()  == 112 || crnStn.getStaNo() == 212)){
+                                    //  鍒ゆ柇鍫嗗灈鏈虹姸鎬佺瓑寰呯‘璁�
+                                    if (crnProtocol.modeType == CrnModeType.AUTO
+                                            && crnProtocol.statusType == CrnStatusType.WAITING
+                                            && crnProtocol.forkPosType == CrnForkPosType.HOME
+                                            && crnProtocol.getBay().equals(crnStn.getBay().shortValue()) && crnProtocol.getLevel().equals(crnStn.getLev().shortValue())) {
+                                        News.info("鍫嗗灈鏈烘帴椹充换鍔″畬鎴愶紝宸ヤ綔鍙凤細"+crnProtocol.getTaskNo()+"锛涙墽琛屽爢鍨涙満鍙凤細"+crnSlave.getId()+"锛涙帴椹虫斁璐т綅锛�"+crnStn.getStaNo()+"锛涙帴椹宠璧扮洰鏍囩珯锛�"+Utils.getStaNoConvertCentreOther2(crnStn.getStaNo()));
+                                        // 涓嬪彂绔欑偣淇℃伅
+                                        News.error("new867===>"+crnProtocol.getTaskNo());
+                                        News.error("new867===>"+Utils.getStaNoConvertCentreOther2(crnStn.getStaNo()).toString());
+                                        staProtocol.setWorkNo(crnProtocol.getTaskNo());
+                                        staProtocol.setStaNo(Utils.getStaNoConvertCentreOther2(crnStn.getStaNo()).shortValue());
+                                        if (!MessageQueue.offer(SlaveType.Devp, crnStn.getDevpPlcId(), new Task(2, staProtocol))) {
+                                            continue;
+                                        }
+                                        // 澶嶄綅鍫嗗灈鏈�
+                                        crnThread.setResetFlag(true);
+                                        continue;
+                                    }
+                                }
+                                if (Cools.isEmpty(onlyWrkNo) ||
+                                        ((onlyWrkNo.getStaNo()!=114 && onlyWrkNo.getStaNo()!=214 &&
+                                                onlyWrkNo.getSourceStaNo()!=114 && onlyWrkNo.getSourceStaNo()!=214)
+                                                &&
+                                                (onlyWrkNo.getStaNo()!=113 && onlyWrkNo.getStaNo()!=213 &&
+                                                        onlyWrkNo.getSourceStaNo()!=113 && onlyWrkNo.getSourceStaNo()!=213))
+                                ){
+                                    continue;
+                                }
+                                //  鍒ゆ柇鍫嗗灈鏈虹姸鎬佺瓑寰呯‘璁�
+                                if (crnProtocol.modeType == CrnModeType.AUTO
+                                        && crnProtocol.statusType == CrnStatusType.WAITING
+                                        && crnProtocol.forkPosType == CrnForkPosType.HOME
+                                        && crnProtocol.getBay().equals(crnStn.getBay().shortValue()) && crnProtocol.getLevel().equals(crnStn.getLev().shortValue())) {
+                                    News.info("鍫嗗灈鏈烘帴椹充换鍔″畬鎴愶紝宸ヤ綔鍙凤細"+crnProtocol.getTaskNo()+"锛涙墽琛屽爢鍨涙満鍙凤細"+crnSlave.getId()+"锛涙帴椹虫斁璐т綅锛�"+crnStn.getStaNo()+"锛涙帴椹宠璧扮洰鏍囩珯锛�"+Utils.getStaNoConvertCentreOther2(crnStn.getStaNo()));
+                                    // 涓嬪彂绔欑偣淇℃伅
+                                    News.error("new867===>"+crnProtocol.getTaskNo());
+                                    News.error("new867===>"+Utils.getStaNoConvertCentreOther2(crnStn.getStaNo()).toString());
+                                    staProtocol.setWorkNo(crnProtocol.getTaskNo());
+                                    staProtocol.setStaNo(Utils.getStaNoConvertCentreOther2(crnStn.getStaNo()).shortValue());
+                                    if (!MessageQueue.offer(SlaveType.Devp, crnStn.getDevpPlcId(), new Task(2, staProtocol))) {
+                                        continue;
+                                    }
+                                    // 澶嶄綅鍫嗗灈鏈�
+                                    crnThread.setResetFlag(true);
+                                    continue;
+                                }
+                            }
+                        } catch (Exception e){
+                            News.info("鍫嗗灈鏈烘帴椹充换鍔″畬鎴愶紝寮傚父锛�"+e.getMessage());
+                        }
                         continue;
                     }
                     // 鍒ゆ柇宸ヤ綔妗f潯浠�
@@ -835,7 +965,9 @@
 
                         // 涓嬪彂绔欑偣淇℃伅
                         staProtocol.setWorkNo(wrkMast.getWrkNo().shortValue());
-                        staProtocol.setStaNo(wrkMast.getStaNo().shortValue());
+                        News.error("new902===>"+crnProtocol.getCrnNo().toString());
+                        News.error("new902===>"+wrkMast.getStaNoConvert(crnProtocol.getCrnNo()).toString());
+                        staProtocol.setStaNo(wrkMast.getStaNoConvert(crnProtocol.getCrnNo()).shortValue());
                         if (!MessageQueue.offer(SlaveType.Devp, crnStn.getDevpPlcId(), new Task(2, staProtocol))) {
                             continue;
                         }
@@ -938,15 +1070,91 @@
 
             // 鑾峰彇宸ヤ綔鐘舵�佷负 2,3,4,5,6 鐨勫叆搴撳伐浣滄。
             WrkMast wrkMast = wrkMastMapper.selectPakInStep23456(slave.getId(), staProtocol.getWorkNo().intValue(), crnStn.getStaNo());
-            if(null == wrkMast) {
-//                News.error("{}绔欑偣鏌ヨ鏃犲緟鍏ュ簱鏁版嵁 宸ヤ綔鍙�={}", crnStn.getStaNo(), staProtocol.getWorkNo());
+            if(null == wrkMast){
+                try{
+                    WrkMast onlyWrkNo = wrkMastMapper.selectByOnlyWrkNo(staProtocol.getWorkNo().intValue());
+                    if (!Cools.isEmpty(onlyWrkNo) && onlyWrkNo.getCrnNo()==2 && onlyWrkNo.getWrkSts()==2 && crnProtocol.getCrnNo()!=2 && (onlyWrkNo.getIoType()==1 || onlyWrkNo.getIoType()==10)){
+                        //                News.error("{}绔欑偣鏌ヨ鏃犲緟鍏ュ簱鏁版嵁 宸ヤ綔鍙�={}", crnStn.getStaNo(), staProtocol.getWorkNo());
+                        // 宸茬粡瀛樺湪鍚婅溅鎵ц浠诲姟鏃讹紝鍒欒繃婊�
+                        if (wrkMastMapper.selectWorking(slave.getId()) != null) {
+                            continue;
+                        }
+                        if (Cools.isEmpty(staProtocol.getWorkNo()) || !staProtocol.isLoading()){
+                            continue;
+                        }
+                        //  鍒ゆ柇鍫嗗灈鏈虹姸鎬佺瓑寰呯‘璁�
+                        if (crnProtocol.modeType == CrnModeType.AUTO
+                                && crnProtocol.statusType == CrnStatusType.IDLE
+                                && crnProtocol.forkPosType == CrnForkPosType.HOME && crnStn.getBay()!=(short)4) {
+                            News.info("鍫嗗灈鏈烘帴椹充换鍔℃墽琛岋紝宸ヤ綔鍙凤細"+staProtocol.getWorkNo()+"锛涙墽琛屽爢鍨涙満鍙凤細"+slave.getId()+"锛涙帴椹冲彇璐т綅锛�"+crnStn.getStaNo()+"锛涙帴椹虫斁璐т綅锛�"+staProtocol.getSiteId());
+                            // 鍫嗗灈鏈烘帴椹充换鍔″懡浠や笅鍙戝尯 --------------------------------------------------------------------------
+                            CrnCommand crnCommand = new CrnCommand();
+                            crnCommand.setCrnNo(slave.getId()); // 鍫嗗灈鏈虹紪鍙�
+                            crnCommand.setTaskNo(onlyWrkNo.getWrkNo().shortValue()); // 宸ヤ綔鍙�
+                            crnCommand.setAckFinish((short) 0);  // 浠诲姟瀹屾垚纭浣�
+                            crnCommand.setCommand((short) 0);
+                            crnCommand.setTaskMode(CrnTaskModeType.LOC_MOVE); // 浠诲姟妯″紡:  搴撲綅绉昏浆
+                            crnCommand.setSourcePosX(crnStn.getRow().shortValue());     // 婧愬簱浣嶆帓
+                            crnCommand.setSourcePosY(crnStn.getBay().shortValue());     // 婧愬簱浣嶅垪
+                            crnCommand.setSourcePosZ(crnStn.getLev().shortValue());     // 婧愬簱浣嶅眰
+                            crnCommand.setDestinationPosX(Utils.getRow(staProtocol.getSiteId()));     // 鐩爣搴撲綅鎺�
+                            crnCommand.setDestinationPosY(Utils.getBay(staProtocol.getSiteId()));     // 鐩爣搴撲綅鍒�
+                            crnCommand.setDestinationPosZ(Utils.getLev(staProtocol.getSiteId()));     // 鐩爣搴撲綅灞�
+                            if (!MessageQueue.offer(SlaveType.Crn, slave.getId(), new Task(2, crnCommand))) {
+                                News.error("鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", slave.getId(), JSON.toJSONString(crnCommand));
+                            }
+                            return true;
+                        }
+                    } else if (!Cools.isEmpty(onlyWrkNo) && onlyWrkNo.getCrnNo()==2 && onlyWrkNo.getWrkSts()>16 && crnProtocol.getCrnNo()!=2 && onlyWrkNo.getIoType()>100){
+                        //                News.error("{}绔欑偣鏌ヨ鏃犲緟鍏ュ簱鏁版嵁 宸ヤ綔鍙�={}", crnStn.getStaNo(), staProtocol.getWorkNo());
+                        // 宸茬粡瀛樺湪鍚婅溅鎵ц浠诲姟鏃讹紝鍒欒繃婊�
+                        if (wrkMastMapper.selectWorking(slave.getId()) != null) {
+                            continue;
+                        }
+                        if (Cools.isEmpty(staProtocol.getWorkNo()) || !staProtocol.isLoading()){
+                            continue;
+                        }
+                        //  鍒ゆ柇鍫嗗灈鏈虹姸鎬佺瓑寰呯‘璁�
+                        if (crnProtocol.modeType == CrnModeType.AUTO
+                                && crnProtocol.statusType == CrnStatusType.IDLE
+                                && crnProtocol.forkPosType == CrnForkPosType.HOME && crnStn.getBay()==(short)4) {
+                            News.info("鍫嗗灈鏈烘帴椹充换鍔℃墽琛岋紝宸ヤ綔鍙凤細"+staProtocol.getWorkNo()+"锛涙墽琛屽爢鍨涙満鍙凤細"+slave.getId()+"锛涙帴椹冲彇璐т綅锛�"+crnStn.getStaNo()+"锛涙帴椹虫斁璐т綅锛�"+staProtocol.getSiteId());
+                            // 鍫嗗灈鏈烘帴椹充换鍔″懡浠や笅鍙戝尯 --------------------------------------------------------------------------
+                            CrnCommand crnCommand = new CrnCommand();
+                            crnCommand.setCrnNo(slave.getId()); // 鍫嗗灈鏈虹紪鍙�
+                            crnCommand.setTaskNo(onlyWrkNo.getWrkNo().shortValue()); // 宸ヤ綔鍙�
+                            crnCommand.setAckFinish((short) 0);  // 浠诲姟瀹屾垚纭浣�
+                            crnCommand.setCommand((short) 0);
+                            crnCommand.setTaskMode(CrnTaskModeType.LOC_MOVE); // 浠诲姟妯″紡:  搴撲綅绉昏浆
+                            crnCommand.setSourcePosX(crnStn.getRow().shortValue());     // 婧愬簱浣嶆帓
+                            crnCommand.setSourcePosY(crnStn.getBay().shortValue());     // 婧愬簱浣嶅垪
+                            crnCommand.setSourcePosZ(crnStn.getLev().shortValue());     // 婧愬簱浣嶅眰
+                            crnCommand.setDestinationPosX(Utils.getRow(staProtocol.getSiteId()));     // 鐩爣搴撲綅鎺�
+                            crnCommand.setDestinationPosY(Utils.getBay(staProtocol.getSiteId()));     // 鐩爣搴撲綅鍒�
+                            crnCommand.setDestinationPosZ(Utils.getLev(staProtocol.getSiteId()));     // 鐩爣搴撲綅灞�
+                            if (!MessageQueue.offer(SlaveType.Crn, slave.getId(), new Task(2, crnCommand))) {
+                                News.error("鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", slave.getId(), JSON.toJSONString(crnCommand));
+                            }
+                            return true;
+                        }
+                    }
+                        continue;
+                } catch (Exception e){
+                    News.info("鍫嗗灈鏈烘帴椹充换鍔℃墽琛岋紝寮傚父锛�"+e.getMessage());
+                }
                 continue;
             }
 
-            // 鍏ュ簱娣卞簱浣嶆槸鍚︽湁闈濬銆丏銆乆搴撲綅杩涜鏍¢獙
+            // 鍏ュ簱娣卞簱浣嶆槸鍚︽湁闈濬銆丏銆乆搴撲綅杩涜鏍¢獙 锛� Q銆丳銆丷銆丼锛�
             if (wrkMastMapper.selectShallowLoc(Integer.parseInt(wrkMast.getLocNo().substring(0, 2)),Integer.parseInt(wrkMast.getLocNo().substring(2, 5)),Integer.parseInt(wrkMast.getLocNo().substring(5, 7)))!=null){
-                continue;
+                //妫�鏌ュ叆搴撳簱浣嶆槸鍚︽槸鍦ㄥ爢鍨涙満杈瑰簱浣�
+                ArrayList<Integer> outLoc = new ArrayList<>();
+                outLoc.add(3);outLoc.add(4);outLoc.add(11);outLoc.add(12);outLoc.add(18);outLoc.add(19);
+                if (!outLoc.contains(Integer.parseInt(wrkMast.getLocNo().substring(0, 2)))) {
+                    continue;
+                }
             }
+
 
             //鍔犲己鍒ゆ柇锛屽彧瑕佸瓨鍦ㄧЩ搴撲换鍔★紝璇存槑鍑哄簱浠诲姟鏈畬鍏ㄧ粨鏉燂紝涓嶆墽琛屽叆搴撲换鍔�
             WrkMast one = wrkMastMapper.selectLocMoveData(slave.getId());
@@ -1017,7 +1225,8 @@
                 }
             }
             if(flag){
-                return false;
+                continue;
+//                return false;
             }
 
             // 鍒ゆ柇鏄惁宸插瓨鍦ㄥ皬杞︾粦瀹氫换鍔�
@@ -1152,6 +1361,7 @@
                         SteThread steThread = (SteThread) SlaveConnection.get(SlaveType.Ste, steNo);
                         SteProtocol steProtocol = steThread.getSteProtocol();
                         if (steProtocol == null) { continue; }
+                        if (steProtocol.loca==0) continue;
                         if (steProtocol.isIdle()) {
 
                             // 宸茬粡瀛樺湪鍚婅溅鎵ц浠诲姟鏃讹紝鍒欒繃婊�
@@ -1220,10 +1430,21 @@
     public synchronized boolean locToCrnStn(CrnSlave slave, CrnProtocol crnProtocol){
         Collections.shuffle(slave.getCrnOutStn());
         for (CrnSlave.CrnStn crnStn : slave.getCrnOutStn()) {
-            // 鑾峰彇宸ヤ綔鐘舵�佷负11锛堢敓鎴愬嚭搴揑D锛夌殑鍑哄簱宸ヤ綔妗�
+            // 鑾峰彇宸ヤ綔鐘舵�佷负11,12,13,14,15, 16锛堢敓鎴愬嚭搴揑D锛夌殑鍑哄簱宸ヤ綔妗�
             WrkMast wrkMast = wrkMastMapper.selectPakOutStep111215(slave.getId(), crnStn.getStaNo());
             if (wrkMast == null) {
                 continue;
+            }
+
+            /*
+             * 100銆�200瀛樺湪杩涜涓殑鐩樼偣浠诲姟锛屽垯涓嶆墽琛岀洏鐐逛换鍔�
+             * */
+            if (wrkMast.getIoType().equals(107)){
+                Integer countPan = wrkMastMapper.selectWrkStsAndIoType107Count(wrkMast.getSourceStaNo(),wrkMast.getWrkNo());
+                if (countPan > 0){
+                    News.error("MainServiceImpl  locToCrnStn 1271琛�"+"鐩樼偣鍑哄簱璺宠繃锛屽瓨鍦ㄨ繘琛屼腑鍙兘鍫靛浠诲姟鏁皗}涓�",countPan);
+                    continue;
+                }
             }
 
             // 鑾峰彇鍫嗗灈鏈哄嚭搴撶珯淇℃伅
@@ -1244,12 +1465,20 @@
                     News.error("MainServiceImpl  locToCrnStn"+"203闈炲嚭搴撴ā寮忥紝绂佹鍑哄簱銆備换鍔″彿:{}锛侊紒锛�",wrkMast.getWrkNo());
                     return false;
                 }
+                if (wrkMast.getStaNo() == 113 && devpThread.ioModeOf3F != IoModeType.PAKOUT_MODE) {
+                    News.error("MainServiceImpl  locToCrnStn"+"113闈炲嚭搴撴ā寮忥紝绂佹鍑哄簱銆備换鍔″彿:{}锛侊紒锛�",wrkMast.getWrkNo());
+                    return false;
+                }
+                if (wrkMast.getStaNo() == 213 && devpThread.ioModeOf4F != IoModeType.PAKOUT_MODE) {
+                    News.error("MainServiceImpl  locToCrnStn"+"213闈炲嚭搴撴ā寮忥紝绂佹鍑哄簱銆備换鍔″彿:{}锛侊紒锛�",wrkMast.getWrkNo());
+                    return false;
+                }
 
                 if (wrkMast.getWrkSts() == 11 && (wrkMast.getIoType() == 103 || wrkMast.getIoType() == 107)){
                     Integer sour = wrkMast.getSourceStaNo();
                     List<WrkMast> wrkMasts = wrkMastMapper.selectWrkStsAndIoType0(sour);
                     if (wrkMasts.size() > 0){
-                        News.error("MainServiceImpl  1028琛�"+"瀛樺湪鎹℃枡銆佺洏鐐规湭鍏ュ簱璐х墿锛�2鍙峰爢鍨涙満鏆傛椂绂佹鍑哄簱锛侊紒锛�");
+                        News.error("MainServiceImpl  1300琛�"+"瀛樺湪鎹℃枡銆佺洏鐐规湭鍏ュ簱璐х墿锛�2鍙峰爢鍨涙満鏆傛椂绂佹鍑哄簱锛侊紒锛�");
                         return false;
                     }
 
@@ -1258,7 +1487,7 @@
                             .eq("sta_no",300)
                             .last(" and wrk_sts>11 and io_type in (103,107) "));
                     if(!Cools.isEmpty(one)){
-                        News.error("MainServiceImpl  1099琛�"+"瀛樺湪鎹℃枡銆佺洏鐐规湭鍏ュ簱璐х墿锛�2鍙峰爢鍨涙満鏆傛椂绂佹鍑哄簱锛侊紒锛�");
+                        News.error("MainServiceImpl  1309琛�"+"瀛樺湪鎹℃枡銆佺洏鐐规湭鍏ュ簱璐х墿锛�2鍙峰爢鍨涙満鏆傛椂绂佹鍑哄簱锛侊紒锛�");
                         continue;
                     }
                 }
@@ -1332,13 +1561,11 @@
                                         }else {
                                             waitWrkMast.setIoPri(9999d);
                                         }
-                                        if(wrkMast.getIoPri()>=9000.0){
-                                            wrkMast.setIoPri(9999d);
-                                        }else if (wrkMast.getIoPri()>20.0){
-                                            wrkMast.setIoPri(wrkMast.getIoPri()-10.0);
-                                        }else {
-                                            wrkMast.setIoPri(13.0d);
-                                        }
+//                                        if (wrkMast.getIoPri()>23.0){
+//                                            wrkMast.setIoPri(wrkMast.getIoPri()-10.0);
+//                                        }else {
+                                            wrkMast.setIoPri(15.0d);
+//                                        }
                                         if (wrkMastMapper.updateById(wrkMast)==0){
                                             News.error("璋冩暣浼樺厛绾уけ璐�");
                                         }
@@ -1479,6 +1706,7 @@
                             SteThread steThread = (SteThread) SlaveConnection.get(SlaveType.Ste, steNo);
                             SteProtocol steProtocol = steThread.getSteProtocol();
                             if (steProtocol == null) { continue; }
+                            if (steProtocol.loca==0) continue;
                             if (steProtocol.isIdle()) {
 
                                 //灏忚溅鍙兘缁戝畾涓�绗斾綔涓氫腑浠诲姟
@@ -2500,6 +2728,8 @@
             SteThread steThread = (SteThread) SlaveConnection.get(SlaveType.Ste, ste.getId());
             SteProtocol steProtocol = steThread.getSteProtocol();
             if (steProtocol == null) { continue; }
+            if (Cools.isEmpty(steProtocol.loca))  continue;
+            if (steProtocol.loca==0) continue;
             if (Utils.getGroupRow(locNo).equals(Utils.getGroupRow(steProtocol.getRow().intValue())) && steProtocol.getBay() == Utils.getBay(locNo) && steProtocol.getLev() == Utils.getLev(locNo)) {
                 return steProtocol.getSteNo().intValue();
             }
@@ -2516,6 +2746,8 @@
             SteThread steThread = (SteThread) SlaveConnection.get(SlaveType.Ste, ste.getId());
             SteProtocol steProtocol = steThread.getSteProtocol();
             if (steProtocol == null) { continue; }
+            if (Cools.isEmpty(steProtocol.loca)) continue;
+            if (steProtocol.loca==0) continue;
             if (steProtocol.isIdle()) {
                 if (Utils.getGroupRow(locNo).equals(Utils.getGroupRow(steProtocol.getRow().intValue())) && steProtocol.getBay() == Utils.getBay(locNo) && steProtocol.getLev() == Utils.getLev(locNo)) {
                     return steProtocol.getSteNo().intValue();
@@ -2934,6 +3166,7 @@
                             SteThread steThread = (SteThread) SlaveConnection.get(SlaveType.Ste, steNo);
                             SteProtocol steProtocol = steThread.getSteProtocol();
                             if (steProtocol == null) { continue; }
+//                            if (steProtocol.loca==0) continue;
                             if (steProtocol.isIdle()) {
                                 // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
                                 SteCommand steCommand = new SteCommand();
@@ -3026,6 +3259,7 @@
                         SteThread steThread = (SteThread) SlaveConnection.get(SlaveType.Ste, steNo);
                         SteProtocol steProtocol = steThread.getSteProtocol();
                         if (steProtocol == null) { continue; }
+//                        if (steProtocol.loca==0) continue;
                         // 绌挎杞﹂噸鏂板畾浣嶆帓鍒楀眰
                         if (!steThread.confirmPos()) {
                             News.error("{}鍙风┛姊溅閲嶆柊瀹氫綅澶辫触锛佷綔涓氬伐浣滄。浠诲姟鍙凤細{}", wrkMast.getSteNo(), wrkMast.getWrkNo());
@@ -3098,6 +3332,7 @@
                             SteThread steThread = (SteThread) SlaveConnection.get(SlaveType.Ste, steNo);
                             SteProtocol steProtocol = steThread.getSteProtocol();
                             if (steProtocol == null) { continue; }
+//                            if (steProtocol.loca==0) continue;
                             if (steProtocol.isIdle()) {
                                 // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
                                 SteCommand steCommand = new SteCommand();
@@ -3294,6 +3529,7 @@
                             SteThread steThread = (SteThread) SlaveConnection.get(SlaveType.Ste, steNo);
                             SteProtocol steProtocol = steThread.getSteProtocol();
                             if (steProtocol == null) { continue; }
+                            if (steProtocol.loca==0) continue;
                             if (steProtocol.isIdle()) {
                                 // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
                                 SteCommand steCommand = new SteCommand();
@@ -3323,6 +3559,7 @@
                         SteThread steThread = (SteThread) SlaveConnection.get(SlaveType.Ste, steNo);
                         SteProtocol steProtocol = steThread.getSteProtocol();
                         if (steProtocol == null) { continue; }
+                        if (steProtocol.loca==0) continue;
                         // 绌挎杞﹂噸鏂板畾浣嶆帓鍒楀眰
                         if (!steThread.confirmPos()) {
                             News.error("{}鍙风┛姊溅閲嶆柊瀹氫綅澶辫触锛佷綔涓氬伐浣滄。浠诲姟鍙凤細{}", wrkMast.getSteNo(), wrkMast.getWrkNo());
@@ -3364,6 +3601,8 @@
             SteThread steThread = (SteThread) SlaveConnection.get(SlaveType.Ste, ste.getId());
             SteProtocol steProtocol = steThread.getSteProtocol();
             if (steProtocol == null) { continue; }
+            if (Cools.isEmpty(steProtocol.loca)) continue;
+            if (steProtocol.loca==0) continue;
             if (steProtocol.getWaiting() && steProtocol.getTaskNo() == 0){
                 News.info("ste[id={}] 鏀跺埌绛夊緟WCS纭淇″彿锛屼絾鏄换鍔″彿(鍦板潃V824)涓�0", steProtocol.getSteNo());
             }
@@ -3780,6 +4019,24 @@
                         News.error("MainServiceImpl  storeEmptyPlt"+"203涓哄嚭搴撴ā寮忥紝绂佹鍏ュ簱锛岄��鍥炲叆搴撳彛銆傦紒锛侊紒");
                         continue;
                     }
+                    if ( emptyInSta.getStaNo()==113 && devpThread.ioModeOf3F == IoModeType.PAKOUT_MODE) {
+                        //鏈夊嚭搴撲换鍔★紝閫�搴撳埌鍏ュ簱鍙�
+                        staProtocol.setWorkNo((short) 9999);
+                        staProtocol.setStaNo((short)100);
+                        devpThread.setPakMk(staProtocol.getSiteId(), false);
+                        boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+                        News.error("MainServiceImpl  storeEmptyPlt"+"113涓哄嚭搴撴ā寮忥紝绂佹鍏ュ簱锛岄��鍥炲叆搴撳彛銆傦紒锛侊紒");
+                        continue;
+                    }
+                    if ( emptyInSta.getStaNo()==213 && devpThread.ioModeOf4F == IoModeType.PAKOUT_MODE) {
+                        //鏈夊嚭搴撲换鍔★紝閫�搴撳埌鍏ュ簱鍙�
+                        staProtocol.setWorkNo((short) 9999);
+                        staProtocol.setStaNo((short)200);
+                        devpThread.setPakMk(staProtocol.getSiteId(), false);
+                        boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+                        News.error("MainServiceImpl  storeEmptyPlt"+"213涓哄嚭搴撴ā寮忥紝绂佹鍏ュ簱锛岄��鍥炲叆搴撳彛銆傦紒锛侊紒");
+                        continue;
+                    }
                 }
 
                 // 绔欑偣鏉′欢鍒ゆ柇
@@ -3862,109 +4119,116 @@
      */
     public synchronized void ledExecute() {
         for (LedSlave led : slaveProperties.getLed()) {
-            // 鑾峰彇杈撻�佺嚎plc绾跨▼
-            DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, led.getDevpPlcId());
-            // 鍛戒护闆嗗悎
-            List<LedCommand> commands = new ArrayList<>();
-            // 宸ヤ綔妗i泦鍚�
-            List<WrkMast> wrkMasts = new ArrayList<>();
-            for (Integer staNo : led.getStaArr()) {
-                // 鑾峰彇鍙夎溅绔欑偣
-                StaProtocol staProtocol = devpThread.getStation().get(staNo);
-                if (null == staProtocol || null == staProtocol.getWorkNo() || 0 == staProtocol.getWorkNo() || !staProtocol.isLoading()) {
-                    continue;
-                } else {
-                    staProtocol = staProtocol.clone();
-                }
-                // 鑾峰彇宸ヤ綔妗f暟鎹�
-                WrkMast wrkMast = wrkMastMapper.selectById(staProtocol.getWorkNo());
-                if (null == wrkMast || wrkMast.getWrkSts() < 14 || wrkMast.getIoType() < 100) { continue; }
-                wrkMasts.add(wrkMast);
-                // 缁勮鍛戒护
-                LedCommand ledCommand = new LedCommand();
-                ledCommand.setWorkNo(wrkMast.getWrkNo());
-                ledCommand.setIoType(wrkMast.getIoType());
-                // 鍑哄簱妯″紡
-                switch (wrkMast.getIoType()) {
-                    case 101:
-                        ledCommand.setTitle("鍏ㄦ澘鍑哄簱");
-                        break;
-                    case 103:
-                        ledCommand.setTitle("鎷f枡鍑哄簱");
-                        break;
-                    case 104:
-                        ledCommand.setTitle("骞舵澘鍑哄簱");
-                        break;
-                    case 107:
-                        ledCommand.setTitle("鐩樼偣鍑哄簱");
-                        break;
-                    case 110:
-                        ledCommand.setTitle("绌烘澘鍑哄簱");
-                        ledCommand.setEmptyMk(true);
-                        break;
-                    default:
-                        News.error("浠诲姟鍏ュ嚭搴撶被鍨嬮敊璇紒锛侊紒[宸ヤ綔鍙凤細{}] [鍏ュ嚭搴撶被鍨嬶細{}]", wrkMast.getWrkNo(), wrkMast.getIoType());
-                        break;
-                }
-                ledCommand.setSourceLocNo(wrkMast.getSourceLocNo());
-                ledCommand.setStaNo(wrkMast.getStaNo());
-                ledCommand.setBarcode(wrkMast.getBarcode());
-                if (wrkMast.getIoType() != 110) {
-                    List<WrkDetl> wrkDetls = wrkDetlService.findByWorkNo(wrkMast.getWrkNo());
+            try{
+                // 鑾峰彇杈撻�佺嚎plc绾跨▼
+                DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, led.getDevpPlcId());
+                // 鍛戒护闆嗗悎
+                List<LedCommand> commands = new ArrayList<>();
+                // 宸ヤ綔妗i泦鍚�
+                List<WrkMast> wrkMasts = new ArrayList<>();
+                for (Integer staNo : led.getStaArr()) {
+                    // 鑾峰彇鍙夎溅绔欑偣
+                    StaProtocol staProtocol = devpThread.getStation().get(staNo);
+                    if (null == staProtocol || null == staProtocol.getWorkNo() || 0 == staProtocol.getWorkNo() || !staProtocol.isLoading()) {
+                        continue;
+                    } else {
+                        staProtocol = staProtocol.clone();
+                    }
+                    // 鑾峰彇宸ヤ綔妗f暟鎹�
+                    WrkMast wrkMast = wrkMastMapper.selectById(staProtocol.getWorkNo());
+                    if (null == wrkMast || wrkMast.getWrkSts() < 14 || wrkMast.getIoType() < 100) { continue; }
+                    wrkMasts.add(wrkMast);
+                    // 缁勮鍛戒护
+                    LedCommand ledCommand = new LedCommand();
+                    ledCommand.setWorkNo(wrkMast.getWrkNo());
+                    ledCommand.setIoType(wrkMast.getIoType());
+                    // 鍑哄簱妯″紡
+                    switch (wrkMast.getIoType()) {
+                        case 101:
+                            ledCommand.setTitle("鍏ㄦ澘鍑哄簱");
+                            break;
+                        case 103:
+                            ledCommand.setTitle("鎷f枡鍑哄簱");
+                            break;
+                        case 104:
+                            ledCommand.setTitle("骞舵澘鍑哄簱");
+                            break;
+                        case 107:
+                            ledCommand.setTitle("鐩樼偣鍑哄簱");
+                            break;
+                        case 110:
+                            ledCommand.setTitle("绌烘澘鍑哄簱");
+                            ledCommand.setEmptyMk(true);
+                            break;
+                        default:
+                            News.error("浠诲姟鍏ュ嚭搴撶被鍨嬮敊璇紒锛侊紒[宸ヤ綔鍙凤細{}] [鍏ュ嚭搴撶被鍨嬶細{}]", wrkMast.getWrkNo(), wrkMast.getIoType());
+                            break;
+                    }
+                    ledCommand.setSourceLocNo(wrkMast.getSourceLocNo());
+                    ledCommand.setStaNo(wrkMast.getStaNo());
+                    ledCommand.setBarcode(wrkMast.getBarcode());
+                    if (wrkMast.getIoType() != 110) {
+                        List<WrkDetl> wrkDetls = wrkDetlService.findByWorkNo(wrkMast.getWrkNo());
 
-                    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) {
-                            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));
-                        }
-                    });
+                        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) {
+                                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);
                 }
-                commands.add(ledCommand);
-            }
-            Set<Integer> workNos = wrkMasts.stream().map(WrkMast::getWrkNo).collect(Collectors.toSet());
-            // 鑾峰彇LED绾跨▼
-            LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, led.getId());
-            // 鐩稿悓宸ヤ綔鍙烽泦鍚堝垯杩囨护
-            if (CollectionUtils.equals(ledThread.getWorkNos(), workNos)) {
-                continue;
-            }
-            // 鍛戒护涓嬪彂 -------------------------------------------------------------------------------
-            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());
+                Set<Integer> workNos = wrkMasts.stream().map(WrkMast::getWrkNo).collect(Collectors.toSet());
+                // 鑾峰彇LED绾跨▼
+                LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, led.getId());
+                // 鐩稿悓宸ヤ綔鍙烽泦鍚堝垯杩囨护
+                if (CollectionUtils.equals(ledThread.getWorkNos(), workNos)) {
                     continue;
                 }
-            }
-
-            try {
-                // 淇敼涓绘。led鏍囪
-                for (WrkMast wrkMast : wrkMasts) {
-                    wrkMast.setOveMk("Y");
-                    wrkMast.setModiTime(new Date());
-                    if (wrkMastMapper.updateById(wrkMast) == 0) {
-                        throw new CoolException("鏇存柊宸ヤ綔妗eけ璐�");
+                // 鍛戒护涓嬪彂 -------------------------------------------------------------------------------
+                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;
+                    } else {
+                        News.info("{}鍙稬ED鍛戒护涓嬪彂鎴愬姛锛侊紒锛乕ip锛歿}] [port锛歿}]", led.getId(), led.getIp(), led.getPort());
+                        News.info("{}鍙稬ED鍛戒护涓嬪彂鎴愬姛锛侊紒锛乕commands锛歿}]", led.getId(), commands);
                     }
                 }
 
-                // 鏇存柊绾跨▼褰撳墠宸ヤ綔鍙烽泦鍚�
-                ledThread.setWorkNos(workNos);
+                try {
+                    // 淇敼涓绘。led鏍囪
+                    for (WrkMast wrkMast : wrkMasts) {
+                        wrkMast.setOveMk("Y");
+                        wrkMast.setModiTime(new Date());
+                        if (wrkMastMapper.updateById(wrkMast) == 0) {
+                            throw new CoolException("鏇存柊宸ヤ綔妗eけ璐�");
+                        }
+                    }
 
-            } catch (Exception e) {
-                e.printStackTrace();
-                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+                    // 鏇存柊绾跨▼褰撳墠宸ヤ綔鍙烽泦鍚�
+                    ledThread.setWorkNos(workNos);
+
+                } catch (Exception e) {
+                    e.printStackTrace();
+                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+                }
+            } catch (Exception e){
+                News.error(e.getMessage());
             }
 
         }
@@ -3975,26 +4239,32 @@
      */
     public synchronized 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) {
-                    reset = false;
-                    break;
+            try{
+                // 鑾峰彇杈撻�佺嚎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) {
+                        reset = false;
+                        break;
+                    }
                 }
-            }
-            // 鑾峰彇led绾跨▼
-            LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, led.getDevpPlcId());
-            // led鏄剧ず榛樿鍐呭
-            if (reset) {
-                if (!MessageQueue.offer(SlaveType.Led, led.getId(), new Task(2, new ArrayList<>()))) {
-                    News.error("{}鍙稬ED鍛戒护涓嬪彂澶辫触锛侊紒锛乕ip锛歿}] [port锛歿}]", led.getId(), led.getIp(), led.getPort());
+                // 鑾峰彇led绾跨▼
+                LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, led.getDevpPlcId());
+                // led鏄剧ず榛樿鍐呭
+                if (reset) {
+                    if (!MessageQueue.offer(SlaveType.Led, led.getId(), new Task(2, new ArrayList<>()))) {
+                        News.error("{}鍙稬ED澶嶄綅鍛戒护涓嬪彂澶辫触锛侊紒锛乕ip锛歿}] [port锛歿}]", led.getId(), led.getIp(), led.getPort());
+                    } else {
+//                        News.info("{}鍙稬ED澶嶄綅鍛戒护涓嬪彂鎴愬姛锛侊紒锛乕ip锛歿}] [port锛歿}]", led.getId(), led.getIp(), led.getPort());
+                    }
                 }
+            } catch (Exception e){
+                News.error("LED寮傚父"+led.getId());
             }
         }
     }
@@ -4360,6 +4630,75 @@
                     break;
             }
             LocMast loc = null;
+
+            if(shallowLoc.getLocType2() == 3){ //浣庨娣风洿鎺ュ嚭搴�
+                // 鑾峰彇宸ヤ綔鍙�
+                int workNo = commonService.getWorkNo(0);
+                Date now = new Date();
+                // 淇濆瓨宸ヤ綔妗�
+                WrkMast wrkMast = new WrkMast();
+                wrkMast.setWrkNo(workNo);
+                wrkMast.setIoTime(now);
+                wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID
+                wrkMast.setIoType(101); // 鍏ュ嚭搴撶姸鎬侊細 101.鍏ㄦ澘鍑哄簱
+                wrkMast.setIoPri((double) 9999);
+                wrkMast.setCrnNo(crn.getId());
+                wrkMast.setSourceLocNo(shallowLoc.getLocNo()); // 婧愬簱浣�
+                if (shallowLoc.getCrnNo()==1){
+                    wrkMast.setStaNo(100);
+                    wrkMast.setSourceStaNo(108);
+                }else if (shallowLoc.getCrnNo()==2){
+                    wrkMast.setStaNo(100);
+                    wrkMast.setSourceStaNo(104);
+                }else {
+                    wrkMast.setStaNo(200);
+                    wrkMast.setSourceStaNo(208);
+                }
+
+
+//                wrkMast.setLocNo(loc.getLocNo()); // 鐩爣搴撲綅
+                wrkMast.setFullPlt("Y"); // 婊℃澘
+                wrkMast.setPicking("N"); // 鎷f枡
+                wrkMast.setExitMk("N"); // 閫�鍑�
+                wrkMast.setEmptyMk(shallowLoc.getLocSts().equals("D") ? "Y" : "N"); // 绌烘澘
+                wrkMast.setBarcode(shallowLoc.getBarcode()); // 鎵樼洏鐮�
+                wrkMast.setLinkMis("N");
+                wrkMast.setAppeTime(now);
+                wrkMast.setModiTime(now);
+                int res = wrkMastMapper.insert(wrkMast);
+                if (res == 0) {
+                    throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
+                }
+                // 宸ヤ綔妗f槑缁嗕繚瀛�
+                if (shallowLoc.getLocSts().equals("F")) {
+                    List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_no", shallowLoc.getLocNo()));
+                    for (LocDetl locDetl : locDetls) {
+                        WrkDetl wrkDetl = new WrkDetl();
+                        wrkDetl.sync(locDetl);
+                        wrkDetl.setWrkNo(workNo);
+                        wrkDetl.setIoTime(new Date());
+                        wrkDetl.setAnfme(locDetl.getAnfme());
+                        wrkDetl.setAppeTime(new Date());
+                        wrkDetl.setModiTime(new Date());
+                        if (!wrkDetlService.insert(wrkDetl)) {
+                            throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�");
+                        }
+                    }
+                }
+                // 淇敼婧愬簱浣嶇姸鎬�
+                if (shallowLoc.getLocSts().equals("D") || shallowLoc.getLocSts().equals("F")) {
+                    shallowLoc.setLocSts("R"); // R.鍑哄簱棰勭害
+                    shallowLoc.setModiTime(now);
+                    if (!locMastService.updateById(shallowLoc)) {
+                        throw new CoolException("鏇存柊婧愬簱浣嶇姸鎬佸け璐�");
+                    }
+                } else {
+                    throw new CoolException("婧愬簱浣嶅嚭搴撳け璐�");
+                }
+
+                return;
+            }
+
             List<LocMast> locs = locMastService.selectList(new EntityWrapper<LocMast>().eq("crn_no",crn.getId())
                                                 .eq("loc_type1",shallowLoc.getLocType1())
                                                 .eq("loc_type2",shallowLoc.getLocType2())
@@ -4395,7 +4734,8 @@
 
             if (null == loc) {
                 News.error("娣卞簱浣嶅嚭搴� --- 娴呭簱浣嶉樆濉炲紓甯革紒 寰呯Щ杞祬搴撲綅锛�" + shallowLoc.getLocNo());
-                throw new CoolException("娣卞簱浣嶅嚭搴� --- 娴呭簱浣嶉樆濉炲紓甯革紒 寰呯Щ杞祬搴撲綅锛�" + shallowLoc.getLocNo());
+                return;
+//                throw new CoolException("娣卞簱浣嶅嚭搴� --- 娴呭簱浣嶉樆濉炲紓甯革紒 寰呯Щ杞祬搴撲綅锛�" + shallowLoc.getLocNo());
             }
 
             // 鑾峰彇宸ヤ綔鍙�
@@ -4476,10 +4816,10 @@
                 SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
 
                 for (DevpSlave.Sta inSta : devp.getInSta()) {
-                    Integer sourceStaNo = inSta.getStaNo()==103 ? 104 : 204;
+                    Integer sourceStaNo = inSta.getStaNo()==103 ? 104 : inSta.getStaNo()==113 ? 104 : 204;
                     WrkMast pakout = wrkMastMapper.selectWorkingPakout(sourceStaNo);
                     switch (inSta.getStaNo()) {
-                        case 103://1F
+                        case 103://1F1
                             if (pakout != null) {
                                 if (devpThread.ioModeOf1F != IoModeType.PAKOUT_MODE) {
                                     // 鍑哄簱鍒囨崲涓�
@@ -4497,7 +4837,7 @@
                                 devpThread.ioModeOf1F = IoModeType.PAKIN_MODE;
                             }
                             break;
-                        case 203://2F
+                        case 203://1F2
                             if (pakout != null) {
                                 if (devpThread.ioModeOf2F != IoModeType.PAKOUT_MODE) {
                                     // 鍑哄簱鍒囨崲涓�
@@ -4515,6 +4855,42 @@
                                 devpThread.ioModeOf2F = IoModeType.PAKIN_MODE;
                             }
                             break;
+//                        case 113://2F1
+//                            if (pakout != null) {
+//                                if (devpThread.ioModeOf3F != IoModeType.PAKOUT_MODE) {
+//                                    // 鍑哄簱鍒囨崲涓�
+////                                    devpThread.ioModeOf2F = IoModeType.PAKOUT_BOOTING;
+////                                    WrkMast pakin = wrkMastMapper.selectWorkingPakin(inSta.getStaNo());
+////                                    if (pakin == null && !devpThread.getStation().get(inSta.getStaNo()).isLoading()
+////                                            && !devpThread.getStation().get(inSta.getStaNo()-1).isLoading()
+////                                            && devpThread.getStation().get(inSta.getStaNo()-1).getWorkNo()==0) {
+////                                        // 鍑哄簱妯″紡
+//                                    devpThread.ioModeOf3F = IoModeType.PAKOUT_MODE;
+////                                    }
+//                                }
+//                            } else {
+//                                // 鍏ュ簱妯″紡
+//                                devpThread.ioModeOf3F = IoModeType.PAKIN_MODE;
+//                            }
+//                            break;
+//                        case 213://2F2
+//                            if (pakout != null) {
+//                                if (devpThread.ioModeOf4F != IoModeType.PAKOUT_MODE) {
+//                                    // 鍑哄簱鍒囨崲涓�
+////                                    devpThread.ioModeOf2F = IoModeType.PAKOUT_BOOTING;
+////                                    WrkMast pakin = wrkMastMapper.selectWorkingPakin(inSta.getStaNo());
+////                                    if (pakin == null && !devpThread.getStation().get(inSta.getStaNo()).isLoading()
+////                                            && !devpThread.getStation().get(inSta.getStaNo()-1).isLoading()
+////                                            && devpThread.getStation().get(inSta.getStaNo()-1).getWorkNo()==0) {
+////                                        // 鍑哄簱妯″紡
+//                                    devpThread.ioModeOf4F = IoModeType.PAKOUT_MODE;
+////                                    }
+//                                }
+//                            } else {
+//                                // 鍏ュ簱妯″紡
+//                                devpThread.ioModeOf4F = IoModeType.PAKIN_MODE;
+//                            }
+//                            break;
                     }
                 }
 
@@ -4524,5 +4900,140 @@
             e.printStackTrace();
         }
     }
+    public synchronized void ioConvert2F() {
+        try {
+            // 鏍规嵁杈撻�佺嚎plc閬嶅巻
+            for (DevpSlave devp : slaveProperties.getDevp()) {
+                if (devp.getId() == 1){
+                    continue;
+                }
+                SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
+
+                for (DevpSlave.Sta inSta : devp.getInSta()) {
+                    Integer staNoEnd = inSta.getStaNo()==113 ? 114 : 214;
+                    WrkMast pakout = wrkMastMapper.selectWorkingPakoutTwoF(staNoEnd);
+                    boolean sign = true;
+                    int[] staNos = new int[3];
+
+                    switch (inSta.getStaNo()) {
+                        case 113://2F1
+                            staNos = new int[]{112,113,114};
+                            for (int staNo : staNos){
+                                StaProtocol staProtocol = devpThread.getStation().get(staNo);
+                                if (Cools.isEmpty(staProtocol)) continue;
+                                if (!staProtocol.isAutoing() || staProtocol.isLoading() || staProtocol.getWorkNo()>0){
+                                    sign = false;
+                                }
+                            }
+                            if (sign){
+                                if (pakout != null) {
+                                    if (devpThread.ioModeOf3F != IoModeType.PAKOUT_MODE) {
+
+                                        // 鍑哄簱鍒囨崲涓�
+//                                    devpThread.ioModeOf2F = IoModeType.PAKOUT_BOOTING;
+//                                    WrkMast pakin = wrkMastMapper.selectWorkingPakin(inSta.getStaNo());
+//                                    if (pakin == null && !devpThread.getStation().get(inSta.getStaNo()).isLoading()
+//                                            && !devpThread.getStation().get(inSta.getStaNo()-1).isLoading()
+//                                            && devpThread.getStation().get(inSta.getStaNo()-1).getWorkNo()==0) {
+//                                        // 鍑哄簱妯″紡
+                                        devpThread.ioModeOf3F = IoModeType.PAKOUT_MODE;
+//                                    }
+                                    }
+                                } else {
+                                    // 鍏ュ簱妯″紡
+                                    devpThread.ioModeOf3F = IoModeType.PAKIN_MODE;
+
+                                }
+                            }
+                            break;
+                        case 213://2F2
+                            staNos = new int[]{212,213,214};
+                            for (int staNo : staNos){
+                                StaProtocol staProtocol = devpThread.getStation().get(staNo);
+                                if (Cools.isEmpty(staProtocol)) continue;
+                                if (!staProtocol.isAutoing() || staProtocol.isLoading()){
+                                    sign = false;
+                                }
+                            }
+                            if (sign){
+                                if (pakout != null) {
+                                    if (devpThread.ioModeOf4F != IoModeType.PAKOUT_MODE) {
+                                        // 鍑哄簱鍒囨崲涓�
+//                                    devpThread.ioModeOf2F = IoModeType.PAKOUT_BOOTING;
+//                                    WrkMast pakin = wrkMastMapper.selectWorkingPakin(inSta.getStaNo());
+//                                    if (pakin == null && !devpThread.getStation().get(inSta.getStaNo()).isLoading()
+//                                            && !devpThread.getStation().get(inSta.getStaNo()-1).isLoading()
+//                                            && devpThread.getStation().get(inSta.getStaNo()-1).getWorkNo()==0) {
+//                                        // 鍑哄簱妯″紡
+                                        devpThread.ioModeOf4F = IoModeType.PAKOUT_MODE;
+//                                    }
+                                    }
+                                } else {
+                                    // 鍏ュ簱妯″紡
+                                    devpThread.ioModeOf4F = IoModeType.PAKIN_MODE;
+                                }
+                            }
+                            break;
+                    }
+                }
+
+            }
+
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    public synchronized void automaticallyTurnOffCharging() {
+        // 鑾峰彇褰撳墠鏃堕棿鎴�
+        long timestamp = System.currentTimeMillis();
+        Date date = new Date(timestamp);
+        TimeZone timeZone = TimeZone.getTimeZone("Asia/Shanghai");
+        java.util.Calendar calendar = java.util.Calendar.getInstance(timeZone);
+        calendar.setTime(date);
+        int hour = calendar.get(java.util.Calendar.HOUR_OF_DAY);
+        if (hour>8 && hour<18){
+            for (SteSlave ste : slaveProperties.getSte()) {
+                SteThread steThread = (SteThread) SlaveConnection.get(SlaveType.Ste, ste.getId());
+                SteProtocol steProtocol = steThread.getSteProtocol();
+                BasSte basSte = basSteService.selectById(ste.getId());
+                if (Cools.isEmpty(steProtocol, basSte)) { continue; }
+                try{
+                    // 鍦ㄧ嚎 绌洪棽   鏃犱綔涓氭爣璁�   涓嶅湪鍏呯數
+                    if (steProtocol.getMode() == 0
+                            || !steProtocol.statusType.equals(SteStatusType.IDLE)
+                            || basSte.getPakMk().equals("Y")
+                            || steProtocol.getChargeStatus() == 0
+                    ) {
+                        continue;
+                    }
+                    if (!steProtocol.isEnable()) {
+                        continue;
+                    }
+                    if (steProtocol.getCharge() > Float.parseFloat(basSte.getChargeLine())) {
+                        WrkCharge wrkCharge = wrkChargeService.selectWorking(steProtocol.getSteNo().intValue());
+                        if (wrkCharge == null) {
+                            if (steProtocol.getChargeStatus() == 1){
+                                SteCommand steCommand = new SteCommand();
+                                steCommand.setSteNo(ste.getId()); // 绌挎杞︾紪鍙�
+                                steCommand.setTaskNo(9999); // 宸ヤ綔鍙�
+                                steCommand.setTaskMode(SteTaskModeType.CLOSE_CHARGE);
+                                if (!MessageQueue.offer(SlaveType.Ste, ste.getId(), new Task(2, steCommand))) {
+                                    News.error("绌挎杞﹀懡浠や笅鍙戝け璐ワ紝绌挎杞﹀彿={}锛屼换鍔℃暟鎹�={}", ste.getId(), JSON.toJSON(steCommand));
+                                }
+                                try{
+                                    Thread.sleep(500);
+                                } catch (Exception e){
+
+                                }
+                            }
+                        }
+                    }
+                }catch (Exception e){
+                    News.error("鑷姩鍏抽棴鍏呯數鍑洪敊锛岃仈绯荤鐞嗗憳锛�"+hour+"鐐�;"+ste.getId()+"鍙峰皬杞�;");
+                }
+            }
+        }
+    }
 
 }

--
Gitblit v1.9.1