From ca7685886ae8a4a4bb6717d48a1c48cf3934faf3 Mon Sep 17 00:00:00 2001
From: zouyu <2723363702@qq.com>
Date: 星期五, 21 十一月 2025 22:20:25 +0800
Subject: [PATCH] oa调整

---
 cnas-device/src/main/java/com/ruoyi/device/service/impl/CollectBridgeServiceImpl.java |   50 ++++++++++++++++++++++++++++++++++++++++----------
 1 files changed, 40 insertions(+), 10 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 14b64fe..6c7ac21 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
@@ -17,13 +17,12 @@
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.math.BigDecimal;
 import java.math.RoundingMode;
 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;
@@ -113,7 +112,8 @@
     }
 
     @Override
-    public void dcResistanceDataAnalysis(String jsonStr) {
+    @Transactional(rollbackFor = Exception.class)
+    public void dcResistanceDataAnalysis(String jsonStr,String deviceCode) {
         Map<String, Object> dataMap = JSONObject.parseObject(jsonStr, new TypeReference<Map<String, Object>>(){}.getType());
         if(CollectionUtil.isNotEmpty(dataMap) && Objects.nonNull(dataMap.get("data"))){
             List<DeviceMqttVO> dataList = JSONArray.parseObject(dataMap.get("data").toString(), new TypeReference<List<DeviceMqttVO>>(){}.getType());
@@ -131,20 +131,23 @@
                         .set(CollectBridge::getCollectValue,value)
                         .set(CollectBridge::getCollectTemperature,tempValue)
                         .set(CollectBridge::getLastCollectDate,LocalDateTime.now())
+                        .eq(CollectBridge::getDeviceCode,deviceCode)
                         .eq(CollectBridge::getEntrustCode,entrustCode));
             }else{
-                collectBridgeMapper.insert(new CollectBridge(entrustCode,value,tempValue,LocalDateTime.now(),LocalDateTime.now()));
+                collectBridgeMapper.insert(new CollectBridge(entrustCode,deviceCode,value,tempValue,LocalDateTime.now(),LocalDateTime.now()));
             }
         }
     }
 
     @Override
-    public void elongationDataAnalysis(String jsonStr) {
+    public void elongationDataAnalysis(String jsonStr,String deviceCode) {
         Map<String, Object> dataMap = JSONObject.parseObject(jsonStr, new TypeReference<Map<String, Object>>(){}.getType());
         if(CollectionUtil.isNotEmpty(dataMap) && Objects.nonNull(dataMap.get("data"))){
             List<DeviceMqttVO> dataList = JSONArray.parseObject(dataMap.get("data").toString(), new TypeReference<List<DeviceMqttVO>>(){}.getType());
             // 浼搁暱鐜囷細澶勭悊 NSTSSC.TSSC.SCL 鏁版嵁
-            processMultipleValueDataStream(dataList, ElongationMqttConstants.NSTSSC_TSSC_SCL,3,10.0);
+            processMultipleValueDataStream(dataList, ElongationMqttConstants.NSTSSC_TSSC_SCL,3,10.0,deviceCode);
+        }else{
+            processMultipleValueDataStream(dataMap, ElongationMqttConstants.NSTSSC1_TSSC_SCL,3,10.0,deviceCode);
         }
     }
 
@@ -171,11 +174,11 @@
      * @param dataStream 鏁版嵁娴佹爣璇�
      * @param maxSize 淇濆瓨鐨勬渶澶т釜鏁�
      * @param minVal 瀛樺偍鏁版嵁鐨勬渶灏忓�硷紝浣庝簬璇ュ�煎垯璺宠繃锛�-1浠h〃涓嶉檺鍒�
+     * @param deviceCode 璁惧缂栧彿
      */
-    private void processMultipleValueDataStream(List<DeviceMqttVO> dataList, String dataStream,int maxSize,Double minVal){
+    private void processMultipleValueDataStream(List<DeviceMqttVO> dataList, String dataStream,int maxSize,Double minVal,String deviceCode){
         // 绛涢�夊嚭褰撳墠鏁版嵁娴佸搴旂殑鏁版嵁
-//        Double value = Double.parseDouble(getValueByDataStream(dataList, dataStream));
-        Double value = BigDecimal.valueOf(Math.random()*100).setScale(7, RoundingMode.HALF_EVEN).doubleValue();
+        Double value = Double.parseDouble(getValueByDataStream(dataList, dataStream));
         //濡傛灉鏈�灏忓�间笉涓虹┖涓斾笉涓�-1锛岃幏鍙栧埌鐨勫�煎皬浜庢渶灏忓�煎垯璺宠繃涓嶅仛澶勭悊
         if(Objects.nonNull(minVal)&&minVal!=-1&&value<minVal){
             return;
@@ -189,7 +192,34 @@
                 RedisUtil.delZSetRange(dataStream,0,0);
             }
         }
-        RedisUtil.addZSet(dataStream,System.currentTimeMillis(),value);
+        RedisUtil.addZSet(dataStream+"."+deviceCode,System.currentTimeMillis(),value);
+    }
+
+    /**
+     * 澶勭悊闇�瑕佷繚瀛樺涓�肩殑鏁版嵁娴侊紝骞朵繚瀛樺埌 Redis
+     * @param dataMap 鏁版嵁鍒楄〃
+     * @param dataStream 鏁版嵁娴佹爣璇�
+     * @param maxSize 淇濆瓨鐨勬渶澶т釜鏁�
+     * @param minVal 瀛樺偍鏁版嵁鐨勬渶灏忓�硷紝浣庝簬璇ュ�煎垯璺宠繃锛�-1浠h〃涓嶉檺鍒�
+     * @param deviceCode 璁惧缂栧彿
+     */
+    private void processMultipleValueDataStream(Map<String,Object> dataMap, String dataStream,int maxSize,Double minVal,String deviceCode){
+        // 绛涢�夊嚭褰撳墠鏁版嵁娴佸搴旂殑鏁版嵁
+        Double value = Double.parseDouble(dataMap.get(dataStream).toString());
+        //濡傛灉鏈�灏忓�间笉涓虹┖涓斾笉涓�-1锛岃幏鍙栧埌鐨勫�煎皬浜庢渶灏忓�煎垯璺宠繃涓嶅仛澶勭悊
+        if(Objects.nonNull(minVal)&&minVal!=-1&&value<minVal){
+            return;
+        }
+        //鍒ゆ柇key鏄惁瀛樺湪
+        boolean existKey = RedisUtil.hasKey(dataStream);
+        if(existKey){
+            long zSetSize = RedisUtil.getZSetSize(dataStream);
+            //濡傛灉鏁版嵁闀垮害瓒呰繃鏈�澶т釜鏁帮紝鍒欏垹闄ゅ垎鏁版渶浣庣殑鏁版嵁
+            if(zSetSize>=maxSize){
+                RedisUtil.delZSetRange(dataStream,0,0);
+            }
+        }
+        RedisUtil.addZSet(dataStream+"."+deviceCode,System.currentTimeMillis(),value);
     }
 
     /**

--
Gitblit v1.9.3