From c99cbe6c0064deee3e57f1a751ff0717290ac621 Mon Sep 17 00:00:00 2001
From: lsh <lsh@163.com>
Date: 星期四, 05 六月 2025 15:43:56 +0800
Subject: [PATCH] *

---
 src/main/java/com/zy/core/thread/RgvThread.java |  361 +++++++++++++++++++++++++++++++++++++++++----------
 1 files changed, 288 insertions(+), 73 deletions(-)

diff --git a/src/main/java/com/zy/core/thread/RgvThread.java b/src/main/java/com/zy/core/thread/RgvThread.java
index 3c70e71..0dd4ee9 100644
--- a/src/main/java/com/zy/core/thread/RgvThread.java
+++ b/src/main/java/com/zy/core/thread/RgvThread.java
@@ -53,6 +53,7 @@
     private Long trackBenchmark = 1L;
     //  # 閬胯璺濈
     private Long avoidDistance = 5000L;
+    private String errorRgv = "-";
 
     /**
      * 宸ヤ綅1澶嶄綅淇″彿
@@ -93,7 +94,7 @@
         new Thread(this::taskIssued).start();
 
         // 鍚姩婕父绾跨▼
-//        new Thread(this::taskWalkIssued).start();
+        new Thread(this::taskWalkIssued).start();
 //        new Thread(this::taskWalkIssued2).start();
 
         // 鍚姩浠诲姟瀹屾垚绾跨▼
@@ -103,6 +104,7 @@
     private void rgvConnect() {
         while (true) {
             try {
+                Thread.sleep(1000);
                 if(!connectRgv){
                     try {
                         connectRgv = this.connect();
@@ -117,7 +119,7 @@
                     DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class);
                     deviceErrorService.addDeviceError("rgv", slave.getId(), "rgv杩炴帴澶辫触"+e.getMessage());
                 } catch (Exception e2){
-                    log.error("e2:"+e2.getMessage());
+//                    log.error("e2:"+e2.getMessage());
                 }
                 initRgv();
 //                e.printStackTrace();
@@ -128,8 +130,17 @@
     private void readStatusRgv() {
         while (true) {
             try {
+                if(!connectRgv){
+                    try {
+                        Thread.sleep(1000L);
+                    } catch (Exception e){
+
+                    }
+                    initRgv();
+                    continue;
+                }
                 Thread.sleep(20);
-                System.out.println("璇荤嚎绋�"+ slave.getId());
+//                System.out.println("璇荤嚎绋�"+ slave.getId());
 
                 readStatus();
 
@@ -139,7 +150,7 @@
                     DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class);
                     deviceErrorService.addDeviceError("rgv", slave.getId(), "RGV鏁版嵁璇诲彇绾跨▼寮傚父"+e.getMessage());
                 } catch (Exception e2){
-                    log.error("e2:"+e2.getMessage());
+//                    log.error("e2:"+e2.getMessage());
                 }
                 initRgv();
 //                e.printStackTrace();
@@ -155,6 +166,14 @@
     private void taskComplete() {
         while (true) {
             try {
+                if(!connectRgv){
+                    try {
+                        Thread.sleep(1000L);
+                    } catch (Exception e){
+
+                    }
+                    continue;
+                }
                 if (delRgvTask){
                     writeDelRgvTask();
                     delRgvTask = false;
@@ -172,7 +191,7 @@
                     DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class);
                     deviceErrorService.addDeviceError("rgv", slave.getId(), "RGV鏁版嵁浠诲姟涓嬪彂澶嶄綅绾跨▼寮傚父"+e.getMessage());
                 } catch (Exception e2){
-                    log.error("e2:"+e2.getMessage());
+//                    log.error("e2:"+e2.getMessage());
                 }
                 initRgv();
 //                e.printStackTrace();
@@ -248,46 +267,62 @@
     /**
      * 婕父
      */
