public ActionResult Create(AreaAuthorizationRecord aa, FormCollection col) { if (ModelState.IsValid) { //aa.RepeatDay = col["RepeatType"]; aa.CreateTime = DateTime.Now; aa.ModifyTime = null; aa.DeleteTime = null; //aa.SetTimeSpane(); //bll.JurisDictions.Add(jd); //return RedirectToAction("Index"); var result = bll.AreaAuthorizationRecords.Add(aa); if (result) { return(Json(new { success = result })); } else { return(Json(new { success = result, errors = bll.AreaAuthorizationRecords.ErrorMessage })); } } GetListToViewBag(); return(View(aa)); }
private void BtnSubmit_OnClick(object sender, RoutedEventArgs e) { Bll bll = AppContext.GetLocationBll(); var aa = new AreaAuthorization(); aa.Name = TbName.Text; aa.Description = TbDescription.Text; var area = CbAreaList.SelectedItem as PhysicalTopology; aa.AreaId = area.Id; if (bll.AreaAuthorizations.Add(aa) == false) { MessageBox.Show("添加失败1"); } var role = CbAreaList.SelectedItem as CardRole; var aar = new AreaAuthorizationRecord(aa, role); if (bll.AreaAuthorizationRecords.Add(aar) == false) { MessageBox.Show("添加失败2"); } MessageBox.Show("添加成功"); }
private void MenuAddRecord_OnClick(object sender, RoutedEventArgs e) { AreaAuthorization aa = DataGrid1.SelectedItem as AreaAuthorization; if (aa == null) { return; } var win = new CardRoleWindow(); win.ShowOkButton(); if (win.ShowDialog() == true) { //var roles = win.GetSelectedRoles(); //foreach (var role in roles) //{ // AreaAuthorizationRecord aar = new AreaAuthorizationRecord(aa, role); // if (aarService.Post(aar) == null) // { // MessageBox.Show("分配权限失败"); // break; // } //} var role = win.Role; if (role != null) { AreaAuthorizationRecord aar = new AreaAuthorizationRecord(aa, role); if (aarService.Post(aar) == null) { MessageBox.Show("分配权限失败"); } } } }
public ActionResult Create() { AreaAuthorizationRecord jd = new AreaAuthorizationRecord(); GetListToViewBag(); return(PartialView(jd)); }
/// <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) { 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); newAlarmList.Add(alarm); } else if (nCount == 0 && alarm != null) { alarm.AllAuzId += ";" + arr.Id; } } 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); newAlarmList.Add(alarm); } return; }
//List<Position> noAlarmPos = new List<Position>(); private LocationAlarm AddAlarm(Position p, int area, AreaAuthorizationRecord arr, string content, LocationAlarmLevel level) { LocationAlarm alarm = new LocationAlarm(p, area, arr, content, level); //alarms.Add(alarm); return(alarm); }
public LocationAlarm(Position p, int area, AreaAuthorizationRecord aar, string content, LocationAlarmLevel level) { SetTime(); AlarmType = LocationAlarmType.区域告警; 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(); }
public ActionResult Delete(int?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } AreaAuthorizationRecord jd = bll.AreaAuthorizationRecords.Find(id); if (jd == null) { return(HttpNotFound()); } jd.Area = bll2.Areas.Find(p => p.Id == jd.AreaId); //return View(jd); return(PartialView(jd)); }
private void AddAAR(CardRole role, AreaAuthorization aa) { var aar = new AreaAuthorizationRecord(aa, role); if (authorizationRecords == null) { authorizationRecords = new List <AreaAuthorizationRecord>(); } authorizationRecords.Add(aar); AreaAuthorizationRecords.Add(aar); if (authorizationAreas != null) { var aa2 = authorizationAreas.Find(i => i.Id == aa.AreaId); if (aa2 != null) { aa2.Records.Add(aar); } } }
public ActionResult Edit(AreaAuthorizationRecord jd, FormCollection col) { if (ModelState.IsValid) { jd.ModifyTime = DateTime.Now; //jd.RepeatDay = col["RepeatDay"]; var result = bll.AreaAuthorizationRecords.Edit(jd); if (result) { return(Json(new { success = result })); } else { return(Json(new { success = result, errors = bll.AreaAuthorizationRecords.ErrorMessage })); } } GetListToViewBag(); return(View(jd)); }
private void CreateAllAuthorizationRecord() { //权限指派给标签角色 foreach (var aa in areaAuthorizations) { var aa2 = authorizationAreas.Find(i => i.Id == aa.AreaId); foreach (var role in _roles) { var aar = new AreaAuthorizationRecord(aa, role); authorizationRecords.Add(aar); aa2.Records.Add(aar); } //1.超级管理员能够进入全部区间 //2.管理人员也能进入全部区域 //3.巡检人员和维修人员能够进入生产区域 //4.参观人员(高级)能够进入生活区域和大部分生产区域 //5.参观人员(一般)能够进入生活区域和少部分生产区域 } AreaAuthorizationRecords.AddRange(authorizationRecords); }
public bool SetCardRoleAccessAreas(int roleId, List <int> areaIds) { try { HashSet <int> areaIdHs = new HashSet <int>(areaIds); //保证角色对应区域唯一性 var bll = AppContext.GetLocationBll(); var aarService = new AreaAuthorizationRecordService(bll); var aaService = new AreaAuthorizationService(bll); var roleService = new TagRoleService(bll); var role = roleService.GetEntity(roleId + ""); var aarList = aarService.GetListByRole(roleId + ""); List <int> removeList = new List <int>(); List <int> newList = new List <int>(); for (int i = 0; i < aarList.Count; i++) { var aar = aarList[i]; if (aar.AccessType == AreaAccessType.能进入) //设置的是可以进入的权限,同时要把不能进入的权限都删了 { //removeList.Add(aarList[i].Id); var r = aarService.Delete(aar.Id + ""); aarList.RemoveAt(i); i--; } } List <int> areasIds = new List <int>(); foreach (var item in aarList) { if (item.Area != null) { int areaId = item.Area.Id; if (!areasIds.Contains(areaId)) { areasIds.Add(areaId); //保证areasIds唯一性 } } } foreach (var item in areaIdHs) { if (areasIds.Contains(item)) { areasIds.Remove(item); } else { newList.Add(item); } } removeList.AddRange(areasIds); foreach (var areaId in removeList) { //var aar = aarList.FirstOrDefault(i => i.Area!=null&&i.Area.Id == areaId); //if (aar != null) //{ // var r = aarService.Delete(aar.Id + ""); //} //权限表中,出现过AreaId和cardId对应并重复的数据。现在取消权限时,把AreadId重复的都删除掉 aarService.RemoveListByAreaId(areaId, aarList); } foreach (var areaId in newList) { var list = aaService.GetListByArea(areaId + ""); if (list.Count == 0)//新增的区域没有对应的权限设置数据 { var aaNew = AreaAuthorization.New(); aaNew.AreaId = areaId; //根节点 aaNew.AccessType = AreaAccessType.可以进出; //可进入的权限 aaNew.RangeType = AreaRangeType.Single; string areaType = "区域"; aaNew.Name = string.Format("权限[" + areaType + "]"); aaNew.Description = string.Format("权限:可以进入" + areaType + "。"); var aaNewR = aaService.Post(aaNew); list.Add(aaNewR);//后续挪动到aaService里面。 } var aa = list.FirstOrDefault(i => i.AccessType == AreaAccessType.可以进出); if (aa != null) { var aar = new AreaAuthorizationRecord(aa, role); var r = aarService.Post(aar); } else { Log.Error("SetCardRoleAccessAreas", "为找到区域对应的权限数据:" + areaId); } } RefreshData(); } catch (Exception ex) { Log.Error(tag, "SetCardRoleAccessAreas", ex.ToString()); return(false); } return(true); }
/// <summary> /// 产生告警 /// </summary> /// <param name="list1"></param> /// <returns></returns> private List <LocationAlarm> GenerateAreaAlarm(List <Position> list1) { List <LocationAlarm> newAlarmList = new List <LocationAlarm>(); if (list1 == null) { Log.Error(tag, "GenerateAreaAlarm", "list1 == null"); return(newAlarmList); } foreach (Position p in list1) { if (p == null || p.IsAreaNull() || p.PersonnelID == null || p.AreaId == null || p.IsDynamicAreaPos) { continue; } CardRole role = roles.Find(i => i.Id == p.RoleId); if (role == null) { int pAreaId = (int)p.AreaId; //RemoveDuplicateAlarms(p, pAreaId, null, "标签未配置区域权限。", LocationAlarmLevel.四级告警, ref newAlarmList); continue; } string personDepartment = GetPersonDepartInfo(p.PersonnelID, p.Code); foreach (var area in p.Areas) { AreaAuthorizationRecord aar = aarList.Find(i => i.AreaId == area.Id && i.CardRoleId == role.Id); if (aar != null) { LocationAlarm la = realAlarms.Find(j => j.LocationCardId == p.CardId && j.AreaId == area.Id); DateTime dtBegin = p.DateTime; DateTime dtEnd = p.DateTime; if (la != null) { dtBegin = la.AlarmTime; } TimeSpan ts = dtEnd.Subtract(dtBegin).Duration(); int nTimeStamp = Convert.ToInt32(ts.TotalMinutes); if (aar.AccessType == AreaAccessType.能进入) { RemoveDuplicateAlarms(p, area.Id, null, string.Format("人员:{0},在区域'{1}'未配置权限。", personDepartment, area), LocationAlarmLevel.四级告警, ref newAlarmList); } else { //if (aar.IsTimeValid(dtBegin, dtEnd, nTimeStamp) == false) //{ // RemoveDuplicateAlarms(p, area.Id, aar, string.Format("可以进入区域'{0}',但是未在有效时间范围内。", area), LocationAlarmLevel.四级告警, ref newAlarmList); //} //else { RemoveDuplicateAlarms(p, area.Id, aar, string.Format("正常,所在区域:{0}", area), LocationAlarmLevel.正常, ref newAlarmList); } } } else { if (role.Id == 1 || role.Name == SuperUserName)//超级管理员 { RemoveDuplicateAlarms(p, area.Id, null, string.Format("正常,所在区域:{0}", area), LocationAlarmLevel.正常, ref newAlarmList); } else { RemoveDuplicateAlarms(p, area.Id, null, string.Format("人员:{0},在区域'{1}'未配置权限。", personDepartment, area), LocationAlarmLevel.四级告警, ref newAlarmList); } } } } return(newAlarmList); }
public List <LocationAlarm> GetAlarms(List <Position> list1) { alarms = new List <LocationAlarm>(); posAlarms = new Dictionary <Position, List <LocationAlarm> >(); LoadData(); foreach (Position p in list1) { if (p == null) { continue; } if (p.IsAreaNull()) { AddAlarm(p, 0, null, "不在园区有效区域内。", LocationAlarmLevel.四级告警); continue; } List <LocationAlarm> posAlarmState = new List <LocationAlarm>(); //告警状态 List <LocationAlarm> posNormalState = new List <LocationAlarm>(); //正常状态 List <Position> noAlarmPos = new List <Position>(); CardRole role = roles.Find(i => i.Id == p.RoleId); if (role != null) { foreach (var area in p.Areas) { AreaAuthorizationRecord aar = aarList.Find(i => i.AreaId == area.Id && i.CardRoleId == role.Id); string personDepartment = GetPersonDepartInfo(p.PersonnelID, p.Code); if (aar != null) { LocationAlarm la = realAlarms.Find(j => j.LocationCardId == p.CardId && j.AreaId == area.Id); DateTime dtBegin = p.DateTime; DateTime dtEnd = p.DateTime; if (la != null) { dtBegin = la.AlarmTime; } TimeSpan ts = dtEnd.Subtract(dtBegin).Duration(); int nTimeStamp = Convert.ToInt32(ts.TotalMinutes); if (aar.AccessType == AreaAccessType.能进入) { //string.Format("标签角色'{0}'在区域'{1}'未配置权限。", role, area) posAlarmState.Add(AddAlarm(p, area.Id, null, string.Format("人员:{0},在区域'{1}'未配置权限。", personDepartment, area), LocationAlarmLevel.四级告警)); } else { //if (aar.IsTimeValid(dtBegin, dtEnd, nTimeStamp) == false) //{ // posAlarmState.Add(AddAlarm(p, area.Id, aar, string.Format("可以进入区域'{0}',但是未在有效时间范围内。", area), LocationAlarmLevel.四级告警)); //} //else //{ // posNormalState.Add(AddAlarm(p, area.Id, aar, string.Format("正常,所在区域:{0}", area), LocationAlarmLevel.正常)); // noAlarmPos.Add(p); //} } } else { if (role.Id == 1)//超级管理员 { posNormalState.Add(AddAlarm(p, area.Id, null, string.Format("正常,所在区域:{0}", area), LocationAlarmLevel.正常)); noAlarmPos.Add(p); } else { posAlarmState.Add(AddAlarm(p, area.Id, null, string.Format("人员:{0},在区域'{1}'未配置权限。", personDepartment, area), LocationAlarmLevel.四级告警)); } } } } else { posAlarmState.Add(AddAlarm(p, 0, null, "标签未配置区域权限。", LocationAlarmLevel.四级告警)); } //1.找出区域相关的所有权限 //2.判断当前定位卡是否有权限进入该区域 // 2.1找的卡所在的标签角色 // 2.2判断该组是否是在权限内 // 2.3不在则发出警告,进入非法区域 // 2.4默认标签角色CardRole 1.超级管理员、巡检人员、管理人员、施工人员、参观人员 //p.AreaId if (posAlarmState.Count > 0 && posNormalState.Count > 0)//存在告警状态和正常状态,则去掉正常状态 { posNormalState.Clear(); } List <LocationAlarm> posAlarm0 = new List <LocationAlarm>(); foreach (var item in posAlarmState) { alarms.Add(item); posAlarm0.Add(item); } if (posNormalState.Count > 0)//在一个区域内的多个规则的正常告警(状态)合并成一个 { if (posNormalState.Count > 1) { for (int i = 1; i < posNormalState.Count; i++) { posNormalState[0].AllAuzId += ";" + posNormalState[i].AuzId; } } alarms.Add(posNormalState[0]); posAlarm0.Add(posNormalState[0]); } posAlarms[p] = posAlarm0; } if (alarms.Count > 1) { } return(alarms); }
private void SetRoleAuthorization5(List <Area> areaList) { List <AreaAuthorization> temp = new List <AreaAuthorization>(); List <CardRole> temp2 = new List <CardRole>(); for (int j = 1; j <= 4; j++) { var role = _roles[j]; foreach (var area in areaList) { var aa = AreaAuthorization.New(); aa.AreaId = area.Id; //根节点 aa.AccessType = AreaAccessType.可以进出; //可进入的权限 aa.RangeType = AreaRangeType.WithParent; aa.Name = string.Format("权限[机房]"); aa.Description = string.Format("权限:可以进入机房。"); areaAuthorizations.Add(aa); temp.Add(aa); temp2.Add(role); //AreaAuthorizations.Add(aa); //AddAAR(role, aa); } } AreaAuthorizations.AddRange(temp); if (authorizationRecords == null) { authorizationRecords = new List <AreaAuthorizationRecord>(); } List <AreaAuthorizationRecord> temp3 = new List <AreaAuthorizationRecord>(); for (int i = 0; i < temp.Count; i++) { var role = temp2[i]; var aa = temp[i]; //AddAAR(role, aa); var aar = new AreaAuthorizationRecord(aa, role); authorizationRecords.Add(aar); temp3.Add(aar); //AreaAuthorizationRecords.Add(aar); //if (authorizationAreas != null) //{ // var aa2 = authorizationAreas.Find(item => item.Id == aa.AreaId); // if (aa2 != null) // { // aa2.Records.Add(aar); // } //} } AreaAuthorizationRecords.AddRange(temp3); foreach (var aar in temp3) { if (authorizationAreas != null) { var aa2 = authorizationAreas.Find(item => item.Id == aar.AreaId); if (aa2 != null) { aa2.Records.Add(aar); } } } }
private List <LocationAlarm> GetAlarmList() { List <LocationAlarm> list = new List <LocationAlarm>(); try { List <Personnel> personnelList = db.Personnels.ToList(); List <Area> areaList = db.Areas.ToList(); List <AreaAuthorizationRecord> aarList = db.AreaAuthorizationRecords.FindAll(i => i.SignIn == true); foreach (Personnel person in personnelList) { string strsql = string.Format(@"select a.* from cardroles a inner join locationcards b on a.id=b.CardRoleId inner join locationcardtopersonnels c on b.id=c.LocationCardId where c.PersonnelId=" + person.Id); CardRole role = db.CardRoles.GetDataBySql <CardRole>(strsql); LocationCardToPersonnel card = db.LocationCardToPersonnels.Find(i => i.PersonnelId == person.Id); if (role == null || card == null) { continue; } foreach (Area area in areaList) { AreaAuthorizationRecord aar = aarList.Find(i => i.AreaId == area.Id && i.CardRoleId == role.Id); if (aar != null) { DateTime nowTime = DateTime.Now; DateTime nowEndTime = new DateTime(nowTime.Year, nowTime.Month, nowTime.Day, aar.EndTime.Hour, aar.EndTime.Minute, aar.EndTime.Second); DateTime nowStartTime = new DateTime(nowTime.Year, nowTime.Month, nowTime.Day, aar.StartTime.Hour, aar.StartTime.Minute, aar.StartTime.Second); if (nowTime > nowEndTime)//可以判断是否产生告警 { Position position = new Position(); position.CardId = card.LocationCardId; position.RoleId = role.Id; position.PersonnelID = person.Id; PersonnelFirstInArea personArea = db.PersonnelFirstInAreas.Find(i => i.areaId == area.Id && i.personId == person.Id && i.type == 1); if (personArea == null)//表示人员person当天未到过该区域 { //未签到告警 LocationAlarm alarm1 = new LocationAlarm(position, area.Id, aar, person.Name, LocationAlarmLevel.四级告警, LocationAlarmType.签到告警); list.Add(alarm1); } else { DateTime dateTime = personArea.dateTime; if (dateTime > nowStartTime && dateTime < nowEndTime)//时间范围内进入过 { //正常告警 LocationAlarm alarm1 = new LocationAlarm(position, area.Id, aar, person.Name, LocationAlarmLevel.正常, LocationAlarmType.签到告警); list.Add(alarm1); } else { //未签到告警 LocationAlarm alarm1 = new LocationAlarm(position, area.Id, aar, person.Name, LocationAlarmLevel.四级告警, LocationAlarmType.签到告警); list.Add(alarm1); } } } } } } } catch (Exception ex) { Log.Error("SignInAlarmThread.GetCacheList:" + ex.ToString()); } return(list); }
/// <summary> /// 产生告警 /// </summary> /// <param name="list1"></param> /// <returns></returns> private List <LocationAlarm> GenerateAreaAlarm(List <Position> list1) { List <LocationAlarm> newAlarmList = new List <LocationAlarm>(); if (list1 == null) { Log.Error(tag, "GenerateAreaAlarm", "list1 == null"); return(newAlarmList); } foreach (Position p in list1) { if (p == null || p.IsAreaNull() || p.PersonnelID == null || p.AreaId == null || p.IsDynamicAreaPos) { continue; } CardRole role = roles.Find(i => i.Id == p.RoleId); if (role == null) { int pAreaId = (int)p.AreaId; //RemoveDuplicateAlarms(p, pAreaId, null, "标签未配置区域权限。", LocationAlarmLevel.四级告警, ref newAlarmList); continue; } //清除人员进入区域记录 Bll db = Bll.NewBllNoRelation(); List <PersonnelFirstInArea> paList = db.PersonnelFirstInAreas.Where(i => i.personId == p.PersonnelID && i.type == 0); List <Area> areaList = p.Areas.ToList(); foreach (PersonnelFirstInArea personnelInArea in paList) { Area area = areaList.Find(i => i.Id == personnelInArea.areaId); if (area == null) { db.PersonnelFirstInAreas.DeleteById(personnelInArea.Id); } } string personDepartment = GetPersonDepartInfo(p.PersonnelID, p.Code); foreach (var area in p.Areas) { AreaAuthorizationRecord aar = aarList.Find(i => i.AreaId == area.Id && i.CardRoleId == role.Id); if (aar != null) { LocationAlarm la = realAlarms.Find(j => j.LocationCardId == p.CardId && j.AreaId == area.Id); DateTime dtBegin = p.DateTime; DateTime dtEnd = p.DateTime; if (la != null) { dtBegin = la.AlarmTime; } TimeSpan ts = dtEnd.Subtract(dtBegin).Duration(); int nTimeStamp = Convert.ToInt32(ts.TotalMinutes); if (aar.AccessType == AreaAccessType.能进入) { RemoveDuplicateAlarms(p, area.Id, null, string.Format("人员:{0},在区域'{1}'未配置权限。", personDepartment, area), LocationAlarmLevel.四级告警, ref newAlarmList); } else { DateTime startTime = new DateTime(p.DateTime.Year, p.DateTime.Month, p.DateTime.Day, aar.StartTime.Hour, aar.StartTime.Minute, aar.StartTime.Second); DateTime endTime = new DateTime(p.DateTime.Year, p.DateTime.Month, p.DateTime.Day, aar.EndTime.Hour, aar.EndTime.Minute, aar.EndTime.Second); if (aar.TimeType == TimeSettingType.无限制) { RemoveDuplicateAlarms(p, area.Id, aar, string.Format("正常,所在区域:{0}", area), LocationAlarmLevel.正常, ref newAlarmList); } else if (aar.TimeType == TimeSettingType.时间长度) { //获取 PersonnelFirstInArea getPA = db.PersonnelFirstInAreas.Find(i => i.personId == p.PersonnelID && i.areaId == area.Id && i.type == 0); if (getPA == null) //不存在表示已经出了这个区域 { PersonnelFirstInArea person = new PersonnelFirstInArea(); DateTime nowTime = DateTime.Now; person.personId = p.PersonnelID; person.areaId = area.Id; person.dateTime = nowTime; person.type = 0; bool result = db.PersonnelFirstInAreas.Add(person); Log.Info("记录人员:" + p.PersonnelName + "进入区域:" + area.Name + "权限:时间长度,结果:" + result); RemoveDuplicateAlarms(p, area.Id, aar, string.Format("正常,所在区域:{0}", area), LocationAlarmLevel.正常, ref newAlarmList, LocationAlarmType.超时告警); } else//告警 { if ((p.DateTime - getPA.dateTime).TotalMinutes > aar.TimeSpan)//超过时长 { string timeOut = ((p.DateTime - getPA.dateTime).TotalMinutes - aar.TimeSpan).ToString(); RemoveDuplicateAlarms(p, area.Id, aar, string.Format("人员:{0},在区域:{1}超时停留{2}分", personDepartment, area, timeOut), LocationAlarmLevel.四级告警, ref newAlarmList, LocationAlarmType.超时告警); } else { RemoveDuplicateAlarms(p, area.Id, aar, string.Format("正常,所在区域:{0}", area), LocationAlarmLevel.正常, ref newAlarmList, LocationAlarmType.超时告警); } } } else if (aar.TimeType == TimeSettingType.时间点范围) { if (p.DateTime > startTime && p.DateTime < endTime) { RemoveDuplicateAlarms(p, area.Id, aar, string.Format("正常,所在区域:{0}", area), LocationAlarmLevel.正常, ref newAlarmList, LocationAlarmType.超时告警); } else { RemoveDuplicateAlarms(p, area.Id, aar, string.Format("告警,人员:{0} 在区域:{1}未设置权限", area), LocationAlarmLevel.四级告警, ref newAlarmList, LocationAlarmType.超时告警); } } else if (aar.TimeType == TimeSettingType.时间长度加范围) { if (p.DateTime > startTime && p.DateTime < endTime) //判断在时间范围内后,再判断时间长度 { PersonnelFirstInArea getPA = db.PersonnelFirstInAreas.Find(i => i.personId == p.PersonnelID && i.areaId == area.Id && i.type == 0); if (getPA == null) //不存在表示已经出了这个区域 { PersonnelFirstInArea person = new PersonnelFirstInArea(); DateTime nowTime = DateTime.Now; person.personId = p.PersonnelID; person.areaId = area.Id; person.dateTime = nowTime; person.type = 0; bool result = db.PersonnelFirstInAreas.Add(person); Log.Info("记录人员:" + p.PersonnelName + "进入区域:" + area.Name + "权限:时间长度加范围,结果:" + result); RemoveDuplicateAlarms(p, area.Id, aar, string.Format("正常,所在区域:{0}", area), LocationAlarmLevel.正常, ref newAlarmList, LocationAlarmType.超时告警); } else//告警 { if ((p.DateTime - getPA.dateTime).TotalMinutes > aar.TimeSpan)//超过时长 { RemoveDuplicateAlarms(p, area.Id, aar, string.Format("人员:{0},在区域:{1}未设置权限", personDepartment, area), LocationAlarmLevel.四级告警, ref newAlarmList, LocationAlarmType.超时告警); } else { RemoveDuplicateAlarms(p, area.Id, aar, string.Format("正常,所在区域:{0}", area), LocationAlarmLevel.正常, ref newAlarmList, LocationAlarmType.超时告警); } } } else { RemoveDuplicateAlarms(p, area.Id, aar, string.Format("告警,人员:{0} 在区域:{1}未设置权限", area), LocationAlarmLevel.四级告警, ref newAlarmList); } } //if (aar.IsTimeValid(dtBegin, dtEnd, nTimeStamp) == false) //{ // RemoveDuplicateAlarms(p, area.Id, aar, string.Format("可以进入区域'{0}',但是未在有效时间范围内。", area), LocationAlarmLevel.四级告警, ref newAlarmList); //} //else } if (aar.SignIn)//有签到限制(添加一条人员进入区域的记录) { PersonnelFirstInArea getPA = db.PersonnelFirstInAreas.Find(i => i.personId == p.PersonnelID && i.areaId == area.Id && i.type == 1); if (getPA == null) { PersonnelFirstInArea person = new PersonnelFirstInArea(); DateTime nowTime = DateTime.Now; person.personId = p.PersonnelID; person.areaId = area.Id; person.dateTime = nowTime; person.type = 1; bool result = db.PersonnelFirstInAreas.Add(person); Log.Info("记录人员:" + p.PersonnelName + "进入区域:" + area.Name + "权限:签到,结果:" + result); } } } else { if (role.Id == 1 || role.Name == SuperUserName)//超级管理员 { RemoveDuplicateAlarms(p, area.Id, null, string.Format("正常,所在区域:{0}", area), LocationAlarmLevel.正常, ref newAlarmList); } else { RemoveDuplicateAlarms(p, area.Id, null, string.Format("人员:{0},在区域'{1}'未配置权限。", personDepartment, area), LocationAlarmLevel.四级告警, ref newAlarmList); } } } } return(newAlarmList); }