From f287ab5ee6b9938e0d48cdb62c05078bdec463d8 Mon Sep 17 00:00:00 2001
From: lsh <lsh@163.com>
Date: 星期二, 22 四月 2025 20:06:22 +0800
Subject: [PATCH] *

---
 src/main/java/com/zy/core/enums/RgvStatusType.java          |   10 
 src/main/java/com/zy/core/thread/RgvThread.java             |  271 ++++++--
 src/main/java/com/zy/core/cache/TaskProtocolCache.java      |  120 ++++
 src/main/java/com/zy/core/enums/RgvModeType.java            |   10 
 src/main/java/com/zy/core/model/RgvSlave.java               |   14 
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 1106 --------------------------------------
 src/main/resources/application-prod.yml                     |   38 -
 src/main/java/com/zy/core/MainProcess.java                  |   29 -
 src/main/java/com/zy/core/cache/RgvStatusCache.java         |   44 +
 src/main/java/com/zy/core/model/protocol/RgvProtocol.java   |   33 
 src/main/java/com/zy/core/model/protocol/TaskProtocol.java  |   33 +
 11 files changed, 433 insertions(+), 1,275 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 c0c2334..dffdfc5 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -13,7 +13,6 @@
 import com.zy.asrs.mapper.*;
 import com.zy.asrs.service.*;
 import com.zy.asrs.utils.CommandUtils;
-import com.zy.asrs.utils.RouteUtils;
 import com.zy.asrs.utils.Utils;
 import com.zy.common.service.CommonService;
 import com.zy.common.utils.HttpHandler;
@@ -24,16 +23,12 @@
 import com.zy.core.enums.*;
 import com.zy.core.model.CrnSlave;
 import com.zy.core.model.DevpSlave;
-import com.zy.core.model.RgvSlave;
 import com.zy.core.model.Task;
 import com.zy.core.model.command.CrnCommand;
-import com.zy.core.model.command.RgvCommand;
 import com.zy.core.model.protocol.CrnProtocol;
-import com.zy.core.model.protocol.RgvProtocol;
 import com.zy.core.model.protocol.StaProtocol;
 import com.zy.core.properties.SlaveProperties;
 import com.zy.core.thread.BarcodeThread;
-import com.zy.core.thread.RgvThread;
 import com.zy.core.thread.SiemensDevpThread;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -74,31 +69,21 @@
     private TaskWrkService taskWrkService;
     @Autowired
     private StaDescMapper staDescMapper;
-
     @Autowired
     private StaDescService staDescService;
-
     @Autowired
     private ApiLogService apiLogService;
     @Autowired
     private CommonService commonService;
     @Autowired
-    private BasRgvService basRgvService;
-    @Autowired
-    private WrkMastStaMapper wrkMastStaMapper;
-    @Autowired
-    private BasRgvMapMapper basRgvMapMapper;
+    private CrnController crnController;
 
     @Value("${wms.url}")
     private String wmsUrl;
     @Value("${wms.inboundTaskApplyPath}")
     private String inboundTaskApplyPath;
-    @Value("${wms.movePath}")
-    private String movePath;
     @Value("${wms.taskStatusFeedbackPath}")
     private String taskStatusFeedbackPath;
-    @Autowired
-    private CrnController crnController;
 
     @Value("${wms.rgvOpen}")
     private boolean rgvOpen;
@@ -112,10 +97,8 @@
     @Value("${constant-parameters.trackProportion}")
     private Long trackProportion;
 
