Xiajijian
2026-05-27 402fe914957546a820c60731181501c554826fa4
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
package com.ard.work.service.impl;
 
import com.ard.data.region.domain.ArdDeptRegion;
import com.ard.data.region.service.IArdDeptRegionService;
import com.ard.work.domain.cache.UavRegionCache;
import com.ard.work.domain.cache.UavTelemetryDataCache;
import com.ard.work.domain.dto.telemetry.TelemetryData;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
 
/**
 * 无人机区域检测服务(异步)
 *
 * @author 刘苏义
 */
@Slf4j
@Service
@RequiredArgsConstructor
public class UavRegionDetectService {
 
    private final IArdDeptRegionService ardDeptRegionService;
 
    /**
     * 异步检测无人机所在区域
     */
    @Async
    public void detectRegionAsync(TelemetryData telemetryData) {
        String boxSn = telemetryData.getBoxSn();
        try {
            // 1. 查询当前坐标所属区域
            ArdDeptRegion region = null;
            if (telemetryData.getLat() != 0.0 && telemetryData.getLng() != 0.0) {
                region = ardDeptRegionService.selectRegionByPoint(telemetryData.getLat(), telemetryData.getLng());
            }
            // 3. 更新区域缓存
            UavRegionCache.put(boxSn, region);
        } catch (Exception e) {
            log.error("无人机 {} 区域检测失败: {}", boxSn, e.getMessage(), e);
        }
    }
}