From 0ae7648dae40c6b7efa15e276099da7a9213ad37 Mon Sep 17 00:00:00 2001
From: lty <876263681@qq.com>
Date: 星期二, 23 九月 2025 22:13:13 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/core/model/protocol/StaProtocol.java   |   30 ++
 src/main/java/com/zy/core/thread/RgvThread.java             |   61 ++--
 src/main/java/com/zy/core/enums/RgvModeType.java            |    4 
 src/main/java/com/zy/asrs/controller/RgvController.java     |    2 
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java |  579 +++++++++++++++++++++++-----------------
 src/main/java/com/zy/core/MainProcess.java                  |   19 
 src/main/java/com/zy/core/model/protocol/RgvProtocol.java   |   29 ++
 src/main/java/com/zy/asrs/mapper/WrkMastStaMapper.java      |    3 
 src/main/java/com/zy/core/model/Task.java                   |   17 +
 src/main/java/com/zy/core/thread/SiemensDevpThread.java     |   74 ++++-
 src/main/resources/mapper/WrkMastStaMapper.xml              |    7 
 11 files changed, 525 insertions(+), 300 deletions(-)

diff --git a/src/main/java/com/zy/asrs/controller/RgvController.java b/src/main/java/com/zy/asrs/controller/RgvController.java
index ee4a2ac..085fc48 100644
--- a/src/main/java/com/zy/asrs/controller/RgvController.java
+++ b/src/main/java/com/zy/asrs/controller/RgvController.java
@@ -89,7 +89,7 @@
             if (rgvProtocol == null) continue;
 
             vo.setStatusType(rgvProtocol.modeType.desc);   // 妯″紡鐘舵��
-            vo.setStatus(rgvProtocol.getStatusType().desc); // 鐘舵��
+//            vo.setStatus(rgvProtocol.getMode().desc); // 鐘舵��
             vo.setWorkNo1(rgvProtocol.getTaskNo1());      // 宸ヤ綅1浠诲姟鍙�
             vo.setStatus1(rgvProtocol.getStatusType1().desc); // 宸ヤ綅1鐘舵��
             vo.setLoading1(rgvProtocol.getLoaded1() ? "鏈夌墿" : "鏃犵墿"); // 宸ヤ綅1鏈夌墿
diff --git a/src/main/java/com/zy/asrs/mapper/WrkMastStaMapper.java b/src/main/java/com/zy/asrs/mapper/WrkMastStaMapper.java
index 36117fd..99650a2 100644
--- a/src/main/java/com/zy/asrs/mapper/WrkMastStaMapper.java
+++ b/src/main/java/com/zy/asrs/mapper/WrkMastStaMapper.java
@@ -35,6 +35,7 @@
     List<WrkMastSta> selectNoInterfereList(@Param("staStarts") List<Integer> staStarts, @Param("staEnds") List<Integer> staEnds);
 
 
-    WrkMastSta selectByWorkSta(@Param("workSta") Integer workSta, @Param("rgvo") Integer rgvNo);
+    List<WrkMastSta> selectByWorkStaList(@Param("workSta") Integer workSta, @Param("rgvNo") Short rgvNo);
+    WrkMastSta selectByWorkSta(@Param("workSta") Integer workSta, @Param("rgvNo") Integer rgvNo);
 
 }
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 ba96987..655b13f 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -2790,7 +2790,56 @@
 //        }
 //    }
 
+    /**
+     * 灏忚溅涓婂伐浣嶅乏鍙崇Щ鍔�
+     *
+     */
+    public synchronized boolean rgvStaMove(Long workNo) {
+        try {
+            for (RgvSlave rgv : slaveProperties.getRgv()) {
+                RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgv.getId());
+                RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
+                if (rgvProtocol == null) {
+                    continue;
+                } else {
+                    rgvProtocol = rgvProtocol.clone();
+                }
+                if(rgvProtocol.isLoaded2ing() && rgvProtocol.isLoaded1ing()){
+                    continue;
+                }
+                if(rgvProtocol.isLoaded1ing() && !rgvProtocol.isLoaded2ing() && rgvProtocol.getTaskNo1() != 0){
+                    WrkMastSta wrkMastSta = wrkMastStaMapper.selectByWrkNo(rgvProtocol.getTaskNo1());
+                    Short moveSta =0;
 
+                    if(wrkMastSta.getStaEnd()< 1036 || (2000 < wrkMastSta.getStaEnd() && wrkMastSta.getStaEnd()<2031)){
+                        moveSta = 2;
+                        boolean rgvComplete = rgvComplete3((int) rgvProtocol.getRgvNo(),7,wrkMastSta.getWrkNo(),moveSta);
+                        if (!rgvComplete){
+                            log.error("灏忚溅宸ヤ綅绉诲姩澶辫触锛屽皬杞﹀彿{}锛�",rgvProtocol.getRgvNo());
+                            break;
+                        }
+                    }
+                }
+                if(!rgvProtocol.isLoaded1ing() && rgvProtocol.isLoaded2ing() && rgvProtocol.getTaskNo2() != 0){
+                    WrkMastSta wrkMastSta = wrkMastStaMapper.selectByWrkNo(rgvProtocol.getTaskNo2());
+                    Short moveSta =0;
+
+                    if(wrkMastSta.getStaEnd()> 2030 || (1036 < wrkMastSta.getStaEnd() && wrkMastSta.getStaEnd()<2000)){
+                        moveSta = 1;
+                        boolean rgvComplete = rgvComplete3((int) rgvProtocol.getRgvNo(),8,wrkMastSta.getWrkNo(),moveSta);
+                        if (!rgvComplete){
+                            log.error("灏忚溅宸ヤ綅绉诲姩澶辫触锛屽皬杞﹀彿{}锛�",rgvProtocol.getRgvNo());
+                            break;
+                        }
+                    }
+                }
+
+
+            }
+        }catch (Exception e){
+            log.error("灏忚溅澶嶄綅绾跨▼鎶ラ敊锛�"+e);
+        }
+    }
     /**
      *  瀹屾垚灏忚溅浠诲姟
      */
@@ -2811,14 +2860,26 @@
                     log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�3", rgv.getId());
                     continue;
                 }
+                //鏀捐揣纭
+                if(rgvProtocol.getStatusType1()==RgvStatusType.FETCHWAITING && rgvProtocol.getModeType() == RgvModeType.AUTO){
+                    boolean rgvComplete = rgvComplete((int) rgvProtocol.getRgvNo(), 3);
+                    if (!rgvComplete){
+                        log.error("灏忚溅鏀捐揣澶嶄綅澶辫触锛屽皬杞﹀彿{}锛�", rgvProtocol.getRgvNo());
+                    }
+                }
+                if(rgvProtocol.getStatusType2()==RgvStatusType.FETCHWAITING && rgvProtocol.getModeType() == RgvModeType.AUTO){
+                    boolean rgvComplete = rgvComplete((int) rgvProtocol.getRgvNo(), 6);
+                    if (!rgvComplete){
+                        log.error("灏忚溅鏀捐揣澶嶄綅澶辫触锛屽皬杞﹀彿{}锛�", rgvProtocol.getRgvNo());
+                    }
+                }
 
                 // 鍙湁褰揜GV宸ヤ綅1绛夊緟WCS纭銆佽嚜鍔�
-                if ((rgvProtocol.getStatusType1() == RgvStatusType.WAITING || rgvProtocol.getStatusType1()==RgvStatusType.FETCHWAITING)
+                if (rgvProtocol.getStatusType1() == RgvStatusType.WAITING
                         && rgvProtocol.getModeType() == RgvModeType.AUTO
-                        && (rgvProtocol.getStatusType() == RgvStatusType.WORKING1)
                 ){
 
-                    log.info("{}鍙峰皬杞︾瓑寰厀cs纭锛岀姸鎬亄}锛屽弬鏁皗}",rgvProtocol.getRgvNo(),rgvProtocol.getStatusType(),rgvProtocol);
+                    log.info("{}鍙峰皬杞︾瓑寰厀cs纭锛岀姸鎬亄}锛屽弬鏁皗}",rgvProtocol.getRgvNo(),rgvProtocol.getStatusType1(),rgvProtocol);
                     if(rgvProtocol.getTaskNo1() == 9999){ // 棰勮皟搴︿换鍔$‘璁�
                         BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
                         Integer staNo = basRgvMap.getNowRoute();
@@ -2847,27 +2908,19 @@
                             }
                         }
                     }
