| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244 | 
							- using System;
 
- using System.Collections.Generic;
 
- using System.Linq;
 
- using System.Text;
 
- using System.Threading.Tasks;
 
- using Aitex.Core.RT.Event;
 
- using Aitex.Core.RT.SCCore;
 
- using Aitex.Core.Util;
 
- using MECF.Framework.Common.Equipment;
 
- using MECF.Framework.Common.Jobs;
 
- using FurnaceRT.FAs;
 
- namespace FurnaceRT.Equipments.Schedulers
 
- {
 
-     public class SchedulerFACallback : ISchedulerFACallback
 
-     {
 
-         private Dictionary<ModuleName, string> PortJobStarted;
 
-         private Dictionary<ModuleName, string> PortJobStopped;
 
-         private Dictionary<ModuleName, string> PortJobPaused;
 
-         private Dictionary<ModuleName, string> PortJobResumed;
 
-         private Dictionary<ModuleName, string> PortJobAborted;
 
-         private Dictionary<ModuleName, string> PortJobFinished;
 
-         private Dictionary<ModuleName, string> PortJobFailed;
 
-         private Dictionary<ModuleName, string> PortSequenceSelected;
 
-         private Dictionary<ModuleName, string> PortSequenceSelectFailed;
 
-         private Dictionary<ModuleName, string> PortId;
 
-         public SchedulerFACallback()
 
-         {
 
-             PortJobStarted = new Dictionary<ModuleName, string>();
 
-             PortJobStopped = new Dictionary<ModuleName, string>();
 
-             PortJobPaused = new Dictionary<ModuleName, string>();
 
-             PortJobResumed = new Dictionary<ModuleName, string>();
 
-             PortJobAborted = new Dictionary<ModuleName, string>();
 
-             PortJobFinished = new Dictionary<ModuleName, string>();
 
-             PortJobFailed = new Dictionary<ModuleName, string>();
 
-             PortSequenceSelected = new Dictionary<ModuleName, string>();
 
-             PortSequenceSelectFailed = new Dictionary<ModuleName, string>();
 
-             PortId = new Dictionary<ModuleName, string>();
 
-             for (int i = 1; i < 30; i++)
 
-             {
 
-                 if (!SC.ContainsItem($"System.Stocker.Stocker{i}WaferType"))
 
-                     continue;
 
-                 var module = ModuleHelper.Converter($"Stocker{i}");
 
-                 EV.Subscribe(new EventItem("Event", $"{module}JobStarted", $"{module}JobStarted"));
 
-                 EV.Subscribe(new EventItem("Event", $"{module}JobStopped", $"{module}JobStopped"));
 
-                 EV.Subscribe(new EventItem("Event", $"{module}JobPaused", $"{module}JobPaused"));
 
-                 EV.Subscribe(new EventItem("Event", $"{module}JobResumed", $"{module}JobResumed"));
 
-                 EV.Subscribe(new EventItem("Event", $"{module}JobAborted", $"{module}JobAborted"));
 
-                 EV.Subscribe(new EventItem("Event", $"{module}JobFinished", $"{module}JobFinished"));
 
-                 EV.Subscribe(new EventItem("Event", $"{module}JobFailed", $"{module}JobFailed"));
 
-                 EV.Subscribe(new EventItem("Event", $"{module}SequenceSelected", $"{module}SequenceSelected"));
 
-                 EV.Subscribe(new EventItem("Event", $"{module}SequenceSelectFailed", $"{module}SequenceSelectFailed"));
 
-                 PortId[module] = i.ToString();
 
-                 PortJobStarted[module] = $"{module}JobStarted";
 
-                 PortJobStopped[module] = $"{module}JobStopped";
 
-                 PortJobPaused[module] = $"{module}JobPaused";
 
-                 PortJobResumed[module] = $"{module}JobResumed";
 
-                 PortJobAborted[module] = $"{module}JobAborted";
 
-                 PortJobFinished[module] = $"{module}JobFinished";
 
-                 PortJobFailed[module] = $"{module}JobFailed";
 
-                 PortSequenceSelected[module] = $"{module}SequenceSelected";
 
-                 PortSequenceSelectFailed[module] = $"{module}SequenceSelectFailed";
 
-             }
 
-         }
 
-         public void JobCreated(ControlJobInfo cj, ProcessJobInfo pj)
 
-         {
 
-             foreach(var s in pj.Stockers)
 
-             {
 
-                 var type = SC.GetStringValue($"System.Stocker.{s.Item1}WaferType");
 
-                 if(!string.IsNullOrEmpty(type) && (type.Contains("P") || type.Contains("M")))
 
-                 {
 
-                     ModuleName module = ModuleHelper.Converter(s.Item1);
 
-                     EV.Notify(PortSequenceSelected[module], new SerializableDictionary<string, string>()
 
-                     {
 
-                         {DVIDName.LotID,  cj.LotName},
 
-                         {DVIDName.JobID,  pj.ControlJobName},
 
-                         {DVIDName.PortID, PortId[module] },
 
-                         {DVIDName.SequenceID, pj.JobRecipe }
 
-                     });
 
-                 }
 
-             }
 
-         }
 
-         public void JobCreateFailed(string module, string lotID, string jobID, string sequenceID)
 
-         {
 
-             ModuleName moduleName = ModuleHelper.Converter(module);
 
-             EV.Notify(PortSequenceSelectFailed[moduleName], new SerializableDictionary<string, string>()
 
-             {
 
-                 {DVIDName.LotID,  lotID},
 
-                 {DVIDName.JobID,  jobID},
 
-                 {DVIDName.PortID, PortId[moduleName] },
 
-                 {DVIDName.SequenceID, sequenceID }
 
-             });
 
-         }
 
-         public void JobStarted(ControlJobInfo cj, ProcessJobInfo pj)
 
-         {
 
-             foreach (var s in pj.Stockers)
 
-             {
 
-                 var type = SC.GetStringValue($"System.Stocker.{s.Item1}WaferType");
 
-                 if (!string.IsNullOrEmpty(type) && (type.Contains("P") || type.Contains("M")))
 
-                 {
 
-                     ModuleName module = ModuleHelper.Converter(s.Item1);
 
-                     EV.Notify(PortJobStarted[module], new SerializableDictionary<string, string>()
 
-                     {
 
-                         {DVIDName.LotID,  cj.LotName},
 
-                         {DVIDName.JobID,  pj.ControlJobName},
 
-                         {DVIDName.PortID, PortId[module] },
 
-                         {DVIDName.SequenceID, pj.JobRecipe }
 
-                     });
 
-                 }
 
-             }
 
-         }
 
-         public void JobStopped(ControlJobInfo cj, ProcessJobInfo pj)
 
-         {
 
-             foreach (var s in pj.Stockers)
 
-             {
 
-                 var type = SC.GetStringValue($"System.Stocker.{s.Item1}WaferType");
 
-                 if (!string.IsNullOrEmpty(type) && (type.Contains("P") || type.Contains("M")))
 
-                 {
 
-                     ModuleName module = ModuleHelper.Converter(s.Item1);
 
-                     EV.Notify(PortJobStopped[module], new SerializableDictionary<string, string>()
 
-                     {
 
-                         {DVIDName.LotID,  cj.LotName},
 
-                         {DVIDName.JobID,  pj.ControlJobName},
 
-                         {DVIDName.PortID, PortId[module] },
 
-                         {DVIDName.SequenceID, pj.JobRecipe }
 
-                     });
 
-                 }
 
-             }
 
-         }
 
-         public void JobPaused(ControlJobInfo cj, ProcessJobInfo pj)
 
-         {
 
-             foreach (var s in pj.Stockers)
 
-             {
 
-                 var type = SC.GetStringValue($"System.Stocker.{s.Item1}WaferType");
 
-                 if (!string.IsNullOrEmpty(type) && (type.Contains("P") || type.Contains("M")))
 
-                 {
 
-                     ModuleName module = ModuleHelper.Converter(s.Item1);
 
-                     EV.Notify(PortJobPaused[module], new SerializableDictionary<string, string>()
 
-                     {
 
-                         {DVIDName.LotID,  cj.LotName},
 
-                         {DVIDName.JobID,  pj.ControlJobName},
 
-                         {DVIDName.PortID, PortId[module] },
 
-                         {DVIDName.SequenceID, pj.JobRecipe }
 
-                     });
 
-                 }
 
-             }
 
-         }
 
-         public void JobResumed(ControlJobInfo cj, ProcessJobInfo pj)
 
-         {
 
-             foreach (var s in pj.Stockers)
 
-             {
 
-                 var type = SC.GetStringValue($"System.Stocker.{s.Item1}WaferType");
 
-                 if (!string.IsNullOrEmpty(type) && (type.Contains("P") || type.Contains("M")))
 
-                 {
 
-                     ModuleName module = ModuleHelper.Converter(s.Item1);
 
-                     EV.Notify(PortJobResumed[module], new SerializableDictionary<string, string>()
 
-                     {
 
-                         {DVIDName.LotID,  cj.LotName},
 
-                         {DVIDName.JobID,  pj.ControlJobName},
 
-                         {DVIDName.PortID, PortId[module] },
 
-                         {DVIDName.SequenceID, pj.JobRecipe }
 
-                     });
 
-                 }
 
-             }
 
-         }
 
-         public void JobAborted(ControlJobInfo cj, ProcessJobInfo pj)
 
-         {
 
-             foreach (var s in pj.Stockers)
 
-             {
 
-                 var type = SC.GetStringValue($"System.Stocker.{s.Item1}WaferType");
 
-                 if (!string.IsNullOrEmpty(type) && (type.Contains("P") || type.Contains("M")))
 
-                 {
 
-                     ModuleName module = ModuleHelper.Converter(s.Item1);
 
-                     EV.Notify(PortJobAborted[module], new SerializableDictionary<string, string>()
 
-                     {
 
-                         {DVIDName.LotID,  cj.LotName},
 
-                         {DVIDName.JobID,  pj.ControlJobName},
 
-                         {DVIDName.PortID, PortId[module] },
 
-                         {DVIDName.SequenceID, pj.JobRecipe }
 
-                     });
 
-                 }
 
-             }
 
-         }
 
-         public void JobFinished(ControlJobInfo cj, ProcessJobInfo pj)
 
-         {
 
-             foreach (var s in pj.Stockers)
 
-             {
 
-                 var type = SC.GetStringValue($"System.Stocker.{s.Item1}WaferType");
 
-                 if (!string.IsNullOrEmpty(type) && (type.Contains("P") || type.Contains("M")))
 
-                 {
 
-                     ModuleName module = ModuleHelper.Converter(s.Item1);
 
-                     EV.Notify(PortJobFinished[module], new SerializableDictionary<string, string>()
 
-                     {
 
-                         {DVIDName.LotID,  cj.LotName},
 
-                         {DVIDName.JobID,  pj.ControlJobName},
 
-                         {DVIDName.PortID, PortId[module] },
 
-                         {DVIDName.SequenceID, pj.JobRecipe }
 
-                     });
 
-                 }
 
-             }
 
-         }
 
-         public void JobFailed(ControlJobInfo cj, ProcessJobInfo pj)
 
-         {
 
-             foreach (var s in pj.Stockers)
 
-             {
 
-                 var type = SC.GetStringValue($"System.Stocker.{s.Item1}WaferType");
 
-                 if (!string.IsNullOrEmpty(type) && (type.Contains("P") || type.Contains("M")))
 
-                 {
 
-                     ModuleName module = ModuleHelper.Converter(s.Item1);
 
-                     EV.Notify(PortJobFailed[module], new SerializableDictionary<string, string>()
 
-                     {
 
-                         {DVIDName.LotID,  cj.LotName},
 
-                         {DVIDName.JobID,  pj.ControlJobName},
 
-                         {DVIDName.PortID, PortId[module] },
 
-                         {DVIDName.SequenceID, pj.JobRecipe }
 
-                     });
 
-                 }
 
-             }
 
-         }
 
-     }
 
- }
 
 
  |