| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167 | using Aitex.Core.Common;using Aitex.Core.RT.DataCenter;using Aitex.Core.Util;using DocumentFormat.OpenXml.EMMA;using DocumentFormat.OpenXml.Vml;using MECF.Framework.Common.Equipment;using MECF.Framework.Common.SubstrateTrackings;using MECF.Framework.Common.ToolLayout;using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace MECF.Framework.Common.SubstrateTrackings{    public class MaterialTrackerManager : Singleton<MaterialTrackerManager>    {        #region 内部变量        /// <summary>        /// 模块资源集合        /// </summary>        private List<ModuleMaterial> _moduleMaterials = new List<ModuleMaterial>();        /// <summary>        /// 模块资源(key-模块名称,value-资源)        /// </summary>        private Dictionary<string, ModuleMaterial> _moduleMaterialDic = new Dictionary<string, ModuleMaterial>();        #endregion        /// <summary>        /// 初始化        /// </summary>        public void Initialize()        {            InitialModuleMaterial(ModuleName.PUF1.ToString());            InitialModuleMaterial(ModuleName.PUF2.ToString());            InitialModuleMaterial(ModuleName.Loader1.ToString());            InitialModuleMaterial(ModuleName.Transporter2.ToString());            InitialModuleMaterial(ModuleName.Transporter1.ToString());            InitializeModulesMaterial(PrewetItemManager.Instance.InstalledModules);            InitializeModulesMaterial(MetalItemManager.Instance.InstalledModules);            InitializeModulesMaterial(RinseItemManager.Instance.InstalledModules);            InitializeModulesMaterial(SrdItemManager.Instance.InstalledModules);            InitializeData();        }        /// <summary>        /// 初始化数据        /// </summary>        private void InitializeData()        {            DATA.Subscribe("System.ModuleMaterials", () => _moduleMaterials, SubscriptionAttribute.FLAG.IgnoreSaveDB);        }        /// <summary>        /// 初始化Buffer模块        /// </summary>        private void InitializeModulesMaterial(List<string> lst)        {            foreach (string item in lst)            {                InitialModuleMaterial(item);            }        }        /// <summary>        /// 初始化模块资源        /// </summary>        /// <param name="moduleName"></param>        private void InitialModuleMaterial(string moduleName)        {            if (Enum.TryParse(moduleName, out ModuleName module))            {                if (ModuleHelper.IsInstalled(module))                {                    ModuleMaterial moduleMaterial = new ModuleMaterial();                    moduleMaterial.ModuleName = moduleName;                    moduleMaterial.SideAWaferType = "";                    moduleMaterial.SideBWaferType = "";                    UpdateModuleMaterial(moduleMaterial, moduleName);                    _moduleMaterialDic[moduleName] = moduleMaterial;                    _moduleMaterials.Add(moduleMaterial);                }            }        }        /// <summary>        /// 是否WaferHolder模块        /// </summary>        /// <param name="moduleName"></param>        /// <returns></returns>        private bool IsModuleWaferHolder(ModuleName moduleName)        {            if(ModuleHelper.IsRinse(moduleName))            {                return true;            }            if (ModuleHelper.IsMetal(moduleName))            {                return true;            }            if (ModuleHelper.IsDry(moduleName))            {                return true;            }            if (ModuleHelper.IsBuffer(moduleName))            {                return true;            }            if (moduleName == ModuleName.Transporter1 || moduleName == ModuleName.Transporter2 ||                     moduleName == ModuleName.Loader1||moduleName==ModuleName.Prewet1)            {                return true;            }            return false;        }        /// <summary>        /// 更新模块资源        /// </summary>        public void UpdateModuleMaterial(string moduleName)        {            if (moduleName == "Loader")            {                moduleName = ModuleName.Loader1.ToString();            }            if (_moduleMaterialDic.ContainsKey(moduleName))            {                ModuleMaterial moduleMaterial = _moduleMaterialDic[moduleName];                UpdateModuleMaterial(moduleMaterial,moduleName);            }        }        /// <summary>        /// 更新模块资源        /// </summary>        /// <param name="moduleMaterial"></param>        /// <param name="moduleName"></param>        private void UpdateModuleMaterial(ModuleMaterial moduleMaterial,string moduleName)        {            if (Enum.TryParse(moduleName, out ModuleName module))            {                    moduleMaterial.WaferHolderId = "";                    if (WaferManager.Instance.CheckHasWafer(module, 0))                    {                        WaferInfo waferAInfo = WaferManager.Instance.GetWafer(module, 0);                        moduleMaterial.SideAWaferStatus =WaferManager.Instance.WaferStatusConverter(waferAInfo);                        moduleMaterial.SideAWaferId = waferAInfo.WaferID;                        moduleMaterial.SideAWaferType = waferAInfo.WaferType.ToString();                    }                    else                    {                        moduleMaterial.SideAWaferStatus = (int)WaferStatus.Empty;                        moduleMaterial.SideAWaferId = "";                        moduleMaterial.SideAWaferType = "";                    }                    if (WaferManager.Instance.CheckHasWafer(module, 1))                    {                        WaferInfo waferBInfo = WaferManager.Instance.GetWafer(module, 1);                        moduleMaterial.SideBWaferStatus =WaferManager.Instance.WaferStatusConverter(waferBInfo);                        moduleMaterial.SideBWaferId = waferBInfo.WaferID;                        moduleMaterial.SideBWaferType = waferBInfo.WaferType.ToString();                    }                    else                    {                        moduleMaterial.SideBWaferStatus = (int)WaferStatus.Empty;                        moduleMaterial.SideBWaferId = "";                        moduleMaterial.SideBWaferType = "";                    }            }        }    }}
 |