From 7259e265b9237286996b09da03038ea5a133e1e0 Mon Sep 17 00:00:00 2001
From: yeg <1347747024@qq.com>
Date: 星期六, 05 九月 2026 17:45:07 +0800
Subject: [PATCH] 收敛模拟器为设备事实与实时观测
---
battery-business/src/main/java/com/battery/business/service/impl/DeviceDiscoveryPersistenceService.java | 9 +++++++++
1 files changed, 9 insertions(+), 0 deletions(-)
diff --git a/battery-business/src/main/java/com/battery/business/service/impl/DeviceDiscoveryPersistenceService.java b/battery-business/src/main/java/com/battery/business/service/impl/DeviceDiscoveryPersistenceService.java
index f2f4e1c..94dfd63 100644
--- a/battery-business/src/main/java/com/battery/business/service/impl/DeviceDiscoveryPersistenceService.java
+++ b/battery-business/src/main/java/com/battery/business/service/impl/DeviceDiscoveryPersistenceService.java
@@ -68,6 +68,15 @@
/** 发现失败或返回空拓扑时,清除该适配器下已登记设备的过期运行事实。 */
public void markUnavailable(String adapterCode)
{
+ Instant failedAt = Instant.now();
+ // 失败立即撤下旧测量,但保留来源身份,不能等候选 TTL 到期才停止展示成功值。
+ candidateStore.recordCabinets(candidateStore.snapshot(failedAt).cabinets().stream()
+ .filter(item -> item.adapterCode().equals(adapterCode))
+ .map(item -> new CabinetCandidate(item.adapterCode(), item.adapterId(), item.deviceCode(),
+ item.devtype(), item.devid(), item.ip(), item.mac(), item.name(), item.manufacturer(), item.model(),
+ item.channels().stream().map(channel -> new ChannelCandidate(channel.identity(), false,
+ DeviceWorkStatus.UNOBSERVABLE, failedAt)).toList(), failedAt, item.expiresAt()))
+ .toList());
detectionCabinetMapper.markRegisteredFactsUnobservable(adapterCode);
detectionCabinetMapper.markRegisteredCabinetsOffline(adapterCode);
}
--
Gitblit v1.7.1