From 456273f11d75782e676d43763f0f0601ea5c37f8 Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期四, 03 七月 2025 16:40:18 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/core/thread/impl/NyShuttleThread.java | 14 +++++++++++---
src/main/java/com/zy/core/Utils/DeviceMsgUtils.java | 40 +++++++++++++++++++++++++++++++++++++++-
2 files changed, 50 insertions(+), 4 deletions(-)
diff --git a/src/main/java/com/zy/core/Utils/DeviceMsgUtils.java b/src/main/java/com/zy/core/Utils/DeviceMsgUtils.java
index def7c52..97399f9 100644
--- a/src/main/java/com/zy/core/Utils/DeviceMsgUtils.java
+++ b/src/main/java/com/zy/core/Utils/DeviceMsgUtils.java
@@ -23,6 +23,21 @@
@Autowired
private RedisUtil redisUtil;
+
+ public Object getDeviceCommandMsg(SlaveType deviceType, Integer deviceId) {
+ TreeSet<String> listKey = getDeviceCommandMsgListKey(deviceType, deviceId);
+ if (listKey.isEmpty()) {
+ return null;
+ }
+
+ String firstKey = listKey.first();
+ Object data = redisUtil.get(firstKey);
+ if (destroyAfterReading) {
+ redisUtil.del(firstKey);
+ }
+ return data;
+ }
+
public DeviceMsgModel getDeviceMsg(SlaveType deviceType, Integer deviceId) {
TreeSet<String> listKey = getDeviceMsgListKey(deviceType, deviceId);
if (listKey.isEmpty()) {
@@ -53,7 +68,17 @@
redisUtil.set(key, msgModel, 60 * 60);
}
- public String sendCommand(SlaveType deviceType, Integer deviceId, Object command) {
+ public String sendDeviceMsg(SlaveType deviceType, Integer deviceId, Object command) {
+ String key = parseDeviceMsgKey(deviceType, deviceId) + System.currentTimeMillis();
+
+ DeviceMsgModel deviceMsgModel = new DeviceMsgModel();
+ deviceMsgModel.setDeviceId(deviceId);
+ deviceMsgModel.setDeviceMsg(command);
+ redisUtil.set(key, deviceMsgModel, 60 * 60 * 24);
+ return key;
+ }
+
+ public String sendDeviceCommand(SlaveType deviceType, Integer deviceId, Object command) {
String key = parseDeviceCommandMsgKey(deviceType, deviceId) + System.currentTimeMillis();
redisUtil.set(key, command, 60 * 60 * 24);
return key;
@@ -61,6 +86,18 @@
public TreeSet<String> getDeviceMsgListKey(SlaveType deviceType, Integer deviceId) {
String listKey = parseDeviceMsgKey(deviceType, deviceId);
+ Set<String> keys = redisUtil.searchKeys(listKey);
+
+ TreeSet<String> treeSet = new TreeSet<>();
+ for (String key : keys) {
+ treeSet.add(key);
+ }
+
+ return treeSet;
+ }
+
+ public TreeSet<String> getDeviceCommandMsgListKey(SlaveType deviceType, Integer deviceId) {
+ String listKey = parseDeviceCommandMsgKey(deviceType, deviceId);
Set<String> keys = redisUtil.searchKeys(listKey);
TreeSet<String> treeSet = new TreeSet<>();
@@ -99,4 +136,5 @@
}
}
+
}
diff --git a/src/main/java/com/zy/core/thread/impl/NyShuttleThread.java b/src/main/java/com/zy/core/thread/impl/NyShuttleThread.java
index e63336a..155696b 100644
--- a/src/main/java/com/zy/core/thread/impl/NyShuttleThread.java
+++ b/src/main/java/com/zy/core/thread/impl/NyShuttleThread.java
@@ -41,7 +41,6 @@
import lombok.extern.slf4j.Slf4j;
import java.io.IOException;
-import java.io.OutputStreamWriter;
import java.text.MessageFormat;
import java.util.*;
@@ -77,7 +76,7 @@
listenMessageFromRedis();
listenInit();//鐩戝惉鍒濆鍖栦簨浠�
read();
- Thread.sleep(50);
+ Thread.sleep(100);
} catch (Exception e) {
log.error("ShuttleThread Fail", e);
}
@@ -257,6 +256,15 @@
InnerSuhttleExtend extend = new InnerSuhttleExtend();
shuttleProtocol.setExtend(extend);
+ }
+
+ //----------璇诲彇鍥涘悜绌挎杞︾姸鎬�-----------
+ DeviceMsgUtils deviceMsgUtils = SpringUtils.getBean(DeviceMsgUtils.class);
+ NyShuttleHttpCommand readStatusCommand = getReadStatusCommand(slave.getId());
+ //鎸囦护瓒呰繃浜旀潯锛屼笉鍐嶄笅鍙戜换鍔$姸鎬佽姹�
+ TreeSet<String> deviceCommandMsgListKey = deviceMsgUtils.getDeviceCommandMsgListKey(SlaveType.Shuttle, slave.getId());
+ if (deviceCommandMsgListKey.size() < 5) {
+ requestCommand(readStatusCommand);//璇锋眰鐘舵��
}
if (this.socketReadResults.isEmpty()) {
@@ -1090,7 +1098,7 @@
JSONObject data = JSON.parseObject(JSON.toJSONString(httpCommand));
data.remove("nodes");
- String key = deviceMsgUtils.sendCommand(SlaveType.Shuttle, slave.getId(), data);
+ String key = deviceMsgUtils.sendDeviceCommand(SlaveType.Shuttle, slave.getId(), data);
String requestType = null;
String taskId = null;
--
Gitblit v1.9.1