PMCommandViewModel.cs 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. using OpenSEMI.ClientBase;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. using System.Text;
  6. using System.Threading.Tasks;
  7. using System.Windows;
  8. using FurnaceUI.Models;
  9. using MECF.Framework.Common.OperationCenter;
  10. using MECF.Framework.UI.Client.CenterViews.Editors.Recipe;
  11. using Caliburn.Micro;
  12. using System.Collections.ObjectModel;
  13. using Caliburn.Micro.Core;
  14. using Aitex.Core.Util;
  15. using FurnaceUI.Views.Editors;
  16. namespace FurnaceUI.Views.Operations
  17. {
  18. public class PMCommandViewModel : FurnaceUIViewModelBase
  19. {
  20. public bool IsEnabledAction { get; set; }
  21. [Subscription("PM1.IsExecuteAbortRecipe")]
  22. public bool PM1IsExecuteAbortRecipe { get; set; }
  23. [Subscription("PM1.AbortRecipeName")]
  24. public string PM1AbortRecipeName { get; set; }
  25. [Subscription("PM1.MainRecipeName")]
  26. public string PM1MainRecipeName { get; set; }
  27. [Subscription("PM1.RecipeHold")]
  28. public bool PM1IsRecipeHold { get; set; }
  29. public bool IsHoldButtonEnable => !PM1IsRecipeHold;
  30. public bool IsPermission => this.Permission == 3;
  31. public PMCommandViewModel()
  32. {
  33. }
  34. public void ClickCmd(string cmd)
  35. {
  36. switch (cmd)
  37. {
  38. case "OK":
  39. ((Window)GetView()).DialogResult = true;
  40. break;
  41. case "Cancel":
  42. ((Window)GetView()).DialogResult = false;
  43. break;
  44. default:
  45. break;
  46. }
  47. }
  48. public void Skip()
  49. {
  50. if (!DialogBox.Confirm("Are you sure to skip current step?"))
  51. return;
  52. InvokeClient.Instance.Service.DoOperation($"PM1.RecipeSkipStep", "");
  53. }
  54. public void Jump()
  55. {
  56. if (!DialogBox.Confirm("Are you sure to jump current step?"))
  57. return;
  58. var recipes = new RecipeDataBase();
  59. //if (PM1IsExecuteAbortRecipe)
  60. //{
  61. // recipes.PrefixPath = "Furnace\\Abort";
  62. // recipes.Name = PM1AbortRecipeName;
  63. //}
  64. //else
  65. {
  66. recipes.PrefixPath = "Furnace\\Process";
  67. recipes.Name = PM1MainRecipeName;
  68. }
  69. RecipeProvider _recipeProvider = new RecipeProvider();
  70. recipes.Clear();
  71. var recipeContent = _recipeProvider.LoadRecipe(recipes.PrefixPath, recipes.Name);
  72. if (string.IsNullOrEmpty(recipeContent))
  73. {
  74. MessageBox.Show($"{recipes.PrefixPath}\\{recipes.Name} is empty, please confirm the file is valid.");
  75. return;
  76. }
  77. // recipes.RecipeChamberType = "OriginChamber";
  78. recipes.InitData(recipes.PrefixPath, recipes.Name, recipeContent, "PM1");
  79. var windowManager = IoC.Get<IWindowManager>();
  80. RecipeLoopSetViewModel recipeLoopSetViewModel = new RecipeLoopSetViewModel();
  81. recipeLoopSetViewModel.StepNames = new ObservableCollection<ShowStep>(recipes.Steps.OrderBy(x => x.StepNo).Select(x => new ShowStep() { StepNo = x.StepNo, StepName = x.Name }).ToList());
  82. if ((bool)(windowManager as WindowManager)?.ShowDialogWithTitle(recipeLoopSetViewModel, null, "Jump"))
  83. {
  84. InvokeClient.Instance.Service.DoOperation($"PM1.RecipeJumpStep", recipeLoopSetViewModel.SelectedIndex, recipeLoopSetViewModel.SelectedText.Replace("]","").Replace("[",""));
  85. }
  86. }
  87. public void Hold()
  88. {
  89. if (!DialogBox.Confirm("Are you sure to hold current recipe?"))
  90. return;
  91. InvokeClient.Instance.Service.DoOperation($"PM1.RecipePause", "");
  92. }
  93. public void Release()
  94. {
  95. if (!DialogBox.Confirm("Are you sure to release current recipe?"))
  96. return;
  97. InvokeClient.Instance.Service.DoOperation($"PM1.RecipeContinue", "");
  98. }
  99. public void EmergencyAbort()
  100. {
  101. if (!DialogBox.Confirm("Are you sure to execute Abort?"))
  102. return;
  103. InvokeClient.Instance.Service.DoOperation("PM1.RecipeAbort");
  104. }
  105. }
  106. }