| src/main/java/com/ruoyi/common/utils/http/HttpUtils.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/ruoyi/http/service/RealTimeEnergyConsumptionService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/ruoyi/http/service/impl/RealTimeEnergyConsumptionServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/ruoyi/common/utils/http/HttpUtils.java
@@ -290,4 +290,93 @@ return true; } } /** * åæå®URLåéJSONæ ¼å¼çPOST请æ±ï¼æ¨èéç¨æ¹æ³ï¼é»è®¤UTF-8ç¼ç ï¼ * @param url åé请æ±çURL * @param jsonParam JSONæ ¼å¼ç请æ±åæ°ï¼ç´æ¥ä¼ å ¥JSONåç¬¦ä¸²ï¼ * @return è¿ç¨èµæºçååºç»æ */ public static String sendPostJson(String url, String jsonParam) { // éè½½è°ç¨ï¼é»è®¤ä½¿ç¨UTF-8ç¼ç ï¼Content-Typeåºå®ä¸ºapplication/json return sendPostJson(url, jsonParam, StandardCharsets.UTF_8.name(),null); } /** * åæå®URLåéJSONæ ¼å¼çPOST请æ±ï¼èªå®ä¹ç¼ç ï¼çµæ´»éé ç¹æ®åºæ¯ï¼ * @param url åé请æ±çURL * @param jsonParam JSONæ ¼å¼ç请æ±åæ°ï¼ç´æ¥ä¼ å ¥JSONåç¬¦ä¸²ï¼ * @param headerValue 请æ±å¤´çå¼ * @return è¿ç¨èµæºçååºç»æ */ public static String sendPostJson(String url, String jsonParam, String headerValue) { // éè½½è°ç¨ï¼é»è®¤ä½¿ç¨UTF-8ç¼ç ï¼Content-Typeåºå®ä¸ºapplication/json return sendPostJson(url, jsonParam, StandardCharsets.UTF_8.name(),headerValue); } /** * åæå®URLåéJSONæ ¼å¼çPOST请æ±ï¼èªå®ä¹ç¼ç ï¼çµæ´»éé ç¹æ®åºæ¯ï¼ * @param url åé请æ±çURL * @param jsonParam JSONæ ¼å¼ç请æ±åæ°ï¼ç´æ¥ä¼ å ¥JSONåç¬¦ä¸²ï¼ * @param charset ç¼ç ç±»åï¼å¦UTF-8ãGBKçï¼å»ºè®®ä½¿ç¨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为application/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); // æ ¸å¿ï¼JSONä¸å±Content-Type conn.setRequestProperty("Accept-Charset", charset); // 1.1 设置请æ±å¤´ï¼å¯éï¼æ ¹æ®å®é éè¦è®¾ç½® if(StringUtils.isNotEmpty(headerValue)){ conn.setRequestProperty("Authorization", headerValue); } // 2. å¼å¯è¾å ¥è¾åºæµï¼POST请æ±å¿ é¡»ï¼ conn.setDoOutput(true); conn.setDoInput(true); // 3. åå ¥JSONåæ°ï¼ä½¿ç¨æå®ç¼ç ï¼é¿å 䏿乱ç ï¼ out = new PrintWriter(conn.getOutputStream(), true); out.print(jsonParam); out.flush(); // 4. 读åååºç»æï¼ä¸è¯·æ±ç¼ç ä¸è´ï¼ä¿è¯è§£ææ£ç¡®ï¼ 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. å ³éæµèµæºï¼é¿å å åæ³æ¼ï¼ä¸å代ç finallyé»è¾ä¿æä¸è´ï¼ 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(); } } 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 { } 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 æ¢å¤´åæ°å¯¹è±¡ï¼å å«name/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. è§£æå¤å±data为JSONæ°ç»ï¼æ¥å£è¿åç设å¤åè¡¨ï¼ JSONArray deviceList = JSON.parseArray(map.get("data").toString()); // 2. éå设å¤åè¡¨ï¼æ¤å¤ä» å第ä¸ä¸ªè®¾å¤ï¼è¥æå¤ä¸ªè®¾å¤å¯å¾ªç¯å¤çï¼ if (!deviceList.isEmpty()) { JSONObject deviceObj = deviceList.getJSONObject(0); // 3. è§£æè®¾å¤å çåæ°æ°ç»ï¼ææparamCode对åºçåæ°ï¼ JSONArray paramList = deviceObj.getJSONArray("data"); // 4. å®ä¹ç®æ æ¢å¤´çparamCodeï¼æéæ©å± String[] targetCodes = {"0100", "0110", "0120", "0130"}; for (String code : targetCodes) { // 5. éååæ°æ°ç»ï¼å¹é ç®æ paramCode 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"); // åä½ï¼Lux/â/%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; } }