From bfcc71f500625a26886b43c43a8fdf2ea1152844 Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期二, 23 六月 2026 13:47:59 +0800
Subject: [PATCH] 环境检测排序,仓库绑定物联设备

---
 src/main/java/com/ruoyi/http/service/controller/JclyController.java |   49 ++++++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 42 insertions(+), 7 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 00bbb74..b8ee77a 100644
--- a/src/main/java/com/ruoyi/http/service/controller/JclyController.java
+++ b/src/main/java/com/ruoyi/http/service/controller/JclyController.java
@@ -41,27 +41,40 @@
                 .isNotNull(DeviceLedger::getExternalCode)
                 .ne(DeviceLedger::getExternalCode, ""));
 
-        Map<String, String> guidDeviceNameMap = iotDevices.stream()
+        Map<String, DeviceLedger> guidDeviceMap = 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,
+                        item -> item,
+                        (oldValue, newValue) -> StringUtils.isNotEmpty(oldValue.getDeviceName()) ? oldValue : newValue,
                         LinkedHashMap::new
                 ));
-        List<String> guidList = new ArrayList<>(guidDeviceNameMap.keySet());
+        List<String> guidList = new ArrayList<>(guidDeviceMap.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);
+                DeviceLedger device = guidDeviceMap.get(guid.trim());
+                if (device != null) {
+                    if (StringUtils.isNotEmpty(device.getDeviceName())) {
+                        item.put("deviceName", device.getDeviceName().trim());
+                    }
+                    if (StringUtils.isNotEmpty(device.getStorageLocation())) {
+                        item.put("storageLocation", device.getStorageLocation().trim());
+                    }
                 }
             }
         }
+        // 鎸� deviceName 绗竴涓瓧绗︼紙鏁板瓧锛夋帓搴�
+        maps.sort((a, b) -> {
+            String nameA = a.getOrDefault("deviceName", "");
+            String nameB = b.getOrDefault("deviceName", "");
+            int firstNumA = extractFirstNumber(nameA);
+            int firstNumB = extractFirstNumber(nameB);
+            return Integer.compare(firstNumA, firstNumB);
+        });
         return AjaxResult.success(maps);
     }
 
@@ -76,4 +89,26 @@
         return AjaxResult.success(maps);
     }
 
+    /**
+     * 鎻愬彇瀛楃涓插紑澶寸殑鏁板瓧
+     */
+    private int extractFirstNumber(String str) {
+        if (str == null || str.isEmpty()) {
+            return Integer.MAX_VALUE;
+        }
+        StringBuilder numStr = new StringBuilder();
+        for (int i = 0; i < str.length(); i++) {
+            char c = str.charAt(i);
+            if (Character.isDigit(c)) {
+                numStr.append(c);
+            } else {
+                break;
+            }
+        }
+        if (numStr.length() == 0) {
+            return Integer.MAX_VALUE;
+        }
+        return Integer.parseInt(numStr.toString());
+    }
+
 }

--
Gitblit v1.9.3