From 22a623b08a221984b8eb960af9a83484418a26b9 Mon Sep 17 00:00:00 2001
From: L <L@132>
Date: 星期四, 05 三月 2026 15:42:55 +0800
Subject: [PATCH] *

---
 src/main/java/com/zy/core/thread/RgvThread.java        |   26 ++++++++++++-
 src/main/java/com/zy/core/cache/TaskProtocolCache.java |   38 +++++++++++++++++++
 2 files changed, 62 insertions(+), 2 deletions(-)

diff --git a/src/main/java/com/zy/core/cache/TaskProtocolCache.java b/src/main/java/com/zy/core/cache/TaskProtocolCache.java
index dcba42f..df3141f 100644
--- a/src/main/java/com/zy/core/cache/TaskProtocolCache.java
+++ b/src/main/java/com/zy/core/cache/TaskProtocolCache.java
@@ -138,6 +138,44 @@
     /**
      * 鏌ヨ鏄惁鏈夊彲鎵ц浠诲姟
      */
+    public TaskProtocol getNowPosRunTask3(Long targetPosition) {
+//        lock.readLock().lock(); // 鍔犺閿�
+        try {
+            for (TaskProtocol task : cache.values()) {
+                if (task.getTaskStatus()==1) {
+                    long runPos = Math.abs(task.getTargetPosition() - targetPosition);
+                    if (runPos<50) {
+                        return task;
+                    }
+                    return null;
+                }
+            }
+            for (TaskProtocol task : cache.values()) {
+                if (task.getTaskStatus()==2) {
+                    long runPos = Math.abs(task.getTargetPosition() - targetPosition);
+                    if (runPos<50) {
+                        return task;
+                    }
+                    return null;
+                }
+            }
+            for (TaskProtocol task : cache.values()) {
+                if (task.getTaskStatus()==3) {
+                    long runPos = Math.abs(task.getTargetPosition() - targetPosition);
+                    if (runPos<50) {
+                        return task;
+                    }
+                    return null;
+                }
+            }
+            return null; // 杩斿洖鍓湰
+        } finally {
+//            lock.readLock().unlock(); // 閲婃斁璇婚攣
+        }
+    }
+    /**
+     * 鏌ヨ鏄惁鏈夊彲鎵ц浠诲姟
+     */
     public TaskProtocol getNowPosRunTask(Long targetPosition) {
 //        lock.readLock().lock(); // 鍔犺閿�
         try {
diff --git a/src/main/java/com/zy/core/thread/RgvThread.java b/src/main/java/com/zy/core/thread/RgvThread.java
index 9744012..0eb2902 100644
--- a/src/main/java/com/zy/core/thread/RgvThread.java
+++ b/src/main/java/com/zy/core/thread/RgvThread.java
@@ -588,7 +588,7 @@
 
                     RgvThread rgvThreadOther = (RgvThread) SlaveConnection.get(SlaveType.Rgv, slave.getOtherId());
                     TaskProtocolCache taskProtocolCacheOther = rgvThreadOther.getTaskProtocolCache();
-                    TaskProtocol nowPosRunTask = taskProtocolCacheOther.getNowPosRunTask(rgvProtocolOther.getRgvPos());
+                    TaskProtocol nowPosRunTask = taskProtocolCacheOther.getNowPosRunTask3(rgvProtocolOther.getRgvPos());
                     if (!Cools.isEmpty(nowPosRunTask)){
                         boolean signNowPosRun = true;
                         if (nowPosRunTask.getTaskStatus()==3){
@@ -673,7 +673,12 @@
                                             }
                                         }
                                         signNowPosRun =false;
+                                    } else {
+                                        signNowPosRun =false;
                                     }
+                                }
+                                if (new TrackRangeUtils().IsItSmall(slave)){
+                                    signNowPosRun = false;
                                 }
                             } else {
                                 long twoPos = Math.abs(nowPosRunTask2.getTargetPosition() - rgvProtocolOther.getRgvPos());
@@ -683,7 +688,13 @@
                                 }
                                 if (Math.abs(onePos - twoPos)>100){
                                     if (onePos-50>twoPos+50){
+                                        signNowPosRun =true;
+                                    } else {
                                         signNowPosRun =false;
+                                    }
+                                } else {
+                                    if (new TrackRangeUtils().IsItSmall(slave)){
+                                        signNowPosRun = false;
                                     }
                                 }
                             }
@@ -793,7 +804,7 @@
                 } else {
                     RgvThread rgvThreadOther = (RgvThread) SlaveConnection.get(SlaveType.Rgv, slave.getOtherId());
                     TaskProtocolCache taskProtocolCacheOther = rgvThreadOther.getTaskProtocolCache();
-                    TaskProtocol nowPosRunTask = taskProtocolCacheOther.getNowPosRunTask(rgvProtocolOther.getRgvPos());
+                    TaskProtocol nowPosRunTask = taskProtocolCacheOther.getNowPosRunTask3(rgvProtocolOther.getRgvPos());
                     if (!Cools.isEmpty(nowPosRunTask)){
                         boolean signNowPosRun = true;
                         if (nowPosRunTask.getTaskStatus()==3){
@@ -880,7 +891,12 @@
                                             }
                                         }
                                         signNowPosRun =false;
+                                    } else {
+                                        signNowPosRun =false;
                                     }
+                                }
+                                if (new TrackRangeUtils().IsItSmall(slave)){
+                                    signNowPosRun = false;
                                 }
                             } else {
                                 long twoPos = Math.abs(nowPosRunTask2.getTargetPosition() - rgvProtocolOther.getRgvPos());
@@ -890,8 +906,14 @@
                                 }
                                 if (Math.abs(onePos - twoPos)>100){
                                     if (onePos-50>twoPos+50){
+                                        signNowPosRun =true;
+                                    } else {
                                         signNowPosRun =false;
                                     }
+                                } else {
+                                    if (new TrackRangeUtils().IsItSmall(slave)){
+                                        signNowPosRun = false;
+                                    }
                                 }
                             }
                         }

--
Gitblit v1.9.1