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