| | |
| | | .eq(StringUtils.hasText(param.getWorkspaceId()), |
| | | DeviceEntity::getWorkspaceId, param.getWorkspaceId()) |
| | | .eq(param.getBoundStatus() != null, DeviceEntity::getBoundStatus, param.getBoundStatus()) |
| | | .eq(param.getReserveId() != null, DeviceEntity::getReserveId, param.getReserveId()) |
| | | .orderBy(param.isOrderBy(), |
| | | param.isAsc(), DeviceEntity::getId)) |
| | | .stream() |
| | |
| | | } |
| | | |
| | | @Override |
| | | public List<DeviceDTO> getDevicesTopoForWeb(String workspaceId) { |
| | | public List<DeviceDTO> getDevicesTopoForWeb(String workspaceId, String reserveId) { |
| | | List<DeviceDTO> devicesList = this.getDevicesByParams( |
| | | DeviceQueryParam.builder() |
| | | .workspaceId(workspaceId) |
| | | .reserveId(reserveId) |
| | | .domains(List.of(DeviceDomainEnum.GATEWAY.getVal(), DeviceDomainEnum.DOCK.getVal())) |
| | | .build()); |
| | | |
| | |
| | | waylineJobQueryParam.setDockSn(deviceDTO.getDeviceSn()); |
| | | WaylineJobEntity latestJob = waylineJobService.getLatestJob(workspaceId, waylineJobQueryParam); |
| | | deviceDTO.setLatestWaylineJob(latestJob); |
| | | deviceDTO.setOnlineStatus(true); |
| | | OsdDockReceiver osdDockReceiver = (OsdDockReceiver) RedisOpsUtils.get("osd:" + deviceDTO.getDeviceSn()); |
| | | deviceDTO.setLatitude(osdDockReceiver!=null? osdDockReceiver.getLatitude():null); |
| | | deviceDTO.setLongitude(osdDockReceiver!=null? osdDockReceiver.getLongitude():null); |
| | | }); |
| | | |
| | | return devicesList; |
| | |
| | | } |
| | | |
| | | /** |
| | | * Handles messages in the state topic about basic drone data. |
| | | * |
| | | * Note: Only the data of the drone payload is handled here. You can handle other data from the drone |
| | | * according to your business needs. |
| | | * @param deviceBasic basic drone data |
| | | * 处理关于基本无人机数据的状态主题的消息。 |
| | | * 注:这里只处理无人机有效载荷的数据。你可以处理无人机的其他数据 |
| | | * *根据您的业务需要。 |
| | | * @param deviceBasic 无人机基本数据 |
| | | */ |
| | | @ServiceActivator(inputChannel = ChannelName.INBOUND_STATE_BASIC, outputChannel = ChannelName.INBOUND_STATE_PAYLOAD) |
| | | public List<DevicePayloadReceiver> stateBasic(DeviceBasicReceiver deviceBasic) { |
| | | log.info("无人机数据的状态主题的消息--DeviceBasicReceiver:{}",deviceBasic); |
| | | Optional<DeviceDTO> deviceOpt = deviceRedisService.getDeviceOnline(deviceBasic.getDeviceSn()); |
| | | if (deviceOpt.isEmpty()) { |
| | | return deviceBasic.getPayloads(); |
| | |
| | | return deviceBasic.getPayloads(); |
| | | } |
| | | DeviceDTO dock = dockOpt.get(); |
| | | log.info("redis dockOpt:{}",dockOpt); |
| | | if (!deviceBasic.getControlSource().equals(dock.getControlSource())) { |
| | | dock.setControlSource(deviceBasic.getControlSource()); |
| | | deviceRedisService.setDeviceOnline(dock); |