using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Runtime.Serialization; using Aitex.Core.Util; namespace Aitex.Core.RT.Event { [DataContract] [Serializable] public enum EventLevel { [EnumMember] Information = 0, [EnumMember] Warning, [EnumMember] Alarm } [DataContract] [Serializable] public enum EventType { /// /// 在TopView显示一条记录 /// [EnumMember] EventUI_Notify, /// /// 弹出对话框 /// [EnumMember] Dialog_Nofity, /// /// /// [EnumMember] KickOut_Notify, /// /// /// [EnumMember] Sound_Notify, /// /// 在屏幕左下角弹出一个提醒的悬浮窗口,自动消失 /// [EnumMember] UIMessage_Notify, [EnumMember] OperationLog, [EnumMember] HostNotification, } [DataContract] [Serializable] public enum EventAction { [EnumMember] Clear = 0, [EnumMember] Retry, [EnumMember] ClearAndRetry, [EnumMember] ContinueAndStopProcessAndRemoveWafer, } [DataContract] [Serializable] public enum EventGroup { [EnumMember] Group0 = 0, [EnumMember] Group1, [EnumMember] Group2, [EnumMember] Group3, [EnumMember] Group4, [EnumMember] Group5, [EnumMember] Group6, [EnumMember] Group7, [EnumMember] Group8, [EnumMember] Group9, [EnumMember] Group10, } [DataContract] [Serializable] public class EventItem { [DataMember] public long Id { get; set; } [DataMember] public int RoleId { get; set; } [DataMember] public string UserName { get; set; } [DataMember] public string DisplayName { get; set; } = ""; [DataMember] public string EventEnum { get; set; } // [DataMember] public EventType Type { get; set; } = EventType.EventUI_Notify; [DataMember] public EventLevel Level { get; set; } = EventLevel.Information; [DataMember] public string Source { get; set; } //Which module send out this event [DataMember] public string Description { get; set; } = ""; //detail text [DataMember] public string AdditionalDescription { get; set; } = ""; //补充描述 [DataMember] public DateTime OccuringTime { get; set; } // [DataMember] public bool IsAcknowledged { get; set; } = true; [DataMember] public string Explaination { get; set; } = "No information available"; [DataMember] public string Solution { get; set; } = "No information available"; [DataMember] public int RetryMessage { get; set; } = -1; [DataMember] public object[] RetryMessageParas { get; set; } [DataMember] public int Count { get; set; }//发生的次数 [DataMember] public EventAction Action { get; set; } = EventAction.Clear;//处理方式 [DataMember] public bool Bypass { get; set; } = false;//是否忽略 [DataMember] public bool AutoRecovery { get; set; } = false;//是否自动清除 [DataMember] public EventGroup Group { get; set; } = EventGroup.Group0;//分组 [DataMember] public string Category { get; set; } = ""; [DataMember] public bool Editable { get; set; } = true;//是否可修改 [DataMember] public string GlobalDescription_en { get; set; } [DataMember] public string GlobalDescription_zh { get; set; } [DataMember] public SerializableDictionary DVID { get; set; } public SerializableDictionary ObjDVID { get; set; } public bool IsTriggered { get { return !IsAcknowledged; } } public EventItem Clone() { EventItem result = new EventItem(); result.Description = Description; result.EventEnum = EventEnum; result.Explaination = Explaination; result.Id = Id; result.RoleId = RoleId; result.UserName = UserName; result.DisplayName = DisplayName; result.IsAcknowledged = IsAcknowledged; result.Level = Level; result.OccuringTime = OccuringTime; result.Solution = Solution; result.Source = Source; result.Type = Type; result.RetryMessage = RetryMessage; result.Count = Count; result.Action = Action; result.Bypass = Bypass; result.AutoRecovery = AutoRecovery; result.Group = Group; result.Editable = Editable; result.Category = Category; result.GlobalDescription_en = GlobalDescription_en; result.GlobalDescription_zh = GlobalDescription_zh; result.DVID = DVID; result.ObjDVID = ObjDVID; return result; } public void Clone(EventItem item) { this.Description = item.Description; this.EventEnum = item.EventEnum; this.Explaination = item.Explaination; this.Id = item.Id; this.RoleId = item.RoleId; this.UserName = item.UserName; this.DisplayName = item.DisplayName; this.IsAcknowledged = item.IsAcknowledged; this.Level = item.Level; this.OccuringTime = item.OccuringTime; this.Solution = item.Solution; this.Source = item.Source; this.Type = item.Type; this.RetryMessage = item.RetryMessage; this.Count = item.Count; this.Action = item.Action; this.Bypass = item.Bypass; this.AutoRecovery = item.AutoRecovery; this.Group = item.Group; this.Editable = item.Editable; this.Category = item.Category; this.GlobalDescription_en = item.GlobalDescription_en; this.GlobalDescription_zh = item.GlobalDescription_zh; this.DVID = item.DVID; this.ObjDVID = item.ObjDVID; } public EventItem Clone(SerializableDictionary objDvid) { EventItem result = new EventItem(); result.Description = Description; result.EventEnum = EventEnum; result.Explaination = Explaination; result.Id = Id; result.RoleId = RoleId; result.UserName = UserName; result.DisplayName = DisplayName; result.IsAcknowledged = IsAcknowledged; result.Level = Level; result.OccuringTime = OccuringTime; result.Solution = Solution; result.Source = Source; result.Type = Type; result.RetryMessage = RetryMessage; result.Count = Count; result.Action = Action; result.Bypass = Bypass; result.AutoRecovery = AutoRecovery; result.Group = Group; result.Editable = Editable; result.Category = Category; result.GlobalDescription_en = GlobalDescription_en; result.GlobalDescription_zh = GlobalDescription_zh; result.DVID = DVID; result.ObjDVID = objDvid; return result; } public EventItem() { } public EventItem(string name) : this(0, "System", name, "", EventLevel.Information, EventType.EventUI_Notify) { } public EventItem(string name, string description) : this(0, "System", name, description, EventLevel.Information, EventType.EventUI_Notify) { } public EventItem(string source, string name, string description) : this(0, source, name, description, EventLevel.Information, EventType.EventUI_Notify) { } public EventItem(string name, EventType type, EventLevel level) : this(0, "System", name, "", level, type) { } public EventItem(string source, string name, string description, EventLevel level, EventType type) : this(0, source, name, description, level, type) { } public EventItem(string source, string name, string description,string explaination, EventLevel level= EventLevel.Alarm, EventType type= EventType.EventUI_Notify) : this(0, source, name, description, level, type) { Explaination = explaination; } public EventItem(int id, string source, string name, string description, EventLevel level, EventType type) { EventEnum = name; Type = type; Level = level; Source = source; Description = description; Id = id; } } }