From 1dacf2305187f5c2fb44f03b6b754c46cb73ba25 Mon Sep 17 00:00:00 2001
From: L <L@132>
Date: 星期四, 19 三月 2026 08:53:59 +0800
Subject: [PATCH] *

---
 src/main/java/com/zy/core/thread/RgvThread.java |   44 +++++++++++++++++++++++++++++++-------------
 1 files changed, 31 insertions(+), 13 deletions(-)

diff --git a/src/main/java/com/zy/core/thread/RgvThread.java b/src/main/java/com/zy/core/thread/RgvThread.java
index bc3d44d..313db76 100644
--- a/src/main/java/com/zy/core/thread/RgvThread.java
+++ b/src/main/java/com/zy/core/thread/RgvThread.java
@@ -5,11 +5,14 @@
 import HslCommunication.Profinet.Siemens.SiemensPLCS;
 import HslCommunication.Profinet.Siemens.SiemensS7Net;
 import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.core.common.DateUtils;
 import com.core.common.SpringUtils;
+import com.zy.asrs.entity.BasCircularShuttle;
 import com.zy.asrs.entity.BasRgv;
 import com.zy.asrs.entity.BasRgvErrLog;
 import com.zy.asrs.entity.BasRgvOpt;
+import com.zy.asrs.service.BasCircularShuttleService;
 import com.zy.asrs.service.BasRgvErrLogService;
 import com.zy.asrs.service.BasRgvOptService;
 import com.zy.asrs.service.BasRgvService;
@@ -52,7 +55,7 @@
      * 宸ヤ綅2澶嶄綅淇″彿
      */
     private boolean resetFlag2 = false;
-    private boolean connectRgv = false;
+    private volatile boolean connectRgv = false;
     private boolean alarmChangeSign = false;
 
     public RgvThread(RgvSlave slave) {
@@ -62,15 +65,8 @@
     @Override
     @SuppressWarnings("InfiniteLoopStatement")
     public void run() {
-        connectRgv = this.connect();
-        while(!connectRgv){
-            try {
-                connectRgv = this.connect();
-                Thread.sleep(100);
-            } catch (Exception e){
-
-            }
-        }
+        // 绾跨▼鍚姩鍗崇粰鍗忚浣撳畬鏁撮粯璁ゅ��
+        initRgv();
 
         // 鍚姩绾跨▼鑷姩閲嶈繛
         new Thread(this::rgvConnect).start();
@@ -159,6 +155,19 @@
                 Thread.sleep(1000);
                 if(!connectRgv){
                     try {
+                        // 鏍规嵁瀹炴椂淇℃伅鏇存柊鏁版嵁搴�
+                        BasCircularShuttleService basCircularShuttleService = SpringUtils.getBean(BasCircularShuttleService.class);
+                        BasCircularShuttle basCircularShuttle = basCircularShuttleService.selectOne(new EntityWrapper<BasCircularShuttle>().eq("rgv_no",  slave.getId()));
+                        if (basCircularShuttle == null) {
+                            continue;
+                        }
+                        if (basCircularShuttle.getStatus() != 0){
+                            continue;
+                        }
+                    } catch (Exception ignore) {
+
+                    }
+                    try {
                         connectRgv = this.connect();
                         Thread.sleep(100);
                     } catch (Exception e){
@@ -220,6 +229,9 @@
         rgvProtocol.setStatus2((short)-1);
         rgvProtocol.setLoaded2((short)0);
         rgvProtocol.setAlarm((short)0);
+        rgvProtocol.setAlarmList(new ArrayList<>());
+        rgvProtocol.setInstantaneousSpeed(0D);
+        rgvProtocol.setEndStaM((short)0);
         rgvProtocol.setxSpeed((short) 0);
         rgvProtocol.setxDistance((short) 0);
         rgvProtocol.setxDuration((short) 0);
@@ -347,8 +359,11 @@
     private void rgvOpt(RgvCommand command) {
         try{
             BasRgvOptService basRgvOptService = SpringUtils.getBean(BasRgvOptService.class);
-            BasRgvOpt basRgvOpt = new BasRgvOpt(rgvProtocol.getTaskNo1().intValue(), rgvProtocol.getRgvNo(), rgvProtocol.getRgvPosInt(), command);
-            log.info(rgvProtocol.getRgvNo()+"鍙峰皬杞﹀啓鍏ュ懡浠ゅ畾浣嶅�硷細"+rgvProtocol.getRgvPosInt());
+            int taskNo = (rgvProtocol == null || rgvProtocol.getTaskNo1() == null) ? 0 : rgvProtocol.getTaskNo1().intValue();
+            int rgvNo = (rgvProtocol == null || rgvProtocol.getRgvNo() == null) ? slave.getId() : rgvProtocol.getRgvNo();
+            int rgvPos = (rgvProtocol == null) ? 0 : rgvProtocol.getRgvPosInt();
+            BasRgvOpt basRgvOpt = new BasRgvOpt(taskNo, rgvNo, rgvPos, command);
+            log.info(rgvNo+"鍙峰皬杞﹀啓鍏ュ懡浠ゅ畾浣嶅�硷細"+rgvPos);
             basRgvOptService.insert(basRgvOpt);
         }catch (Exception e){
             log.error("RGV鍐欏叆鍛戒护淇濆瓨澶辫触锛侊紒");
@@ -357,7 +372,10 @@
     private void rgvOpt(Long command) {
         try{
             BasRgvOptService basRgvOptService = SpringUtils.getBean(BasRgvOptService.class);
-            BasRgvOpt basRgvOpt = new BasRgvOpt(rgvProtocol.getTaskNo1().intValue(), rgvProtocol.getRgvNo(), rgvProtocol.getRgvPosI(), command);
+            int taskNo = (rgvProtocol == null || rgvProtocol.getTaskNo1() == null) ? 0 : rgvProtocol.getTaskNo1().intValue();
+            int rgvNo = (rgvProtocol == null || rgvProtocol.getRgvNo() == null) ? slave.getId() : rgvProtocol.getRgvNo();
+            int rgvPos = (rgvProtocol == null) ? 0 : rgvProtocol.getRgvPosI();
+            BasRgvOpt basRgvOpt = new BasRgvOpt(taskNo, rgvNo, rgvPos, command);
             basRgvOptService.insert(basRgvOpt);
         }catch (Exception e){
             log.error("RGV鍐欏叆鍛戒护淇濆瓨澶辫触锛侊紒");

--
Gitblit v1.9.1