AUXEditViewModel.cs 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  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. if (canModifyAI || canModifyAO || canModifyUnit) continue;
  62. if (!name.Equals("Unit") && string.IsNullOrEmpty(item.CurrentValue))
  63. {
  64. DialogBox.ShowWarning($"{name}值不可为空");
  65. bools.Add(false);
  66. return;
  67. }
  68. if (item.Type.Equals(DataType.String) || item.Type.Equals(DataType.Unknown))
  69. {
  70. bools.Add(true);
  71. continue;
  72. }
  73. double number;
  74. if (!double.TryParse(item.CurrentValue, out number))
  75. {
  76. DialogBox.ShowWarning($"{name}值必须为double类型");
  77. bools.Add(false);
  78. return;
  79. }
  80. if (!IsInRange(number, item.Min, item.Max))
  81. {
  82. DialogBox.ShowWarning($"{name}值必须位于{item.Min}-{item.Max}之间");
  83. bools.Add(false);
  84. return;
  85. }
  86. bools.Add(true);
  87. }
  88. if (bools != null && !bools.Contains(false))
  89. {
  90. foreach (var item in ValueList)
  91. {
  92. var name = item.Path.Split('.').LastOrDefault();
  93. var canModifyAI = !IsModifyAll && name.Equals("AI");
  94. var canModifyUnit = !IsModifyAll && name.Equals("Unit");
  95. var canModifyAO = !IsModifyAll && name.Equals("AO");
  96. if (canModifyUnit||canModifyAO||canModifyAI)
  97. {
  98. continue;
  99. }
  100. InvokeClient.Instance.Service.DoOperation("System.SetConfig", item.Path, item.CurrentValue);
  101. }
  102. }
  103. ((Window)GetView()).DialogResult = true;
  104. }
  105. private bool IsInRange(double num, double min, double max)
  106. {
  107. return (num >= min && num <= max);
  108. }
  109. public void CancelBtnClick()
  110. {
  111. ((Window)GetView()).DialogResult = false;
  112. }
  113. }
  114. }