From a4950f3d0e1c5ec241aee6b284925cbbabf9409d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AD=99=E5=B0=8F=E4=BA=91?= Date: Sat, 28 Feb 2026 15:38:16 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A4=84=E7=90=86=E6=9C=BA=E5=9C=BA=E9=A3=9E?= =?UTF-8?q?=E8=A1=8C=E6=8E=A7=E5=88=B6=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/AircraftFlyController.java | 5 +- .../service/impl/FlightLogCallback.java | 158 +++++++++--------- 2 files changed, 77 insertions(+), 86 deletions(-) diff --git a/src/main/java/com/ruoyi/device/controller/AircraftFlyController.java b/src/main/java/com/ruoyi/device/controller/AircraftFlyController.java index 742bf94..7f9acc3 100644 --- a/src/main/java/com/ruoyi/device/controller/AircraftFlyController.java +++ b/src/main/java/com/ruoyi/device/controller/AircraftFlyController.java @@ -45,7 +45,7 @@ public class AircraftFlyController extends BaseController * @param request 飞控命令请求 * @return 结果 */ - @Operation(summary = "无人机飞控命令", description = "发送飞控命令控制无人机的飞行动作,包括前进、后退、左移、右移、左旋、右旋、上升、下降、返航、急停等") + @Operation(summary = "无人机飞控命令", description = "发送飞控指令") @PostMapping("/flight-control") public R flightControl(@RequestBody DroneFlightControlRequest request) { @@ -81,9 +81,6 @@ public class AircraftFlyController extends BaseController } switch (request.getCommand()) { - case RETURN_HOME: - commandType = CommandType.RETURN_HOME; - break; case FORWARD: commandType = CommandType.FORWARD; break; diff --git a/src/main/java/com/ruoyi/device/service/impl/FlightLogCallback.java b/src/main/java/com/ruoyi/device/service/impl/FlightLogCallback.java index 75c8fce..8e0f0a7 100644 --- a/src/main/java/com/ruoyi/device/service/impl/FlightLogCallback.java +++ b/src/main/java/com/ruoyi/device/service/impl/FlightLogCallback.java @@ -32,91 +32,85 @@ public class FlightLogCallback implements IDroneRealTimeCallback { @Override public void onDroneRealTimeData(String deviceSn, DroneRealTimeData data) { - return; + if (data == null) { + log.warn("【FlightLogCallback】收到空数据: deviceSn={}", deviceSn); + return; + } -// if (data == null) { -// log.warn("【FlightLogCallback】收到空数据: deviceSn={}", deviceSn); -// return; -// } -// -// if (data.getData() == null) { -// log.warn("【FlightLogCallback】收到空数据体: deviceSn={}, messageId={}", deviceSn, data.getMessageID()); -// return; -// } -// -// log.info("【FlightLogCallback】处理实时消息: deviceSn={}, messageId={}, data={}", deviceSn, data.getMessageID(), JSON.toJSONString(data.getData())); -// -// DroneRealTimeData.DroneInfo droneInfo = data.getData(); -// -// try { -// if (droneInfo.getJiancha() != null && !droneInfo.getJiancha().isEmpty()) { -// log.info("【FlightLogCallback】检测到自检数据: deviceSn={}, messageId={}, checkBody={}", deviceSn, data.getMessageID(), data.getData().getJiancha()); -// handlePreCheckLog(deviceSn, data.getMessageID(), droneInfo.getJiancha()); -// } else { -// log.debug("【FlightLogCallback】实时消息中无自检数据: deviceSn={}, messageId={}", deviceSn, data.getMessageID()); -// } -// } catch (Exception e) { -// log.error("【FlightLogCallback】处理自检日志失败: deviceSn={}, messageId={}, error={}", deviceSn, data.getMessageID(), e.getMessage(), e); -// } + if (data.getData() == null) { + log.warn("【FlightLogCallback】收到空数据体: deviceSn={}, messageId={}", deviceSn, data.getMessageID()); + return; + } + + log.info("【FlightLogCallback】处理实时消息: deviceSn={}, messageId={}, data={}", + deviceSn, data.getMessageID(), JSON.toJSONString(data.getData())); + + DroneRealTimeData.DroneInfo droneInfo = data.getData(); + + try { + if (droneInfo.getJiancha() != null && !droneInfo.getJiancha().isEmpty()) { + log.info("【FlightLogCallback】检测到自检数据: deviceSn={}, messageId={}, checkBody={}", deviceSn, data.getMessageID(), data.getData().getJiancha()); + handlePreCheckLog(deviceSn, data.getMessageID(), droneInfo.getJiancha()); + } else { + log.debug("【FlightLogCallback】实时消息中无自检数据: deviceSn={}, messageId={}", deviceSn, data.getMessageID()); + } + } catch (Exception e) { + log.error("【FlightLogCallback】处理自检日志失败: deviceSn={}, messageId={}, error={}", deviceSn, data.getMessageID(), e.getMessage(), e); + } } private void handlePreCheckLog(String deviceSn, String messageID, String jianchaJson) { -// log.info("【FlightLogCallback】开始处理自检日志: deviceSn={}, messageId={}, jianchaJson={}", deviceSn, messageID, jianchaJson); -// -// try { -// FlightEntity flight; -// -// if (messageID != null && !messageID.isEmpty()) { -// log.info("【FlightLogCallback】通过messageId获取飞行记录: deviceSn={}, messageId={}", deviceSn, messageID); -// flight = flightService.getOrCreateFlightByMessageId(deviceSn, messageID); -// } else { -// log.info("【FlightLogCallback】获取当前飞行记录: deviceSn={}", deviceSn); -// flight = flightService.getOrCreateCurrentFlight(deviceSn); -// } -// -// if (flight == null) { -// log.error("【FlightLogCallback】获取飞行记录失败,无法保存自检日志: deviceSn={}, messageId={}", deviceSn, messageID); -// return; -// } -// -// log.info("【FlightLogCallback】获取到飞行记录: deviceSn={}, flightId={}, status={}", deviceSn, flight.getFlightId(), flight.getStatus()); -// -// JSONArray checkItems = JSON.parseArray(jianchaJson); -// if (checkItems == null || checkItems.isEmpty()) { -// log.warn("【FlightLogCallback】自检数据为空或解析失败: deviceSn={}, jianchaJson={}", deviceSn, jianchaJson); -// return; -// } -// -// log.info("【FlightLogCallback】解析到{}个自检项: deviceSn={}, flightId={}", checkItems.size(), deviceSn, flight.getFlightId()); -// -// for (int i = 0; i < checkItems.size(); i++) { -// JSONObject item = checkItems.getJSONObject(i); -// PreCheckLogEntity logEntity = new PreCheckLogEntity(); -// logEntity.setFlightId(flight.getFlightId()); -// -// String check = item.getString("check"); -// String value = item.getString("value"); -// Boolean result = item.getBoolean("result"); -// -// String statusText = result != null && result ? "自检成功" : "自检失败"; -// String logContent = check + " " + value + " " + statusText; -// -// logEntity.setLogContent(logContent); -// logEntity.setSuccess(result != null ? result : false); -// -// log.info("【FlightLogCallback】准备插入自检日志[{}/{}]: deviceSn={}, flightId={}, check={}, value={}, result={}", -// i + 1, checkItems.size(), deviceSn, flight.getFlightId(), check, value, result); -// -// flightService.insertPreCheckLog(logEntity); -// -// log.info("【FlightLogCallback】成功插入自检日志[{}/{}]: deviceSn={}, flightId={}, logId={}", -// i + 1, checkItems.size(), deviceSn, flight.getFlightId(), logEntity.getLogId()); -// } -// log.info("【FlightLogCallback】完成保存自检日志: deviceSn={}, flightId={}, 检查项数量={}", -// deviceSn, flight.getFlightId(), checkItems.size()); -// } catch (Exception e) { -// log.error("【FlightLogCallback】保存自检日志失败: deviceSn={}, messageId={}, jiancha={}, error={}", -// deviceSn, messageID, jianchaJson, e.getMessage(), e); -// } + log.info("【FlightLogCallback】开始处理自检日志: deviceSn={}, messageId={}, jianchaJson={}", deviceSn, messageID, jianchaJson); + + try { + FlightEntity flight; + + if (messageID != null && !messageID.isEmpty()) { + log.info("【FlightLogCallback】通过messageId获取飞行记录: deviceSn={}, messageId={}", deviceSn, messageID); + flight = flightService.getOrCreateFlightByMessageId(deviceSn, messageID); + } else { + log.warn("【FlightLogCallback】获取当前飞行记录: deviceSn={} messageID为空", deviceSn); + return; + } + + log.info("【FlightLogCallback】获取到飞行记录: deviceSn={}, flightId={}, status={}", deviceSn, flight.getFlightId(), flight.getStatus()); + + JSONArray checkItems = JSON.parseArray(jianchaJson); + if (checkItems == null || checkItems.isEmpty()) { + log.warn("【FlightLogCallback】自检数据为空或解析失败: deviceSn={}, jianchaJson={}", deviceSn, jianchaJson); + return; + } + + log.info("【FlightLogCallback】解析到{}个自检项: deviceSn={}, flightId={}", checkItems.size(), deviceSn, flight.getFlightId()); + + for (int i = 0; i < checkItems.size(); i++) { + JSONObject item = checkItems.getJSONObject(i); + PreCheckLogEntity logEntity = new PreCheckLogEntity(); + logEntity.setFlightId(flight.getFlightId()); + + String check = item.getString("check"); + String value = item.getString("value"); + Boolean result = item.getBoolean("result"); + + String statusText = result != null && result ? "自检成功" : "自检失败"; + String logContent = check + " " + value + " " + statusText; + + logEntity.setLogContent(logContent); + logEntity.setSuccess(result != null ? result : false); + + log.info("【FlightLogCallback】准备插入自检日志[{}/{}]: deviceSn={}, flightId={}, check={}, value={}, result={}", + i + 1, checkItems.size(), deviceSn, flight.getFlightId(), check, value, result); + + flightService.insertPreCheckLog(logEntity); + + log.info("【FlightLogCallback】成功插入自检日志[{}/{}]: deviceSn={}, flightId={}, logId={}", + i + 1, checkItems.size(), deviceSn, flight.getFlightId(), logEntity.getLogId()); + } + log.info("【FlightLogCallback】完成保存自检日志: deviceSn={}, flightId={}, 检查项数量={}", + deviceSn, flight.getFlightId(), checkItems.size()); + } catch (Exception e) { + log.error("【FlightLogCallback】保存自检日志失败: deviceSn={}, messageId={}, jiancha={}, error={}", + deviceSn, messageID, jianchaJson, e.getMessage(), e); + } } }