rain
2024-08-21 2db1aa88e8ab53096a936163d686b90d8e056a99
src/main/java/com/dji/sample/manage/service/impl/TopologyServiceImpl.java
@@ -31,25 +31,32 @@
        List<DeviceDTO> gatewayList = deviceService.getDevicesByParams(
                DeviceQueryParam.builder()
                        .workspaceId(workspaceId)
                        .domain(DeviceDomainEnum.GATEWAY.getVal())
                        .domains(List.of(DeviceDomainEnum.GATEWAY.getVal()))
                        .build());
        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());
    }
}