From 0adbf58fd15052d8a044cf66eaa8afaa8591ba74 Mon Sep 17 00:00:00 2001
From: gongchunyi <deslre0381@gmail.com>
Date: 星期二, 27 一月 2026 17:36:46 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev_New' into dev_New

---
 src/main/java/com/ruoyi/http/service/RealTimeEnergyConsumptionService.java          |    8 ++
 src/main/java/com/ruoyi/http/service/impl/RealTimeEnergyConsumptionServiceImpl.java |  130 ++++++++++++++++++++++++++++++++
 src/main/java/com/ruoyi/common/utils/http/HttpUtils.java                            |   89 ++++++++++++++++++++++
 3 files changed, 227 insertions(+), 0 deletions(-)

diff --git a/src/main/java/com/ruoyi/common/utils/http/HttpUtils.java b/src/main/java/com/ruoyi/common/utils/http/HttpUtils.java
index d505789..0a16b62 100644
--- a/src/main/java/com/ruoyi/common/utils/http/HttpUtils.java
+++ b/src/main/java/com/ruoyi/common/utils/http/HttpUtils.java
@@ -290,4 +290,93 @@
             return true;
         }
     }
+
+    /**
+     * 鍚戞寚瀹歎RL鍙戦�丣SON鏍煎紡鐨凱OST璇锋眰锛堟帹鑽愰�氱敤鏂规硶锛岄粯璁TF-8缂栫爜锛�
+     * @param url 鍙戦�佽姹傜殑URL
+     * @param jsonParam JSON鏍煎紡鐨勮姹傚弬鏁帮紙鐩存帴浼犲叆JSON瀛楃涓诧級
+     * @return 杩滅▼璧勬簮鐨勫搷搴旂粨鏋�
+     */
+    public static String sendPostJson(String url, String jsonParam) {
+        // 閲嶈浇璋冪敤锛岄粯璁や娇鐢║TF-8缂栫爜锛孋ontent-Type鍥哄畾涓篴pplication/json
+        return sendPostJson(url, jsonParam, StandardCharsets.UTF_8.name(),null);
+    }
+
+    /**
+     * 鍚戞寚瀹歎RL鍙戦�丣SON鏍煎紡鐨凱OST璇锋眰锛堣嚜瀹氫箟缂栫爜锛岀伒娲婚�傞厤鐗规畩鍦烘櫙锛�
+     * @param url 鍙戦�佽姹傜殑URL
+     * @param jsonParam JSON鏍煎紡鐨勮姹傚弬鏁帮紙鐩存帴浼犲叆JSON瀛楃涓诧級
+     * @param headerValue 璇锋眰澶寸殑鍊�
+     * @return 杩滅▼璧勬簮鐨勫搷搴旂粨鏋�
+     */
+    public static String sendPostJson(String url, String jsonParam, String headerValue) {
+        // 閲嶈浇璋冪敤锛岄粯璁や娇鐢║TF-8缂栫爜锛孋ontent-Type鍥哄畾涓篴pplication/json
+        return sendPostJson(url, jsonParam, StandardCharsets.UTF_8.name(),headerValue);
+    }
+
+    /**
+     * 鍚戞寚瀹歎RL鍙戦�丣SON鏍煎紡鐨凱OST璇锋眰锛堣嚜瀹氫箟缂栫爜锛岀伒娲婚�傞厤鐗规畩鍦烘櫙锛�
+     * @param url 鍙戦�佽姹傜殑URL
+     * @param jsonParam JSON鏍煎紡鐨勮姹傚弬鏁帮紙鐩存帴浼犲叆JSON瀛楃涓诧級
+     * @param charset 缂栫爜绫诲瀷锛堝UTF-8銆丟BK绛夛紝寤鸿浣跨敤StandardCharsets甯搁噺锛�
+     * @return 杩滅▼璧勬簮鐨勫搷搴旂粨鏋�
+     */
+    public static String sendPostJson(String url, String jsonParam, String charset,String headerValue) {
+        PrintWriter out = null;
+        BufferedReader in = null;
+        StringBuilder result = new StringBuilder();
+        try {
+            log.info("sendPostJson - {}", url);
+            URL realUrl = new URL(url);
+            URLConnection conn = realUrl.openConnection();
+
+            // 1. 璁剧疆璇锋眰澶达細鍥哄畾Content-Type涓篴pplication/json锛岄�傞厤JSON浼犲弬瑙勮寖
+            conn.setRequestProperty("accept", "*/*");
+            conn.setRequestProperty("connection", "Keep-Alive");
+            conn.setRequestProperty("user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64)");
+            conn.setRequestProperty("Content-Type", MediaType.APPLICATION_JSON_VALUE); // 鏍稿績锛欽SON涓撳睘Content-Type
+            conn.setRequestProperty("Accept-Charset", charset);
+            // 1.1 璁剧疆璇锋眰澶达細鍙�夛紝鏍规嵁瀹為檯闇�瑕佽缃�
+            if(StringUtils.isNotEmpty(headerValue)){
+                conn.setRequestProperty("Authorization", headerValue);
+            }
+            // 2. 寮�鍚緭鍏ヨ緭鍑烘祦锛圥OST璇锋眰蹇呴』锛�
+            conn.setDoOutput(true);
+            conn.setDoInput(true);
+
+            // 3. 鍐欏叆JSON鍙傛暟锛堜娇鐢ㄦ寚瀹氱紪鐮侊紝閬垮厤涓枃涔辩爜锛�
+            out = new PrintWriter(conn.getOutputStream(), true);
+            out.print(jsonParam);
+            out.flush();
+
+            // 4. 璇诲彇鍝嶅簲缁撴灉锛堜笌璇锋眰缂栫爜涓�鑷达紝淇濊瘉瑙f瀽姝g‘锛�
+            in = new BufferedReader(new InputStreamReader(conn.getInputStream(), charset));
+            String line;
+            while ((line = in.readLine()) != null) {
+                result.append(line);
+            }
+            log.info("recv - {}", result);
+        } catch (ConnectException e) {
+            log.error("璋冪敤HttpUtils.sendPostJson ConnectException, url=" + url + ",jsonParam=" + jsonParam, e);
+        } catch (SocketTimeoutException e) {
+            log.error("璋冪敤HttpUtils.sendPostJson SocketTimeoutException, url=" + url + ",jsonParam=" + jsonParam, e);
+        } catch (IOException e) {
+            log.error("璋冪敤HttpUtils.sendPostJson IOException, url=" + url + ",jsonParam=" + jsonParam, e);
+        } catch (Exception e) {
+            log.error("璋冪敤HttpUtils.sendPostJson Exception, url=" + url + ",jsonParam=" + jsonParam, e);
+        } finally {
+            // 5. 鍏抽棴娴佽祫婧愶紙閬垮厤鍐呭瓨娉勬紡锛屼笌鍘熶唬鐮乫inally閫昏緫淇濇寔涓�鑷达級
+            try {
+                if (out != null) {
+                    out.close();
+                }
+                if (in != null) {
+                    in.close();
+                }
+            } catch (IOException ex) {
+                log.error("璋冪敤娴佸叧闂紓甯� sendPostJson, url=" + url + ",jsonParam=" + jsonParam, ex);
+            }
+        }
+        return result.toString();
+    }
 }