-//    private void taskWalkIssued() {
-//        while (true) {
-//            try {
-//                // 浼戠湢 1 绉�
-//                Thread.sleep(100);
-//
-//                if (!deviceDetection()) {
-//                    continue;
-//                }
-//                RgvTaskProtocol rgvTaskProtocol = RgvTaskCache.getRgvStatus(slave.getId());
-//                if (rgvTaskProtocol == null) {
-//                    initRgv();
-//                    rgvTaskProtocol = RgvTaskCache.getRgvStatus(slave.getId());
-//                }
-//                if (rgvTaskProtocol.getAvoid() != 1) {
-//                    continue;
-//                }
-//                TaskProtocol issued = new TaskProtocol();
-//                issued.setTaskNo(32222L);
-//                issued.setTargetPosition(rgvTaskProtocol.getAvoidingTheDestination());
-//                issued.setTaskStatus(1);
-//                issued.setDirection(true);
-//                write(issued);
-//                rgvTaskProtocol.setAvoid(0);
-//
-//                Thread.sleep(200);
-//                RgvTaskCache.updateRgvStatus(rgvTaskProtocol);
-//
-//            } catch (Exception e) {
-//                log.error("RGV琛岃蛋浠诲姟涓嬪彂绾跨▼寮傚父锛侊紒锛�" + e.getMessage());
-////                e.printStackTrace();
-//            }
-//        }
-//    }
+    private void taskWalkIssued() {
+        while (true) {
+            try {
+                if(!connectRgv){
+                    try {
+                        Thread.sleep(1000L);
+                    } catch (Exception e){
+
+                    }
+                    continue;
+                }
+                // 浼戠湢 1 绉�
+                Thread.sleep(100);
+
+                if (!deviceDetection()) {
+                    continue;
+                }
+                RgvTaskProtocol rgvTaskProtocol = RgvTaskCache.getRgvStatus(slave.getId());
+                if (rgvTaskProtocol == null) {
+                    initRgv();
+                    rgvTaskProtocol = RgvTaskCache.getRgvStatus(slave.getId());
+                }
+                if (rgvTaskProtocol.getAvoid() != 1) {
+                    continue;
+                }
+                TaskProtocol issued = new TaskProtocol();
+                issued.setTaskNo(32222L);
+                issued.setTargetPosition(rgvTaskProtocol.getAvoidingTheDestination());
+                issued.setTaskStatus(1);
+                issued.setDirection(true);
+                write(issued);
+                rgvTaskProtocol.setAvoid(0);
+
+                Thread.sleep(200);
+                RgvTaskCache.updateRgvStatus(rgvTaskProtocol);
+
+            } catch (Exception e) {
+                log.error("RGV琛岃蛋浠诲姟涓嬪彂绾跨▼寮傚父锛侊紒锛�" + e.getMessage());
+//                e.printStackTrace();
+            }
+        }
+    }
 
     /**
      * 浠诲姟涓嬪彂
      */
     private void taskIssued() {
         while (true) {
+            if(!connectRgv){
+                try {
+                    Thread.sleep(1000L);
+                } catch (Exception e){
+
+                }
+                continue;
+            }
             RgvRunProtocol rgvRun = RgvRunCache.getRgvRun();
             if (!rgvRun.getRgvNo().equals(slave.getId())){
                 continue;
@@ -295,10 +330,10 @@
             try {
                 Thread.sleep(50);
                 rgvRun = RgvRunCache.getRgvRun();
-                System.out.println(JSON.toJSON(rgvRun));
+//                System.out.println(JSON.toJSON(rgvRun));
 
                 // 浼戠湢 1 绉�
-                if (System.currentTimeMillis() - rgvRun.currentTimeMilliOld > 1500) {
+                if (System.currentTimeMillis() - rgvRun.currentTimeMilliOld > 1000) {
                     rgvRun.currentTimeMilliOld = System.currentTimeMillis()+50;
                 } else {
                     continue;
@@ -307,6 +342,9 @@
                     rgvRun.currentTimeMilliOld = System.currentTimeMillis()+50;
                     rgvRun.setRgvNo(slave.getOtherId());
                     RgvRunCache.updateRgvStatus(rgvRun);
+                    if (!errorRgv.equals("鏃�")){
+                        RgvErrCache.updateRgvErr(slave.getId(),errorRgv);
+                    }
                     continue;
                 }
 
@@ -327,22 +365,10 @@
                     rgvRun.currentTimeMilliOld = System.currentTimeMillis()+50;
                     rgvRun.setRgvNo(slave.getOtherId());
                     RgvRunCache.updateRgvStatus(rgvRun);
+                    RgvErrCache.updateRgvErr(slave.getId(),"灏忚溅鎺㈢墿鐗╃姸鎬佸紓甯�");
                     continue;
                 }
                 if (rgvTaskProtocol.getAvoid() != 0) {
-                    if (rgvTaskProtocol.getAvoid() == 1) {
-                        TaskProtocol issued = new TaskProtocol();
-                        issued.setTaskNo(32222L);
-                        issued.setTargetPosition(rgvTaskProtocol.getAvoidingTheDestination());
-                        issued.setTaskStatus(1);
-                        issued.setDirection(true);
-                        write(issued);
-                        rgvTaskProtocol.setAvoid(0);
-
-//                        try{Thread.sleep(50L);} catch (Exception e){}
-
-                        RgvTaskCache.updateRgvStatus(rgvTaskProtocol);
-                    }
                     rgvRun.currentTimeMilliOld = System.currentTimeMillis()+50;
                     rgvRun.setRgvNo(slave.getOtherId());
                     RgvRunCache.updateRgvStatus(rgvRun);
@@ -358,21 +384,25 @@
                             if (rgvOtherStatusEnable()) {
                                 //鍙︿竴鍙拌溅鏄惁鍏佽姝ゅ彴杞︽墽琛�
                                 if (!otherRgvAvoid(taskProtocol.getTargetPosition())) {
+                                    RgvErrCache.updateRgvErr(slave.getId(),errorRgv);
                                     break;
                                 }
                             }
                             if (taskProtocol.getTargetPosition()<=rgvProtocol.getRgvPos()+50
                                     && taskProtocol.getTargetPosition()>=rgvProtocol.getRgvPos()-50){
                                 taskProtocolCache.removeTaskProtocol(taskProtocol.getTaskNoDirection());
+                                RgvErrCache.updateRgvErr(slave.getId());
                                 break;
                             } else {
                                 TaskProtocol issued = new TaskProtocol(taskProtocol,true);
                                 write(issued);
+                                RgvErrCache.updateRgvErr(slave.getId());
                                 taskProtocolCache.removeTaskProtocol(taskProtocol.getTaskNoDirection());
                                 break;
                             }
                         }
                     }
+                    RgvErrCache.updateRgvErr(slave.getId());
                 } else {
                     for (TaskProtocol taskProtocol : allTakeTaskProtocol) {
                         if (taskProtocol.getIsRunning() == 1) {//鍑嗗涓嬪彂
@@ -380,6 +410,7 @@
                             if (rgvOtherStatusEnable()) {
                                 //鍙︿竴鍙拌溅鏄惁鍏佽姝ゅ彴杞︽墽琛�
                                 if (!otherRgvAvoid(taskProtocol.getTargetPosition())) {
+                                    RgvErrCache.updateRgvErr(slave.getId(),errorRgv);
                                     break;
                                 }
                             }
@@ -389,21 +420,38 @@
                                     DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, taskProtocol.getTargetPositionStaNoPlcId());
                                     StaProtocol staProtocol = devpThread.getStation().get(taskProtocol.getTargetPositionStaNo());
                                     if (staProtocol == null ) {
+                                        RgvErrCache.updateRgvErr(slave.getId(),"鏈煡鍒板皬杞︿綔涓氱珯"+staProtocol.getStaNo()+"绔欑偣");
                                         break;
                                     }
                                     // 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢
                                     if (!staProtocol.isAutoing() || staProtocol.isLoading()
                                     ){
+                                        RgvErrCache.updateRgvErr(slave.getId(),"灏忚溅绛夊緟"+staProtocol.getStaNo()+"绔欑偣灏辩华");
+                                        break;
+                                    }
+                                } else if (taskProtocol.getTaskStatus()==2){
+                                    DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, taskProtocol.getTargetPositionStaNoPlcId());
+                                    StaProtocol staProtocol = devpThread.getStation().get(taskProtocol.getTargetPositionStaNo());
+                                    if (staProtocol == null ) {
+                                        RgvErrCache.updateRgvErr(slave.getId(),"鏈煡鍒板皬杞︿綔涓氱珯"+staProtocol.getStaNo()+"绔欑偣");
+                                        break;
+                                    }
+                                    // 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢
+                                    if (!staProtocol.isAutoing() || !staProtocol.isLoading() || staProtocol.getWorkNo()==0
+                                    ){
+                                        RgvErrCache.updateRgvErr(slave.getId(),"灏忚溅绛夊緟"+staProtocol.getStaNo()+"绔欑偣灏辩华");
                                         break;
                                     }
                                 }
                                 TaskProtocol issued = new TaskProtocol(taskProtocol);
                                 write(issued);
+                                RgvErrCache.updateRgvErr(slave.getId());
                                 taskProtocolCache.removeTaskProtocol(taskProtocol.getTaskNoDirection());
                                 break;
                             } else {
                                 TaskProtocol issued = new TaskProtocol(taskProtocol,true);
                                 write(issued);
+                                RgvErrCache.updateRgvErr(slave.getId());
                                 break;
                             }
                         }
