Sic.Framework-Nanjing-Baishi/MECF.Framework.UI.Client/CenterViews/Editors/Recipe/LoadRecipeHelp.cs

178 lines
5.6 KiB
C#
Raw Normal View History

2023-09-29 10:36:26 +08:00
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;
2023-09-29 10:36:26 +08:00
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; }
2023-09-29 10:36:26 +08:00
public ObservableCollection<string> Chambers { get; set; }
private RecipeData _currentRecipe;
public RecipeData CurrentRecipe
{
get => _currentRecipe;
set
{
_currentRecipe = value;
}
}
public RecipeType CurrentProcessType => _recipeComparViewModel.ProcessTypeFileList[_recipeComparViewModel.ProcessTypeIndexSelection].ProcessType;
2023-09-29 10:36:26 +08:00
public ObservableCollection<string> ChamberType { get; set; }
public string CurrentChamberType => _recipeComparViewModel.ChamberType[_recipeComparViewModel.ChamberTypeIndexSelection];
2023-09-29 10:36:26 +08:00
RecipeComparViewModel _recipeComparViewModel;
2023-09-29 10:36:26 +08:00
public string SelectedChamber { get; set; }
public ObservableCollection<FileNode> SelectRecipeNameList { get; set; } = new ObservableCollection<FileNode>();
public FileNode DGSelectRecipeName { get; set; }
public LoadRecipeHelp(RecipeComparViewModel recipeComparViewModel)
2023-09-29 10:36:26 +08:00
{
_recipeComparViewModel = recipeComparViewModel;
ModuleName = "PM1";
2023-09-29 10:36:26 +08:00
_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<string>() { "Default" };
}
else
{
ChamberType = new ObservableCollection<string>(((string)(chamberType)).Split(','));
}
UpdateRecipeFormat();
2023-09-29 10:36:26 +08:00
}
public void ClearData()
2023-09-29 10:36:26 +08:00
{
//_editMode = EditMode.None;
CurrentRecipe.Clear();
CurrentRecipe.Name = string.Empty;
CurrentRecipe.Description = string.Empty;
}
public async void LoadRecipe(string prefixPath, string recipeName)
2023-09-29 10:36:26 +08:00
{
//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()
2023-09-29 10:36:26 +08:00
{
// 判断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>(((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<string>(new string[] { "PM1" });
//}
//SelectedChamber = Chambers[0];
2023-09-29 10:36:26 +08:00
#region Create RecipeData
var recipeData = new RecipeData(CurrentProcessType);
recipeData.BuildFormat($"Process\\{CurrentProcessType}", ModuleName, BaseApp.Instance.UserContext.RoleName);
2023-09-29 10:36:26 +08:00
//得到当前登录的RoleItem
var role = _roleManager.GetRoleByName(BaseApp.Instance.UserContext.RoleName);
recipeData.ReloadRolePermission(role);
CurrentRecipe = recipeData;
#endregion
}
}
}