using Aitex.Core.RT.SCCore; using MECF.Framework.Common.Equipment; using System.Collections.Generic; using System.Linq; namespace FurnaceRT.Equipments.Schedulers { public class SchedulerModuleFactory { protected static SchedulerCarrierRobot _carrierRobot = new SchedulerCarrierRobot(); protected static SchedulerWaferRobot _waferRobot = new SchedulerWaferRobot(); protected static SchedulerFIMS _fims1 = new SchedulerFIMS(ModuleName.FIMS1); protected static SchedulerFIMS _fims2 = new SchedulerFIMS(ModuleName.FIMS2); protected static SchedulerPM _pm1 = new SchedulerPM(ModuleName.PM1); protected static List _lstPms; protected static SchedulerLoadPort _lp1 = new SchedulerLoadPort(ModuleName.LP1); protected static SchedulerLoadPort _lp2 = new SchedulerLoadPort(ModuleName.LP2); protected List _lstLPs; protected static List _lstFIMSs; //protected List _lstBatchAStocker; //protected List _lstBatchBStocker; protected List _lstExtraDummyStocker; protected List _lstSideDummyStocker; //protected List _lstMonitor1Stocker; //protected List _lstMonitor2Stocker; protected List _lstCurrentBatchStocker = new List(); protected List _lstCurrentMonitorStocker = new List(); protected List _lstTotlaStockers; protected List _lstPlaceExtraDummyStockers; protected List _lstPlaceSideDummyStocker; protected List _lstPlaceMonitor1Stocker; protected List _lstPlaceMonitor2Stocker; protected List _lstPlaceCurrentBatchStocker; protected List _lstPlaceXDStocker; protected List _lstPlaceTStocker; protected void InitModule() { _lstPms = new List() { _pm1 }; _lstFIMSs = new List(); if (SC.GetValue($"System.SetUp.IsFIMS1Installed")) { _lstFIMSs.Add(_fims1); } if (SC.GetValue($"System.SetUp.IsFIMS2Installed")) { _lstFIMSs.Add(_fims2); } _lstLPs = new List(); if (SC.GetValue($"System.SetUp.IsLP1Installed")) { _lstLPs.Add(_lp1); } if (SC.GetValue($"System.SetUp.IsLP2Installed")) { _lstLPs.Add(_lp2); } //_lstBatchAStocker = new List(); //_lstBatchBStocker = new List(); _lstExtraDummyStocker = new List(); _lstSideDummyStocker = new List(); //_lstMonitor1Stocker = new List(); //_lstMonitor2Stocker = new List(); _lstPlaceExtraDummyStockers = new List(); _lstPlaceSideDummyStocker = new List(); _lstPlaceMonitor1Stocker = new List(); _lstPlaceMonitor2Stocker = new List(); _lstPlaceCurrentBatchStocker = new List(); _lstPlaceXDStocker = new List(); _lstPlaceTStocker = new List(); _lstTotlaStockers = new List(); for(int i = 1; i < 30; i++) { if (!SC.ContainsItem($"System.SetUp.IsStocker{i}Installed")) continue; if (SC.GetValue($"System.SetUp.IsStocker{i}Installed")) { _lstTotlaStockers.Add(new SchedulerStocker(ModuleHelper.Converter($"Stocker{i}"))); } } foreach (var stokcer in _lstTotlaStockers) { var type = SC.GetStringValue($"System.Stocker.{stokcer.Module}WaferType"); switch (type) { case "P1": //_lstBatchAStocker.Add(stokcer); break; case "P2": //_lstBatchBStocker.Add(stokcer); break; case "M1": //_lstMonitor1Stocker.Add(stokcer); break; case "M2": //_lstMonitor2Stocker.Add(stokcer); break; case "ED": _lstExtraDummyStocker.Add(stokcer); break; case "SD": _lstSideDummyStocker.Add(stokcer); break; case "None": _lstSideDummyStocker.Add(stokcer); _lstExtraDummyStocker.Add(stokcer); break; } } } protected SchedulerModule GetModule(string name) { switch (ModuleHelper.Converter(name)) { case ModuleName.PM1: return _pm1; case ModuleName.CarrierRobot: return _carrierRobot; case ModuleName.WaferRobot: return _waferRobot; case ModuleName.Stocker1: case ModuleName.Stocker2: case ModuleName.Stocker3: case ModuleName.Stocker4: case ModuleName.Stocker5: case ModuleName.Stocker6: case ModuleName.Stocker7: case ModuleName.Stocker8: case ModuleName.Stocker9: case ModuleName.Stocker10: case ModuleName.Stocker11: case ModuleName.Stocker12: case ModuleName.Stocker13: case ModuleName.Stocker14: case ModuleName.Stocker15: case ModuleName.Stocker16: case ModuleName.Stocker17: case ModuleName.Stocker18: case ModuleName.Stocker19: case ModuleName.Stocker20: case ModuleName.Stocker21: return _lstTotlaStockers.FirstOrDefault(x => x.Module == ModuleHelper.Converter(name)); case ModuleName.FIMS1: return _fims1; case ModuleName.FIMS2: return _fims2; case ModuleName.LP1: return _lp1; case ModuleName.LP2: return _lp2; } return null; } } }