-    public void generateStoreWrkFile() throws IOException, InterruptedException {
+    public void generateStoreWrkFile() {
         try {
-
-
             // 鏍规嵁杈撻�佺嚎plc閬嶅巻
             for (DevpSlave devp : slaveProperties.getDevp()) {
                 // 閬嶅巻鍏ュ簱鍙�
@@ -387,7 +370,6 @@
             TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
         }
     }
-
 
     /**
      * 鍫嗗灈鏈虹珯鍑哄簱鍒板嚭搴撶珯
@@ -1117,1092 +1099,8 @@
             if (!Cools.isEmpty(taskWrk.getTargetPoint())) {
                 taskWrk.setOriginTargetPoint(taskWrk.getTargetPoint());
             }
-
-//        } else if (param.getIoType() == 2) {
-//            taskWrk.setWrkSts(11);
-//            if (!Cools.isEmpty(param.getStartPoint())) {
-//                taskWrk.setStartPoint(Utils.getWcsLocNo(param.getStartPoint()));//璧风偣
-//                taskWrk.setOriginStartPoint(param.getStartPoint());
-//            }
-//            taskWrk.setTargetPoint(param.getTargetPoint());
-//        }else if (param.getIoType() == 3){
-//            taskWrk.setWrkSts(11);
-//            if (!Cools.isEmpty(param.getStartPoint())) {
-//                taskWrk.setStartPoint(param.getStartPoint());//璧风偣
-//                taskWrk.setOriginStartPoint(param.getStartPoint());
-//            }
         }
         return taskWrk;
-    }
-    /**
-     *  瀹屾垚灏忚溅浠诲姟
-     */
-    public synchronized void rgvCompleteWrkMastSta() {
-        try{
-            for (RgvSlave rgvSlave:slaveProperties.getRgv()) {
-                RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getId());
-                RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
-                if (rgvProtocol == null) {
-                    continue;
-                }
-                BasRgv basRgv = basRgvService.selectById(rgvSlave.getId());
-                if (basRgv == null) {
-                    log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�", rgvSlave.getId());
-                    continue;
-                }
-
-                // 鍙湁褰揜GV绛夊緟WCS纭銆佽嚜鍔�
-                if (rgvProtocol.getStatusType() == RgvStatusType.WORKING
-                        && rgvProtocol.getModeType() == RgvModeType.AUTO
-                        && ((rgvProtocol.getStatusType1()==RgvStatusType.WAITING || rgvProtocol.getStatusType2()==RgvStatusType.WAITING ) ||
-                        (rgvProtocol.getStatusType1()==RgvStatusType.FETCHWAITING || rgvProtocol.getStatusType2()==RgvStatusType.FETCHWAITING ))
-                ) {
-                    log.info("{}鍙峰皬杞︾瓑寰厀cs纭锛岀姸鎬亄}锛屽弬鏁皗}",rgvProtocol.getRgvNo(),rgvProtocol.getStatusType(),rgvProtocol);
-                    if (rgvProtocol.getTaskNo1()!=0 && (rgvProtocol.getStatusType1()==RgvStatusType.WAITING || rgvProtocol.getStatusType1()==RgvStatusType.FETCHWAITING)){
-                        if (rgvProtocol.getTaskNo1()==(short)32222){
-                            boolean rgvComplete = rgvComplete(rgvProtocol.getRgvNo());
-                            if (!rgvComplete){
-                                log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{}锛�",rgvProtocol.getRgvNo());
-                            }
-                            BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
-                            basRgvMap.setNowRoute(rgvProtocol.getRgvPosI());
-                            rgvMapUpdate(basRgvMap,basRgvMap.getStartRoute(),basRgvMap.getStartRoute());
-                            break;
-                        }
-                        WrkMastSta wrkMastSta = wrkMastStaMapper.selectByWrkNo(rgvProtocol.getTaskNo1().longValue());
-                        if (Cools.isEmpty(wrkMastSta) || wrkMastSta.getType()!=1 || wrkMastSta.getWrkSts()!=1){
-                            log.error("鏈煡鍒板皬杞︽墽琛屼换鍔℃垨鑰呮墽琛屼换鍔$姸鎬佷笉绗﹀悎锛�"+wrkMastSta);
-                            continue;
-                        }
-                       /* WrkMast wrkMast = wrkMastMapper.selectPakInStep3(wrkMastSta.getWrkNo().intValue());
-                        if (!Cools.isEmpty(wrkMast) && wrkMastSta.getWrkType()!=5){
-                            Thread.sleep(200);
-                            SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1);
-                            StaProtocol staProtocol = devpThread.getStation().get(wrkMastSta.getStaEnd());
-                            if (staProtocol == null) {
-                                continue;
-                            } else {
-                                staProtocol = staProtocol.clone();
-                            }
-                            if (!staProtocol.isAutoing() || !staProtocol.isLoading()){
-                                continue;
-                            }
-                            // 涓嬪彂绔欑偣淇℃伅
-                            staProtocol.setWorkNo(wrkMast.getWrkNo());
-                            staProtocol.setStaNo(wrkMast.getStaNo());
-                            if (!MessageQueue.offer(SlaveType.Devp, 1, new Task(2, staProtocol))) {
-                                continue;
-                            }
-                            log.error("灏忚溅浠诲姟瀹屾垚涓嬪彂杈撻�佺嚎浠诲姟锛�"+staProtocol);
-//                            try{
-//                                Thread.sleep(1000);
-//                                DevpThread devpThreadEnd = (DevpThread) SlaveConnection.get(SlaveType.Devp, 1);
-//                                StaProtocol staProtocolEnd = devpThreadEnd.getStation().get(wrkMastSta.getStaEnd());
-//                                log.error("灏忚溅浠诲姟瀹屾垚璇诲彇杈撻�佺嚎浠诲姟锛�"+staProtocolEnd);
-//                                if (staProtocolEnd.getWorkNo()==0 ){ //|| !staProtocolEnd.getWorkNo().equals(wrkMast.getWrkNo())
-//                                    staProtocolEnd.setWorkNo(wrkMast.getWrkNo());
-//                                    staProtocolEnd.setStaNo(wrkMast.getStaNo());
-//                                    if (!MessageQueue.offer(SlaveType.Devp, 1, new Task(2, staProtocolEnd))) {
-//                                        continue;
-//                                    }
-//                                    log.error("灏忚溅浠诲姟瀹屾垚涓嬪彂杈撻�佺嚎浠诲姟绗簩娆★細"+staProtocolEnd);
-//                                }
-//                            }catch (Exception e){
-//
-//                            }
-                        }*/
-                        boolean rgvComplete = rgvComplete(rgvProtocol.getRgvNo());
-                        if (!rgvComplete){
-                            log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{}锛�",rgvProtocol.getRgvNo());
-                            break;
-                        }
-                        wrkMastSta.setWrkSts(3);
-                        wrkMastStaMapper.updateById(wrkMastSta);
-                        BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
-                        basRgvMap.setNowRoute(rgvProtocol.getRgvPosI());
-                        rgvMapUpdate(basRgvMap,basRgvMap.getStartRoute(),basRgvMap.getStartRoute());
-                    }else if (rgvProtocol.getTaskNo2()!=0 && (rgvProtocol.getStatusType2()==RgvStatusType.WAITING || rgvProtocol.getStatusType2()==RgvStatusType.FETCHWAITING)){
-                        if (rgvProtocol.getTaskNo2()==(short)32222){
-                            boolean rgvComplete = rgvComplete(rgvProtocol.getRgvNo());
-                            if (!rgvComplete){
-                                log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{}锛�",rgvProtocol.getRgvNo());
-                            }
-                            BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
-                            basRgvMap.setNowRoute(rgvProtocol.getRgvPosI());
-                            rgvMapUpdate(basRgvMap,basRgvMap.getStartRoute(),basRgvMap.getStartRoute());
-                            break;
-                        }
-                        WrkMastSta wrkMastSta = wrkMastStaMapper.selectByWrkNo(rgvProtocol.getTaskNo2().longValue());
-                        if (Cools.isEmpty(wrkMastSta) || wrkMastSta.getType()!=2){
-                            log.error("鏈煡鍒板皬杞︽墽琛屼换鍔℃垨鑰呮墽琛屼换鍔$姸鎬佷笉绗﹀悎锛�"+wrkMastSta);
-                            continue;
-                        }
-                        /*WrkMast wrkMast = wrkMastMapper.selectPakInStep3(wrkMastSta.getWrkNo().intValue());
-                        if (!Cools.isEmpty(wrkMast)  && wrkMastSta.getWrkType()!=5){
-                            Thread.sleep(200);
-                            DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, 1);
-                            StaProtocol staProtocol = devpThread.getStation().get(wrkMastSta.getStaEnd());
-                            if (!staProtocol.isAutoing() || !staProtocol.isLoading()){
-                                continue;
-                            }
-                            // 涓嬪彂绔欑偣淇℃伅
-                            staProtocol.setWorkNo(wrkMast.getWrkNo());
-                            staProtocol.setStaNo(wrkMast.getStaNo());
-                            if (!MessageQueue.offer(SlaveType.Devp, 1, new Task(2, staProtocol))) {
-                                continue;
-                            }
-                            log.error("灏忚溅浠诲姟瀹屾垚涓嬪彂杈撻�佺嚎浠诲姟锛�"+staProtocol);
-//                            try{
-//                                Thread.sleep(1000);
-//                                DevpThread devpThreadEnd = (DevpThread) SlaveConnection.get(SlaveType.Devp, 1);
-//                                StaProtocol staProtocolEnd = devpThreadEnd.getStation().get(wrkMastSta.getStaEnd());
-//                                log.error("灏忚溅浠诲姟瀹屾垚璇诲彇杈撻�佺嚎浠诲姟锛�"+staProtocolEnd);
-//                                if (staProtocolEnd.getWorkNo()==0 ){ //|| !staProtocolEnd.getWorkNo().equals(wrkMast.getWrkNo())
-//                                    staProtocolEnd.setWorkNo(wrkMast.getWrkNo());
-//                                    staProtocolEnd.setStaNo(wrkMast.getStaNo());
-//                                    if (!MessageQueue.offer(SlaveType.Devp, 1, new Task(2, staProtocolEnd))) {
-//                                        continue;
-//                                    }
-//                                    log.error("灏忚溅浠诲姟瀹屾垚涓嬪彂杈撻�佺嚎浠诲姟绗簩娆★細"+staProtocolEnd);
-//                                }
-//                            }catch (Exception e){
-//
-//                            }
-                        }*/
-                        boolean rgvComplete = rgvComplete(rgvProtocol.getRgvNo());
-                        if (!rgvComplete){
-                            log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{}锛�",rgvProtocol.getRgvNo());
-                            break;
-                        }
-                        wrkMastSta.setWrkSts(3);
-                        wrkMastStaMapper.updateById(wrkMastSta);
-                        BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
-                        basRgvMap.setNowRoute(rgvProtocol.getRgvPosI());
-                        rgvMapUpdate(basRgvMap,basRgvMap.getStartRoute(),basRgvMap.getStartRoute());
-                    }else {
-                        log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{},绛夊緟wcs纭浣嗘槸娌℃湁宸ヤ綔鍙凤紒",rgvProtocol.getRgvNo());
-                    }
-                }
-            }
-        }catch (Exception e){
-            log.error("灏忚溅澶嶄綅绾跨▼鎶ラ敊锛�"+e);
-        }
-    }
-    /**
-     * 鍏ュ嚭搴�  ===>>  灏忚溅浣滀笟涓嬪彂
-     */
-    public synchronized boolean rgvIoExecute(Integer sign) {
-        boolean rgvIoExecuteSign = false;
-        try{
-            for (RgvSlave rgvSlave:slaveProperties.getRgv()) {
-                // 鑾峰彇灏忚溅淇℃伅
-                boolean signWork = false;
-                RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getId());
-                RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
-                if (rgvProtocol == null) {
-                    continue;
-                }
-                BasRgv basRgv = basRgvService.selectById(rgvSlave.getId());
-                if (basRgv == null) {
-                    log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�", rgvSlave.getId());
-                    continue;
-                }
-
-                // 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,宸ヤ綅涓�鏃犵墿//rgv鍙敤
-                if (rgvProtocol.getStatusType() == RgvStatusType.IDLE
-                        && rgvProtocol.getStatusType1() == RgvStatusType.IDLE
-                        && rgvProtocol.getStatusType2() == RgvStatusType.IDLE
-                        && rgvProtocol.getModeType() == RgvModeType.AUTO
-                        && rgvProtocol.getLoaded1()==0
-                        && rgvProtocol.getTaskNo1()==0 && rgvProtocol.getTaskNo2()==0
-                ) {
-                    switch (sign){
-                        //鎵ц灏忚溅璐х墿鎼繍浠诲姟
-                        case 1:
-                            signWork = rgvRunWrkMastFullSta(rgvSlave);
-                            break;
-                        //鎵ц灏忚溅绌烘澘鎼繍浠诲姟
-                        case 2://鏀�//鎷嗙洏
-                            signWork = rgvRunWrkMastEmptyStaPut(rgvSlave);
-                            break;
-                        case 3://婊℃斁
-                            signWork = rgvRunWrkMastEmptyStaPutFull(rgvSlave);
-                            break;
-                        case 4://鍙栧彔鐩�
-                            signWork = rgvRunWrkMastEmptyStaTake(rgvSlave);
-                            break;
-                        case 6:////鎻愬崌
-//                            signWork = qwe();
-                            break;
-                        default:
-                            break;
-                    }
-                    for (int signCount = 1;!signWork && signCount<7;signCount++){
-                        switch (signCount){
-                            case 1://鎵ц灏忚溅璐х墿鎼繍浠诲姟
-                                signWork = rgvRunWrkMastFullSta(rgvSlave);
-                                break;
-                            case 2://鏀�//鎷嗙洏
-                                signWork = rgvRunWrkMastEmptyStaPut(rgvSlave);
-                                break;
-                            case 3://婊℃斁
-                                signWork = rgvRunWrkMastEmptyStaPutFull(rgvSlave);
-                                break;
-                            case 4://鍙栧彔鐩�
-                                signWork = rgvRunWrkMastEmptyStaTake(rgvSlave);
-                                break;
-                            case 6:////鎻愬崌
-//                            signWork = rgvRunWrkMastEmptyStaPut();
-                                break;
-                            default:
-                                break;
-                        }
-                    }
-                }else {
-                    continue;
-                }
-                if (!rgvIoExecuteSign){
-                    rgvIoExecuteSign = signWork;
-                }
-            }
-//            if (!rgvIoExecuteSign){
-//                if (sign>6){
-//
-//                }
-//            }
-        }catch (Exception e){
-            log.error("RGV灏忚溅浠诲姟涓嬪彂鎶ラ敊"+e);
-        }
-        return rgvIoExecuteSign;
-    }
-
-    /**
-     * 鎵ц灏忚溅鎼繍浠诲姟
-     */
-    public synchronized boolean rgvRunWrkMastFullSta(RgvSlave rgvSlave) {
-        try{
-//            for (RgvSlave rgvSlave:slaveProperties.getRgv()) {
-            RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getId());
-            RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
-            if (rgvProtocol == null) {
-                return false;
-            }
-            BasRgv basRgv = basRgvService.selectById(rgvSlave.getId());
-            if (basRgv == null) {
-                log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�", rgvSlave.getId());
-                return false;
-            }
-
-            // 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,宸ヤ綅涓�鏃犵墿//rgv鍙敤
-            if (rgvProtocol.getStatusType() == RgvStatusType.IDLE
-                    && rgvProtocol.getStatusType1() == RgvStatusType.IDLE
-                    && rgvProtocol.getStatusType2() == RgvStatusType.IDLE
-                    && rgvProtocol.getModeType() == RgvModeType.AUTO
-                    && rgvProtocol.getLoaded1()==0
-                    && rgvProtocol.getTaskNo1()==0 && rgvProtocol.getTaskNo2()==0
-            ) {
-                BasRgvMap basRgvMap = basRgvMapMapper.selectById(basRgv.getRgvNo());
-                if (basRgvMap == null) {
-                    log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱鍦板浘涓繘琛岀淮鎶わ紒", rgvProtocol.getRgvNo());
-                    return false;
-                }
-                List<Integer> route = RouteUtils.getRoute(basRgvMap.getStartRoute(), basRgvMap.getEndRoute());
-                basRgvMap.setNowRoute(rgvProtocol.getRgvPosI()); //鏇存柊灏忚溅褰撳墠浣嶇疆绔欑偣鍙�
-                List<WrkMastSta> wrkMastStaList = wrkMastStaMapper.selectNoInterfereList(route, route);
-                for (WrkMastSta wrkMastSta : wrkMastStaList){
-                    if (wrkMastSta.getType()!=1 || wrkMastSta.getWrkType()!=3){//1:婊$増   3锛氬彇鏀�
-                        continue;
-                    }
-                    BasDevp basDevp = basDevpService.selectById(wrkMastSta.getStaEnd());
-                    if (!basDevp.getAutoing().equals("Y") || basDevp.getLoading().equals("Y") || basDevp.getWrkNo()!=0){
-                        continue;
-                    }
-                    Date date = new Date();
-
-                    SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, rgvSlave.getDevpPlcId());
-                    StaProtocol staProtocol = devpThread.getStation().get(basDevp.getDevNo());
-                    if (staProtocol == null) {
-                        log.info(date+"鍙栨斁浠诲姟涓嬪彂锛氭湭鏌ヨ鍒扮珯鐐逛俊鎭細"+wrkMastSta);
-                        continue;
-                    }
-                    if (!staProtocol.isAutoing() || staProtocol.isLoading() || staProtocol.getWorkNo() != 0){
-                        continue;
-                    }
-                    if (basDevp.getDevNo()>117 && basDevp.getDevNo()<124){
-                        if (staProtocol.isLoadingSuper()){
-                            continue;
-                        }
-                    }
-                    if (basDevp.getDevNo()>=118 && basDevp.getDevNo()<=123){
-                        if (!staProtocol.isEmptyMk()){
-                            continue;
-                        }
-                    }
-                    BasDevp basDevpS = basDevpService.selectById(wrkMastSta.getStaStart());
-                    if (!basDevpS.getAutoing().equals("Y") || !basDevpS.getLoading().equals("Y") || basDevpS.getWrkNo()!=wrkMastSta.getWrkNo().intValue()){
-                        continue;
-                    }
-                    StaProtocol staProtocols = devpThread.getStation().get(basDevpS.getDevNo());
-                    if (staProtocols == null) {
-                        log.info(date+"鍙栨斁浠诲姟涓嬪彂锛氭湭鏌ヨ鍒扮珯鐐逛俊鎭細"+wrkMastSta);
-                        continue;
-                    }
-                    if (!staProtocols.isAutoing() || !staProtocols.isLoading() || staProtocols.getWorkNo() != wrkMastSta.getWrkNo().intValue()){
-                        continue;
-                    }
-
-
-                    log.info(date+"鍙栨斁浠诲姟涓嬪彂锛氬皬杞﹀伐浣滄。锛�"+wrkMastSta);
-                    log.info(date+"鍙栨斁浠诲姟涓嬪彂锛氱洰鏍囩珯鐘舵�侊細"+basDevp);
-                    boolean sign = rgvTakeFullAll(basRgvMap.getRgvNo(), wrkMastSta);
-                    if (sign){
-                        boolean signMap = rgvMapUpdate(basRgvMap, wrkMastSta.getStaStart(), wrkMastSta.getStaEnd());
-                        if (signMap){
-                            wrkMastSta.setWrkSts(1);
-                            try{
-                                wrkMastStaMapper.updateById(wrkMastSta);
-                            }catch (Exception e){
-                                log.error("鏇存柊灏忚溅浠诲姟澶辫触");
-                            }
-                            return true;
-                        }else {
-                            log.error("3864琛岋紝璐х墿鎼繍浠诲姟锛氬伐浣滃彿{}鎵�灞炰换鍔′笅鍙戝悗鍦板浘鍚屾澶辫触",wrkMastSta.getWrkNo());
-                        }
-                    }else {
-                        log.error("宸ヤ綔鍙穥}鎵�灞炰换鍔′笅鍙戝け璐�",wrkMastSta.getWrkNo());
-                    }
-                    break;
-                }
-            }
-//            }
-        }catch (Exception e){
-            log.error("3875琛屾墽琛屽皬杞︽惉杩愪换鍔′笅鍙戝け璐�");
-            log.error("3875琛�"+e);
-        }
-        return false;
-    }
-    /**
-     * 鎵ц灏忚溅鎼繍浠诲姟//鎷嗙洏
-     */
-    public synchronized boolean rgvRunWrkMastEmptyStaPut(RgvSlave rgvSlave) {//鎷嗙洏
-        try{
-//            for (RgvSlave rgvSlave:slaveProperties.getRgv()) {
-            RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getId());
-            RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
-            if (rgvProtocol == null) {
-                return false;
-            }
-            BasRgv basRgv = basRgvService.selectById(rgvSlave.getId());
-            if (basRgv == null) {
-                log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�", rgvSlave.getId());
-                return false;
-            }
-
-            // 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,宸ヤ綅浜屾湁鐗�//rgv鍙敤//鎷嗙洏
-            if (rgvProtocol.getStatusType() == RgvStatusType.IDLE
-                    && rgvProtocol.getStatusType1() == RgvStatusType.IDLE
-                    && rgvProtocol.getStatusType2() == RgvStatusType.IDLE
-                    && rgvProtocol.getModeType() == RgvModeType.AUTO
-                    && rgvProtocol.getTaskNo1()==0 && rgvProtocol.getTaskNo2()==0
-                    && (rgvProtocol.getLoaded2()==3  || rgvProtocol.getLoaded2()==1 || rgvProtocol.getLoaded2()==4)////0 鏃犵墿锛�1 涓�灞傛棤鐗╀簩灞傛湁鐗� 锛堝彧鑳芥媶鍙狅級 锛�2涓�灞傛湁鐗╀簩灞傛棤鐗�() 锛�3  1銆�2灞傞兘鏈夌墿  4锛氾紙锛夊彧鍏佽鎷嗙洏
-            ) {
-                BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
-                if (basRgvMap == null) {
-                    log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱鍦板浘涓繘琛岀淮鎶わ紒", rgvProtocol.getRgvNo());
-                    return false;
-                }
-                basRgvMap.setNowRoute(rgvProtocol.getRgvPosI()); //鏇存柊灏忚溅褰撳墠浣嶇疆绔欑偣鍙�
-                List<Integer> route = RouteUtils.getRoute(basRgvMap.getStartRoute(), basRgvMap.getEndRoute());//鑾峰彇娲诲姩鑼冨洿
-                List<WrkMastSta> wrkMastStaList = wrkMastStaMapper.selectNoInterfereList(route, route);//鏌ヨ鍙墽琛屼换鍔�
-                for (WrkMastSta wrkMastSta : wrkMastStaList){
-                    if (wrkMastSta.getType()!=2 || wrkMastSta.getWrkType()!=2){// 2:绌烘澘  || 宸ヤ綔绫诲瀷  1:鍙栵紙鍙犵洏锛�  2锛氭媶鐩�  5锛氭弧鍙�  6锛氭弧鏀�
-                        continue;
-                    }
-                    boolean sign = false;
-                    if ( wrkMastSta.getStaEnd()!=0){//鏀�
-                        BasDevp basDevp = basDevpService.selectById(wrkMastSta.getStaEnd());
-                        if (!basDevp.getAutoing().equals("Y") || basDevp.getLoading().equals("Y") || basDevp.getWrkNo()!=0){
-                            continue;
-                        }
-                        Date date = new Date();
-
-                        SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, rgvSlave.getDevpPlcId());
-                        StaProtocol staProtocol = devpThread.getStation().get(basDevp.getDevNo());
-                        if (staProtocol == null) {
-                            log.info(date+"鎷嗙洏浠诲姟涓嬪彂锛氭湭鏌ヨ鍒扮珯鐐逛俊鎭細"+wrkMastSta);
-                            continue;
-                        }
-                        if (!staProtocol.isAutoing() || staProtocol.isLoading() || staProtocol.getWorkNo() != 0){
-                            continue;
-                        }
-                        if (basDevp.getDevNo()>117 && basDevp.getDevNo()<124){
-                            if (staProtocol.isLoadingSuper()){
-                                continue;
-                            }
-                        }
-                        if (basDevp.getDevNo()>=118 && basDevp.getDevNo()<=123){
-                            if (!staProtocol.isEmptyMk()){
-                                continue;
-                            }
-                        }
-
-                        log.info(date+"鎷嗙洏浠诲姟涓嬪彂锛氬皬杞﹀伐浣滄。锛�"+wrkMastSta);
-                        log.info(date+"鎷嗙洏浠诲姟涓嬪彂锛氱洰鏍囩珯鐘舵�侊細"+basDevp);
-                        sign = rgvPutEmpty(rgvProtocol.getRgvNo(),wrkMastSta);//鎷嗙洏
-                    }else {
-                        continue;
-                    }
-                    if (sign){
-                        boolean signMap = rgvMapUpdate(basRgvMap, basRgvMap.getStartRoute(), wrkMastSta.getStaEnd());
-                        if (signMap){
-                            wrkMastSta.setWrkSts(2);
-                            try{
-                                wrkMastStaMapper.updateById(wrkMastSta);
-                            }catch (Exception e){
-                                log.error("鏇存柊灏忚溅浠诲姟澶辫触");
-                            }
-                            return true;
-                        }else {
-                            log.error("3857琛岋紝璐х墿鎼繍浠诲姟锛氬伐浣滃彿{}鎵�灞炰换鍔′笅鍙戝悗鍦板浘鍚屾澶辫触",wrkMastSta.getWrkNo());
-                        }
-                    }else {
-                        log.error("宸ヤ綔鍙穥}鎵�灞炰换鍔′笅鍙戝け璐�",wrkMastSta.getWrkNo());
-                    }
-                    break;
-                }
-            }
-//            }
-        }catch (Exception e){
-            log.error("3933琛屾墽琛屽皬杞︽斁绌烘澘浠诲姟涓嬪彂澶辫触");
-            log.error("3933琛�"+e);
-        }
-        return false;
-    }
-
-    /**
-     * 鎵ц灏忚溅鎼繍浠诲姟
-     */
-    public synchronized boolean rgvRunWrkMastEmptyStaPutFull(RgvSlave rgvSlave) {//婊℃斁
-        try{
-//            for (RgvSlave rgvSlave:slaveProperties.getRgv()) {
-            RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getId());
-            RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
-            if (rgvProtocol == null) {
-                return false;
-            }
-            BasRgv basRgv = basRgvService.selectById(rgvSlave.getId());
-            if (basRgv == null) {
-                log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�", rgvSlave.getId());
-                return false;
-            }
-
-            // 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,宸ヤ綅浜屾湁鐗�//rgv鍙敤
-            if (rgvProtocol.getStatusType() == RgvStatusType.IDLE
-                    && rgvProtocol.getStatusType1() == RgvStatusType.IDLE
-                    && rgvProtocol.getStatusType2() == RgvStatusType.IDLE
-                    && rgvProtocol.getModeType() == RgvModeType.AUTO
-                    && rgvProtocol.getTaskNo1()==0 && rgvProtocol.getTaskNo2()==0
-                    &&  (rgvProtocol.getLoaded2()==2  || rgvProtocol.getLoaded2()==3 ) ////0 鏃犵墿锛�1 涓�灞傛棤鐗╀簩灞傛湁鐗�  锛�2涓�灞傛湁鐗╀簩灞傛棤鐗� 锛堝彧鑳芥弧鏀撅級锛�3  1銆�2灞傞兘鏈夌墿  4锛氾紙锛夊彧鍏佽鎷嗙洏
-            ) {
-                BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
-                if (basRgvMap == null) {
-                    log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱鍦板浘涓繘琛岀淮鎶わ紒", rgvProtocol.getRgvNo());
-                    return false;
-                }
-                basRgvMap.setNowRoute(rgvProtocol.getRgvPosI()); //鏇存柊灏忚溅褰撳墠浣嶇疆绔欑偣鍙�
-                List<Integer> route = RouteUtils.getRoute(basRgvMap.getStartRoute(), basRgvMap.getEndRoute());//鑾峰彇娲诲姩鑼冨洿
-                List<WrkMastSta> wrkMastStaList = wrkMastStaMapper.selectNoInterfereList(route, route);//鏌ヨ鍙墽琛屼换鍔�
-                for (WrkMastSta wrkMastSta : wrkMastStaList){
-                    if (wrkMastSta.getType()!=2 || wrkMastSta.getWrkType()!=6){// 2:绌烘澘  || 宸ヤ綔绫诲瀷  1:鍙栵紙鍙犵洏锛�  2锛氭媶鐩�  5锛氭弧鍙�  6锛氭弧鏀�  7:鎻愬崌
-                        continue;
-                    }
-                    boolean sign = false;
-                    if ( wrkMastSta.getStaEnd()!=0){//婊℃斁
-                        BasDevp basDevp = basDevpService.selectById(wrkMastSta.getStaEnd());
-                        if (!basDevp.getAutoing().equals("Y") || basDevp.getLoading().equals("Y") || basDevp.getWrkNo()!=0){
-                            continue;
-                        }
-                        Date date = new Date();
-
-                        SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, rgvSlave.getDevpPlcId());
-                        StaProtocol staProtocol = devpThread.getStation().get(basDevp.getDevNo());
-                        if (staProtocol == null) {
-                            log.info(date+"婊℃斁浠诲姟涓嬪彂锛氭湭鏌ヨ鍒扮珯鐐逛俊鎭細"+wrkMastSta);
-                            continue;
-                        }
-                        if (!staProtocol.isAutoing() || staProtocol.isLoading() || staProtocol.getWorkNo() != 0){
-                            continue;
-                        }
-                        if (basDevp.getDevNo()>117 && basDevp.getDevNo()<124){
-                            if (staProtocol.isLoadingSuper()){
-                                continue;
-                            }
-                        }
-                        if (basDevp.getDevNo()>=118 && basDevp.getDevNo()<=123){
-                            if (!staProtocol.isEmptyMk()){
-                                continue;
-                            }
-                        }
-
-                        log.info(date+"婊℃斁浠诲姟涓嬪彂锛氬皬杞﹀伐浣滄。锛�"+wrkMastSta);
-                        log.info(date+"婊℃斁浠诲姟涓嬪彂锛氱洰鏍囩珯鐘舵�侊細"+basDevp);
-                        sign = rgvPutEmptyFull(rgvProtocol.getRgvNo(),wrkMastSta);
-                    }else {
-                        continue;
-                    }
-                    if (sign){
-                        boolean signMap = rgvMapUpdate(basRgvMap, basRgvMap.getStartRoute(), wrkMastSta.getStaEnd());
-                        if (signMap){
-                            wrkMastSta.setWrkSts(2);
-                            try{
-                                wrkMastStaMapper.updateById(wrkMastSta);
-                            }catch (Exception e){
-                                log.error("鏇存柊灏忚溅浠诲姟澶辫触");
-                            }
-                            return true;
-                        }else {
-                            log.error("3857琛岋紝璐х墿鎼繍浠诲姟锛氬伐浣滃彿{}鎵�灞炰换鍔′笅鍙戝悗鍦板浘鍚屾澶辫触",wrkMastSta.getWrkNo());
-                        }
-                    }else {
-                        log.error("宸ヤ綔鍙穥}鎵�灞炰换鍔′笅鍙戝け璐�",wrkMastSta.getWrkNo());
-                    }
-                    break;
-                }
-            }
-//            }
-        }catch (Exception e){
-            log.error("3933琛屾墽琛屽皬杞︽斁绌烘澘浠诲姟涓嬪彂澶辫触");
-            log.error("3933琛�"+e);
-        }
-        return false;
-    }
-
-    public synchronized boolean rgvRunWrkMastEmptyStaTake(RgvSlave rgvSlave) {//鍙犵洏
-        try{
-//            for (RgvSlave rgvSlave:slaveProperties.getRgv()) {
-            RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getId());
-            RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
-            if (rgvProtocol == null) {
-                return false;
-            }
-            BasRgv basRgv = basRgvService.selectById(rgvSlave.getId());
-            if (basRgv == null) {
-                log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�", rgvSlave.getId());
-                return false;
-            }
-
-            // 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,宸ヤ綅浜屾棤鐗�//rgv鍙敤
-            if (rgvProtocol.getStatusType() == RgvStatusType.IDLE
-                    && rgvProtocol.getStatusType1() == RgvStatusType.IDLE
-                    && rgvProtocol.getStatusType2() == RgvStatusType.IDLE
-                    && rgvProtocol.getModeType() == RgvModeType.AUTO
-                    && rgvProtocol.getTaskNo1()==0 && rgvProtocol.getTaskNo2()==0
-                    &&  (rgvProtocol.getLoaded2()==0  || rgvProtocol.getLoaded2()==1 ) //鐜板満淇敼锛氬彔鐩樻満锛�////0 鏃犵墿锛�1 涓�灞傛棤鐗╀簩灞傛湁鐗╋紙鍙兘鎷嗗彔锛�   锛�2涓�灞傛湁鐗╀簩灞傛棤鐗� 锛堝彧鑳芥弧鏀撅級锛�3  1銆�2灞傞兘鏈夌墿  4锛氾紙锛夊彧鍏佽鎷嗙洏
-            ) {
-                BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
-                if (basRgvMap == null) {
-                    log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱鍦板浘涓繘琛岀淮鎶わ紒", rgvProtocol.getRgvNo());
-                    return false;
-                }
-                List<Integer> route = RouteUtils.getRoute(basRgvMap.getStartRoute(), basRgvMap.getEndRoute());
-                basRgvMap.setNowRoute(rgvProtocol.getRgvPosI()); //鏇存柊灏忚溅褰撳墠浣嶇疆绔欑偣鍙�
-                List<WrkMastSta> wrkMastStaList = wrkMastStaMapper.selectNoInterfereList(route, route);
-                for (WrkMastSta wrkMastSta : wrkMastStaList){
-                    if (wrkMastSta.getType()!=2 || wrkMastSta.getWrkType()!=1){// 2:绌烘澘  || 宸ヤ綔绫诲瀷  1:鍙栵紙鍙犵洏锛�  2锛氭媶鐩�  5锛氭弧鍙�  6锛氭弧鏀�
-                        continue;
-                    }
-                    boolean sign = false;
-                    if ( wrkMastSta.getStaStart()!=0){//鍙�
-                        BasDevp basDevp = basDevpService.selectById(wrkMastSta.getStaStart());
-                        if (!basDevp.getAutoing().equals("Y") || !basDevp.getLoading().equals("Y")){
-                            continue;
-                        }
-                        Date date = new Date();
-
-                        SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, rgvSlave.getDevpPlcId());
-                        StaProtocol staProtocol = devpThread.getStation().get(basDevp.getDevNo());
-                        if (staProtocol == null) {
-                            log.info(date+"鍙犵洏浠诲姟涓嬪彂锛氭湭鏌ヨ鍒扮珯鐐逛俊鎭細"+wrkMastSta);
-                            continue;
-                        }
-                        if (!staProtocol.isAutoing() || !staProtocol.isLoading()){
-                            continue;
-                        }
-                        if (basDevp.getDevNo()>=118 && basDevp.getDevNo()<=123){
-                            if (!staProtocol.isEmptyMk()){
-                                continue;
-                            }
-                        }
-
-                        log.info(date+"鍙犵洏浠诲姟涓嬪彂锛氬皬杞﹀伐浣滄。锛�"+wrkMastSta);
-                        log.info(date+"鍙犵洏浠诲姟涓嬪彂锛氱洰鏍囩珯鐘舵�侊細"+basDevp);
-                        sign = rgvTakeEmpty(rgvProtocol.getRgvNo(),wrkMastSta);//鍙犵洏
-                    }else {
-                        continue;
-                    }
-                    if (sign){
-                        boolean signMap = rgvMapUpdate(basRgvMap, wrkMastSta.getStaStart(), basRgvMap.getStartRoute());
-                        if (signMap){
-                            wrkMastSta.setWrkSts(1);
-                            try{
-                                wrkMastStaMapper.updateById(wrkMastSta);
-                            }catch (Exception e){
-                                log.error("鏇存柊灏忚溅浠诲姟澶辫触");
-                            }
-                            return true;
-                        }else {
-                            log.error("3879琛岋紝璐х墿鎼繍浠诲姟锛氬伐浣滃彿{}鎵�灞炰换鍔′笅鍙戝悗鍦板浘鍚屾澶辫触",wrkMastSta.getWrkNo());
-                        }
-                    }else {
-                        log.error("宸ヤ綔鍙穥}鎵�灞炰换鍔′笅鍙戝け璐�",wrkMastSta.getWrkNo());
-                    }
-                    break;
-                }
-            }
-//            }
-        }catch (Exception e){
-            log.error("3989琛屾墽琛屽皬杞﹀彇绌烘澘浠诲姟涓嬪彂澶辫触");
-            log.error("3989琛�"+e);
-        }
-        return false;
-    }
-
-    /*
-     * 鏈変换鍔′絾鏈墽琛�  姝ゆ椂闇�瑕佽皟鏁村皬杞︿綅缃�
-     * */
-    public synchronized void rgvRunWrkMastEmptyStaAvoidance() {
-        try{
-//            Integer integer = wrkMastStaMapper.selectAllWrkStsCount(null,0);//鏌ヨ鐘舵�佷负0鐨勪换鍔�
-//            if (integer==0){
-//                return;
-//            }
-            WrkMastSta wrkMastSta = wrkMastStaMapper.selectAllWrkStsCountWrkMastSta(null, 0);
-            if (Cools.isEmpty(wrkMastSta)){
-                return;
-            }
-            boolean signRgv = true;
-            boolean signRgv1 = true;
-            boolean signRgv2 = true;
-            for (RgvSlave rgvSlave:slaveProperties.getRgv()) {
-                RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getId());
-                RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
-                if (rgvProtocol == null) {
-                    continue;
-                }
-                BasRgv basRgv = basRgvService.selectById(rgvSlave.getId());
-                if (basRgv == null) {
-                    log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�", rgvSlave.getId());
-                    continue;
-                }
-
-                // 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,宸ヤ綅涓�鏃犵墿//rgv鍙敤
-                if (rgvProtocol.getStatusType() == RgvStatusType.IDLE
-                        && rgvProtocol.getModeType() == RgvModeType.AUTO
-                        && rgvProtocol.getLoaded1()==0  //鐜板満淇敼锛氬彔鐩樻満锛屼笉婊¢兘绠楁棤鐗╋紝鎬庝箞鍒ゆ柇闇�瑕佽窡鐢垫帶瀵规帴
-                        && rgvProtocol.getTaskNo1()==0
-                        && rgvProtocol.getTaskNo2()==0
-                        && rgvProtocol.getStatusType1() == RgvStatusType.IDLE
-                        && rgvProtocol.getStatusType2() == RgvStatusType.IDLE
-                ) {
-                    if (rgvProtocol.getRgvNo()!=1){
-                        if (!rgvProtocol.getRgvPosI().equals(120) && !rgvProtocol.getRgvPosI().equals(110)){
-                            continue;
-                        }
-                        rgvAvoidanceXY(rgvProtocol.getRgvNo());
-//                        return;
-                        continue;
-                    }
-                    if (!rgvProtocol.getRgvPosI().equals(110) && !rgvProtocol.getRgvPosI().equals(108) &&  !rgvProtocol.getRgvPosI().equals(119)){
-                        continue;
-                    }
-                    Integer count108Y = wrkMastStaMapper.selectAllWrkCount108Y();
-                    if (count108Y!=0){
-                        continue;
-                    }
-//                    Integer count108 = wrkMastStaMapper.selectAllWrkCount108();
-//                    if (count108!=0){
-//                        continue;
-//                    }
-                    rgvAvoidanceXY(rgvProtocol.getRgvNo());
-                    continue;
-//                    BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
-//                    Integer fallMerge = RouteUtils.RouteIndexFarMas(basRgvMap.getRgvNo(), basRgvMap.getEndRoute()); //鑾峰彇鍚堝苟骞叉秹椤�
-//                    List<Integer> route = RouteUtils.getRoute(basRgvMap.getStartRoute(),fallMerge);
-//                    List<WrkMastSta> wrkMastStaList = wrkMastStaMapper.selectNoInterfereList(route ,route);
-//                    if (!wrkMastStaList.isEmpty()){
-//                        log.info("灏忚溅瀛樺湪鍙墽琛屼换鍔★紝璺宠繃閬胯锛侊紒4214");
-//                        return;
-//                    }
-//                    if (rgvProtocol.getRgvPosI().equals(basRgvMap.getStartRoute())){
-////                    if (!RouteUtils.RgvRunStaSign(rgvProtocol.getRgvPosI(),RouteUtils.RouteIndexFarMas(rgvProtocol.getRgvNo(),rgvRunSta[rgvProtocol.getRgvNo()-1]),rgvProtocol.getRgvNo())){
-////                    if (!RouteUtils.RgvRunStaSign(rgvProtocol.getRgvPosI(),rgvRunSta[rgvProtocol.getRgvNo()-1],rgvProtocol.getRgvNo())){
-//                        if (rgvProtocol.getRgvNo()==1){
-//                            signRgv1 = false;
-//                        }else {
-//                            signRgv2 = false;
-//                        }
-//                    }
-//                    if (rgvProtocol.getRgvNo()==1 && (rgvProtocol.getRgvPosI().equals(101) || rgvProtocol.getRgvPosI().equals(102) )){
-//                        signRgv1 = false;
-//                        continue;
-//                    } else if (rgvProtocol.getRgvNo()==2 && (rgvProtocol.getRgvPosI().equals(116) || rgvProtocol.getRgvPosI().equals(117) ) ){
-//                        signRgv2 = false;
-//                        continue;
-//                    }
-                }else {
-                    signRgv = false;
-                    break;
-                }
-            }
-//            if (signRgv &&  (signRgv1 || signRgv2)){
-//                for (RgvSlave rgvSlave:slaveProperties.getRgv()) {
-//                    RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getId());
-//                    RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
-//                    if (rgvProtocol == null) {
-//                        continue;
-//                    }
-//
-//                    // 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,宸ヤ綅涓�鏃犵墿//rgv鍙敤
-//                    if (rgvProtocol.getStatusType() == RgvStatusType.IDLE
-//                            && rgvProtocol.getModeType() == RgvModeType.AUTO
-//                            && rgvProtocol.getLoaded1()==0  //鐜板満淇敼锛氬彔鐩樻満锛屼笉婊¢兘绠楁棤鐗╋紝鎬庝箞鍒ゆ柇闇�瑕佽窡鐢垫帶瀵规帴
-//                            && rgvProtocol.getTaskNo1()==0
-//                            && rgvProtocol.getTaskNo2()==0
-//                            && rgvProtocol.getStatusType1() == RgvStatusType.IDLE
-//                            && rgvProtocol.getStatusType2() == RgvStatusType.IDLE
-//                    ) {
-//                        if (rgvProtocol.getRgvNo()==1 && (rgvProtocol.getRgvPosI().equals(101) || rgvProtocol.getRgvPosI().equals(102) )){
-//                            continue;
-//                        } else if (rgvProtocol.getRgvNo()==2 && (rgvProtocol.getRgvPosI().equals(116) || rgvProtocol.getRgvPosI().equals(117) ) ){
-//                            continue;
-//                        }
-//                        BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
-//                        rgvAvoidanceXY(rgvProtocol.getRgvNo());
-//                        rgvMapUpdate(basRgvMap,basRgvMap.getStartRoute(),basRgvMap.getStartRoute());
-//
-//                    }
-//                }
-//            }
-        }catch (Exception e){
-            log.error("4109琛屾墽琛屽皬杞﹀垵濮嬪寲浠诲姟涓嬪彂澶辫触");
-            log.error("4109琛�"+e);
-        }
-    }
-
-    /*
-     * 鍒锋柊鍦板浘鏁版嵁
-     * */
-    public synchronized void refreshRgvMap() {
-        try{
-            for (RgvSlave rgvSlave:slaveProperties.getRgv()) {
-                RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getId());
-                RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
-                if (rgvProtocol == null) {
-                    continue;
-                }
-                BasRgv basRgv = basRgvService.selectById(rgvSlave.getId());
-                if (basRgv == null) {
-                    log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�", rgvSlave.getId());
-                    continue;
-                }
-
-                // 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,宸ヤ綅涓�鏃犵墿//rgv鍙敤
-                if (rgvProtocol.getStatusType() == RgvStatusType.IDLE
-                        && rgvProtocol.getModeType() == RgvModeType.AUTO
-                        && rgvProtocol.getLoaded1()==0  //鐜板満淇敼锛氬彔鐩樻満锛屼笉婊¢兘绠楁棤鐗╋紝鎬庝箞鍒ゆ柇闇�瑕佽窡鐢垫帶瀵规帴
-                        && rgvProtocol.getTaskNo1()==0
-                        && rgvProtocol.getTaskNo2()==0
-                ) {
-                    BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvSlave.getId());
-                    basRgvMap.setNowRoute(rgvProtocol.getRgvPosI());
-                    rgvMapUpdate(basRgvMap,basRgvMap.getStartRoute(),basRgvMap.getStartRoute());
-                }
-            }
-        }catch (Exception e){
-            log.error("4109琛屾墽琛屽皬杞﹀垵濮嬪寲浠诲姟涓嬪彂澶辫触");
-            log.error("4109琛�"+e);
-        }
-    }
-
-    /*
-     * 灏忚溅XY绉诲姩  閬胯
-     * */
-    public synchronized boolean rgvAvoidanceXY(Integer rgvId){
-        if (rgvId==1){
-            try{
-                BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvId);
-                //  鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
-                RgvCommand rgvCommand = new RgvCommand();
-                rgvCommand.setRgvNo(rgvId); // RGV缂栧彿
-                rgvCommand.setAckFinish1((short) 0);  // 宸ヤ綅1浠诲姟瀹屾垚纭浣�
-                rgvCommand.setTaskNo1((short)32222); // 宸ヤ綅1宸ヤ綔鍙�
-                rgvCommand.setTaskMode1(RgvTaskModeType.X_MOVE); // 宸ヤ綅1浠诲姟妯″紡:  鍥炲師鐐�
-                //basRgvMap.getLockStartRoute().shortValue()
-                rgvCommand.setSourceStaNo1( (short)104);
-                rgvCommand.setCommand((short) 1);   //宸ヤ綅1浠诲姟纭
-                if (!MessageQueue.offer(SlaveType.Rgv, rgvId, new Task(4, rgvCommand))) {
-                    //step=2,宸ヤ綅1銆�2鍐欎换鍔★紱   step=4锛屽伐浣�1鍐欎换鍔★紱     step=5锛屽伐浣�2鍐欎换鍔�   step=9锛屽洖鍘熺偣 9999浠诲姟鍙�
-                    log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgvId, JSON.toJSON(rgvCommand));
-                    return false;
-                } else {
-                    return true;
-                }
-            }catch (Exception e){
-                return false;
-
-            }
-        }else {
-            try{
-                BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvId);
-                //  鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
-                RgvCommand rgvCommand = new RgvCommand();
-                rgvCommand.setRgvNo(rgvId); // RGV缂栧彿
-                rgvCommand.setAckFinish2((short) 0);  // 宸ヤ綅2浠诲姟瀹屾垚纭浣�
-                rgvCommand.setTaskNo2((short)32222); // 宸ヤ綅2宸ヤ綔鍙�
-                rgvCommand.setTaskMode2(RgvTaskModeType.X_MOVE); // 宸ヤ綅2浠诲姟妯″紡:  鍥炲師鐐�
-                rgvCommand.setSourceStaNo2((short)114);
-                rgvCommand.setCommand((short) 2);   //宸ヤ綅2浠诲姟纭
-                if (!MessageQueue.offer(SlaveType.Rgv, rgvId, new Task(5, rgvCommand))) {
-                    //step=2,宸ヤ綅1銆�2鍐欎换鍔★紱   step=4锛屽伐浣�1鍐欎换鍔★紱     step=5锛屽伐浣�2鍐欎换鍔�   step=9锛屽洖鍘熺偣 9999浠诲姟鍙�
-                    log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgvId, JSON.toJSON(rgvCommand));
-                    return false;
-                } else {
-                    return true;
-                }
-            }catch (Exception e){
-                return false;
-
-            }
-        }
-    }
-
-
-    /*
-     * 灏忚溅鍙栬揣鑷冲伐浣嶄换鍔�
-     * */
-    public synchronized boolean rgvTakeFullAll(Integer rgvId,WrkMastSta wrkMastSta){
-        try{
-            //  鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
-            RgvCommand rgvCommand = new RgvCommand();
-            rgvCommand.setRgvNo(rgvId); // RGV缂栧彿
-            rgvCommand.setAckFinish1((short) 0);  // 宸ヤ綅1浠诲姟瀹屾垚纭浣�
-            rgvCommand.setTaskNo1(wrkMastSta.getWrkNo().shortValue()); // 宸ヤ綅1宸ヤ綔鍙�
-            rgvCommand.setTaskMode1(RgvTaskModeType.FETCH_PUT); // 宸ヤ綅1浠诲姟妯″紡:  鍙栨斁璐�
-            rgvCommand.setSourceStaNo1(wrkMastSta.getStaStart().shortValue());   //宸ヤ綅1璧风偣
-            rgvCommand.setDestinationStaNo1(wrkMastSta.getStaEnd().shortValue());   //宸ヤ綅1鐩爣绔欑偣
-            rgvCommand.setCommand((short) 1);   //宸ヤ綅1浠诲姟纭
-            if (!MessageQueue.offer(SlaveType.Rgv, rgvId, new Task(4, rgvCommand))) {
-                //step=2,宸ヤ綅1銆�2鍐欎换鍔★紱   step=4锛屽伐浣�1鍐欎换鍔★紱     step=5锛屽伐浣�2鍐欎换鍔�
-                log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgvId, JSON.toJSON(rgvCommand));
-                return false;
-            } else {
-                return true;
-            }
-        }catch (Exception e){
-            return false;
-        }
-    }
-
-    /*
-     * 灏忚溅鍙栬揣鑷冲伐浣嶄换鍔�
-     * */
-    public synchronized boolean rgvTakeFull(Integer rgvId,WrkMastSta wrkMastSta){
-        try{
-            //  鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
-            RgvCommand rgvCommand = new RgvCommand();
-            rgvCommand.setRgvNo(rgvId); // RGV缂栧彿
-            rgvCommand.setAckFinish1((short) 0);  // 宸ヤ綅1浠诲姟瀹屾垚纭浣�
-            rgvCommand.setTaskNo1(wrkMastSta.getWrkNo().shortValue()); // 宸ヤ綅1宸ヤ綔鍙�
-            rgvCommand.setTaskMode1(RgvTaskModeType.FETCH); // 宸ヤ綅1浠诲姟妯″紡:  鍙栬揣
-            rgvCommand.setSourceStaNo1(wrkMastSta.getStaStart().shortValue());   //宸ヤ綅1璧风偣
-            rgvCommand.setCommand((short) 1);   //宸ヤ綅1浠诲姟纭
-            if (!MessageQueue.offer(SlaveType.Rgv, rgvId, new Task(4, rgvCommand))) {
-                //step=2,宸ヤ綅1銆�2鍐欎换鍔★紱   step=4锛屽伐浣�1鍐欎换鍔★紱     step=5锛屽伐浣�2鍐欎换鍔�
-                log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgvId, JSON.toJSON(rgvCommand));
-                return false;
-            } else {
-                return true;
-            }
-        }catch (Exception e){
-            return false;
-        }
-    }
-
-    /*
-     * 灏忚溅鏀捐揣鑷宠緭閫佺嚎浠诲姟
-     * */
-    public synchronized boolean rgvPutFull(Integer rgvId,WrkMastSta wrkMastSta){
-        try{
-            //  鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
-            RgvCommand rgvCommand = new RgvCommand();
-            rgvCommand.setRgvNo(rgvId); // RGV缂栧彿
-            rgvCommand.setAckFinish1((short) 0);  // 宸ヤ綅1浠诲姟瀹屾垚纭浣�
-            rgvCommand.setTaskNo1(wrkMastSta.getWrkNo().shortValue()); // 宸ヤ綅1宸ヤ綔鍙�
-            rgvCommand.setTaskMode1(RgvTaskModeType.PUT); // 宸ヤ綅1浠诲姟妯″紡:  鏀捐揣
-            rgvCommand.setDestinationStaNo1(wrkMastSta.getStaEnd().shortValue());   //宸ヤ綅1鐩爣绔欑偣
-            rgvCommand.setCommand((short) 1);   //宸ヤ綅1浠诲姟纭
-            if (!MessageQueue.offer(SlaveType.Rgv, rgvId, new Task(4, rgvCommand))) {
-                //step=2,宸ヤ綅1銆�2鍐欎换鍔★紱   step=4锛屽伐浣�1鍐欎换鍔★紱     step=5锛屽伐浣�2鍐欎换鍔�
-                log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgvId, JSON.toJSON(rgvCommand));
-                return false;
-            } else {
-                return true;
-            }
-        }catch (Exception e){
-            return false;
-        }
-    }
-
-    /*
-     * 灏忚溅鍙栫┖鏉胯嚦宸ヤ綅浠诲姟  鍙犵洏
-     * */
-    public synchronized boolean rgvTakeEmpty(Integer rgvId,WrkMastSta wrkMastSta){
-        try{
-            //  鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
-            RgvCommand rgvCommand = new RgvCommand();
-            rgvCommand.setRgvNo(rgvId); // RGV缂栧彿
-            rgvCommand.setAckFinish2((short) 0);  // 宸ヤ綅2浠诲姟瀹屾垚纭浣�
-            rgvCommand.setTaskNo2(wrkMastSta.getWrkNo().shortValue()); // 宸ヤ綅2宸ヤ綔鍙�
-            rgvCommand.setTaskMode2(RgvTaskModeType.FETCH); // 宸ヤ綅2浠诲姟妯″紡:  鍙栬揣
-            rgvCommand.setSourceStaNo2(wrkMastSta.getStaStart().shortValue());   //宸ヤ綅2璧风偣
-            rgvCommand.setCommand((short) 2);   //宸ヤ綅2浠诲姟纭
-            if (!MessageQueue.offer(SlaveType.Rgv, rgvId, new Task(5, rgvCommand))) {
-                //step=2,宸ヤ綅1銆�2鍐欎换鍔★紱   step=4锛屽伐浣�1鍐欎换鍔★紱     step=5锛屽伐浣�2鍐欎换鍔�
-                log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgvId, JSON.toJSON(rgvCommand));
-                return false;
-            } else {
-                return true;
-            }
-        }catch (Exception e){
-            return false;
-        }
-    }
-
-    /*
-     * 灏忚溅鏀剧┖鏉胯嚦杈撻�佺嚎浠诲姟   //鎷嗙洏
-     * */
-    public synchronized boolean rgvPutEmpty(Integer rgvId,WrkMastSta wrkMastSta){
-        try{
-            //  鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
-            RgvCommand rgvCommand = new RgvCommand();
-            rgvCommand.setRgvNo(rgvId); // RGV缂栧彿
-            rgvCommand.setAckFinish2((short) 0);  // 宸ヤ綅2浠诲姟瀹屾垚纭浣�
-            rgvCommand.setTaskNo2(wrkMastSta.getWrkNo().shortValue()); // 宸ヤ綅2宸ヤ綔鍙�
-            rgvCommand.setTaskMode2(RgvTaskModeType.PUT); // 宸ヤ綅2浠诲姟妯″紡:  鏀捐揣
-            rgvCommand.setDestinationStaNo2(wrkMastSta.getStaEnd().shortValue());   //宸ヤ綅2鐩爣绔欑偣
-            rgvCommand.setCommand((short) 2);   //宸ヤ綅2浠诲姟纭
-            if (!MessageQueue.offer(SlaveType.Rgv, rgvId, new Task(5, rgvCommand))) {
-                //step=2,宸ヤ綅1銆�2鍐欎换鍔★紱   step=4锛屽伐浣�1鍐欎换鍔★紱     step=5锛屽伐浣�2鍐欎换鍔�
-                log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgvId, JSON.toJSON(rgvCommand));
-                return false;
-            } else {
-                return true;
-            }
-        }catch (Exception e){
-            return false;
-        }
-    }
-
-    /*
-     * 灏忚溅鍙栫┖鏉胯嚦宸ヤ綅浠诲姟  婊″彇
-     * */
-    public synchronized boolean rgvTakeEmptyFull(Integer rgvId,WrkMastSta wrkMastSta){
-        try{
-            //  鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
-            RgvCommand rgvCommand = new RgvCommand();
-            rgvCommand.setRgvNo(rgvId); // RGV缂栧彿
-            rgvCommand.setAckFinish2((short) 0);  // 宸ヤ綅2浠诲姟瀹屾垚纭浣�
-            rgvCommand.setTaskNo2(wrkMastSta.getWrkNo().shortValue()); // 宸ヤ綅2宸ヤ綔鍙�
-            rgvCommand.setTaskMode2(RgvTaskModeType.FETCH_5); // 宸ヤ綅2浠诲姟妯″紡:  婊″彇
-            rgvCommand.setSourceStaNo2(wrkMastSta.getStaStart().shortValue());   //宸ヤ綅2璧风偣
-            rgvCommand.setCommand((short) 2);   //宸ヤ綅2浠诲姟纭
-            if (!MessageQueue.offer(SlaveType.Rgv, rgvId, new Task(5, rgvCommand))) {
-                //step=2,宸ヤ綅1銆�2鍐欎换鍔★紱   step=4锛屽伐浣�1鍐欎换鍔★紱     step=5锛屽伐浣�2鍐欎换鍔�
-                log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgvId, JSON.toJSON(rgvCommand));
-                return false;
-            } else {
-                return true;
-            }
-        }catch (Exception e){
-            return false;
-        }
-    }
-
-    /*
-     * 灏忚溅鏀剧┖鏉胯嚦杈撻�佺嚎浠诲姟   //婊℃斁
-     * */
-    public synchronized boolean rgvPutEmptyFull(Integer rgvId,WrkMastSta wrkMastSta){
-        try{
-            //  鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
-            RgvCommand rgvCommand = new RgvCommand();
-            rgvCommand.setRgvNo(rgvId); // RGV缂栧彿
-            rgvCommand.setAckFinish2((short) 0);  // 宸ヤ綅2浠诲姟瀹屾垚纭浣�
-            rgvCommand.setTaskNo2(wrkMastSta.getWrkNo().shortValue()); // 宸ヤ綅2宸ヤ綔鍙�
-            rgvCommand.setTaskMode2(RgvTaskModeType.PUT_6); // 宸ヤ綅2浠诲姟妯″紡:  婊℃斁
-            rgvCommand.setDestinationStaNo2(wrkMastSta.getStaEnd().shortValue());   //宸ヤ綅2鐩爣绔欑偣
-            rgvCommand.setCommand((short) 2);   //宸ヤ綅2浠诲姟纭
-            if (!MessageQueue.offer(SlaveType.Rgv, rgvId, new Task(5, rgvCommand))) {
-                //step=2,宸ヤ綅1銆�2鍐欎换鍔★紱   step=4锛屽伐浣�1鍐欎换鍔★紱     step=5锛屽伐浣�2鍐欎换鍔�
-                log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgvId, JSON.toJSON(rgvCommand));
-                return false;
-            } else {
-                return true;
-            }
-        }catch (Exception e){
-            return false;
-        }
-    }
-
-    /*
-     * 灏忚溅澶嶄綅
-     * */
-    public synchronized boolean rgvComplete(Integer rgvId){
-        try{
-            //  鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
-            if (!MessageQueue.offer(SlaveType.Rgv, rgvId, new Task(3, new RgvCommand()))) {
-                //step=2,宸ヤ綅1銆�2鍐欎换鍔★紱   step=4锛屽伐浣�1鍐欎换鍔★紱     step=5锛屽伐浣�2鍐欎换鍔�
-                log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}",rgvId);
-                return false;
-            } else {
-                log.info("RGV鍛戒护涓嬪彂鎴愬姛锛孯GV鍙�={}",rgvId);
-                return true;
-            }
-        }catch (Exception e){
-            log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}銆傚紓甯革細"+e,rgvId);
-            return false;
-        }
-    }
-
-    /*
-     * 灏忚溅鍦板浘鏇存柊  鏇存柊閿�
-     * */
-    public synchronized boolean rgvMapUpdate(BasRgvMap basRgvMapCurrent,Integer staStart,Integer staEnd){
-        if (rgvOpen){
-            return true;
-        }
-
-//        List<Integer> integers = RouteUtils.RouteMapCurrentFar(basRgvMapCurrent.getNowRoute(),staStart,staEnd, basRgvMapCurrent.getLockStartRoute());
-        //鏇存柊褰撳墠灏忚溅閿�
-        try{
-            Integer farCurrentStaNo = RouteUtils.RouteIndexFarMas(basRgvMapCurrent.getNowRoute(), staStart, staEnd, basRgvMapCurrent.getLockStartRoute());//鑾峰彇鏈�杩滅珯鐐�
-//            Integer farCurrentStaNo = RouteUtils.RouteIndexFarMas(staEnd, staStart, staEnd, basRgvMapCurrent.getLockStartRoute());//鑾峰彇鏈�杩滅珯鐐�
-            Integer fallMerge = RouteUtils.RouteIndexFarMas(basRgvMapCurrent.getRgvNo(), farCurrentStaNo); //鑾峰彇鍚堝苟骞叉秹椤�
-            basRgvMapCurrent.setLockEndRoute(fallMerge);
-            basRgvMapMapper.updateById(basRgvMapCurrent);
-
-            //鏇存柊鍙︿竴鍙板皬杞﹀湴鍥�
-            Integer rgvNoOther = basRgvMapCurrent.getRgvNoOther();
-            BasRgvMap basRgvMapOther = basRgvMapMapper.selectById(rgvNoOther);
-            List<Integer> integers = RouteUtils.RouteMapCurrentFar(fallMerge, basRgvMapCurrent.getLockStartRoute());
-            Integer lockEndRoute = RouteUtils.RouteMapOtherFarStnNo(integers, basRgvMapCurrent.getLockStartRoute());//鍙︿竴鍙板皬杞﹀彲娲诲姩鏈�杩滀綅缃�
-            Integer lockEndRouteL = RouteUtils.RouteIndexFarMasL(rgvNoOther, lockEndRoute);//鍙︿竴鍙板皬杞﹀彲娲诲姩鏈�杩滀綅缃�
-            basRgvMapOther.setEndRoute(lockEndRouteL);
-            basRgvMapMapper.updateById(basRgvMapOther);
-            return true;
-        }catch (Exception e){
-            log.error("灏忚溅鍦板浘鏇存柊鍑洪敊锛�");
-            return false;
-        }
     }
 
 }