-                    if (rgvProtocol.getTaskNo1()!=0 && rgvProtocol.getTaskNo1()!=9999){
+                    if ( rgvProtocol.getTaskNo1()!=9999){
                         WrkMastSta wrkMastSta = wrkMastStaMapper.selectByWrkNo(rgvProtocol.getTaskNo1());
+                        if(null == wrkMastSta){
+                            log.error("灏忚溅鏃犱换鍔�");
+                            continue;
+                        }
                         if(wrkMastSta.getWrkSts() == 1){//鍙栬揣纭
-                            wrkMastSta.setWrkSts(4);  //琛岃蛋鐘舵��
-                            try{
-                                wrkMastStaMapper.updateById(wrkMastSta);
-                                log.error("鏇存柊灏忚溅浠诲姟鎴愬姛");
-                            }catch (Exception e){
-                                log.error("鏇存柊灏忚溅浠诲姟澶辫触");
+                            if(!Objects.equals(rgvProtocol.getRgvPosI2(), wrkMastSta.getStaEnd())){
+                                continue;
                             }
-                            boolean rgvComplete = false;
-
-                            rgvComplete = rgvComplete((int) rgvProtocol.getRgvNo(),7);
-                            if (!rgvComplete){
-                                log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{}锛�",rgvProtocol.getRgvNo());
-                                break;
-                            }
-                            break;
-                        }
-                        if(wrkMastSta.getWrkSts() == 4){//琛岃蛋纭
+                            wrkMastSta.setUpdateTime(new Date());
                             wrkMastSta.setWrkSts(2);
+//                            wrkMastSta.setWorkSta(2);
                             try{
                                 wrkMastStaMapper.updateById(wrkMastSta);
                                 log.error("鏇存柊灏忚溅浠诲姟鎴愬姛");
@@ -2876,59 +2929,76 @@
                             }
                             boolean rgvComplete = false;
 
-                            rgvComplete = rgvComplete((int) rgvProtocol.getRgvNo(),7);
+                            rgvComplete = rgvStaMove(wrkMastSta.getWrkNo());
                             if (!rgvComplete){
                                 log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{}锛�",rgvProtocol.getRgvNo());
                                 break;
                             }
                             break;
                         }
-                        if (Cools.isEmpty(wrkMastSta) || wrkMastSta.getWrkSts()!=1){
-                            log.error("鏈煡鍒板皬杞︽墽琛屼换鍔℃垨鑰呮墽琛屼换鍔$姸鎬佷笉绗﹀悎锛�"+wrkMastSta);
-                            continue;
-                        }
-
-                        SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
-                        StaProtocol staProtocol = devpThread.getStation().get(wrkMastSta.getStaEnd());
-                        if (staProtocol == null) {
-                            continue;
-                        } else {
-                            staProtocol = staProtocol.clone();
-                        }
-                        if (!staProtocol.isAutoing() || !staProtocol.isLoading()){
-                            continue;
-                        }
-                        WrkMast wrkMast = wrkMastMapper.selectPakInStep3(wrkMastSta.getWrkNo().intValue());
-                        if (!Cools.isEmpty(wrkMast)){
-                            if (!staProtocol.isPakMk()){
-                                continue;
-                            }
-                            // 涓嬪彂绔欑偣淇℃伅
-                            staProtocol.setWorkNo(wrkMast.getWrkNo());
-                            staProtocol.setStaNo(wrkMast.getStaNo().shortValue());
-                            devpThread.setPakMk(staProtocol.getSiteId(), false);
-                            log.error("rgv浠诲姟瀹屾垚缁欒緭閫佺嚎涓嬪彂鍛戒护锛�"+wrkMast.getWrkNo()+","+wrkMast.getStaNo());
-                            if (!MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol))) {
-                                continue;
-                            }
-                        }
-                        boolean rgvComplete = false;
-
-                        rgvComplete = rgvComplete((int) rgvProtocol.getRgvNo(),3);
-                        if (!rgvComplete){
-                            log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{}锛�",rgvProtocol.getRgvNo());
-                            break;
-                        }
-                        WrkMast wrkMast1 = wrkMastService.selectByWrkNo(rgvProtocol.getTaskNo1());
-                        wrkMast1.setPdcType("Y");
-
-                        wrkMastService.updateById(wrkMast1);
-
-                        wrkMastSta.setWrkSts(3);
-                        wrkMastStaMapper.updateById(wrkMastSta);
-                        BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
-                        basRgvMap.setNowRoute(rgvProtocol.getRgvPosI());
-                        rgvMapUpdate(basRgvMap,basRgvMap.getStartRoute(),basRgvMap.getStartRoute(),"2471");
+//                        if(wrkMastSta.getWrkSts() == 4){//琛岃蛋纭
+//                            wrkMastSta.setWrkSts(2);
+//                            try{
+//                                wrkMastStaMapper.updateById(wrkMastSta);
+//                                log.error("鏇存柊灏忚溅浠诲姟鎴愬姛");
+//                            }catch (Exception e){
+//                                log.error("鏇存柊灏忚溅浠诲姟澶辫触");
+//                            }
+//                            boolean rgvComplete = false;
+//
+//                            rgvComplete = rgvComplete((int) rgvProtocol.getRgvNo(),7);
+//                            if (!rgvComplete){
+//                                log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{}锛�",rgvProtocol.getRgvNo());
+//                                break;
+//                            }
+//                            break;
+//                        }
+//                        if (Cools.isEmpty(wrkMastSta) || wrkMastSta.getWrkSts()!=1){
+//                            log.error("鏈煡鍒板皬杞︽墽琛屼换鍔℃垨鑰呮墽琛屼换鍔$姸鎬佷笉绗﹀悎锛�"+wrkMastSta);
+//                            continue;
+//                        }
+//
+//                        SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
+//                        StaProtocol staProtocol = devpThread.getStation().get(wrkMastSta.getStaEnd());
+//                        if (staProtocol == null) {
+//                            continue;
+//                        } else {
+//                            staProtocol = staProtocol.clone();
+//                        }
+//                        if (!staProtocol.isAutoing() || !staProtocol.isLoading()){
+//                            continue;
+//                        }
+//                        WrkMast wrkMast = wrkMastMapper.selectPakInStep3(wrkMastSta.getWrkNo().intValue());
+//                        if (!Cools.isEmpty(wrkMast)){
+//                            if (!staProtocol.isPakMk()){
+//                                continue;
+//                            }
+//                            // 涓嬪彂绔欑偣淇℃伅
+//                            staProtocol.setWorkNo(wrkMast.getWrkNo());
+//                            staProtocol.setStaNo(wrkMast.getStaNo().shortValue());
+//                            devpThread.setPakMk(staProtocol.getSiteId(), false);
+//                            log.error("rgv浠诲姟瀹屾垚缁欒緭閫佺嚎涓嬪彂鍛戒护锛�"+wrkMast.getWrkNo()+","+wrkMast.getStaNo());
+//                            if (!MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol))) {
+//                                continue;
+//                            }
+//                        }
+//                        boolean rgvComplete = false;
+//
+//                        rgvComplete = rgvComplete((int) rgvProtocol.getRgvNo(),3);
+//                        if (!rgvComplete){
+//                            log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{}锛�",rgvProtocol.getRgvNo());
+//                            break;
+//                        }
+//                        WrkMast wrkMast1 = wrkMastService.selectByWrkNo(rgvProtocol.getTaskNo1());
+//                        wrkMast1.setPdcType("Y");
+//
+//                        wrkMastService.updateById(wrkMast1);
+//
+//                        wrkMastSta.setWrkSts(3);
+//                        wrkMastStaMapper.updateById(wrkMastSta);
+//                        BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
+//                        basRgvMap.setNowRoute(rgvProtocol.getRgvPosI());
+//                        rgvMapUpdate(basRgvMap,basRgvMap.getStartRoute(),basRgvMap.getStartRoute(),"2471");
                     }
 
                     else {
@@ -2936,31 +3006,19 @@
                     }
                 }
                 // 鍙湁褰揜GV宸ヤ綅2绛夊緟WCS纭銆佽嚜鍔�
