From 147428971be43eed90a79f3849f15000d3855390 Mon Sep 17 00:00:00 2001
From: yeg <1347747024@qq.com>
Date: 星期一, 28 九月 2026 15:15:22 +0800
Subject: [PATCH] 实现新威 7.6 直连取数与逐行接收
---
battery-business/src/main/java/com/battery/business/service/impl/DeviceAdapterServiceImpl.java | 25 ++++++++++++++++++++++---
1 files changed, 22 insertions(+), 3 deletions(-)
diff --git a/battery-business/src/main/java/com/battery/business/service/impl/DeviceAdapterServiceImpl.java b/battery-business/src/main/java/com/battery/business/service/impl/DeviceAdapterServiceImpl.java
index b42c954..175558e 100644
--- a/battery-business/src/main/java/com/battery/business/service/impl/DeviceAdapterServiceImpl.java
+++ b/battery-business/src/main/java/com/battery/business/service/impl/DeviceAdapterServiceImpl.java
@@ -32,6 +32,10 @@
private static final String DISABLED = "1";
private static final String READ_ONLY_CAPABILITIES =
"{\"discovery\":true,\"realtimeObservation\":true,\"historyDownload\":true,\"control\":false}";
+ /** 适配器类型按存储形态划分;BTS 保留给开发模拟器与将来的协议路线(ADR-0065)。 */
+ private static final List<String> SUPPORTED_TYPES = List.of("BTS", "NEWARE_MYSQL");
+ /** 直连厂商存储的来源,其通道登记清单是长期事实,候选不按时间过期。 */
+ private static final List<String> PERSISTENT_CANDIDATE_TYPES = List.of("NEWARE_MYSQL");
private final TDeviceAdapterMapper mapper;
private final DeviceAdapterRegistry registry;
@@ -136,7 +140,7 @@
registry.synchronize(toRuntimeConfig(adapter));
AdapterDiscoveryResult result = persistence.discoverForReception(registry, new DiscoverySource(
adapter.getAdapterCode(), adapter.getAdapterId(), adapter.getAdapterName(),
- adapter.getPollIntervalMs()));
+ adapter.getPollIntervalMs(), PERSISTENT_CANDIDATE_TYPES.contains(adapter.getAdapterType())));
mapper.updateDiscoverySuccess(adapterId, result.observedAtUtc());
return result;
}
@@ -214,8 +218,9 @@
adapter.setAdapterType(StringUtils.trim(adapter.getAdapterType()).toUpperCase(Locale.ROOT));
adapter.setHost(StringUtils.trim(adapter.getHost()));
adapter.setTimezoneId(StringUtils.trim(adapter.getTimezoneId()));
+ adapter.setSourceConfig(StringUtils.trim(adapter.getSourceConfig()));
adapter.setRemark(StringUtils.trim(adapter.getRemark()));
- if (!"BTS".equals(adapter.getAdapterType()))
+ if (!SUPPORTED_TYPES.contains(adapter.getAdapterType()))
throw error("不支持的适配器类型", DeviceAdapterErrorCodes.UNSUPPORTED_TYPE);
if (!Boolean.TRUE.equals(adapter.getReadOnly()))
throw error("当前里程碑只允许只读设备适配器", DeviceAdapterErrorCodes.INVALID_CONFIG);
@@ -243,7 +248,21 @@
{
return new AdapterInstanceConfig(adapter.getAdapterCode(), adapter.getAdapterType(), adapter.getHost(),
adapter.getPort(), adapter.getPollIntervalMs(), adapter.getTimezoneId(),
- ENABLED.equals(adapter.getStatus()), parseCapabilities(adapter.getCapabilities()));
+ ENABLED.equals(adapter.getStatus()), parseCapabilities(adapter.getCapabilities()),
+ parseSourceConfig(adapter.getSourceConfig()));
+ }
+
+ /** 来源形态配置只承载非敏感项;连接口令由环境变量或启动参数提供,不入库。 */
+ private static java.util.Map<String, String> parseSourceConfig(String sourceConfig)
+ {
+ if (StringUtils.isBlank(sourceConfig)) return java.util.Map.of();
+ JSONObject value = JSON.parseObject(sourceConfig);
+ if (value == null) return java.util.Map.of();
+ java.util.Map<String, String> result = new java.util.LinkedHashMap<>();
+ value.forEach((key, item) -> {
+ if (item != null) result.put(String.valueOf(key), String.valueOf(item));
+ });
+ return result;
}
private AdapterCapabilities parseCapabilities(String capabilities)
--
Gitblit v1.7.1