| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230 | 
							- using System;
 
- using System.Collections.Generic;
 
- 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;
 
- 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,
 
-     }
 
-     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; }
 
-         public int WaferCount
 
-         {
 
-             get { return Wafers.Where(x => x != null && !x.IsEmpty).ToArray().Length; }
 
-         }
 
-         public object Job { get; set; }
 
-         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;
 
-         }
 
-         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;
 
-         }
 
-     }
 
- }
 
 
  |