Sic04/SicUI/Models/RecipeEditors/RoutineConfigViewModel.cs

104 lines
4.3 KiB
C#

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<string> RoutineTypeList { get; set; }
protected override void OnInitialize()
{
base.OnInitialize();
RoutineTypeList = new ObservableCollection<string>();
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<MECF.Framework.UI.Client.CenterViews.Editors.ProcessTypeFileItem>();
string[] recipeProcessType = ((string)processType).Split(',');
for (int i = 0; i < recipeProcessType.Length; i++)
{
var type = new MECF.Framework.UI.Client.CenterViews.Editors.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]);
}
}
}
}