一键起飞条件分析根据代码分析一键起飞功能涉及前端检查、后端校验和用户确认三个层面的条件约束一、前端条件检查1. 电量限制文件[droneCommon.ts](file:///d:/java/Dji/dji-cloud-main/wvp-ui/src/views/auth/system/air/components/droneCommon.ts#L45-49)exportconstTAKEOFF_MIN_BATTERY_PERCENT30exportfunctionisTakeoffBlockedByBattery(osd:any):boolean{constbatteryosd?.battery?.capacityPercentreturnNumber(battery)TAKEOFF_MIN_BATTERY_PERCENT}条件电池电量 ≤ 30% 时禁止起飞2. 信号质量检查文件[droneCommon.ts](file:///d:/java/Dji/dji-cloud-main/wvp-ui/src/views/auth/system/air/components/droneCommon.ts#L52-71)检查项阈值处理方式电量警告30% 电量 60%警告提示搜星质量RTK/GPS 数量 10警告提示3. 多机高度冲突检测文件[droneCommon.ts](file:///d:/java/Dji/dji-cloud-main/wvp-ui/src/views/auth/system/air/components/droneCommon.ts#L80-100)条件多架次无人机之间的安全起飞高度和返航高度需间隔10米否则冲突检测失败。二、后端核心校验1. 起飞条件校验核心文件[ControlServiceImpl.java](file:///d:/java/Dji/dji-cloud-main/dji-cloud/wvp-server/src/main/java/com/gbcom/wvp/dji/control/service/impl/ControlServiceImpl.java#L162-173)privatevoidcheckTakeoffCondition(StringdockSn){OptionalDeviceDTOdockOptdeviceRedisService.getDeviceOnline(dockSn);// 条件1设备必须在线 且 状态必须是 IDLEif(!dockOpt.isPresent()||DockModeCodeEnum.IDLE!deviceService.getDockMode(dockSn)){thrownewRuntimeException(The current state does not support takeoff.);}// 条件2必须获取飞行控制权HttpResultResponseresultseizeAuthority(dockSn,DroneAuthorityEnum.FLIGHT,null);if(HttpResultResponse.CODE_SUCCESS!result.getCode()){thrownewIllegalArgumentException(result.getMessage());}}后端起飞条件条件说明失败时异常信息设备在线无人机/基站必须处于在线状态“The current state does not support takeoff.”设备空闲基站状态必须为IDLE“The current state does not support takeoff.”飞行权限平台必须获取飞行控制权权限获取失败信息2. 飞行配置限高检查文件[ControlServiceImpl.java](file:///d:/java/Dji/dji-cloud-main/dji-cloud/wvp-server/src/main/java/com/gbcom/wvp/dji/control/service/impl/ControlServiceImpl.java#L189-238)配置项检查规则失败时异常信息安全起飞高度≤ 系统限高配置“安全起飞点高度超过限高”返航高度≤ 系统限高配置“返航高度超过限高”目标高度≤ 系统限高配置默认20米“目标高度超过限高”三、用户确认UI层起飞前检查弹窗文件[takeoff-check-modal.vue](file:///d:/java/Dji/dji-cloud-main/wvp-ui/src/views/auth/system/air/components/takeoff-check-modal.vue#L1-152)必须确认的信息项目说明安全起飞高度(ALT)默认为50米返航高度(ALT)默认为100米目标点高度可选显示失联动作非M300/M350机型显示强制要求必须勾选“已确认周边环境安全”复选框才能点击立即执行。完整起飞条件流程图用户点击一键起飞 ↓ ┌─────────────────────────────────────┐ │ 前端检查层 │ │ ├─ 电量 ≤ 30% ? → 禁止起飞 │ │ ├─ 搜星质量 10 ? → 警告 │ │ └─ 多机高度冲突检测 → 冲突则提示 │ └─────────────────────────────────────┘ ↓ 通过 ┌─────────────────────────────────────┐ │ UI确认层 │ │ ├─ 显示起飞配置信息 │ │ └─ 必须勾选周边环境安全确认 │ └─────────────────────────────────────┘ ↓ 确认 ┌─────────────────────────────────────┐ │ 后端校验层 │ │ ├─ 设备在线 状态IDLE ? │ │ ├─ 飞行权限获取成功 ? │ │ └─ 配置高度 ≤ 系统限高 ? │ └─────────────────────────────────────┘ ↓ 通过 ┌─────────────────────────────────────┐ │ 发送起飞命令到无人机 │ └─────────────────────────────────────┘总结一键起飞需同时满足以下全部条件层级条件严格程度前端硬限制电池电量 30%必须满足前端警告搜星质量 ≥ 10建议满足前端冲突检测高度间隔 ≥ 10米多机场景必须满足用户确认勾选环境安全确认必须满足后端状态校验设备在线 状态IDLE必须满足后端权限校验获取飞行控制权必须满足后端配置校验各高度值 ≤ 系统限高必须满足
一键起飞条件分析
一键起飞条件分析根据代码分析一键起飞功能涉及前端检查、后端校验和用户确认三个层面的条件约束一、前端条件检查1. 电量限制文件[droneCommon.ts](file:///d:/java/Dji/dji-cloud-main/wvp-ui/src/views/auth/system/air/components/droneCommon.ts#L45-49)exportconstTAKEOFF_MIN_BATTERY_PERCENT30exportfunctionisTakeoffBlockedByBattery(osd:any):boolean{constbatteryosd?.battery?.capacityPercentreturnNumber(battery)TAKEOFF_MIN_BATTERY_PERCENT}条件电池电量 ≤ 30% 时禁止起飞2. 信号质量检查文件[droneCommon.ts](file:///d:/java/Dji/dji-cloud-main/wvp-ui/src/views/auth/system/air/components/droneCommon.ts#L52-71)检查项阈值处理方式电量警告30% 电量 60%警告提示搜星质量RTK/GPS 数量 10警告提示3. 多机高度冲突检测文件[droneCommon.ts](file:///d:/java/Dji/dji-cloud-main/wvp-ui/src/views/auth/system/air/components/droneCommon.ts#L80-100)条件多架次无人机之间的安全起飞高度和返航高度需间隔10米否则冲突检测失败。二、后端核心校验1. 起飞条件校验核心文件[ControlServiceImpl.java](file:///d:/java/Dji/dji-cloud-main/dji-cloud/wvp-server/src/main/java/com/gbcom/wvp/dji/control/service/impl/ControlServiceImpl.java#L162-173)privatevoidcheckTakeoffCondition(StringdockSn){OptionalDeviceDTOdockOptdeviceRedisService.getDeviceOnline(dockSn);// 条件1设备必须在线 且 状态必须是 IDLEif(!dockOpt.isPresent()||DockModeCodeEnum.IDLE!deviceService.getDockMode(dockSn)){thrownewRuntimeException(The current state does not support takeoff.);}// 条件2必须获取飞行控制权HttpResultResponseresultseizeAuthority(dockSn,DroneAuthorityEnum.FLIGHT,null);if(HttpResultResponse.CODE_SUCCESS!result.getCode()){thrownewIllegalArgumentException(result.getMessage());}}后端起飞条件条件说明失败时异常信息设备在线无人机/基站必须处于在线状态“The current state does not support takeoff.”设备空闲基站状态必须为IDLE“The current state does not support takeoff.”飞行权限平台必须获取飞行控制权权限获取失败信息2. 飞行配置限高检查文件[ControlServiceImpl.java](file:///d:/java/Dji/dji-cloud-main/dji-cloud/wvp-server/src/main/java/com/gbcom/wvp/dji/control/service/impl/ControlServiceImpl.java#L189-238)配置项检查规则失败时异常信息安全起飞高度≤ 系统限高配置“安全起飞点高度超过限高”返航高度≤ 系统限高配置“返航高度超过限高”目标高度≤ 系统限高配置默认20米“目标高度超过限高”三、用户确认UI层起飞前检查弹窗文件[takeoff-check-modal.vue](file:///d:/java/Dji/dji-cloud-main/wvp-ui/src/views/auth/system/air/components/takeoff-check-modal.vue#L1-152)必须确认的信息项目说明安全起飞高度(ALT)默认为50米返航高度(ALT)默认为100米目标点高度可选显示失联动作非M300/M350机型显示强制要求必须勾选“已确认周边环境安全”复选框才能点击立即执行。完整起飞条件流程图用户点击一键起飞 ↓ ┌─────────────────────────────────────┐ │ 前端检查层 │ │ ├─ 电量 ≤ 30% ? → 禁止起飞 │ │ ├─ 搜星质量 10 ? → 警告 │ │ └─ 多机高度冲突检测 → 冲突则提示 │ └─────────────────────────────────────┘ ↓ 通过 ┌─────────────────────────────────────┐ │ UI确认层 │ │ ├─ 显示起飞配置信息 │ │ └─ 必须勾选周边环境安全确认 │ └─────────────────────────────────────┘ ↓ 确认 ┌─────────────────────────────────────┐ │ 后端校验层 │ │ ├─ 设备在线 状态IDLE ? │ │ ├─ 飞行权限获取成功 ? │ │ └─ 配置高度 ≤ 系统限高 ? │ └─────────────────────────────────────┘ ↓ 通过 ┌─────────────────────────────────────┐ │ 发送起飞命令到无人机 │ └─────────────────────────────────────┘总结一键起飞需同时满足以下全部条件层级条件严格程度前端硬限制电池电量 30%必须满足前端警告搜星质量 ≥ 10建议满足前端冲突检测高度间隔 ≥ 10米多机场景必须满足用户确认勾选环境安全确认必须满足后端状态校验设备在线 状态IDLE必须满足后端权限校验获取飞行控制权必须满足后端配置校验各高度值 ≤ 系统限高必须满足