178 lines
5.6 KiB
C#
178 lines
5.6 KiB
C#
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<string> Chambers { get; set; }
|
|
|
|
private RecipeData _currentRecipe;
|
|
public RecipeData CurrentRecipe
|
|
{
|
|
get => _currentRecipe;
|
|
set
|
|
{
|
|
_currentRecipe = value;
|
|
|
|
}
|
|
}
|
|
|
|
|
|
public RecipeType CurrentProcessType => _recipeComparViewModel.ProcessTypeFileList[_recipeComparViewModel.ProcessTypeIndexSelection].ProcessType;
|
|
|
|
|
|
|
|
public ObservableCollection<string> ChamberType { get; set; }
|
|
public string CurrentChamberType => _recipeComparViewModel.ChamberType[_recipeComparViewModel.ChamberTypeIndexSelection];
|
|
|
|
RecipeCompareViewModel _recipeComparViewModel;
|
|
|
|
|
|
public string SelectedChamber { get; set; }
|
|
|
|
|
|
public ObservableCollection<FileNode> SelectRecipeNameList { get; set; } = new ObservableCollection<FileNode>();
|
|
|
|
public FileNode DGSelectRecipeName { get; set; }
|
|
|
|
|
|
|
|
public LoadRecipeHelp(RecipeCompareViewModel 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<string>() { "Default" };
|
|
}
|
|
else
|
|
{
|
|
ChamberType = new ObservableCollection<string>(((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>(((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];
|
|
|
|
#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
|
|
}
|
|
|
|
|
|
}
|
|
}
|