diff --git a/src/main/java/com/zy/core/MainProcess.java b/src/main/java/com/zy/core/MainProcess.java
index 227e183..ca69fe5 100644
--- a/src/main/java/com/zy/core/MainProcess.java
+++ b/src/main/java/com/zy/core/MainProcess.java
@@ -5,11 +5,9 @@
 import lombok.Data;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Component;
 
 import javax.annotation.PreDestroy;
-import java.util.ArrayList;
 
 /**
  * WCS涓绘祦绋�
@@ -24,9 +22,6 @@
     private MainServiceImpl mainService;
     // 鎵�灞炵嚎绋�
     private Thread thread;
-    // 棰戠巼
-    private int i = 0;
-    private int k = 0;
 
     /**
      * =====>>  寮�濮嬪伐浣�
@@ -44,8 +39,6 @@
                         continue;
                     }
 
-                    // 婕旂ず
-//                    mainService.crnDemoOfLocMove1();
                     // 鍏ュ簱  ===>> 鍏ュ簱绔欏埌鍫嗗灈鏈虹珯锛屾牴鎹潯鐮佹壂鎻忕敓鎴愬叆搴撳伐浣滄。
                     mainService.generateStoreWrkFile(); // 缁勬墭
                     // 鍑哄簱  ===>>  鍫嗗灈鏈哄嚭搴撶珯鍒板嚭搴撶珯
@@ -57,28 +50,6 @@
 
                     // 鍫嗗灈鏈哄紓甯镐俊鎭褰�
                     mainService.recCrnErr();
-
-
-                    i++;
-                    k++;
-                    if (i<7) {
-                        // RGV  ===>>  灏忚溅浠诲姟浣滀笟涓嬪彂
-                        try{
-                            boolean rgvIoExecuteSign = mainService.rgvIoExecute(i);
-                            if (rgvIoExecuteSign){
-                                k = 0;
-                            } else if (k>7){
-                                k = 0;
-                                mainService.rgvRunWrkMastEmptyStaAvoidance();//閬胯
-                            }
-                        }catch (Exception e){
-                            log.error("RGV  ===>>  灏忚溅浠诲姟浣滀笟涓嬪彂寮傚父"+e);
-                        }
-                    }else {
-                        i = 0;
-                    }
-                    //瀹屾垚灏忚溅浠诲姟
-                    mainService.rgvCompleteWrkMastSta();
 
                 } catch (Exception e) {
                     e.printStackTrace();
diff --git a/src/main/java/com/zy/core/cache/RgvStatusCache.java b/src/main/java/com/zy/core/cache/RgvStatusCache.java
new file mode 100644
index 0000000..73a8cb5
--- /dev/null
+++ b/src/main/java/com/zy/core/cache/RgvStatusCache.java
@@ -0,0 +1,44 @@
+package com.zy.core.cache;
+
+import com.zy.core.model.protocol.RgvProtocol;
+
+import java.util.concurrent.ConcurrentHashMap;
+
+/**
+ * Created by IX on 2025/02/21
+ */
+public class RgvStatusCache {
+    // 鏈湴缂撳瓨锛岄敭涓� currentPosition锛屽�间负 DeviceStatus
+    private static final ConcurrentHashMap<Integer, RgvProtocol> cache = new ConcurrentHashMap<>();
+
+    /**
+     * 鏇存柊璁惧鐘舵��
+     */
+    public static void updateRgvStatus(RgvProtocol status) {
+        try {
+            cache.put(status.getRgvNo(), status);
+        } finally {
+        }
+    }
+
+    /**
+     * 鑾峰彇璁惧鐘舵��
+     */
+    public static RgvProtocol getRgvStatus(Integer RgvNo) {
+        try {
+            return cache.get(RgvNo);
+        } finally {
+        }
+    }
+
+    /**
+     * 鑾峰彇鎵�鏈夎澶囩姸鎬�
+     */
+    public static ConcurrentHashMap<Integer, RgvProtocol> getAllRgvStatus() {
+        try {
+            return new ConcurrentHashMap<>(cache); // 杩斿洖鍓湰
+        } finally {
+        }
+    }
+
+}
diff --git a/src/main/java/com/zy/core/cache/TaskProtocolCache.java b/src/main/java/com/zy/core/cache/TaskProtocolCache.java
new file mode 100644
index 0000000..e17f307
--- /dev/null
+++ b/src/main/java/com/zy/core/cache/TaskProtocolCache.java
@@ -0,0 +1,120 @@
+package com.zy.core.cache;
+
+import com.zy.core.model.protocol.TaskProtocol;
+import lombok.extern.slf4j.Slf4j;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.locks.ReentrantReadWriteLock;
+
+/**
+ * Created by IX on 2025/02/21
+ */
+@Slf4j
+public class TaskProtocolCache {
+    // 鏈湴缂撳瓨锛岄敭涓� taskNo锛屽�间负 TaskProtocol
+    private final ConcurrentHashMap<Long, TaskProtocol> cache = new ConcurrentHashMap<>();
+
+    // 璇诲啓閿侊紝纭繚绾跨▼瀹夊叏
+//    private final ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
+
+    /**
+     * 鏇存柊璁惧鐘舵��
+     */
+    public void updateTaskProtocol(TaskProtocol status) {
+        cache.put(status.getTaskNo(), status);
+    }
+
+    /**
+     * 鍒犻櫎浠诲姟缂撳瓨
+     */
+    public TaskProtocol removeTaskProtocol(String taskNo) {
+//        lock.readLock().lock(); // 鍔犺閿�
+        try {
+            return cache.remove(taskNo);
+        } finally {
+//            lock.readLock().unlock(); // 閲婃斁璇婚攣
+        }
+    }
+
+    /**
+     * 鑾峰彇浠诲姟缂撳瓨
+     */
+    public TaskProtocol getTaskProtocol(String taskNo) {
+//        lock.readLock().lock(); // 鍔犺閿�
+        try {
+            return cache.get(taskNo);
+        } finally {
+//            lock.readLock().unlock(); // 閲婃斁璇婚攣
+        }
+    }
+
+    /**
+     * 鑾峰彇鎵�鏈変换鍔�
+     */
+    public ConcurrentHashMap<Long, TaskProtocol> getAllTaskProtocol() {
+//        lock.readLock().lock(); // 鍔犺閿�
+        try {
+            return new ConcurrentHashMap<>(cache); // 杩斿洖鍓湰
+        } finally {
+//            lock.readLock().unlock(); // 閲婃斁璇婚攣
+        }
+    }
+
+    /**
+     * 鑾峰彇鎵�鏈夊彇浠诲姟
+     */
+    public List<TaskProtocol> getAllTakeTaskProtocol() {
+//        lock.readLock().lock(); // 鍔犺閿�
+        try {
+            List<TaskProtocol> allTakeTaskProtocol = new ArrayList<>();
+            for (TaskProtocol task : cache.values()) {
+                if (task.getTaskStatus()==1) {
+                    allTakeTaskProtocol.add(task);
+                }
+            }
+            return allTakeTaskProtocol; // 杩斿洖鍓湰
+        } finally {
+//            lock.readLock().unlock(); // 閲婃斁璇婚攣
+        }
+    }
+
+    /**
+     * 鑾峰彇鎵�鏈夊彇浠诲姟
+     */
+    public List<TaskProtocol> getAllPutTaskProtocol() {
+//        lock.readLock().lock(); // 鍔犺閿�
+        try {
+            List<TaskProtocol> allPutTaskProtocol = new ArrayList<>();
+            for (TaskProtocol task : cache.values()) {
+                if (task.getTaskStatus()==2) {
+                    allPutTaskProtocol.add(task);
+                }
+            }
+            return allPutTaskProtocol; // 杩斿洖鍓湰
+        } finally {
+//            lock.readLock().unlock(); // 閲婃斁璇婚攣
+        }
+    }
+
+    /**
+     * 鑾峰彇鎵�鏈夊彇浠诲姟
+     */
+    public List<TaskProtocol> getAllWalkTaskProtocol() {
+//        lock.readLock().lock(); // 鍔犺閿�
+        try {
+            List<TaskProtocol> allWalkTaskProtocol = new ArrayList<>();
+            for (TaskProtocol task : cache.values()) {
+                if (task.getTaskStatus()==0) {
+                    allWalkTaskProtocol.add(task);
+                }
+            }
+            return allWalkTaskProtocol; // 杩斿洖鍓湰
+        } finally {
+//            lock.readLock().unlock(); // 閲婃斁璇婚攣
+        }
+    }
+
+}
diff --git a/src/main/java/com/zy/core/enums/RgvModeType.java b/src/main/java/com/zy/core/enums/RgvModeType.java
index f1dbe1e..ec6fcb3 100644
--- a/src/main/java/com/zy/core/enums/RgvModeType.java
+++ b/src/main/java/com/zy/core/enums/RgvModeType.java
@@ -7,7 +7,7 @@
     HAND(1, "鎵嬪姩"),
     HALF_AUTO(2, "鍗婅嚜鍔�"),
     AUTO(3, "鑷姩"),
