From de1d6cf24efebced674fbaa46123648bf50bd74a Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期三, 06 五月 2026 14:08:02 +0800
Subject: [PATCH] feat(device): 添加物联网设备支持功能

---
 src/main/java/com/ruoyi/http/service/controller/JclyController.java |   70 ++++++++++++++++++++++++----------
 1 files changed, 49 insertions(+), 21 deletions(-)

diff --git a/src/main/java/com/ruoyi/http/service/controller/JclyController.java b/src/main/java/com/ruoyi/http/service/controller/JclyController.java
index ed86d62..00bbb74 100644
--- a/src/main/java/com/ruoyi/http/service/controller/JclyController.java
+++ b/src/main/java/com/ruoyi/http/service/controller/JclyController.java
@@ -1,5 +1,9 @@
 package com.ruoyi.http.service.controller;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.device.pojo.DeviceLedger;
+import com.ruoyi.device.service.IDeviceLedgerService;
 import com.ruoyi.framework.web.controller.BaseController;
 import com.ruoyi.framework.web.domain.AjaxResult;
 import com.ruoyi.http.service.impl.RealTimeEnergyConsumptionServiceImpl;
@@ -7,10 +11,14 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 
-import javax.naming.ldap.PagedResultsControl;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
 
 @RestController
 @RequestMapping("/iot")
@@ -20,31 +28,51 @@
     @Autowired
     private RealTimeEnergyConsumptionServiceImpl realTimeEnergyConsumptionService;
 
-    private final String DEVICE_GUID = "90444196515214284663";
-
-    private final String DEVICE_GUID_2 = "90187099059463151919";
-
-    private final String DEVICE_GUID_3 = "90299548548536240693";
-
-    private final String DEVICE_GUID_4 = "90558670647417764794";
-
-    private final String DEVICE_GUID_5 = "90802100373808917949";
-
-    private final String DEVICE_GUID_6 = "90878497978270816672";
+    @Autowired
+    private IDeviceLedgerService deviceLedgerService;
 
     /**
      * 瀹炴椂鑾峰彇娓╂箍搴︼紝浜屾哀鍖栫⒊鏁版嵁
      */
     @GetMapping("/getRealData")
     public AjaxResult getRealData() {
-        List<Map<String,String>> maps = realTimeEnergyConsumptionService
-                .getRealData(Arrays.
-                        asList(DEVICE_GUID,
-                                DEVICE_GUID_2,
-                                DEVICE_GUID_3,
-                                DEVICE_GUID_4,
-                                DEVICE_GUID_5,
-                                DEVICE_GUID_6));
+        List<DeviceLedger> iotDevices = deviceLedgerService.list(new LambdaQueryWrapper<DeviceLedger>()
+                .eq(DeviceLedger::getIsIotDevice, 1)
+                .isNotNull(DeviceLedger::getExternalCode)
+                .ne(DeviceLedger::getExternalCode, ""));
+
+        Map<String, String> guidDeviceNameMap = iotDevices.stream()
+                .filter(item -> StringUtils.isNotEmpty(item.getExternalCode()))
+                .collect(Collectors.toMap(
+                        item -> item.getExternalCode().trim(),
+                        item -> StringUtils.isNotEmpty(item.getDeviceName()) ? item.getDeviceName().trim() : "",
+                        (oldValue, newValue) -> StringUtils.isNotEmpty(oldValue) ? oldValue : newValue,
+                        LinkedHashMap::new
+                ));
+        List<String> guidList = new ArrayList<>(guidDeviceNameMap.keySet());
+
+        List<Map<String, String>> maps = realTimeEnergyConsumptionService
+                .getRealData(guidList);
+        for (Map<String, String> item : maps) {
+            String guid = item.get("guid");
+            if (StringUtils.isNotEmpty(guid)) {
+                String deviceName = guidDeviceNameMap.get(guid.trim());
+                if (StringUtils.isNotEmpty(deviceName)) {
+                    item.put("deviceName", deviceName);
+                }
+            }
+        }
+        return AjaxResult.success(maps);
+    }
+
+    /**
+     * 鑾峰彇鍘嗗彶鏁版嵁
+     */
+    @GetMapping("/getHistoryData")
+    public AjaxResult getHistoryData(@RequestParam(value = "guid") String guid,
+                                     @RequestParam(value = "startTime") long startTime,
+                                     @RequestParam(value = "endTime") long endTime) {
+        List<Map<String, String>> maps = realTimeEnergyConsumptionService.getHistoryData(guid, startTime, endTime);
         return AjaxResult.success(maps);
     }
 

--
Gitblit v1.9.3