| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173 | 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<FaModuleNotifier>    {        /// <summary>        /// FA回复        /// </summary>        private SchedulerFACallback _schedulerFACallback = new SchedulerFACallback();        /// <summary>        /// 上报WaferShuttle 任务启动        /// </summary>        /// <param name="waferHolderInfo"></param>        public void NotifyWaferShuttleJobStart(WaferHolderInfo waferHolderInfo)        {            ControlJobInfo controlJobInfo = JobProcesser.Instance.GetControlJobInfoByName(waferHolderInfo.CurrentControlJobId);            if (controlJobInfo == null)            {                return;            }            _schedulerFACallback.WaferShuttleJobStart(controlJobInfo, waferHolderInfo.SequenceRecipe.Ppid, waferHolderInfo);        }        /// <summary>        /// 上报WaferShuttle 任务结束        /// </summary>        /// <param name="waferHolderInfo"></param>        public void NotifyWaferShuttleJobEnd(WaferHolderInfo waferHolderInfo)        {            ControlJobInfo controlJobInfo = JobProcesser.Instance.GetControlJobInfoByName(waferHolderInfo.CurrentControlJobId);            if (controlJobInfo == null)            {                return;            }            _schedulerFACallback.WaferShuttleJobEnd(controlJobInfo, waferHolderInfo.SequenceRecipe.Ppid, waferHolderInfo);        }        /// <summary>        /// 上报WaferShuttle recipe启动        /// </summary>        /// <param name="waferHolderInfo"></param>        /// <param name="recipeId"></param>        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);        }        /// <summary>        /// 上报WaferShuttle recipe完成        /// </summary>        /// <param name="waferHolderInfo"></param>        /// <param name="recipeId"></param>        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);        }        /// <summary>        /// 上报WaferShuttle recipe失败        /// </summary>        /// <param name="waferHolderInfo"></param>        /// <param name="recipeId"></param>        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);        }        /// <summary>        /// 上报SRD Recipe启动        /// </summary>        /// <param name="waferInfo"></param>        /// <param name="recipeId"></param>        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);        }        /// <summary>        /// 上报SRD Recipe结束        /// </summary>        /// <param name="waferInfo"></param>        /// <param name="recipeId"></param>        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);        }        /// <summary>        /// 上报SRD Recipe失败        /// </summary>        /// <param name="waferInfo"></param>        /// <param name="recipeId"></param>        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);        }    }}
 |