From 81e63e7250a1147406b30caceffc52d69eda2b05 Mon Sep 17 00:00:00 2001 From: wuyuan <15505152113@163.com> Date: Sun, 1 Jun 2025 10:58:25 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E9=94=99=E8=AF=AF=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sdk/cloudapi/debug/ErrorCodeEnum.java | 549 ++++++++++++++++++ .../wayline/model/dto/WaylineJobDTO.java | 2 + .../service/impl/WaylineJobServiceImpl.java | 3 + 3 files changed, 554 insertions(+) create mode 100644 dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/debug/ErrorCodeEnum.java diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/debug/ErrorCodeEnum.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/debug/ErrorCodeEnum.java new file mode 100644 index 0000000..a8b5fb8 --- /dev/null +++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/debug/ErrorCodeEnum.java @@ -0,0 +1,549 @@ +package org.dromara.common.sdk.cloudapi.debug; + +import org.dromara.common.sdk.common.IErrorInfo; +import org.dromara.common.sdk.mqtt.events.IEventsErrorCode; +import org.dromara.common.sdk.mqtt.services.IServicesErrorCode; + +import java.util.Arrays; + +/** + * @author sean.zhou + * @version 0.1 + * @date 2021/11/25 + */ +public enum ErrorCodeEnum implements IServicesErrorCode, IEventsErrorCode, IErrorInfo { + + // 设备升级相关 (312xxx) + DEVICE_UPGRADING(312014, "设备升级中,请勿重复操作"), + BUSY_AIRPORT_UPGRADE(312015, "机场:{dock_org_name} 业务繁忙无法进行设备升级,请等待机场处于空闲中后再试"), + UPGRADE_LINK_FAILURE(312016, "升级失败,机场和飞行器图传链路异常,请重启机场和飞行器后重试"), + AIRCRAFT_BOOT_FAILURE(312022, "飞行器开机失败或未连接,请检查飞行器是否在舱内,是否安装电池,机场和飞行器是否已对频"), + PUSH_ROD_CLOSE_FAILURE(312023, "推杆闭合失败无法升级飞行器,请检查急停按钮是否被按下,推杆是否有异物卡住"), + AIRCRAFT_NOT_DETECTED_UPGRADE(312027, "升级失败,机场未检测到飞行器"), + DEVICE_REBOOTED_DURING_UPGRADE(312028, "升级失败,设备升级过程中设备被重启"), + DEVICE_REBOOTING_UPGRADE(312029, "设备重启中无法进行设备升级,请等待设备重启完成后重试"), + ENHANCED_TRANSMISSION_ON(312030, "升级失败,飞行器增强图传开启后无法升级,请关闭飞行器增强图传后重试"), + LOW_BATTERY_UPGRADE(312704, "设备电量过低,请充电至20%以上后重试"), + + // 设备操作相关 (314xxx) + OPERATION_NOT_SUPPORTED(314000, "设备当前无法支持该操作,建议检查设备当前工作状态"), + FLIGHT_TASK_FAILED_1(314001, "飞行任务下发失败,请稍后重试"), + FLIGHT_TASK_FAILED_2(314002, "飞行任务下发失败,请稍后重试"), + INCOMPATIBLE_ROUTE_FORMAT(314003, "航线文件格式不兼容,请检查航线文件是否正确"), + FLIGHT_TASK_FAILED_3(314005, "飞行任务下发失败,请稍后重试或重启机场后重试"), + AIRCRAFT_INIT_FAILURE_1(314006, "飞行器初始化失败,请重启机场后重试"), + ROUTE_TRANSFER_FAILURE(314007, "机场传输航线至飞行器失败,请重启机场后重试"), + PREFLIGHT_TIMEOUT(314008, "飞行器起飞前准备超时,请重启机场后重试"), + AIRCRAFT_INIT_FAILURE_2(314009, "飞行器初始化失败,请重启机场后重试"), + ROUTE_EXECUTION_FAILURE(314010, "航线执行失败,请重启机场后重试"), + TASK_RESULT_UNAVAILABLE(314011, "机场系统异常,无法获取飞行任务执行结果"), + PREFLIGHT_FAILURE_1(314012, "飞行器起飞前准备失败,无法执行飞行任务,请重启机场后重试"), + ROUTE_UNAVAILABLE(314013, "飞行任务下发失败,机场无法获取到本次飞行任务的航线,无法执行飞行任务,请稍后重试"), + TASK_EXECUTION_FAILURE_1(314014, "机场系统异常,飞行任务执行失败,请稍后重试"), + PRECISION_ROUTE_TRANSFER_FAILURE(314015, "机场传输精准复拍航线至飞行器失败,无法执行飞行任务,请稍后重试或重启机场后重试"), + ROUTE_PARSE_FAILURE_1(314016, "航线文件解析失败,无法执行飞行任务,请检查航线文件"), + ROUTE_PARSE_FAILURE_2(314017, "航线文件解析失败,请检查航线后再试"), + RTK_ABNORMAL_1(314018, "飞行器 RTK 定位异常,无法执行飞行任务,请稍后重试或重启机场后重试"), + RTK_CONVERGENCE_FAILURE_1(314019, "飞行器 RTK 收敛失败,无法执行飞行任务,请稍后重试或重启机场后重试"), + AIRCRAFT_POSITION_ORIENTATION(314020, "飞行器不在停机坪正中间或飞行器朝向不正确,无法执行飞行任务,请检查飞行器位置和朝向"), + RTK_ABNORMAL_2(314021, "飞行器 RTK 定位异常,无法执行飞行任务,请稍后重试或重启机场后重试"), + APPROACH_DEPARTURE_ROUTE_FAILURE_1(314024, "进离场航线下发失败,请稍后重试或重启机场后重试"), + RTK_CONVERGENCE_TIMEOUT(314025, "RTK收敛超时,用户手动取消任务"), + NETWORK_DISCONNECTED(314200, "任务失败,由于机场网络断开,飞行器已自动返航,请确保机场已连接网络后再试"), + + // 机场通信相关 (315xxx) + AIRPORT_COMMUNICATION_FAILURE_1(315000, "机场通信异常,请重启机场后重试"), + AIRPORT_COMMUNICATION_FAILURE_2(315001, "机场通信异常,请远程开启飞机并等待 1min 后,再次下发任务重试"), + AIRPORT_COMMUNICATION_FAILURE_3(315002, "机场通信异常,请重启机场后重试"), + AIRPORT_COMMUNICATION_FAILURE_4(315003, "机场通信异常,请重启机场后重试"), + BOTH_AIRPORTS_BUSY(315004, "任务失败,请等待两个机场都空闲后,再次下发任务重试"), + AIRPORT_COMMUNICATION_FAILURE_5(315005, "机场通信异常,请重启机场后重试"), + AIRPORT_COMMUNICATION_FAILURE_6(315006, "机场通信异常,请重启机场后重试"), + AIRPORT_COMMUNICATION_FAILURE_7(315007, "机场通信异常,请将机场升级到最新版本或重启机场后重试"), + CALIBRATION_MISMATCH(315008, "降落机场和起飞机场标定信息不一致,请确认两个机场均链路通畅且使用了相同的网络信息标定"), + AIRPORT_COMMUNICATION_FAILURE_8(315009, "机场通信异常,请重启机场后重试"), + CANNOT_STOP_TASK_1(315010, "无法停止飞行任务,请稍后重试,如果仍报错请联系大疆售后"), + CANNOT_STOP_TASK_2(315011, "无法停止飞行任务,请稍后重试,如果仍报错请联系大疆售后"), + CANNOT_STOP_TASK_3(315012, "无法停止飞行任务,请稍后重试,如果仍报错请联系大疆售后"), + FLIGHT_TASK_FAILED_4(315013, "飞行任务下发失败,请稍后重试,如果仍报错请联系大疆售后"), + RETURN_POINT_NOT_SUPPORTED(315014, "当前任务类型不支持设置返航点"), + RETURN_POINT_SET_FAILURE(315015, "返航点设置失败,请稍后重试,如果仍报错请联系大疆售后"), + FLIGHT_TASK_FAILED_5(315016, "飞行任务下发失败,请稍后重试,如果仍报错请联系大疆售后"), + FLIGHT_TASK_FAILED_6(315017, "飞行任务下发失败,请稍后重试,如果仍报错请联系大疆售后"), + BOTH_AIRPORTS_BUSY_2(315018, "任务失败,请等待两个机场都空闲后,再次下发任务重试"), + POOR_DEPLOYMENT_LOCATION(315019, "设备部署位置不佳,无法执行蛙跳任务,请选择其它机场再试"), + AIRPORT_SYSTEM_ERROR_1(315050, "机场系统异常,请重启机场后重试"), + TASK_FAILED_1(315051, "任务失败,请重启机场并再次下发任务后重试,如果仍报错请联系大疆售后"), + AIRPORT_POSITION_NOT_CONVERGED(315052, "机场位置未收敛,请等待一段时间后重试"), + TASK_FAILED_2(315053, "任务失败,请重启机场并再次下发任务后重试,如果仍报错请联系大疆售后"), + TASK_FAILED_3(315054, "任务失败,请重启机场并再次下发任务后重试,如果仍报错请联系大疆售后"), + TASK_FAILED_4(315055, "任务失败,请重启机场并再次下发任务后重试,如果仍报错请联系大疆售后"), + TASK_FAILED_5(315056, "任务失败,请重启机场并再次下发任务后重试,如果仍报错请联系大疆售后"), + TASK_FAILED_6(315057, "任务失败,请重启机场并再次下发任务后重试,如果仍报错请联系大疆售后"), + TASK_FAILED_7(315058, "任务失败,请重启机场并再次下发任务后重试,如果仍报错请联系大疆售后"), + TASK_FAILED_8(315059, "任务失败,请重启机场并再次下发任务后重试,如果仍报错请联系大疆售后"), + TASK_FAILED_9(315060, "任务失败,请重启机场并再次下发任务后重试,如果仍报错请联系大疆售后"), + TASK_FAILED_10(315061, "任务失败,请重启机场并再次下发任务后重试,如果仍报错请联系大疆售后"), + TASK_FAILED_11(315062, "任务失败,请重启机场并再次下发任务后重试,如果仍报错请联系大疆售后"), + TASK_FAILED_12(315063, "任务失败,请重启机场并再次下发任务后重试,如果仍报错请联系大疆售后"), + TASK_FAILED_13(315064, "任务失败,请重启机场并再次下发任务后重试,如果仍报错请联系大疆售后"), + TASK_FAILED_14(315065, "任务失败,请重启机场并再次下发任务后重试,如果仍报错请联系大疆售后"), + + // 飞行器参数配置相关 (316xxx) + AIRCRAFT_PARAM_CONFIG_FAILURE_1(316001, "飞行器参数配置失败,请重启机场后重试"), + AIRCRAFT_PARAM_CONFIG_FAILURE_2(316002, "飞行器参数配置失败,请重启机场后重试"), + AIRCRAFT_PARAM_CONFIG_FAILURE_3(316003, "飞行器参数配置失败,请重启机场后重试"), + AIRCRAFT_PARAM_CONFIG_FAILURE_4(316004, "飞行器参数配置失败,请重启机场后重试"), + RTK_CONVERGENCE_FAILURE_2(316005, "飞行器 RTK 收敛失败,无法执行飞行任务,请重启机场后重试"), + TASK_TIMEOUT_1(316006, "任务超时,飞行器已丢失或降落时机场未开启舱盖或展开推杆,飞行器无法降落回机场,请尽快至机场部署现场检查飞行器状况"), + AIRCRAFT_INIT_FAILURE_3(316007, "飞行器初始化失败,请重启机场后重试"), + CONTROL_AUTHORITY_FAILURE_1(316008, "机场获取飞行器控制权失败,无法执行飞行任务,请确认遥控器未锁定控制权"), + LOW_BATTERY_1(316009, "飞行器电量低于30%,无法执行飞行任务,请充电后重试(建议电量≥50%)"), + AIRCRAFT_NOT_DETECTED_1(316010, "机场未检测到飞行器,无法执行飞行任务,请检查舱内是否有飞行器,机场与飞行器是否已对频,或重启机场后重试"), + LANDING_POSITION_OFFSET(316011, "飞行器降落位置偏移过大,请检查飞行器是否需要现场摆正"), + PREFLIGHT_FAILURE_2(316012, "飞行器起飞前准备失败,无法执行飞行任务,请重启机场后重试"), + PREFLIGHT_FAILURE_3(316013, "飞行器起飞前准备失败,无法执行飞行任务,请重启机场后重试"), + PREFLIGHT_FAILURE_4(316014, "飞行器起飞前准备失败,无法执行飞行任务,请重启机场后重试"), + RTK_POSITION_TOO_FAR(316015, "飞行器 RTK 收敛位置距离机场过远,无法执行飞行任务,请重启机场后重试"), + LANDING_TIMEOUT(316016, "飞行器降落至机场超时,可能是机场与飞行器断连导致,请通过直播查看飞行器是否降落至舱内"), + MEDIA_COUNT_TIMEOUT(316017, "获取飞行器媒体数量超时,可能是机场与飞行器断连导致,请通过直播查看飞行器是否降落至舱内"), + TASK_EXECUTION_TIMEOUT_1(316018, "飞行任务执行超时,可能是机场与飞行器断连导致,请通过直播查看飞行器是否降落至舱内"), + AIRPORT_SYSTEM_ERROR_2(316019, "机场系统错误,无法执行飞行任务,请稍后重试"), + RTK_SOURCE_ERROR(316020, "飞行器使用的 RTK 信号源错误,请稍后重试"), + RTK_SOURCE_CHECK_TIMEOUT(316021, "飞行器 RTK 信号源检查超时,请稍后重试"), + RETURN_COMMAND_FAILURE_1(316022, "飞行器无法执行返航指令,请检查飞行器是否已开机,机场与飞行器是否已断连,请确认无以上问题后重试"), + RETURN_COMMAND_FAILURE_2(316023, "飞行器无法执行返航指令,飞行器已被 B 控接管,请在 B 控操控飞行器,或关闭 B 控后重试"), + RETURN_COMMAND_FAILURE_3(316024, "飞行器执行返航指令失败,请检查飞行器是否已起飞,确认飞行器已起飞后请重试"), + AIRCRAFT_PARAM_CONFIG_FAILURE_5(316025, "飞行器参数配置失败,请稍后重试或重启机场后重试"), + EMERGENCY_BUTTON_PRESSED_1(316026, "机场急停按钮被按下,无法执行飞行任务,请释放急停按钮后重试"), + PARAM_CONFIG_TIMEOUT(316027, "飞行器参数配置超时,请稍后重试或重启机场后重试"), + EMERGENCY_LANDING(316029, "机场急停按钮被按下,飞行器将飞往备降点降落,请立即检查飞行器是否已安全降落并将飞行器放回至机场"), + BATTERY_DATA_TIMEOUT(316032, "获取电池数据超时,请稍后重试或重启飞行器后重试"), + HIGH_BATTERY_CYCLE(316033, "飞行器电池循环次数过高,为保证飞行安全,已自动终止任务,建议更换该电池"), + FIRMWARE_MISMATCH(316034, "无法起飞,飞行器固件版本与机场固件版本不匹配,为保证飞行安全请升级固件后再试"), + APPROACH_DEPARTURE_ROUTE_FAILURE_2(316035, "进离场航线下发失败,请确保设备固件为最新版本后重新下发任务,如果持续报错,请联系大疆售后"), + LOW_BATTERY_LANDING(316050, "飞行器因电量过低在舱外降落,请立即检查飞行器是否已安全降落并将飞行器放回至机场"), + ABNORMAL_LANDING_1(316051, "飞行任务异常,飞行器在舱外降落,请立即检查飞行器是否已安全降落并将飞行器放回至机场"), + ABNORMAL_LANDING_2(316052, "飞行任务异常,飞行器将飞往备降点降落,请立即检查飞行器是否已安全降落并将飞行器放回至机场"), + MANUAL_LANDING(316053, "用户已操控飞行器降落,请立即检查飞行器是否已安全降落并将飞行器放回至机场"), + + // 相机相关 (3161xx) + CAMERA_SUMMARY_FAILURE(316100, "获取相机概要信息失败,请重试"), + SINGLE_SHOT_MODE_FAILURE(316101, "设置相机为单拍模式失败,请重试"), + WATERMARK_CLOSE_FAILURE(316102, "关闭相机水印失败,请重试"), + METERING_MODE_FAILURE(316103, "设置测光模式到平均测光失败,请重试"), + LENS_SWITCH_FAILURE(316104, "切换镜头到广角镜头失败,请重试"), + PHOTO_STORAGE_FAILURE(316105, "设置相机存储照片失败,请重试"), + IR_ZOOM_FAILURE(316106, "红外变焦倍数设置失败,请重试"), + PHOTO_SIZE_FAILURE(316107, "照片尺寸设置4k失败,请重试"), + PHOTO_FORMAT_FAILURE(316108, "设置照片存储格式为jpeg格式失败,请重试"), + DISTORTION_CORRECTION_FAILURE(316109, "关闭相机畸变矫正失败,请重试"), + MECHANICAL_SHUTTER_FAILURE(316110, "打开相机机械快门失败,请重试"), + FOCUS_MODE_FAILURE(316111, "设置对焦模式失败,请重试"), + + // 媒体文件相关 (317xxx) + MEDIA_COUNT_FAILURE(317001, "获取飞行器媒体文件数量失败,请重启机场后重试"), + STORAGE_FORMAT_FAILURE_1(317002, "飞行器存储格式化失败,飞行器未开机、未连接或未检测到相机,请确认无以上问题后重试,或重启飞行器后重试"), + STORAGE_FORMAT_FAILURE_2(317003, "飞行器存储格式化失败,请重启飞行器后重试"), + AIRPORT_STORAGE_FORMAT_FAILURE(317004, "机场媒体文件格式化失败,请稍后重试或重启机场后重试"), + STOP_RECORDING_FAILURE_1(317005, "飞行器结束录像失败,本次飞行任务的媒体文件可能无法上传"), + CANNOT_FORMAT(317006, "无法格式化,请等待当前飞行器媒体文件下载完成后再试"), + MEDIA_COUNT_FAILURE_2(317007, "获取媒体文件数量失败,请稍后重试,如本架次任务有媒体文件且持续报错可联系大疆售后"), + + // 系统运行相关 (319xxx) + AIRPORT_BUSY_1(319001, "机场作业中或设备异常反馈上传日志中,无法执行飞行任务,请等待当前飞行任务或操作执行完成后重试"), + AIRPORT_SYSTEM_ERROR_3(319002, "机场系统运行异常,请重启机场后重试"), + AIRPORT_SYSTEM_ERROR_4(319003, "机场系统运行异常,请重新下发任务"), + TASK_TIMEOUT_2(319004, "飞行任务执行超时,已自动终止本次飞行任务"), + CLOUD_COMMUNICATION_FAILURE(319005, "云端与机场通信异常,无法执行飞行任务"), + CANCEL_TASK_FAILURE(319006, "取消飞行任务失败,飞行任务已经在执行中"), + MODIFY_TASK_FAILURE(319007, "修改飞行任务失败,飞行任务已经在执行中"), + TIME_NOT_SYNCED(319008, "机场时间与云端时间不同步,机场无法执行飞行任务"), + FLIGHT_TASK_FAILED_7(319009, "飞行任务下发失败,请稍后重试或重启机场后重试"), + OLD_FIRMWARE(319010, "机场固件版本过低,无法执行飞行任务,请升级机场固件为最新版本后重试"), + AIRPORT_INITIALIZING(319015, "机场正在初始化中,无法执行飞行任务,请等待机场初始化完成后重试"), + ANOTHER_TASK_RUNNING(319016, "机场正在执行其他飞行任务,无法执行本次飞行任务"), + PROCESSING_MEDIA(319017, "机场正在处理上次飞行任务媒体文件,无法执行本次飞行任务,请稍后重试"), + EXPORTING_LOGS(319018, "机场正在自动导出日志中(设备异常反馈),无法执行飞行任务,请稍后重试"), + PULLING_LOGS(319019, "机场正在拉取日志中(设备异常反馈),无法执行飞行任务,请稍后重试"), + ROUTE_INTERRUPT_FAILURE(319020, "航线中断失败,请稍后重试"), + EXIT_REMOTE_CONTROL_FAILURE(319021, "退出远程控制失败,请稍后重试"), + POINT_FLIGHT_FAILURE_1(319022, "指点飞行失败,请稍后重试"), + POINT_FLIGHT_STOP_FAILURE(319023, "指点飞行停止失败,请稍后重试"), + ONE_KEY_TAKEOFF_FAILURE(319024, "一键起飞失败,请稍后重试"), + AIRPORT_NOT_READY(319025, "机场未准备完成,无法执行云端下发的飞行任务,请稍后重试"), + LOW_BATTERY_2(319026, "飞行器电池电量低于用户设置的任务开始执行的电量,请等待充电完成后再执行飞行任务"), + LOW_STORAGE(319027, "机场或飞行器剩余存储容量过低,无法执行飞行任务,请等待媒体文件上传,机场和飞行器存储容量释放后再执行飞行任务"), + UPDATING_FLIGHT_ZONE(319028, "正在更新自定义飞行区"), + UPDATING_OFFLINE_MAP(319029, "正在更新离线地图"), + NO_CONTROL_AUTHORITY(319030, "操作失败,无飞行器控制权"), + CONTROL_AUTHORITY_ERROR(319031, "控制权异常,请刷新重试"), + POINT_FLIGHT_FAILURE_2(319032, "指点飞行失败,请稍后重试"), + VIRTUAL_JOYSTICK_FAILURE_1(319033, "虚拟摇杆操作失败,请稍后重试"), + VIRTUAL_JOYSTICK_FAILURE_2(319034, "虚拟摇杆操作失败,请稍后重试"), + EMERGENCY_STOP_FAILURE(319035, "急停失败,请稍后重试"), + REMOTE_DEBUGGING(319036, "设备远程调试中,请稍后重试"), + LOCAL_DEBUGGING(319037, "设备本地调试中,请稍后重试"), + DEVICE_UPDATING(319038, "设备正在升级,请稍后重试"), + ROUTE_RESUME_FAILURE(319042, "航线恢复失败,请稍后重试"), + CANCEL_RETURN_FAILURE(319043, "取消返航失败,请稍后重试"), + ROUTE_ENDED(319044, "航线任务已结束,无法恢复"), + EMERGENCY_STOP_SUCCESS(319045, "急停成功,请重新按键操作"), + CANNOT_PAUSE_ROUTE(319046, "无法暂停航线,飞行器尚未进入航线或已退出航线"), + AIRPORT_SYSTEM_ERROR_5(319999, "机场系统运行异常,请重启机场后重试"), + + // 航线执行相关 (321xxx-322xxx) + ROUTE_EXECUTION_ERROR(321000, "航线执行异常,请稍后重试或重启机场后重试"), + ROUTE_PARSE_FAILURE_3(321004, "航线文件解析失败,无法执行飞行任务,请检查航线文件"), + MISSING_BREAKPOINT(321005, "航线缺少断点信息,机场无法执行飞行任务"), + TASK_ALREADY_RUNNING(321257, "飞行任务已在执行中,请勿重复执行"), + CANNOT_TERMINATE_TASK(321258, "飞行任务无法终止,请检查飞行器状态"), + TASK_NOT_STARTED_1(321259, "飞行任务未开始执行,无法终止飞行任务"), + TASK_NOT_STARTED_2(321260, "飞行任务未开始执行,无法中断飞行任务"), + EXCEED_HEIGHT_LIMIT(321513, "航线规划高度已超过飞行器限高,机场无法执行飞行任务"), + EXCEED_DISTANCE_LIMIT(321514, "任务失败,起点或终点位于限远区域的缓冲区内或超过了限远距离"), + FLY_ZONE_VIOLATION(321515, "航线穿过限飞区,机场无法执行飞行任务"), + TOO_LOW_ALTITUDE(321516, "飞行器飞行高度过低,飞行任务执行被终止"), + OBSTACLE_AVOIDANCE(321517, "飞行器触发避障,飞行任务执行被终止。为保证飞行安全,请勿用当前航线执行断点续飞任务"), + NEAR_FLY_ZONE(321519, "飞行器接近限飞区或限远距离自动返航,无法完成航线飞行"), + TAKEOFF_FAILURE_1(321523, "飞行器起飞失败,请稍后重试,如果仍报错请联系大疆售后"), + PREFLIGHT_FAILURE_5(321524, "飞行器起飞前准备失败,可能是飞行器无法定位或档位错误导致,请检查飞行器状态"), + CUSTOM_FLY_ZONE_BOUNDARY(321528, "触碰自定义飞行区边界,航线任务已暂停"), + TARGET_IN_NO_FLY_ZONE(321529, "目标点位于禁飞区域或者障碍物内,无法到达,航线任务已暂停,请重新规划后再试"), + TRAJECTORY_PLANNING_FAILURE(321530, "飞行器飞行航线过程中轨迹规划失败,航线任务已暂停"), + APPROACH_DEPARTURE_FAILURE_1(321531, "进离场航线执行失败,请联系大疆售后"), + APPROACH_DEPARTURE_FAILURE_2(321532, "进离场航线执行失败,请联系大疆售后"), + APPROACH_DEPARTURE_FAILURE_3(321533, "进离场航线执行失败,请联系大疆售后"), + POOR_GPS_SIGNAL(321769, "飞行器卫星定位信号差,无法执行飞行任务,请重启机场后重试"), + WRONG_GEAR(321770, "飞行器挡位错误,无法执行飞行任务,请重启机场后重试"), + NO_RETURN_POINT(321771, "飞行器返航点未设置,无法执行飞行任务,请重启机场后重试"), + LOW_BATTERY_3(321772, "飞行器电量低于30%,无法执行飞行任务,请充电后重试(建议电量≥50%)"), + LOW_BATTERY_RETURN(321773, "飞行器执行飞行任务过程中低电量返航,无法完成航线飞行"), + DISCONNECTED_IN_FLIGHT(321775, "飞行器航线飞行过程中失联,无法完成航线飞行"), + RTK_CONVERGENCE_FAILURE_3(321776, "飞行器 RTK 收敛失败,无法执行飞行任务,请重启机场后重试"), + NOT_HOVERING(321777, "飞行器未悬停,无法开始执行飞行任务"), + B_CONTROL_INTERFERENCE(321778, "用户使用 B 控操控飞行器起桨,机场无法执行飞行任务"), + STRONG_WIND_RETURN(321784, "任务过程中遇到大风紧急返航"), + MANUAL_INTERRUPTION(322281, "任务失败,机场执行飞行任务过程被手动打断或异常终止"), + CONTROL_TAKEOVER(322282, "机场执行飞行任务过程中被中断,飞行器被云端用户或遥控器接管"), + USER_TRIGGERED_RETURN(322283, "机场执行飞行任务过程中被用户触发返航,无法完成航线飞行"), + INVALID_BREAKPOINT(322539, "航线的断点信息错误,机场无法执行飞行任务"), + TRAJECTORY_GENERATION_FAILURE(322563, "航线轨迹生成失败,请检查飞行器视觉镜头是否存在脏污或重启飞行器后再试,如果仍报错请联系大疆售后"), + + // 日志相关 (324xxx) + LOG_COMPRESS_TIMEOUT(324012, "日志压缩过程超时,所选日志过多,请减少选择的日志后重试"), + LOG_LIST_FAILURE(324013, "设备日志列表获取失败,请稍后重试"), + EMPTY_LOG_LIST(324014, "设备日志列表为空,请刷新页面或重启机场后重试"), + AIRCRAFT_OFFLINE(324015, "飞行器已关机或未连接,无法获取日志列表,请确认飞行器在舱内,通过远程调试将飞行器开机后重试"), + LOW_STORAGE_SPACE(324016, "机场存储空间不足,日志压缩失败,请清理机场存储空间或稍后重试"), + LOG_COMPRESS_FAILURE(324017, "日志压缩失败,无法获取所选飞行器日志,请刷新页面或重启机场后重试"), + LOG_FETCH_FAILURE(324018, "日志文件拉取失败,导致本次设备异常反馈上传失败,请稍后重试或重启机场后重试"), + LOG_UPLOAD_FAILURE(324019, "因机场网络异常,日志上传失败,请稍后重试。如果连续多次出现该问题,请联系代理商或大疆售后进行网络排障"), + LOG_EXPORT_INTERRUPTED(324021, "因机场断电或重启导致日志导出中断,日志导出失败,请稍后重试"), + MEDIA_UPLOAD_ISSUE(324030, "因机场网络异常、飞行器图传链路异常等原因,媒体文件暂时无法上传或文件已上传但云端读取失败"), + + // 云端命令相关 (325xxx) + INVALID_CLOUD_COMMAND(325001, "云端下发命令不符合格式要求,设备无法执行"), + COMMAND_RESPONSE_FAILURE(325003, "指令响应失败,请重试"), + COMMAND_TIMEOUT(325004, "设备端命令请求已超时,请重试"), + AIRPORT_UNAVAILABLE(325005, "当前机场无法响应任务,请稍后重试"), + AIRPORT_STARTING(325006, "当前机场启动检查中,请稍后重试"), + AIRPORT_BUSY_2(325007, "当前机场执行作业任务中,请稍后重试"), + PROCESSING_RESULTS(325008, "当前机场处理作业任务结果中,请稍后重试"), + REMOTE_LOG_EXPORT(325009, "当前机场执行远程日志导出中,请稍后重试"), + UPDATING_FLIGHT_ZONE_2(325010, "当前机场更新自定义飞行区中,请稍后重试"), + UPDATING_OFFLINE_MAP_2(325011, "当前机场更新离线地图中,请稍后重试"), + AIRCRAFT_DISCONNECTED(325012, "当前飞机未连接,请稍后重试"), + + // DJI蜂窝模块相关 (326xxx) + AIRCRAFT_NO_DONGLE(326002, "飞行器未安装 DJI Cellular 模块"), + AIRCRAFT_DONGLE_NO_SIM(326003, "飞行器 DJI Cellular 模块中未安装 SIM 卡"), + AIRCRAFT_DONGLE_NEED_UPGRADE(326004, "飞行器 DJI Cellular 模块需要强制升级,否则无法使用"), + ENHANCED_TRANSMISSION_FAILURE(326005, "操作失败,增强图传无法建立连接,请检查 4G 信号强度,或咨询运营商查询套餐流量和 APN 设置"), + SDR_SWITCH_FAILURE(326006, "增强图传开关切换失败,请稍后重试"), + WRONG_COMMAND_FORMAT(326007, "命令格式错误"), + DOCK_NO_DONGLE(326008, "机场未安装 DJI Cellular 模块"), + DOCK_DONGLE_NO_SIM(326009, "机场 DJI Cellular 模块中未安装 SIM 卡"), + DOCK_DONGLE_NEED_UPGRADE(326010, "机场 DJI Cellular 模块需要强制升级,否则无法使用"), + ESIM_ACTIVATING(326103, "当前 eSIM 正在激活中,请稍后再试"), + ESIM_SWITCHING(326104, "当前 eSIM 正在切换运营商中,请稍后再试"), + ENHANCED_TRANSMISSION_SWITCHING(326105, "DJI 增强图传模块正在切换模式中,请稍后再试"), + ENHANCED_TRANSMISSION_ERROR(326106, "DJI 增强图传模块异常,请重启设备后再试,如果仍报错请联系大疆售后"), + ACTIVATE_ESIM_OR_INSERT_SIM(326107, "请在设备管理 > 机场 > 设备运维中激活DJI增强图传模块的 eSIM 或插入 SIM 卡后再试"), + + // 相机控制相关 (327xxx) + PARAM_SET_FAILURE_1(327000, "参数设置失败,请稍后重试"), + PARAM_SET_FAILURE_2(327001, "参数设置失败,请稍后重试"), + CONTROL_AUTHORITY_FAILURE_2(327002, "获取控制权失败,请稍后重试"), + CONTROL_AUTHORITY_FAILURE_3(327003, "获取控制权失败,请稍后重试"), + VIEW_DRAG_FAILURE(327004, "画面拖动失败,请重试"), + DOUBLE_CLICK_CENTER_FAILURE(327005, "双击画面归中失败"), + TAKE_PHOTO_FAILURE(327006, "拍照失败"), + START_RECORDING_FAILURE(327007, "开始录像失败"), + STOP_RECORDING_FAILURE_2(327008, "停止录像失败"), + CAMERA_MODE_SWITCH_FAILURE(327009, "切换相机模式失败"), + ZOOM_CAMERA_FAILURE(327010, "ZOOM相机变焦失败"), + IR_CAMERA_ZOOM_FAILURE(327011, "IR相机变焦失败"), + CONTROL_AUTHORITY_FAILURE_4(327012, "获取控制权失败,请稍后重试"), + PARAM_SET_FAILURE_3(327013, "参数设置失败,请稍后重试"), + GIMBAL_LIMIT(327014, "云台已达限位"), + LIVE_STREAM_FAILURE(327015, "直播启动失败,建议刷新直播或重新打开设备小窗"), + LOST_CONNECTION_ACTION_FAILURE(327016, "失联动作设置失败,请重试"), + POINT_FLIGHT_HEIGHT_FAILURE(327017, "指点飞行高度设置失败,请重试"), + POINT_FLIGHT_MODE_FAILURE(327018, "指点飞行模式切换失败,请重试"), + CANNOT_LOOK_AT_MARKER(327019, "当前状态无法看向标注点"), + PANORAMA_STOP_TIMEOUT(327020, "全景拍照停止命令超时"), + + // 音频相关 (32705x-32707x) + AUDIO_NOT_SUPPORTED(327050, "当前设备状态不支持播放音频"), + AUDIO_DOWNLOAD_FAILURE(327051, "下载音频文件失败"), + SPEAKER_MODE_FAILURE(327052, "喊话器处理模式切换失败"), + AUDIO_UPLOAD_FAILURE_1(327053, "上传音频文件失败"), + AUDIO_PLAY_FAILURE(327054, "播放音频失败"), + WORK_MODE_SET_FAILURE(327055, "设置工作模式失败"), + TEXT_UPLOAD_FAILURE(327056, "上传文本失败"), + STOP_PLAYBACK_FAILURE(327057, "停止播放失败"), + PLAYBACK_MODE_FAILURE(327058, "设置播放模式失败"), + VOLUME_SET_FAILURE(327059, "设置音量失败"), + CONTROL_VALUE_FAILURE(327060, "设置控件值失败"), + TEXT_SEND_FAILURE(327061, "发送文本值失败"), + LANGUAGE_SWITCH_FAILURE(327062, "切换系统语言失败"), + FUNCTION_LIST_FAILURE(327063, "获取设备功能列表失败"), + // 文件操作相关 (327064-327075) + GET_CONFIG_FILE_FAILED(327064, "获取设备配置文件失败"), + GET_IMAGE_FILE_FAILED(327065, "获取设备图片文件失败"), + FILE_COMPRESSION_FAILED(327066, "设备文件压缩失败"), + FILE_UPLOAD_FAILED(327067, "设备文件上传失败"), + AUDIO_UPLOAD_MD5_FAILED(327068, "上传音频文件失败,md5校验失败"), + AUDIO_UPLOAD_FAILED(327069, "上传音频文件失败"), + AUDIO_UPLOAD_ABORTED(327070, "上传音频文件失败,异常终止"), + TTS_UPLOAD_MD5_FAILED(327071, "上传TTS文本失败,md5校验失败"), + TTS_UPLOAD_FAILED(327072, "上传TTS文本失败"), + TTS_UPLOAD_ABORTED(327073, "上传TTS文本失败,异常终止"), + SPEAKER_REPLAY_FAILED(327074, "喊话器重播失败"), + SPEAKER_ENCODING_FAILED(327075, "喊话器编码失败"), + + // 全景拍照相关 (327201-327221) + PANORAMA_FAILED(327201, "全景拍照失败"), + PANORAMA_TERMINATED(327202, "全景拍摄终止"), + PANORAMA_NOT_SUPPORTED(327203, "当前设备不支持全景拍照"), + PANORAMA_SYSTEM_BUSY(327204, "系统繁忙,无法全景拍照"), + PANORAMA_REQUEST_FAILED(327205, "请求失败,无法全景拍照"), + PANORAMA_NOT_TAKEOFF(327206, "飞机未起飞,无法开始全景拍摄"), + PANORAMA_CONTROL_FAILED(327207, "控制权获取失败,全景拍摄终止"), + PANORAMA_CAMERA_ERROR(327208, "未知相机错误,无法开始全景拍摄"), + PANORAMA_CAMERA_TIMEOUT(327209, "相机超时,全景拍摄终止"), + PANORAMA_UNABLE(327210, "无法全景拍照"), + PANORAMA_STORAGE_FULL(327211, "存储空间不足,全景拍摄终止"), + PANORAMA_AIRCRAFT_MOVING(327212, "飞机运动中,无法开始全景拍摄"), + PANORAMA_GIMBAL_MOVING(327213, "云台运动中,无法开始全景拍摄"), + PANORAMA_JOYSTICK_OPERATED(327214, "用户操作摇杆,全景拍摄终止"), + PANORAMA_NOFLY_ZONE(327215, "碰到限飞区,全景拍摄终止"), + PANORAMA_DISTANCE_LIMIT(327216, "触发距离限制,全景拍摄终止"), + PANORAMA_GIMBAL_OBSTRUCTED(327217, "云台受阻,全景拍摄终止"), + PANORAMA_SHOOT_FAILED(327218, "拍照失败,全景拍摄终止"), + PANORAMA_STITCH_FAILED(327219, "全景图片拼接失败"), + PANORAMA_CALIBRATION_FAILED(327220, "加载标定参数失败,全景拍摄终止"), + PANORAMA_CAMERA_SETTING_FAILED(327221, "调整相机参数失败,全景拍摄终止"), + + // 设备维护相关 (327500) + DEFOGGING_FAILED(327500, "飞行器镜头除雾失败,请稍后重试"), + + // 实名登记相关 (328051-328052) + AIRCRAFT_NOT_REGISTERED(328051, "飞机未完成实名登记,请连接遥控器,按照指引完成、实名登记后飞行"), + AIRCRAFT_REGISTRATION_CANCELLED(328052, "飞机实名登记状态已注销,请连接遥控器,按照指引完成实名登记后飞行"), + + // 指点飞行相关 (336000-336019) + POINT_FLIGHT_COMMAND_FAILED(336000, "指点飞行命令发送失败,请重试"), + AIRCRAFT_DATA_ABNORMAL(336001, "飞行器数据异常,无法响应指令"), + POOR_GPS_SIGNAL_1(336002, "飞行器GPS信号差"), + POSITIONING_FAILED(336003, "飞行器定位失效,无法响应指令"), + POINT_FLIGHT_PLAN_FAILED(336004, "指点飞行自主规划失败"), + RETURN_POINT_NOT_UPDATED(336005, "飞行器返航点未更新"), + POINT_FLIGHT_DISCONNECTED(336006, "飞行器已失联,已退出指点飞行"), + INSUFFICIENT_BATTERY_FOR_TASK(336017, "飞行器电量不足以完成当前任务"), + PLANNING_MODE_CHANGED(336018, "已切换飞行器规划模式"), + ALTITUDE_ADJUSTED(336019, "指点飞行因限高自动调整飞行高度"), + + // 飞行限制相关 (336513-336517) + TARGET_IN_NOFLY_ZONE(336513, "目标点在禁飞区内"), + TARGET_EXCEED_DISTANCE_LIMIT(336514, "目标点超出飞行器限远"), + TARGET_IN_RESTRICTED_ZONE(336515, "目标点在禁飞区内"), + TARGET_EXCEED_HEIGHT_LIMIT(336516, "目标点超出飞行器限高"), + TARGET_BELOW_MIN_HEIGHT(336517, "目标点超出飞行器限低"), + + // 飞行控制相关 (337025-337030) + TAKEOFF_FAILED(337025, "飞行器无法起飞"), + INVALID_TARGET_POINT(337026, "目标点异常,请重试"), + INVALID_SPEED_SETTING(337027, "飞行器速度设置异常,请重试"), + AIRCRAFT_VERSION_MISMATCH(337028, "飞行器版本异常,请检查飞行器版本"), + AIRCRAFT_UNRESPONSIVE(337029, "飞行器无法响应当前任务,请稍后重试"), + LOW_DEPARTURE_ALTITUDE(337030, "指令飞行安全离场高过低"), + + // 飞行边界相关 (337537-337546) + ENTERED_NOFLY_ZONE(337537, "已触碰禁飞区"), + REACHED_DISTANCE_LIMIT(337538, "已触碰飞行器限远"), + ENTERED_RESTRICTED_ZONE(337539, "已触碰禁飞区"), + REACHED_HEIGHT_LIMIT(337540, "已触碰飞行器限高或限高区"), + BELOW_MIN_HEIGHT(337541, "已触碰飞行器限低"), + TAKEOFF_FAILURE(337542, "飞行器起飞失败,请重试"), + TARGET_MAY_IN_OBSTACLE(337543, "目标点可能在障碍物内,请检查周边环境"), + OBSTACLE_DETECTED(337544, "检测到障碍物,请检查周边环境"), + PLANNING_ERROR(337545, "飞行器规划异常,请重试"), + CUSTOM_FLIGHT_ZONE_BOUNDARY(337546, "已触碰自定义飞行区边界"), + + // 机场间飞行相关 (338001-338021) + AIRCRAFT_COMMUNICATION_FAILURE_1(338001, "飞行器通信异常,无法执行飞行任务,请重启飞行器与机场后重试"), + AIRCRAFT_COMMUNICATION_FAILURE_2(338002, "飞行器通信异常,无法执行飞行任务,请重启飞行器与机场后重试"), + AIRCRAFT_COMMUNICATION_FAILURE_3(338003, "飞行器通信异常,无法执行飞行任务,请重启飞行器与机场后重试"), + AIRCRAFT_COMMUNICATION_FAILURE_4(338004, "飞行器通信异常,无法执行飞行任务,请重启飞行器与机场后重试"), + EXCEED_AIRPORT_DISTANCE(338005, "起飞机场与降落机场部署距离超出限制,无法执行飞行任务,请选择两个部署距离不超过 15km 的机场执行任务"), + INVALID_LANDING_AIRPORT(338006, "无法执行飞行任务,请检查降落机场是否已申请解禁证书、是否位于自定义禁飞区或是否位于自定义飞行区外"), + LANDING_AIRPORT_HEIGHT_LIMIT(338007, "目标降落机场部署突破限高区限高,无法执行任务,请申请解禁证书后再试"), + LANDING_AIRPORT_CONFIG_LIMIT(338008, "目标降落机场部署突破飞行器设置的限高,无法执行任务,请调整限高后重试"), + POOR_GPS_SIGNAL_2(338009, "飞行器 GPS 定位信号差,无法执行任务,请重启飞行器后重试"), + POSITIONING_FAILED_2(338010, "飞行器定位失效,无法执行任务,请重启飞行器后重试"), + OUTSIDE_GEO_FENCE(338011, "任务失败,目标机场处于地理鸟笼作业区域外,请重新规划任务后再试"), + AIRCRAFT_DATA_UPDATE_FAILED_1(338017, "飞行器数据更新失败,无法执行任务,请重启飞行器后重试"), + AIRCRAFT_DATA_UPDATE_FAILED_2(338018, "飞行器数据更新失败,无法执行任务,请重启飞行器后重试"), + RETURN_ROUTE_PLANNING(338019, "飞行器到目标机场的返航路线正在规划中,无法执行任务,请重启飞行器后重试"), + NO_VALID_LANDING_PATH(338020, "飞行器无法根据规划的路径到达目标降落机场,无法执行任务,请重新选择降落机场后再试"), + INSUFFICIENT_BATTERY_FOR_LANDING(338021, "飞行器当前电量不足以到达目标降落机场,无法执行任务,请给飞行器充电后重试"), + + // 指点飞行退出原因 (338049-338054) + JOYSTICK_OPERATED(338049, "响应遥控器杆量,已退出指点飞行"), + COMMAND_TERMINATED(338050, "响应终止指令,已退出指点飞行"), + LOW_BATTERY_RETURN_1(338051, "飞行器低电量返航,已退出指点飞行"), + LOW_BATTERY_LANDING_2(338052, "飞行器低电量降落,已退出指点飞行"), + MANNED_AIRCRAFT_NEARBY(338053, "附近有载人机,已退出指点飞行"), + HIGHER_PRIORITY_TASK(338054, "响应其他高优先级任务,已退出指点飞行"), + + // 通信异常 (338255) + AIRCRAFT_COMMUNICATION_FAILURE_5(338255, "飞行器通信异常,无法执行飞行任务,请重启飞行器与机场后重试"), + + // 航线执行异常 (386535) + ROUTE_EXECUTION_ABNORMAL(386535, "航线执行异常,请稍后重试或重启机场后重试"), + + // 直播相关 (513002-513099) + LIVE_STREAM_CAMERA_ERROR(513002, "直播失败,相机不存在或相机类型错误"), + LIVE_STREAM_ALREADY_STARTED(513003, "相机已经在直播中,请勿重复开启直播"), + LIVE_STREAM_PARAM_ERROR(513005, "直播失败,直播参数(清晰度)设置错误"), + LIVE_STREAM_START_FAILED(513006, "直播启动失败,请刷新重试"), + LIVE_STREAM_DATA_ERROR(513008, "直播失败,设备端图传数据异常"), + LIVE_STREAM_NETWORK_ERROR(513010, "直播失败,设备无法联网"), + LIVE_STREAM_NOT_STARTED(513011, "操作失败,设备未开启直播"), + LIVE_STREAM_CAMERA_SWITCH(513012, "操作失败,设备已在直播中,不支持切换镜头"), + LIVE_STREAM_PROTOCOL_ERROR(513013, "直播失败,直播使用的视频传输协议不支持"), + LIVE_STREAM_PARAM_INVALID(513014, "直播失败,直播参数错误或者不完整"), + LIVE_STREAM_LAG(513015, "直播异常,网络卡顿, 请刷新后重试"), + LIVE_STREAM_DECODE_FAILED(513016, "直播异常,视频解码失败"), + LIVE_STREAM_PAUSED(513017, "直播已暂停,请等待当前飞行器媒体文件下载完成后再试"), + LIVE_STREAM_GENERAL_ERROR(513099, "直播失败,请稍后重试"), + + // 机场操作相关 (514100-514185) + AIRPORT_OPERATION_ERROR(514100, "机场运行异常,请重启机场后重试"), + PUSH_ROD_CLOSE_FAILED(514101, "推杆闭合失败,请检查停机坪上是否存在异物,飞行器方向是否放反,或重启机场后重试"), + PUSH_ROD_OPEN_FAILED(514102, "推杆展开失败,请检查停机坪上是否存在异物,或重启机场后重试"), + LOW_BATTERY_3_1(514103, "飞行器电量低于30%,无法执行飞行任务,请充电后重试(建议电量≥50%)"), + CHARGE_START_FAILED(514104, "飞行器电池开始充电失败,请重启机场后重试"), + CHARGE_STOP_FAILED(514105, "飞行器电池停止充电失败,请重启机场后重试"), + POWER_CONTROL_ERROR(514106, "飞行器电源控制异常,请重启机场后重试"), + COVER_OPEN_FAILED(514107, "舱盖开启失败,请检查舱盖周围是否存在异物,或重启机场后重试"), + COVER_CLOSE_FAILED(514108, "舱盖关闭失败,请检查舱盖周围是否存在异物,或重启机场后重试"), + AIRCRAFT_POWER_ON_FAILED(514109, "飞行器开机失败,请检查飞行器是否在舱和飞机电量是否正常,或重启机场后重试"), + AIRCRAFT_POWER_OFF_FAILED(514110, "飞行器关机失败,请重启机场后重试"), + SLOW_SPIN_PROPELLER_ERROR_1(514111, "飞行器慢转收桨控制异常,请重启机场后重试"), + SLOW_SPIN_PROPELLER_ERROR_2(514112, "飞行器慢转收桨控制异常,请重启机场后重试"), + AIRCRAFT_CONNECTION_FAILED(514113, "机场推杆与飞行器无法连接,请检查飞行器是否在舱内,推杆闭合时是否被卡住,充电连接器是否脏污或损坏"), + POWER_STATUS_FAILED(514114, "获取飞行器电源状态失败,请重启机场后重试"), + AIRPORT_BUSY(514116, "无法执行当前操作,机场正在执行其他控制指令,请稍后重试"), + COVER_NOT_IN_POSITION(514117, "舱盖开启或关闭未到位,请重启机场后重试"), + PUSH_ROD_NOT_IN_POSITION(514118, "推杆展开或闭合未到位,请重启机场后重试"), + AIRCRAFT_DISCONNECTED_1(514120, "机场与飞行器断连,请重启机场后重试或重新对频"), + EMERGENCY_BUTTON_PRESSED(514121, "机场急停按钮被按下,请释放急停按钮"), + CHARGE_STATUS_FAILED(514122, "获取飞行器充电状态失败,请重启机场后重试"), + BATTERY_TOO_LOW(514123, "飞行器电池电量过低无法开机"), + BATTERY_INFO_FAILED(514124, "获取飞行器电池信息失败,无法执行飞行任务,请重启机场后重试"), + BATTERY_FULL(514125, "飞行器电池电量已接近满电状态,无法开始充电,请使用至95%以下再进行充电"), + HEAVY_RAIN(514134, "雨量过大,机场无法执行飞行任务,请稍后重试"), + STRONG_WIND(514135, "风速过大,机场无法执行飞行任务,请稍后重试"), + POWER_SUPPLY_DISCONNECTED(514136, "机场供电断开,机场无法执行飞行任务,请恢复机场供电后重试"), + LOW_TEMPERATURE(514137, "环境温度过低于-20℃ (-4°F),机场无法执行飞行任务,请稍后重试"), + BATTERY_MAINTENANCE(514138, "飞行器电池正在保养中,机场无法执行飞行任务,请等待保养结束后重试"), + BATTERY_MAINTENANCE_NOT_NEEDED_1(514139, "飞行器电池无法执行保养指令,飞行器电池无需保养"), + BATTERY_MAINTENANCE_NOT_NEEDED_2(514140, "飞行器电池无法执行保养指令,飞行器电池无需保养"), + AIRPORT_SYSTEM_ERROR(514141, "机场系统运行异常,请重启机场后重试"), + PREFLIGHT_CONNECTION_FAILED(514142, "飞行器起飞前,机场推杆与飞行器无法连接,请检查飞行器是否在舱内,推杆闭合时是否被卡住,充电连接器是否脏污或损坏"), + PUSH_ROD_NOT_CLOSED(514143, "推杆未闭合或闭合不到位,请稍后重试或重启机场后重试"), + COVER_NOT_CLOSED(514144, "舱盖未关闭或关闭不到位,请稍后重试或重启机场后重试"), + LOCAL_DEBUG_MODE(514145, "机场处于现场调试中,无法执行当前操作或执行飞行任务,请断开遥控器和机场的数据线连接后重试"), + REMOTE_DEBUG_MODE(514146, "机场处于远程调试中,无法执行飞行任务,请退出远程调试后重试"), + DEVICE_UPGRADING_2(514147, "设备升级中,无法进行远程调试或执行飞行任务,请等待升级完成后重试"), + AIRPORT_BUSY_WORKING(514148, "机场已经在作业中,无法进行远程调试或再次执行飞行任务,请等待当前任务执行完成后重试"), + AIRPORT_SYSTEM_ERROR_3_1(514149, "机场系统运行异常,无法执行飞行任务,请重启机场后重试"), + DEVICE_REBOOTING(514150, "设备重启中,无法执行飞行任务,请等待重启完成后重试"), + CANNOT_REBOOT_DURING_UPGRADE(514151, "设备升级中,无法执行设备重启指令,请等待升级完成后重试"), + REMOTE_DEBUG_EXITED(514153, "机场已退出远程调试模式,无法执行当前操作"), + TEMPERATURE_READ_FAILED(514154, "获取内循环出风口温度失败,请稍后再试"), + AIRCRAFT_NOT_IN_DOCK(514156, "飞机不在舱内,请立即检查飞行器是否已安全降落并将飞行器放回至机场"), + WIRELESS_CHARGE_BUSY(514157, "执行开机失败,无线充电线圈业务繁忙,请重启机场后再试"), + RTK_SERVICE_ERROR(514158, "无法起飞,机场 RTK 业务异常,请重启机场后再试"), + LANDING_AIRPORT_OCCUPIED(514159, "任务失败,降落机场检测到飞行器,请确保降落机场没有飞行器后再试"), + AIRCRAFT_CONNECTION_FAILED_2(514162, "飞行器和机场连接失败,请关闭机场舱盖或重启机场后再试"), + BATTERY_MALFUNCTION(514163, "电池功能异常,请确保飞行器电池插入到位或重启飞行器后再试"), + DEVICE_REBOOT_FAILED_1(514164, "设备重启失败,请稍后重试,如果仍报错请联系大疆售后"), + DEVICE_REBOOT_FAILED_2(514165, "设备重启失败,请稍后重试,如果仍报错请联系大疆售后"), + AIRPORT_INITIALIZING_1(514170, "机场系统初始化中,无法执行当前操作或指令,请等待机场系统初始化完成后重试"), + INVALID_CLOUD_COMMAND_1(514171, "云端下发给机场的命令不符合格式要求,机场无法执行"), + AIRCRAFT_POWER_OFF_FAILED_2(514172, "飞行器无法关机,蓝牙连接状态为未连接,请尝试重启飞行器和机场,或去现场重新对频飞行器与机场后再试"), + WEATHER_CONDITION(514173, "由于天气原因(环境温度低于5度并且降雨大于等于中雨),可能导致桨叶结冰影响作业安全,暂无法执行任务"), + CHARGE_FAILED_COVER(514174, "飞行器充电失败,机场舱盖开启或关闭未到位,请关闭舱盖后再试"), + + // 空调控制相关 (514180-514185) + AC_STOP_FAILED(514180, "停止空调制冷或停止空调制热失败,请稍后重试"), + AC_COOLING_FAILED(514181, "开启空调制冷失败,请稍后重试"), + AC_HEATING_FAILED(514182, "开启空调制热失败,请稍后重试"), + AC_DEHUMIDIFY_FAILED(514183, "开启空调除湿失败,请稍后重试"), + TOO_COLD_FOR_COOLING(514184, "当前温度低于 0 ℃(32°F),无法开启空调制冷"), + TOO_HOT_FOR_HEATING(514185, "当前温度高于 45 ℃(115°F),无法开启空调制热"), + + // 网络相关 (514300-514304) + GATEWAY_ERROR(514300, "网关异常"), + REQUEST_TIMEOUT(514301, "请求超时,连接断开"), + CERTIFICATE_ERROR(514302, "网络证书异常,连接失败"), + NETWORK_ERROR(514303, "网络异常,连接断开"), + REQUEST_REJECTED(514304, "请求被拒,连接失败"), + + UNKNOWN(-1, "UNKNOWN"), + + ; + + + private final String msg; + + private final int code; + + ErrorCodeEnum(int code, String msg) { + this.code = code; + this.msg = msg; + } + + @Override + public String getMessage() { + return this.msg; + } + + @Override + public Integer getCode() { + return this.code; + } + + /** + * @param code error code + * @return enumeration object + */ + public static ErrorCodeEnum find(int code) { + return Arrays.stream(values()).filter(codeEnum -> codeEnum.code == code).findAny().orElse(UNKNOWN); + } + +} diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/model/dto/WaylineJobDTO.java b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/model/dto/WaylineJobDTO.java index 62e97e5..a702779 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/model/dto/WaylineJobDTO.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/model/dto/WaylineJobDTO.java @@ -58,6 +58,8 @@ public class WaylineJobDTO { private Integer code; + private String codeName; + private Integer rthAltitude; private OutOfControlActionEnum outOfControlAction; diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/impl/WaylineJobServiceImpl.java b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/impl/WaylineJobServiceImpl.java index e8cf671..f963e49 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/impl/WaylineJobServiceImpl.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/impl/WaylineJobServiceImpl.java @@ -7,6 +7,8 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import org.dromara.common.redis.config.RedisConst; import org.dromara.common.redis.utils.RedisOpsUtils; import org.dromara.common.satoken.utils.LoginHelper; +import org.dromara.common.sdk.cloudapi.debug.DebugErrorCodeEnum; +import org.dromara.common.sdk.cloudapi.debug.ErrorCodeEnum; import org.dromara.common.sdk.cloudapi.device.DockModeCodeEnum; import org.dromara.common.sdk.cloudapi.device.DroneModeCodeEnum; import org.dromara.common.sdk.cloudapi.device.OsdDock; @@ -297,6 +299,7 @@ public class WaylineJobServiceImpl implements IWaylineJobService { .rthAltitude(entity.getRthAltitude()) .outOfControlAction(OutOfControlActionEnum.find(entity.getOutOfControlAction())) .mediaCount(entity.getMediaCount()) + .codeName(ErrorCodeEnum.find(entity.getErrorCode()).getMessage()) .breakPoint(entity.getBreakPoint()); From 17faeacfa63b92280d4e19f9455a58b71c22fb89 Mon Sep 17 00:00:00 2001 From: wuyuan <15505152113@163.com> Date: Sun, 1 Jun 2025 11:37:58 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E9=94=99=E8=AF=AF=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sample/wayline/service/impl/WaylineJobServiceImpl.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/impl/WaylineJobServiceImpl.java b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/impl/WaylineJobServiceImpl.java index f963e49..4c7fd40 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/impl/WaylineJobServiceImpl.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/impl/WaylineJobServiceImpl.java @@ -299,7 +299,7 @@ public class WaylineJobServiceImpl implements IWaylineJobService { .rthAltitude(entity.getRthAltitude()) .outOfControlAction(OutOfControlActionEnum.find(entity.getOutOfControlAction())) .mediaCount(entity.getMediaCount()) - .codeName(ErrorCodeEnum.find(entity.getErrorCode()).getMessage()) + .codeName(ErrorCodeEnum.find(entity.getErrorCode()==null?-1:entity.getErrorCode()).getMessage()) .breakPoint(entity.getBreakPoint()); @@ -340,5 +340,4 @@ public class WaylineJobServiceImpl implements IWaylineJobService { .uploadedCount(uploadedSize).build()); return builder.build(); } - } From 1f3c3256414231e9dbb7e0121207af2a5169de24 Mon Sep 17 00:00:00 2001 From: yq183 <645046984@qq.com> Date: Wed, 4 Jun 2025 10:22:10 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E6=8F=90=E4=BA=A4:=E7=9F=AD=E4=BF=A1?= =?UTF-8?q?=E6=8E=A8=E9=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/RemoteSubmailConfigService.java | 11 +++ .../src/main/resources/common-mybatis.yml | 2 +- .../controller/BusinessAlertController.java | 2 +- .../controller/BusinessLayerController.java | 36 +++++++++ .../business/domain/BusinessLayer.java | 59 +++++++++++++++ .../business/domain/bo/BusinessLayerBo.java | 57 ++++++++++++++ .../business/domain/vo/BusinessLayerVo.java | 56 ++++++++++++++ .../dubbo/RemoteBusinessAlertServiceImpl.java | 8 +- .../business/mapper/BusinessLayerMapper.java | 16 ++++ .../service/IBusinessLayerService.java | 22 ++++++ .../impl/BusinessAlertServiceImpl.java | 16 +++- .../impl/BusinessLayerServiceImpl.java | 47 ++++++++++++ .../mapper/business/BusinessLayerMapper.xml | 11 +++ .../dromara/system/DKSystemApplication.java | 2 + .../controller/system/SysUserController.java | 10 +++ .../org/dromara/system/domain/SysUser.java | 1 + .../dromara/system/domain/bo/SysUserBo.java | 1 + .../dromara/system/domain/vo/SysUserVo.java | 1 + .../dubbo/RemoteSubmailConfigServiceImpl.java | 39 ++++++++-- .../service/ISysSubmailConfigService.java | 4 + .../system/service/ISysUserService.java | 1 + .../impl/SysSubmailConfigServiceImpl.java | 74 ++++++++++++++++++- .../service/impl/SysUserServiceImpl.java | 8 ++ .../resources/mapper/system/SysUserMapper.xml | 2 +- .../src/main/resources/application.properties | 4 +- 25 files changed, 474 insertions(+), 16 deletions(-) create mode 100644 dk-modules/business/src/main/java/org/dromara/business/controller/BusinessLayerController.java create mode 100644 dk-modules/business/src/main/java/org/dromara/business/domain/BusinessLayer.java create mode 100644 dk-modules/business/src/main/java/org/dromara/business/domain/bo/BusinessLayerBo.java create mode 100644 dk-modules/business/src/main/java/org/dromara/business/domain/vo/BusinessLayerVo.java create mode 100644 dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessLayerMapper.java create mode 100644 dk-modules/business/src/main/java/org/dromara/business/service/IBusinessLayerService.java create mode 100644 dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessLayerServiceImpl.java create mode 100644 dk-modules/business/src/main/resources/mapper/business/BusinessLayerMapper.xml diff --git a/dk-api/api-system/src/main/java/org/dromara/system/api/RemoteSubmailConfigService.java b/dk-api/api-system/src/main/java/org/dromara/system/api/RemoteSubmailConfigService.java index 4bc2563..ee3af3a 100644 --- a/dk-api/api-system/src/main/java/org/dromara/system/api/RemoteSubmailConfigService.java +++ b/dk-api/api-system/src/main/java/org/dromara/system/api/RemoteSubmailConfigService.java @@ -3,6 +3,10 @@ package org.dromara.system.api; import org.dromara.common.core.domain.R; import org.dromara.system.api.domain.vo.RemoteClientVo; +import java.util.List; +import java.util.Map; +import java.util.Set; + /** * 客户端服务 * @@ -17,4 +21,11 @@ public interface RemoteSubmailConfigService { */ R remoteCmdSend(String code, String multiParam ); + /** + * @param code 编码 + * @param alertList 预警信息 + * @return 客户端对象 + */ + void remoteSend(String code,List> alertList); + } diff --git a/dk-common/common-mybatis/src/main/resources/common-mybatis.yml b/dk-common/common-mybatis/src/main/resources/common-mybatis.yml index f5dc637..f43eea0 100644 --- a/dk-common/common-mybatis/src/main/resources/common-mybatis.yml +++ b/dk-common/common-mybatis/src/main/resources/common-mybatis.yml @@ -23,7 +23,7 @@ mybatis-plus: dbConfig: # 主键类型 # AUTO 自增 NONE 空 INPUT 用户输入 ASSIGN_ID 雪花 ASSIGN_UUID 唯一 UUID - idType: ASSIGN_ID + idType: AUTO # 逻辑已删除值(框架表均使用此值 禁止随意修改) logicDeleteValue: 2 # 逻辑未删除值 diff --git a/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessAlertController.java b/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessAlertController.java index d997cfd..dcf8487 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessAlertController.java +++ b/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessAlertController.java @@ -157,7 +157,7 @@ public class BusinessAlertController extends BaseController { /** - * 查询全部预警/待办/已完成/忽略 + * 前端视频画框 */ @Operation(summary ="ai实时流预警保存",description = "ai实时流预警保存") @PostMapping("/saveAlertList") diff --git a/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessLayerController.java b/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessLayerController.java new file mode 100644 index 0000000..5d1f691 --- /dev/null +++ b/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessLayerController.java @@ -0,0 +1,36 @@ +package org.dromara.business.controller; + + +import cn.dev33.satoken.annotation.SaCheckPermission; +import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.RequiredArgsConstructor; +import org.dromara.business.domain.bo.BusinessLayerBo; + +import org.dromara.business.domain.vo.BusinessLayerVo; + +import org.dromara.business.service.IBusinessLayerService; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@Validated +@RequiredArgsConstructor +@RestController +@Tag(name = "图层模块") +@RequestMapping("/layer") +public class BusinessLayerController { + + private final IBusinessLayerService businessLayerService; + /** + * 图层模块列表 + */ + @SaCheckPermission("business:task:list") + @GetMapping("/list") + public TableDataInfo list(BusinessLayerBo bo, PageQuery pageQuery) { + return businessLayerService.queryPageList(bo, pageQuery); + } + +} diff --git a/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessLayer.java b/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessLayer.java new file mode 100644 index 0000000..f204838 --- /dev/null +++ b/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessLayer.java @@ -0,0 +1,59 @@ +package org.dromara.business.domain; + + +import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.dromara.common.translation.annotation.Translation; +import org.dromara.common.translation.constant.TransConstant; + +import java.io.Serial; +import java.util.Date; + +@Data +@EqualsAndHashCode +@TableName("business_layer") +public class BusinessLayer { + @Serial + private static final long serialVersionUID = 1L; + + /** + * id + */ + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + + + private String layerName; + + + /*0:禁用 1:启用*/ + private Boolean enable; + + /** + * 时间 + * */ + private Date createTime; + + + private Integer layerType; + + @Translation(type = TransConstant.DICT_TYPE_TO_LABEL, mapper = "layerType", other = "layer_type") + private String layerTypeName; + + //租户id + private String tenantId; + //部门id + private Long deptId; + //部门名称 + private String deptName; + + //备注 + private String remark; + //排序 + private Integer sort; + //父部门id + private Integer parentId; + +} diff --git a/dk-modules/business/src/main/java/org/dromara/business/domain/bo/BusinessLayerBo.java b/dk-modules/business/src/main/java/org/dromara/business/domain/bo/BusinessLayerBo.java new file mode 100644 index 0000000..3c0e822 --- /dev/null +++ b/dk-modules/business/src/main/java/org/dromara/business/domain/bo/BusinessLayerBo.java @@ -0,0 +1,57 @@ +package org.dromara.business.domain.bo; + + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import io.github.linpeilie.annotations.AutoMapper; +import jakarta.validation.constraints.NotNull; +import lombok.Data; +import org.dromara.business.domain.BusinessLayer; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import org.dromara.common.translation.annotation.Translation; +import org.dromara.common.translation.constant.TransConstant; + +import java.io.Serial; +import java.util.Date; + +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = BusinessLayer.class,reverseConvertGenerate = false) +public class BusinessLayerBo { + @Serial + private static final long serialVersionUID = 1L; + + /** + * id + */ + private Long id; + + + @NotNull(message = "图层名称不能为空", groups = { AddGroup.class}) + private String layerName; + + /*0:禁用 1:启用*/ + private Boolean enable; + /** + * 时间 + * */ + private Date createTime; + + @NotNull(message = "图层类型不能为空", groups = { AddGroup.class}) + private Integer layerType; + + private String tenantId; + @NotNull(message = "部门id不能为空", groups = { AddGroup.class}) + private Long deptId; + + @NotNull(message = "部门名称不能为空", groups = { AddGroup.class}) + private String deptName; + + private String remark; + + //排序 + private Integer sort; + //父部门id + private Integer parentId; + +} diff --git a/dk-modules/business/src/main/java/org/dromara/business/domain/vo/BusinessLayerVo.java b/dk-modules/business/src/main/java/org/dromara/business/domain/vo/BusinessLayerVo.java new file mode 100644 index 0000000..59a9016 --- /dev/null +++ b/dk-modules/business/src/main/java/org/dromara/business/domain/vo/BusinessLayerVo.java @@ -0,0 +1,56 @@ +package org.dromara.business.domain.vo; + + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.dromara.business.domain.BusinessLayer; +import org.dromara.business.domain.BusinessTask; +import org.dromara.common.translation.annotation.Translation; +import org.dromara.common.translation.constant.TransConstant; + +import java.io.Serial; +import java.util.Date; + +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = BusinessLayer.class) +public class BusinessLayerVo { + @Serial + private static final long serialVersionUID = 1L; + + /** + * id + */ + private Long id; + + + + private String layerName; + + /*0:禁用 1:启用*/ + private Boolean enable; + /** + * 时间 + * */ + private Date createTime; + private Integer layerType; + @Translation(type = TransConstant.DICT_TYPE_TO_LABEL, mapper = "layerType", other = "layer_type") + private String layerTypeName; + private String tenantId; + private Long deptId; + + private String deptName; + + private String remark; + + //排序 + private Integer sort; + //父部门id + private Integer parentId; + +} diff --git a/dk-modules/business/src/main/java/org/dromara/business/dubbo/RemoteBusinessAlertServiceImpl.java b/dk-modules/business/src/main/java/org/dromara/business/dubbo/RemoteBusinessAlertServiceImpl.java index e139e1e..9a1726d 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/dubbo/RemoteBusinessAlertServiceImpl.java +++ b/dk-modules/business/src/main/java/org/dromara/business/dubbo/RemoteBusinessAlertServiceImpl.java @@ -1,6 +1,7 @@ package org.dromara.business.dubbo; import lombok.RequiredArgsConstructor; +import org.apache.dubbo.config.annotation.DubboReference; import org.apache.dubbo.config.annotation.DubboService; import org.dromara.business.api.RemoteBusinessAlertService; import org.dromara.business.api.domain.bo.RemoteBusinessAlertBo; @@ -9,6 +10,8 @@ import org.dromara.business.domain.vo.BusinessAlertVo; import org.dromara.business.service.IBusinessAlertService; import org.dromara.business.utils.MinioUntil; import org.dromara.business.utils.constants.MinIOConstants; +import org.dromara.system.api.RemoteSubmailConfigService; +import org.dromara.system.api.RemoteUserService; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; @@ -26,7 +29,8 @@ import java.util.stream.Collectors; public class RemoteBusinessAlertServiceImpl implements RemoteBusinessAlertService { private final IBusinessAlertService businessAlertService; - + @DubboReference(timeout = 30000) + private RemoteSubmailConfigService remoteSubmailConfigService; @Override public Boolean saveBusinessAlert(List alertVoList, String activeProfile) { @@ -84,5 +88,7 @@ public class RemoteBusinessAlertServiceImpl implements RemoteBusinessAlertServic }).toList(); businessAlertService.batchUpdateDept(alertVoList); + //短信推送 + remoteSubmailConfigService.remoteSend("smsMultixsend", alertList); } } diff --git a/dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessLayerMapper.java b/dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessLayerMapper.java new file mode 100644 index 0000000..1d0488d --- /dev/null +++ b/dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessLayerMapper.java @@ -0,0 +1,16 @@ +package org.dromara.business.mapper; + + + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.ibatis.annotations.Param; +import org.dromara.business.domain.BusinessLayer; +import org.dromara.business.domain.bo.BusinessLayerBo; +import org.dromara.business.domain.bo.BusinessTaskBo; +import org.dromara.business.domain.vo.BusinessLayerVo; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; +public interface BusinessLayerMapper extends BaseMapperPlus { + + Page queryPageList(@Param("page") Page page, @Param("bo") BusinessLayerBo bo); + +} diff --git a/dk-modules/business/src/main/java/org/dromara/business/service/IBusinessLayerService.java b/dk-modules/business/src/main/java/org/dromara/business/service/IBusinessLayerService.java new file mode 100644 index 0000000..2527a1f --- /dev/null +++ b/dk-modules/business/src/main/java/org/dromara/business/service/IBusinessLayerService.java @@ -0,0 +1,22 @@ +package org.dromara.business.service; + +import org.dromara.business.domain.bo.BusinessLayerBo; +import org.dromara.business.domain.vo.BusinessLayerVo; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; + +public interface IBusinessLayerService { + + /** + * 分页查询工单预约列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 工单预约分页列表 + */ + TableDataInfo queryPageList(BusinessLayerBo bo, PageQuery pageQuery); + + Boolean insert(BusinessLayerBo bo); + Boolean update(BusinessLayerBo bo); + Boolean delete(Long id); +} diff --git a/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessAlertServiceImpl.java b/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessAlertServiceImpl.java index 587b2e3..b139c25 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessAlertServiceImpl.java +++ b/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessAlertServiceImpl.java @@ -6,6 +6,7 @@ import cn.hutool.core.collection.ListUtil; import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; @@ -42,6 +43,7 @@ import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.satoken.utils.LoginHelper; import org.dromara.system.api.RemoteLabelPostService; +import org.dromara.system.api.RemoteSubmailConfigService; import org.dromara.system.api.RemoteUserService; import org.dromara.system.api.domain.vo.RemoteAiLabelPostVo; import org.dromara.system.api.domain.vo.RemoteUserVo; @@ -85,6 +87,8 @@ import java.util.Base64; public class BusinessAlertServiceImpl implements IBusinessAlertService { private final BusinessAlertMapper baseMapper; + @DubboReference(timeout = 30000) + private RemoteSubmailConfigService remoteSubmailConfigService; @Autowired private BusinessAlertConstructInfoMapper businessAlertConstructInfoMapper; @@ -153,15 +157,23 @@ public class BusinessAlertServiceImpl implements IBusinessAlertService { public void addBusinessAlertList(List alertVoList) { if(!alertVoList.isEmpty()) { incrementalCount(alertVoList); - + //用于短信推送 + List> noticeList=new ArrayList<>(); List remoteStartProcessList = new ArrayList<>(); for (BusinessAlertVo alertVo : alertVoList) { + Mapmap=new HashMap<>(); alertVo.setBusinessType(2); alertVo.setHandleType(BusinessStatusEnum.WAITING.getStatus()); BusinessAlert alert = addBusinessAlert(alertVo); RemoteStartProcess startProcess = new RemoteStartProcess(); startProcess.setBusinessId(String.valueOf(alert.getId())); startProcess.setFlowCode("alertChz"); + map.put("deptId",alertVo.getDeptId()); + map.put("deptName",alertVo.getDeptName()); + map.put("labelCn",alertVo.getLabelCn()); + map.put("labelEn",alertVo.getLabelEn()); + map.put("jobName",alertVo.getJobName()); + noticeList.add(map); remoteStartProcessList.add(startProcess); } @@ -171,6 +183,7 @@ public class BusinessAlertServiceImpl implements IBusinessAlertService { //批量新增部门区域数据 remoteWorkflowService.startWorkFlowBatch(batch); }); + remoteSubmailConfigService.remoteSend("smsMultixsend",noticeList); } } @@ -988,6 +1001,7 @@ public class BusinessAlertServiceImpl implements IBusinessAlertService { //更新number this.baseMapper.batchUpdateCaseNumber(alertVoList); + } catch (Exception e) { log.error(e.getMessage(),e); } diff --git a/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessLayerServiceImpl.java b/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessLayerServiceImpl.java new file mode 100644 index 0000000..1a0ad34 --- /dev/null +++ b/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessLayerServiceImpl.java @@ -0,0 +1,47 @@ +package org.dromara.business.service.impl; + +import cn.hutool.core.convert.Convert; +import cn.hutool.core.convert.impl.MapConverter; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.dromara.business.domain.BusinessLayer; +import org.dromara.business.domain.bo.BusinessLayerBo; +import org.dromara.business.domain.vo.BusinessLayerVo; +import org.dromara.business.mapper.BusinessLayerMapper; +import org.dromara.business.service.IBusinessLayerService; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.springframework.stereotype.Service; + + + +@Slf4j +@RequiredArgsConstructor +@Service +public class BusinessLayerServiceImpl implements IBusinessLayerService { + private final BusinessLayerMapper baseMapper; + + @Override + public TableDataInfo queryPageList(BusinessLayerBo bo, PageQuery pageQuery) { + Page result = baseMapper.queryPageList(pageQuery.build(), bo); + return TableDataInfo.build(result); + } + + @Override + public Boolean insert(BusinessLayerBo bo) { + BusinessLayer layerVo = Convert.convert( BusinessLayer.class,bo); + return baseMapper.insert(layerVo)>0; + } + + @Override + public Boolean update(BusinessLayerBo bo) { + BusinessLayer layerVo = Convert.convert( BusinessLayer.class,bo); + return baseMapper.updateById(layerVo)>0; + } + + @Override + public Boolean delete(Long id) { + return baseMapper.deleteById(id)>0; + } +} diff --git a/dk-modules/business/src/main/resources/mapper/business/BusinessLayerMapper.xml b/dk-modules/business/src/main/resources/mapper/business/BusinessLayerMapper.xml new file mode 100644 index 0000000..ed9fcf4 --- /dev/null +++ b/dk-modules/business/src/main/resources/mapper/business/BusinessLayerMapper.xml @@ -0,0 +1,11 @@ + + + + + + + diff --git a/dk-modules/system/src/main/java/org/dromara/system/DKSystemApplication.java b/dk-modules/system/src/main/java/org/dromara/system/DKSystemApplication.java index 63db867..c015fef 100644 --- a/dk-modules/system/src/main/java/org/dromara/system/DKSystemApplication.java +++ b/dk-modules/system/src/main/java/org/dromara/system/DKSystemApplication.java @@ -4,6 +4,7 @@ import org.apache.dubbo.config.spring.context.annotation.EnableDubbo; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.context.metrics.buffering.BufferingApplicationStartup; +import org.springframework.scheduling.annotation.EnableAsync; /** * 系统模块 @@ -12,6 +13,7 @@ import org.springframework.boot.context.metrics.buffering.BufferingApplicationSt */ @EnableDubbo @SpringBootApplication +@EnableAsync public class DKSystemApplication { public static void main(String[] args) { SpringApplication application = new SpringApplication(DKSystemApplication.class); diff --git a/dk-modules/system/src/main/java/org/dromara/system/controller/system/SysUserController.java b/dk-modules/system/src/main/java/org/dromara/system/controller/system/SysUserController.java index 107ee20..365b7dc 100644 --- a/dk-modules/system/src/main/java/org/dromara/system/controller/system/SysUserController.java +++ b/dk-modules/system/src/main/java/org/dromara/system/controller/system/SysUserController.java @@ -274,6 +274,16 @@ public class SysUserController extends BaseController { return toAjax(userService.updateUserStatus(user.getUserId(), user.getStatus())); } + + /** + * 状态修改 + */ + @SaCheckPermission("system:user:edit") + @Log(title = "用户管理", businessType = BusinessType.UPDATE) + @PutMapping("/noticeType") + public R noticeType(@RequestBody SysUserBo user) { + return toAjax(userService.updateUserNoticeType(user.getUserId(), user.getNoticeType())); + } /** * 根据用户编号获取授权角色 * diff --git a/dk-modules/system/src/main/java/org/dromara/system/domain/SysUser.java b/dk-modules/system/src/main/java/org/dromara/system/domain/SysUser.java index 772b505..ed89ba4 100644 --- a/dk-modules/system/src/main/java/org/dromara/system/domain/SysUser.java +++ b/dk-modules/system/src/main/java/org/dromara/system/domain/SysUser.java @@ -98,6 +98,7 @@ public class SysUser extends TenantEntity { */ private Date loginDate; + private Integer noticeType; /** * 备注 */ diff --git a/dk-modules/system/src/main/java/org/dromara/system/domain/bo/SysUserBo.java b/dk-modules/system/src/main/java/org/dromara/system/domain/bo/SysUserBo.java index 2b96210..871e7d1 100644 --- a/dk-modules/system/src/main/java/org/dromara/system/domain/bo/SysUserBo.java +++ b/dk-modules/system/src/main/java/org/dromara/system/domain/bo/SysUserBo.java @@ -108,6 +108,7 @@ public class SysUserBo extends BaseEntity { */ private String excludeUserIds; + private Integer noticeType; /** * 平台名称 */ diff --git a/dk-modules/system/src/main/java/org/dromara/system/domain/vo/SysUserVo.java b/dk-modules/system/src/main/java/org/dromara/system/domain/vo/SysUserVo.java index 45397be..ef52276 100644 --- a/dk-modules/system/src/main/java/org/dromara/system/domain/vo/SysUserVo.java +++ b/dk-modules/system/src/main/java/org/dromara/system/domain/vo/SysUserVo.java @@ -47,6 +47,7 @@ public class SysUserVo implements Serializable { * 用户账号 */ private String userName; + private Integer noticeType; /** * 用户昵称 diff --git a/dk-modules/system/src/main/java/org/dromara/system/dubbo/RemoteSubmailConfigServiceImpl.java b/dk-modules/system/src/main/java/org/dromara/system/dubbo/RemoteSubmailConfigServiceImpl.java index e35f1c8..b140394 100644 --- a/dk-modules/system/src/main/java/org/dromara/system/dubbo/RemoteSubmailConfigServiceImpl.java +++ b/dk-modules/system/src/main/java/org/dromara/system/dubbo/RemoteSubmailConfigServiceImpl.java @@ -1,17 +1,27 @@ package org.dromara.system.dubbo; -import cn.hutool.core.bean.BeanUtil; + +import cn.hutool.core.convert.Convert; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSON; import lombok.RequiredArgsConstructor; + import org.apache.dubbo.config.annotation.DubboService; import org.dromara.common.core.domain.R; -import org.dromara.system.api.RemoteClientService; + import org.dromara.system.api.RemoteSubmailConfigService; -import org.dromara.system.api.domain.vo.RemoteClientVo; -import org.dromara.system.domain.vo.SysClientVo; -import org.dromara.system.service.ISysClientService; + +import org.dromara.system.domain.vo.SysUserVo; import org.dromara.system.service.ISysSubmailConfigService; +import org.dromara.system.service.ISysUserService; +import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.stream.Collectors; + /** * 客户端服务 * @@ -25,6 +35,7 @@ public class RemoteSubmailConfigServiceImpl implements RemoteSubmailConfigServic private final ISysSubmailConfigService sysSubmailConfigService; + private final ISysUserService userService; /** * @@ -36,4 +47,22 @@ public class RemoteSubmailConfigServiceImpl implements RemoteSubmailConfigServic public R remoteCmdSend(String code, String multiParam) { return sysSubmailConfigService.cmdSend(code, multiParam); } + + /** + * 根据部门获取部门下的短信推送人员,进行推送 + * */ + @Override + @Async + public void remoteSend(String code, List> alertList) { + if(!alertList.isEmpty()){ + for (Map map : alertList) { + Long deptId = Convert.toLong(map.get("deptId")); + List sysUserVos = userService.selectUserListByDept(Convert.toLong(deptId)); + Set phones = sysUserVos.stream().filter(u -> u.getNoticeType() == 1 && StrUtil.isNotEmpty(u.getPhonenumber())).map(SysUserVo::getPhonenumber).collect(Collectors.toSet()); + sysSubmailConfigService.sendPhone(code,phones, JSON.toJSONString(map)); + } + } + + + } } diff --git a/dk-modules/system/src/main/java/org/dromara/system/service/ISysSubmailConfigService.java b/dk-modules/system/src/main/java/org/dromara/system/service/ISysSubmailConfigService.java index 7ae1f1c..01a7223 100644 --- a/dk-modules/system/src/main/java/org/dromara/system/service/ISysSubmailConfigService.java +++ b/dk-modules/system/src/main/java/org/dromara/system/service/ISysSubmailConfigService.java @@ -10,6 +10,7 @@ import org.dromara.common.mybatis.core.page.PageQuery; import java.util.Collection; import java.util.List; +import java.util.Set; /** * 赛邮服务配置Service接口 @@ -71,5 +72,8 @@ public interface ISysSubmailConfigService { R cmdSend(String code, String multiParam); + R sendPhone(String code,Setphones, String multiParam); + String submailSendUtil(SysSubmailConfigBo bo, List configUserVoList); + String submailSendPhone(SysSubmailConfigBo bo, Set phones); } diff --git a/dk-modules/system/src/main/java/org/dromara/system/service/ISysUserService.java b/dk-modules/system/src/main/java/org/dromara/system/service/ISysUserService.java index 5b188c5..2d0e9e0 100644 --- a/dk-modules/system/src/main/java/org/dromara/system/service/ISysUserService.java +++ b/dk-modules/system/src/main/java/org/dromara/system/service/ISysUserService.java @@ -169,6 +169,7 @@ public interface ISysUserService { * @return 结果 */ int updateUserStatus(Long userId, String status); + int updateUserNoticeType(Long userId, Integer noticeType); /** * 修改用户基本信息 diff --git a/dk-modules/system/src/main/java/org/dromara/system/service/impl/SysSubmailConfigServiceImpl.java b/dk-modules/system/src/main/java/org/dromara/system/service/impl/SysSubmailConfigServiceImpl.java index c5d9894..5bed240 100644 --- a/dk-modules/system/src/main/java/org/dromara/system/service/impl/SysSubmailConfigServiceImpl.java +++ b/dk-modules/system/src/main/java/org/dromara/system/service/impl/SysSubmailConfigServiceImpl.java @@ -32,10 +32,7 @@ import org.dromara.system.domain.SysSubmailConfig; import org.dromara.system.mapper.SysSubmailConfigMapper; import org.dromara.system.service.ISysSubmailConfigService; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Collection; +import java.util.*; import java.util.stream.Collectors; /** @@ -189,6 +186,75 @@ public class SysSubmailConfigServiceImpl implements ISysSubmailConfigService { return R.ok(result); } + @Override + public R sendPhone(String code, Set phones, String multiParam) { + //找到生效配置 + SysSubmailConfigBo bo = new SysSubmailConfigBo(); + bo.setCode(code); + List sysSubmailConfigVoTempList = this.queryList(bo); + if (sysSubmailConfigVoTempList.size() <= 0) { + return R.fail("暂无有效配置"); + } + SysSubmailConfigVo firstConfigVo = sysSubmailConfigVoTempList.get(0); + + BeanUtil.copyProperties(firstConfigVo,bo); + bo.setMultiParam(multiParam); + + String result = submailSendPhone(bo,phones); + return R.ok(result); + } + public String submailSendPhone(SysSubmailConfigBo bo, Set phones) { + if(!phones.isEmpty()){ + String subMailSaveFlag = SpringUtils.getBean(ISysConfigService.class).selectConfigByKey("submail.log.save"); + HashMap postParam = new HashMap<>(); + postParam.put("appid", bo.getAppid()); + postParam.put("signature", bo.getSignature()); + + String phonenumber =String.join(",", phones);; + String result = ""; + switch (bo.getCode()){ + case "smsSend": //短信发送 to/content + postParam.put("to", phonenumber); + postParam.put("content", bo.getContent()); + result = HttpUtil.post(bo.getUrl(), postParam); //JSONUtil.parseObj(result).getStr("status") + saveConfigLog(bo, subMailSaveFlag, phonenumber, result); + break; + case "smsXsend": //短信模板发送 to/project + postParam.put("to", phonenumber); + postParam.put("project", bo.getProject()); + postParam.put("vars", bo.getVars()); + result = HttpUtil.post(bo.getUrl(), postParam); + saveConfigLog(bo, subMailSaveFlag, phonenumber, result); + break; + case "smsMultisend": //短信一对多发送 multi +// postParam.put("to", phonenumber); +// postParam.put("project", bo.getProject()); +// postParam.put("vars", bo.getVars()); +// result = HttpUtil.post(bo.getUrl(), postParam); +// saveConfigLog(bo, subMailSaveFlag, phonenumber, result); + break; + case "smsMultixsend": //短信模板一对多发送 project/multi + postParam.put("to", phonenumber); + postParam.put("project", bo.getProject()); +// 拼接multi + JSONArray multiJson = new JSONArray(); + for (String phone : phones) { + JSONObject entries = new JSONObject(); + entries.set("to",phone); + entries.set("vars", JSONUtil.parseObj(bo.getMultiParam())); + multiJson.add(entries); + } + String multiJsonStr = multiJson.toString(); +// postParam.put("multi", multiJson.toString()); + postParam.put("multi", multiJsonStr); + result = HttpUtil.post(bo.getUrl(), postParam); + saveConfigLog(bo, subMailSaveFlag, phonenumber, result); + break; + } + return result; + } + return null; + } public String submailSendUtil(SysSubmailConfigBo bo, List configUserVoList) { String subMailSaveFlag = SpringUtils.getBean(ISysConfigService.class).selectConfigByKey("submail.log.save"); HashMap postParam = new HashMap<>(); diff --git a/dk-modules/system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java b/dk-modules/system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java index 8849a41..54b5d6a 100644 --- a/dk-modules/system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java +++ b/dk-modules/system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java @@ -376,6 +376,14 @@ public class SysUserServiceImpl implements ISysUserService { .eq(SysUser::getUserId, userId)); } + @Override + public int updateUserNoticeType(Long userId, Integer noticeType) { + return baseMapper.update(null, + new LambdaUpdateWrapper() + .set(SysUser::getNoticeType, noticeType) + .eq(SysUser::getUserId, userId)); + } + /** * 修改用户基本信息 * diff --git a/dk-modules/system/src/main/resources/mapper/system/SysUserMapper.xml b/dk-modules/system/src/main/resources/mapper/system/SysUserMapper.xml index 4b35648..2e482a2 100644 --- a/dk-modules/system/src/main/resources/mapper/system/SysUserMapper.xml +++ b/dk-modules/system/src/main/resources/mapper/system/SysUserMapper.xml @@ -17,7 +17,7 @@ ${ew.getSqlSelect} - u.user_id, u.dept_id, u.nick_name, u.user_name, u.email, u.avatar, u.phonenumber, u.sex, + u.user_id, u.dept_id, u.nick_name, u.user_name, u.email, u.avatar, u.phonenumber, u.sex,u.notice_type, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark,u.product_name from sys_user u diff --git a/dk-visual/nacos/src/main/resources/application.properties b/dk-visual/nacos/src/main/resources/application.properties index 44fe8a3..972740f 100644 --- a/dk-visual/nacos/src/main/resources/application.properties +++ b/dk-visual/nacos/src/main/resources/application.properties @@ -40,9 +40,9 @@ spring.sql.init.platform=mysql db.num=1 ### Connect URL of DB: -db.url.0=jdbc:mysql://114.235.183.147:3306/dk_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true +db.url.0=jdbc:mysql://127.0.0.1:3306/dk_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true db.user.0=root -db.password.0=dkcy@yf +db.password.0=123456 ### the maximum retry times for push nacos.config.push.maxRetryTime=50