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 | 53 ++++++++++++++++++++++++++++++++++++++---------------
1 files changed, 38 insertions(+), 15 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 8f4cb85..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;
@@ -55,12 +59,16 @@
*/
@Scheduled(fixedDelay = 5000)
public void syncAllFlightHistory() {
- List<String> serverIds = ardServerInfoService.getServerIdsList();
- for (String serverId : serverIds) {
- // 获取上次同步的时间(即数据库中最大 startTime)
- Date lastSyncTime = getLastSyncTimeForServer(serverId);
- // 根据上次同步时间同步飞行历史
- syncFlightHistory(serverId, lastSyncTime);
+ try {
+ List<String> serverIds = ardServerInfoService.getServerIdsList();
+ for (String serverId : serverIds) {
+ // 获取上次同步的时间(即数据库中最大 startTime)
+ Date lastSyncTime = getLastSyncTimeForServer(serverId);
+ // 根据上次同步时间同步飞行历史
+ syncFlightHistory(serverId, lastSyncTime);
+ }
+ } catch (Exception e) {
+ log.error("同步飞行历史失败", e);
}
}
@@ -81,7 +89,7 @@
// 创建查询条件 BoxHistoryDTO,并设置 startTime 作为过滤条件
BoxHistoryDTO boxHistoryDTO = BoxHistoryDTO.builder()
.pageIndex(1)
- .pageSize(100)
+ .pageSize(20)
.startTime(DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, startTime))
.build();
@@ -102,7 +110,7 @@
ArdFlightTask ardFlightTask = ardFlightTaskMapper.getArdFlightTaskById(boxHistoryReceiver.getTaskId());
if (ardFlightTask == null) {
// 如果不存在,则插入新记录
- log.debug("insert task {}", boxHistoryReceiver.getTaskId());
+ log.info("insert task {}", boxHistoryReceiver.getTaskId());
Date endTime = null;
if (boxHistoryReceiver.getEndTime() != null) {
endTime = DateUtils.dateTime(DateUtils.YYYY_MM_DD_HH_MM_SS, boxHistoryReceiver.getEndTime());
@@ -126,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());
}
@@ -144,13 +164,12 @@
}
} else {
// 如果存在,则更新记录
- log.debug("Updating task {}", boxHistoryReceiver.getTaskId());
+ log.debug("sync task {}", boxHistoryReceiver.getTaskId());
updateFlightTask(ardFlightTask, boxHistoryReceiver);
- // 增量更新视频
- ardMediaService.updateVideoToDatabase(ardFlightTask, serverId, boxHistoryReceiver.getBoxSn());
- // 增量更新图片
- ardMediaService.updatePhotoToDatabase(ardFlightTask, serverId, boxHistoryReceiver.getBoxSn());
-
+ // 同步任务图片
+ ardMediaService.syncPicToDatabase(ardFlightTask, serverId, boxHistoryReceiver.getBoxSn());
+ // 同步任务视频
+ ardMediaService.syncVideoToDatabase(ardFlightTask, serverId, boxHistoryReceiver.getBoxSn());
}
}
@@ -163,6 +182,10 @@
Date newEnd = DateUtils.dateTime(DateUtils.YYYY_MM_DD_HH_MM_SS, remote.getEndTime());
if (local.getEndTime() == null || !local.getEndTime().equals(newEnd)) {
local.setEndTime(newEnd);
+ local.setAveSpeed(remote.getAveSpeed());
+ local.setMaxSpeed(remote.getMaxSpeed());
+ local.setFlightDuration(remote.getFlightDuration());
+ local.setFlightMileage(remote.getFlightMileage());
needUpdate = true;
}
}
--
Gitblit v1.9.3