-                if ((rgvProtocol.getStatusType2() == RgvStatusType.WAITING || rgvProtocol.getStatusType2()==RgvStatusType.FETCHWAITING)
+                if (rgvProtocol.getStatusType2() == RgvStatusType.WAITING
                         && rgvProtocol.getModeType() == RgvModeType.AUTO
-                        && (rgvProtocol.getStatusType() == RgvStatusType.WORKING1)
                 ){
-                    log.info("{}鍙峰皬杞︾瓑寰厀cs纭锛岀姸鎬亄}锛屽弬鏁皗}",rgvProtocol.getRgvNo(),rgvProtocol.getStatusType(),rgvProtocol);
+                    log.info("{}鍙峰皬杞︾瓑寰厀cs纭锛岀姸鎬亄}锛屽弬鏁皗}",rgvProtocol.getRgvNo(),rgvProtocol.getStatusType2(),rgvProtocol);
                     if (rgvProtocol.getTaskNo2() !=0 ){
-                        WrkMastSta wrkMastSta = wrkMastStaMapper.selectByWrkNo(rgvProtocol.getTaskNo1());
+                        WrkMastSta wrkMastSta = wrkMastStaMapper.selectByWrkNo(rgvProtocol.getTaskNo2());
                         if(wrkMastSta.getWrkSts() == 1){//鍙栬揣纭
-                            wrkMastSta.setWrkSts(4);  //琛岃蛋鐘舵��
-                            try{
-                                wrkMastStaMapper.updateById(wrkMastSta);
-                                log.error("鏇存柊灏忚溅浠诲姟鎴愬姛");
-                            }catch (Exception e){
-                                log.error("鏇存柊灏忚溅浠诲姟澶辫触");
-                            }
                             boolean rgvComplete = false;
-
-                            rgvComplete = rgvComplete((int) rgvProtocol.getRgvNo(),7);
+                            rgvComplete = rgvComplete2((int) rgvProtocol.getRgvNo(),8,wrkMastSta.getWrkNo());
                             if (!rgvComplete){
                                 log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{}锛�",rgvProtocol.getRgvNo());
                                 break;
                             }
-                            break;
-                        }
-                        if(wrkMastSta.getWrkSts() == 4){//琛岃蛋鍚庣‘璁�
                             wrkMastSta.setWrkSts(2);
                             try{
                                 wrkMastStaMapper.updateById(wrkMastSta);
@@ -2968,67 +3026,65 @@
                             }catch (Exception e){
                                 log.error("鏇存柊灏忚溅浠诲姟澶辫触");
                             }
-                            boolean rgvComplete = false;
-
-                            rgvComplete = rgvComplete((int) rgvProtocol.getRgvNo(),7);
-                            if (!rgvComplete){
-                                log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{}锛�",rgvProtocol.getRgvNo());
-                                break;
-                            }
                             break;
                         }
-                        if (Cools.isEmpty(wrkMastSta) || wrkMastSta.getWrkSts()!=1){
-                            log.error("鏈煡鍒板皬杞︽墽琛屼换鍔℃垨鑰呮墽琛屼换鍔$姸鎬佷笉绗﹀悎锛�"+wrkMastSta);
-                            continue;
-                        }
+//                        if(wrkMastSta.getWrkSts() == 4){//琛岃蛋鍚庣‘璁�
+//                            wrkMastSta.setWrkSts(2);
+//                            try{
+//                                wrkMastStaMapper.updateById(wrkMastSta);
+//                                log.error("鏇存柊灏忚溅浠诲姟鎴愬姛");
+//                            }catch (Exception e){
+//                                log.error("鏇存柊灏忚溅浠诲姟澶辫触");
+//                            }
+//                            boolean rgvComplete = false;
+//
+//                            rgvComplete = rgvComplete((int) rgvProtocol.getRgvNo(),7);
+//                            if (!rgvComplete){
+//                                log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{}锛�",rgvProtocol.getRgvNo());
+//                                break;
+//                            }
+//                            break;
+//                        }
+//                        if (Cools.isEmpty(wrkMastSta) || wrkMastSta.getWrkSts()!=1){
+//                            log.error("鏈煡鍒板皬杞︽墽琛屼换鍔℃垨鑰呮墽琛屼换鍔$姸鎬佷笉绗﹀悎锛�"+wrkMastSta);
+//                            continue;
+//                        }
 
-                        SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
-                        StaProtocol staProtocol = devpThread.getStation().get(wrkMastSta.getStaEnd());
-                        if (staProtocol == null) {
-                            continue;
-                        } else {
-                            staProtocol = staProtocol.clone();
-                        }
-                        if (!staProtocol.isAutoing() || !staProtocol.isLoading()){
-                            continue;
-                        }
-                        WrkMast wrkMast = wrkMastMapper.selectPakInStep3(wrkMastSta.getWrkNo().intValue());
-                        if (!Cools.isEmpty(wrkMast)){
-                            if (!staProtocol.isPakMk()){
-                                continue;
-                            }
-                            // 涓嬪彂绔欑偣淇℃伅
-                            staProtocol.setWorkNo(wrkMast.getWrkNo());
-                            staProtocol.setStaNo(wrkMast.getStaNo().shortValue());
-                            devpThread.setPakMk(staProtocol.getSiteId(), false);
-                            log.error("rgv浠诲姟瀹屾垚缁欒緭閫佺嚎涓嬪彂鍛戒护锛�"+wrkMast.getWrkNo()+","+wrkMast.getStaNo());
-                            if (!MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol))) {
-                                continue;
-                            }
-                        }
-                        int sourceSta = wrkMast.getSourceStaNo();
-                        boolean rgvComplete = false;
+//                        SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
+//                        StaProtocol staProtocol = devpThread.getStation().get(wrkMastSta.getStaEnd());
+//                        if (staProtocol == null) {
+//                            continue;
+//                        } else {
+//                            staProtocol = staProtocol.clone();
+//                        }
+//                        if (!staProtocol.isAutoing() || !staProtocol.isLoading()){
+//                            continue;
+//                        }
+//                        WrkMast wrkMast = wrkMastMapper.selectPakInStep3(wrkMastSta.getWrkNo().intValue());
+//
+//                        int sourceSta = wrkMast.getSourceStaNo();
+//                        boolean rgvComplete = false;
+//
+//                        //鍙屽伐浣嶅嚭鍏ュ簱涓嶅悓宸ヤ綅澶嶄綅
+//                        rgvComplete = rgvComplete((int) rgvProtocol.getRgvNo(),6);
 
-                        //鍙屽伐浣嶅嚭鍏ュ簱涓嶅悓宸ヤ綅澶嶄綅
-                        rgvComplete = rgvComplete((int) rgvProtocol.getRgvNo(),6);
-
-                        if (!rgvComplete){
-                            log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{}锛�",rgvProtocol.getRgvNo());
-                            break;
-                        }
-                        WrkMast wrkMast1 = wrkMastService.selectByWrkNo(rgvProtocol.getTaskNo1());
-                        wrkMast1.setPdcType("Y");
-
-                        wrkMastService.updateById(wrkMast1);
-
-                        wrkMastSta.setWrkSts(3);
-                        wrkMastStaMapper.updateById(wrkMastSta);
-                        BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
-                        basRgvMap.setNowRoute(rgvProtocol.getRgvPosI());
-                        rgvMapUpdate(basRgvMap,basRgvMap.getStartRoute(),basRgvMap.getStartRoute(),"2471");
+//                        if (!rgvComplete){
+//                            log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{}锛�",rgvProtocol.getRgvNo());
+//                            break;
+//                        }
+//                        WrkMast wrkMast1 = wrkMastService.selectByWrkNo(rgvProtocol.getTaskNo1());
+//                        wrkMast1.setPdcType("Y");
+//
+//                        wrkMastService.updateById(wrkMast1);
+//
+//                        wrkMastSta.setWrkSts(3);
+//                        wrkMastStaMapper.updateById(wrkMastSta);
+//                        BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
+//                        basRgvMap.setNowRoute(rgvProtocol.getRgvPosI());
+//                        rgvMapUpdate(basRgvMap,basRgvMap.getStartRoute(),basRgvMap.getStartRoute(),"2471");
                     }
                     else {
-                        log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{},绛夊緟wcs纭浣嗘槸娌℃湁宸ヤ綔鍙凤紒",rgvProtocol.getRgvNo());
+                        log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{},绛夊緟wcs纭锛�",rgvProtocol.getRgvNo());
                     }
                 }
                 //褰撳皬杞︽棤浠诲姟鏃跺彇娑堥攣瀹�
@@ -3061,9 +3117,9 @@
                 continue;
             }
             //灏忚溅鏃犱换鍔℃椂璺宠繃
-            if(rgvProtocol.getTaskNo1() ==0 && rgvProtocol.getTaskNo2() == 0){
-                continue;
-            }
+//            if(rgvProtocol.getTaskNo1() ==0 && rgvProtocol.getTaskNo2() == 0){
+//                continue;
+//            }
             //鍏ュ簱鏀捐揣
             if(rgvThread.isPakIn()){
                 for(RgvSlave.RgvStn rgvStn : rgv.getRgvInPStn()){//鍏ュ簱鏀捐揣绔欑偣
@@ -3084,7 +3140,7 @@
                         continue;
                     }
 
-                    if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.getWorkNo() > 0 && staProtocol.isInEnable()
+                    if (staProtocol.isAutoing() && !staProtocol.isLoading() && staProtocol.isInEnable()
                             && staDetl.getCanining() != null && staDetl.getCanining().equals("Y")) {
                         flag = true;
                     }
@@ -3096,31 +3152,40 @@
                         continue;
                     }
                     BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
-                    List<Integer> route = RouteUtils.getRoute(basRgvMap.getStartRoute(), basRgvMap.getEndRoute());
+//                    List<Integer> route = RouteUtils.getRoute(basRgvMap.getStartRoute(), basRgvMap.getEndRoute());
                     basRgvMap.setNowRoute(rgvProtocol.getRgvPosI()); //鏇存柊灏忚溅褰撳墠浣嶇疆绔欑偣鍙�
-                    Integer wrkNo = 0;
+//                    Integer wrkNo = 0;
                     if(rgvProtocol.getTaskNo2() != 0){
                         wrkNo = rgvProtocol.getTaskNo2();
-                    }else{
-                        wrkNo = rgvProtocol.getTaskNo1();
                     }
-                    WrkMastSta wrkMastSta = wrkMastStaMapper.selectNoInterfere(route, route, Long.valueOf(wrkNo));//鏍规嵁绔欑偣宸ヤ綔鍙峰拰灏忚溅宸ヤ綔鑼冨洿妫�绱换鍔℃。
+//                    else{
+//                        wrkNo = rgvProtocol.getTaskNo1();
+//                    }
+                    if(!rgvProtocol.isLoaded2ing()){
+                        continue;
+                    }
+                    WrkMastSta wrkMastSta = wrkMastStaMapper.selectByWrkNo(rgvProtocol.getTaskNo2());//鏍规嵁绔欑偣宸ヤ綔鍙峰拰灏忚溅宸ヤ綔鑼冨洿妫�绱换鍔℃。
                     if( null == wrkMastSta ) {
                         News.infoNoLog( " - 1" + " - 4" + " - 鏌ヨ鏃犲緟鍏ュ簱鏁版嵁--wrk_sts0, 宸ヤ綔鍙�={}", staProtocol.getWorkNo());
                         continue;
                     }
-                    boolean sign = rgvTakeFullAll(basRgvMap.getRgvNo(), wrkMastSta,null); //鍛戒护涓嬪彂
+                    if(!Objects.equals(rgvProtocol.getRgvPosI2(), wrkMastSta.getStaEnd())){
+                        continue;
+                    }
+
+                    boolean sign = rgvTakeFullAll(basRgvMap.getRgvNo(), wrkMastSta,null,2); //鍛戒护涓嬪彂
                     if (sign){
                         try{
+                            wrkMastSta.setWrkSts(3);
                             wrkMastStaMapper.updateById(wrkMastSta);
                             log.error("鏇存柊灏忚溅浠诲姟鎴愬姛");
                         }catch (Exception e){
                             log.error("鏇存柊灏忚溅浠诲姟澶辫触");
                         }
-                        boolean signMap = rgvMapUpdate(basRgvMap, wrkMastSta.getStaStart(), wrkMastSta.getStaEnd(),"2526");
-                        if (!signMap){
-                            log.error("璐х墿鎼繍浠诲姟锛氬伐浣滃彿{}鎵�灞炰换鍔′笅鍙戝悗鍦板浘鍚屾澶辫触",wrkMastSta.getWrkNo());
-                        }
+//                        boolean signMap = rgvMapUpdate(basRgvMap, wrkMastSta.getStaStart(), wrkMastSta.getStaEnd(),"2526");
+//                        if (!signMap){
+//                            log.error("璐х墿鎼繍浠诲姟锛氬伐浣滃彿{}鎵�灞炰换鍔′笅鍙戝悗鍦板浘鍚屾澶辫触",wrkMastSta.getWrkNo());
+//                        }
                     } else {
                         log.error("宸ヤ綔鍙穥}鎵�灞炰换鍔′笅鍙戝け璐�",wrkMastSta.getWrkNo());
                     }
@@ -3147,7 +3212,7 @@
                         continue;
                     }
 
-                    if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.getWorkNo() > 0 && staProtocol.isOutEnable()
+                    if (staProtocol.isAutoing() && !staProtocol.isLoading()   && staProtocol.isOutEnable()
                             && staDetl.getCanouting() != null && staDetl.getCanouting().equals("Y")) {
                         flag = true;
                     }
@@ -3159,32 +3224,34 @@
                         continue;
                     }
                     BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
-                    List<Integer> route = RouteUtils.getRoute(basRgvMap.getStartRoute(), basRgvMap.getEndRoute());
                     basRgvMap.setNowRoute(rgvProtocol.getRgvPosI()); //鏇存柊灏忚溅褰撳墠浣嶇疆绔欑偣鍙�
-                    Integer wrkNo = 0;
+//                    Integer wrkNo = 0;
                     if(rgvProtocol.getTaskNo1() != 0){
                         wrkNo = rgvProtocol.getTaskNo1();
-                    }else{
-                        wrkNo = rgvProtocol.getTaskNo2();
                     }
