alielie
2026-06-04 771a0e7b6b1276087515bbe94de28358cb92963b
HMI.ParameterManage/ParameterManage.xaml.cs
@@ -1,10 +1,16 @@
using System.IO;
using HMI.Base;
using HMI.Core.Entity;
using HMI.Core.Manager;
using HMI.Core.Util;
using HMI.ParameterManage.Model;
using HMI.UI.Util;
using NPOI.POIFS.NIO;
using NPOI.SS.Formula.Functions;
using System.Linq;
using System.Text.RegularExpressions;
using System.Windows;
using System.Windows.Controls;
using HMI.Base;
using HMI.Core.Util;
using HMI.ParameterManage.Entity;
using HMI.UI.Util;
using System.Windows.Markup;
namespace HMI.ParameterManage
{
@@ -13,8 +19,7 @@
    /// </summary>
    public partial class ParameterManage : PluginControl
    {
        private ControlModel Model;
        private SqliteHelper SqliteHelper;
        private XmlModel Model;
        public ParameterManage()
        {
@@ -23,37 +28,14 @@
        public override void InitFinish()
        {
            string dbpath = Path.Combine(BaseFolder, "ParameterManage.db");
            if (!File.Exists(dbpath))
            {
                SqliteHelper.CreateDatabase(dbpath);
            }
            SqliteHelper = new SqliteHelper(dbpath);
            SqliteHelper.ExecuteSql(@"CREATE TABLE IF NOT EXISTS product (
                    id INTEGER PRIMARY KEY AUTOINCREMENT,
                    name TEXT NOT NULL,
                    isMaster INTEGER,
                    parentId INTEGER,
                    UNIQUE(name)
                    );
CREATE TABLE IF NOT EXISTS parameter (
                    id INTEGER PRIMARY KEY AUTOINCREMENT,
                    name TEXT NOT NULL,
                    value TEXT,
                    unit TEXT,
                    description TEXT,
                    pGroup TEXT,
                    productName TEXT,
                    UNIQUE(productName,name)
                    );
");
            Model = new ControlModel(SqliteHelper);
            Model = new XmlModel(BaseFolder);
            DataContext = Model;
        }
        private void UserControl_Loaded(object sender, RoutedEventArgs e)
        {
            Model.LoadProducts();
            Model.LoadParameters();
            Loaded -= UserControl_Loaded;
        }
@@ -63,7 +45,19 @@
            switch (btn.Name)
            {
                case "addBtn":
                    OpenAddDialog();
                    OpenProductDialog(null);
                    break;
                case "refreshBtn":
                    Model.LoadProducts();
                    break;
                case "editProductBtn":
                    OpenProductDialog((ProductData)btn.DataContext);
                    break;
                case "delProductBtn":
                    TryDeleteProduct((ProductData)btn.DataContext);
                    break;
                case "delBatchBtn":
                    TryDeleteProducts();
                    break;
                case "refrshBtn":
                    Model.LoadProducts();
@@ -77,20 +71,25 @@
                case "editParameterBtn":
                    OpenAddParameterDialog((ParameterData)btn.DataContext);
                    break;
                case "delParameterBtn":
                    TryDeleteParameter((ParameterData)btn.DataContext);
                    break;
                case "deleteBatchParameterBtn":
                    TryDeleteParameters();
                    break;
                default:
                    break;
            }
        }
        private void OpenAddDialog()
        private void OpenProductDialog(ProductData data)
        {
            var win = new ProductModal
            var win = new ProductModal(Model)
            {
                Title = "新增产品",
                Title = data == null ? this.lang("Pm.Product.Add") : this.lang("Pm.Product.Edit"),
                Owner = Window.GetWindow(this),
                sqliteHelper = SqliteHelper
            };
            if (win.Open(new ProductData()) == true)
            if (win.Open(data ?? new ProductData(), data != null) == true)
            {
                Model.LoadProducts();
            }
@@ -100,20 +99,90 @@
        {
            if (Model.SelectedProduct == null)
            {
                ToastHelper.Warning(Window.GetWindow(this), "请先选择一项产品");
                ToastHelper.Warning(Window.GetWindow(this), this.lang("Pm.PleaseSelectProduct"));
                return;
            }
            var win = new ParameterModal
            //var win = new ParameterModal(Model)
            //{
            //    Title = data == null ? this.lang("Pm.Parameter.Add") : this.lang("Pm.Parameter.Edit"),
            //    Owner = Window.GetWindow(this),
            //};
            //if (win.Open(Model.SelectedProduct.Name, data ?? new ParameterData { ProductName = Model.SelectedProduct.Name }, Model.groups) == true)
            //{
            //    Model.LoadParameters();
            //}
            SettingModal modal = new SettingModal()
            {
                Title = data == null ? "新增参数" : "编辑参数",
                Owner = Window.GetWindow(this),
                sqliteHelper = SqliteHelper
                Title = data == null ? this.lang("Pm.Parameter.Add") : this.lang("Pm.Parameter.Edit"),
                Owner = Window.GetWindow(this)
            };
            if (win.Open(data ?? new ParameterData { ProductName = Model.SelectedProduct.Name }) == true)
            var target = data ?? new ParameterData();
            if (modal.Open(target, Model.Parameters, Model.groups, Model.SelectedProduct.Name) == true)
            {
                //if (index == -1)
                //{
                //    Datasource.Add(modal.Data);
                //    ParameterManager.SaveCommonParameter(Datasource);
                //}
                //else
                //{
                //    ParameterManager.SaveCommonParameter(Datasource);
                //}
                Model.SaveOrUpdateParameter(target);
                Model.LoadParameters();
            }
        }
        private void TryDeleteProduct(ProductData data)
        {
            if (MsgBoxHelper.WarnMessage(Window.GetWindow(this), this.lang("HMI.MakeSureDeleteSingle", data.Name))
                == MessageBoxResult.OK)
            {
                Model.DeleteProduct(data);
                Model.LoadProducts();
            }
        }
        private void TryDeleteProducts()
        {
            var temp = Model.Products.Where(p => p.IsSelected).Count();
            if (temp <= 0)
            {
                this.Warning(this.lang("HMI.NoDeleteData"));
                return;
            }
            if (MsgBoxHelper.WarnMessage(Window.GetWindow(this), this.lang("HMI.MakeSureDeletes", temp))
                == MessageBoxResult.OK)
            {
                Model.DeleteProducts();
                Model.LoadProducts();
            }
        }
        private void TryDeleteParameter(ParameterData data)
        {
            if (MsgBoxHelper.WarnMessage(Window.GetWindow(this), this.lang("HMI.MakeSureDeleteSingle", data.Name)) == MessageBoxResult.OK)
            {
                Model.DeleteParameter(data);
                Model.LoadParameters();
            }
        }
        private void TryDeleteParameters()
        {
            var temp = Model.Parameters.Where(p => p.IsSelected).Count();
            if (temp <= 0)
            {
                this.Warning(this.lang("HMI.NoDeleteData"));
                return;
            }
            if (MsgBoxHelper.WarnMessage(Window.GetWindow(this), this.lang("HMI.MakeSureDeletes", temp))
                == MessageBoxResult.OK)
            {
                Model.DeleteParameters();
                Model.LoadParameters();
            }
        }
    }
}