From 209626ba2b4797f7d1c003a2876026ffcd39928a Mon Sep 17 00:00:00 2001
From: lsh <lsh@163.com>
Date: 星期五, 24 十月 2025 16:56:35 +0800
Subject: [PATCH] *

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

diff --git a/src/main/java/com/zy/core/thread/RgvThread.java b/src/main/java/com/zy/core/thread/RgvThread.java
index dddf6a7..ce27b3f 100644
--- a/src/main/java/com/zy/core/thread/RgvThread.java
+++ b/src/main/java/com/zy/core/thread/RgvThread.java
@@ -5,14 +5,18 @@
 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;
+import com.zy.asrs.utils.NumUtils;
 import com.zy.core.ThreadHandler;
 import com.zy.core.cache.MessageQueue;
 import com.zy.core.cache.OutputQueue;
@@ -62,14 +66,6 @@
     @SuppressWarnings("InfiniteLoopStatement")
     public void run() {
         connectRgv = this.connect();
-        while(!connectRgv){
-            try {
-                connectRgv = this.connect();
-                Thread.sleep(100);
-            } catch (Exception e){
-
-            }
-        }
 
         // 鍚姩绾跨▼鑷姩閲嶈繛
         new Thread(this::rgvConnect).start();
@@ -158,6 +154,16 @@
                 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.getStatus() != 0){
+                            continue;
+                        }
+                    } catch (Exception ignore) {
+
+                    }
+                    try {
                         connectRgv = this.connect();
                         Thread.sleep(100);
                     } catch (Exception e){
@@ -222,31 +228,20 @@
         rgvProtocol.setxSpeed((short) 0);
         rgvProtocol.setxDistance((short) 0);
         rgvProtocol.setxDuration((short) 0);
+        log.error("杩炴帴涓柇锛歊GV鍙凤細"+slave.getId());
+        try {
+            // 鏍规嵁瀹炴椂淇℃伅鏇存柊鏁版嵁搴�
+            BasRgvService basRgvService = SpringUtils.getBean(BasRgvService.class);
+            BasRgv basRgv = new BasRgv();
+            basRgv.setRgvNo(slave.getId());
+            basRgv.setRgvSts((int)rgvProtocol.getMode());
+            basRgv.setLoaded2(rgvProtocol.getLoaded2().intValue());
+            if (!basRgvService.updateById(rgvProtocol.toSqlModel(basRgv))){
+                log.error("RGV plc鏁版嵁搴撴洿鏂板け璐� ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot());
+            }
+        } catch (Exception ignore) {
+        }
     }
-
-//    /**
-//     * 鍒濆鍖朢GV鐘舵��
-//     */
-//    private void initRgv() {
-//        if (null == rgvProtocol) {
-//            rgvProtocol = new RgvProtocol();
-//        }
-//        rgvProtocol.setRgvNo(slave.getId());
-//        rgvProtocol.setMode((short) 3);
-//        rgvProtocol.setStatus((short)0);
-//        rgvProtocol.setTaskNo1((short)0);
-//        rgvProtocol.setStatus1((short)0);
-//        rgvProtocol.setLoaded1((short)0);
-//        rgvProtocol.setWalkPos((short)0);
-//        rgvProtocol.setRgvPos(slave.getId()*100000L);
-//        rgvProtocol.setTaskNo2((short)0);
-//        rgvProtocol.setStatus2((short)0);
-//        rgvProtocol.setLoaded2((short)0);
-//        rgvProtocol.setAlarm((short)0);
-//        rgvProtocol.setxSpeed((short) 0);
-//        rgvProtocol.setxDistance((short) 0);
-//        rgvProtocol.setxDuration((short) 0);
-//    }
 
     @Override
     public boolean connect() {
@@ -295,7 +290,7 @@
                     rgvProtocol.setRgvPos((long)poi);
                     rgvProtocol.setRgvPosInt(poi);
                 }
-                System.out.println(rgvProtocol.getRgvNo()+"鍙峰皬杞﹁鍙栧畾浣嶅�硷細"+poi);
+                log.info(rgvProtocol.getRgvNo()+"鍙峰皬杞﹁鍙栧畾浣嶅�硷細"+poi);
                 rgvProtocol.setInstantaneousSpeed(Double.valueOf(siemensNet.getByteTransform().TransInt16(resultV.Content, 0)));
                 rgvProtocol.setEndStaM(siemensNet.getByteTransform().TransInt16(resultE.Content, 0));
                 boolean[] statusAlarmList = siemensNet.getByteTransform().TransBool(resultError.Content, 0, 13);
@@ -310,7 +305,7 @@
                 alarmChangeSign = new HashSet<>(alarmList).equals(new HashSet<>(rgvProtocol.getAlarmList()));
                 rgvProtocol.setAlarmList(alarmList);
 
-//                rgvProtocol.setRgvPos((long)NumUtils.GetRandomIntInRange(1737000));
+//                rgvProtocol.setRgvPos((long) NumUtils.GetRandomIntInRange(1737000));
                 OutputQueue.RGV.offer(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛",DateUtils.convert(new Date()), slave.getId()));
 
 
@@ -357,7 +352,8 @@
     private void rgvOpt(RgvCommand command) {
         try{
             BasRgvOptService basRgvOptService = SpringUtils.getBean(BasRgvOptService.class);
-            BasRgvOpt basRgvOpt = new BasRgvOpt(rgvProtocol.getTaskNo1().intValue(), rgvProtocol.getRgvNo(), rgvProtocol.getRgvPosI(), command);
+            BasRgvOpt basRgvOpt = new BasRgvOpt(rgvProtocol.getTaskNo1().intValue(), rgvProtocol.getRgvNo(), rgvProtocol.getRgvPosInt(), command);
+            log.info(rgvProtocol.getRgvNo()+"鍙峰皬杞﹀啓鍏ュ懡浠ゅ畾浣嶅�硷細"+rgvProtocol.getRgvPosInt());
             basRgvOptService.insert(basRgvOpt);
         }catch (Exception e){
             log.error("RGV鍐欏叆鍛戒护淇濆瓨澶辫触锛侊紒");

--
Gitblit v1.9.1