@@ -418,7 +466,7 @@
                     DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class);
                     deviceErrorService.addDeviceError("rgv", slave.getId(), "RGV浠诲姟涓嬪彂绾跨▼寮傚父"+e.getMessage());
                 } catch (Exception e2){
-                    log.error("e2:"+e2.getMessage());
+//                    log.error("e2:"+e2.getMessage());
                 }
                 rgvRun = RgvRunCache.getRgvRun();
                 rgvRun.currentTimeMilliOld = System.currentTimeMillis()+50;
@@ -454,10 +502,25 @@
         RgvTaskProtocol rgvTaskProtocol = RgvTaskCache.getRgvStatus(slave.getId());
 
         if (rgvProtocol == null || rgvTaskProtocol == null) {
+            errorRgv = slave.getId()+"鍙峰皬杞﹁繛鎺ュけ璐�";
             return false;
         }
-        if (!rgvProtocol.getModeType().equals(RgvModeType.AUTO) || rgvProtocol.getRgvPos().equals(0L) || rgvTaskProtocol.getAvoid() == -1 || rgvProtocol.getRgvPosDestination() == 0L
-                || ((!rgvProtocol.getStatusType().equals(RgvStatusType.IDLE) || (Math.abs(rgvProtocol.getRgvPos() - rgvProtocol.getRgvPosDestination())>100)) && !rgvProtocol.getStatusType().equals(RgvStatusType.ROAM))) {
+        if (!rgvProtocol.getModeType().equals(RgvModeType.AUTO)) {
+            errorRgv = slave.getId()+"鍙峰皬杞﹂潪鑷姩";
+            return false;
+        }
+        if (rgvProtocol.getRgvPos().equals(0L)
+                || rgvTaskProtocol.getAvoid() == -1
+                || rgvProtocol.getRgvPosDestination() == 0L) {
+            errorRgv = slave.getId()+"鍙峰皬杞︾姸鎬佸紓甯�";
+            return false;
+        }
+        if (!rgvProtocol.getStatusType().equals(RgvStatusType.IDLE) && !rgvProtocol.getStatusType().equals(RgvStatusType.ROAM)) {
+            errorRgv = "鏃�";
+            return false;
+        }
+        if ( (Math.abs(rgvProtocol.getRgvPos() - rgvProtocol.getRgvPosDestination())>100) && !rgvProtocol.getStatusType().equals(RgvStatusType.ROAM)) {
+            errorRgv = slave.getId()+"鍙峰皬杞﹀瓨鍦ㄨ繍琛岀洰鏍囧�硷紝闇�瑕佸浣嶏紒锛侊紒";
             return false;
         }
         RgvProtocol rgvProtocolOther = RgvStatusCache.getRgvStatus(slave.getOtherId());
@@ -466,10 +529,12 @@
 //                "rgvTaskProtocolOther:"+slave.getOtherId()+"sign:"+rgvTaskProtocolOther.isSignRun()+"/n");
 
         if (rgvProtocolOther == null) {
+            errorRgv = slave.getOtherId()+"鍙峰皬杞﹁繛鎺ュけ璐�";
             return false;
         }
         if (rgvProtocolOther.statusEnable) {
             if (!rgvProtocolOther.getModeType().equals(RgvModeType.AUTO) || rgvProtocolOther.getRgvPos().equals(0L) || rgvTaskProtocolOther.getAvoid() == -1 || rgvProtocolOther.getRgvPosDestination() == 0L) {
+                errorRgv = slave.getOtherId()+"鍙峰皬杞︾姸鎬佸紓甯�";
                 return false;
             }
         }
@@ -491,6 +556,10 @@
 
     public boolean otherRgvAvoid(Long targetPosition) {
         RgvProtocol rgvProtocol = RgvStatusCache.getRgvStatus(slave.getId());
+        long onePos = Math.abs(targetPosition - rgvProtocol.getRgvPos());
+        if (onePos<50){
+            return true;
+        }
         RgvTaskProtocol rgvTaskProtocol = RgvTaskCache.getRgvStatus(slave.getId());
 
         RgvProtocol rgvProtocolOther = RgvStatusCache.getRgvStatus(slave.getOtherId());
@@ -525,11 +594,12 @@
                                             long avoid = rgvProtocolOther.getRgvPos() - rgvProtocolOther.getCarBodyJiaoMing() - avoidDistance - rgvProtocol.getCarBodyKunPeng();
                                             if (!new TrackRangeUtils().avoidRange(avoid, avoidRange[1])) {
                                                 log.error("RGV琛岃蛋瓒呭嚭鑼冨洿锛侊紒锛� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
+                                                errorRgv = "RGV琛岃蛋鐩爣瓒呭嚭鑼冨洿";
                                                 try{
                                                     DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class);
                                                     deviceErrorService.addDeviceError("rgv", slave.getId(), "RGV琛岃蛋瓒呭嚭鑼冨洿");
                                                 } catch (Exception e2){
-                                                    log.error("e2:"+e2.getMessage());
+//                                                    log.error("e2:"+e2.getMessage());
                                                 }
                                                 return false;
                                             }
@@ -548,17 +618,80 @@
                             }
                         }
                         if (signNowPosRun){
+                            errorRgv = slave.getOtherId()+"鍙稲GV绛夊緟浣滀笟...";
+                            return false;
+                        }
+                    }
+                    TaskProtocol nowPosRunTask2 = taskProtocolCacheOther.getNowPosRunTask2();
+                    if (!Cools.isEmpty(nowPosRunTask2)){
+                        boolean signNowPosRun = true;
+                        boolean signNowPosA = true;
+                        if (targetPosition - rgvProtocol.getRgvPos()>0){
+                            if (nowPosRunTask2.getTargetPosition() - rgvProtocolOther.getRgvPos()>0){
+                                if (rgvProtocol.getRgvPos()>rgvProtocolOther.getRgvPos()){
+                                    signNowPosA = false;
+                                    signNowPosRun = false;
+                                }
+                            }
+                        } else if (targetPosition - rgvProtocol.getRgvPos()<0){
+                            if (nowPosRunTask2.getTargetPosition() - rgvProtocolOther.getRgvPos()<0){
+                                if (rgvProtocol.getRgvPos()<rgvProtocolOther.getRgvPos()){
+                                    signNowPosA = false;
+                                    signNowPosRun = false;
+                                }
+                            }
+                        }
+
+                        if (signNowPosA){
+                            if (nowPosRunTask2.getTaskStatus()==3){
+                                long twoPos = Math.abs(nowPosRunTask2.getTargetPosition() - rgvProtocolOther.getRgvPos());
+                                if (Math.abs(onePos - twoPos)>100){
+                                    if (onePos-50>twoPos+50){
+                                        DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, nowPosRunTask2.getTargetPositionStaNoPlcId());
+                                        StaProtocol staProtocol = devpThread.getStation().get(nowPosRunTask2.getTargetPositionStaNo());
+                                        if (staProtocol == null ) {
+                                            signNowPosRun =false;
+                                        }
+                                        if (signNowPosRun){
+                                            // 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢
+                                            if (staProtocol.isAutoing() && !staProtocol.isLoading()
+                                            ){
+                                                errorRgv = slave.getOtherId()+"鍙稲GV绛夊緟浣滀笟...";
+                                                return false;
+                                            }
+                                        }
+                                        signNowPosRun =false;
+                                    }
+                                }
+                            } else {
+                                long twoPos = Math.abs(nowPosRunTask2.getTargetPosition() - rgvProtocolOther.getRgvPos());
+                                if (twoPos<100){
+                                    errorRgv = slave.getOtherId()+"鍙稲GV绛夊緟浣滀笟...";
+                                    return false;
+                                }
+                                if (Math.abs(onePos - twoPos)>100){
+                                    if (onePos-50>twoPos+50){
+                                        signNowPosRun =false;
+                                    }
+                                }
+                            }
+                        }
+
+                        if (signNowPosRun){
+                            errorRgv = slave.getOtherId()+"鍙稲GV绛夊緟浣滀笟...";
                             return false;
                         }
                     }
                     long avoid = targetPosition + rgvProtocol.getCarBodyKunPeng() + avoidDistance + rgvProtocolOther.getCarBodyJiaoMing();
                     if (!new TrackRangeUtils().avoidRange(avoid, avoidRange[0])) {
                         log.error("RGV琛岃蛋瓒呭嚭鑼冨洿锛侊紒锛� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
+                        errorRgv = "RGV琛岃蛋鐩爣瓒呭嚭鑼冨洿";
+
                         try{
                             DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class);
                             deviceErrorService.addDeviceError("rgv", slave.getId(), "RGV琛岃蛋瓒呭嚭鑼冨洿");
                         } catch (Exception e2){
-                            log.error("e2:"+e2.getMessage());
+//                            log.error("e2:"+e2.getMessage());
                         }
                         return false;
                     }
