From 2d8edaccfcb5e899beab776353efe2c5bcbde56f Mon Sep 17 00:00:00 2001 From: lld <15027638633@163.com> Date: Thu, 29 Jan 2026 17:39:32 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=8E=A7=E5=88=B6=E6=8C=87?= =?UTF-8?q?=E4=BB=A4=E9=94=81=E8=BF=87=E6=9C=9F=E6=97=B6=E9=97=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/agri/common/constant/Constants.java | 3 +++ .../agri/framework/interceptor/FrontendControlHandler.java | 4 ++-- .../java/com/agri/framework/manager/MqttAutoOffManager.java | 2 +- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/agri-common/src/main/java/com/agri/common/constant/Constants.java b/agri-common/src/main/java/com/agri/common/constant/Constants.java index 80eeecc..b83e6a4 100644 --- a/agri-common/src/main/java/com/agri/common/constant/Constants.java +++ b/agri-common/src/main/java/com/agri/common/constant/Constants.java @@ -170,4 +170,7 @@ public class Constants */ public static final String[] JOB_ERROR_STR = { "java.net.URL", "javax.naming.InitialContext", "org.yaml.snakeyaml", "org.springframework", "org.apache", "com.agri.common.utils.file", "com.agri.common.config", "com.agri.generator" }; + + public static final String JM1G = "jm1g"; + } diff --git a/agri-framework/src/main/java/com/agri/framework/interceptor/FrontendControlHandler.java b/agri-framework/src/main/java/com/agri/framework/interceptor/FrontendControlHandler.java index 3a02818..59a94c9 100644 --- a/agri-framework/src/main/java/com/agri/framework/interceptor/FrontendControlHandler.java +++ b/agri-framework/src/main/java/com/agri/framework/interceptor/FrontendControlHandler.java @@ -112,12 +112,12 @@ public class FrontendControlHandler { // 2. 分布式锁:设备ID+功能类型(避免同设备同功能并发控制) String lockKey = "lock:" + deviceId + ":" + funcType; Boolean lockSuccess = stringRedisTemplate.opsForValue().setIfAbsent( - lockKey, clientId, 15, TimeUnit.SECONDS // 延长至15秒,适配设备回执场景 + lockKey, clientId, 60, TimeUnit.SECONDS // 延长至15秒,适配设备回执场景 ); if (lockSuccess == null || !lockSuccess) { String errorTopic = "frontend/" + clientId + "/dtu/" + deviceId + "/listener"; mqttMessageSender.publish(errorTopic, "{\"msg\":\"设备" + funcType + "功能忙,请稍后重试\"}"); - log.warn("【分布式锁】前端{}操作设备{}的{}功能失败", clientId, deviceId, funcType); + log.warn("【分布式锁】前端{}操作设备{}的{}功能失败;可能其他用户正在操作此功能", clientId, deviceId, funcType); return; } diff --git a/agri-framework/src/main/java/com/agri/framework/manager/MqttAutoOffManager.java b/agri-framework/src/main/java/com/agri/framework/manager/MqttAutoOffManager.java index abc234d..9aadbd3 100644 --- a/agri-framework/src/main/java/com/agri/framework/manager/MqttAutoOffManager.java +++ b/agri-framework/src/main/java/com/agri/framework/manager/MqttAutoOffManager.java @@ -228,7 +228,7 @@ public class MqttAutoOffManager { // 新增:自动关也走分布式锁(避免与前端并发控制同一功能导致乱序/互相覆盖) String lockKey = "lock:" + deviceId + ":" + funcType; Boolean lockSuccess = stringRedisTemplate.opsForValue().setIfAbsent( - lockKey, "autooff", 15, TimeUnit.SECONDS + lockKey, "autooff", 60, TimeUnit.SECONDS ); if (lockSuccess == null || !lockSuccess) { log.info("【自动关任务】{}功能忙(锁占用),跳过自动关闭:deviceId={}, funcType={}", funcType, deviceId, funcType);