示例#1
0
        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();
        }
示例#2
0
        //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);
        }
示例#3
0
        /// <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;
        }