@@ -580,11 +713,13 @@
                     long avoid = targetPosition + rgvProtocol.getCarBodyKunPeng() + avoidDistance + rgvProtocolOther.getCarBodyJiaoMing();
                     if (!new TrackRangeUtils().avoidRange(avoid, avoidRange[0])) {
                         log.error("RGV琛岃蛋瓒呭嚭鑼冨洿锛侊紒锛� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
+                        errorRgv = "RGV琛岃蛋鐩爣瓒呭嚭鑼冨洿";
+
                         try{
                             DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class);
                             deviceErrorService.addDeviceError("rgv", slave.getId(), "RGV琛岃蛋瓒呭嚭鑼冨洿");
                         } catch (Exception e2){
-                            log.error("e2:"+e2.getMessage());
+//                            log.error("e2:"+e2.getMessage());
                         }
                         return false;
                     }
@@ -607,11 +742,13 @@
                         long avoid = rgvProtocolOther.getRgvPos() - rgvProtocolOther.getCarBodyJiaoMing() - avoidDistance - rgvProtocol.getCarBodyKunPeng();
                         if (!new TrackRangeUtils().avoidRange(avoid, avoidRange[1])) {
                             log.error("RGV琛岃蛋瓒呭嚭鑼冨洿锛侊紒锛� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
+                            errorRgv = "RGV琛岃蛋鐩爣瓒呭嚭鑼冨洿";
+
                             try{
                                 DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class);
                                 deviceErrorService.addDeviceError("rgv", slave.getId(), "RGV琛岃蛋瓒呭嚭鑼冨洿");
                             } catch (Exception e2){
-                                log.error("e2:"+e2.getMessage());
+//                                log.error("e2:"+e2.getMessage());
                             }
                             return false;
                         }
