From c65ab218b14e87489f1594b2d932f7bd54b3ba11 Mon Sep 17 00:00:00 2001
From: zouyu <2723363702@qq.com>
Date: 星期五, 17 十月 2025 13:34:19 +0800
Subject: [PATCH] 数采调整

---
 cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceServiceImpl.java |   96 +++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 78 insertions(+), 18 deletions(-)

diff --git a/cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceServiceImpl.java b/cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceServiceImpl.java
index a9ac09f..6e9bc72 100644
--- a/cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceServiceImpl.java
+++ b/cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceServiceImpl.java
@@ -17,6 +17,8 @@
 import com.ruoyi.common.core.domain.Result;
 import com.ruoyi.common.core.domain.entity.User;
 import com.ruoyi.common.utils.QueryWrappers;
+import com.ruoyi.common.utils.RedisUtil;
+import com.ruoyi.device.constant.DCResistanceMqttConstants;
 import com.ruoyi.device.dto.*;
 import com.ruoyi.device.mapper.CollectBridgeMapper;
 import com.ruoyi.device.mapper.DeviceMaintenanceMapper;
@@ -49,6 +51,7 @@
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
 import java.util.*;
+import java.util.concurrent.atomic.AtomicInteger;
 import java.util.stream.Collectors;
 
 /**
@@ -241,6 +244,7 @@
             Device device1 = deviceMapper.selectById(device.getId());
             dto.setDbUserName(device1.getDbUserName());
             dto.setDbPassword(device1.getDbPassword());
+            dto.setDbTable(device1.getDbTable());
             String ip = device.getIp();
 
             // 鏍规嵁妫�楠岄」鑾峰彇config
@@ -252,10 +256,26 @@
             // 鍒ゆ柇璁惧鏄惁鏄暟瀛楃洿妗CZX-ZB-ER02022
             if (device.getManagementNumber().equals("JCZX-ZB-ER02022")) {
                 map.putAll(dataCollectBridge(list, device, dto.getEntrustCode()));
+            }else if(device.getFileType().equals(".mqtt")){
+                //濡傛灉鏂囦欢绫诲瀷鏄痬qtt,鍒欎笉璧伴噰闆嗗櫒閲囬泦
+                Map<String, List<DataConfig>> userMap = list.stream()
+                        .peek(i -> {
+                            String itemName = i.getInspectionItem();
+                            if (StringUtils.isNotBlank(i.getInspectionItemClass())) {
+                                itemName += "@" + i.getInspectionItemClass();
+                            }
+                            String name = i.getInspectionItem().equals(i.getInspectionItemSubclass()) ? itemName + "," : itemName + "," + i.getInspectionItemSubclass();
 
-            } else {
-                map.putAll(DataAcquisition.dataAcquisitionEntrance(list, device, dto.getEntrustCode(), dto.getEntrustCode(), ip, insProducts.get(0).getCableTag(),dto.getDbUserName(),dto.getDbPassword()));
-
+                            // 娣诲姞妫�楠岄」鍚嶇О
+                            i.setInsProductItem(name);
+                        })
+                        .collect(Collectors.groupingBy(DataConfig::getInsProductItem));
+                map.putAll(getActualResistanceValueAsMap(userMap, device,dto.getEntrustCode()));
+            }else {
+                String dbUserName = StringUtils.isNotBlank(dto.getDbUserName())?dto.getDbUserName():"";
+                String dbPassword = StringUtils.isNotBlank(dto.getDbPassword())?dto.getDbPassword():"";
+                String dbTable = StringUtils.isNotBlank(dto.getDbTable())?dto.getDbTable():"";
+                map.putAll(DataAcquisition.dataAcquisitionEntrance(list, device, dto.getEntrustCode(), dto.getEntrustCode(), ip, insProducts.get(0).getCableTag(),dbUserName,dbPassword,dbTable));
             }
         }
 
@@ -267,6 +287,46 @@
         } else {
             return Result.success(null);
         }
+    }
+
+    /**
+     * 浠� Redis 涓幏鍙栧疄闄呯數闃诲�硷紝骞朵互閿�煎褰㈠紡杩斿洖
+     * @param dataConfig 鏁版嵁閰嶇疆淇℃伅
+     * @param device 璁惧淇℃伅
+     * @return 鍖呭惈瀹為檯鐢甸樆鍊煎鐞嗙粨鏋滅殑閿�煎锛涜嫢鏈幏鍙栧埌鏈夋晥鏁版嵁鍒欒繑鍥炵┖ Map
+     */
+    public Map<String, Object> getActualResistanceValueAsMap(Map<String, List<DataConfig>> dataConfig, Device device,String entrustCode) {
+        Map<String, Object> map = new HashMap<>();
+        if (ObjectUtils.isEmpty(dataConfig)) {
+            return map;
+        }
+        dataConfig.forEach((k, v) -> {
+            AtomicInteger numberOfDataEntries = new AtomicInteger();
+            List<Object> list = new ArrayList<>();
+            for (int config = 0; config < v.size(); config++) {
+                String refery = DataAcquisition.getRefer(v.get(config).getRefery());
+                if (refery.equals(DCResistanceMqttConstants.NSDQCS_DQCS_DZZ)){
+                    // 鏌ヨ瀵瑰簲濮旀墭缂栧彿鐨勬暟鎹�
+//                    Object value = RedisUtil.get(refery);
+                    CollectBridge collectBridge = collectBridgeMapper.selectOne(Wrappers.<CollectBridge>lambdaQuery().eq(CollectBridge::getEntrustCode,entrustCode).last("limit 1"));
+                    if(Objects.isNull(collectBridge)){
+                        throw new ErrorException("鐩存祦鐢甸樆鏁伴噰寮傚父锛氭病鏈夋壘鍒板鎵樼紪鍙蜂负銆�"+entrustCode+"銆戠殑鏁版嵁");
+                    }
+                    list.add(0,1);//娴嬭瘯闀垮害锛岄粯璁�1
+                    list.add(1,Objects.isNull(collectBridge.getCollectTemperature())?0.0:collectBridge.getCollectTemperature());//todo:娓╁害锛屾殏鏃舵湭閲囬泦鍒板��
+                    list.add(2,collectBridge.getCollectValue());//瀹為檯鐢甸樆鍊�
+                }else {
+                    // 浠� Redis 涓幏鍙栧垪琛ㄦ暟鎹�
+                    List<?> objectList = RedisUtil.lGet(refery, 0, -1);
+                    list.addAll(objectList);
+                }
+                numberOfDataEntries.getAndIncrement();
+            }
+            // 杩涜鍏紡璁$畻
+            Object resultValue = DataAcquisition.calculationFormula(list, v.get(0), k, device);
+            map.put(k, resultValue);
+        });
+        return map;
     }
 
     /**
@@ -290,21 +350,21 @@
 
         Map<String, Object> map = new HashMap<>();
 
-        userMap.forEach((k, v) -> {
-            List<String> resultValue = new ArrayList<>();
-            // 鏌ヨ鐩存ˉ鐢垫祦鐢甸樆鏁伴噰鍊�
-            List<CollectBridge> collectBridges = collectBridgeMapper.selectList(Wrappers.<CollectBridge>lambdaQuery()
-                    .like(CollectBridge::getEntrustCode, entrustCode)
-                    .orderByAsc(CollectBridge::getCollectDate));
-
-            resultValue = collectBridges.stream().map(CollectBridge::getCollectValue).collect(Collectors.toList());
-
-            Map<String, Object> hashMap = new HashMap<>();
-            hashMap.put("equipName", device.getDeviceName());
-            hashMap.put("equipValue", device.getManagementNumber());
-            hashMap.put("result", resultValue);
-            map.put(k, hashMap);
-        });
+//        userMap.forEach((k, v) -> {
+//            List<String> resultValue = new ArrayList<>();
+//            // 鏌ヨ鐩存ˉ鐢垫祦鐢甸樆鏁伴噰鍊�
+//            List<CollectBridge> collectBridges = collectBridgeMapper.selectList(Wrappers.<CollectBridge>lambdaQuery()
+//                    .like(CollectBridge::getEntrustCode, entrustCode)
+//                    .orderByAsc(CollectBridge::getCollectDate));
+//
+//            resultValue = collectBridges.stream().map(CollectBridge::getCollectValue).collect(Collectors.toList());
+//
+//            Map<String, Object> hashMap = new HashMap<>();
+//            hashMap.put("equipName", device.getDeviceName());
+//            hashMap.put("equipValue", device.getManagementNumber());
+//            hashMap.put("result", resultValue);
+//            map.put(k, hashMap);
+//        });
         return map;
     }
 

--
Gitblit v1.9.3