-    AUTO2(100, "鍏跺畠"),
+    OTHER(100, "鍏跺畠"),
     ;
 
     public Integer id;
@@ -19,25 +19,25 @@
 
     public static RgvModeType get(Short id) {
         if (null == id) {
-            return null;
+            return OTHER;
         }
         for (RgvModeType type : RgvModeType.values()) {
             if (type.id.equals(id.intValue())) {
                 return type;
             }
         }
-        return null;
+        return OTHER;
     }
 
     public static RgvModeType get(RgvModeType type) {
         if (null == type) {
-            return null;
+            return OTHER;
         }
         for (RgvModeType rgvModeType : RgvModeType.values()) {
             if (rgvModeType == type) {
                 return rgvModeType;
             }
         }
-        return null;
+        return OTHER;
     }
 }
diff --git a/src/main/java/com/zy/core/enums/RgvStatusType.java b/src/main/java/com/zy/core/enums/RgvStatusType.java
index 5361565..6ef70b2 100644
--- a/src/main/java/com/zy/core/enums/RgvStatusType.java
+++ b/src/main/java/com/zy/core/enums/RgvStatusType.java
@@ -11,7 +11,7 @@
     WAITING(90, "浠诲姟瀹屾垚绛夊緟WCS纭"),
     FETCHWAITING(91, "鍙栬揣浠诲姟瀹屾垚绛夊緟WCS纭"),
     SOS99(99, "鎶ヨ99"),
