修改更新逻辑

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,29 +89,53 @@ public class MachineStateManager {
/** /**
* 批量更新状态用于心跳同步 * 批量更新状态用于心跳同步
* 只更新非UNKNOWN的状态避免覆盖已有状态
*/ */
public void updateStates(String sn, MachineStates newStates) { 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); MachineStates currentStates = getStates(sn);
boolean changed = false; boolean changed = false;
if (currentStates.getDroneState() != newStates.getDroneState()) { // 更新无人机状态如果不是UNKNOWN或强制更新
currentStates.setDroneState(newStates.getDroneState()); if (forceUpdate || newStates.getDroneState() != DroneState.UNKNOWN) {
changed = true; if (currentStates.getDroneState() != newStates.getDroneState()) {
currentStates.setDroneState(newStates.getDroneState());
changed = true;
}
} }
if (currentStates.getAirportState() != newStates.getAirportState()) { // 更新机巢状态如果不是UNKNOWN或强制更新
currentStates.setAirportState(newStates.getAirportState()); if (forceUpdate || newStates.getAirportState() != AirportState.UNKNOWN) {
changed = true; if (currentStates.getAirportState() != newStates.getAirportState()) {
currentStates.setAirportState(newStates.getAirportState());
changed = true;
}
} }
if (currentStates.getCoverState() != newStates.getCoverState()) { // 更新舱门状态如果不是UNKNOWN或强制更新
currentStates.setCoverState(newStates.getCoverState()); if (forceUpdate || newStates.getCoverState() != CoverState.UNKNOWN) {
changed = true; if (currentStates.getCoverState() != newStates.getCoverState()) {
currentStates.setCoverState(newStates.getCoverState());
changed = true;
}
} }
if (currentStates.getDrcState() != newStates.getDrcState()) { // 更新DRC状态如果不是UNKNOWN或强制更新
currentStates.setDrcState(newStates.getDrcState()); if (forceUpdate || newStates.getDrcState() != DrcState.UNKNOWN) {
changed = true; if (currentStates.getDrcState() != newStates.getDrcState()) {
currentStates.setDrcState(newStates.getDrcState());
changed = true;
}
} }
if (changed) { if (changed) {