|
@@ -18,6 +18,7 @@ using CyberX8_Core;
|
|
|
using CyberX8_RT.Modules.Transporter;
|
|
|
using MECF.Framework.Common.SubstrateTrackings;
|
|
|
using MECF.Framework.Common.RecipeCenter;
|
|
|
+using Aitex.Core.RT.SCCore;
|
|
|
|
|
|
namespace CyberX8_RT.Dispatch
|
|
|
{
|
|
@@ -47,7 +48,8 @@ namespace CyberX8_RT.Dispatch
|
|
|
{
|
|
|
return false;
|
|
|
}
|
|
|
- SequenceRecipe sequenceRecipe = jobs[0].SequenceRecipe;
|
|
|
+ ProcessJobInfo nextProcessJob = GetNextProcessJob(jobs);
|
|
|
+ SequenceRecipe sequenceRecipe = nextProcessJob.SequenceRecipe;
|
|
|
List<string> chemistries = SchedulerSequenceRecipeManager.Instance.GetSequenceChemistry(sequenceRecipe);
|
|
|
WaferSize waferSize = (WaferSize)sequenceRecipe.SubstrateSize;
|
|
|
WaferHolderInfo waferHolderInfo = SchedulerManager.Instance.GetAvaibleBufferToLoaderWaferHolder(waferSize,sequenceRecipe.CrsType,chemistries);
|
|
@@ -146,6 +148,47 @@ namespace CyberX8_RT.Dispatch
|
|
|
return false;
|
|
|
}
|
|
|
/// <summary>
|
|
|
+ /// 获取下一个执行的ProcessJob
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="jobs"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ private ProcessJobInfo GetNextProcessJob(List<ProcessJobInfo> jobs)
|
|
|
+ {
|
|
|
+ try
|
|
|
+ {
|
|
|
+ bool isRunInParallelMode = SC.GetValue<Boolean>("Scheduler.IsRunInParallelMode");
|
|
|
+ if (!isRunInParallelMode)
|
|
|
+ {
|
|
|
+ return jobs[0];
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ if (_waferTaskList.Count == 0)
|
|
|
+ {
|
|
|
+ return jobs[0];
|
|
|
+ }
|
|
|
+ WaferHolderTask lastWaferHolderTask = _waferTaskList[_waferTaskList.Count - 1];
|
|
|
+ if (lastWaferHolderTask.ProcessJobInfo == null || lastWaferHolderTask.ProcessJobInfo.SequenceRecipe == null)
|
|
|
+ {
|
|
|
+ return jobs[0];
|
|
|
+ }
|
|
|
+ string lastSequence = lastWaferHolderTask.ProcessJobInfo.SequenceRecipe?.Ppid;
|
|
|
+ foreach (ProcessJobInfo jobInfo in jobs)
|
|
|
+ {
|
|
|
+ if (jobInfo.SequenceRecipe?.Ppid != lastSequence)
|
|
|
+ {
|
|
|
+ return jobInfo;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return jobs[0];
|
|
|
+ }
|
|
|
+ }
|
|
|
+ catch
|
|
|
+ {
|
|
|
+ return jobs[0];
|
|
|
+ }
|
|
|
+ }
|
|
|
+ /// <summary>
|
|
|
/// 查看Wafer对应的WaferHolderTask是否已经创建
|
|
|
/// </summary>
|
|
|
/// <param name="waferInfo"></param>
|