| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439 | using System;using System.Collections.Generic;using System.Runtime.Serialization;namespace MECF.Framework.Common.CommonData{    [DataContract]    [Serializable]    public class HistoryCarrierData    {        [DataMember]        public string Guid { get; set; }        [DataMember]        public string Rfid { get; set; }        [DataMember]        public string Station { get; set; }        [DataMember]        public string LoadTime { get; set; }        [DataMember]        public string UnloadTime { get; set; }        [DataMember]        public string LotId { get; set; }        [DataMember]        public string ProductCategory { get; set; }    }    [DataContract]    [Serializable]    public class HistoryProcessData    {        [DataMember]        public string Guid { get; set; }        [DataMember]        public string StartTime { get; set; }        [DataMember]        public string EndTime { get; set; }        [DataMember]        public string RecipeName { get; set; }        [DataMember]        public string Result { get; set; }    }     [DataContract]    [Serializable]    public class HistoryWaferData    {        [DataMember]        public string Guid { get; set; }        [DataMember]        public string CreateTime { get; set; }        [DataMember]        public string DeleteTime { get; set; }        [DataMember]        public string Station { get; set; }        [DataMember]        public string Slot { get; set; }        [DataMember]        public string LaserMarker { get; set; }        [DataMember]        public string T7Code { get; set; }        [DataMember]        public string CarrierGuid { get; set; }        [DataMember]        public string WaferId { get; set; }    }    [DataContract]    [Serializable]    public class HistoryMoveData    {        [DataMember]        public string WaferGuid { get; set; }        [DataMember]        public string ArriveTime { get; set; }        [DataMember]        public string Station { get; set; }        [DataMember]        public string Slot { get; set; }        [DataMember]        public string Result { get; set; }    }    [DataContract]    [Serializable]    public class HistoryJobMoveData    {        [DataMember]        public string JobGuid { get; set; }        [DataMember]        public string Station { get; set; }        [DataMember]        public string ArriveTime { get; set; }        [DataMember]        public string LeaveTime { get; set; }    }    [DataContract]    [Serializable]    public class HistoryBatData    {        [DataMember]        public string Guid { get; set; }        [DataMember]        public string StartTime { get; set; }        [DataMember]        public string EndTime { get; set; }        [DataMember]        public string RecipeName { get; set; }        [DataMember]        public string Result { get; set; }    }    [DataContract]    [Serializable]    public class HistoryFfuDiffPressureData    {        [DataMember]        public string Time { get; set; }        [DataMember]        public string FFU1Speed { get; set; }        [DataMember]        public string FFU2Speed { get; set; }        [DataMember]        public string DiffPressure1 { get; set; }        [DataMember]        public string DiffPressure2 { get; set; }    }    public interface ITreeItem<T> where T : ITreeItem<T>, new()    {        string ID { set; get; }    }    [DataContract]    [Serializable]    public enum WaferHistoryItemType    {        [EnumMember]        None,        [EnumMember]        Lot,        [EnumMember]        Wafer,        [EnumMember]        Recipe    }    public class Anychange    {        public static string menuname { get; set; }         public static bool needchange { get; set; } = false;        public static WaferHistoryWafer args { get; set;}    }    [DataContract]    [Serializable]    public class WaferHistoryMovement    {        [DataMember]        public string Source { get; set; }        [DataMember]        public string Destination { get; set; }        [DataMember]        public string InTime { get; set; }    }    [DataContract]    [Serializable]    public class WaferHistoryWafer : WaferHistoryItem    {        [DataMember]        public string ProcessJob { get; set; }        public string WaferGuid { get; set; }        [DataMember]        public string Sequence { get; set; }        [DataMember]        public string Status { get; set; }        [DataMember]        public string Reason { get; set; }        public DateTime? ProcessStartTime { get; set; }        [DataMember]        public DateTime? ProcessEndTime { get; set; }        //[DataMember]        //public string LotID { get; set; }        [DataMember]        public string SlotID { get; set; }        public string ProcessDuration        {            get            {                if (!ProcessStartTime.HasValue || !ProcessEndTime.HasValue) return string.Empty;                return ProcessEndTime.Value.Subtract(ProcessStartTime.Value).ToString(@"hh\:mm\:ss");            }        }    }    [DataContract]    [Serializable]    public class RecipeStep    {        [DataMember]        public int No { get; set; }        [DataMember]        public string Name { get; set; }        [DataMember]        public DateTime StartTime { get; set; }        [DataMember]        public DateTime EndTime { get; set; }        [DataMember]        public string ActualTime { get; set; }        [DataMember]        public string SettingTime { get; set; }    }    [DataContract]    [Serializable]    public class RecipeStepFdcData    {        [DataMember]        public int StepNumber { get; set; }        [DataMember]        public string Name { get; set; }        [DataMember]        public float SetPoint { get; set; }        [DataMember]        public int SampleCount { get; set; }        [DataMember]        public float MinValue { get; set; }        [DataMember]        public float MaxValue { get; set; }        [DataMember]        public float StdValue { get; set; }        [DataMember]        public float MeanValue { get; set; }    }    [DataContract]    [Serializable]    public class WaferHistoryRecipe : WaferHistoryItem    {        [DataMember]        public string Chamber { get; set; }        [DataMember]        public string Recipe { get; set; }        [DataMember]        public string SettingTime { get; set; }        [DataMember]        public string ActualTime { get; set; }        [DataMember]        public List<RecipeStep> Steps { get; set; }        [DataMember]        public List<RecipeStepFdcData> Fdcs { get; set; }    }    public class WaferHistoryRecipe2 : WaferHistoryItem    {        [DataMember]        public string Chamber { get; set; }        [DataMember]        public string Recipe { get; set; }        [DataMember]        public string SettingTime { get; set; }        [DataMember]        public string ActualTime { get; set; }        [DataMember]        public List<RecipeStep> Steps { get; set; }        public object SelectedLot { get; set; }        public object SelectedWafer { get; set; }        public object SelectedProcess { get; set; }        public bool IsToCompare { get; set; } = false;        public object Cache { get; set; }// 临时的    }    [DataContract]    [Serializable]    public class WaferHistoryLot : WaferHistoryItem    {        [DataMember]        public string CarrierID { get; set; }        [DataMember]        public string Rfid { get; set; }        [DataMember]        public string InputPort { get; set; }        [DataMember]        public int WaferCount { get; set; }        [DataMember]        public int FaultWaferCount { get; set; }    }    [DataContract]    [Serializable]    public class WaferHistorySecquence : WaferHistoryItem    {        [DataMember]        public string SecquenceName { get; set; }        [DataMember]        public string Recipe { get; set; }        [DataMember]        public string SecQuenceStartTime { get; set; }        [DataMember]        public string SecQuenceEndTime { get; set; }        [DataMember]        public string ActualTime { get; set; }    }    [DataContract]    [Serializable]    public class WaferHistoryItem : ITreeItem<WaferHistoryItem>    {        [DataMember]        public WaferHistoryItemType Type { get; set; }        [DataMember]        public string Name { get; set; }        [DataMember]        public string ID { get; set; }        [DataMember]        public DateTime StartTime { get; set; }        [DataMember]        public DateTime EndTime { get; set; }        public string Duration => EndTime.CompareTo(StartTime) < 0 ? "" : EndTime.Subtract(StartTime).ToString(@"hh\:mm\:ss");        public string ItemInfo => string.IsNullOrEmpty(Name) ? "" : Name;        [DataMember]        public ITreeItem<WaferHistoryItem> SubItems { get; set; }        [DataMember]        public string RfID { get; set; }        [DataMember]        public string LotID { get; set; }    }    [DataContract]    [Serializable]    public class WaferHistoryMetrology    {        [DataMember]        public string dataname { get; set; }        [DataMember]        public string datavalue { get; set; }        [DataMember]        public string processtime { get; set; }        [DataMember]        public string stationname { get; set; }    }    [DataContract]    [Serializable]    public class FdcDataItem    {        [DataMember]        public string Name { get; set; }        [DataMember]        public float MaxValue { get; set; }        [DataMember]        public float MinValue { get; set; }        [DataMember]        public float MeanValue        {            get            {                if (SampleCount == 0)                    return 0f;                return Total / SampleCount;            }        }        [DataMember]        public float StdValue        {            get            {                if (SampleCount <= 1)                    return 0f;                return (float)Math.Sqrt(Math.Abs((SqrtTotal - 2 * (Total / SampleCount) * Total + SampleCount * (Total / SampleCount) * (Total / SampleCount)) / (SampleCount - 1)));            }        }        [DataMember]        public float SetPoint { get; set; }        [DataMember]        public float Total { get; set; }        [DataMember]        public float SqrtTotal { get; set; }        [DataMember]        public int SampleCount { get; set; }        public void Clear()        {            MaxValue = float.MinValue;            MinValue = float.MaxValue;            SetPoint = 0f;            Total = 0f;            SampleCount = 0;            SqrtTotal = 0f;        }        public void Update(float value)        {            if (value < MinValue)                MinValue = value;            if (value > MaxValue)                MaxValue = value;            Total += value;            SqrtTotal += value * value;            SampleCount++;        }        public FdcDataItem Clone()        {            var data  = new FdcDataItem();            data.SetPoint = SetPoint;            data.MaxValue = MaxValue;            data.MinValue = MinValue;            data.SampleCount = SampleCount;            data.SqrtTotal = SqrtTotal;            data.Total = Total;            data.Name = Name;            return data;        }    }}
 |