From 3f43e40ed1a1e9f66b3ad2862da9dbc4b710c712 Mon Sep 17 00:00:00 2001
From: nishiwei <13126973358@163.com>
Date: Fri, 23 Oct 2026 14:09:47 +0800
Subject: [PATCH] 智云3.0机场1适配内容提交

---
 ard-work/src/main/java/com/ard/work/service/impl/ArdFlightTaskServiceImpl.java |   18 +++++++++++++++++-
 1 files changed, 17 insertions(+), 1 deletions(-)

diff --git a/ard-work/src/main/java/com/ard/work/service/impl/ArdFlightTaskServiceImpl.java b/ard-work/src/main/java/com/ard/work/service/impl/ArdFlightTaskServiceImpl.java
index 64afb12..32c149a 100644
--- a/ard-work/src/main/java/com/ard/work/service/impl/ArdFlightTaskServiceImpl.java
+++ b/ard-work/src/main/java/com/ard/work/service/impl/ArdFlightTaskServiceImpl.java
@@ -5,6 +5,10 @@
 import com.ard.common.core.redis.RedisCache;
 import com.ard.common.utils.DateUtils;
 import com.ard.work.component.forest.TyClient;
+import com.ard.work.domain.cache.UavTelemetryDataCache;
+import com.ard.work.domain.cache.UavWaylineCache;
+import com.ard.work.domain.dto.telemetry.TelemetryData;
+import com.ard.work.domain.dto.wayline.WaylineInfo;
 import com.ard.work.domain.dto.BoxHistoryDTO;
 import com.ard.work.domain.entity.ArdFlightTask;
 import com.ard.work.domain.receiver.BoxHistoryReceiver;
@@ -130,9 +134,21 @@
                     .maxSpeed(boxHistoryReceiver.getMaxSpeed())
                     .build();
 
+            // 从遥测缓存和航线缓存直接获取 flightMode 和 routeId
+            // UavWaylineCache 在飞行中持续有效,仅在飞行中 flightMode!=14 时被清除
+            String boxSn = flightTask.getBoxSn();
+            WaylineInfo waylineInfo = UavWaylineCache.get(boxSn);
+            if (waylineInfo != null && waylineInfo.getWaylineId() != null) {
+                flightTask.setRouteId(waylineInfo.getWaylineId());
+            }
+            TelemetryData telemetryData = UavTelemetryDataCache.get(boxSn);
+            if (telemetryData != null && telemetryData.getFlightMode() > 0) {
+                flightTask.setFlightMode(telemetryData.getFlightMode());
+            }
+
             Long flyUserId = uavControlService.getCurrentController(flightTask.getBoxSn(), "fly");
             if (flyUserId != null) {
-                SysUser flyUser = redisCache.getCacheObject(CacheConstants.SYS_USER_KEY + flyUserId);
+                SysUser flyUser = redisCache.getCacheMapValue(CacheConstants.SYS_USER, flyUserId.toString());
                 if (flyUser != null && flyUser.getNickName() != null) {
                     flightTask.setCreateBy(flyUser.getNickName());
                 }

--
Gitblit v1.9.3