修改更新逻辑

This commit is contained in:
孙小云 2025-12-17 10:47:02 +08:00
parent 9e6eacaf72
commit d6559bbe58
1 changed files with 36 additions and 12 deletions

View File

@ -89,30 +89,54 @@ public class MachineStateManager {
/**
* 批量更新状态用于心跳同步
* 只更新非UNKNOWN的状态避免覆盖已有状态
*/
public void updateStates(String sn, MachineStates newStates) {
updateStates(sn, newStates, false);
}
/**
* 批量更新状态用于心跳同步
*
* @param sn 设备SN号
* @param newStates 新状态
* @param forceUpdate 是否强制更新所有状态包括UNKNOWN
*/
public void updateStates(String sn, MachineStates newStates, boolean forceUpdate) {
MachineStates currentStates = getStates(sn);
boolean changed = false;
// 更新无人机状态如果不是UNKNOWN或强制更新
if (forceUpdate || newStates.getDroneState() != DroneState.UNKNOWN) {
if (currentStates.getDroneState() != newStates.getDroneState()) {
currentStates.setDroneState(newStates.getDroneState());
changed = true;
}
}
// 更新机巢状态如果不是UNKNOWN或强制更新
if (forceUpdate || newStates.getAirportState() != AirportState.UNKNOWN) {
if (currentStates.getAirportState() != newStates.getAirportState()) {
currentStates.setAirportState(newStates.getAirportState());
changed = true;
}
}
// 更新舱门状态如果不是UNKNOWN或强制更新
if (forceUpdate || newStates.getCoverState() != CoverState.UNKNOWN) {
if (currentStates.getCoverState() != newStates.getCoverState()) {
currentStates.setCoverState(newStates.getCoverState());
changed = true;
}
}
// 更新DRC状态如果不是UNKNOWN或强制更新
if (forceUpdate || newStates.getDrcState() != DrcState.UNKNOWN) {
if (currentStates.getDrcState() != newStates.getDrcState()) {
currentStates.setDrcState(newStates.getDrcState());
changed = true;
}
}
if (changed) {
log.info("设备状态批量更新: sn={}, states={}", sn, currentStates);