using MECF.Framework.Common.DataCenter; using MECF.Framework.UI.Client.CenterViews.Configs.Roles; using MECF.Framework.UI.Client.CenterViews.Editors.Sequence; using MECF.Framework.UI.Client.ClientBase; using MECF.Framework.UI.Client.RecipeEditorLib.RecipeModel; using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Threading; using System.Windows; using MECF.Framework.Common.Equipment; namespace MECF.Framework.UI.Client.CenterViews.Editors.Recipe { public class LoadRecipeHelp { private readonly RoleManager _roleManager = new(); private readonly RecipeType _fileTypes; private readonly bool _isFolderOnly; private readonly bool _isShowRootNode; private EditMode _editMode; private readonly RecipeProvider _recipeProvider; private string ModuleName { get; set; } public ObservableCollection Chambers { get; set; } private RecipeData _currentRecipe; public RecipeData CurrentRecipe { get => _currentRecipe; set { _currentRecipe = value; } } public RecipeType CurrentProcessType => _recipeComparViewModel.ProcessTypeFileList[_recipeComparViewModel.ProcessTypeIndexSelection].ProcessType; public ObservableCollection ChamberType { get; set; } public string CurrentChamberType => _recipeComparViewModel.ChamberType[_recipeComparViewModel.ChamberTypeIndexSelection]; RecipeComparViewModel _recipeComparViewModel; public string SelectedChamber { get; set; } public ObservableCollection SelectRecipeNameList { get; set; } = new ObservableCollection(); public FileNode DGSelectRecipeName { get; set; } public LoadRecipeHelp(RecipeComparViewModel recipeComparViewModel) { _recipeComparViewModel = recipeComparViewModel; ModuleName = "PM1"; _fileTypes = RecipeType.Process | RecipeType.Routine; _isFolderOnly = false; _isShowRootNode = false; _recipeProvider = new RecipeProvider(); var chamberType = QueryDataClient.Instance.Service.GetConfig("System.Recipe.SupportedChamberType"); if (chamberType == null) { ChamberType = new ObservableCollection() { "Default" }; } else { ChamberType = new ObservableCollection(((string)(chamberType)).Split(',')); } UpdateRecipeFormat(); } public void ClearData() { //_editMode = EditMode.None; CurrentRecipe.Clear(); CurrentRecipe.Name = string.Empty; CurrentRecipe.Description = string.Empty; } public async void LoadRecipe(string prefixPath, string recipeName) { //IsLoading = true; CurrentRecipe.Clear(); CurrentRecipe.Steps.Save(); // 重置为已保存状态 var recipeContent = _recipeProvider.ReadRecipeFile(prefixPath, recipeName); if (string.IsNullOrEmpty(recipeContent)) { MessageBox.Show($"{prefixPath}\\{recipeName} is empty, please confirm the file is valid.", "Error", MessageBoxButton.OK, MessageBoxImage.Error); return ; } await CurrentRecipe.LoadFile(prefixPath, recipeName, recipeContent, SelectedChamber, GetLoadingDispatcher()); //_editMode = EditMode.Normal; //IsLoading = false; } public static Dispatcher GetLoadingDispatcher() { // 判断Step呈现方式 var isCascadeLoading = (bool)QueryDataClient.Instance.Service.GetConfig("System.RecipeCascadeLoading"); var dispatcher = isCascadeLoading ? Dispatcher.CurrentDispatcher : null; return dispatcher; } public void UpdateRecipeFormat() { //var chamber = QueryDataClient.Instance.Service.GetConfig("System.Recipe.ChamberModules"); //if (chamber == null) //{ // chamber = "PM1"; //} //Chambers = new ObservableCollection(((string)chamber).Split(',')); //if (Chambers.Count > 1) //{ // for (var i = 0; i < Chambers.Count; i++) // { // var isPmInstall = // (bool)QueryDataClient.Instance.Service.GetConfig( // $"System.SetUp.Is{Chambers[i].ToString()}Installed"); // { // if (!isPmInstall) // { // Chambers.RemoveAt(i); // } // } // } //} //if (Chambers.Count == 0) //{ // Chambers = new ObservableCollection(new string[] { "PM1" }); //} //SelectedChamber = Chambers[0]; #region Create RecipeData var recipeData = new RecipeData(CurrentProcessType); recipeData.BuildFormat($"Process\\{CurrentProcessType}", ModuleName, BaseApp.Instance.UserContext.RoleName); //得到当前登录的RoleItem var role = _roleManager.GetRoleByName(BaseApp.Instance.UserContext.RoleName); recipeData.ReloadRolePermission(role); CurrentRecipe = recipeData; #endregion } } }