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/asrs/service/impl/MainServiceImpl.java |  665 ++++++++++++++++++++++++++++++++++--------------------
 1 files changed, 415 insertions(+), 250 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 ca6a12f..655b13f 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -8,8 +8,10 @@
 import com.core.common.DateUtils;
 import com.core.exception.CoolException;
 import com.zy.asrs.entity.*;
+import com.zy.asrs.entity.param.ArmOrderAssignmentParam;
 import com.zy.asrs.entity.param.ArmTaskAssignmentParam;
 import com.zy.asrs.entity.param.CombParam;
+import com.zy.asrs.entity.result.OrderDetlValueResultUtil;
 import com.zy.asrs.mapper.*;
 import com.zy.asrs.service.*;
 import com.zy.asrs.utils.PostMesDataUtils;
@@ -2788,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);
+        }
+    }
     /**
      *  瀹屾垚灏忚溅浠诲姟
      */
@@ -2809,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();
@@ -2845,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("鏇存柊灏忚溅浠诲姟鎴愬姛");
@@ -2874,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 {
@@ -2934,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);
@@ -2966,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());
                     }
                 }
                 //褰撳皬杞︽棤浠诲姟鏃跺彇娑堥攣瀹�
@@ -3059,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()){//鍏ュ簱鏀捐揣绔欑偣
@@ -3082,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;
                     }
@@ -3094,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());
                     }
@@ -3145,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;
                     }
@@ -3157,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());
                     }
@@ -3215,17 +3284,19 @@
             }
 
             // 鍙湁褰揜GV绌洪棽 骞朵笖 鏃犱换鍔℃椂鎵嶇户缁墽琛�
