From a3360878835e4606c968441e432b0c3d4bd921ae Mon Sep 17 00:00:00 2001
From: sean.zhou <sean.zhou@dji.com>
Date: Fri, 23 Sep 2022 18:04:07 +0800
Subject: [PATCH] V1.2.0

---
 src/main/java/com/dji/sample/manage/service/impl/TopologyServiceImpl.java |   31 +++++++++++++++++++------------
 1 files changed, 19 insertions(+), 12 deletions(-)

diff --git a/src/main/java/com/dji/sample/manage/service/impl/TopologyServiceImpl.java b/src/main/java/com/dji/sample/manage/service/impl/TopologyServiceImpl.java
index 64d7d07..a255068 100644
--- a/src/main/java/com/dji/sample/manage/service/impl/TopologyServiceImpl.java
+++ b/src/main/java/com/dji/sample/manage/service/impl/TopologyServiceImpl.java
@@ -36,20 +36,27 @@
 
         List<TopologyDTO> topologyList = new ArrayList<>();
 
-        gatewayList.forEach(device -> {
-            List<TopologyDeviceDTO> parents = new ArrayList<>();
-            TopologyDeviceDTO gateway = deviceService.deviceConvertToTopologyDTO(device);
-            parents.add(gateway);
-
-            // Query the topology data of the drone based on the drone sn.
-            Optional<TopologyDeviceDTO> deviceTopo = deviceService.getDeviceTopoForPilot(device.getChildDeviceSn());
-            List<TopologyDeviceDTO> deviceTopoList = new ArrayList<>();
-            deviceTopo.ifPresent(deviceTopoList::add);
-
-            topologyList.add(TopologyDTO.builder().parents(parents).hosts(deviceTopoList).build());
-        });
+        gatewayList.forEach(device -> this.getDeviceTopologyByGatewaySn(device.getDeviceSn())
+                .ifPresent(topologyList::add));
 
         return topologyList;
     }
 
+    public Optional<TopologyDTO> getDeviceTopologyByGatewaySn(String gatewaySn) {
+        Optional<DeviceDTO> dtoOptional = deviceService.getDeviceBySn(gatewaySn);
+        if (dtoOptional.isEmpty()) {
+            return Optional.empty();
+        }
+        List<TopologyDeviceDTO> parents = new ArrayList<>();
+        DeviceDTO device = dtoOptional.get();
+        TopologyDeviceDTO gateway = deviceService.deviceConvertToTopologyDTO(device);
+        parents.add(gateway);
+
+        // Query the topology data of the drone based on the drone sn.
+        Optional<TopologyDeviceDTO> deviceTopo = deviceService.getDeviceTopoForPilot(device.getChildDeviceSn());
+        List<TopologyDeviceDTO> deviceTopoList = new ArrayList<>();
+        deviceTopo.ifPresent(deviceTopoList::add);
+
+        return Optional.ofNullable(TopologyDTO.builder().parents(parents).hosts(deviceTopoList).build());
+    }
 }

--
Gitblit v1.9.3