|
@@ -160,14 +160,14 @@ namespace EfemDualSchedulerLib.Schedulers
|
|
|
|
|
|
}
|
|
|
|
|
|
- public void JobCreated(ControlJobInfo cj, ProcessJobInfo pj,string module)
|
|
|
+ public void JobCreated(ControlJobInfo cj, ProcessJobInfo pj,string module,string lotId)
|
|
|
{
|
|
|
if (!string.IsNullOrEmpty(module))
|
|
|
{
|
|
|
ModuleName moduleName = ModuleHelper.Converter(module);
|
|
|
EV.Notify(PortSequenceSelected, new SerializableDictionary<string, string>()
|
|
|
{
|
|
|
- {DataVariables.LotID, pj.LotName},
|
|
|
+ {DataVariables.LotID, lotId},
|
|
|
{DataVariables.JobID, pj.ControlJobName},
|
|
|
{DataVariables.PortID, PortId[moduleName] },
|
|
|
{DataVariables.SequenceID, pj.Sequence.Name }
|
|
@@ -201,13 +201,14 @@ namespace EfemDualSchedulerLib.Schedulers
|
|
|
|
|
|
public void JobStarted(ControlJobInfo cj, ProcessJobInfo pj)
|
|
|
{
|
|
|
- foreach (string casseteModule in cj.CasseteModules)
|
|
|
+ string[] lotId = cj.LotName.Split(',');
|
|
|
+ for (int i=0;i<cj.CasseteModules.Length;i++)
|
|
|
{
|
|
|
- ModuleName module = ModuleHelper.Converter(casseteModule);
|
|
|
+ ModuleName module = ModuleHelper.Converter(cj.CasseteModules[i]);
|
|
|
|
|
|
EV.Notify(PortJobStarted, new SerializableDictionary<string, string>()
|
|
|
{
|
|
|
- {DataVariables.LotID, pj.LotName},
|
|
|
+ {DataVariables.LotID, lotId.Length>i?lotId[i]:""},
|
|
|
{DataVariables.JobID, pj.ControlJobName},
|
|
|
{DataVariables.PortID, PortId[module] },
|
|
|
{DataVariables.SequenceID, pj.Sequence.Name }
|
|
@@ -231,14 +232,15 @@ namespace EfemDualSchedulerLib.Schedulers
|
|
|
}
|
|
|
|
|
|
public void JobStopped(ControlJobInfo cj, ProcessJobInfo pj)
|
|
|
- {
|
|
|
- foreach (string casseteModule in cj.CasseteModules)
|
|
|
+ {
|
|
|
+ string[] lotId = cj.LotName.Split(',');
|
|
|
+ for (int i=0;i< cj.CasseteModules.Length;i++)
|
|
|
{
|
|
|
- ModuleName module = ModuleHelper.Converter(casseteModule);
|
|
|
+ ModuleName module = ModuleHelper.Converter(cj.CasseteModules[i]);
|
|
|
|
|
|
EV.Notify(PortJobStopped, new SerializableDictionary<string, string>()
|
|
|
{
|
|
|
- {DataVariables.LotID, pj.LotName},
|
|
|
+ {DataVariables.LotID, lotId.Length>i?lotId[i]:""},
|
|
|
{DataVariables.JobID, pj.ControlJobName},
|
|
|
{DataVariables.PortID, PortId[module] },
|
|
|
{DataVariables.SequenceID, pj.Sequence.Name }
|
|
@@ -249,13 +251,14 @@ namespace EfemDualSchedulerLib.Schedulers
|
|
|
|
|
|
public void JobPaused(ControlJobInfo cj, ProcessJobInfo pj)
|
|
|
{
|
|
|
- foreach (string casseteModule in cj.CasseteModules)
|
|
|
+ string[] lotId = cj.LotName.Split(',');
|
|
|
+ for (int i = 0; i < cj.CasseteModules.Length; i++)
|
|
|
{
|
|
|
- ModuleName module = ModuleHelper.Converter(casseteModule);
|
|
|
+ ModuleName module = ModuleHelper.Converter(cj.CasseteModules[i]);
|
|
|
|
|
|
EV.Notify(PortJobPaused, new SerializableDictionary<string, string>()
|
|
|
{
|
|
|
- {DataVariables.LotID, pj.LotName},
|
|
|
+ {DataVariables.LotID, lotId.Length>i?lotId[i]:""},
|
|
|
{DataVariables.JobID, pj.ControlJobName},
|
|
|
{DataVariables.PortID, PortId[module] },
|
|
|
{DataVariables.SequenceID, pj.Sequence.Name }
|
|
@@ -266,13 +269,14 @@ namespace EfemDualSchedulerLib.Schedulers
|
|
|
|
|
|
public void JobResumed(ControlJobInfo cj, ProcessJobInfo pj)
|
|
|
{
|
|
|
- foreach (string casseteModule in cj.CasseteModules)
|
|
|
+ string[] lotId = cj.LotName.Split(',');
|
|
|
+ for (int i = 0; i < cj.CasseteModules.Length; i++)
|
|
|
{
|
|
|
- ModuleName module = ModuleHelper.Converter(casseteModule);
|
|
|
+ ModuleName module = ModuleHelper.Converter(cj.CasseteModules[i]);
|
|
|
|
|
|
EV.Notify(PortJobResumed, new SerializableDictionary<string, string>()
|
|
|
{
|
|
|
- {DataVariables.LotID, pj.LotName},
|
|
|
+ {DataVariables.LotID, lotId.Length>i?lotId[i]:""},
|
|
|
{DataVariables.JobID, pj.ControlJobName},
|
|
|
{DataVariables.PortID, PortId[module] },
|
|
|
{DataVariables.SequenceID, pj.Sequence.Name }
|
|
@@ -283,13 +287,14 @@ namespace EfemDualSchedulerLib.Schedulers
|
|
|
|
|
|
public void JobAborted(ControlJobInfo cj, ProcessJobInfo pj)
|
|
|
{
|
|
|
- foreach (string casseteModule in cj.CasseteModules)
|
|
|
+ string[] lotId = cj.LotName.Split(',');
|
|
|
+ for (int i = 0; i < cj.CasseteModules.Length; i++)
|
|
|
{
|
|
|
- ModuleName module = ModuleHelper.Converter(casseteModule);
|
|
|
+ ModuleName module = ModuleHelper.Converter(cj.CasseteModules[i]);
|
|
|
|
|
|
EV.Notify(PortJobAborted, new SerializableDictionary<string, string>()
|
|
|
{
|
|
|
- {DataVariables.LotID, cj.LotName},
|
|
|
+ {DataVariables.LotID, lotId.Length> i ? lotId[i] : ""},
|
|
|
{DataVariables.JobID, cj.Name},
|
|
|
{DataVariables.PortID, PortId[module] },
|
|
|
{DataVariables.SequenceID, "" }
|
|
@@ -300,14 +305,15 @@ namespace EfemDualSchedulerLib.Schedulers
|
|
|
|
|
|
public void JobFinished(ControlJobInfo cj, ProcessJobInfo pj)
|
|
|
{
|
|
|
- foreach (string casseteModule in cj.CasseteModules)
|
|
|
+ string[] lotId = cj.LotName.Split(',');
|
|
|
+ for (int i = 0; i < cj.CasseteModules.Length; i++)
|
|
|
{
|
|
|
- ModuleName module = ModuleHelper.Converter(casseteModule);
|
|
|
+ ModuleName module = ModuleHelper.Converter(cj.CasseteModules[i]);
|
|
|
|
|
|
- int count = pj.SlotWafers.Count;
|
|
|
+ int count = CalculateModuleWaferCount(module);
|
|
|
EV.Notify(PortJobFinished, new SerializableDictionary<string, string>()
|
|
|
{
|
|
|
- {DataVariables.LotID, pj.LotName},
|
|
|
+ {DataVariables.LotID, lotId.Length > i ? lotId[i] : ""},
|
|
|
{DataVariables.JobID, pj.ControlJobName},
|
|
|
{DataVariables.PortID, PortId[module] },
|
|
|
{DataVariables.SequenceID, pj.Sequence.Name },
|
|
@@ -317,10 +323,10 @@ namespace EfemDualSchedulerLib.Schedulers
|
|
|
OP.DoOperation(E94ControlJobStateChanged, cj.Name, cj.State);
|
|
|
}
|
|
|
|
|
|
- private int CalculateProcessJobWaferCount(ProcessJobInfo pj)
|
|
|
+ private int CalculateModuleWaferCount(ModuleName module)
|
|
|
{
|
|
|
int count = 0;
|
|
|
- WaferInfo[] wafers= WaferManager.Instance.GetWaferByProcessJob(pj.Name);
|
|
|
+ WaferInfo[] wafers= WaferManager.Instance.GetWafers(module);
|
|
|
if(wafers!=null)
|
|
|
{
|
|
|
for(int i=0;i<wafers.Length;i++)
|