using Caliburn.Micro; using MECF.Framework.Common.DataCenter; using MECF.Framework.Common.OperationCenter; using MECF.Framework.UI.Client.CenterViews.Editors.Recipe; using MECF.Framework.UI.Client.CenterViews.Editors.Sequence; using MECF.Framework.UI.Client.ClientBase; using System; using System.CodeDom; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Linq; using System.Text; using System.Threading.Tasks; namespace SicUI.Models.RecipeEditors { public enum RoutineType { ATMIdle = 0, VACIdle, ProcessIdle, Pump, Vent, Purge, Clean, ExchangeMOTCS, ExchangeMOTMA, Isolation, LeakCheck, Abort } public class RoutineConfigViewModel : SicModuleUIViewModelBase, ISupportMultipleSystem { public ObservableCollection RoutineTypeList { get; set; } protected override void OnInitialize() { base.OnInitialize(); RoutineTypeList = new ObservableCollection(); RoutineTypeList.Add(QueryDataClient.Instance.Service.GetConfig("PM.PM1.ATMIdleFileName").ToString()); RoutineTypeList.Add(QueryDataClient.Instance.Service.GetConfig("PM.PM1.VACIdleFileName").ToString()); RoutineTypeList.Add(QueryDataClient.Instance.Service.GetConfig("PM.PM1.ProcessIdleFileName").ToString()); RoutineTypeList.Add(QueryDataClient.Instance.Service.GetConfig("PM.PM1.PumpFileName").ToString()); RoutineTypeList.Add(QueryDataClient.Instance.Service.GetConfig("PM.PM1.VentFileName").ToString()); RoutineTypeList.Add(QueryDataClient.Instance.Service.GetConfig("PM.PM1.PurgeFileName").ToString()); RoutineTypeList.Add(QueryDataClient.Instance.Service.GetConfig("PM.PM1.CleanFileName").ToString()); RoutineTypeList.Add(QueryDataClient.Instance.Service.GetConfig("PM.PM1.ExchangeMOTCSFileName").ToString()); RoutineTypeList.Add(QueryDataClient.Instance.Service.GetConfig("PM.PM1.ExchangeMOTMAFileName").ToString()); RoutineTypeList.Add(QueryDataClient.Instance.Service.GetConfig("PM.PM1.IsolationFileName").ToString()); RoutineTypeList.Add(QueryDataClient.Instance.Service.GetConfig("PM.PM1.LeakCheckFileName").ToString()); RoutineTypeList.Add(QueryDataClient.Instance.Service.GetConfig("PM.PM1.AbortFileName").ToString()); } public void Select(string strRoutineType) { RecipeSelectDialogViewModel dialog = new RecipeSelectDialogViewModel(); dialog.DisplayName = "Select Routine"; var recipeProvider = new RecipeProvider(); //这里只需要Routine,不需要Recipe var processType = "Routine"; var ProcessTypeFileList = new ObservableCollection(); string[] recipeProcessType = ((string)processType).Split(','); for (int i = 0; i < recipeProcessType.Length; i++) { var type = new MECF.Framework.UI.Client.CenterViews.Editors.Recipe.ProcessTypeFileItem(); type.ProcessType = recipeProcessType[i]; var prefix = $"Sic\\{recipeProcessType[i]}"; var recipes = recipeProvider.GetXmlRecipeList(prefix); type.FileListByProcessType = RecipeSequenceTreeBuilder.BuildFileNode(prefix, "", false, recipes)[0].Files; ProcessTypeFileList.Add(type); } dialog.ProcessTypeFileList = ProcessTypeFileList; WindowManager wm = new WindowManager(); bool? bret = wm.ShowDialog(dialog); if ((bool)bret) { int index = (int)(RoutineType)(Enum.Parse(typeof(RoutineType), strRoutineType)); RoutineTypeList[index] = dialog.DialogResult; } } public void SaveRoutineConfig() { string RoutineName; for (int i = 0; i < RoutineTypeList.Count; i++) { RoutineName = RoutineType.GetName(typeof(RoutineType), i); RoutineName += "FileName"; InvokeClient.Instance.Service.DoOperation("System.SetConfig", $"PM.PM1.{RoutineName}", RoutineTypeList[i]); } } } }