From b791daa70e38b4e426d2b065da5bd317fe8c91f3 Mon Sep 17 00:00:00 2001
From: 野心家 <1051256694@qq.com>
Date: 星期二, 27 五月 2025 11:18:46 +0800
Subject: [PATCH] #ZH

---
 src/main/java/com/zy/core/thread/RgvThread.java |  110 +++++++++++++++++--------------------------------------
 1 files changed, 34 insertions(+), 76 deletions(-)

diff --git a/src/main/java/com/zy/core/thread/RgvThread.java b/src/main/java/com/zy/core/thread/RgvThread.java
index 561a4e5..3c70e71 100644
--- a/src/main/java/com/zy/core/thread/RgvThread.java
+++ b/src/main/java/com/zy/core/thread/RgvThread.java
@@ -25,10 +25,7 @@
 import com.zy.core.model.RgvSlave;
 import com.zy.core.model.Task;
 import com.zy.core.model.command.RgvCommand;
-import com.zy.core.model.protocol.RgvProtocol;
-import com.zy.core.model.protocol.RgvTaskProtocol;
-import com.zy.core.model.protocol.StaProtocol;
-import com.zy.core.model.protocol.TaskProtocol;
+import com.zy.core.model.protocol.*;
 import lombok.Data;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Value;
@@ -56,7 +53,6 @@
     private Long trackBenchmark = 1L;
     //  # 閬胯璺濈
     private Long avoidDistance = 5000L;
-    private Long currentTimeMilliOld = 0L;
 
     /**
      * 宸ヤ綅1澶嶄綅淇″彿
@@ -292,19 +288,25 @@
      */
     private void taskIssued() {
         while (true) {
+            RgvRunProtocol rgvRun = RgvRunCache.getRgvRun();
+            if (!rgvRun.getRgvNo().equals(slave.getId())){
+                continue;
+            }
             try {
+                Thread.sleep(50);
+                rgvRun = RgvRunCache.getRgvRun();
+                System.out.println(JSON.toJSON(rgvRun));
+
                 // 浼戠湢 1 绉�
-                if (System.currentTimeMillis() - currentTimeMilliOld > 100) {
-                    currentTimeMilliOld = System.currentTimeMillis()+50;
+                if (System.currentTimeMillis() - rgvRun.currentTimeMilliOld > 1500) {
+                    rgvRun.currentTimeMilliOld = System.currentTimeMillis()+50;
                 } else {
                     continue;
                 }
                 if (!deviceDetection()) {
-                    currentTimeMilliOld = System.currentTimeMillis()+50;
-                    continue;
-                }
-                if (!signRunStart()){
-                    currentTimeMilliOld = System.currentTimeMillis()+50;
+                    rgvRun.currentTimeMilliOld = System.currentTimeMillis()+50;
+                    rgvRun.setRgvNo(slave.getOtherId());
+                    RgvRunCache.updateRgvStatus(rgvRun);
                     continue;
                 }
 
@@ -316,13 +318,15 @@
                     rgvTaskProtocol = RgvTaskCache.getRgvStatus(slave.getId());
                 }
                 if (!rgvProtocol.getStatusType().equals(RgvStatusType.IDLE) || (Math.abs(rgvProtocol.getRgvPos() - rgvProtocol.getRgvPosDestination())>100)){
-                    signRunEnd();
-                    currentTimeMilliOld = System.currentTimeMillis()+50;
+                    rgvRun.currentTimeMilliOld = System.currentTimeMillis()+50;
+                    rgvRun.setRgvNo(slave.getOtherId());
+                    RgvRunCache.updateRgvStatus(rgvRun);
                     continue;
                 }
                 if (rgvProtocol.getLoaded() == -1){
-                    signRunEnd();
-                    currentTimeMilliOld = System.currentTimeMillis()+50;
+                    rgvRun.currentTimeMilliOld = System.currentTimeMillis()+50;
+                    rgvRun.setRgvNo(slave.getOtherId());
+                    RgvRunCache.updateRgvStatus(rgvRun);
                     continue;
                 }
                 if (rgvTaskProtocol.getAvoid() != 0) {
@@ -339,8 +343,9 @@
 
                         RgvTaskCache.updateRgvStatus(rgvTaskProtocol);
                     }
-                    signRunEnd();
-                    currentTimeMilliOld = System.currentTimeMillis()+50;
+                    rgvRun.currentTimeMilliOld = System.currentTimeMillis()+50;
+                    rgvRun.setRgvNo(slave.getOtherId());
+                    RgvRunCache.updateRgvStatus(rgvRun);
                     continue;
                 }
 
@@ -384,12 +389,12 @@
                                     DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, taskProtocol.getTargetPositionStaNoPlcId());
                                     StaProtocol staProtocol = devpThread.getStation().get(taskProtocol.getTargetPositionStaNo());
                                     if (staProtocol == null ) {
-                                        continue;
+                                        break;
                                     }
                                     // 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢
                                     if (!staProtocol.isAutoing() || staProtocol.isLoading()
                                     ){
-                                        continue;
+                                        break;
                                     }
                                 }
                                 TaskProtocol issued = new TaskProtocol(taskProtocol);