@@ -624,6 +761,8 @@
                         RgvTaskCache.updateRgvStatus(rgvTaskProtocol);
                         return false;
                     }
+                    errorRgv = slave.getOtherId()+"鍙稲GV褰卞搷锛岀瓑寰呬腑...";
+
                     return false;
                 }
             } else {
@@ -660,11 +799,13 @@
                                             long avoid = rgvProtocolOther.getRgvPos() + rgvProtocolOther.getCarBodyKunPeng() + avoidDistance + rgvProtocol.getCarBodyJiaoMing();
                                             if (!new TrackRangeUtils().avoidRange(avoid, avoidRange[0])) {
                                                 log.error("RGV琛岃蛋瓒呭嚭鑼冨洿锛侊紒锛� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
+                                                errorRgv = "RGV琛岃蛋鐩爣瓒呭嚭鑼冨洿";
+
                                                 try{
                                                     DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class);
                                                     deviceErrorService.addDeviceError("rgv", slave.getId(), "RGV琛岃蛋瓒呭嚭鑼冨洿");
                                                 } catch (Exception e2){
-                                                    log.error("e2:"+e2.getMessage());
+//                                                    log.error("e2:"+e2.getMessage());
                                                 }
                                                 return false;
                                             }
@@ -683,17 +824,81 @@
                             }
                         }
                         if (signNowPosRun){
+                            errorRgv = slave.getOtherId()+"鍙稲GV绛夊緟浣滀笟...";
+                            return false;
+                        }
+                    }
+
+                    TaskProtocol nowPosRunTask2 = taskProtocolCacheOther.getNowPosRunTask2();
+                    if (!Cools.isEmpty(nowPosRunTask2)){
+                        boolean signNowPosRun = true;
+                        boolean signNowPosA = true;
+                        if (targetPosition - rgvProtocol.getRgvPos()>0){
+                            if (nowPosRunTask2.getTargetPosition() - rgvProtocolOther.getRgvPos()>0){
+                                if (rgvProtocol.getRgvPos()>rgvProtocolOther.getRgvPos()){
+                                    signNowPosA = false;
+                                    signNowPosRun = false;
+                                }
+                            }
+                        } else if (targetPosition - rgvProtocol.getRgvPos()<0){
+                            if (nowPosRunTask2.getTargetPosition() - rgvProtocolOther.getRgvPos()<0){
+                                if (rgvProtocol.getRgvPos()<rgvProtocolOther.getRgvPos()){
+                                    signNowPosA = false;
+                                    signNowPosRun = false;
+                                }
+                            }
+                        }
+
+                        if (signNowPosA){
+                            if (nowPosRunTask2.getTaskStatus()==3){
+                                long twoPos = Math.abs(nowPosRunTask2.getTargetPosition() - rgvProtocolOther.getRgvPos());
+                                if (Math.abs(onePos - twoPos)>100){
+                                    if (onePos-50>twoPos+50){
+                                        DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, nowPosRunTask2.getTargetPositionStaNoPlcId());
+                                        StaProtocol staProtocol = devpThread.getStation().get(nowPosRunTask2.getTargetPositionStaNo());
+                                        if (staProtocol == null ) {
+                                            signNowPosRun =false;
+                                        }
+                                        if (signNowPosRun){
+                                            // 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢
+                                            if (staProtocol.isAutoing() && !staProtocol.isLoading()
+                                            ){
+                                                errorRgv = slave.getOtherId()+"鍙稲GV绛夊緟浣滀笟...";
+                                                return false;
+                                            }
+                                        }
+                                        signNowPosRun =false;
+                                    }
+                                }
+                            } else {
+                                long twoPos = Math.abs(nowPosRunTask2.getTargetPosition() - rgvProtocolOther.getRgvPos());
+                                if (twoPos<100){
+                                    errorRgv = slave.getOtherId()+"鍙稲GV绛夊緟浣滀笟...";
+                                    return false;
+                                }
+                                if (Math.abs(onePos - twoPos)>100){
+                                    if (onePos-50>twoPos+50){
+                                        signNowPosRun =false;
+                                    }
+                                }
+                            }
+                        }
+
+                        if (signNowPosRun){
+                            errorRgv = slave.getOtherId()+"鍙稲GV绛夊緟浣滀笟...";
                             return false;
                         }
                     }
                     long avoid = targetPosition - rgvProtocol.getCarBodyJiaoMing() - avoidDistance - rgvProtocolOther.getCarBodyKunPeng();
                     if (!new TrackRangeUtils().avoidRange(avoid, avoidRange[1])) {
                         log.error("RGV琛岃蛋瓒呭嚭鑼冨洿锛侊紒锛� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
+                        errorRgv = "RGV琛岃蛋鐩爣瓒呭嚭鑼冨洿";
+
                         try{
                             DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class);
                             deviceErrorService.addDeviceError("rgv", slave.getId(), "RGV琛岃蛋瓒呭嚭鑼冨洿");
                         } catch (Exception e2){
-                            log.error("e2:"+e2.getMessage());
+//                            log.error("e2:"+e2.getMessage());
                         }
                         return false;
                     }
