From 7c05f9af4b03b74e6b21ead35d24820e90aa2fea Mon Sep 17 00:00:00 2001
From: 野心家 <1051256694@qq.com>
Date: 星期三, 28 五月 2025 14:08:04 +0800
Subject: [PATCH] #ZH

---
 src/main/java/com/zy/core/thread/RgvThread.java |  148 +++++++++++++++++++++++++++++++++----------------
 1 files changed, 99 insertions(+), 49 deletions(-)

diff --git a/src/main/java/com/zy/core/thread/RgvThread.java b/src/main/java/com/zy/core/thread/RgvThread.java
index c823915..cd37355 100644
--- a/src/main/java/com/zy/core/thread/RgvThread.java
+++ b/src/main/java/com/zy/core/thread/RgvThread.java
@@ -94,7 +94,7 @@
         new Thread(this::taskIssued).start();
 
         // 鍚姩婕父绾跨▼
-//        new Thread(this::taskWalkIssued).start();
+        new Thread(this::taskWalkIssued).start();
 //        new Thread(this::taskWalkIssued2).start();
 
         // 鍚姩浠诲姟瀹屾垚绾跨▼
@@ -250,40 +250,40 @@
     /**
      * 婕父
      */
-//    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 {
+                // 浼戠湢 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();
+            }
+        }
+    }
 
     /**
      * 浠诲姟涓嬪彂
@@ -336,20 +336,6 @@
                     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);
-                        RgvErrCache.updateRgvErr(slave.getId());
-                        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);
@@ -537,6 +523,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());
@@ -599,6 +589,66 @@
                             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());

--
Gitblit v1.9.1