| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312 | 
							- using System;
 
- using System.Collections.Generic;
 
- using System.ComponentModel;
 
- using System.Linq;
 
- using System.Runtime.Serialization;
 
- using Aitex.Core.Common;
 
- using Aitex.Core.Util;
 
- using MECF.Framework.Common.CommonData;
 
- using MECF.Framework.Common.Equipment;
 
- using MECF.Framework.Common.Utilities;
 
- namespace MECF.Framework.Common.SubstrateTrackings
 
- {
 
-     public enum ProcessJobStateEnum
 
-     {
 
-         pjCREATED = -1,
 
-         pjQUEUED = 0,
 
-         pjSETTING_UP = 1,
 
-         pjWAITING_FOR_START = 2,
 
-         pjPROCESSING = 3,
 
-         pjPROCESS_COMPLETED = 4,
 
-         pjRESERVED5 = 5,
 
-         pjPAUSING = 6,
 
-         pjPAUSED = 7,
 
-         pjSTOPPING = 8,
 
-         pjABORTING = 9,
 
-         pjSTOPPED = 10,
 
-         pjABORTED = 11,
 
-         pjPROCESSJOB_COMPLETED = 12,
 
-     }
 
-     public enum CarrierStatus
 
-     {
 
-         Empty = 0,
 
-         Normal = 1,
 
-         [Description("NOFOUP")]
 
-         NOFOUP = 5,
 
-         [Description("READY")]
 
-         READY = 10,
 
-         [Description("W.CHARG")]
 
-         WCHARG = 20,
 
-         [Description("ON.BOAT")]
 
-         ONBOAT = 30,
 
-         [Description("W.DCHRG")]
 
-         WDCHRG = 40,
 
-         [Description("PRC.END")]
 
-         PRCEND = 50,
 
-         [Description("SERRE_1")]
 
-         SERRE1 = 60,
 
-         [Description("SERRE_2")]
 
-         SERRE2 = 70,
 
-         [Description("SERRE_3")]
 
-         SERRE3 = 80,
 
-         [Description("MOVECST")]
 
-         MOVECST = 90,
 
-         [Description("TRAKCST")]
 
-         TRAKCST = 100,
 
-         [Description("MAPPING")]
 
-         MAPPING = 110,
 
-     }
 
-     public enum CarrierType
 
-     {
 
-         None,
 
-         P,//Production wafer
 
-         M,//Monitor wafer
 
-         M1,//Monitor wafer
 
-         M2,//Monitor wafer
 
-         SD,//Side dummy wafer
 
-         ED,//Extra dummy wafer
 
-         XD,//Expert dummy wafer
 
-         T,//Test wafer
 
-     }
 
-     [Serializable]
 
-     [DataContract]
 
-     public class CarrierInfo : NotifiableItem
 
-     {
 
-         public bool IsEmpty
 
-         {
 
-             get { return Status == CarrierStatus.Empty; }
 
-         }
 
-         private CarrierStatus status;
 
-         [DataMember]
 
-         public CarrierStatus Status
 
-         {
 
-             get
 
-             {
 
-                 return status;
 
-             }
 
-             set
 
-             {
 
-                 status = value;
 
-                 InvokePropertyChanged(nameof(Status));
 
-             }
 
-         }
 
-         [DataMember]
 
-         public Guid InnerId { get; set; }
 
-         [DataMember]
 
-         public string Name { get; set; }
 
-         public object ProcessJob;
 
-         [DataMember]
 
-         public string CarrierId { get; set; }
 
-         [DataMember]
 
-         public int StockerIndex { get; set; }
 
-         [DataMember]
 
-         public string Rfid { get; set; }
 
-         [DataMember]
 
-         public string LotId { get; set; }
 
-         [DataMember]
 
-         public string ProductCategory { get; set; }
 
-         [DataMember]
 
-         public WaferInfo[] Wafers { get; set; }
 
-         [DataMember]
 
-         public SerializableDictionary<string, bool> ProcessStatus { get; set; }
 
-         [DataMember]
 
-         public SerializableDictionary<string, string> Attributes { get; set; }
 
-         [DataMember]
 
-         public bool IsStart { get; set; }
 
-         [DataMember]
 
-         public DateTime LoadTime { get; set; }
 
-         [DataMember]
 
-         public string JobSelectedRecipeName { get; set; }
 
-         [DataMember]
 
-         public int Priority { get; set; }
 
-         [DataMember]
 
-         public ModuleName InternalModuleName { get; set; }   //For Internal carrier only
 
-         [DataMember]
 
-         public WaferSize CarrierWaferSize { get; set; }
 
-         [DataMember]
 
-         public bool IsProcessCompleted { get; set; }
 
-         [DataMember]
 
-         public bool IsVertical { get; set; }
 
-         [DataMember]
 
-         public bool HasWaferIn { get; set; }
 
-         [DataMember]
 
-         public int NextSequenceStep { get; set; }
 
-         [DataMember]
 
-         public CarrierType CarrierType { get; set; }
 
-         [DataMember]
 
-         public bool IsMapped { get; set; }
 
-         [DataMember]
 
-         public bool IsMapOK { get; set; }
 
-         [DataMember]
 
-         public int PortID { get; set; }
 
-         public int WaferCount
 
-         {
 
-             get { return Wafers.Where(x => x != null && !x.IsEmpty).ToArray().Length; }
 
-         }
 
-         public object Job { get; set; }
 
-         [DataMember]
 
-         public string UICarrierType { get; set; } = "P1";
 
-         [DataMember]
 
-         public bool UICarrierTypeVisibility { get; set; } = true;
 
-         [DataMember]
 
-         public string UICarrierWaferCount { get; set; } = "(0)";
 
-         [DataMember]
 
-         public bool UICarrierWaferCountVisibility { get; set; } = true;
 
-         [DataMember]
 
-         public string UICarrierStatus { get { return UICarrierStatusEnum.ToDescription(); } set { } }
 
-         [DataMember]
 
-         public CarrierStatus UICarrierStatusEnum { get; set; }
 
-         [DataMember]
 
-         public bool UICarrierStatusVisibility { get; set; } = true;
 
-         [DataMember]
 
-         public string UICarrierColor { get; set; } = "#ccc";
 
-         [DataMember]
 
-         public bool UICarrierColorVisibility { get; set; } = true;
 
-         [DataMember]
 
-         public bool UIStockerExitFoup { get; set; } = false;
 
-         [DataMember]
 
-         public bool UIExitFoup { get; set; } = false;
 
-         public T GetProcessJob<T>()
 
-         {
 
-             return (T)ProcessJob;
 
-         }
 
-         public bool IsProcessed(string module)
 
-         {
 
-             return ProcessStatus.ContainsKey(module) && ProcessStatus[module];
 
-         }
 
-         public void Clear()
 
-         {
 
-             this.Status = CarrierStatus.Empty;
 
-             this.InnerId = Guid.Empty;
 
-             this.ProcessJob = null;
 
-             this.Name = "";
 
-             this.IsStart = false;
 
-             this.CarrierId = "";
 
-             this.Rfid = "";
 
-             this.JobSelectedRecipeName = "";
 
-             this.LotId = "";
 
-             this.ProductCategory = "";
 
-             this.ProcessStatus = new SerializableDictionary<string, bool>();
 
-             this.Attributes = new SerializableDictionary<string, string>();
 
-             this.Priority = 0;
 
-             this.HasWaferIn = false;
 
-             this.IsProcessCompleted = false;
 
-             this.IsVertical = false;
 
-             this.NextSequenceStep = -1;
 
-             this.Job = null;
 
-             this.CarrierType = CarrierType.None;
 
-             this.IsMapped = false;
 
-             this.IsMapOK = false;
 
-             this.UICarrierColor = "#ccc";
 
-             this.UICarrierColorVisibility = true;
 
-             this.UICarrierStatus = CarrierStatus.READY.ToDescription();
 
-             this.UICarrierStatusEnum = CarrierStatus.READY;
 
-             this.UICarrierStatusVisibility = true;
 
-             this.UICarrierType = "P1";
 
-             this.UICarrierTypeVisibility = true;
 
-             this.UICarrierWaferCount = "(0)";
 
-             this.UICarrierWaferCountVisibility = true;
 
-             this.UIStockerExitFoup = false;
 
-             this.UIExitFoup = false;
 
-             this.PortID = 0;
 
-         }
 
-         public CarrierInfo(int capacity)
 
-         {
 
-             List<WaferInfo> waferList = new List<WaferInfo>();
 
-             for (int i = 0; i < capacity; i++)
 
-             {
 
-                 waferList.Add(new WaferInfo((i+1).ToString()));
 
-             }
 
-             Wafers = waferList.ToArray();
 
-             InnerId = Guid.Empty;
 
-             Status = CarrierStatus.Empty;
 
-             ProcessStatus = new SerializableDictionary<string, bool>();
 
-             Attributes = new SerializableDictionary<string, string>();
 
-         }
 
-         public void CopyInfo(CarrierInfo source)
 
-         {
 
-             this.CarrierId = source.CarrierId;
 
-             this.InnerId = source.InnerId;
 
-             this.Attributes = source.Attributes;
 
-             this.CarrierId = source.CarrierId;
 
-             this.Rfid = source.Rfid;
 
-             this.IsStart = source.IsStart;
 
-             this.JobSelectedRecipeName = source.JobSelectedRecipeName;
 
-             this.LoadTime = source.LoadTime;
 
-             this.LotId = source.LotId;
 
-             this.Name = source.Name;
 
-             this.ProcessStatus = source.ProcessStatus;
 
-             this.Status = source.status;
 
-             this.ProductCategory = source.ProductCategory;
 
-             this.Wafers = source.Wafers;
 
-             this.ProcessJob = source.ProcessJob;
 
-             this.Priority = source.Priority;
 
-             this.CarrierWaferSize = source.CarrierWaferSize;
 
-             this.InternalModuleName = source.InternalModuleName;
 
-             this.HasWaferIn = source.HasWaferIn;
 
-             this.IsProcessCompleted = source.IsProcessCompleted;
 
-             this.IsVertical = source.IsVertical;
 
-             this.NextSequenceStep = source.NextSequenceStep;
 
-             this.Job = source.Job;
 
-             this.CarrierType = source.CarrierType;
 
-             this.IsMapped = source.IsMapped;
 
-             this.IsMapOK = source.IsMapOK;
 
-             this.UICarrierColor = source.UICarrierColor;
 
-             this.UICarrierColorVisibility = source.UICarrierColorVisibility;
 
-             this.UICarrierStatus = source.UICarrierStatus;
 
-             this.UICarrierStatusVisibility = source.UICarrierStatusVisibility;
 
-             this.UICarrierType = source.UICarrierType;
 
-             this.UICarrierTypeVisibility = source.UICarrierTypeVisibility;
 
-             this.UICarrierWaferCount = source.UICarrierWaferCount;
 
-             this.UICarrierWaferCountVisibility = source.UICarrierWaferCountVisibility;
 
-             this.UIStockerExitFoup = source.UIStockerExitFoup;
 
-             this.UICarrierStatusEnum = source.UICarrierStatusEnum;
 
-             this.UIExitFoup = source.UIExitFoup;
 
-             this.PortID = source.PortID;
 
-         }
 
-     }
 
- }
 
 
  |