修改备降点经纬度的获取

This commit is contained in:
孙小云 2026-02-06 13:56:09 +08:00
parent 97c671f2ed
commit 18832acf17
2 changed files with 81 additions and 12 deletions

View File

@ -165,6 +165,36 @@ public class TuohengDeviceAttributes {
} }
); );
/**
* 备降点位置属性手动维护
*/
// 备降点经度 - Double
public static final AttributeKey<Double> BACKUP_LONGITUDE = AttributeKey.of(
"backup.longitude",
Double.class,
value -> {
if (value == null) return null;
if (value instanceof Number) {
return ((Number) value).doubleValue();
}
return Double.parseDouble(value.toString());
}
);
// 备降点纬度 - Double
public static final AttributeKey<Double> BACKUP_LATITUDE = AttributeKey.of(
"backup.latitude",
Double.class,
value -> {
if (value == null) return null;
if (value instanceof Number) {
return ((Number) value).doubleValue();
}
return Double.parseDouble(value.toString());
}
);
private TuohengDeviceAttributes() { private TuohengDeviceAttributes() {
// 工具类禁止实例化 // 工具类禁止实例化
} }
@ -189,7 +219,9 @@ public class TuohengDeviceAttributes {
SENDER, SENDER,
DEVICE_ID, DEVICE_ID,
HOME_LONGITUDE, HOME_LONGITUDE,
HOME_LATITUDE HOME_LATITUDE,
BACKUP_LONGITUDE,
BACKUP_LATITUDE
); );
} }

View File

@ -30,6 +30,12 @@ import java.util.Map;
@Slf4j @Slf4j
public class TuohengBufferDeviceImpl implements IBufferDeviceService { public class TuohengBufferDeviceImpl implements IBufferDeviceService {
/**
* 默认经纬度 - 南京市
*/
private static final Double DEFAULT_LONGITUDE = 118.796877;
private static final Double DEFAULT_LATITUDE = 32.060255;
@Autowired @Autowired
private IDockDomain dockDomain; private IDockDomain dockDomain;
@ -216,18 +222,49 @@ public class TuohengBufferDeviceImpl implements IBufferDeviceService {
dto.setFirmwareVersion(value); dto.setFirmwareVersion(value);
}); });
// 设置机场位置从属性中获取 home.longitude home.latitude // 设置机场位置从属性中获取 home.longitude home.latitude取不到则使用南京市默认值
log.info("---------- 解析机场位置数据 ----------"); log.info("---------- 解析机场位置数据 ----------");
attributes.get(TuohengDeviceAttributes.HOME_LONGITUDE) Double homeLongitude = attributes.get(TuohengDeviceAttributes.HOME_LONGITUDE)
.ifPresent(value -> { .orElse(null);
log.info("HOME_LONGITUDE 机场经度: {}", value); if (homeLongitude != null) {
dto.setLongitude(value); log.info("HOME_LONGITUDE 机场经度: {}", homeLongitude);
}); dto.setLongitude(homeLongitude);
attributes.get(TuohengDeviceAttributes.HOME_LATITUDE) } else {
.ifPresent(value -> { log.info("HOME_LONGITUDE 未设置,使用默认值(南京市): {}", DEFAULT_LONGITUDE);
log.info("HOME_LATITUDE 机场纬度: {}", value); dto.setLongitude(DEFAULT_LONGITUDE);
dto.setLatitude(value); }
});
Double homeLatitude = attributes.get(TuohengDeviceAttributes.HOME_LATITUDE)
.orElse(null);
if (homeLatitude != null) {
log.info("HOME_LATITUDE 机场纬度: {}", homeLatitude);
dto.setLatitude(homeLatitude);
} else {
log.info("HOME_LATITUDE 未设置,使用默认值(南京市): {}", DEFAULT_LATITUDE);
dto.setLatitude(DEFAULT_LATITUDE);
}
// 设置备降点位置从属性中获取 backup.longitude backup.latitude取不到则使用南京市默认值
log.info("---------- 解析备降点位置数据 ----------");
Double backupLongitude = attributes.get(TuohengDeviceAttributes.BACKUP_LONGITUDE)
.orElse(null);
if (backupLongitude != null) {
log.info("BACKUP_LONGITUDE 备降点经度: {}", backupLongitude);
dto.setBackupLongitude(backupLongitude);
} else {
log.info("BACKUP_LONGITUDE 未设置,使用默认值(南京市): {}", DEFAULT_LONGITUDE);
dto.setBackupLongitude(DEFAULT_LONGITUDE);
}
Double backupLatitude = attributes.get(TuohengDeviceAttributes.BACKUP_LATITUDE)
.orElse(null);
if (backupLatitude != null) {
log.info("BACKUP_LATITUDE 备降点纬度: {}", backupLatitude);
dto.setBackupLatitude(backupLatitude);
} else {
log.info("BACKUP_LATITUDE 未设置,使用默认值(南京市): {}", DEFAULT_LATITUDE);
dto.setBackupLatitude(DEFAULT_LATITUDE);
}
// 设置在线状态 - 基于心跳时间戳判断离线基于无人机mode判断工作状态 // 设置在线状态 - 基于心跳时间戳判断离线基于无人机mode判断工作状态
telemetry.get(TuohengDeviceTelemetry.STATUS).ifPresentOrElse(statusValue -> { telemetry.get(TuohengDeviceTelemetry.STATUS).ifPresentOrElse(statusValue -> {