修改备降点经纬度的获取

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() {
// 工具类禁止实例化
}
@ -189,7 +219,9 @@ public class TuohengDeviceAttributes {
SENDER,
DEVICE_ID,
HOME_LONGITUDE,
HOME_LATITUDE
HOME_LATITUDE,
BACKUP_LONGITUDE,
BACKUP_LATITUDE
);
}

View File

@ -30,6 +30,12 @@ import java.util.Map;
@Slf4j
public class TuohengBufferDeviceImpl implements IBufferDeviceService {
/**
* 默认经纬度 - 南京市
*/
private static final Double DEFAULT_LONGITUDE = 118.796877;
private static final Double DEFAULT_LATITUDE = 32.060255;
@Autowired
private IDockDomain dockDomain;
@ -216,18 +222,49 @@ public class TuohengBufferDeviceImpl implements IBufferDeviceService {
dto.setFirmwareVersion(value);
});
// 设置机场位置从属性中获取 home.longitude home.latitude
// 设置机场位置从属性中获取 home.longitude home.latitude取不到则使用南京市默认值
log.info("---------- 解析机场位置数据 ----------");
attributes.get(TuohengDeviceAttributes.HOME_LONGITUDE)
.ifPresent(value -> {
log.info("HOME_LONGITUDE 机场经度: {}", value);
dto.setLongitude(value);
});
attributes.get(TuohengDeviceAttributes.HOME_LATITUDE)
.ifPresent(value -> {
log.info("HOME_LATITUDE 机场纬度: {}", value);
dto.setLatitude(value);
});
Double homeLongitude = attributes.get(TuohengDeviceAttributes.HOME_LONGITUDE)
.orElse(null);
if (homeLongitude != null) {
log.info("HOME_LONGITUDE 机场经度: {}", homeLongitude);
dto.setLongitude(homeLongitude);
} else {
log.info("HOME_LONGITUDE 未设置,使用默认值(南京市): {}", DEFAULT_LONGITUDE);
dto.setLongitude(DEFAULT_LONGITUDE);
}
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判断工作状态
telemetry.get(TuohengDeviceTelemetry.STATUS).ifPresentOrElse(statusValue -> {