From d17d4d1ac98865d2a71b4f24771b7b76e0839ed3 Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期五, 10 四月 2026 14:08:41 +0800
Subject: [PATCH] yys 1.设备区域 2.设备巡检,维保,保养多选 3.数采

---
 src/main/java/com/ruoyi/http/service/impl/RealTimeEnergyConsumptionServiceImpl.java |  127 +++++++++++++++++++++++++----------------
 1 files changed, 77 insertions(+), 50 deletions(-)

diff --git a/src/main/java/com/ruoyi/http/service/impl/RealTimeEnergyConsumptionServiceImpl.java b/src/main/java/com/ruoyi/http/service/impl/RealTimeEnergyConsumptionServiceImpl.java
index 6b10ba2..8b0b28a 100644
--- a/src/main/java/com/ruoyi/http/service/impl/RealTimeEnergyConsumptionServiceImpl.java
+++ b/src/main/java/com/ruoyi/http/service/impl/RealTimeEnergyConsumptionServiceImpl.java
@@ -6,9 +6,11 @@
 import com.ruoyi.common.utils.http.HttpUtils;
 import com.ruoyi.http.service.RealTimeEnergyConsumptionService;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.stereotype.Service;
 
-import java.util.Collections;
+import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -25,7 +27,7 @@
 
     private static final String TOKEN_URL = "/elitechAccess/getToken";
 
-    private static final String REAL_TIME_URL = "/elitechAccess/v2/getRealTimeData"; //鑾峰彇璁惧瀹炴椂鏁版嵁
+    private static final String REAL_TIME_URL = "/elitechAccess/v2/getRealTimeData";
 
     private static final String KET_ID = "75804708";
 
@@ -35,96 +37,121 @@
 
     private static final String PASS_WORD = "y17775163675";
 
-    private static final String DEVICE_GUID = "90444196515214284663";
-
+    @Autowired
+    private RedisTemplate<String, String> redisTemplate;
 
     /**
-     * 鏍规嵁paramCode鎻愬彇鎺㈠ご鍙傛暟
-     * @param paramList 璁惧鍙傛暟鏁扮粍
-     * @param targetCode 鐩爣鎺㈠ご缂栫爜
-     * @return 鎺㈠ご鍙傛暟瀵硅薄锛堝寘鍚玭ame/value/unit锛�
+     * 鏍规嵁 paramCode 鎻愬彇鎺㈠ご鍙傛暟銆�
      */
     private static JSONObject getProbeParam(JSONArray paramList, String targetCode) {
+        if (paramList == null) {
+            return new JSONObject();
+        }
         for (int i = 0; i < paramList.size(); i++) {
             JSONObject paramObj = paramList.getJSONObject(i);
             if (targetCode.equals(paramObj.getString("paramCode"))) {
                 return paramObj;
             }
         }
-        return new JSONObject(); // 鏈尮閰嶅埌杩斿洖绌哄璞★紝閬垮厤绌烘寚閽�
+        return new JSONObject();
     }
 
     /**
-     * 瀹炴椂鑾峰彇娓╂箍搴︼紝浜屾哀鍖栫⒊鏁版嵁
+     * 瀹炴椂鑾峰彇娓╂箍搴︺�佸厜鐓с�佷簩姘у寲纰虫暟鎹��
      */