@@ -715,11 +920,13 @@
                     long avoid = targetPosition - rgvProtocol.getCarBodyJiaoMing() - avoidDistance - rgvProtocolOther.getCarBodyKunPeng();
                     if (!new TrackRangeUtils().avoidRange(avoid, avoidRange[1])) {
                         log.error("RGV琛岃蛋瓒呭嚭鑼冨洿锛侊紒锛� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
+                        errorRgv = "RGV琛岃蛋鐩爣瓒呭嚭鑼冨洿";
+
                         try{
                             DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class);
                             deviceErrorService.addDeviceError("rgv", slave.getId(), "RGV琛岃蛋瓒呭嚭鑼冨洿");
                         } catch (Exception e2){
-                            log.error("e2:"+e2.getMessage());
+//                            log.error("e2:"+e2.getMessage());
                         }
                         return false;
                     }
@@ -743,11 +950,13 @@
                         long avoid = rgvProtocolOther.getRgvPos() + rgvProtocolOther.getCarBodyKunPeng() + avoidDistance + rgvProtocol.getCarBodyJiaoMing();
                         if (!new TrackRangeUtils().avoidRange(avoid, avoidRange[0])) {
                             log.error("RGV琛岃蛋瓒呭嚭鑼冨洿锛侊紒锛� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
+                            errorRgv = "RGV琛岃蛋鐩爣瓒呭嚭鑼冨洿";
+
                             try{
                                 DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class);
                                 deviceErrorService.addDeviceError("rgv", slave.getId(), "RGV琛岃蛋瓒呭嚭鑼冨洿");
                             } catch (Exception e2){
-                                log.error("e2:"+e2.getMessage());
+//                                log.error("e2:"+e2.getMessage());
                             }
                             return false;
                         }