@@ -404,8 +409,9 @@
                         }
                     }
                 }
-                signRunEnd();
-                currentTimeMilliOld = System.currentTimeMillis()+50;
+                rgvRun.currentTimeMilliOld = System.currentTimeMillis()+50;
+                rgvRun.setRgvNo(slave.getOtherId());
+                RgvRunCache.updateRgvStatus(rgvRun);
             } catch (Exception e) {
                 log.error("RGV浠诲姟涓嬪彂绾跨▼寮傚父锛侊紒锛� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
                 try{
@@ -414,6 +420,11 @@
                 } catch (Exception e2){
                     log.error("e2:"+e2.getMessage());
                 }
+                rgvRun = RgvRunCache.getRgvRun();
+                rgvRun.currentTimeMilliOld = System.currentTimeMillis()+50;
+                rgvRun.setRgvNo(slave.getOtherId());
+                RgvRunCache.updateRgvStatus(rgvRun);
+                continue;
 //                e.printStackTrace();
             }
         }
@@ -437,54 +448,6 @@
         return true;
     }
 
-    public boolean signRunStart() {
-        RgvTaskProtocol rgvTaskProtocol = RgvTaskCache.getRgvStatus(slave.getId());
-        if (rgvTaskProtocol == null) {
-            return false;
-        }
-        RgvTaskProtocol rgvTaskProtocolOther = RgvTaskCache.getRgvStatus(slave.getOtherId());
-        if (rgvTaskProtocolOther == null) {
-            return false;
-        }
-        if(!rgvTaskProtocol.isSignRun()) {
-            return false;
-        }
-        if(rgvTaskProtocolOther.isSignRun()) {
-            rgvTaskProtocol.setSignRun(rgvTaskProtocol.getRgvNo()==1);
-            RgvTaskCache.updateRgvStatus(rgvTaskProtocol);
-            return false;
-        }
-        rgvTaskProtocol.setSignRun(false);
-        RgvTaskCache.updateRgvStatus(rgvTaskProtocol);
-        return true;
-    }
-
-    public boolean signRunEnd() {
-        RgvTaskProtocol rgvTaskProtocol = RgvTaskCache.getRgvStatus(slave.getId());
-        if (rgvTaskProtocol == null) {
-            return false;
-        }
-        RgvProtocol rgvProtocolOther = RgvStatusCache.getRgvStatus(slave.getOtherId());
-        if (rgvProtocolOther == null) {
-            return false;
-        }
-        if (rgvProtocolOther.statusEnable) {
-            RgvTaskProtocol rgvTaskProtocolOther = RgvTaskCache.getRgvStatus(slave.getOtherId());
-            if (rgvTaskProtocolOther == null) {
-                return false;
-            }
-            rgvTaskProtocol.setSignRun(false);
-            RgvTaskCache.updateRgvStatus(rgvTaskProtocol);
-
-            rgvTaskProtocolOther.setSignRun(true);
-            RgvTaskCache.updateRgvStatus(rgvTaskProtocolOther);
-        } else {
-            rgvTaskProtocol.setSignRun(true);
-            RgvTaskCache.updateRgvStatus(rgvTaskProtocol);
-        }
-        return true;
-    }
-
 
     public boolean deviceDetection() {
         RgvProtocol rgvProtocol = RgvStatusCache.getRgvStatus(slave.getId());
@@ -495,9 +458,6 @@
         }
         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 (signRunStart()){
-                signRunEnd();
-            }
             return false;
         }
         RgvProtocol rgvProtocolOther = RgvStatusCache.getRgvStatus(slave.getOtherId());
@@ -510,9 +470,6 @@
         }
         if (rgvProtocolOther.statusEnable) {
             if (!rgvProtocolOther.getModeType().equals(RgvModeType.AUTO) || rgvProtocolOther.getRgvPos().equals(0L) || rgvTaskProtocolOther.getAvoid() == -1 || rgvProtocolOther.getRgvPosDestination() == 0L) {
-                if (signRunStart()){
-                    signRunEnd();
-                }
                 return false;
             }
         }
@@ -916,6 +873,7 @@
                 if (rgvProtocol.getRgvPosDestination()==0L){
                     rgvProtocol.setRgvPosDestination(rgvProtocol.getRgvPos());
                 }
+
                 rgvProtocol.setStatus(siemensNet.getByteTransform().TransInt16(result.Content, 8));
                 rgvProtocol.setTaskNo((long)siemensNet.getByteTransform().TransInt32(result.Content, 10));
 

--
Gitblit v1.9.1