| | |
| | | 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; |
| | |
| | | import com.ard.work.domain.dto.settings.VideoStreamSettingDTO; |
| | | import com.ard.work.domain.dto.signal.SignalInfo; |
| | | import com.ard.work.domain.dto.speaker.*; |
| | | import com.ard.work.domain.dto.state.PointData; |
| | | import com.ard.work.domain.dto.state.UavState; |
| | | import com.ard.work.domain.dto.telemetry.TelemetryData; |
| | | import com.ard.work.domain.dto.wayline.*; |
| | |
| | | private TyClient tyClient; |
| | | @Autowired |
| | | private RouteStateMachineService stateMachineService; |
| | | @Autowired |
| | | private IArdFlightTaskPartService ardFlightTaskPartService; |
| | | |
| | | @Resource |
| | | private UavPositionChangeService uavPositionChangeService; |
| | | @Resource |
| | | private UavRegionDetectService uavRegionDetectService; |
| | | /** |
| | | * 获取边缘服务器token信息 |
| | | * |
| | |
| | | /** |
| | | * 环绕飞行控制 |
| | | */ |
| | | // @CheckControlRight(UavControlType.FLY) |
| | | // @CheckTakeoffAltitude |
| | | // @CheckNoFlyZone |
| | | @Override |
| | | public Boolean FlyRoundControl(FlyRoundControlDTO flyRoundControlDTO) { |
| | | String boxSn = flyRoundControlDTO.getBoxSn(); |
| | |
| | | if (ardDroneInfo == null) { |
| | | throw new ControlException("未找到对应的飞行器信息,boxSn:{}" + boxSn); |
| | | } |
| | | |
| | | if ("3".equals(wayLineUploadDTO.getWayLineData().getRouteType())){ |
| | | CreateWayLineUploadDTO(wayLineUploadDTO); |
| | | } |
| | | |
| | | //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; |
| | | } |
| | | |
| | | /** |
| | | * 根据航线类型重新加工每个行点的高度 |
| | | * 如果行点类型是精细化巡检 |
| | | */ |
| | | private void CreateWayLineUploadDTO(WayLineUploadDTO wayLineUploadDTO) { |
| | | // 先获取遥测数据 |
| | | String boxSn = wayLineUploadDTO.getBoxSn(); |
| | | TelemetryData telemetryData = getUavTelemetryData(boxSn); |
| | | if (telemetryData == null) { |
| | | throw new ControlException("获取遥测数据失败, boxSn:{}" + boxSn); |
| | | } |
| | | float altitude = telemetryData.getAltitude(); |
| | | for (PointData interest : wayLineUploadDTO.getWayLineData().getInterests()) { |
| | | interest.setHeight(interest.getHeight() - altitude); |
| | | } |
| | | } |
| | | |
| | | //创建航线 |
| | |
| | | // 处理无人机遥测消息 |
| | | 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()); |
| | |
| | | } |
| | | |
| | | /** |
| | | * 开启爆闪灯 |
| | | */ |
| | | @Override |
| | | public Boolean turnOnLight() { |
| | | return null; |
| | | } |
| | | |
| | | /** |
| | | * 关闭爆闪灯 |
| | | */ |
| | | @Override |
| | | public Boolean turnOffLight() { |
| | | return null; |
| | | } |
| | | |
| | | /** |
| | | * 亮度调节 |
| | | */ |
| | | @Override |
| | | public Boolean adjustBrightness() { |
| | | return null; |
| | | } |
| | | |
| | | /** |
| | | * 根据[服务器id]查询无人机盒子列表 |
| | | */ |
| | | private List<ArdDroneInfo> getDroneLs(String serverId) { |