@@ -760,6 +969,7 @@
                         RgvTaskCache.updateRgvStatus(rgvTaskProtocol);
                         return false;
                     }
+                    errorRgv = slave.getOtherId()+"鍙稲GV绛夊緟涓�...";
                     return false;
                 }
             } else {
@@ -770,6 +980,8 @@
                 }
             }
         }
+
+        errorRgv = slave.getOtherId()+"鍙稲GV褰卞搷锛岀瓑寰呬腑...";
         return false;
     }
 
@@ -806,7 +1018,7 @@
                 DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class);
                 deviceErrorService.addDeviceError("rgv", slave.getId(), "RGV寮傚父"+e.getMessage());
             } catch (Exception e2){
-                log.error("e2:"+e2.getMessage());
+//                log.error("e2:"+e2.getMessage());
             }
             rgvProtocol.setStatusEnable(true);
         }
@@ -844,7 +1056,7 @@
                 DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class);
                 deviceErrorService.addDeviceError("rgv", slave.getId(), "RGVplc杩炴帴澶辫触");
             } catch (Exception e2){
-                log.error("e2:"+e2.getMessage());
+//                log.error("e2:"+e2.getMessage());
             }
         }
         initRgv();
@@ -893,7 +1105,7 @@
                 rgvProtocol.setErr4(status[11]);
                 rgvProtocol.setErr5(status[12]);
                 rgvProtocol.setErr6(status[13]);
