public LocationAlarm(Position p, int area, AreaAuthorizationRecord aar, string content, LocationAlarmLevel level, LocationAlarmType alarmType = LocationAlarmType.区域告警) { SetTime(); AlarmType = alarmType; AlarmLevel = level; LocationCardId = p.CardId; PersonnelId = p.PersonnelID; CardRoleId = p.RoleId ?? 0; //if (p.AreaId == 0) //{ // Log.Info("p.AreaId == 0"); //} if (aar != null) { AreaId = aar.AreaId; AuzId = aar.Id;//触发告警的权限规则 AllAuzId += aar.Id; } else { AreaId = area; } Content = content; AlarmId = Guid.NewGuid().ToString(); }
//List<Position> noAlarmPos = new List<Position>(); private LocationAlarm AddAlarm(Position p, int area, AreaAuthorizationRecord arr, string content, LocationAlarmLevel level, LocationAlarmType alarmType = LocationAlarmType.区域告警) { LocationAlarm alarm = new LocationAlarm(p, area, arr, content, level, alarmType); //alarms.Add(alarm); return(alarm); }
/// <summary> /// 功能:1、去除重复的正常告警,2、当卡片有正常告警和异常告警时,去除正常告警 /// </summary> /// <param name="p"></param> /// <param name="area"></param> /// <param name="arr"></param> /// <param name="content"></param> /// <param name="level"></param> /// /// <param name="newAlarmList"></param> private void RemoveDuplicateAlarms(Position p, int area, AreaAuthorizationRecord arr, string content, LocationAlarmLevel level, ref List <LocationAlarm> newAlarmList, LocationAlarmType alarmType = LocationAlarmType.区域告警) { if (level == LocationAlarmLevel.正常) { //如果缓存中 没有正常告警,添加正常告警;如果缓存中有正常告警,添加正常告警规则Id int nCount = newAlarmList.FindAll(i => i.LocationCardId == p.CardId && i.AlarmLevel != LocationAlarmLevel.正常).Count(); LocationAlarm alarm = newAlarmList.Find(i => i.LocationCardId == p.CardId && i.AlarmLevel == LocationAlarmLevel.正常); if (nCount == 0 && alarm == null) { alarm = AddAlarm(p, area, arr, content, level, alarmType); newAlarmList.Add(alarm); } else if (nCount == 0 && alarm != null) { if (arr != null) { alarm.AllAuzId += ";" + arr.Id; } else { Log.Error("AuthorizationBuffer.RemoveDuplicateAlarms", "arr==null"); } } } else { //如果缓存中有正常告警,去除正常告警,再添加异常告警 int nCount = newAlarmList.FindAll(i => i.LocationCardId == p.CardId && i.AlarmLevel == LocationAlarmLevel.正常).Count(); if (nCount > 0) { newAlarmList.RemoveAll(i => i.LocationCardId == p.CardId && i.AlarmLevel == LocationAlarmLevel.正常); } LocationAlarm alarm = AddAlarm(p, area, arr, content, level, alarmType); newAlarmList.Add(alarm); } return; }