From 5ef79791cf93200c938b09dbd2461a7775391825 Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期日, 05 四月 2026 23:59:17 +0800
Subject: [PATCH] #线程日志

---
 src/main/java/com/zy/core/network/ZyStationConnectDriver.java |   42 +++++++++++++++++++++++++++++++++++++++---
 1 files changed, 39 insertions(+), 3 deletions(-)

diff --git a/src/main/java/com/zy/core/network/ZyStationConnectDriver.java b/src/main/java/com/zy/core/network/ZyStationConnectDriver.java
index 9b16ece..e2fac59 100644
--- a/src/main/java/com/zy/core/network/ZyStationConnectDriver.java
+++ b/src/main/java/com/zy/core/network/ZyStationConnectDriver.java
@@ -29,6 +29,8 @@
 
     private static final ZyStationFakeSegConnect zyStationFakeSegConnect = new ZyStationFakeSegConnect();
     private static final ZyStationV4FakeSegConnect zyStationV4FakeSegConnect = new ZyStationV4FakeSegConnect();
+    private static final long SEND_LOCK_WARN_MS = 3_000L;
+    private static final long SEND_COST_WARN_MS = 5_000L;
 
     private volatile boolean connected = false;
     private volatile boolean connecting = false;
@@ -160,9 +162,12 @@
         if (!connected || connecting || connectApi == null) {
             return new CommandResponse(false, "璁惧鏈繛鎺ワ紝鍛戒护涓嬪彂澶辫触");
         }
+        long lockWaitStart = System.currentTimeMillis();
+        int waitRounds = 0;
         while (true) {
             Object lock = redisUtil.get(RedisKeyType.STATION_EXECUTE_COMMAND_LOCK.key);
             if(lock != null) {
+                waitRounds++;
                 try {
                     Thread.sleep(500);
                 }catch (Exception e) {
@@ -173,9 +178,31 @@
                 break;
             }
         }
-        CommandResponse commandResponse = connectApi.sendCommand(deviceConfig.getDeviceNo(), command);
-        redisUtil.del(RedisKeyType.STATION_EXECUTE_COMMAND_LOCK.key);
-        return commandResponse;
+        long lockWaitCost = System.currentTimeMillis() - lockWaitStart;
+        if (lockWaitCost >= SEND_LOCK_WARN_MS) {
+            log.warn("杈撻�佸懡浠ょ瓑寰呭叏灞�鍙戦�侀攣瓒呮椂锛宒eviceNo={}, taskNo={}, stationId={}, targetStaNo={}, waitMs={}, waitRounds={}",
+                    deviceConfig == null ? null : deviceConfig.getDeviceNo(),
+                    command == null ? null : command.getTaskNo(),
+                    command == null ? null : command.getStationId(),
+                    command == null ? null : command.getTargetStaNo(),
+                    lockWaitCost,
+                    waitRounds);
+        }
+        long sendStart = System.currentTimeMillis();
+        try {
+            return connectApi.sendCommand(deviceConfig.getDeviceNo(), command);
+        } finally {
+            redisUtil.del(RedisKeyType.STATION_EXECUTE_COMMAND_LOCK.key);
+            long sendCostMs = System.currentTimeMillis() - sendStart;
+            if (sendCostMs >= SEND_COST_WARN_MS) {
+                log.warn("杈撻�佸懡浠ゅ簳灞傚彂閫佽�楁椂杩囬暱锛宒eviceNo={}, taskNo={}, stationId={}, targetStaNo={}, sendCostMs={}",
+                        deviceConfig == null ? null : deviceConfig.getDeviceNo(),
+                        command == null ? null : command.getTaskNo(),
+                        command == null ? null : command.getStationId(),
+                        command == null ? null : command.getTargetStaNo(),
+                        sendCostMs);
+            }
+        }
     }
 
     public CommandResponse sendOriginCommand(String address, short[] data) {
@@ -186,6 +213,15 @@
         return connectApi.sendOriginCommand(address, data);
     }
 
+    public boolean clearTaskBufferSlot(Integer stationId, Integer slotIdx) {
+        ZyStationConnectApi connectApi = zyStationConnectApi;
+        if (!connected || connecting || connectApi == null) {
+            return false;
+        }
+        CommandResponse response = connectApi.clearTaskBufferSlot(deviceConfig.getDeviceNo(), stationId, slotIdx);
+        return response != null && Boolean.TRUE.equals(response.getResult());
+    }
+
     public byte[] readOriginCommand(String address, int length) {
         ZyStationConnectApi connectApi = zyStationConnectApi;
         if (!connected || connecting || connectApi == null) {

--
Gitblit v1.9.1