-                    WrkMastSta wrkMastSta = wrkMastStaMapper.selectNoInterfere(route, route, Long.valueOf(wrkNo));//鏍规嵁绔欑偣宸ヤ綔鍙峰拰灏忚溅宸ヤ綔鑼冨洿妫�绱换鍔℃。
+//                    else{
+//                        wrkNo = rgvProtocol.getTaskNo2();
+//                    }
+                    WrkMastSta wrkMastSta = wrkMastStaMapper.selectByWrkNo(rgvProtocol.getTaskNo1());//鏍规嵁绔欑偣宸ヤ綔鍙峰拰灏忚溅宸ヤ綔鑼冨洿妫�绱换鍔℃。
+
                     if( null == wrkMastSta ) {
-                        News.infoNoLog( " - 1" + " - 4" + " - 鏌ヨ鏃犲緟鍑哄簱鏁版嵁--wrk_sts0, 宸ヤ綔鍙�={}", staProtocol.getWorkNo());
+                        News.infoNoLog( " - 1" + " - 4" + " - 鏌ヨ鏃犲緟鍏ュ簱鏁版嵁--wrk_sts0, 宸ヤ綔鍙�={}", staProtocol.getWorkNo());
                         continue;
                     }
-                    wrkMastSta.setWrkSts(2);
-                    boolean sign = rgvTakeFullAll(basRgvMap.getRgvNo(), wrkMastSta,null); //鍛戒护涓嬪彂
+                    if(!Objects.equals(rgvProtocol.getRgvPosI2(), wrkMastSta.getStaEnd())){
+                        continue;
+                    }
+                    Integer pos = 2;
+                    boolean sign = rgvTakeFullAll(basRgvMap.getRgvNo(), wrkMastSta,null,pos); //鍛戒护涓嬪彂
                     if (sign){
                         try{
+                            wrkMastSta.setWrkSts(3);
                             wrkMastStaMapper.updateById(wrkMastSta);
                             log.error("鏇存柊灏忚溅浠诲姟鎴愬姛");
                         }catch (Exception e){
                             log.error("鏇存柊灏忚溅浠诲姟澶辫触");
                         }
-                        boolean signMap = rgvMapUpdate(basRgvMap, wrkMastSta.getStaStart(), wrkMastSta.getStaEnd(),"2526");
-                        if (!signMap){
-                            log.error("璐х墿鎼繍浠诲姟锛氬伐浣滃彿{}鎵�灞炰换鍔′笅鍙戝悗鍦板浘鍚屾澶辫触",wrkMastSta.getWrkNo());
-                        }
+
                     } else {
                         log.error("宸ヤ綔鍙穥}鎵�灞炰换鍔′笅鍙戝け璐�",wrkMastSta.getWrkNo());
                     }
@@ -3217,8 +3284,8 @@
             }
 
             // 鍙湁褰揜GV绌洪棽 骞朵笖 鏃犱换鍔℃椂鎵嶇户缁墽琛�
-            if ((rgvProtocol.getStatusType1() == RgvStatusType.IDLE || rgvProtocol.getStatusType2() == RgvStatusType.IDLE)
-//                    && rgvProtocol.getModeType() == RgvModeType.AUTO
+            if ((rgvProtocol.getStatusType1() == RgvStatusType.IDLE && rgvProtocol.getStatusType2() == RgvStatusType.IDLE)
+                    && rgvProtocol.getModeType() == RgvModeType.AUTO
                     && rgvThread.isPakMk()) {
                 News.warnNoLog(""+mark+" - 0"+" - 寮�濮嬫墽琛孯GV鍏ュ嚭搴撲綔涓氫笅鍙�");
                 // 濡傛灉鏈�杩戜竴娆℃槸鍏ュ簱妯″紡
@@ -3266,7 +3333,7 @@
     public synchronized void rgvRunWrkMastInTest(){
         BasRgvMap basRgvMap = basRgvMapMapper.selectById(1);
         List<Integer> route = RouteUtils.getRoute(basRgvMap.getStartRoute(), basRgvMap.getEndRoute());
-        basRgvMap.setNowRoute(1031); //鏇存柊灏忚溅褰撳墠浣嶇疆绔欑偣鍙�
+        basRgvMap.setNowRoute(1021); //鏇存柊灏忚溅褰撳墠浣嶇疆绔欑偣鍙�
         WrkMastSta wrkMastSta = wrkMastStaMapper.selectByWrkNo(342);//鏍规嵁绔欑偣宸ヤ綔鍙峰拰灏忚溅宸ヤ綔鑼冨洿妫�绱换鍔℃。
 
 //        WrkMastSta wrkMastSta2 = wrkMastStaMapper.selectByWorkSta(2, 1);
@@ -3280,10 +3347,10 @@
 //        }
         wrkMastSta.setWorkSta(1);
         wrkMastSta.setRgvNo(1);
-        wrkMastSta.setStaStart(1031);
+        wrkMastSta.setStaStart(1035);
         Short direction = 2;//鍙屽伐浣嶆渶缁堟姷杈句綅缃�
         boolean sign = false;
-        sign = rgvTakeFullAll(basRgvMap.getRgvNo(), wrkMastSta,direction); //鍛戒护涓嬪彂
+//        sign = rgvTakeFullAll(basRgvMap.getRgvNo(), wrkMastSta,direction,); //鍛戒护涓嬪彂
         if (sign){
             wrkMastSta.setWrkSts(1);
             try{
@@ -3343,7 +3410,7 @@
             }
 
 
-            if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.getWorkNo() > 0 && staProtocol.isInEnable()
+            if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.getWorkNo() != 0
                     && staDetl.getCanining() != null && staDetl.getCanining().equals("Y")) {
                 flag = true;
             }
@@ -3355,9 +3422,10 @@
                 continue;
             }
             BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
-            List<Integer> route = RouteUtils.getRoute(basRgvMap.getStartRoute(), basRgvMap.getEndRoute());
+//            List<Integer> route = RouteUtils.getRoute(basRgvMap.getStartRoute(), basRgvMap.getEndRoute());
             basRgvMap.setNowRoute(rgvProtocol.getRgvPosI()); //鏇存柊灏忚溅褰撳墠浣嶇疆绔欑偣鍙�
-            WrkMastSta wrkMastSta = wrkMastStaMapper.selectNoInterfere(route, route, Long.valueOf(staProtocol.getWorkNo()));//鏍规嵁绔欑偣宸ヤ綔鍙峰拰灏忚溅宸ヤ綔鑼冨洿妫�绱换鍔℃。
+//            WrkMastSta wrkMastSta = wrkMastStaMapper.selectNoInterfere(route, route, Long.valueOf(staProtocol.getWorkNo()));//鏍规嵁绔欑偣宸ヤ綔鍙峰拰灏忚溅宸ヤ綔鑼冨洿妫�绱换鍔℃。
+            WrkMastSta wrkMastSta = wrkMastStaMapper.selectByWrkNo(staProtocol.getWorkNo());//鏍规嵁绔欑偣宸ヤ綔鍙峰拰灏忚溅宸ヤ綔鑼冨洿妫�绱换鍔℃。
 
             if( null == wrkMastSta ) {
                 News.infoNoLog("" + mark + " - 1" + " - 4" + " - 鏌ヨ鏃犲緟鍏ュ簱鏁版嵁--wrk_sts0, 宸ヤ綔鍙�={}", staProtocol.getWorkNo());
@@ -3372,20 +3440,14 @@
                 rgvThread.setPakRgv(false);
                 continue;
             }
-            wrkMastSta.setWorkSta(wrkMastSta2 != null ? 1 : 2);
+            wrkMastSta.setWorkSta(wrkMastSta2 !=null ? 1 : 2);
             wrkMastSta.setRgvNo((int) rgvProtocol.getRgvNo());
             Short direction = 2;//鍙屽伐浣嶆渶缁堟姷杈句綅缃�
             boolean sign = false;
-            //鑻ュ彇璐т负宸ヤ綅2涓斿彇璐у彛鍓嶄竴绔欑偣鏈夌墿锛岀粰鍙屽伐浣嶅悓鏃朵笅鍙戞寚浠�
-            if(wrkMastSta.getWorkSta() == 2 && staProtocol2 != null && staProtocol2.isLoading() && staProtocol2.getWorkNo() > 0 && sign){
-                WrkMastSta wrkMastSta3 = wrkMastStaMapper.selectNoInterfere(route, route, Long.valueOf(staProtocol2.getWorkNo()));//鏍规嵁绔欑偣宸ヤ綔鍙峰拰灏忚溅宸ヤ綔鑼冨洿妫�绱换鍔℃。
-                wrkMastSta3.setWorkSta(1);
-                wrkMastSta3.setRgvNo((int) rgvProtocol.getRgvNo());
-                sign =  rgvTakeFullAll2(basRgvMap.getRgvNo(), wrkMastSta, wrkMastSta3);
-            }else{
-                sign = rgvTakeFullAll(basRgvMap.getRgvNo(), wrkMastSta,direction); //鍛戒护涓嬪彂
-            }
-            if (sign){
+//            if(!Objects.equals(rgvProtocol.getRgvPosI2(), wrkMastSta.getStaEnd())){
+//                continue;
+//            }
+            if(Objects.equals(rgvProtocol.getRgvPosI2(), wrkMastSta.getStaEnd()) && wrkMastSta.getWrkSts() == 4){
                 wrkMastSta.setWrkSts(1);
                 try{
                     wrkMastStaMapper.updateById(wrkMastSta);
@@ -3393,11 +3455,18 @@
                 }catch (Exception e){
                     log.error("鏇存柊灏忚溅浠诲姟澶辫触");
                 }
+            }
+            //鑻ュ彇璐т负宸ヤ綅2涓斿彇璐у彛鍓嶄竴绔欑偣鏈夌墿锛岀粰鍙屽伐浣嶅悓鏃朵笅鍙戞寚浠�
+            if(wrkMastSta.getWorkSta() == 2 && staProtocol2 != null && staProtocol2.isLoading() && staProtocol2.getWorkNo() > 0 && sign){
+//                WrkMastSta wrkMastSta3 = wrkMastStaMapper.selectNoInterfere(route, route, Long.valueOf(staProtocol2.getWorkNo()));//鏍规嵁绔欑偣宸ヤ綔鍙峰拰灏忚溅宸ヤ綔鑼冨洿妫�绱换鍔℃。
+//                wrkMastSta3.setWorkSta(1);
+//                wrkMastSta3.setRgvNo((int) rgvProtocol.getRgvNo());
+//                sign =  rgvTakeFullAll2(basRgvMap.getRgvNo(), wrkMastSta, wrkMastSta3);
+            }else{
+                sign = rgvTakeFullAll(basRgvMap.getRgvNo(), wrkMastSta,direction,1); //鍛戒护涓嬪彂
+            }
+            if (sign){
                 rgvThread.setPakOut(false);//鍑哄簱涓嶅厑璁�
-                boolean signMap = rgvMapUpdate(basRgvMap, wrkMastSta.getStaStart(), wrkMastSta.getStaEnd(),"2526");
-                if (!signMap){
-                    log.error("璐х墿鎼繍浠诲姟锛氬伐浣滃彿{}鎵�灞炰换鍔′笅鍙戝悗鍦板浘鍚屾澶辫触",wrkMastSta.getWrkNo());
-                }
             } else {
                 log.error("宸ヤ綔鍙穥}鎵�灞炰换鍔′笅鍙戝け璐�",wrkMastSta.getWrkNo());
             }
@@ -3436,6 +3505,7 @@
             } else {
                 staProtocol = staProtocol.clone();
             }
+
             // 鏌ヨ绔欑偣璇︾粏淇℃伅
             BasDevp staDetl = basDevpService.selectById(rgvStn.getStaNo());
             if (staDetl == null) {
@@ -3443,7 +3513,7 @@
                 continue;
             }
 
-            if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.getWorkNo() > 0 && staProtocol.isOutEnable()
+            if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.getWorkNo() > 0
                     && staDetl.getCanouting() != null && staDetl.getCanouting().equals("Y")) {
                 flag = true;
             }
@@ -3455,9 +3525,9 @@
                 continue;
             }
             BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