\ No newline at end of file
diff --git a/src/main/java/com/ruoyi/http/service/RealTimeEnergyConsumptionService.java b/src/main/java/com/ruoyi/http/service/RealTimeEnergyConsumptionService.java
new file mode 100644
index 0000000..5576f17
--- /dev/null
+++ b/src/main/java/com/ruoyi/http/service/RealTimeEnergyConsumptionService.java
@@ -0,0 +1,8 @@
+package com.ruoyi.http.service;
+
+/**
+ * @author :yys
+ * @date : 2026/1/27 16:02
+ */
+public interface RealTimeEnergyConsumptionService {
+}
diff --git a/src/main/java/com/ruoyi/http/service/impl/RealTimeEnergyConsumptionServiceImpl.java b/src/main/java/com/ruoyi/http/service/impl/RealTimeEnergyConsumptionServiceImpl.java
new file mode 100644
index 0000000..6b10ba2
--- /dev/null
+++ b/src/main/java/com/ruoyi/http/service/impl/RealTimeEnergyConsumptionServiceImpl.java
@@ -0,0 +1,130 @@
+package com.ruoyi.http.service.impl;
+
+import com.alibaba.fastjson2.JSON;
+import com.alibaba.fastjson2.JSONArray;
+import com.alibaba.fastjson2.JSONObject;
+import com.ruoyi.common.utils.http.HttpUtils;
+import com.ruoyi.http.service.RealTimeEnergyConsumptionService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author :yys
+ * @date : 2026/1/27 16:02
+ */
+@Service
+@Slf4j
+public class RealTimeEnergyConsumptionServiceImpl implements RealTimeEnergyConsumptionService {
+
+    private static final String URL = "https://new.e-elitech.cn/api/data-api";
+
+    private static final String TOKEN_URL = "/elitechAccess/getToken";
+
+    private static final String REAL_TIME_URL = "/elitechAccess/v2/getRealTimeData"; //鑾峰彇璁惧瀹炴椂鏁版嵁
+
+    private static final String KET_ID = "75804708";
+
+    private static final String KEY_SECRET = "xTUGToozKpYgUPqTsZzB";
+
+    private static final String USER_NAME = "鐢ㄦ埛30773662";
+
+    private static final String PASS_WORD = "y17775163675";
+
+    private static final String DEVICE_GUID = "90444196515214284663";
+
+
+    /**
+     * 鏍规嵁paramCode鎻愬彇鎺㈠ご鍙傛暟
+     * @param paramList 璁惧鍙傛暟鏁扮粍
+     * @param targetCode 鐩爣鎺㈠ご缂栫爜
+     * @return 鎺㈠ご鍙傛暟瀵硅薄锛堝寘鍚玭ame/value/unit锛�
+     */
+    private static JSONObject getProbeParam(JSONArray paramList, String targetCode) {
+        for (int i = 0; i < paramList.size(); i++) {
+            JSONObject paramObj = paramList.getJSONObject(i);
+            if (targetCode.equals(paramObj.getString("paramCode"))) {
+                return paramObj;
+            }
+        }
+        return new JSONObject(); // 鏈尮閰嶅埌杩斿洖绌哄璞★紝閬垮厤绌烘寚閽�
+    }
+
+    /**
+     * 瀹炴椂鑾峰彇娓╂箍搴︼紝浜屾哀鍖栫⒊鏁版嵁
+     */
+    public static void main(String[] args) {
+        String realTimeData = getRealTimeData(getToken());
+        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");
+
+                // 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锛�
+
+                            // 7. 涓氬姟澶勭悊锛氭墦鍗�/璧嬪��/瀛樺偍绛夛紙鎸夐渶淇敼锛�
+                            System.out.println(paramName + "锛�" + value + " " + unitCode);
+                            // 鍖归厤鍒板悗鐩存帴璺冲嚭鍐呭眰寰幆锛屾彁鍗囨晥鐜�
+                            break;
+                        }
+                    }
+                }
+            }
+        }
+        System.out.println();
+    }
+
+    public static String getToken(){
+        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));
+        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)) {
+            Object token = map.get("data");
+            log.info("token:{}", token);
+            return token.toString();
+        }
+        return result;
+    }
+
+    public static String getRealTimeData(String  token){
+        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);
+        log.info("杩斿洖缁撴灉锛歿}", result);
+        return result;
+    }
+
+
+
+
+
+}

--
Gitblit v1.9.3