-                System.out.println("璇荤嚎绋�"+ slave.getId()+"---"+JSON.toJSONString(rgvProtocol));
+//                System.out.println("璇荤嚎绋�"+ slave.getId()+"---"+JSON.toJSONString(rgvProtocol));
 
                 OutputQueue.RGV.offer(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛", DateUtils.convert(new Date()), slave.getId()));
 //                // 宸ヤ綅1澶嶄綅淇″彿
@@ -907,6 +1119,9 @@
 //                        }
 //                    }
 //                }
+                if (rgvProtocol.getAlarm$()!=0){
+                    RgvErrCache.updateRgvErr(slave.getId(),rgvProtocol.getAlarmM());
+                }
 
                 try {
                     // 鏍规嵁瀹炴椂淇℃伅鏇存柊鏁版嵁搴�
@@ -927,7 +1142,7 @@
                             DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class);
                             deviceErrorService.addDeviceError("rgv", slave.getId(), "RGV plc鏁版嵁搴撴洿鏂板け璐�");
                         } catch (Exception e2){
-                            log.error("e2:"+e2.getMessage());
+//                            log.error("e2:"+e2.getMessage());
                         }
                     }
                 } catch (Exception ignore) {
@@ -948,7 +1163,7 @@
                     DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class);
                     deviceErrorService.addDeviceError("rgv", slave.getId(), "璇诲彇RGV plc鐘舵�佷俊鎭け璐�");
                 } catch (Exception e2){
-                    log.error("e2:"+e2.getMessage());
+//                    log.error("e2:"+e2.getMessage());
                 }
             }
         } catch (Exception e) {
@@ -960,7 +1175,7 @@
                 DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class);
                 deviceErrorService.addDeviceError("rgv", slave.getId(), "璇诲彇RGV plc鐘舵�佷俊鎭け璐�");
             } catch (Exception e2){
-                log.error("e2:"+e2.getMessage());
+//                log.error("e2:"+e2.getMessage());
             }
             initRgv();
         }
@@ -977,7 +1192,7 @@
                 DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class);
                 deviceErrorService.addDeviceError("rgv", slave.getId(), "RGV鍐欏叆鍛戒护涓虹┖");
             } catch (Exception e2){
-                log.error("e2:"+e2.getMessage());
+//                log.error("e2:"+e2.getMessage());
             }
             return false;
         }
@@ -1036,7 +1251,7 @@
                 DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class);
                 deviceErrorService.addDeviceError("rgv", slave.getId(), "RGV 鍛戒护涓嬪彂"+JSON.toJSON(taskProtocol));
             } catch (Exception e2){
-                log.error("e2:"+e2.getMessage());
+//                log.error("e2:"+e2.getMessage());
             }
             OutputQueue.RGV.offer(MessageFormat.format("銆恵0}銆慬id:{1}] >>>>> 鍛戒护涓嬪彂锛� {2}", DateUtils.convert(new Date()), slave.getId(), JSON.toJSON(taskProtocol)));
             return true;

--
Gitblit v1.9.1