Ver Fonte

更新!

TRX há 1 ano atrás
pai
commit
fc5ee06f49

+ 10 - 0
OneCardIotClient/src/main/java/com/zhongshu/iot/client/model/deskStatistics/TopologyTreeModel.java

@@ -3,6 +3,7 @@ package com.zhongshu.iot.client.model.deskStatistics;
 import com.zhongshu.iot.client.utils.ITree;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
+import org.apache.commons.lang3.ObjectUtils;
 
 import java.io.Serializable;
 import java.util.ArrayList;
@@ -41,4 +42,13 @@ public class TopologyTreeModel implements ITree<TopologyTreeModel>, Serializable
 
     @Schema(description = "子层级")
     private List<TopologyTreeModel> children = new ArrayList<>();
+
+    public void addAll(List<TopologyTreeModel> list) {
+        if (ObjectUtils.isEmpty(children)) {
+            children = new ArrayList<>();
+        }
+        if (ObjectUtils.isNotEmpty(list)) {
+            children.addAll(list);
+        }
+    }
 }

+ 3 - 0
OneCardIotServer/src/main/java/com/zhongshu/iot/server/core/dao/mqtt/DeviceInfoDao.java

@@ -32,4 +32,7 @@ public interface DeviceInfoDao extends DeviceInfoDaoExtend, org.springframework.
     Long countByDeviceCategory(DeviceCategory deviceCategory);
 
     List<DeviceInfo> findByIsDelete(Boolean isDelete);
+
+    List<DeviceInfo> findByDeviceCategoryInAndIsDelete(List<DeviceCategory> deviceCategorys, Boolean isDelete);
+
 }

+ 33 - 14
OneCardIotServer/src/main/java/com/zhongshu/iot/server/core/service/device/DeviceStatisticsService.java

@@ -176,24 +176,37 @@ public class DeviceStatisticsService {
             gateWayUserInfos = gateWayUserInfos.stream().filter(it -> {
                 return !it.getUserName().equals("admin");
             }).collect(Collectors.toList());
-            List<DeviceInfo> deviceInfos = deviceInfoDao.findByIsDelete(Boolean.FALSE);
+
+            List<DeviceInfo> deviceInfos = deviceInfoDao.findByDeviceCategoryInAndIsDelete(
+                    List.of(DeviceCategory.GW, DeviceCategory.DC), Boolean.FALSE);
             Map<String, List<DeviceInfo>> mqttUser2GateWayInfo = new HashMap<>();
-            for (DeviceInfo deviceInfo : deviceInfos) {
-                if (deviceInfo.getDeviceCategory() == DeviceCategory.GW) {
-                    // 网关
-                    List<DeviceInfo> list = new ArrayList<>();
-                    if (mqttUser2GateWayInfo.containsKey(deviceInfo.getMqttUserName())) {
-                        list = mqttUser2GateWayInfo.get(deviceInfo.getMqttUserName());
-                    }
-                    list.add(deviceInfo);
-                    mqttUser2GateWayInfo.put(deviceInfo.getMqttUserName(), list);
-                } else {
+            Map<String, List<DeviceInfo>> dcMap = new HashMap<>();
 
-                }
+            if (ObjectUtils.isNotEmpty(deviceInfos)) {
+                deviceInfos.parallelStream().forEach(deviceInfo -> {
+                    if (deviceInfo.getDeviceCategory() == DeviceCategory.GW) {
+                        // 网关
+                        List<DeviceInfo> list = new ArrayList<>();
+                        if (mqttUser2GateWayInfo.containsKey(deviceInfo.getMqttUserName())) {
+                            list = mqttUser2GateWayInfo.get(deviceInfo.getMqttUserName());
+                        }
+                        list.add(deviceInfo);
+                        mqttUser2GateWayInfo.put(deviceInfo.getMqttUserName(), list);
+                    } else if (deviceInfo.getDeviceCategory() == DeviceCategory.GW) {
+                        List<DeviceInfo> list = new ArrayList<>();
+                        if (dcMap.containsKey(deviceInfo.getMqttUserName())) {
+                            list = dcMap.get(deviceInfo.getMqttUserName());
+                        }
+                        list.add(deviceInfo);
+                        dcMap.put(deviceInfo.getMqttUserName(), list);
+                    }
+                });
             }
 
-            gateWayUserInfos.stream().forEach(it -> {
+
+            gateWayUserInfos.parallelStream().forEach(it -> {
                 TopologyTreeModel mqttModel = mqttUserTopologyTreeModel(it);
+
                 // 查询网关信息
                 if (mqttUser2GateWayInfo.containsKey(it.getUserName())) {
                     List<DeviceInfo> gateWays = mqttUser2GateWayInfo.get(it.getUserName());
@@ -209,7 +222,13 @@ public class DeviceStatisticsService {
                         }
                         children.add(gateWayModel);
                     }
-                    mqttModel.setChildren(children);
+                    mqttModel.addAll(children);
+                }
+
+                // 添加直连设备
+                if (dcMap.containsKey(it.getUserName())) {
+                    List<DeviceInfo> gateWays = dcMap.get(it.getUserName());
+                    mqttModel.addAll(gateWays.stream().map(this::deviceTopologyTreeModel).collect(Collectors.toList()));
                 }
                 models.add(mqttModel);
             });