-    SOS100(100, "鍏跺畠100")
+    OTHER(100, "鍏跺畠100")
     ;
 
     public Integer id;
@@ -23,25 +23,25 @@
 
     public static RgvStatusType get(Short id) {
         if (null == id) {
-            return null;
+            return OTHER;
         }
         for (RgvStatusType type : RgvStatusType.values()) {
             if (type.id.equals(id.intValue())) {
                 return type;
             }
         }
-        return NONE;
+        return OTHER;
     }
 
     public static RgvStatusType get(RgvStatusType type) {
         if (null == type) {
-            return null;
+            return OTHER;
         }
         for (RgvStatusType rgvStatusType : RgvStatusType.values()) {
             if (rgvStatusType == type) {
                 return rgvStatusType;
             }
         }
-        return null;
+        return OTHER;
     }
 }
diff --git a/src/main/java/com/zy/core/model/RgvSlave.java b/src/main/java/com/zy/core/model/RgvSlave.java
index f16c22d..b354f8e 100644
--- a/src/main/java/com/zy/core/model/RgvSlave.java
+++ b/src/main/java/com/zy/core/model/RgvSlave.java
@@ -22,22 +22,10 @@
 
     private Boolean demo;
 
-    private Integer devpPlcId;
+    private Integer otherId;
 
     // RGV鍏ュ簱婧愮珯鐐�
     private List<RgvStn> rgvInSStn = new ArrayList<>();
