| | |
| | | package com.ard.work.service.impl; |
| | | |
| | | import com.ard.common.exception.ControlException; |
| | | import com.ard.vtdu.config.MediamtxConfig; |
| | | import com.ard.work.aspect.annotation.CheckControlRight; |
| | | import com.ard.work.aspect.annotation.CheckDroneStatus; |
| | | import com.ard.work.aspect.annotation.CheckNoFlyZone; |
| | |
| | | private TyClient tyClient; |
| | | @Autowired |
| | | private RouteStateMachineService stateMachineService; |
| | | @Autowired |
| | | private IArdFlightTaskPartService ardFlightTaskPartService; |
| | | |
| | | @Resource |
| | | private UavPositionChangeService uavPositionChangeService; |
| | | @Resource |
| | | private UavRegionDetectService uavRegionDetectService; |
| | | /** |
| | | * 获取边缘服务器token信息 |
| | | * |
| | |
| | | if (ardDroneInfo == null) { |
| | | throw new ControlException("未找到对应的飞行器信息,boxSn:{}" + boxSn); |
| | | } |
| | | //打点之前先停止打点 |
| | | FlyPointControlCancelCmd flyPointControlCancelCmd = new FlyPointControlCancelCmd(FlyPointControlCancelDTO.builder().boxSn(boxSn).build()); |
| | | this.sendMessage(ardDroneInfo.getServerId(), flyPointControlCancelCmd); |
| | | |
| | | FlyPointControlCmd flyPointControlCmd = new FlyPointControlCmd(flyPointControlDTO); |
| | | this.sendMessage(ardDroneInfo.getServerId(), flyPointControlCmd); |
| | | return true; |
| | |
| | | /** |
| | | * 环绕飞行控制 |
| | | */ |
| | | // @CheckControlRight(UavControlType.FLY) |
| | | // @CheckTakeoffAltitude |
| | | // @CheckNoFlyZone |
| | | @Override |
| | | public Boolean FlyRoundControl(FlyRoundControlDTO flyRoundControlDTO) { |
| | | String boxSn = flyRoundControlDTO.getBoxSn(); |
| | |
| | | throw new ControlException("未找到对应的飞行器信息,boxSn:{}" + boxSn); |
| | | } |
| | | //wayLineUploadDTO.setWayLineData(this.CreatePlanLineData());//设置航线数据 |
| | | System.out.println("wayLineUploadDTO:-----------------" + wayLineUploadDTO); |
| | | log.info("打印数据 ++++ wayLineUploadDTO:-----------------" + wayLineUploadDTO); |
| | | log.info("打印航线上传数据 ++++++++ wayLineUploadDTO:~~~~~~~~~~~~~~~" + wayLineUploadDTO); |
| | | WayLineUploadCmd wayLineUploadCmd = new WayLineUploadCmd(wayLineUploadDTO); |
| | | System.out.println("wayLineUploadCmd:-----------------" + wayLineUploadCmd); |
| | | this.sendMessage(ardDroneInfo.getServerId(), wayLineUploadCmd); |
| | | return true; |
| | | } |
| | |
| | | // 处理无人机遥测消息 |
| | | UavTelemetryDataCmd uavTelemetryDataCmd = (UavTelemetryDataCmd) tyCommand; |
| | | TelemetryData telemetryData = uavTelemetryDataCmd.getTelemetryData(); |
| | | telemetryData.setTimestamp(System.currentTimeMillis());//由于六合提供的状态时间戳不准,先以接收状态作为时间戳 |
| | | |
| | | // 判断是否需要触发区域检测 |
| | | if (uavPositionChangeService.shouldTriggerRegionCheck(telemetryData)) { |
| | | log.debug("无人机 {} 位置变化,触发区域检测", telemetryData.getBoxSn()); |
| | | // 异步触发区域检测(不阻塞) |
| | | uavRegionDetectService.detectRegionAsync(telemetryData); |
| | | } else { |
| | | log.debug("无人机 {} 位置未变化,跳过区域检测", telemetryData.getBoxSn()); |
| | | } |
| | | |
| | | UavTelemetryDataCache.put(telemetryData); |
| | | //logPrint("无人机遥测", uavTelemetryDataCmd.getTelemetryData().getBoxSn()); |
| | | //WebSocketUtil.sendMessageAll(uavTelemetryDataCmd.getTelemetryData()); |