| | |
| | | } |
| | | } |
| | | } |
| | | // 按 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); |
| | | } |
| | | |
| | |
| | | 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()); |
| | | } |
| | | |
| | | } |