|
|
@@ -90,6 +90,7 @@ public class ProjectConfigManager {
|
|
|
private String deviceIp;
|
|
|
private String stationCodeOverride; // 覆盖 yaml 的 stations[0].code
|
|
|
private String lineSnOverride; // 覆盖 yaml 的 line_sn
|
|
|
+ private String serverIpOverride; // 覆盖 yaml 的 server.ip
|
|
|
private final Map<String, Boolean> featuresOverride = new LinkedHashMap<>();
|
|
|
// 设备信息行覆盖:是否启用 + label(寄存器地址不在UI改)
|
|
|
private Boolean deviceRow1EnabledOverride;
|
|
|
@@ -144,6 +145,10 @@ public class ProjectConfigManager {
|
|
|
if (ls != null && !ls.trim().isEmpty()) {
|
|
|
lineSnOverride = ls.trim();
|
|
|
}
|
|
|
+ String sIp = json.getString("serverIpOverride");
|
|
|
+ if (sIp != null && !sIp.trim().isEmpty()) {
|
|
|
+ serverIpOverride = sIp.trim();
|
|
|
+ }
|
|
|
// 设备信息行
|
|
|
JSONObject uiObj = json.getJSONObject("uiOverride");
|
|
|
if (uiObj != null) {
|
|
|
@@ -170,6 +175,7 @@ public class ProjectConfigManager {
|
|
|
root.put("deviceIp", deviceIp);
|
|
|
if (stationCodeOverride != null) root.put("stationCodeOverride", stationCodeOverride);
|
|
|
if (lineSnOverride != null) root.put("lineSnOverride", lineSnOverride);
|
|
|
+ if (serverIpOverride != null) root.put("serverIpOverride", serverIpOverride);
|
|
|
JSONObject uiObj = new JSONObject();
|
|
|
if (deviceRow1EnabledOverride != null) uiObj.put("deviceRow1Enabled", deviceRow1EnabledOverride);
|
|
|
if (deviceRow1LabelOverride != null) uiObj.put("deviceRow1Label", deviceRow1LabelOverride);
|
|
|
@@ -311,6 +317,21 @@ public class ProjectConfigManager {
|
|
|
|
|
|
public String getStationCodeOverride() { return stationCodeOverride; }
|
|
|
public String getLineSnOverride() { return lineSnOverride; }
|
|
|
+ public String getServerIpOverride() { return serverIpOverride; }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 设置服务器(MES)IP 覆盖
|
|
|
+ */
|
|
|
+ public void setServerIpOverride(String ip) {
|
|
|
+ if (ip == null) return;
|
|
|
+ ip = ip.trim();
|
|
|
+ if (ip.isEmpty()) return;
|
|
|
+ if (ip.equalsIgnoreCase(this.serverIpOverride)) return;
|
|
|
+ this.serverIpOverride = ip;
|
|
|
+ save();
|
|
|
+ log.info("[ProjectConfig] 修改服务器IP: {}", ip);
|
|
|
+ fireServerIpChanged(ip);
|
|
|
+ }
|
|
|
|
|
|
public Boolean getDeviceRow1EnabledOverride() { return deviceRow1EnabledOverride; }
|
|
|
public String getDeviceRow1LabelOverride() { return deviceRow1LabelOverride; }
|
|
|
@@ -374,6 +395,7 @@ public class ProjectConfigManager {
|
|
|
public interface Listener {
|
|
|
default void onProjectChanged(Project project) {}
|
|
|
default void onDeviceIpChanged(String newIp) {}
|
|
|
+ default void onServerIpChanged(String newIp) {}
|
|
|
default void onFeaturesChanged() {}
|
|
|
default void onStationChanged() {}
|
|
|
default void onUiChanged() {}
|
|
|
@@ -399,6 +421,12 @@ public class ProjectConfigManager {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ private void fireServerIpChanged(String ip) {
|
|
|
+ for (Listener l : new ArrayList<>(listeners)) {
|
|
|
+ try { l.onServerIpChanged(ip); } catch (Exception e) { log.warn("listener error", e); }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
private void fireFeaturesChanged() {
|
|
|
for (Listener l : new ArrayList<>(listeners)) {
|
|
|
try { l.onFeaturesChanged(); } catch (Exception e) { log.warn("listener error", e); }
|