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