| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149 | 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<DummyWaferManager>    {        /// <summary>        /// 加载工序完完毕的WaferHolder        /// </summary>        /// <returns></returns>        public List<WaferHolderInfo> LoadCompletedWaferHolderInfo()        {            List<WaferHolderInfo> waferHolderInfos = new List<WaferHolderInfo>();            List<string> 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<string> installBufferModules = BufferItemManager.Instance.InstalledModules.ToList();            foreach (string item in installBufferModules)            {                ModuleName moduleName=(ModuleName)Enum.Parse(typeof(ModuleName), item);                BufferEntity bufferEntity = Singleton<RouteManager>.Instance.GetModule<BufferEntity>(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;        }        /// <summary>        /// 通过WaferHolder加载DummyWafer        /// </summary>        /// <param name="waferHolderInfo"></param>        /// <returns></returns>        public List<WaferInfo> LoadDummyWafersByWaferHolder(WaferHolderInfo waferHolderInfo)        {            List<WaferInfo> waferInfos = new List<WaferInfo>();            if(ModuleHelper.IsInstalled(ModuleName.Dummy1))            {                LoadDummyWaferByDummyModule(ModuleName.Dummy1,waferHolderInfo.Id, waferInfos);            }            if(ModuleHelper.IsInstalled(ModuleName.Dummy2))            {                LoadDummyWaferByDummyModule(ModuleName.Dummy2,waferHolderInfo.Id, waferInfos);            }            return waferInfos;        }        /// <summary>        /// 通过Dummy模块加载DummyWafer        /// </summary>        /// <param name="moduleName"></param>        /// <param name="orginalModuleName"></param>        /// <param name="waferInfos"></param>        private void LoadDummyWaferByDummyModule(ModuleName dummyModuleName,string waferHolderId,List<WaferInfo> waferInfos)        {            DummyEntity dummyEntity = Singleton<RouteManager>.Instance.GetModule<DummyEntity>(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);                }            }        }            }}
 |