using Aitex.Core.Common; using Aitex.Core.Util; using MECF.Framework.Common.Equipment; using MECF.Framework.Common.SubstrateTrackings; using CyberX8_RT.Modules.Dummy; using CyberX8_RT.Modules; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using MECF.Framework.Common.WaferHolder; using Aitex.Core.RT.Fsm; using CyberX8_RT.Modules.Buffer; using MECF.Framework.Common.ToolLayout; using MECF.Framework.RT.Core.Equipments; namespace CyberX8_RT.Dispatch { public class DummyWaferManager : Singleton { /// /// 加载工序完完毕的WaferHolder /// /// public List LoadCompletedWaferHolderInfo() { List waferHolderInfos = new List(); List dryerModules = DryerItemManager.Instance.InstalledModules; foreach (string item in dryerModules) { WaferHolderInfo waferHolderInfo = WaferHolderManager.Instance.GetWaferHolder(item); if (waferHolderInfo == null) { continue; } if (!Enum.TryParse(item, out ModuleName dryerModuleName)) { continue; } if (WaferHolderTaskManager.Instance.CheckWaferHolderNotExist(waferHolderInfo)) { if (WaferManager.Instance.CheckHasWafer(item, 0)) { WaferInfo waferInfo = WaferManager.Instance.GetWafer(dryerModuleName, 0); if (waferInfo != null && waferInfo.WaferType == WaferType.Production) { waferHolderInfos.Add(waferHolderInfo); return waferHolderInfos; } } if (WaferManager.Instance.CheckHasWafer(item, 1)) { WaferInfo waferInfo = WaferManager.Instance.GetWafer(dryerModuleName, 1); if (waferInfo != null &&waferInfo.WaferType == WaferType.Production) { waferHolderInfos.Add(waferHolderInfo); return waferHolderInfos; } } } } List installBufferModules = BufferItemManager.Instance.InstalledModules.ToList(); foreach (string item in installBufferModules) { ModuleName moduleName=(ModuleName)Enum.Parse(typeof(ModuleName), item); BufferEntity bufferEntity = Singleton.Instance.GetModule(item); if(bufferEntity==null) { continue; } WaferHolderInfo waferHolderInfo=bufferEntity.WaferHolderInfo; if(waferHolderInfo==null) { continue; } if(WaferManager.Instance.CheckHasWafer(item,0)) { WaferInfo waferInfo = WaferManager.Instance.GetWafer(moduleName, 0); if(waferInfo!=null && waferInfo.ProcessState >= EnumWaferProcessStatus.InProcess&&waferInfo.WaferType==WaferType.Production) { waferHolderInfos.Add(waferHolderInfo); continue; } } if (WaferManager.Instance.CheckHasWafer(item, 1)) { WaferInfo waferInfo = WaferManager.Instance.GetWafer(moduleName, 1); if (waferInfo != null && waferInfo.ProcessState >= EnumWaferProcessStatus.InProcess&&waferInfo.WaferType==WaferType.Production) { waferHolderInfos.Add(waferHolderInfo); } } } return waferHolderInfos; } /// /// 通过WaferHolder加载DummyWafer /// /// /// public List LoadDummyWafersByWaferHolder(WaferHolderInfo waferHolderInfo) { List waferInfos = new List(); if(ModuleHelper.IsInstalled(ModuleName.Dummy1)) { LoadDummyWaferByDummyModule(ModuleName.Dummy1,waferHolderInfo.Id, waferInfos); } if(ModuleHelper.IsInstalled(ModuleName.Dummy2)) { LoadDummyWaferByDummyModule(ModuleName.Dummy2,waferHolderInfo.Id, waferInfos); } return waferInfos; } /// /// 通过Dummy模块加载DummyWafer /// /// /// /// private void LoadDummyWaferByDummyModule(ModuleName dummyModuleName,string waferHolderId,List waferInfos) { DummyEntity dummyEntity = Singleton.Instance.GetModule(dummyModuleName.ToString()); if (dummyEntity == null) { return; } for (int i = 0; i < dummyEntity.MaxSlotNumber; i++) { if (WaferManager.Instance.CheckNoWafer(dummyModuleName, i)) { continue; } WaferInfo waferInfo = WaferManager.Instance.GetWafer(dummyModuleName, i); if (waferInfo == null) { continue; } if (waferInfo.OrginalWaferHolder == waferHolderId) { waferInfos.Add(waferInfo); } } } } }