-    public static void main(String[] args) {
-        String realTimeData = getRealTimeData(getToken());
+    public List<Map<String, String>> getRealData(List<String> guidList) {
+        log.info("寮�濮嬭幏鍙栧疄鏃舵暟鎹�");
+        List<Map<String, String>> listMaps = new ArrayList<>();
+        String realTimeData = getRealTimeData(getToken(), guidList);
         Map<String, Object> map = JSON.parseObject(realTimeData, Map.class);
-        if(map.get("code").equals(0)){
-            // 1. 瑙f瀽澶栧眰data涓篔SON鏁扮粍锛堟帴鍙h繑鍥炵殑璁惧鍒楄〃锛�
-            JSONArray deviceList = JSON.parseArray(map.get("data").toString());
-            // 2. 閬嶅巻璁惧鍒楄〃锛堟澶勪粎鍙栫涓�涓澶囷紝鑻ユ湁澶氫釜璁惧鍙惊鐜鐞嗭級
-            if (!deviceList.isEmpty()) {
-                JSONObject deviceObj = deviceList.getJSONObject(0);
-                // 3. 瑙f瀽璁惧鍐呯殑鍙傛暟鏁扮粍锛堟墍鏈塸aramCode瀵瑰簲鐨勫弬鏁帮級
-                JSONArray paramList = deviceObj.getJSONArray("data");
+        if (!Integer.valueOf(0).equals(map.get("code"))) {
+            return listMaps;
+        }
 
-                // 4. 瀹氫箟鐩爣鎺㈠ご鐨刾aramCode锛屾寜闇�鎵╁睍
-                String[] targetCodes = {"0100", "0110", "0120", "0130"};
-                for (String code : targetCodes) {
-                    // 5. 閬嶅巻鍙傛暟鏁扮粍锛屽尮閰嶇洰鏍噋aramCode
-                    for (int i = 0; i < paramList.size(); i++) {
-                        JSONObject paramObj = paramList.getJSONObject(i);
-                        String currentCode = paramObj.getString("paramCode");
-                        if (code.equals(currentCode)) {
-                            // 6. 鎻愬彇鏍稿績瀛楁锛堝�笺�佸崟浣嶃�佹帰澶村悕绉帮級
-                            String paramName = paramObj.getString("paramName"); // 鎺㈠ご1/鎺㈠ご2...
-                            String value = paramObj.getString("value");       // 鏁板�硷紙345.80/24.90...锛�
-                            String unitCode = paramObj.getString("unitCode"); // 鍗曚綅锛圠ux/鈩�/%RH/ppm锛�
+        JSONArray deviceList = JSON.parseArray(String.valueOf(map.get("data")));
+        if (deviceList == null || deviceList.isEmpty()) {
+            return listMaps;
+        }
 
-                            // 7. 涓氬姟澶勭悊锛氭墦鍗�/璧嬪��/瀛樺偍绛夛紙鎸夐渶淇敼锛�
-                            System.out.println(paramName + "锛�" + value + " " + unitCode);
-                            // 鍖归厤鍒板悗鐩存帴璺冲嚭鍐呭眰寰幆锛屾彁鍗囨晥鐜�
-                            break;
-                        }
-                    }
+        String[] targetCodes = {"0100", "0110", "0120", "0130"};
+        for (int deviceIndex = 0; deviceIndex < deviceList.size(); deviceIndex++) {
+            JSONObject deviceObj = deviceList.getJSONObject(deviceIndex);
+            JSONArray paramList = deviceObj.getJSONArray("data");
+            Map<String, String> deviceData = new HashMap<>();
+            for (String code : targetCodes) {
+                JSONObject paramObj = getProbeParam(paramList, code);
+                if (paramObj.isEmpty()) {
+                    continue;
+                }
+                String paramName = paramObj.getString("paramName");
+                String value = paramObj.getString("value");
+                String unitCode = paramObj.getString("unitCode");
+                log.info("{}: {} {}", paramName, value, unitCode);
+                switch (paramName) {
+                    case "鎺㈠ご1":
+                        deviceData.put("light", value + unitCode);
+                        break;
+                    case "鎺㈠ご2":
+                        deviceData.put("temperature", value + unitCode);
+                        break;
+                    case "鎺㈠ご3":
+                        deviceData.put("humidity", value + unitCode);
+                        break;
+                    case "鎺㈠ご4":
+                        deviceData.put("co2", value + unitCode);
+                        break;
+                    default:
+                        break;
                 }
             }
+            listMaps.add(deviceData);
         }
+        return listMaps;
+    }
+
+    public static void main(String[] args) {
         System.out.println();
     }
 
-    public static String getToken(){
+    public String getToken() {
+        String cachedToken = sanitizeToken(redisTemplate.opsForValue().get("JCLY_TOKEN:"));
+        if (cachedToken != null) {
+            return cachedToken;
+        }
         Map<String, String> param = new HashMap<>();
         param.put("keyId", KET_ID);
         param.put("keySecret", KEY_SECRET);
         param.put("userName", USER_NAME);
         param.put("password", PASS_WORD);
-        log.info("璇锋眰鍙傛暟锛歿}", JSON.toJSONString( param));
+        log.info("璇锋眰鍙傛暟锛歿}", JSON.toJSONString(param));
         String result = HttpUtils.sendPostJson(URL + TOKEN_URL, JSON.toJSONString(param));
         log.info("杩斿洖缁撴灉锛歿}", result);
         Map<String, Object> map = JSON.parseObject(result, Map.class);
-        if (map.get("code").equals(0)) {
+        if (Integer.valueOf(0).equals(map.get("code"))) {
             Object token = map.get("data");
             log.info("token:{}", token);
+            redisTemplate.opsForValue().set("JCLY_TOKEN:", token.toString(), 60 * 60 * 24);
             return token.toString();
         }
         return result;
     }
 
-    public static String getRealTimeData(String  token){
+    private String sanitizeToken(String token) {
+        if (token == null) {
+            return null;
+        }
+        String cleanedToken = token.replace("\0", "").trim();
+        return cleanedToken.isEmpty() ? null : cleanedToken;
+    }
+
+    public static String getRealTimeData(String token, List<String> guidList) {
         Map<String, Object> param = new HashMap<>();
         param.put("keyId", KET_ID);
         param.put("keySecret", KEY_SECRET);
-        param.put("deviceGuids", Collections.singletonList(DEVICE_GUID));
-        log.info("璇锋眰鍙傛暟锛歿}", JSON.toJSONString( param));
-        String result = HttpUtils.sendPostJson(URL + REAL_TIME_URL, JSON.toJSONString(param),token);
+        param.put("deviceGuids", guidList);
+        log.info("璇锋眰鍙傛暟锛歿}", JSON.toJSONString(param));
+        String result = HttpUtils.sendPostJson(URL + REAL_TIME_URL, JSON.toJSONString(param), token);
         log.info("杩斿洖缁撴灉锛歿}", result);
         return result;
     }
-
-
-
-
-
 }

--
Gitblit v1.9.3