SIC-12/App/Modules/SicModules/PMs/RecipeExecutions/SicRecipeFileContext.cs

136 lines
4.1 KiB
C#
Raw Permalink Normal View History

2026-03-24 15:04:02 +08:00
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;
}
}
}