-            List<Integer> route = RouteUtils.getRoute(basRgvMap.getStartRoute(), basRgvMap.getEndRoute());
+//            List<Integer> route = RouteUtils.getRoute(basRgvMap.getStartRoute(), basRgvMap.getEndRoute());
             basRgvMap.setNowRoute(rgvProtocol.getRgvPosI()); //鏇存柊灏忚溅褰撳墠浣嶇疆绔欑偣鍙�
-            WrkMastSta wrkMastSta = wrkMastStaMapper.selectNoInterfere(route, route, Long.valueOf(staProtocol.getWorkNo()));//鏍规嵁绔欑偣宸ヤ綔鍙峰拰灏忚溅宸ヤ綔鑼冨洿妫�绱换鍔℃。
+            WrkMastSta wrkMastSta = wrkMastStaMapper.selectByWrkNo(staProtocol.getWorkNo());//鏍规嵁绔欑偣宸ヤ綔鍙峰拰灏忚溅宸ヤ綔鑼冨洿妫�绱换鍔℃。
             if( null == wrkMastSta ) {
                 News.infoNoLog("" + mark + " - 1" + " - 4" + " - 鏌ヨ鏃犲緟鍏ュ簱鏁版嵁--wrk_sts0, 宸ヤ綔鍙�={}", staProtocol.getWorkNo());
                 continue;
@@ -3472,20 +3542,12 @@
                 continue;
             }
             WrkMastSta wrkMastSta1 = wrkMastStaMapper.selectByWorkSta(1, (int) rgvProtocol.getRgvNo());
-            wrkMastSta.setWorkSta(wrkMastSta1 != null ? 2 : 1);//鑻�1鍙峰伐浣嶆湁浠诲姟缁�2鍙峰伐浣�
+            wrkMastSta.setWorkSta(wrkMastSta1 !=null ? 2 : 1);//鑻�1鍙峰伐浣嶆湁浠诲姟缁�2鍙峰伐浣�
             wrkMastSta.setRgvNo((int) rgvProtocol.getRgvNo());
             boolean sign = false;
             Short direction = 1;//宸ヤ綅1鏂瑰悜
             //鑻ュ彇璐т负宸ヤ綅2涓斿彇璐у彛鍓嶄竴绔欑偣鏈夌墿锛岀粰鍙屽伐浣嶅悓鏃朵笅鍙戞寚浠�
