136 lines
4.1 KiB
C#
136 lines
4.1 KiB
C#
|
|
using System;
|
|||
|
|
using System.Collections.Generic;
|
|||
|
|
using System.IO;
|
|||
|
|
using System.Xml;
|
|||
|
|
using Aitex.Common.Util;
|
|||
|
|
using Aitex.Core.RT.Event;
|
|||
|
|
using Aitex.Core.RT.Log;
|
|||
|
|
using Aitex.Core.RT.RecipeCenter;
|
|||
|
|
using Aitex.Core.RT.SCCore;
|
|||
|
|
|
|||
|
|
namespace SicModules.PMs.RecipeExecutions
|
|||
|
|
{
|
|||
|
|
public class SicRecipeFileContext : IRecipeFileContext
|
|||
|
|
{
|
|||
|
|
public string GetRecipeDefiniton(string chamberId, string module)
|
|||
|
|
{
|
|||
|
|
try
|
|||
|
|
{
|
|||
|
|
var recipeFormatNme = module.Contains("PM") ? GetRecipeFormat(module) : module;
|
|||
|
|
string recipeSchema = PathManager.GetCfgDir() + $@"\Recipe\{chamberId}\{recipeFormatNme}.xml";
|
|||
|
|
|
|||
|
|
XmlDocument xmlDom = new XmlDocument();
|
|||
|
|
xmlDom.Load(recipeSchema);
|
|||
|
|
return xmlDom.OuterXml;
|
|||
|
|
}
|
|||
|
|
catch (Exception ex)
|
|||
|
|
{
|
|||
|
|
LOG.Write(ex);
|
|||
|
|
return "";
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public string GetRecipeFormat(string module)
|
|||
|
|
{
|
|||
|
|
var rName = "PN2DopingRecipe";
|
|||
|
|
|
|||
|
|
var scValue = SC.GetStringValue($"PM.{module}.OperationView");
|
|||
|
|
if (String.IsNullOrEmpty(scValue))
|
|||
|
|
return rName;
|
|||
|
|
|
|||
|
|
return scValue;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public string GetSingleNodePath(int sourceIndex, int gasIndex)
|
|||
|
|
{
|
|||
|
|
return $"/Aitex/TableRecipeFormat/Catalog[@DisplayName=\"Source{sourceIndex}\"]/Group/Step/Item[@ControlName=\"Gas{gasIndex}\"]";
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public IEnumerable<string> GetRecipes(string path, bool includingUsedRecipe)
|
|||
|
|
{
|
|||
|
|
try
|
|||
|
|
{
|
|||
|
|
var recipes = new List<string>();
|
|||
|
|
string recipePath = PathManager.GetRecipeDir() + path + "\\";
|
|||
|
|
|
|||
|
|
if (!Directory.Exists(recipePath))
|
|||
|
|
return recipes;
|
|||
|
|
|
|||
|
|
var di = new DirectoryInfo(recipePath);
|
|||
|
|
var fis = di.GetFiles("*.rcp", SearchOption.AllDirectories);
|
|||
|
|
|
|||
|
|
|
|||
|
|
foreach (var fi in fis)
|
|||
|
|
{
|
|||
|
|
string str = fi.FullName.Substring(di.FullName.Length);
|
|||
|
|
str = str.Substring(0, str.LastIndexOf('.'));
|
|||
|
|
if (includingUsedRecipe || (!includingUsedRecipe && !str.Contains("HistoryRecipe\\")))
|
|||
|
|
{
|
|||
|
|
recipes.Add(str);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
return recipes;
|
|||
|
|
}
|
|||
|
|
catch (Exception ex)
|
|||
|
|
{
|
|||
|
|
LOG.Write(ex);
|
|||
|
|
return new List<string>();
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public void PostInfoEvent(string message)
|
|||
|
|
{
|
|||
|
|
EV.PostMessage("System", EventEnum.GeneralInfo, message);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public void PostWarningEvent(string message)
|
|||
|
|
{
|
|||
|
|
EV.PostMessage("System", EventEnum.DefaultWarning, message);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public void PostAlarmEvent(string message)
|
|||
|
|
{
|
|||
|
|
EV.PostMessage("System", EventEnum.DefaultAlarm, message);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public void PostDialogEvent(string message)
|
|||
|
|
{
|
|||
|
|
EV.PostNotificationMessage(message);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public void PostInfoDialogMessage(string message)
|
|||
|
|
{
|
|||
|
|
EV.PostMessage("System", EventEnum.GeneralInfo, message);
|
|||
|
|
|
|||
|
|
EV.PostPopDialogMessage(EventLevel.Information, "System Information", message);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public void PostWarningDialogMessage(string message)
|
|||
|
|
{
|
|||
|
|
EV.PostMessage("System", EventEnum.GeneralInfo, message);
|
|||
|
|
|
|||
|
|
EV.PostPopDialogMessage(EventLevel.Warning, "System Warning", message);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public void PostAlarmDialogMessage(string message)
|
|||
|
|
{
|
|||
|
|
EV.PostMessage("System", EventEnum.GeneralInfo, message);
|
|||
|
|
|
|||
|
|
EV.PostPopDialogMessage(EventLevel.Alarm, "System Alarm", message);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public string GetRecipeTemplate(string chamberId, string module)
|
|||
|
|
{
|
|||
|
|
string schema = GetRecipeDefiniton(chamberId, module);
|
|||
|
|
|
|||
|
|
XmlDocument dom = new XmlDocument();
|
|||
|
|
|
|||
|
|
dom.LoadXml(schema);
|
|||
|
|
|
|||
|
|
XmlNode nodeTemplate = dom.SelectSingleNode("/Aitex/TableRecipeData");
|
|||
|
|
|
|||
|
|
return nodeTemplate.OuterXml;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|