| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130 | using ExcelLibrary.BinaryFileFormat;using FurnaceUI.Models;using MECF.Framework.Common.OperationCenter;using MECF.Framework.UI.Client.CenterViews.Configs.SystemConfig;using MECF.Framework.UI.Client.ClientBase;using Microsoft.DwayneNeed.Numerics;using Newtonsoft.Json;using OpenSEMI.ClientBase;using SciChart.Core.Extensions;using System;using System.Collections.Generic;using System.Collections.ObjectModel;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows;using System.Windows.Controls;using System.Windows.Forms;using System.Xml.Linq;namespace FurnaceUI.Views.Parameter{    public class AUXEditViewModel : FurnaceUIViewModelBase    {        #region 页面构造函数及其重载方法        protected override void OnInitialize()        {            base.OnInitialize();            GetModifyValue();            foreach (var item in TableNodeItems)            {                var key = $"{item.Path}.{item.Name}";                ValueList.Add(new PageValue() { Path = key, CurrentValue = item.CurrentValue, Max = item.Max, Min = item.Min, Type = item.Type });            }        }        #endregion        #region 模型字段        public List<ConfigItem> TableNodeItems { get; set; } = new List<ConfigItem>();        /// </summary>        private bool _isModifyAll = false;        public bool IsModifyAll        {            get { return _isModifyAll; }            set { _isModifyAll = value; this.NotifyOfPropertyChange(nameof(IsModifyAll)); }        }        public ObservableCollection<PageValue> ValueList { get; set; } = new ObservableCollection<PageValue>();        #endregion        private void GetModifyValue()        {            var value = SystemConfigProvider.Instance.GetValueByName("PM1.RecipeEditParameter.AUX.IsModifyAll");            IsModifyAll = bool.Parse(value);        }        public void SaveBtnClick()        {            List<bool> bools = new List<bool>();            foreach (var item in ValueList)            {                var name = item.Path.Split('.').LastOrDefault();                var canModifyAI = !IsModifyAll && name.Equals("AI");                var canModifyUnit = !IsModifyAll && name.Equals("Unit");                var canModifyAO = !IsModifyAll && name.Equals("AO");                if (canModifyAI || canModifyAO || canModifyUnit) continue;                           if (!name.Equals("Unit") && string.IsNullOrEmpty(item.CurrentValue))                {                    DialogBox.ShowWarning($"{name}值不可为空");                    bools.Add(false);                    return;                }                if (item.Type.Equals(DataType.String) || item.Type.Equals(DataType.Unknown))                {                    bools.Add(true);                    continue;                }                double number;                if (!double.TryParse(item.CurrentValue, out number))                {                    DialogBox.ShowWarning($"{name}值必须为double类型");                    bools.Add(false);                    return;                }                if (!IsInRange(number, item.Min, item.Max))                {                    DialogBox.ShowWarning($"{name}值必须位于{item.Min}-{item.Max}之间");                    bools.Add(false);                    return;                }                bools.Add(true);            }            if (bools != null && !bools.Contains(false))            {                foreach (var item in ValueList)                {                    var name = item.Path.Split('.').LastOrDefault();                    var canModifyAI = !IsModifyAll && name.Equals("AI");                    var canModifyUnit = !IsModifyAll && name.Equals("Unit");                    var canModifyAO = !IsModifyAll && name.Equals("AO");                    if (canModifyUnit||canModifyAO||canModifyAI)                    {                        continue;                    }                                      InvokeClient.Instance.Service.DoOperation("System.SetConfig", item.Path, item.CurrentValue);                }                          }             ((Window)GetView()).DialogResult = true;        }        private bool IsInRange(double num, double min, double max)        {            return (num >= min && num <= max);        }        public void CancelBtnClick()        {            ((Window)GetView()).DialogResult = false;        }    }}
 |