-            if ((rgvProtocol.getStatusType1() == RgvStatusType.IDLE || rgvProtocol.getStatusType2() == RgvStatusType.IDLE)
+            if ((rgvProtocol.getStatusType1() == RgvStatusType.IDLE && rgvProtocol.getStatusType2() == RgvStatusType.IDLE)
                     && rgvProtocol.getModeType() == RgvModeType.AUTO
                     && rgvThread.isPakMk()) {
                 News.warnNoLog(""+mark+" - 0"+" - 寮�濮嬫墽琛孯GV鍏ュ嚭搴撲綔涓氫笅鍙�");
                 // 濡傛灉鏈�杩戜竴娆℃槸鍏ュ簱妯″紡
+//                rgvRunWrkMastInTest();
+
                 if (rgvProtocol.getLastIo().equals("I")) {
-                    if (basRgv.getInEnable().equals("Y") && rgvThread.isPakIn()) {
+                    if (basRgv.getInEnable().equals("1") && rgvThread.isPakIn()) {
                         //mark - 1 - ....
                         this.rgvRunWrkMastIn(rgv, rgvProtocol,mark); //  鍏ュ簱
                         rgvProtocol.setLastIo("O");
-                    } else if (basRgv.getOutEnable().equals("Y") && rgvThread.isPakOut()) {
+                    } else if (basRgv.getOutEnable().equals("1") && rgvThread.isPakOut()) {
                         //mark - 2 - ....
                         this.rgvRunWrkMastOut(rgv, rgvProtocol,mark); //  鍑哄簱
                         rgvProtocol.setLastIo("I");
@@ -3233,10 +3304,10 @@
                 }
                 // 濡傛灉鏈�杩戜竴娆℃槸鍑哄簱妯″紡
                 else if (rgvProtocol.getLastIo().equals("O")) {
-                    if (basRgv.getOutEnable().equals("Y") && rgvThread.isPakOut()) {
+                    if (basRgv.getOutEnable().equals("1") && rgvThread.isPakOut()) {
                         this.rgvRunWrkMastOut(rgv, rgvProtocol,mark); //  鍑哄簱
                         rgvProtocol.setLastIo("I");
-                    } else if (basRgv.getInEnable().equals("Y") && rgvThread.isPakIn()) {
+                    } else if (basRgv.getInEnable().equals("1") && rgvThread.isPakIn()) {
                         this.rgvRunWrkMastIn(rgv, rgvProtocol,mark); //  鍏ュ簱
                         rgvProtocol.setLastIo("O");
                     }
@@ -3257,6 +3328,44 @@
                 rgvOutExecute();
 
             }
+        }
+    }
+    public synchronized void rgvRunWrkMastInTest(){
+        BasRgvMap basRgvMap = basRgvMapMapper.selectById(1);
+        List<Integer> route = RouteUtils.getRoute(basRgvMap.getStartRoute(), basRgvMap.getEndRoute());
+        basRgvMap.setNowRoute(1021); //鏇存柊灏忚溅褰撳墠浣嶇疆绔欑偣鍙�
+        WrkMastSta wrkMastSta = wrkMastStaMapper.selectByWrkNo(342);//鏍规嵁绔欑偣宸ヤ綔鍙峰拰灏忚溅宸ヤ綔鑼冨洿妫�绱换鍔℃。
+
+//        WrkMastSta wrkMastSta2 = wrkMastStaMapper.selectByWorkSta(2, 1);
+        boolean result = false;
+//        if(wrkMastSta2 != null && rgvProtocol.getRgvNo() == 1){ //璺濈璁$畻   2妤煎崟鍏ュ簱鍙d笉闇�瑕佽绠�
+//            result = rgvCalcDistance((int) rgvProtocol.getRgvNo(),wrkMastSta2.getStaEnd(),wrkMastSta.getStaStart());//宸ヤ綅2鏀捐揣绔欑偣锛屽伐浣�1鍙栬揣绔欑偣
+//        }
+//        if(result){//鑻ュ皬杞﹁窛绂绘斁璐х偣璺濈杩戜簬鍙栬揣鐐瑰垯璺宠繃鍙栬揣 true璺宠繃鍙栬揣/false浼樺厛鍙栬揣
+//            rgvThread.setPakRgv(false);
+//            continue;
+//        }
+        wrkMastSta.setWorkSta(1);
+        wrkMastSta.setRgvNo(1);
+        wrkMastSta.setStaStart(1035);
+        Short direction = 2;//鍙屽伐浣嶆渶缁堟姷杈句綅缃�
+        boolean sign = false;
+//        sign = rgvTakeFullAll(basRgvMap.getRgvNo(), wrkMastSta,direction,); //鍛戒护涓嬪彂
+        if (sign){
+            wrkMastSta.setWrkSts(1);
+            try{
+                wrkMastStaMapper.updateById(wrkMastSta);
+                log.error("鏇存柊灏忚溅浠诲姟鎴愬姛");
+            }catch (Exception e){
+                log.error("鏇存柊灏忚溅浠诲姟澶辫触");
+            }
+//            rgvThread.setPakOut(false);//鍑哄簱涓嶅厑璁�
+            boolean signMap = rgvMapUpdate(basRgvMap, wrkMastSta.getStaStart(), wrkMastSta.getStaEnd(),"2526");
+            if (!signMap){
+                log.error("璐х墿鎼繍浠诲姟锛氬伐浣滃彿{}鎵�灞炰换鍔′笅鍙戝悗鍦板浘鍚屾澶辫触",wrkMastSta.getWrkNo());
+            }
+        } else {
+            log.error("宸ヤ綔鍙穥}鎵�灞炰换鍔′笅鍙戝け璐�",wrkMastSta.getWrkNo());
         }
     }
     /**
@@ -3301,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;
             }
@@ -3313,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());
@@ -3330,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);
@@ -3351,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());
             }
@@ -3394,6 +3505,7 @@
             } else {
                 staProtocol = staProtocol.clone();
             }
+
             // 鏌ヨ绔欑偣璇︾粏淇℃伅
             BasDevp staDetl = basDevpService.selectById(rgvStn.getStaNo());
             if (staDetl == null) {
@@ -3401,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;
             }
@@ -3413,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;
@@ -3430,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);
@@ -3451,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());
             }
@@ -3904,58 +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.setDirection2(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(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(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;
-                    }
-                }else{
-                    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;
-                    }
+                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.setDirection2(direction);
+                    rgvCommand.setDirection2((short)2);
+//                    rgvCommand.setWrkTaskMove2(direction);
                     rgvCommand.setCommand(true);   //宸ヤ綅1浠诲姟纭
                     pakIn1 = false;
                 }else{  //鍏ュ簱RGV鍙栬揣
@@ -3964,11 +4061,12 @@
                     rgvCommand.setTaskStatus1(RgvTaskStatusType.FETCH); // 宸ヤ綅1浠诲姟妯″紡:  鍙栨斁璐�
                     rgvCommand.setEndStaNo1(wrkMastSta.getWrkEnd());   //宸ヤ綅1 鏀捐揣鍚庤鍘荤殑浣嶇疆
                     rgvCommand.setTargetPosition1(wrkMastSta.getStaStart());   //宸ヤ綅1鐩爣绔欑偣
-                    rgvCommand.setDirection1(direction);
+                    rgvCommand.setDirection1((short)1);
+//                    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;
@@ -3976,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;
@@ -3986,12 +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.setDirection2((short)2);
                     rgvCommand.setCommand(true);   //宸ヤ綅1浠诲姟纭
                     pakIn2 = false;
                 }else{  //宸ヤ綅1浠诲姟鏀捐揣
@@ -4000,9 +4099,10 @@
                     rgvCommand.setTaskStatus1(RgvTaskStatusType.PUT); // 宸ヤ綅1浠诲姟妯″紡:  鏀捐揣
                     rgvCommand.setEndStaNo1(wrkMastSta.getWrkEnd());   //宸ヤ綅1 鏀捐揣鍚庤鍘荤殑浣嶇疆
                     rgvCommand.setTargetPosition1(wrkMastSta.getStaEnd());   //宸ヤ綅1鐩爣绔欑偣
+                    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));
@@ -4267,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;
+        }
+    }
+
 
 
 
@@ -4412,16 +4549,44 @@
                             log.error("arm缂栧彿锛�"+basArm.getArmNo()+"====銆嬫媶鐮佸灈浠诲姟寮傚父绂佹涓嬪彂锛侊紒锛佷换鍔″緟鎵ц鏁伴噺澶т簬1锛侊紒锛�");
                             continue;
                         }
-                        for (BasArmMast basArmMast:basArmMastList) {
-                            ArmTaskAssignmentParam armTaskAssignmentParam = new ArmTaskAssignmentParam(basArmMast.getSortingLine());
-                            //璁剧疆宸ヤ綔绌洪棿灏辩华
-                            ReturnT<String> result = new PostMesDataUtils().postMesData("鏈烘鑷傛姄鍙栦换鍔′笅鍙戯細閫氱煡宸ヤ綔绌洪棿宸插氨缁�",ArmConstant.ARM_URL, ArmConstant.ARM_WORKSPACE, armTaskAssignmentParam);
-                            if (result.getCode()==200){
-                                basArmMast.setStatus(1);
-                                basArmMastService.updateById(basArmMast);
-                            } else {
-                                log.error("鏈烘鑷傛姄鍙栦换鍔★細"+JSON.toJSON(basArmMast)+"===銆嬩换鍔′俊鎭笅鍙戝け璐�");
+                        BasArmMast basArmMast = basArmMastList.get(0);
+                        List<BasArmMast> basArmMastListOrder = basArmMastService.selectList(
+                                new EntityWrapper<BasArmMast>()
+                                        .eq("arm_no", basArm.getArmNo())
+                                        .eq("sorting_line", basArm.getSortingLine())
+                                        .eq("sku", basArmMast.getSku())
+                                        .eq("order_no", basArmMast.getOrderNo())
+                        );
+                        if (basArmMastListOrder.size()==1){
+                            OrderDetlValueResultUtil orderDetlValueResultUtil = basArmMastService.selectOrderDetlValue(basArmMast.getOrderNo(), basArmMast.getSku());
+
+                            if (Cools.isEmpty(orderDetlValueResultUtil)){
+                                continue;
                             }
+                            //璁㈠崟涓嬪彂
+                            try{
+                                ArmOrderAssignmentParam armOrderAssignmentParam = new ArmOrderAssignmentParam(basArmMast,orderDetlValueResultUtil);
+//                                璁㈠崟涓嬪彂(SKU+璁㈠崟)
+                                ReturnT<String> result = new PostMesDataUtils().postMesData("鏈烘鑷傛姄鍙栬鍗曪紙SKU锛変笅鍙戯細",ArmConstant.getArmUrl(basArmMast.getArmNo()), ArmConstant.ARM_ADAPTOR, armOrderAssignmentParam);
+                                if (result.getCode()==200){
+                                    basArmMast.setStatus(1);
+                                    basArmMastService.updateById(basArmMast);
+                                } else {
+                                    log.error("鏈烘鑷傛姄鍙栬鍗曪紙SKU锛変笅鍙戯細"+JSON.toJSON(basArmMast)+"===銆嬭鍗曚俊鎭笅鍙戝け璐�");
+                                }
+                            } catch (Exception e){
+                                log.error("鏈烘鑷傛姄鍙栬鍗曪紙SKU锛変笅鍙戯細"+JSON.toJSON(basArmMast)+"===銆嬭鍗曚笅鍙戣鍗曚俊鎭笅鍙戝け璐�");
+                                continue;
+                            }
+                        }
+                        ArmTaskAssignmentParam armTaskAssignmentParam = new ArmTaskAssignmentParam(basArmMast.getSortingLine());
+                        //璁剧疆宸ヤ綔绌洪棿灏辩华
+                        ReturnT<String> result = new PostMesDataUtils().postMesData("鏈烘鑷傛姄鍙栦换鍔′笅鍙戯細閫氱煡宸ヤ綔绌洪棿宸插氨缁�",ArmConstant.getArmUrl(basArmMast.getArmNo()), ArmConstant.ARM_WORKSPACE, armTaskAssignmentParam);
+                        if (result.getCode()==200){
+                            basArmMast.setStatus(1);
+                            basArmMastService.updateById(basArmMast);
+                        } else {
+                            log.error("鏈烘鑷傛姄鍙栦换鍔★細"+JSON.toJSON(basArmMast)+"===銆嬩换鍔′俊鎭笅鍙戝け璐�");
                         }
                     }
                 }  catch (Exception e){

--
Gitblit v1.9.1