using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Linq; using System.Text; using System.Threading.Tasks; using Aitex.Common.Util; using Aitex.Core.RT.Routine; using System.Xml; using MECF.Framework.UI.Client.ClientBase; using Aitex.Core.Util; namespace FurnaceUI.Models { public class FurnaceModuleUIViewModelBase : ModuleUiViewModelBase { public ModuleInfo FOUPA { get; set; } public ModuleInfo FOUPB { get; set; } public ModuleInfo FOUPC { get; set; } public ModuleInfo FOUPD { get; set; } public ModuleInfo Buffer { get; set; } public ModuleInfo PM1 { get; set; } #region Wafer info for machine public WaferInfo BufferWafer { get { if (ModuleManager.ModuleInfos["Buffer"].WaferManager.Wafers.Count > 0) return ModuleManager.ModuleInfos["Buffer"].WaferManager.Wafers[0]; return null; } } public WaferInfo PM1Wafer { get { if (ModuleManager.ModuleInfos["PM1"].WaferManager.Wafers.Count > 0) return ModuleManager.ModuleInfos["PM1"].WaferManager.Wafers[0]; return null; } } public WaferInfo EfemRobotWafer1 { get { if (ModuleManager.ModuleInfos["EfemRobot"].WaferManager.Wafers.Count > 0) return ModuleManager.ModuleInfos["EfemRobot"].WaferManager.Wafers[0]; return null; } } public WaferInfo EfemRobotWafer2 { get { if (ModuleManager.ModuleInfos["EfemRobot"].WaferManager.Wafers.Count > 1) return ModuleManager.ModuleInfos["EfemRobot"].WaferManager.Wafers[1]; return null; } } #endregion protected void InitFOUP() { FOUPA = ModuleManager.ModuleInfos["LP1"]; FOUPB = ModuleManager.ModuleInfos["LP2"]; //FOUPC = ModuleManager.ModuleInfos["LP3"]; } protected void InitBuffer() { Buffer = ModuleManager.ModuleInfos["Buffer"]; } protected void InitPM() { PM1 = ModuleManager.ModuleInfos["PM1"]; } } public class FurnaceUIViewModelBase : UiViewModelBase { [Subscription("PM1.IsOnline")] public bool IsOnline { get; set; } public static List GetXmlElement(string fileName, string type, bool isSystem = false) { List result = new List(); XmlDocument xmlDoc = new XmlDocument(); var cfDirPath = PathManager.GetCfgDir(); xmlDoc.Load(cfDirPath + $"IO\\{fileName}.xml"); var node = xmlDoc.SelectSingleNode("DeviceModelDefine") as XmlElement; foreach (XmlElement item in node.ChildNodes) { var classType = item.GetAttribute("classType"); if (string.IsNullOrEmpty(classType)) continue; classType = classType.Split('.').LastOrDefault(); if (type != classType) continue; foreach (XmlElement children in item.ChildNodes) { var key = $"PM1.{children.GetAttribute("id")}.DeviceData"; if (result.Contains(key)) continue; result.Add(key); } } return result; } private string _leveldisplay; public string LevelDisplay { get { switch (BaseApp.Instance.UserContext.RoleName) { case "Manager": case "Engineer": _leveldisplay = "LEVEL3"; break; case "Technician": _leveldisplay = "LEVEL2"; break; case "Operator": _leveldisplay = "LEVEL1"; break; default: _leveldisplay = "LEVEL1"; break; } return _leveldisplay; } } public string SystemName { get; set; } private string _bATCHTitle = "LOAD A BATCH P"; public string BATCHTitle { get => _bATCHTitle; set { _bATCHTitle = value; NotifyOfPropertyChange("BATCHTitle"); } } public ModuleInfo FOUPA { get; set; } public ModuleInfo FOUPB { get; set; } public ModuleInfo FOUPC { get; set; } public ModuleInfo FOUPD { get; set; } //public ModuleInfo EFEM { get; set; } public ModuleInfo PM1 { get; set; } #region Wafer info for machine public WaferInfo PM1Wafer { get { if (ModuleManager.ModuleInfos["PM1"].WaferManager.Wafers.Count > 0) return ModuleManager.ModuleInfos["PM1"].WaferManager.Wafers[0]; return null; } } public WaferInfo WaferRobotWafer1 { get { if (ModuleManager.ModuleInfos["WaferRobot"].WaferManager.Wafers.Count > 0) return ModuleManager.ModuleInfos["WaferRobot"].WaferManager.Wafers[0]; return null; } } public WaferInfo WaferRobotWafer2 { get { if (ModuleManager.ModuleInfos["WaferRobot"].WaferManager.Wafers.Count > 1) return ModuleManager.ModuleInfos["WaferRobot"].WaferManager.Wafers[1]; return null; } } public WaferInfo WaferRobotWafer3 { get { if (ModuleManager.ModuleInfos["WaferRobot"].WaferManager.Wafers.Count > 2) return ModuleManager.ModuleInfos["WaferRobot"].WaferManager.Wafers[2]; return null; } } public WaferInfo WaferRobotWafer4 { get { if (ModuleManager.ModuleInfos["WaferRobot"].WaferManager.Wafers.Count > 3) return ModuleManager.ModuleInfos["WaferRobot"].WaferManager.Wafers[3]; return null; } } public WaferInfo WaferRobotWafer5 { get { if (ModuleManager.ModuleInfos["WaferRobot"].WaferManager.Wafers.Count > 4) return ModuleManager.ModuleInfos["WaferRobot"].WaferManager.Wafers[4]; return null; } } #endregion protected void InitTM() { } protected void InitLL() { } protected void InitEFEM() { //EFEM = ModuleManager.ModuleInfos["EfemRobot"]; } protected void InitFOUP() { //FOUPA = ModuleManager.ModuleInfos["LP1"]; //FOUPB = ModuleManager.ModuleInfos["LP2"]; //FOUPC = ModuleManager.ModuleInfos["LP3"]; //FOUPD = ModuleManager.ModuleInfos["LP4"]; } protected void InitBuffer() { //Buffer1 = ModuleManager.ModuleInfos["Buffer1"]; //Buffer2 = ModuleManager.ModuleInfos["Buffer2"]; //Robot1Wafer = ModuleManager.ModuleInfos["Robot1"]; //Robot2Wafer = ModuleManager.ModuleInfos["Robot2"]; } protected void InitPM() { } } }