From b544d5cccd76735e034c8055918a50927b437474 Mon Sep 17 00:00:00 2001
From: wenxiangchao <wenxiangchao@ihengxin.com.cn>
Date: 星期二, 10 十一月 2026 08:29:04 +0800
Subject: [PATCH] fix: 维护模式重复进入失败与按钮灰死 + Broker 并发验证用例

---
 HMI.AlermInfoManage/Modal/AlarmSettingModal.xaml.cs |   48 +++++++++++++++++++++++++++++++++++-------------
 1 files changed, 35 insertions(+), 13 deletions(-)

diff --git a/HMI.AlermInfoManage/Modal/AlarmSettingModal.xaml.cs b/HMI.AlermInfoManage/Modal/AlarmSettingModal.xaml.cs
index a1ab9e5..8668aee 100644
--- a/HMI.AlermInfoManage/Modal/AlarmSettingModal.xaml.cs
+++ b/HMI.AlermInfoManage/Modal/AlarmSettingModal.xaml.cs
@@ -1,13 +1,15 @@
-锘縰sing HMI.AlarmInfoManage.Entity;
+锘縰sing HMI.Core.Entity;
 using HMI.Core.Util;
 using HMI.UI.DpUtil;
 using HMI.UI.Util;
+using HMI.Util.Alarm;
 using log4net;
 using Panuon.WPF.UI;
 using System;
 using System.Collections.ObjectModel;
 using System.ComponentModel;
 using System.Linq;
+using System.Windows;
 
 namespace HMI.AlarmInfoManage
 {
@@ -23,7 +25,7 @@
             InitializeComponent();
         }
         private ILog log;
-        public string FilePath { get; private set; }
+        private bool isBlock;
         public int DataIndex { get; private set; }
         public AlarmSetting Data { get; private set; }
         public ObservableCollection<AlarmSetting> Datasource { get; private set; }
@@ -72,8 +74,8 @@
         public bool ValidateDBAddress(object value, out string err)
         {
             err = null;
-            int dbAddress = Convert.ToInt32(value);
-            if (Datasource.FirstOrDefault(e => e.DBAddress == dbAddress) != null)
+            var target = Datasource?.FirstOrDefault(e => e.DBAddress == value);
+            if (target != null && target != Data)
             {
                 err = this.lang("App.MustBeUnique", this.lang("Alm.DbAddress"));
                 return false;
@@ -86,24 +88,30 @@
             bool flag = FormGroupHelper.ValidateForm(formPanel);
             if (flag)
             {
-                Data.DBAddress = Convert.ToInt32(dbAddress.Value);
-                Data.StartAddress = Convert.ToInt32(startAddress.Value);
+                Data.DBAddress = dbAddress.Text;
+                Data.StartAddress = startAddress.Text;
                 Data.Length = Convert.ToInt32(length.Value);
+                Data.AlarmCode = TbCode.Text;
+                Data.Level = NiLevel.Value ?? 0d;
+                Data.Description = TbDesc.Text;
             }
             return flag;
         }
 
         public bool? Open(int index, AlarmSetting data,
-            ObservableCollection<AlarmSetting> dataSource,
-            string filePath)
+            ObservableCollection<AlarmSetting> dataSource, bool isBlock)
         {
-            FilePath = filePath;
+            this.isBlock = isBlock;
+            FgCode.Visibility = isBlock ? Visibility.Visible : Visibility.Collapsed;
             DataIndex = index;
             Data = data;
             Datasource = dataSource;
-            dbAddress.Value = Data.DBAddress;
-            startAddress.Value = Data.StartAddress;
+            dbAddress.Text = Data.DBAddress;
+            startAddress.Text = Data.StartAddress;
             length.Value = Data.Length;
+            TbCode.Text = Data.AlarmCode;
+            NiLevel.Value = Data.Level;
+            TbDesc.Text = Data.Description;
             return this.ShowDialog();
         }
 
@@ -122,13 +130,27 @@
         public void InsertData(AlarmSetting data)
         {
             Datasource.Add(data);
-            XmlHelper.SerializeToXml(FilePath, Datasource);
+            if (this.isBlock)
+            {
+                AlarmUtil.UpdateBlockSettings(Datasource);
+            }
+            else
+            {
+                AlarmUtil.UpdateMarkSettings(Datasource);
+            }
         }
 
         public void UpdateData(int index, AlarmSetting data)
         {
             Datasource[index] = data;
-            XmlHelper.SerializeToXml(FilePath, Datasource);
+            if (this.isBlock)
+            {
+                AlarmUtil.UpdateBlockSettings(Datasource);
+            }
+            else
+            {
+                AlarmUtil.UpdateMarkSettings(Datasource);
+            }
         }
     }
 }

--
Gitblit v1.9.1