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-device-api/src/main/java/com/battery/device/api/registry/AdapterInstanceConfig.java |   21 ++++++++++++++++++++-
 1 files changed, 20 insertions(+), 1 deletions(-)

diff --git a/battery-device-api/src/main/java/com/battery/device/api/registry/AdapterInstanceConfig.java b/battery-device-api/src/main/java/com/battery/device/api/registry/AdapterInstanceConfig.java
index 389645a..fc99987 100644
--- a/battery-device-api/src/main/java/com/battery/device/api/registry/AdapterInstanceConfig.java
+++ b/battery-device-api/src/main/java/com/battery/device/api/registry/AdapterInstanceConfig.java
@@ -2,6 +2,7 @@
 
 import java.time.ZoneId;
 import java.util.Locale;
+import java.util.Map;
 import java.util.Objects;
 import com.battery.device.api.model.AdapterCapabilities;
 
@@ -14,8 +15,12 @@
         int pollIntervalMs,
         String timezoneId,
         boolean enabled,
-        AdapterCapabilities capabilities)
+        AdapterCapabilities capabilities,
+        Map<String, String> sourceConfig)
 {
+    /**
+     * 来源形态配置按存储形态互不相交,只承载非敏感项;连接口令由环境变量或启动参数提供,不下沉到数据库。
+     */
     public AdapterInstanceConfig
     {
         adapterCode = requireText(adapterCode, "adapterCode");
@@ -23,6 +28,7 @@
         host = requireText(host, "host");
         timezoneId = requireText(timezoneId, "timezoneId");
         capabilities = Objects.requireNonNull(capabilities, "capabilities");
+        sourceConfig = sourceConfig == null ? Map.of() : Map.copyOf(sourceConfig);
         if (port < 1 || port > 65535) throw new IllegalArgumentException("port must be between 1 and 65535");
         if (pollIntervalMs < 1) throw new IllegalArgumentException("pollIntervalMs must be positive");
         ZoneId.of(timezoneId);
@@ -30,6 +36,19 @@
             throw new IllegalArgumentException("MVP adapter must support discovery and remain read-only");
     }
 
+    /** 兼容不含来源形态配置的既有装配。 */
+    public AdapterInstanceConfig(String adapterCode, String adapterType, String host, int port, int pollIntervalMs,
+            String timezoneId, boolean enabled, AdapterCapabilities capabilities)
+    {
+        this(adapterCode, adapterType, host, port, pollIntervalMs, timezoneId, enabled, capabilities, Map.of());
+    }
+
+    /** 读取来源形态的非敏感配置项;缺少该项时返回空值,是否必需由适配器决定。 */
+    public String sourceOption(String key)
+    {
+        return sourceConfig.get(key);
+    }
+
     private static String requireText(String value, String field)
     {
         String normalized = Objects.requireNonNull(value, field).trim();

--
Gitblit v1.7.1