ScheduledMaintenanceMonitorViewModel.cs 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168
  1. using Aitex.Core.Util;
  2. using Aitex.Core.Utilities;
  3. using Caliburn.Micro;
  4. using FurnaceUI.Models;
  5. using MECF.Framework.Common.CommonData.EnumData;
  6. using MECF.Framework.Common.DataCenter;
  7. using MECF.Framework.Common.Utilities;
  8. using MECF.Framework.UI.Client.CenterViews.Editors.Recipe;
  9. using MECF.Framework.UI.Client.CenterViews.Editors.Sequence;
  10. using System.Collections.Generic;
  11. using System.Collections.ObjectModel;
  12. using System.Data;
  13. using System.Windows.Documents;
  14. namespace FurnaceUI.Views.Editors
  15. {
  16. public class ScheduledMaintenanceMonitorViewModel : FurnaceUIViewModelBase
  17. {
  18. #region 构造函数
  19. /// <summary>
  20. /// 构造函数
  21. /// </summary>
  22. /// <param name="dataItem"></param>
  23. public ScheduledMaintenanceMonitorViewModel(ScheduleMaintenanceDataItem dataItem)
  24. {
  25. EditModel = CloneUtil.CloneObject(dataItem) as ScheduleMaintenanceDataItem;
  26. EnumLoop<MaintenanceProcessingCommandEnum>.ForEach((item) =>
  27. {
  28. MaintenanceProcessingList.Add(item.ToString());
  29. });
  30. }
  31. private bool _jobAutoStartCommandVisibility = false;
  32. public bool JobAutoStartCommandVisibility
  33. {
  34. get => _jobAutoStartCommandVisibility;
  35. set
  36. {
  37. _jobAutoStartCommandVisibility = value;
  38. NotifyOfPropertyChange("JobAutoStartCommandVisibility");
  39. }
  40. }
  41. private List<string> _maintenanceProcessingList = new List<string>();
  42. public List<string> MaintenanceProcessingList
  43. {
  44. get => _maintenanceProcessingList;
  45. set
  46. {
  47. _maintenanceProcessingList = value;
  48. NotifyOfPropertyChange("MaintenanceProcessingList");
  49. }
  50. }
  51. #endregion
  52. #region 属性 EditModel
  53. /// <summary>
  54. /// EditModel
  55. /// </summary>
  56. public ScheduleMaintenanceDataItem EditModel { get; set; }
  57. #endregion
  58. public bool IsEnable
  59. {
  60. get { return _isEnable; }
  61. set
  62. {
  63. _isEnable = value;
  64. NotifyOfPropertyChange("IsEnable");
  65. }
  66. }
  67. private bool _isEnable;
  68. #region 方法 CurrentValueChange
  69. /// <summary>
  70. /// CurrentValueChange
  71. /// </summary>
  72. public void CurrentValueChange()
  73. {
  74. IsEnable = !IsEnable;
  75. }
  76. #endregion
  77. protected override void InvokeAfterUpdateProperty(Dictionary<string, object> data)
  78. {
  79. if (EditModel != null && !string.IsNullOrEmpty(EditModel.MaintenanceProcessing) && EditModel.MaintenanceProcessing == MaintenanceProcessingCommandEnum.JobAutoStart.ToString())
  80. {
  81. JobAutoStartCommandVisibility = true;
  82. }
  83. else
  84. {
  85. EditModel.AssociationProcessRecipeName = "";
  86. JobAutoStartCommandVisibility = false;
  87. }
  88. }
  89. public void SelectProcessRecipe()
  90. {
  91. RecipeSelectDialogViewModel dialog = new RecipeSelectDialogViewModel();
  92. dialog.DisplayName = "Select Recipe";
  93. var recipeProvider = new RecipeProvider();
  94. var processType = QueryDataClient.Instance.Service.GetConfig($"System.Recipe.SupportedProcessType");
  95. if (processType == null)
  96. {
  97. processType = "Process";
  98. }
  99. var ProcessTypeFileList = new ObservableCollection<ProcessTypeFileItem>();
  100. string[] recipeProcessType = ((string)processType).Split(',');
  101. var type = new ProcessTypeFileItem();
  102. type.ProcessType = recipeProcessType[0];
  103. var prefix = $"Furnace\\{recipeProcessType[0]}";
  104. var recipes = recipeProvider.GetXmlRecipeList(prefix);
  105. type.FileListByProcessType = RecipeSequenceTreeBuilder.BuildFileNode(prefix, "", false, recipes)[0].Files;
  106. ProcessTypeFileList.Add(type);
  107. dialog.ProcessTypeFileList = ProcessTypeFileList;
  108. WindowManager wm = new WindowManager();
  109. bool? bret = wm.ShowDialog(dialog);
  110. if ((bool)bret)
  111. {
  112. EditModel.AssociationProcessRecipeName = dialog.DialogResult;
  113. }
  114. }
  115. #region 方法 ClearCurrentValue
  116. /// <summary>
  117. /// ClearCurrentValue
  118. /// </summary>
  119. public void ClearCurrentValue()
  120. {
  121. if (EditModel != null)
  122. {
  123. EditModel.CurrentValue = 0;
  124. }
  125. }
  126. #endregion
  127. #region 方法 SetSave
  128. public void SetSave()
  129. {
  130. this.TryClose(true);
  131. }
  132. #endregion
  133. #region 方法 SetCancel
  134. public void SetCancel()
  135. {
  136. TryClose();
  137. }
  138. #endregion
  139. }
  140. }