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;
- }
- }
- }
|