sean.zhou
2022-09-23 a3360878835e4606c968441e432b0c3d4bd921ae
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());
    }
}