alielie
2026-06-04 771a0e7b6b1276087515bbe94de28358cb92963b
HMI.AlermInfoManage/AlarmSettingList.xaml.cs
@@ -1,14 +1,13 @@
using HMI.AlarmInfoManage.Entity;
using HMI.Core.Entity;
using HMI.Core.Util;
using HMI.UI.Util;
using HMI.Util;
using HMI.Util.Alarm;
using log4net;
using Microsoft.Win32;
using NPOI.SS.Formula.Functions;
using Panuon.WPF.UI;
using System;
using System.Collections.ObjectModel;
using System.IO;
using System.Linq;
using System.Windows;
using System.Windows.Controls;
@@ -21,28 +20,21 @@
    public partial class AlarmSettingList : WindowX
    {
        private ILog log;
        public AlarmSettingList(string blockFile, string markFile, ObservableCollection<AlarmSetting> datasource,
            ObservableCollection<AlarmSetting> markDatasource,
            ILog log)
        public AlarmSettingList(ILog log)
        {
            this.blockFile = blockFile;
            this.markFile = markFile;
            Datasource = datasource;
            MarkDatasource = markDatasource;
            BlockDatasource = AlarmUtil.BlockSettings;
            MarkDatasource = AlarmUtil.MarkSettings;
            this.log = log;
            DataContext = this;
            InitializeComponent();
        }
        private readonly string blockFile;
        private readonly string markFile;
        private ObservableCollection<AlarmSetting> blockDatasource;
        private ObservableCollection<AlarmSetting> datasource;
        public ObservableCollection<AlarmSetting> Datasource
        public ObservableCollection<AlarmSetting> BlockDatasource
        {
            get => datasource;
            set { Set(ref datasource, value); }
            get => blockDatasource;
            set { Set(ref blockDatasource, value); }
        }
        private ObservableCollection<AlarmSetting> markDatasource;
@@ -89,7 +81,7 @@
                    DeleteBatchData();
                    break;
                case "editBtn":
                    EditData(ItemIndex == 0 ? Datasource.IndexOf(data) : MarkDatasource.IndexOf(data), data);
                    EditData(ItemIndex == 0 ? BlockDatasource.IndexOf(data) : MarkDatasource.IndexOf(data), data);
                    break;
                case "exportBtn":
                    ExportData();
@@ -98,7 +90,7 @@
                    ImportData();
                    break;
                case "delBtn":
                    DeleteData(ItemIndex == 0 ? Datasource.IndexOf(data) : MarkDatasource.IndexOf(data));
                    DeleteData(ItemIndex == 0 ? BlockDatasource.IndexOf(data) : MarkDatasource.IndexOf(data));
                    break;
                default:
                    break;
@@ -107,55 +99,21 @@
        private void LoadData()
        {
            try
            {
                if (File.Exists(blockFile))
                {
                    Datasource =
                        XmlHelper.DeserializeFromXml<ObservableCollection<AlarmSetting>>(blockFile);
                }
                else
                {
                    Datasource = new ObservableCollection<AlarmSetting>();
                }
            }
            catch (Exception ex)
            {
                Datasource = new ObservableCollection<AlarmSetting>();
                ToastHelper.Error(this, $"{this.lang("App.LoadFailed")}: {ex.Message}");
            }
            try
            {
                if (File.Exists(markFile))
                {
                    MarkDatasource =
                        XmlHelper.DeserializeFromXml<ObservableCollection<AlarmSetting>>(markFile);
                }
                else
                {
                    MarkDatasource = new ObservableCollection<AlarmSetting>();
                }
            }
            catch (Exception ex)
            {
                MarkDatasource = new ObservableCollection<AlarmSetting>();
                ToastHelper.Error(this, $"{this.lang("App.LoadFailed")}: {ex.Message}");
            }
            BlockDatasource = AlarmUtil.BlockSettings;
            MarkDatasource = AlarmUtil.MarkSettings;
        }
        private void AddData(AlarmSetting data)
        {
            try
            {
                var file = ItemIndex == 0 ? blockFile : markFile;
                var temp = ItemIndex == 0 ? this.lang("Alm.DbBlockAlarm") : this.lang("Alm.TagAlarm");
                var modal = new AlarmSettingModal(log)
                {
                    Title = $"{this.lang("App.Add")}{temp}",
                    Owner = Window.GetWindow(this),
                };
                if (modal.Open(-1, data, ItemIndex == 0 ? Datasource : MarkDatasource, file, ItemIndex != 0) == true)
                if (modal.Open(-1, data, ItemIndex == 0 ? BlockDatasource : MarkDatasource, ItemIndex == 0) == true)
                {
                    LoadData();
                }
@@ -171,14 +129,13 @@
        {
            try
            {
                var file = ItemIndex == 0 ? blockFile : markFile;
                var temp = ItemIndex == 0 ? this.lang("Alm.DbBlockAlarm") : this.lang("Alm.TagAlarm");
                var modal = new AlarmSettingModal(log)
                {
                    Title = $"{this.lang("App.Edit")}{temp}",
                    Owner = Window.GetWindow(this),
                };
                if (modal.Open(index, data, ItemIndex == 0 ? Datasource : MarkDatasource, file, ItemIndex != 0) == true)
                if (modal.Open(index, data, ItemIndex == 0 ? BlockDatasource : MarkDatasource, ItemIndex == 0) == true)
                {
                    LoadData();
                }
@@ -201,7 +158,7 @@
                };
                if (sfd.ShowDialog() == true)
                {
                    ExcelHelper.ExportExcel(sfd.FileName, ItemIndex == 0 ? Datasource : MarkDatasource);
                    ExcelHelper.ExportExcel(sfd.FileName, ItemIndex == 0 ? BlockDatasource : MarkDatasource);
                }
            }
            catch (Exception ex)
@@ -225,16 +182,14 @@
                        ExcelHelper.ReadFromExcel<AlarmSetting>(ofd.FileName));
                    if (ItemIndex == 0)
                    {
                        Datasource = datasource;
                        AlarmUtil.UpdateBlockSettings(datasource);
                        BlockDatasource = AlarmUtil.BlockSettings;
                    }
                    else
                    {
                        MarkDatasource = datasource;
                        AlarmUtil.UpdateMarkSettings(datasource);
                        MarkDatasource = AlarmUtil.MarkSettings;
                    }
                    var file = ItemIndex == 0 ? blockFile : markFile;
                    var temp = ItemIndex == 0 ? Datasource : MarkDatasource;
                    XmlHelper.SerializeToXml(file, temp);
                    LoadData();
                }
            }
            catch (Exception ex)
