using Aitex.Core.Common; using Aitex.Core.Util; using PunkHPX8_RT.Dispatch; using MECF.Framework.Common.Equipment; using MECF.Framework.Common.Jobs; using MECF.Framework.Common.SubstrateTrackings; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace PunkHPX8_RT.Modules { public class FaModuleNotifier : Singleton { /// /// FA回复 /// private SchedulerFACallback _schedulerFACallback = new SchedulerFACallback(); /// /// 上报SRD Recipe启动 /// /// /// public void NotifySRDRecipeStart(ModuleName srdModule, string recipeId) { if (WaferManager.Instance.CheckNoWafer(srdModule, 0)) { return; } WaferInfo waferInfo = WaferManager.Instance.GetWafer(srdModule, 0); if (waferInfo == null || waferInfo.IsEmpty) { return; } if (waferInfo.ProcessJob == null) { return; } ControlJobInfo controlJobInfo = JobProcesser.Instance.GetControlJobInfoByName(waferInfo.ProcessJob.ControlJobName); if (controlJobInfo == null) { return; } _schedulerFACallback.SrdRecipeStart(controlJobInfo, waferInfo.SequenceName, recipeId, ((ModuleName)waferInfo.Station).ToString(), waferInfo.Slot); } /// /// 上报SRD Recipe结束 /// /// /// public void NotifySRDRecipeEnd(ModuleName srdModule, string recipeId) { if (WaferManager.Instance.CheckNoWafer(srdModule, 0)) { return; } WaferInfo waferInfo = WaferManager.Instance.GetWafer(srdModule, 0); if (waferInfo == null || waferInfo.IsEmpty) { return; } if (waferInfo.ProcessJob == null) { return; } ControlJobInfo controlJobInfo = JobProcesser.Instance.GetControlJobInfoByName(waferInfo.ProcessJob.ControlJobName); if (controlJobInfo == null) { return; } _schedulerFACallback.SrdRecipeEnd(controlJobInfo, waferInfo.SequenceName, recipeId, ((ModuleName)waferInfo.Station).ToString(), waferInfo.Slot); } /// /// 上报SRD Recipe失败 /// /// /// public void NotifySRDRecipeFailed(ModuleName srdModule, string recipeId) { if (WaferManager.Instance.CheckNoWafer(srdModule, 0)) { return; } WaferInfo waferInfo = WaferManager.Instance.GetWafer(srdModule, 0); if (waferInfo == null || waferInfo.IsEmpty) { return; } if (waferInfo.ProcessJob == null) { return; } ControlJobInfo controlJobInfo = JobProcesser.Instance.GetControlJobInfoByName(waferInfo.ProcessJob.ControlJobName); if (controlJobInfo == null) { return; } _schedulerFACallback.SrdRecipeFailed(controlJobInfo, waferInfo.SequenceName, recipeId, ((ModuleName)waferInfo.Station).ToString(), waferInfo.Slot); } } }