yeg
2026-09-29 b78295e8da96c3e5e76befeef9582ce5273dbb74
battery-device-api/src/main/java/com/battery/device/api/discovery/InMemoryDeviceDiscoveryCandidateStore.java
@@ -11,12 +11,14 @@
    private final Map<String, CabinetCandidate> cabinets = new LinkedHashMap<>();
    private final Map<String, CollectorCandidate> collectors = new LinkedHashMap<>();
    /** 按设备编码 upsert 本轮检测柜观测;本轮未返回的候选保留到逻辑过期。 */
    @Override
    public synchronized void recordCabinets(List<CabinetCandidate> candidates)
    {
        candidates.forEach(item -> cabinets.put(item.deviceCode(), item));
    }
    /** 整体替换指定适配器的采集器候选,使该适配器下已不存在的采集器立即消失。 */
    @Override
    public synchronized void replaceCollectors(String adapterCode, List<CollectorCandidate> candidates)
    {
@@ -24,6 +26,7 @@
        candidates.forEach(item -> collectors.put(item.deviceCode(), item));
    }
    /** 删除指定适配器名下的检测柜与采集器候选;仅供人工重置或联调清理。 */
    @Override
    public synchronized void removeAdapter(String adapterCode)
    {
@@ -31,6 +34,7 @@
        collectors.values().removeIf(item -> item.adapterCode().equals(adapterCode));
    }
    /** 返回指定时刻尚未过期的候选,并清理已过期条目。 */
    @Override
    public synchronized CandidateSnapshot snapshot(Instant now)
    {