liusuyi
2026-02-10 4ac9edd4c0030d2daafd712cd14ef9080b2f1e43
ard-work/src/main/java/com/ard/work/service/impl/ArdFlightTaskServiceImpl.java
@@ -55,12 +55,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 +85,7 @@
        // 创建查询条件 BoxHistoryDTO,并设置 startTime 作为过滤条件
        BoxHistoryDTO boxHistoryDTO = BoxHistoryDTO.builder()
                .pageIndex(1)
                .pageSize(100)
                .pageSize(20)
                .startTime(DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, startTime))
                .build();
@@ -102,7 +106,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());
@@ -128,7 +132,7 @@
            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 +148,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 +166,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;
            }
        }