using Aitex.Core.Common; using Aitex.Core.Util; using CyberX8_RT.Dispatch; using MECF.Framework.Common.Equipment; using MECF.Framework.Common.Jobs; using MECF.Framework.Common.SubstrateTrackings; using MECF.Framework.Common.WaferHolder; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace CyberX8_RT.Modules { public class FaModuleNotifier : Singleton { /// /// FA回复 /// private SchedulerFACallback _schedulerFACallback = new SchedulerFACallback(); /// /// 上报WaferShuttle 任务启动 /// /// public void NotifyWaferShuttleJobStart(WaferHolderInfo waferHolderInfo) { ControlJobInfo controlJobInfo = JobProcesser.Instance.GetControlJobInfoByName(waferHolderInfo.CurrentControlJobId); if (controlJobInfo == null) { return; } _schedulerFACallback.WaferShuttleJobStart(controlJobInfo, waferHolderInfo.SequenceRecipe.Ppid, waferHolderInfo); } /// /// 上报WaferShuttle 任务结束 /// /// public void NotifyWaferShuttleJobEnd(WaferHolderInfo waferHolderInfo) { ControlJobInfo controlJobInfo = JobProcesser.Instance.GetControlJobInfoByName(waferHolderInfo.CurrentControlJobId); if (controlJobInfo == null) { return; } _schedulerFACallback.WaferShuttleJobEnd(controlJobInfo, waferHolderInfo.SequenceRecipe.Ppid, waferHolderInfo); } /// /// 上报WaferShuttle recipe启动 /// /// /// public void NotifyWaferShuttleRecipeStart(WaferHolderInfo waferHolderInfo,string recipeId) { ControlJobInfo controlJobInfo = JobProcesser.Instance.GetControlJobInfoByName(waferHolderInfo.CurrentControlJobId); if (controlJobInfo == null) { return; } _schedulerFACallback.WaferShuttleRecipeStart(controlJobInfo, waferHolderInfo.SequenceRecipe.Ppid, waferHolderInfo,recipeId); } /// /// 上报WaferShuttle recipe完成 /// /// /// public void NotifyWaferShuttleRecipeEnd(WaferHolderInfo waferHolderInfo, string recipeId,int processTimeLength) { ControlJobInfo controlJobInfo = JobProcesser.Instance.GetControlJobInfoByName(waferHolderInfo.CurrentControlJobId); if (controlJobInfo == null) { return; } _schedulerFACallback.WaferShuttleRecipeEnd(controlJobInfo, waferHolderInfo.SequenceRecipe.Ppid, waferHolderInfo, recipeId,processTimeLength); } /// /// 上报WaferShuttle recipe失败 /// /// /// public void NotifyWaferShuttleRecipeFailed(WaferHolderInfo waferHolderInfo, string recipeId) { ControlJobInfo controlJobInfo = JobProcesser.Instance.GetControlJobInfoByName(waferHolderInfo.CurrentControlJobId); if (controlJobInfo == null) { return; } _schedulerFACallback.WaferShuttleRecipeFailed(controlJobInfo, waferHolderInfo.SequenceRecipe.Ppid, waferHolderInfo, recipeId); } /// /// 上报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); } } }