From 2468af88e9ee9901f1d4d6f1cfdb6361c7400730 Mon Sep 17 00:00:00 2001
From: Junjie <DELL@qq.com>
Date: 星期一, 02 二月 2026 15:52:05 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/core/utils/DualCrnOperateProcessUtils.java  |    5 +++++
 src/main/java/com/zy/core/network/real/ZyCrnV2RealConnect.java   |    1 +
 src/main/java/com/zy/core/utils/CrnOperateProcessUtils.java      |    5 +++++
 src/main/java/com/zy/core/enums/RedisKeyType.java                |    2 ++
 src/main/java/com/zy/core/network/real/ZyDualCrnRealConnect.java |    1 +
 5 files changed, 14 insertions(+), 0 deletions(-)

diff --git a/src/main/java/com/zy/core/enums/RedisKeyType.java b/src/main/java/com/zy/core/enums/RedisKeyType.java
index e67dcf9..eff66b9 100644
--- a/src/main/java/com/zy/core/enums/RedisKeyType.java
+++ b/src/main/java/com/zy/core/enums/RedisKeyType.java
@@ -51,6 +51,8 @@
     GENERATE_ENABLE_IN_STATION_DATA_LIMIT("generate_enable_in_station_data_limit_"),
     GENERATE_STATION_BACK_LIMIT("generate_station_back_limit_"),
     STATION_EXECUTE_COMMAND_LOCK("station_execute_command_lock"),
+    CLEAR_CRN_TASK_LIMIT("clear_crn_task_limit_"),
+    CLEAR_DUAL_CRN_TASK_LIMIT("clear_dual_crn_task_limit_"),
 
     DUAL_CRN_PICK_WAIT_NEXT_TASK("dual_crn_pick_wait_next_task_"),
     DUAL_CRN_OUT_TASK_STATION_INFO("dual_crn_out_task_station_info_"),
diff --git a/src/main/java/com/zy/core/network/real/ZyCrnV2RealConnect.java b/src/main/java/com/zy/core/network/real/ZyCrnV2RealConnect.java
index 2f7a5a0..cad8f9b 100644
--- a/src/main/java/com/zy/core/network/real/ZyCrnV2RealConnect.java
+++ b/src/main/java/com/zy/core/network/real/ZyCrnV2RealConnect.java
@@ -109,6 +109,7 @@
                             Object lock = redisUtil.get(RedisKeyType.CRN_SEND_COMMAND_LOCK.key + deviceConfig.getDeviceNo());
                             if (lock == null) {
                                 OperateResult taskClearResult = siemensNet.Write("DB100.0", array);
+                                redisUtil.set(RedisKeyType.CLEAR_CRN_TASK_LIMIT.key + deviceConfig.getDeviceNo(), "lock", 3);
                             }
                         }
                     }
diff --git a/src/main/java/com/zy/core/network/real/ZyDualCrnRealConnect.java b/src/main/java/com/zy/core/network/real/ZyDualCrnRealConnect.java
index c37ed43..b3105fa 100644
--- a/src/main/java/com/zy/core/network/real/ZyDualCrnRealConnect.java
+++ b/src/main/java/com/zy/core/network/real/ZyDualCrnRealConnect.java
@@ -126,6 +126,7 @@
                             Object lock = redisUtil.get(RedisKeyType.DUAL_CRN_SEND_COMMAND_LOCK.key + deviceConfig.getDeviceNo());
                             if (lock == null) {
                                 OperateResult taskClearResult = siemensNet.Write("DB100.0", array);
+                                redisUtil.set(RedisKeyType.CLEAR_DUAL_CRN_TASK_LIMIT.key + deviceConfig.getDeviceNo(), "lock", 3);
                             }
                         }
                     }
diff --git a/src/main/java/com/zy/core/utils/CrnOperateProcessUtils.java b/src/main/java/com/zy/core/utils/CrnOperateProcessUtils.java
index b9b9546..d7965f9 100644
--- a/src/main/java/com/zy/core/utils/CrnOperateProcessUtils.java
+++ b/src/main/java/com/zy/core/utils/CrnOperateProcessUtils.java
@@ -97,6 +97,11 @@
                     && crnProtocol.getForkPos() == 0
                     && crnProtocol.getAlarm() == 0
             ) {
+                Object clearLock = redisUtil.get(RedisKeyType.CLEAR_CRN_TASK_LIMIT.key + basCrnp.getCrnNo());
+                if (clearLock != null) {
+                    continue;
+                }
+
                 // 濡傛灉鏈�杩戜竴娆℃槸鍏ュ簱妯″紡
                 if (crnProtocol.getLastIo().equals("I")) {
                     if (basCrnp.getInEnable().equals("Y")) {
diff --git a/src/main/java/com/zy/core/utils/DualCrnOperateProcessUtils.java b/src/main/java/com/zy/core/utils/DualCrnOperateProcessUtils.java
index ba6a2f0..39895fe 100644
--- a/src/main/java/com/zy/core/utils/DualCrnOperateProcessUtils.java
+++ b/src/main/java/com/zy/core/utils/DualCrnOperateProcessUtils.java
@@ -105,6 +105,11 @@
             return;
         }
 
+        Object clearLock = redisUtil.get(RedisKeyType.CLEAR_DUAL_CRN_TASK_LIMIT.key + basDualCrnp.getCrnNo());
+        if (clearLock != null) {
+            return;
+        }
+
         // 濡傛灉鏈�杩戜竴娆℃槸鍑哄簱妯″紡
         if (dualCrnProtocol.getLastIo().equals("O")) {
             boolean executeResult1 = processLoveMove(basDualCrnp, dualCrnThread);

--
Gitblit v1.9.1