FaModuleNotifier.cs 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173
  1. using Aitex.Core.Common;
  2. using Aitex.Core.Util;
  3. using CyberX8_RT.Dispatch;
  4. using MECF.Framework.Common.Equipment;
  5. using MECF.Framework.Common.Jobs;
  6. using MECF.Framework.Common.SubstrateTrackings;
  7. using MECF.Framework.Common.WaferHolder;
  8. using System;
  9. using System.Collections.Generic;
  10. using System.Linq;
  11. using System.Text;
  12. using System.Threading.Tasks;
  13. namespace CyberX8_RT.Modules
  14. {
  15. public class FaModuleNotifier : Singleton<FaModuleNotifier>
  16. {
  17. /// <summary>
  18. /// FA回复
  19. /// </summary>
  20. private SchedulerFACallback _schedulerFACallback = new SchedulerFACallback();
  21. /// <summary>
  22. /// 上报WaferShuttle 任务启动
  23. /// </summary>
  24. /// <param name="waferHolderInfo"></param>
  25. public void NotifyWaferShuttleJobStart(WaferHolderInfo waferHolderInfo)
  26. {
  27. ControlJobInfo controlJobInfo = JobProcesser.Instance.GetControlJobInfoByName(waferHolderInfo.CurrentControlJobId);
  28. if (controlJobInfo == null)
  29. {
  30. return;
  31. }
  32. _schedulerFACallback.WaferShuttleJobStart(controlJobInfo, waferHolderInfo.SequenceRecipe.Ppid, waferHolderInfo);
  33. }
  34. /// <summary>
  35. /// 上报WaferShuttle 任务结束
  36. /// </summary>
  37. /// <param name="waferHolderInfo"></param>
  38. public void NotifyWaferShuttleJobEnd(WaferHolderInfo waferHolderInfo)
  39. {
  40. ControlJobInfo controlJobInfo = JobProcesser.Instance.GetControlJobInfoByName(waferHolderInfo.CurrentControlJobId);
  41. if (controlJobInfo == null)
  42. {
  43. return;
  44. }
  45. _schedulerFACallback.WaferShuttleJobEnd(controlJobInfo, waferHolderInfo.SequenceRecipe.Ppid, waferHolderInfo);
  46. }
  47. /// <summary>
  48. /// 上报WaferShuttle recipe启动
  49. /// </summary>
  50. /// <param name="waferHolderInfo"></param>
  51. /// <param name="recipeId"></param>
  52. public void NotifyWaferShuttleRecipeStart(WaferHolderInfo waferHolderInfo,string recipeId)
  53. {
  54. ControlJobInfo controlJobInfo = JobProcesser.Instance.GetControlJobInfoByName(waferHolderInfo.CurrentControlJobId);
  55. if (controlJobInfo == null)
  56. {
  57. return;
  58. }
  59. _schedulerFACallback.WaferShuttleRecipeStart(controlJobInfo, waferHolderInfo.SequenceRecipe.Ppid, waferHolderInfo,recipeId);
  60. }
  61. /// <summary>
  62. /// 上报WaferShuttle recipe完成
  63. /// </summary>
  64. /// <param name="waferHolderInfo"></param>
  65. /// <param name="recipeId"></param>
  66. public void NotifyWaferShuttleRecipeEnd(WaferHolderInfo waferHolderInfo, string recipeId,int processTimeLength)
  67. {
  68. ControlJobInfo controlJobInfo = JobProcesser.Instance.GetControlJobInfoByName(waferHolderInfo.CurrentControlJobId);
  69. if (controlJobInfo == null)
  70. {
  71. return;
  72. }
  73. _schedulerFACallback.WaferShuttleRecipeEnd(controlJobInfo, waferHolderInfo.SequenceRecipe.Ppid, waferHolderInfo, recipeId,processTimeLength);
  74. }
  75. /// <summary>
  76. /// 上报WaferShuttle recipe失败
  77. /// </summary>
  78. /// <param name="waferHolderInfo"></param>
  79. /// <param name="recipeId"></param>
  80. public void NotifyWaferShuttleRecipeFailed(WaferHolderInfo waferHolderInfo, string recipeId)
  81. {
  82. ControlJobInfo controlJobInfo = JobProcesser.Instance.GetControlJobInfoByName(waferHolderInfo.CurrentControlJobId);
  83. if (controlJobInfo == null)
  84. {
  85. return;
  86. }
  87. _schedulerFACallback.WaferShuttleRecipeFailed(controlJobInfo, waferHolderInfo.SequenceRecipe.Ppid, waferHolderInfo, recipeId);
  88. }
  89. /// <summary>
  90. /// 上报SRD Recipe启动
  91. /// </summary>
  92. /// <param name="waferInfo"></param>
  93. /// <param name="recipeId"></param>
  94. public void NotifySRDRecipeStart(ModuleName srdModule, string recipeId)
  95. {
  96. if (WaferManager.Instance.CheckNoWafer(srdModule, 0))
  97. {
  98. return;
  99. }
  100. WaferInfo waferInfo = WaferManager.Instance.GetWafer(srdModule, 0);
  101. if (waferInfo == null || waferInfo.IsEmpty)
  102. {
  103. return;
  104. }
  105. if (waferInfo.ProcessJob == null)
  106. {
  107. return;
  108. }
  109. ControlJobInfo controlJobInfo = JobProcesser.Instance.GetControlJobInfoByName(waferInfo.ProcessJob.ControlJobName);
  110. if (controlJobInfo == null)
  111. {
  112. return;
  113. }
  114. _schedulerFACallback.SrdRecipeStart(controlJobInfo, waferInfo.SequenceName, recipeId, ((ModuleName)waferInfo.Station).ToString(), waferInfo.Slot);
  115. }
  116. /// <summary>
  117. /// 上报SRD Recipe结束
  118. /// </summary>
  119. /// <param name="waferInfo"></param>
  120. /// <param name="recipeId"></param>
  121. public void NotifySRDRecipeEnd(ModuleName srdModule, string recipeId)
  122. {
  123. if (WaferManager.Instance.CheckNoWafer(srdModule, 0))
  124. {
  125. return;
  126. }
  127. WaferInfo waferInfo = WaferManager.Instance.GetWafer(srdModule, 0);
  128. if (waferInfo == null || waferInfo.IsEmpty)
  129. {
  130. return;
  131. }
  132. if (waferInfo.ProcessJob == null)
  133. {
  134. return;
  135. }
  136. ControlJobInfo controlJobInfo = JobProcesser.Instance.GetControlJobInfoByName(waferInfo.ProcessJob.ControlJobName);
  137. if (controlJobInfo == null)
  138. {
  139. return;
  140. }
  141. _schedulerFACallback.SrdRecipeEnd(controlJobInfo, waferInfo.SequenceName, recipeId, ((ModuleName)waferInfo.Station).ToString(), waferInfo.Slot);
  142. }
  143. /// <summary>
  144. /// 上报SRD Recipe失败
  145. /// </summary>
  146. /// <param name="waferInfo"></param>
  147. /// <param name="recipeId"></param>
  148. public void NotifySRDRecipeFailed(ModuleName srdModule, string recipeId)
  149. {
  150. if (WaferManager.Instance.CheckNoWafer(srdModule, 0))
  151. {
  152. return;
  153. }
  154. WaferInfo waferInfo = WaferManager.Instance.GetWafer(srdModule, 0);
  155. if (waferInfo == null || waferInfo.IsEmpty)
  156. {
  157. return;
  158. }
  159. if (waferInfo.ProcessJob == null)
  160. {
  161. return;
  162. }
  163. ControlJobInfo controlJobInfo = JobProcesser.Instance.GetControlJobInfoByName(waferInfo.ProcessJob.ControlJobName);
  164. if (controlJobInfo == null)
  165. {
  166. return;
  167. }
  168. _schedulerFACallback.SrdRecipeFailed(controlJobInfo, waferInfo.SequenceName, recipeId, ((ModuleName)waferInfo.Station).ToString(), waferInfo.Slot);
  169. }
  170. }
  171. }