舱内状态同步
This commit is contained in:
parent
5aeff3d815
commit
7530b9b119
|
|
@ -37,6 +37,9 @@ public class RealTimeBasicData {
|
||||||
|
|
||||||
@JsonProperty("status")
|
@JsonProperty("status")
|
||||||
private String status;
|
private String status;
|
||||||
|
|
||||||
|
@JsonProperty("nestDoor")
|
||||||
|
private NestDoorInfo nestDoor;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
|
|
@ -47,4 +50,28 @@ public class RealTimeBasicData {
|
||||||
@JsonProperty("hardware")
|
@JsonProperty("hardware")
|
||||||
private String hardware;
|
private String hardware;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public static class NestDoorInfo {
|
||||||
|
@JsonProperty("msg")
|
||||||
|
private String msg;
|
||||||
|
|
||||||
|
@JsonProperty("code")
|
||||||
|
private Integer code;
|
||||||
|
|
||||||
|
@JsonProperty("data")
|
||||||
|
private NestDoorData data;
|
||||||
|
|
||||||
|
@JsonProperty("sender")
|
||||||
|
private String sender;
|
||||||
|
|
||||||
|
@JsonProperty("fun")
|
||||||
|
private String fun;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public static class NestDoorData {
|
||||||
|
@JsonProperty("status")
|
||||||
|
private Integer status; // 1=开仓, 2=关仓
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -6,10 +6,12 @@ import com.ruoyi.device.domain.api.IDockDomain;
|
||||||
import com.ruoyi.device.domain.api.IAircraftDomain;
|
import com.ruoyi.device.domain.api.IAircraftDomain;
|
||||||
import com.ruoyi.device.domain.api.IDeviceDomain;
|
import com.ruoyi.device.domain.api.IDeviceDomain;
|
||||||
import com.ruoyi.device.domain.impl.machine.mqtt.MqttCallbackRegistry;
|
import com.ruoyi.device.domain.impl.machine.mqtt.MqttCallbackRegistry;
|
||||||
|
import com.ruoyi.device.domain.impl.machine.state.CoverState;
|
||||||
import com.ruoyi.device.domain.impl.machine.state.DroneState;
|
import com.ruoyi.device.domain.impl.machine.state.DroneState;
|
||||||
import com.ruoyi.device.domain.impl.machine.state.AirportState;
|
import com.ruoyi.device.domain.impl.machine.state.AirportState;
|
||||||
import com.ruoyi.device.domain.impl.machine.state.MachineStates;
|
import com.ruoyi.device.domain.impl.machine.state.MachineStates;
|
||||||
import com.ruoyi.device.domain.impl.machine.statemachine.MachineStateManager;
|
import com.ruoyi.device.domain.impl.machine.statemachine.MachineStateManager;
|
||||||
|
import com.ruoyi.device.domain.impl.tuohengmqtt.callback.IRealTimeBasicCallback;
|
||||||
import com.ruoyi.device.domain.impl.tuohengmqtt.callback.ITuohengEventsCallback;
|
import com.ruoyi.device.domain.impl.tuohengmqtt.callback.ITuohengEventsCallback;
|
||||||
import com.ruoyi.device.domain.impl.tuohengmqtt.callback.ITuohengOsdCallback;
|
import com.ruoyi.device.domain.impl.tuohengmqtt.callback.ITuohengOsdCallback;
|
||||||
import com.ruoyi.device.domain.impl.tuohengmqtt.callback.ITuohengRealTimeDataCallback;
|
import com.ruoyi.device.domain.impl.tuohengmqtt.callback.ITuohengRealTimeDataCallback;
|
||||||
|
|
@ -18,6 +20,7 @@ import com.ruoyi.device.domain.impl.tuohengmqtt.handler.TuohengMqttMessageHandle
|
||||||
import com.ruoyi.device.domain.impl.tuohengmqtt.manager.TuohengMqttClientManager;
|
import com.ruoyi.device.domain.impl.tuohengmqtt.manager.TuohengMqttClientManager;
|
||||||
import com.ruoyi.device.domain.impl.tuohengmqtt.model.AirportOsdData;
|
import com.ruoyi.device.domain.impl.tuohengmqtt.model.AirportOsdData;
|
||||||
import com.ruoyi.device.domain.impl.tuohengmqtt.model.EventsData;
|
import com.ruoyi.device.domain.impl.tuohengmqtt.model.EventsData;
|
||||||
|
import com.ruoyi.device.domain.impl.tuohengmqtt.model.RealTimeBasicData;
|
||||||
import com.ruoyi.device.domain.impl.tuohengmqtt.model.TuohengRealTimeData;
|
import com.ruoyi.device.domain.impl.tuohengmqtt.model.TuohengRealTimeData;
|
||||||
import com.ruoyi.device.domain.model.Aircraft;
|
import com.ruoyi.device.domain.model.Aircraft;
|
||||||
import com.ruoyi.device.domain.model.Device;
|
import com.ruoyi.device.domain.model.Device;
|
||||||
|
|
@ -153,6 +156,18 @@ public class TuohengService {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
handler.registerRealTimeBasicCallback(new IRealTimeBasicCallback() {
|
||||||
|
@Override
|
||||||
|
public void onRealTimeBasicData(String deviceSn, RealTimeBasicData data) {
|
||||||
|
try {
|
||||||
|
// 同步舱门状态到 MachineStateManager
|
||||||
|
syncCoverState(deviceSn, data);
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error("处理实时基础数据失败", e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
log.info("TuohengService 初始化完成,已注册所有回调");
|
log.info("TuohengService 初始化完成,已注册所有回调");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -318,6 +333,48 @@ public class TuohengService {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 同步舱门状态
|
||||||
|
*/
|
||||||
|
private void syncCoverState(String deviceSn, com.ruoyi.device.domain.impl.tuohengmqtt.model.RealTimeBasicData data) {
|
||||||
|
try {
|
||||||
|
if (data == null || data.getData() == null || data.getData().getNestDoor() == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
RealTimeBasicData.NestDoorInfo nestDoor = data.getData().getNestDoor();
|
||||||
|
if (nestDoor.getData() == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Integer status = nestDoor.getData().getStatus();
|
||||||
|
if (status == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
log.info("【状态同步】收到舱门状态: sn={}, status={}", deviceSn, status);
|
||||||
|
|
||||||
|
// 根据 status 值更新舱门状态
|
||||||
|
// 1 = 开仓, 2 = 关仓
|
||||||
|
CoverState coverState;
|
||||||
|
if (status == 1) {
|
||||||
|
coverState = CoverState.OPENED;
|
||||||
|
log.info("【状态同步】同步舱门开启状态: sn={}, status={}", deviceSn, status);
|
||||||
|
} else if (status == 2) {
|
||||||
|
coverState = CoverState.CLOSED;
|
||||||
|
log.info("【状态同步】同步舱门关闭状态: sn={}, status={}", deviceSn, status);
|
||||||
|
} else {
|
||||||
|
log.warn("未知的舱门状态值: sn={}, status={}", deviceSn, status);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
stateManager.setCoverState(deviceSn, coverState);
|
||||||
|
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error("同步舱门状态失败: sn={}", deviceSn, e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 定时检查机场心跳超时
|
* 定时检查机场心跳超时
|
||||||
* 每分钟执行一次
|
* 每分钟执行一次
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue