AUXEditViewModel.cs 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. using ExcelLibrary.BinaryFileFormat;
  2. using FurnaceUI.Models;
  3. using MECF.Framework.Common.OperationCenter;
  4. using MECF.Framework.UI.Client.CenterViews.Configs.SystemConfig;
  5. using MECF.Framework.UI.Client.ClientBase;
  6. using Microsoft.DwayneNeed.Numerics;
  7. using Newtonsoft.Json;
  8. using OpenSEMI.ClientBase;
  9. using SciChart.Core.Extensions;
  10. using System;
  11. using System.Collections.Generic;
  12. using System.Collections.ObjectModel;
  13. using System.Linq;
  14. using System.Text;
  15. using System.Threading.Tasks;
  16. using System.Windows;
  17. using System.Windows.Controls;
  18. using System.Windows.Forms;
  19. using System.Xml.Linq;
  20. namespace FurnaceUI.Views.Parameter
  21. {
  22. public class AUXEditViewModel : FurnaceUIViewModelBase
  23. {
  24. #region 页面构造函数及其重载方法
  25. protected override void OnInitialize()
  26. {
  27. base.OnInitialize();
  28. GetModifyValue();
  29. foreach (var item in TableNodeItems)
  30. {
  31. var key = $"{item.Path}.{item.Name}";
  32. ValueList.Add(new PageValue() { Path = key, CurrentValue = item.CurrentValue, Max = item.Max, Min = item.Min, Type = item.Type });
  33. }
  34. }
  35. #endregion
  36. #region 模型字段
  37. public List<ConfigItem> TableNodeItems { get; set; } = new List<ConfigItem>();
  38. /// </summary>
  39. private bool _isModifyAll = false;
  40. public bool IsModifyAll
  41. {
  42. get { return _isModifyAll; }
  43. set { _isModifyAll = value; this.NotifyOfPropertyChange(nameof(IsModifyAll)); }
  44. }
  45. public ObservableCollection<PageValue> ValueList { get; set; } = new ObservableCollection<PageValue>();
  46. #endregion
  47. private void GetModifyValue()
  48. {
  49. var value = SystemConfigProvider.Instance.GetValueByName("PM1.RecipeEditParameter.AUX.IsModifyAll");
  50. IsModifyAll = bool.Parse(value);
  51. }
  52. public void SaveBtnClick()
  53. {
  54. List<bool> bools = new List<bool>();
  55. foreach (var item in ValueList)
  56. {
  57. var name = item.Path.Split('.').LastOrDefault();
  58. var canModifyAI = !IsModifyAll && name.Equals("AI");
  59. var canModifyUnit = !IsModifyAll && name.Equals("Unit");
  60. var canModifyAO = !IsModifyAll && name.Equals("AO");
  61. var canModifyInstalled = name.Equals("IsInstalled");
  62. if (canModifyAI || canModifyAO || canModifyUnit || canModifyInstalled) continue;
  63. if (!name.Equals("Unit") && string.IsNullOrEmpty(item.CurrentValue))
  64. {
  65. DialogBox.ShowWarning($"{name}值不可为空");
  66. bools.Add(false);
  67. return;
  68. }
  69. if (item.Type.Equals(DataType.String) || item.Type.Equals(DataType.Unknown))
  70. {
  71. bools.Add(true);
  72. continue;
  73. }
  74. double number;
  75. if (!double.TryParse(item.CurrentValue, out number))
  76. {
  77. DialogBox.ShowWarning($"{name}值必须为double类型");
  78. bools.Add(false);
  79. return;
  80. }
  81. if (!IsInRange(number, item.Min, item.Max))
  82. {
  83. DialogBox.ShowWarning($"{name}值必须位于{item.Min}-{item.Max}之间");
  84. bools.Add(false);
  85. return;
  86. }
  87. bools.Add(true);
  88. }
  89. if (bools != null && !bools.Contains(false))
  90. {
  91. foreach (var item in ValueList)
  92. {
  93. var name = item.Path.Split('.').LastOrDefault();
  94. var canModifyAI = !IsModifyAll && name.Equals("AI");
  95. var canModifyUnit = !IsModifyAll && name.Equals("Unit");
  96. var canModifyAO = !IsModifyAll && name.Equals("AO");
  97. var canModifyInstalled = name.Equals("IsInstalled");
  98. if (canModifyUnit || canModifyAO || canModifyAI || canModifyInstalled)
  99. {
  100. continue;
  101. }
  102. InvokeClient.Instance.Service.DoOperation("System.SetConfig", item.Path, item.CurrentValue);
  103. }
  104. }
  105. ((Window)GetView()).DialogResult = true;
  106. }
  107. private bool IsInRange(double num, double min, double max)
  108. {
  109. return (num >= min && num <= max);
  110. }
  111. public void CancelBtnClick()
  112. {
  113. ((Window)GetView()).DialogResult = false;
  114. }
  115. }
  116. }