-            if(wrkMastSta.getWorkSta() == 1 && staProtocol2 != null && staProtocol2.isLoading() && staProtocol2.getWorkNo() > 0 && sign){
-                WrkMastSta wrkMastSta3 = wrkMastStaMapper.selectNoInterfere(route, route, Long.valueOf(staProtocol2.getWorkNo()));//鏍规嵁绔欑偣宸ヤ綔鍙峰拰灏忚溅宸ヤ綔鑼冨洿妫�绱换鍔℃。
-                wrkMastSta3.setWorkSta(2);
-                wrkMastSta3.setRgvNo((int) rgvProtocol.getRgvNo());
-                sign =  rgvTakeFullAll2(basRgvMap.getRgvNo(), wrkMastSta, wrkMastSta3);
-            }else{
-                sign = rgvTakeFullAll(basRgvMap.getRgvNo(), wrkMastSta,direction); //鍛戒护涓嬪彂
-            }
-            if (sign){
+            if(Objects.equals(rgvProtocol.getRgvPosI2(), wrkMastSta.getStaEnd()) && wrkMastSta.getWrkSts() == 4){
                 wrkMastSta.setWrkSts(1);
                 try{
                     wrkMastStaMapper.updateById(wrkMastSta);
@@ -3493,11 +3555,17 @@
                 }catch (Exception e){
                     log.error("鏇存柊灏忚溅浠诲姟澶辫触");
                 }
+            }
+            if(wrkMastSta.getWorkSta() == 1 && staProtocol2 != null && staProtocol2.isLoading() && staProtocol2.getWorkNo() > 0 && sign){
+//                WrkMastSta wrkMastSta3 = wrkMastStaMapper.selectNoInterfere(route, route, Long.valueOf(staProtocol2.getWorkNo()));//鏍规嵁绔欑偣宸ヤ綔鍙峰拰灏忚溅宸ヤ綔鑼冨洿妫�绱换鍔℃。
+//                wrkMastSta3.setWorkSta(2);
+//                wrkMastSta3.setRgvNo((int) rgvProtocol.getRgvNo());
+//                sign =  rgvTakeFullAll2(basRgvMap.getRgvNo(), wrkMastSta, wrkMastSta3);
+            }else{
+                sign = rgvTakeFullAll(basRgvMap.getRgvNo(), wrkMastSta,direction,2); //鍛戒护涓嬪彂
+            }
+            if (sign){
                 rgvThread.setPakIn(false);//鍏ュ簱涓嶅厑璁�
-                boolean signMap = rgvMapUpdate(basRgvMap, wrkMastSta.getStaStart(), wrkMastSta.getStaEnd(),"2526");
-                if (!signMap){
-                    log.error("璐х墿鎼繍浠诲姟锛氬伐浣滃彿{}鎵�灞炰换鍔′笅鍙戝悗鍦板浘鍚屾澶辫触",wrkMastSta.getWrkNo());
-                }
             } else {
                 log.error("宸ヤ綔鍙穥}鎵�灞炰换鍔′笅鍙戝け璐�",wrkMastSta.getWrkNo());
             }
@@ -3946,61 +4014,45 @@
     /*
      * 灏忚溅鍙栬揣鑷冲伐浣嶄换鍔�
      * */
-    public synchronized boolean rgvTakeFullAll(Integer rgvId,WrkMastSta wrkMastSta,Short direction){
+    public synchronized boolean rgvTakeFullAll(Integer rgvId,WrkMastSta wrkMastSta,Short direction,Integer pos){
         try{
             //  鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
             RgvCommand rgvCommand = new RgvCommand();
             boolean pakIn1 = true;
             boolean pakIn2 = true;
             rgvCommand.setRgvNo(rgvId); // RGV缂栧彿
-            if(wrkMastSta.getWrkSts() == 0 || wrkMastSta.getWrkSts() == 4){//鍒濆鍚庤璧�
-                if(wrkMastSta.getWorkSta() == 2){//鍑哄簱RGV鍙栬揣琛岃蛋
-                    rgvCommand.setAckFinish2(false);  // 宸ヤ綅2浠诲姟瀹屾垚纭浣�
-                    rgvCommand.setTaskNo2(Math.toIntExact(wrkMastSta.getWrkNo())); // 宸ヤ綅2宸ヤ綔鍙�
-                    rgvCommand.setTaskStatus2(RgvTaskStatusType.X_MOVE); // 宸ヤ綅2浠诲姟妯″紡:  鍙栨斁璐�
-                    rgvCommand.setEndStaNo2(wrkMastSta.getWrkEnd());   //宸ヤ綅2 鏀捐揣鍚庤鍘荤殑浣嶇疆
-                    rgvCommand.setTargetPosition1(wrkMastSta.getStaStart());   //宸ヤ綅2鐩爣绔欑偣
-//                    rgvCommand.setDirection1((short) 2);
-//                    rgvCommand.setWrkTaskMove2(direction);
-                    rgvCommand.setCommand(true);   //宸ヤ綅1浠诲姟纭
-                    pakIn1 = false;
-                }else{  //鍏ュ簱RGV鍙栬揣琛岃蛋
+            if(wrkMastSta.getWrkSts() == 0){//鍒濆鍚庤璧�
                     rgvCommand.setAckFinish1(false);  // 宸ヤ綅1浠诲姟瀹屾垚纭浣�
                     rgvCommand.setTaskNo1(Math.toIntExact(wrkMastSta.getWrkNo())); // 宸ヤ綅1宸ヤ綔鍙�
                     rgvCommand.setTaskStatus1(RgvTaskStatusType.X_MOVE); // 宸ヤ綅1浠诲姟妯″紡:  鍙栨斁璐�
                     rgvCommand.setEndStaNo1(wrkMastSta.getWrkEnd());   //宸ヤ綅1 鏀捐揣鍚庤鍘荤殑浣嶇疆
                     rgvCommand.setTargetPosition1(wrkMastSta.getStaStart());   //宸ヤ綅1鐩爣绔欑偣
-//                    rgvCommand.setDirection1((short) 1);
-//                    rgvCommand.setDirection1(direction);
                     rgvCommand.setCommand(true);   //宸ヤ綅1浠诲姟纭
+//                }
+                wrkMastSta.setWrkSts(4);
+                try{
+                    wrkMastStaMapper.updateById(wrkMastSta);
+                    log.error("鏇存柊灏忚溅浠诲姟鎴愬姛");
+                }catch (Exception e){
+                    log.error("鏇存柊灏忚溅浠诲姟澶辫触");
                 }
-                if(!pakIn1){
-                    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;
-                    }
-                }else{
-                    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;
-                    }
+                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;
                 }
             }
             if(wrkMastSta.getWrkSts() == 1){//鍙栬揣
-                if(wrkMastSta.getWorkSta() == 2){//鍑哄簱RGV鍙栬揣
+                if(pos == 2){//鍑哄簱RGV鍙栬揣
                     rgvCommand.setAckFinish2(false);  // 宸ヤ綅2浠诲姟瀹屾垚纭浣�
                     rgvCommand.setTaskNo2(Math.toIntExact(wrkMastSta.getWrkNo())); // 宸ヤ綅2宸ヤ綔鍙�
                     rgvCommand.setTaskStatus2(RgvTaskStatusType.FETCH); // 宸ヤ綅2浠诲姟妯″紡:  鍙栨斁璐�
                     rgvCommand.setEndStaNo2(wrkMastSta.getWrkEnd());   //宸ヤ綅2 鏀捐揣鍚庤鍘荤殑浣嶇疆
                     rgvCommand.setTargetPosition1(wrkMastSta.getStaStart());   //宸ヤ綅2鐩爣绔欑偣
-                    rgvCommand.setDirection1((short)2);
-                    rgvCommand.setWrkTaskMove2(direction);
+                    rgvCommand.setDirection2((short)2);
+//                    rgvCommand.setWrkTaskMove2(direction);
                     rgvCommand.setCommand(true);   //宸ヤ綅1浠诲姟纭
                     pakIn1 = false;
                 }else{  //鍏ュ簱RGV鍙栬揣
@@ -4010,11 +4062,11 @@
                     rgvCommand.setEndStaNo1(wrkMastSta.getWrkEnd());   //宸ヤ綅1 鏀捐揣鍚庤鍘荤殑浣嶇疆
                     rgvCommand.setTargetPosition1(wrkMastSta.getStaStart());   //宸ヤ綅1鐩爣绔欑偣
                     rgvCommand.setDirection1((short)1);
-                    rgvCommand.setWrkTaskMove1(direction);
+//                    rgvCommand.setWrkTaskMove1(direction);
                     rgvCommand.setCommand(true);   //宸ヤ綅1浠诲姟纭
                 }
                 if(!pakIn1){
-                    if (!MessageQueue.offer(SlaveType.Rgv, rgvId, new Task(4, rgvCommand))) {
+                    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;
@@ -4022,7 +4074,7 @@
                         return true;
                     }
                 }else{
-                    if (!MessageQueue.offer(SlaveType.Rgv, rgvId, new Task(5, rgvCommand))) {
+                    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;
@@ -4032,13 +4084,13 @@
                 }
             }
             if(wrkMastSta.getWrkSts() == 2) {//鏀捐揣
-                if((wrkMastSta.getWorkSta() == 2)){ //宸ヤ綅2浠诲姟鏀捐揣
+                if((pos == 2)){ //宸ヤ綅2浠诲姟鏀捐揣
                     rgvCommand.setAckFinish2(false);  // 宸ヤ綅2浠诲姟瀹屾垚纭浣�
                     rgvCommand.setTaskNo2(Math.toIntExact(wrkMastSta.getWrkNo())); // 宸ヤ綅2宸ヤ綔鍙�
                     rgvCommand.setTaskStatus2(RgvTaskStatusType.PUT); // 宸ヤ綅2浠诲姟妯″紡:  鏀捐揣
                     rgvCommand.setEndStaNo2(wrkMastSta.getWrkEnd());   //宸ヤ綅2 鏀捐揣鍚庤鍘荤殑浣嶇疆
                     rgvCommand.setTargetPosition1(wrkMastSta.getStaEnd());   //宸ヤ綅2鐩爣绔欑偣
-                    rgvCommand.setDirection1((short)2);
+                    rgvCommand.setDirection2((short)2);
                     rgvCommand.setCommand(true);   //宸ヤ綅1浠诲姟纭
                     pakIn2 = false;
                 }else{  //宸ヤ綅1浠诲姟鏀捐揣
@@ -4050,7 +4102,7 @@
                     rgvCommand.setDirection1((short)1);
                     rgvCommand.setCommand(true);   //宸ヤ綅1浠诲姟纭
                 }
-                if(!pakIn2){
+                if(pakIn2){
                     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));
@@ -4315,6 +4367,43 @@
         }
     }
 
+    /*
+     * 灏忚溅澶嶄綅
+     * */
+    public synchronized boolean rgvComplete2(Integer rgvId,Integer step,Long workNo){
+        try{
+            //  鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
+            if (!MessageQueue.offer(SlaveType.Rgv, rgvId, new Task(step, new RgvCommand(),workNo))) {
+                //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 rgvComplete3(Integer rgvId,Integer step,Long workNo,Short moveSta){
+        try{
+            //  鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
+            if (!MessageQueue.offer(SlaveType.Rgv, rgvId, new Task(step, new RgvCommand(),workNo,moveSta))) {
+                //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;
+        }
+    }
+
 
 
 
diff --git a/src/main/java/com/zy/core/MainProcess.java b/src/main/java/com/zy/core/MainProcess.java
index a6a86c4..16f3094 100644
--- a/src/main/java/com/zy/core/MainProcess.java
+++ b/src/main/java/com/zy/core/MainProcess.java
@@ -37,8 +37,8 @@
         thread = new Thread(this::crnAndDevRun);
         thread.start();
 
-        armThread = new Thread(this::roboticArmDispatch);
-        armThread.start();
+//        armThread = new Thread(this::roboticArmDispatch);
+//        armThread.start();
     }
     private void crnAndDevRun() {
         while (!Thread.currentThread().isInterrupted()) {
@@ -137,6 +137,9 @@
                 }
                 //瀹屾垚灏忚溅浠诲姟
                 mainService.rgvCompleteWrkMastSta();
+
+                //宸ヤ綅绉诲姩
+//                mainService.rgvStaMove();
                 /////////////////////////////////////RGV璋冨害/////////////////////////////////////
 
             } catch (Exception e) {
@@ -157,12 +160,12 @@
                     continue;
                 }
 
-//                //arm浠诲姟瀹屾垚
-//                mainService.armMissionAccomplished();
-//                mainService.armMissionAccomplishedScanToCheckIn();
-//
-//                //arm浠诲姟涓嬪彂
-//                mainService.armTaskAssignment();
+                //arm浠诲姟瀹屾垚
+                mainService.armMissionAccomplished();
+                mainService.armMissionAccomplishedScanToCheckIn();
+
+                //arm浠诲姟涓嬪彂
+                mainService.armTaskAssignment();
 
             } catch (Exception e) {
                 e.printStackTrace();
diff --git a/src/main/java/com/zy/core/enums/RgvModeType.java b/src/main/java/com/zy/core/enums/RgvModeType.java
index 3a344bb..139d63d 100644
--- a/src/main/java/com/zy/core/enums/RgvModeType.java
+++ b/src/main/java/com/zy/core/enums/RgvModeType.java
@@ -5,8 +5,8 @@
     NONE(-1, "绂荤嚎"),
     STOP(0, "鍏虫満"),
     HAND(1, "鎵嬪姩"),
-    HALF_AUTO(2, "鍗婅嚜鍔�"),
-    AUTO(3, "鑷姩"),
+//    HALF_AUTO(2, "鍗婅嚜鍔�"),
+    AUTO(2, "鑷姩"),
     AUTO2(100, "鍏跺畠"),
     ;
 
diff --git a/src/main/java/com/zy/core/model/Task.java b/src/main/java/com/zy/core/model/Task.java
index c3cf784..9802ae9 100644
--- a/src/main/java/com/zy/core/model/Task.java
+++ b/src/main/java/com/zy/core/model/Task.java
@@ -12,6 +12,10 @@
 
     private Object data;
 
+    private Long workNo;
+
+    private Short moveSta;
+
     public Task() {
     }
 
@@ -19,4 +23,17 @@
         this.step = step;
         this.data = data;
     }
+
+    public Task(Integer step, Object data,Long workNo) {
+        this.step = step;
+        this.data = data;
+        this.workNo = workNo;
+    }
+
+    public Task(Integer step, Object data,Long workNo,Short moveSta) {
+        this.step = step;
+        this.data = data;
+        this.workNo = workNo;
+        this.moveSta = moveSta;
+    }
 }
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 ad4bcae..da1eedd 100644
--- a/src/main/java/com/zy/core/model/protocol/RgvProtocol.java
+++ b/src/main/java/com/zy/core/model/protocol/RgvProtocol.java
@@ -326,6 +326,35 @@
         return map.get(RgvPos);
     }
 
+    public Integer getRgvPosI2() {
+        if (RgvPos == null) return 0;
+
+        // key: 绔欑偣鍙�  value: 鍩哄噯鐗╃悊浣嶇疆
+        Map<Integer, Integer> posMap = new HashMap<>();
+        posMap.put(1004, 6534);
+        posMap.put(1007, 33634);
+        posMap.put(1010, 75174);
+        posMap.put(1014, 102124);
+        posMap.put(1018, 138224);
+        posMap.put(1021, 178034);
+        posMap.put(1024, 219684);
+        posMap.put(1028, 246724);
+        posMap.put(1031, 288194);
+        posMap.put(1035, 315204);
+        int tolerance = 50; // 鍏佽璇樊鑼冨洿
+
+        for (Map.Entry<Integer, Integer> entry : posMap.entrySet()) {
+            int site = entry.getKey();
+            int basePos = entry.getValue();
+            if (Math.abs(RgvPos - basePos) <= tolerance) {
+                return site;
+            }
+        }
+
+        return 0; // 娌″尮閰嶅埌绔欑偣
+    }
+
+
     @Override
     public RgvProtocol clone() {
         try {
diff --git a/src/main/java/com/zy/core/model/protocol/StaProtocol.java b/src/main/java/com/zy/core/model/protocol/StaProtocol.java
index 0e2be39..71d4c4e 100644
--- a/src/main/java/com/zy/core/model/protocol/StaProtocol.java
+++ b/src/main/java/com/zy/core/model/protocol/StaProtocol.java
@@ -3,6 +3,9 @@
 import com.zy.asrs.entity.BasDevp;
 import lombok.Data;
 
+import java.util.HashMap;
+import java.util.Map;
+
 /**
  * 杈撻�佺嚎plc鍗曚釜绔欑偣璇︾粏淇℃伅
  * Created by vincent on 2020/8/6
@@ -131,5 +134,32 @@
         }
         return null;
     }
+//    public Integer getNearbySta() {
+//        if (getNearbySta == null) return 0;
+//
+//        // key: 绔欑偣鍙�  value: 鍩哄噯鐗╃悊浣嶇疆
+//        Map<Integer, Integer> posMap = new HashMap<>();
+//        posMap.put(1004, 6534);
+//        posMap.put(1007, 33634);
+//        posMap.put(1010, 75174);
+//        posMap.put(1014, 102124);
+//        posMap.put(1018, 138224);
+//        posMap.put(1021, 178034);
+//        posMap.put(1024, 219684);
+//        posMap.put(1028, 246724);
+//        posMap.put(1031, 288194);
+//        posMap.put(1035, 315204);
+//        int tolerance = 50; // 鍏佽璇樊鑼冨洿
+//
+//        for (Map.Entry<Integer, Integer> entry : posMap.entrySet()) {
+//            int site = entry.getKey();
+//            int basePos = entry.getValue();
+//            if (Math.abs(getNearbySta - basePos) <= tolerance) {
+//                return site;
+//            }
+//        }
+//
+//        return 0; // 娌″尮閰嶅埌绔欑偣
+//    }
 
 }
diff --git a/src/main/java/com/zy/core/thread/RgvThread.java b/src/main/java/com/zy/core/thread/RgvThread.java
index 1235f3e..4cfa9fa 100644
--- a/src/main/java/com/zy/core/thread/RgvThread.java
+++ b/src/main/java/com/zy/core/thread/RgvThread.java
@@ -100,7 +100,7 @@
                         }
                         command.setRgvNo(slave.getId()); // RGV缂栧彿
                         command.setTaskNo1(0); // 宸ヤ綔鍙�
-                        command.setAckFinish1(true);  // 浠诲姟瀹屾垚纭浣�
+                        command.setAckFinish1(false);  // 浠诲姟瀹屾垚纭浣�
                         command.setTaskStatus1(RgvTaskStatusType.NONE); // 浠诲姟妯″紡
                         command.setTargetPosition1( 0);     // 婧愮珯
                         command.setEndStaNo1(0);     // 鐩爣绔�
@@ -116,9 +116,9 @@
                         }
                         command2.setRgvNo(slave.getId()); // RGV缂栧彿
                         command2.setTaskNo2(0); // 宸ヤ綔鍙�
-                        command2.setAckFinish2(true);  // 浠诲姟瀹屾垚纭浣�
+                        command2.setAckFinish2(false);  // 浠诲姟瀹屾垚纭浣�
                         command2.setTaskStatus2(RgvTaskStatusType.NONE); // 浠诲姟妯″紡
-                        command2.setTargetPosition2( 0);     // 婧愮珯
+                        command2.setTargetPosition2(0);     // 婧愮珯
                         command2.setEndStaNo2(0);     // 鐩爣绔�
                         command2.setWrkTaskPri((short)0);
                         command2.setWrkTaskMove2((short)0);
@@ -131,11 +131,13 @@
                             command3 = new RgvCommand();
                         }
                         command3.setRgvNo(slave.getId()); // RGV缂栧彿
-                        command3.setAckFinish1(true);  // 浠诲姟瀹屾垚纭浣�
+                        command3.setAckFinish1(false);  // 浠诲姟瀹屾垚纭浣�
                         command3.setTaskStatus1(RgvTaskStatusType.NONE); // 浠诲姟妯″紡
                         command3.setTargetPosition1( 0);     // 婧愮珯
+                        command3.setWrkTaskMove1(task.getMoveSta() !=null ? task.getMoveSta() : 0);
                         command3.setCommand(false);
                         command3.setWrkTaskPri((short)0);
+                        command3.setTaskNo1(Math.toIntExact(task.getWorkNo()));
                         write1(command3);
                         break;
                     case 8 :
@@ -144,11 +146,13 @@
                             command4 = new RgvCommand();
                         }
                         command4.setRgvNo(slave.getId()); // RGV缂栧彿
-                        command4.setAckFinish2(true);  // 浠诲姟瀹屾垚纭浣�
+                        command4.setAckFinish2(false);  // 浠诲姟瀹屾垚纭浣�
                         command4.setTaskStatus2(RgvTaskStatusType.NONE); // 浠诲姟妯″紡
-                        command4.setTargetPosition2( 0);     // 灏忚溅鐩爣绔欐竻闆�
+                        command4.setTargetPosition2(0);     // 灏忚溅鐩爣绔欐竻闆�
+                        command4.setWrkTaskMove2(task.getMoveSta() !=null ? task.getMoveSta() : 0);
                         command4.setCommand(false);
                         command4.setWrkTaskPri((short)0);
+                        command4.setTaskNo2(Math.toIntExact(task.getWorkNo()));
                         write2(command4);
                         break;
                     // 鍥炲師鐐�  閬胯
@@ -539,7 +543,7 @@
             return false;
         }
 
-        OperateResultExOne<byte[]> result1 = siemensNet.Read("DB100.0", (short) 34);
+        OperateResultExOne<byte[]> result1 = siemensNet.Read("DB100.0", (short) 39);
 //        OperateResultExOne<byte[]> result4 = siemensNet.Read("DB100.10", (short) 2);
         if (result1.IsSuccess){
             RgvCommand one = new RgvCommand();
@@ -549,13 +553,6 @@
             one.setTaskNo1(siemensNet.getByteTransform().TransInt32(result1.Content, 10));
             one.setDirection1(siemensNet.getByteTransform().TransInt16(result1.Content, 14));
             one.setWrkTaskMove1(siemensNet.getByteTransform().TransInt16(result1.Content, 36));
-//                one.setAckFinish1(siemensNet.getByteTransform().TransInt16(resultRead.Content, 0));
-//            one.setTaskNo1(siemensNet.getByteTransform().TransInt16(result3.Content, 2));
-//            one.setTaskMode1(siemensNet.getByteTransform().TransInt16(result3.Content, 4));
-//            one.setSourceStaNo1(siemensNet.getByteTransform().TransInt16(result3.Content, 6));
-//            one.setDestinationStaNo1(siemensNet.getByteTransform().TransInt16(result3.Content, 8));
-//            one.setCommand(siemensNet.getByteTransform().TransInt16(result4.Content, 0));
-
             News.error("RGV鍛戒护涓嬪彂鍓嶈鍙栫姸鎬乕id:{}] >>>>> 鍐欏叆[{}],===>>鍥炶[{}]", slave.getId(), JSON.toJSON(command),JSON.toJSON(one));
         }
 
@@ -564,7 +561,7 @@
         if (result2.IsSuccess){
             News.error("涓嬪彂鍓嶆妸杞﹀瓙纭浣嶇疆涓篺alse");
         }
-        byte[] writeBytes = new byte[34];
+        byte[] writeBytes = new byte[40];
         command.setRgvNo(slave.getId());
 
         writeInt32(writeBytes, 0, command.getTargetPosition1());
@@ -573,7 +570,7 @@
         writeInt32(writeBytes, 10, command.getTaskNo1());
         writeInt16(writeBytes, 14, (short)command.getDirection1());
         writeBool(writeBytes, 32, 0, command.getAckFinish1());
-        writeInt16(writeBytes, 36, (short)command.getWrkTaskMove1());
+        writeInt16(writeBytes, 38, (short)command.getWrkTaskMove1());
 
         OperateResult result = siemensNet.Write("DB100.0", writeBytes);
 
@@ -589,10 +586,10 @@
         //RGV浠诲姟鍐欏叆鍚庯紝鍥炶涓�娆★紝鐪嬫槸鍚︽垚鍔�
         Thread.sleep(400);
         try {
-            OperateResultExOne<byte[]> resultRead = siemensNet.Read("DB100.0", (short) 34);
+            OperateResultExOne<byte[]> resultRead = siemensNet.Read("DB100.0", (short) 39);
             if (resultRead.IsSuccess){
                 RgvCommand one = new RgvCommand();
-                one.setWrkTaskMove1(siemensNet.getByteTransform().TransInt16(resultRead.Content, 36));
+                one.setWrkTaskMove1(siemensNet.getByteTransform().TransInt16(resultRead.Content, 38));
                 one.setDirection1(siemensNet.getByteTransform().TransInt16(resultRead.Content, 14));
                 one.setTaskNo1(siemensNet.getByteTransform().TransInt32(resultRead.Content, 10));
                 one.setTaskStatus1(siemensNet.getByteTransform().TransInt16(resultRead.Content, 8));
@@ -628,7 +625,7 @@
             News.error("RGV鍛戒护鍦板潃鍐欏叆鍚庡洖璇诲嚭閿�");
         }
 
-        if (command.getAckFinish1()) {
+        if (!command.getAckFinish1()) {
             if (result.IsSuccess) {
                 Thread.sleep(300);
                 //浠诲姟涓嬪彂娆℃暟
@@ -636,7 +633,10 @@
 
                 do {
                     writeCount2++;
-                    boolean commandFinish = false;
+                    boolean commandFinish = true;
+                    if(command.getCommand()){
+                        commandFinish = false;
+                    }
                     result = siemensNet.Write("DB100.32.0", commandFinish);
                     if(result.IsSuccess){
                         //RGV浠诲姟鍐欏叆鍚庯紝鍥炶涓�娆★紝鐪嬫槸鍚︽垚鍔�
@@ -708,10 +708,10 @@
             return false;
         }
 
-        OperateResultExOne<byte[]> result1 = siemensNet.Read("DB100.0", (short) 34);
+        OperateResultExOne<byte[]> result1 = siemensNet.Read("DB100.0", (short) 40);
         if (result1.IsSuccess){
             RgvCommand one = new RgvCommand();
-            one.setTargetPosition2(siemensNet.getByteTransform().TransInt32(result1.Content, 16));
+            one.setTargetPosition1(siemensNet.getByteTransform().TransInt32(result1.Content, 0));
             one.setEndStaNo2(siemensNet.getByteTransform().TransInt32(result1.Content, 20));
             one.setTaskStatus2(siemensNet.getByteTransform().TransInt16(result1.Content, 24));
             one.setTaskNo2(siemensNet.getByteTransform().TransInt32(result1.Content, 26));
@@ -727,10 +727,10 @@
         }
 
 
-        byte[] writeBytes = new byte[34];
+        byte[] writeBytes = new byte[42];
         command.setRgvNo(slave.getId());
 
-        writeInt32(writeBytes, 16, command.getTargetPosition1());
+        writeInt32(writeBytes, 0, command.getTargetPosition1());
         writeInt32(writeBytes, 20, command.getEndStaNo2());
         writeInt16(writeBytes, 24, (short)command.getTaskStatus2());
         writeInt32(writeBytes, 26, command.getTaskNo2());
@@ -754,7 +754,7 @@
         //RGV浠诲姟鍐欏叆鍚庯紝鍥炶涓�娆★紝鐪嬫槸鍚︽垚鍔�
         Thread.sleep(400);
         try {
-            OperateResultExOne<byte[]> resultRead = siemensNet.Read("DB100.0", (short) 34);
+            OperateResultExOne<byte[]> resultRead = siemensNet.Read("DB100.0", (short) 42);
             if (resultRead.IsSuccess){
                 RgvCommand one = new RgvCommand();
                 one.setWrkTaskMove2(siemensNet.getByteTransform().TransInt16(resultRead.Content, 38));
@@ -762,13 +762,13 @@
                 one.setTaskNo2(siemensNet.getByteTransform().TransInt32(resultRead.Content, 26));
                 one.setTaskStatus2(siemensNet.getByteTransform().TransInt16(resultRead.Content, 24));
                 one.setEndStaNo2(siemensNet.getByteTransform().TransInt32(resultRead.Content, 20));
-                one.setTargetPosition2(siemensNet.getByteTransform().TransInt32(resultRead.Content, 16));
+                one.setTargetPosition1(siemensNet.getByteTransform().TransInt32(resultRead.Content, 0));
                 if (
                         !command.getDirection2().equals(one.getDirection2()) ||
                                 !command.getTaskNo2().equals(one.getTaskNo2()) ||
                                 !command.getTaskStatus2().equals(one.getTaskStatus2()) ||
                                 !command.getEndStaNo2().equals(one.getEndStaNo2()) ||
-                                !command.getTargetPosition2().equals(one.getTargetPosition2()) ||
+                                !command.getTargetPosition1().equals(one.getTargetPosition1()) ||
                                 !command.getWrkTaskMove2().equals(one.getWrkTaskMove2())
                 ) {
                     try{
@@ -793,7 +793,7 @@
             News.error("RGV鍛戒护鍦板潃鍐欏叆鍚庡洖璇诲嚭閿�");
         }
 
-        if (command.getAckFinish1()) {
+        if (!command.getAckFinish2()) {
             if (result.IsSuccess) {
                 Thread.sleep(300);
                 //浠诲姟涓嬪彂娆℃暟
@@ -801,7 +801,10 @@
 
                 do {
                     writeCount2++;
-                    boolean commandFinish = false;
+                    boolean commandFinish = true;
+                    if(command.getCommand()){
+                        commandFinish = false;
+                    }
                     result = siemensNet.Write("DB100.32.1", commandFinish);
                     if(result.IsSuccess){
                         //RGV浠诲姟鍐欏叆鍚庯紝鍥炶涓�娆★紝鐪嬫槸鍚︽垚鍔�
diff --git a/src/main/java/com/zy/core/thread/SiemensDevpThread.java b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
index b203b7b..e2581cb 100644
--- a/src/main/java/com/zy/core/thread/SiemensDevpThread.java
+++ b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
@@ -287,13 +287,13 @@
                 Integer offset3 = getOffsetBySiteId2(siteId);
                 staProtocol.setWorkNo(siemensS7Net.getByteTransform().TransInt32(result.Content, offset + offset2));     // 宸ヤ綔鍙�
 
-                staProtocol.setStaNo((short) siemensS7Net.getByteTransform().TransInt32(result.Content, offset + offset2 + 12));   // 鐩爣绔�
+                staProtocol.setStaNo(siemensS7Net.getByteTransform().TransInt16(result.Content, offset + offset2 + 12));   // 鐩爣绔�
 
                 boolean[] status = siemensS7Net.getByteTransform().TransBool(result.Content, offset + offset3, 2);
-                staProtocol.setAutoing(status[0]);  // 鑷姩
+                staProtocol.setAutoing(!status[0]);  // 鑷姩
                 boolean[] status1 = siemensS7Net.getByteTransform().TransBool(result.Content, offset + offset3 - 4, 3);
 
-                staProtocol.setLoading(status1[0]);  // 鏈夌墿
+                staProtocol.setLoading(!status1[0]);  // 鏈夌墿
                 if(staProtocol.isLoading()){
                     staProtocol.setInEnable(false); // 鍙叆
                     staProtocol.setOutEnable(false);// 鍙嚭
@@ -313,22 +313,41 @@
                 }
             }
         }
-//        BasRgvMapService basRgvMapService = SpringUtils.getBean(BasRgvMapService.class);
-        //RGV灏忚溅1
+        BasRgvMapService basRgvMapService = SpringUtils.getBean(BasRgvMapService.class);
+//        RGV灏忚溅1
 //        Thread.sleep(100);
-//        OperateResultExOne<byte[]> result3 = siemensS7Net.Read("DB50.200",(short)10);
+//        OperateResultExOne<byte[]> result3 = siemensS7Net.Read("DB101.",(short)27);
 //        if (result3.IsSuccess) {
 //            BasRgvMap basRgvMap = basRgvMapService.selectByRgvNo((int) siemensS7Net.getByteTransform().TransInt16(result3.Content, 0));
 //            if (!Cools.isEmpty(basRgvMap)){
-//                Integer siteId = 1;
-//                StaProtocol staProtocol = station.get(siteId);
-//                if (null == staProtocol) {
-//                    staProtocol = new StaProtocol();
-//                    staProtocol.setSiteId(siteId);
-//                    station.put(siteId, staProtocol);
+//                Integer siteId1 = 1;
+//                Integer siteId2 = 2;
+//                StaProtocol staProtocol1 = station.get(siteId1);
+//                StaProtocol staProtocol2 = station.get(siteId1);
+//
+//                if (null == staProtocol1) {
+//                    staProtocol1 = new StaProtocol();
+//                    staProtocol1.setSiteId(siteId1);
+//                    station.put(siteId1, staProtocol1);
 //                }
-//                staProtocol.setAutoing(true);
-//                staProtocol.setNearbySta(String.valueOf(siemensS7Net.getByteTransform().TransInt16(result3.Content, 8)));
+//                if (null == staProtocol2) {
+//                    staProtocol2 = new StaProtocol();
+//                    staProtocol2.setSiteId(siteId2);
+//                    station.put(siteId2, staProtocol2);
+//
+//                }
+//                String pos = String.valueOf(getRgvPosI(siemensS7Net.getByteTransform().TransInt32(result.Content, 4)));
+//                staProtocol1.setAutoing(siemensS7Net.getByteTransform().TransInt16(result.Content, 2) == 2);
+//                staProtocol2.setAutoing(siemensS7Net.getByteTransform().TransInt16(result.Content, 2) == 2);
+//                staProtocol1.setNearbySta(pos);
+//                staProtocol1.setStaNo((short) siemensS7Net.getByteTransform().TransInt32(result.Content, 8));
+//                staProtocol2.setStaNo((short) siemensS7Net.getByteTransform().TransInt32(result.Content, 8));
+//                staProtocol1.setWorkNo(siemensS7Net.getByteTransform().TransInt32(result.Content, 16));
+//                staProtocol2.setWorkNo(siemensS7Net.getByteTransform().TransInt32(result.Content, 20));
+//                boolean[] status1 = siemensS7Net.getByteTransform().TransBool(result.Content, 24, 2);
+//                staProtocol1.setLoading(status1[0]);
+//                staProtocol2.setLoading(status1[1]);
+//                //                staProtocol.setNearbySta(String.valueOf(siemensS7Net.getByteTransform().TransInt16(result3.Content, 8)));
 //            }
 //        }
         //RGV灏忚溅2
@@ -547,6 +566,33 @@
             }
         }
     }
+    public Integer getRgvPosI(Integer pos) {
+        if (pos == null) return 0;
+
+        // key: 绔欑偣鍙�  value: 鍩哄噯鐗╃悊浣嶇疆
+        Map<Integer, Integer> posMap = new HashMap<>();
+        posMap.put(1004, 6534);
+        posMap.put(1007, 33634);
+        posMap.put(1010, 75174);
+        posMap.put(1014, 102124);
+        posMap.put(1018, 138224);
+        posMap.put(1021, 178034);
+        posMap.put(1024, 219684);
+        posMap.put(1028, 246724);
+        posMap.put(1031, 288194);
+        posMap.put(1035, 315204);
+        int tolerance = 50; // 鍏佽璇樊鑼冨洿
+
+        for (Map.Entry<Integer, Integer> entry : posMap.entrySet()) {
+            int site = entry.getKey();
+            int basePos = entry.getValue();
+            if (Math.abs(pos - basePos) <= tolerance) {
+                return site;
+            }
+        }
+
+        return 0; // 娌″尮閰嶅埌绔欑偣
+    }
 
     /**
      * 蹇冭烦
diff --git a/src/main/resources/mapper/WrkMastStaMapper.xml b/src/main/resources/mapper/WrkMastStaMapper.xml
index 2994c8f..4218dc7 100644
--- a/src/main/resources/mapper/WrkMastStaMapper.xml
+++ b/src/main/resources/mapper/WrkMastStaMapper.xml
@@ -101,6 +101,13 @@
         and rgv_no = #{rgvNo}
     </select>
 
+    <select id="selectByWorkStaList" resultMap="BaseResultMap">
+        select * from asr_wrk_mast_sta
+        where work_sta = #{workSta}
+          and rgv_no = #{rgvNo}
+        order by update_time
+    </select>
+
     <select id="selectAllWrkCount" resultType="java.lang.Integer">
         select count(1) from asr_wrk_mast_sta
         where 1=1

--
Gitblit v1.9.1