@@ -250,11 +205,18 @@
            {
                if (MsgBoxHelper.WarnMessage(Window.GetWindow(this), this.lang("HMI.MakeSureDeleteThis")) == MessageBoxResult.OK)
                {
                    var file = ItemIndex == 0 ? blockFile : markFile;
                    var temp = XmlHelper.DeepClone(ItemIndex == 0 ? Datasource : MarkDatasource);
                    bool isBlock = ItemIndex == 0;
                    var temp = XmlHelper.DeepClone(isBlock ? BlockDatasource : MarkDatasource);
                    temp.RemoveAt(index);
                    XmlHelper.SerializeToXml(file, temp);
                    if (isBlock)
                    {
                        AlarmUtil.UpdateBlockSettings(temp);
                    }
                    else
                    {
                        AlarmUtil.UpdateMarkSettings(temp);
                    }
                    LoadData();
                }
            }
@@ -268,7 +230,7 @@
        {
            try
            {
                var temp = (ItemIndex == 0 ? Datasource : MarkDatasource).Where(e => e.IsSelected).ToList();
                var temp = (ItemIndex == 0 ? BlockDatasource : MarkDatasource).Where(e => e.IsSelected).ToList();
                if (temp == null || temp.Count <= 0)
                {
                    ToastHelper.Warning(Window.GetWindow(this), this.lang("HMI.NoDeleteData"));
@@ -278,9 +240,16 @@
                if (MsgBoxHelper.WarnMessage(Window.GetWindow(this), this.lang("HMI.MakeSureDeletes", temp.Count))
                    == MessageBoxResult.OK)
                {
                    var file = ItemIndex == 0 ? blockFile : markFile;
                    temp = (ItemIndex == 0 ? Datasource : MarkDatasource).Where(e => !e.IsSelected).ToList();
                    XmlHelper.SerializeToXml(file, temp);
                    bool isBlock = ItemIndex == 0;
                    temp = (isBlock ? BlockDatasource : MarkDatasource).Where(e => !e.IsSelected).ToList();
                    if (isBlock)
                    {
                        AlarmUtil.UpdateBlockSettings(temp);
                    }
                    else
                    {
                        AlarmUtil.UpdateMarkSettings(temp);
                    }
                    LoadData();
                }
            }