From b02ace7aa9a5e046d533cf80afa8ec14c40fe133 Mon Sep 17 00:00:00 2001
From: zouyu <2723363702@qq.com>
Date: 星期四, 24 七月 2025 17:56:00 +0800
Subject: [PATCH] 直流电阻:解析mqtt订阅的数据保存到redis

---
 cnas-device/src/main/java/com/ruoyi/device/service/impl/CollectBridgeServiceImpl.java |   25 +++++++++++++++++++++++++
 1 files changed, 25 insertions(+), 0 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 a1acb6e..6024f31 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
@@ -1,20 +1,29 @@
 package com.ruoyi.device.service.impl;
 
+import cn.hutool.core.collection.CollectionUtil;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
+import com.alibaba.fastjson.TypeReference;
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.common.utils.RedisUtil;
+import com.ruoyi.device.constant.DCResistanceMqttConstants;
 import com.ruoyi.device.mapper.CollectBridgeMapper;
 import com.ruoyi.device.pojo.CollectBridge;
 import com.ruoyi.device.service.CollectBridgeService;
+import com.ruoyi.device.vo.DCResistanceMqttVO;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
 
+import java.math.BigDecimal;
 import java.time.Duration;
 import java.time.Instant;
 import java.time.LocalDateTime;
 import java.time.ZoneId;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
 
 /**
  * 鏁板瓧鐢垫ˉ閲囬泦
@@ -97,6 +106,22 @@
         }
     }
 
+    @Override
+    public void addBridgeValueByNS(String jsonStr) {
+        Map<String, Object> dataMap = JSONObject.parseObject(jsonStr, new TypeReference<Map<String, Object>>(){}.getType());
+        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());
+            }
+        }
+    }
+
     public static boolean isWithinTenMinutes(LocalDateTime dateTime1, LocalDateTime dateTime2) {
         Duration duration = Duration.between(dateTime1, dateTime2);
         long minutesDifference = Math.abs(duration.toMinutes());

--
Gitblit v1.9.3