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 TableNodeItems { get; set; } = new List(); /// private bool _isModifyAll = false; public bool IsModifyAll { get { return _isModifyAll; } set { _isModifyAll = value; this.NotifyOfPropertyChange(nameof(IsModifyAll)); } } public ObservableCollection ValueList { get; set; } = new ObservableCollection(); #endregion private void GetModifyValue() { var value = SystemConfigProvider.Instance.GetValueByName("PM1.RecipeEditParameter.AUX.IsModifyAll"); IsModifyAll = bool.Parse(value); } public void SaveBtnClick() { List bools = new List(); 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"); var canModifyInstalled = name.Equals("IsInstalled"); if (canModifyAI || canModifyAO || canModifyUnit || canModifyInstalled) 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"); var canModifyInstalled = name.Equals("IsInstalled"); if (canModifyUnit || canModifyAO || canModifyAI || canModifyInstalled) { 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; } } }