From d5e714fecf9cba48c1a225e6eb53078cdad647c7 Mon Sep 17 00:00:00 2001
From: yaowanxin <3588231647@qq.com>
Date: 星期四, 31 七月 2025 13:55:19 +0800
Subject: [PATCH] 获取redis数据,接收前端数据存reids

---
 cnas-device/src/main/java/com/ruoyi/device/service/impl/CollectBridgeServiceImpl.java |   81 +++++++++++++++++++++++++++++++++++++---
 1 files changed, 74 insertions(+), 7 deletions(-)

diff --git a/cnas-device/src/main/java/com/ruoyi/device/service/impl/CollectBridgeServiceImpl.java b/cnas-device/src/main/java/com/ruoyi/device/service/impl/CollectBridgeServiceImpl.java
index 6024f31..8fa0b1c 100644
--- a/cnas-device/src/main/java/com/ruoyi/device/service/impl/CollectBridgeServiceImpl.java
+++ b/cnas-device/src/main/java/com/ruoyi/device/service/impl/CollectBridgeServiceImpl.java
@@ -112,16 +112,83 @@
         if(CollectionUtil.isNotEmpty(dataMap) && Objects.nonNull(dataMap.get("data"))){
             List<DCResistanceMqttVO> dataList = JSONArray.parseObject(dataMap.get("data").toString(), new TypeReference<List<DCResistanceMqttVO>>(){}.getType());
             //杩囨护鍑哄寘鍚疄闄呯數闃诲�肩殑瀵硅薄
-            DCResistanceMqttVO dcResistanceMqttVO = dataList.stream().filter(f -> StringUtils.equals(f.getDataStream(), DCResistanceMqttConstants.NSDQCS_DQCS_DZZ)).findFirst().orElse(null);
-            if(Objects.nonNull(dcResistanceMqttVO)){
-                List<DCResistanceMqttVO.DataPoint> dataPoints = dcResistanceMqttVO.getDataPoints();
-                BigDecimal value = CollectionUtil.isNotEmpty(dataPoints)?dataPoints.get(0).getValue():BigDecimal.ZERO;
-                //淇濆瓨瀹為檯鐢甸樆鍊煎埌redis
-                RedisUtil.set(DCResistanceMqttConstants.NSDQCS_DQCS_DZZ,value.doubleValue());
-            }
+            // 澶勭悊 NSDQCS.DQCS.DZZ 鏁版嵁
+            processSingleValueDataStream(dataList, DCResistanceMqttConstants.NSDQCS_DQCS_DZZ);
+            // 澶勭悊 NSTSSC.TSSC.WY 鏁版嵁
+            processThreeTimesValueDataStream(dataList, DCResistanceMqttConstants.NSTSSC_TSSC_WY);
+//            DCResistanceMqttVO dcResistanceMqttVO = dataList.stream().filter(f -> StringUtils.equals(f.getDataStream(), DCResistanceMqttConstants.NSDQCS_DQCS_DZZ)).findFirst().orElse(null);
+//            if(Objects.nonNull(dcResistanceMqttVO)){
+//                List<DCResistanceMqttVO.DataPoint> dataPoints = dcResistanceMqttVO.getDataPoints();
+//                BigDecimal value = CollectionUtil.isNotEmpty(dataPoints)?dataPoints.get(0).getValue():BigDecimal.ZERO;
+//                //淇濆瓨瀹為檯鐢甸樆鍊煎埌redis
+//                RedisUtil.set(DCResistanceMqttConstants.NSDQCS_DQCS_DZZ,value.doubleValue());
+//            }
+        }
+    }
+    /**
+     * 澶勭悊鍗曞�兼暟鎹祦鐨勬暟鎹苟淇濆瓨鍒� Redis
+     * @param dataList 鏁版嵁鍒楄〃
+     * @param dataStream 鏁版嵁娴佹爣璇�
+     */
+    private void processSingleValueDataStream(List<DCResistanceMqttVO> dataList, String dataStream) {
+        DCResistanceMqttVO dcResistanceMqttVO = dataList.stream()
+                .filter(f -> StringUtils.equals(f.getDataStream(), dataStream))
+                .findFirst()
+                .orElse(null);
+        if(Objects.nonNull(dcResistanceMqttVO)){
+            List<DCResistanceMqttVO.DataPoint> dataPoints = dcResistanceMqttVO.getDataPoints();
+            BigDecimal value = CollectionUtil.isNotEmpty(dataPoints)?dataPoints.get(0).getValue():BigDecimal.ZERO;
+            // 淇濆瓨鍗曚釜鍊煎埌 redis
+            RedisUtil.set(dataStream, value.doubleValue());
         }
     }
 
+    /**
+     * 澶勭悊闇�瑕佽幏鍙栦笁娆′笉鍚屽�肩殑鏁版嵁娴侊紝骞朵繚瀛樺埌 Redis
+     * @param dataList 鏁版嵁鍒楄〃
+     * @param dataStream 鏁版嵁娴佹爣璇�
+     */
+    private void processThreeTimesValueDataStream(List<DCResistanceMqttVO> dataList, String dataStream) {
+        // 浠� Redis 鑾峰彇宸插瓨鍌ㄧ殑鍊�
+        Object valueFromRedis = RedisUtil.get(dataStream);
+        JSONArray valueArray = new JSONArray();
+
+        if (valueFromRedis != null) {
+            if (valueFromRedis instanceof String) {
+                try {
+                    valueArray = JSONArray.parseArray((String) valueFromRedis);
+                } catch (Exception e) {
+                    // 濡傛灉瑙f瀽澶辫触锛岃鏄� Redis 涓殑鍊煎彲鑳戒笉鏄悎娉曠殑 JSON 鏁扮粍锛屽垱寤虹┖鏁扮粍
+                    valueArray = new JSONArray();
+                }
+            } else if (valueFromRedis instanceof Double) {
+                // 濡傛灉鏄� Double 绫诲瀷锛屽皢鍏舵坊鍔犲埌鏁扮粍涓�
+                valueArray.add(valueFromRedis);
+            }
+        }
+
+        // 绛涢�夊嚭褰撳墠鏁版嵁娴佸搴旂殑鏁版嵁
+        DCResistanceMqttVO dcResistanceMqttVO = dataList.stream()
+                .filter(f -> StringUtils.equals(f.getDataStream(), dataStream))
+                .findFirst()
+                .orElse(null);
+
+        if (Objects.nonNull(dcResistanceMqttVO)) {
+            List<DCResistanceMqttVO.DataPoint> dataPoints = dcResistanceMqttVO.getDataPoints();
+            if (CollectionUtil.isNotEmpty(dataPoints)) {
+                BigDecimal value = dataPoints.get(0).getValue();
+                valueArray.add(value.doubleValue());
+
+                // 鍙繚鐣欐渶鏂扮殑涓変釜鍊�
+                if (valueArray.size() > 3) {
+                    valueArray.remove(0);
+                }
+            }
+        }
+
+        // 灏嗘洿鏂板悗鐨勫�间繚瀛樺埌 Redis
+        RedisUtil.set(dataStream, valueArray.toJSONString());
+    }
     public static boolean isWithinTenMinutes(LocalDateTime dateTime1, LocalDateTime dateTime2) {
         Duration duration = Duration.between(dateTime1, dateTime2);
         long minutesDifference = Math.abs(duration.toMinutes());

--
Gitblit v1.9.3