-
-    // RGV鍑哄簱婧愮珯鐐�
-    private List<RgvStn> rgvOutSStn = new ArrayList<>();
-
-    // RGV鍙犵洏
-    private List<RgvStn> rgvEmptyInSStn = new ArrayList<>();
-
-    // RGV绌烘澘鍏ュ簱
-    private List<RgvStn> rgvEmptyOutSStn = new ArrayList<>();
-
-    // RGV鍑哄簱鐩爣绔欑偣
-    private List<RgvStn> rgvDestStn = new ArrayList<>();
 
     @Data
     public static class RgvStn {
diff --git a/src/main/java/com/zy/core/model/protocol/RgvProtocol.java b/src/main/java/com/zy/core/model/protocol/RgvProtocol.java
index 6e317ff..902050f 100644
--- a/src/main/java/com/zy/core/model/protocol/RgvProtocol.java
+++ b/src/main/java/com/zy/core/model/protocol/RgvProtocol.java
@@ -18,9 +18,9 @@
      * 2 = 鑷姩妯″紡
      * 3 = 鐢佃剳妯″紡
      */
-    public Short mode;
+    public Short mode = -1;
 
-    public RgvModeType modeType;
+    public RgvModeType modeType = RgvModeType.NONE;
 
     /**
      * RGV褰撳墠鐘舵��
@@ -28,12 +28,12 @@
      * 1锛氫綔涓氫腑
      * 2锛氭姤璀�
      */
-    public Short status;
+    public Short status = -1;
 
     /**
      * 鐘舵�佹灇涓�
      */
-    public RgvStatusType statusType;
+    public RgvStatusType statusType = RgvStatusType.NONE;
 
     /**
      * 浠诲姟鍙�
@@ -41,14 +41,14 @@
     public Short taskNo = 0;
 
     /**
-     * 宸ヤ綅1鏈夌墿
+     * 鏈夌墿
      */
     public Short loaded;//0 鏃犵墿锛�1 鏈夌墿
 
     /**
      * RGV褰撳墠浣嶇疆
      */
-    public Long RgvPos;
+    public Long RgvPos = 0L;
 
     /**
      * 璧拌鍦ㄥ畾浣�
@@ -76,6 +76,21 @@
      * 绱璧拌鏃堕暱h
      */
     public Float xDuration;
+
+    /**
+     * 鏄惁閬胯
+     */
+    public Short Avoid;//0\1\2
+
+    /**
+     * 閬胯鐩殑鍦�
+     */
+    public Short AvoidingTheDestination;
+
+    /**
+     * 鏄惁鍚敤
+     */
+    public boolean statusEnable;//0\1\2
 
     public void setMode(Short mode) {
         this.mode = mode;
@@ -115,12 +130,6 @@
 
     public void setxDuration(Short xDuration) {
         this.xDuration = Float.valueOf(xDuration);
-    }
-
-    public Integer getRgvPosI(){
-        //闇�瑕佹牴鎹幇鍦烘敼閫�  鏍规嵁璇诲埌鐨勫�艰幏鍙栧搴旂珯鐐逛綅缃�
-        if (RgvPos==null) return 0;
-        return RgvPos.intValue();
     }
 
 }
diff --git a/src/main/java/com/zy/core/model/protocol/TaskProtocol.java b/src/main/java/com/zy/core/model/protocol/TaskProtocol.java
new file mode 100644
index 0000000..1e36720
--- /dev/null
+++ b/src/main/java/com/zy/core/model/protocol/TaskProtocol.java
@@ -0,0 +1,33 @@
+package com.zy.core.model.protocol;
+
+import lombok.Data;
+
+/**
+ * Created by IX on 2025/02/21
+ */
+@Data
+public class TaskProtocol {
+    private volatile Long taskNo; // 浠诲姟鍙凤紙涓诲睘鎬э級
+    private volatile Long targetPosition = 0L; // 鐩爣浣嶇疆
+    private volatile Long currentPosition = 0L; // 褰撳墠浣嶇疆
+
+    private volatile int isRunning = 0; // 杩愯鐘舵��  0锛氬垵濮�  1锛氱瓑寰呮墽琛�  2锛氭墽琛屼腑 3锛氭墽琛屼腑鏂� 4锛氬畬缁�
+
+    private volatile int taskStatus = 0; //浣滀笟妯″紡  0锛氳璧�  1锛氬彇  2锛氭斁
+
+    public TaskProtocol(){}
+
+    public TaskProtocol(Long taskNo, Long targetPosition, Long currentPosition, int isRunning, int taskStatus) {
+        this.taskNo = taskNo;
+        this.targetPosition = targetPosition;
+        this.currentPosition = currentPosition;
+        this.isRunning = isRunning;
+        this.taskStatus = taskStatus;
+    }
+
+    public TaskProtocol(TaskProtocol taskProtocol) {
+        this.taskNo = taskProtocol.getTaskNo();
+        this.targetPosition = taskProtocol.getTargetPosition();
+        this.taskStatus = taskProtocol.getTaskStatus();
+    }
+}
diff --git a/src/main/java/com/zy/core/thread/RgvThread.java b/src/main/java/com/zy/core/thread/RgvThread.java
index 886278b..620c6e5 100644
--- a/src/main/java/com/zy/core/thread/RgvThread.java
+++ b/src/main/java/com/zy/core/thread/RgvThread.java
@@ -5,6 +5,7 @@
 import HslCommunication.Profinet.Siemens.SiemensPLCS;
 import HslCommunication.Profinet.Siemens.SiemensS7Net;
 import com.alibaba.fastjson.JSON;
+import com.core.common.Cools;
 import com.core.common.DateUtils;
 import com.core.common.SpringUtils;
 import com.zy.asrs.entity.BasRgv;
@@ -15,6 +16,9 @@
 import com.zy.core.ThreadHandler;
 import com.zy.core.cache.MessageQueue;
 import com.zy.core.cache.OutputQueue;
+import com.zy.core.cache.RgvStatusCache;
+import com.zy.core.cache.TaskProtocolCache;
+import com.zy.core.enums.RgvModeType;
 import com.zy.core.enums.RgvStatusType;
 import com.zy.core.enums.RgvTaskModeType;
 import com.zy.core.enums.SlaveType;
@@ -22,11 +26,14 @@
 import com.zy.core.model.Task;
 import com.zy.core.model.command.RgvCommand;
 import com.zy.core.model.protocol.RgvProtocol;
+import com.zy.core.model.protocol.TaskProtocol;
 import lombok.Data;
 import lombok.extern.slf4j.Slf4j;
 
 import java.text.MessageFormat;
 import java.util.Date;
+import java.util.List;
+import java.util.concurrent.ConcurrentHashMap;
 
 /**
  * RGV绾跨▼
@@ -38,7 +45,9 @@
 
     private SiemensS7Net siemensNet;
     private RgvSlave slave;
-    private RgvProtocol rgvProtocol;
+//    private RgvProtocol rgvProtocol;
+    private TaskProtocolCache taskProtocolCache = new TaskProtocolCache();
+
     /**
      * 宸ヤ綅1澶嶄綅淇″彿
      */
@@ -55,46 +64,135 @@
     @Override
     @SuppressWarnings("InfiniteLoopStatement")
     public void run() {
-        this.connect();
+        boolean connect = this.connect();
+        if (connect){
+
+            // 鍚姩璇绘暟鎹嚎绋�
+            new Thread(this::readStatusRgv).start();
+
+            // 鍚姩浠诲姟涓嬪彂绾跨▼
+            new Thread(this::taskTakeIssued).start();
+
+            new Thread(this::taskPutIssued).start();
+
+            new Thread(this::taskWalkIssued).start();
+        }
+    }
+
+    private void readStatusRgv(){
         while (true) {
             try {
-                int step = 1;
-                Task task = MessageQueue.poll(SlaveType.Rgv, slave.getId());
-                if (task != null) {
-                    step = task.getStep();
-                }
-                switch (step) {
-                    // 璇绘暟鎹�
-                    case 1:
-                        readStatus();
-                        break;
-                    // 宸ヤ綅1銆�2鍐欏叆鏁版嵁
-                    case 2:
-                        write((RgvCommand) task.getData());
-                        break;
-                    // 澶嶄綅
-                    case 3:
-                        RgvCommand command = (RgvCommand) task.getData();
-                        if (null == command) {
-                            command = new RgvCommand();
-                        }
-                        command.setRgvNo(slave.getId()); // RGV缂栧彿
-                        command.setTaskNo((short) 0); // 宸ヤ綔鍙�
-                        command.setAckFinish((short) 1);  // 浠诲姟瀹屾垚纭浣�
-                        command.setTaskMode(RgvTaskModeType.NONE); // 浠诲姟妯″紡
-                        command.setDestinationStaNo(0L);     // 鐩爣绔�
-                        command.setCommand((short)0);
-                        write(command);
-                        break;
-                    default:
-                        break;
-                }
-                Thread.sleep(500);
+                Thread.sleep(100);
+
+                readStatus();
+
             } catch (Exception e) {
-                log.error("RGV绾跨▼寮傚父锛侊紒锛�"+e.getMessage());
+                log.error("RGV鏁版嵁璇诲彇绾跨▼寮傚父锛侊紒锛�"+e.getMessage());
+                initRgv();
 //                e.printStackTrace();
             }
 
+        }
+
+    }
+
+    /**
+     * 浠诲姟涓嬪彂
+     */
+    private void taskTakeIssued() {
+        while (true) {
+            try {
+                // 浼戠湢 1 绉�
+                Thread.sleep(100);
+                if (!deviceDetection()){
+                    continue;
+                }
+                RgvProtocol rgvProtocol = RgvStatusCache.getRgvStatus(slave.getId());
+                if (rgvProtocol == null) {
+                    initRgv();
+                    rgvProtocol = RgvStatusCache.getRgvStatus(slave.getId());
+                }
+                if (rgvProtocol.getAvoid() == 0 || !rgvProtocol.getLoaded().equals((short) 0)) {
+                    continue;
+                }
+                List<TaskProtocol> allTakeTaskProtocol = taskProtocolCache.getAllTakeTaskProtocol();
+                for(TaskProtocol taskProtocol: allTakeTaskProtocol){
+                    if (taskProtocol.getTaskStatus() == 1){//鍑嗗涓嬪彂
+
+
+
+
+
+
+
+
+                        TaskProtocol issued = new TaskProtocol(taskProtocol);
+                        write(issued);
+                        taskProtocol.setIsRunning(taskProtocol.getIsRunning() +1);
+                        taskProtocolCache.updateTaskProtocol(taskProtocol);
+                        break;
+                    }
+                }
+
+
+            } catch (Exception e) {
+                log.error("RGV鍙栬揣浠诲姟涓嬪彂绾跨▼寮傚父锛侊紒锛�"+e.getMessage());
+//                e.printStackTrace();
+            }
+        }
+    }
+
+    public boolean deviceDetection(){
+        RgvProtocol rgvProtocol = RgvStatusCache.getRgvStatus(slave.getId());
+        if (rgvProtocol == null) {
+            return false;
+        }
+        if (!rgvProtocol.getModeType().equals(RgvModeType.AUTO) || rgvProtocol.getRgvPos().equals(0L)
+                || !rgvProtocol.getStatusType().equals(RgvStatusType.IDLE)) {
+            return false;
+        }
+        RgvProtocol rgvProtocolOther = RgvStatusCache.getRgvStatus(slave.getOtherId());
+        if (rgvProtocolOther == null) {
+            return false;
+        }
+        if (rgvProtocolOther.statusEnable){
+            if (!rgvProtocolOther.getModeType().equals(RgvModeType.AUTO) || rgvProtocolOther.getRgvPos().equals(0L)) {
+                return false;
+            }
+        }
+        return true;
+    }
+
+    /**
+     * 浠诲姟涓嬪彂
+     */
+    private void taskPutIssued() {
+        while (true) {
+            try {
+                // 浼戠湢 1 绉�
+                Thread.sleep(100);
+
+            } catch (Exception e) {
+                log.error("RGV鏀捐揣浠诲姟涓嬪彂绾跨▼寮傚父锛侊紒锛�"+e.getMessage());
+//                e.printStackTrace();
+            }
+        }
+    }
+
+    /**
+     * 浠诲姟涓嬪彂
+     */
+    private void taskWalkIssued() {
+        while (true) {
+            try {
+                // 浼戠湢 1 绉�
+                Thread.sleep(100);
+
+
+            } catch (Exception e) {
+                log.error("RGV琛岃蛋浠诲姟涓嬪彂绾跨▼寮傚父锛侊紒锛�"+e.getMessage());
+//                e.printStackTrace();
+            }
         }
     }
 
@@ -102,8 +200,10 @@
      * 鍒濆鍖朢GV鐘舵��
      */
     private void initRgv() {
-        if (null == rgvProtocol) {
+        RgvProtocol rgvProtocol = RgvStatusCache.getRgvStatus(slave.getId());
+        if (rgvProtocol == null) {
             rgvProtocol = new RgvProtocol();
+            rgvProtocol.setRgvNo(slave.getId());
         }
         rgvProtocol.setMode((short) -1);
         rgvProtocol.setStatus((short)-1);
@@ -113,6 +213,15 @@
         rgvProtocol.setxSpeed((short) 0);
         rgvProtocol.setxDistance((short) 0);
         rgvProtocol.setxDuration((short) 0);
+        BasRgvService basRgvService = SpringUtils.getBean(BasRgvService.class);
+        BasRgv rgv = basRgvService.selectById(slave.getId());
+        if (!Cools.isEmpty(rgv)){
+            rgvProtocol.setStatusEnable(rgv.getStatus() == 1);
+        } else {
+            rgvProtocol.setStatusEnable(false);
+        }
+        RgvStatusCache.updateRgvStatus(rgvProtocol);
+
     }
 
     @Override
@@ -142,7 +251,9 @@
         try {
             OperateResultExOne<byte[]> result = siemensNet.Read("DB101.0", (short) 34);
             if (result.IsSuccess) {
-                if (null == rgvProtocol) {
+                // 鏋勫缓璁惧鐘舵�佸璞�
+                RgvProtocol rgvProtocol = RgvStatusCache.getRgvStatus(slave.getId());
+                if (rgvProtocol == null) {
                     rgvProtocol = new RgvProtocol();
                     rgvProtocol.setRgvNo(slave.getId());
                 }
@@ -155,37 +266,49 @@
 //                rgvProtocol.setxDuration(siemensNet.getByteTransform().TransInt16(result.Content, 48));
 
                 OutputQueue.RGV.offer(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛",DateUtils.convert(new Date()), slave.getId()));
-                // 宸ヤ綅1澶嶄綅淇″彿
-                if (rgvProtocol.getStatusType().equals(RgvStatusType.WAITING)
-                        || rgvProtocol.getStatusType().equals(RgvStatusType.FETCHWAITING)) {
-                    if (resetFlag1) {
-                        RgvCommand rgvCommand = new RgvCommand();
-                        rgvCommand.setAckFinish1((short)1);
-                        if (write(rgvCommand)) {
-                            resetFlag1 = false;
-                        }
-                    }
-                }
+//                // 宸ヤ綅1澶嶄綅淇″彿
+//                if (rgvProtocol.getStatusType().equals(RgvStatusType.WAITING)
+//                        || rgvProtocol.getStatusType().equals(RgvStatusType.FETCHWAITING)) {
+//                    if (resetFlag1) {
+//                        RgvCommand rgvCommand = new RgvCommand();
+//                        rgvCommand.setAckFinish1((short)1);
+//                        if (write(rgvCommand)) {
+//                            resetFlag1 = false;
+//                        }
+//                    }
+//                }
 
                 try {
                     // 鏍规嵁瀹炴椂淇℃伅鏇存柊鏁版嵁搴�
                     BasRgvService basRgvService = SpringUtils.getBean(BasRgvService.class);
-                    BasRgv basRgv = new BasRgv();
+                    BasRgv basRgv = basRgvService.selectById(slave.getId());
+                    if (!Cools.isEmpty(basRgv)){
+                        rgvProtocol.setStatusEnable(basRgv.getStatus() == 1);
+                    } else {
+                        rgvProtocol.setStatusEnable(false);
+                    }
+//                    BasRgv basRgv = new BasRgv();
                     basRgv.setRgvNo(slave.getId());
                     basRgv.setRgvSts((int)rgvProtocol.getMode());
                     if (!basRgvService.updateById(rgvProtocol.toSqlModel(basRgv))){
                         log.error("RGV plc鏁版嵁搴撴洿鏂板け璐� ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot());
                     }
-                } catch (Exception ignore){}
+                } catch (Exception ignore){
+
+                }
+
+
+                // 鏇存柊缂撳瓨
+                RgvStatusCache.updateRgvStatus(rgvProtocol);
 
             } else {
                 initRgv();
-                OutputQueue.RGV.offer(MessageFormat.format("銆恵0}銆戣鍙朢GV plc鐘舵�佷俊鎭け璐� ===>> [id:{1}] [ip:{2}] [port:{3}] [rack:{4}] [slot:{5}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot()));
+//                OutputQueue.RGV.offer(MessageFormat.format("銆恵0}銆戣鍙朢GV plc鐘舵�佷俊鎭け璐� ===>> [id:{1}] [ip:{2}] [port:{3}] [rack:{4}] [slot:{5}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot()));
                 log.error("璇诲彇RGV plc鐘舵�佷俊鎭け璐� ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot());
             }
         } catch (Exception e) {
-            e.printStackTrace();
-            OutputQueue.RGV.offer(MessageFormat.format("銆恵0}銆戣鍙朢GV plc鐘舵�佷俊鎭け璐� ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort()));
+//            e.printStackTrace();
+//            OutputQueue.RGV.offer(MessageFormat.format("銆恵0}銆戣鍙朢GV plc鐘舵�佷俊鎭け璐� ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort()));
             log.error("璇诲彇RGV plc鐘舵�佷俊鎭け璐� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
             initRgv();
         }
@@ -194,40 +317,40 @@
     /**
      * 鍐欏叆鏁版嵁
      */
-    private boolean write(RgvCommand command) throws InterruptedException {
-        if (null == command) {
+    private boolean write(TaskProtocol taskProtocol) throws InterruptedException {
+        if (null == taskProtocol) {
             log.error("RGV鍐欏叆鍛戒护涓虹┖");
             return false;
         }
 //        convertRow(command);
-        command.setRgvNo(slave.getId());
-        short[] array = new short[11];
-        array[0] = command.getAckFinish1();
-        array[1] = command.getTaskNo();
-        array[2] = command.getTaskMode();
+//        taskProtocol.setRgvNo(slave.getId());
+        Long[] array = new Long[11];
+//        array[0] = taskProtocol.getAckFinish1();
+        array[1] = taskProtocol.getTaskNo();
+//        array[2] = taskProtocol.getTaskMode();
 //        array[4] = command.getDestinationStaNo();
-        array[10] = command.getCommand();
-        OperateResult result = siemensNet.Write("DB100.0", array);
+//        array[10] = taskProtocol.getCommand();
+        OperateResult result = siemensNet.Write("DB100.0", taskProtocol.getTaskNo());
 
-        if (command.getAckFinish1() == 0) {
-            short commandFinish = 3;  //宸ヤ綅1銆�2浠诲姟鍚屾椂鍐欏叆
-            Thread.sleep(100L);
-            result = siemensNet.Write("DB100.20", commandFinish);
-        }
+//        if (taskProtocol.getAckFinish1() == 0) {
+//            short commandFinish = 3;  //宸ヤ綅1銆�2浠诲姟鍚屾椂鍐欏叆
+//            Thread.sleep(100L);
+//            result = siemensNet.Write("DB100.20", commandFinish);
+//        }
 
         try {
             // 鏃ュ織璁板綍
             BasRgvOptService bean = SpringUtils.getBean(BasRgvOptService.class);
             BasRgvOpt basRgvOpt = new BasRgvOpt(
-                    command.getTaskNo().intValue(),
-                    command.getTaskNo().intValue(),
-                    command.getRgvNo(),
+                    taskProtocol.getTaskNo().intValue(),
+                    taskProtocol.getTaskNo().intValue(),
+                    slave.getId(),
                     new Date(),
-                    command.getTaskModeType().toString(),
+                    String.valueOf(taskProtocol.getTaskStatus()),
                     null,
                     null,
                     null,
-                    command.getDestinationStaNo().intValue(),
+                    result.IsSuccess? 1 : 0,
                     null,
                     new Date(),
                     null
@@ -238,8 +361,8 @@
         if (result != null && result.IsSuccess) {
             Thread.sleep(200);
             this.readStatus();
-            log.info("RGV 鍛戒护涓嬪彂[id:{}] >>>>> {}", slave.getId(), JSON.toJSON(command));
-            OutputQueue.RGV.offer(MessageFormat.format("銆恵0}銆慬id:{1}] >>>>> 鍛戒护涓嬪彂锛� {2}", DateUtils.convert(new Date()), slave.getId(), JSON.toJSON(command)));
+            log.info("RGV 鍛戒护涓嬪彂[id:{}] >>>>> {}", slave.getId(), JSON.toJSON(taskProtocol));
+            OutputQueue.RGV.offer(MessageFormat.format("銆恵0}銆慬id:{1}] >>>>> 鍛戒护涓嬪彂锛� {2}", DateUtils.convert(new Date()), slave.getId(), JSON.toJSON(taskProtocol)));
             return true;
         } else {
             OutputQueue.RGV.offer(MessageFormat.format("銆恵0}銆戝啓鍏GV plc鏁版嵁澶辫触 ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort()));
diff --git a/src/main/resources/application-prod.yml b/src/main/resources/application-prod.yml
index e066e7a..9c3e97c 100644
--- a/src/main/resources/application-prod.yml
+++ b/src/main/resources/application-prod.yml
@@ -39,28 +39,14 @@
     port: 502
     rack: 0
     slot: 0
-    devpPlcId: ${wcs-slave.devp[0].id}
-    #RGV鍏ュ簱婧愮珯鐐�
+    otherId: 2
+    #RGV婧愮珯鐐�
     rgvInSStn[0]:
       devpPlcId: ${wcs-slave.devp[0].id}
       staNo: 100
     rgvInSStn[1]:
       devpPlcId: ${wcs-slave.devp[0].id}
       staNo: 101
-    #RGV鍑哄簱婧愮珯鐐�
-    rgvOutSStn[0]:
-      devpPlcId: ${wcs-slave.devp[0].id}
-      staNo: 110
-    rgvOutSStn[1]:
-      devpPlcId: ${wcs-slave.devp[0].id}
-      staNo: 112
-    #RGV鐩爣绔欑偣
-    rgvDestStn[0]:
-      devpPlcId: ${wcs-slave.devp[0].id}
-      staNo: 102
-    rgvDestStn[1]:
-      devpPlcId: ${wcs-slave.devp[0].id}
-      staNo: 103
   # RGV绌挎杞�2
   rgv[1]:
     id: 2
@@ -68,25 +54,11 @@
     port: 502
     rack: 0
     slot: 0
-    devpPlcId: ${wcs-slave.devp[0].id}
-    #RGV鍏ュ簱婧愮珯鐐�
+    otherId: 1
+    #RGV婧愮珯鐐�
     rgvInSStn[0]:
       devpPlcId: ${wcs-slave.devp[0].id}
       staNo: 100
     rgvInSStn[1]:
       devpPlcId: ${wcs-slave.devp[0].id}
-      staNo: 101
-    #RGV鍑哄簱婧愮珯鐐�
-    rgvOutSStn[0]:
-      devpPlcId: ${wcs-slave.devp[0].id}
-      staNo: 110
-    rgvOutSStn[1]:
-      devpPlcId: ${wcs-slave.devp[0].id}
-      staNo: 112
-    #RGV鐩爣绔欑偣
-    rgvDestStn[0]:
-      devpPlcId: ${wcs-slave.devp[0].id}
-      staNo: 102
-    rgvDestStn[1]:
-      devpPlcId: ${wcs-slave.devp[0].id}
-      staNo: 103
\ No newline at end of file
+      staNo: 101
\ No newline at end of file

--
Gitblit v1.9.1