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); } } }