public IHttpActionResult GetAlarmReportList(AlarmReportModel parameter) { UserApi api = new UserApi(); var userApi = api.GetUserInfoByToken(); parameter.OrgID = userApi.Data.OrgID.ToString(); DeviceMonitoringApi deviceList = new DeviceMonitoringApi(); var deviceApi = deviceList.GetDeviceList(new GetDeviceInfoParameter()); var list = deviceApi.Data; AlarmReportInfoBLL device = new AlarmReportInfoBLL(); var get = device.GetAlarmReportList(parameter, list); return(InspurJson <List <RetAlarmReport> >(get)); }
/// <summary> /// 获取统计报警信息列表 /// </summary> /// <returns>成功返回列表,失败返回Null.</returns> public ReturnItem <List <RetAlarmReport> > GetAlarmReportList(AlarmReportModel parameter, List <RetDeviceInfo> Info) { ReturnItem <List <RetAlarmReport> > r = new ReturnItem <List <RetAlarmReport> >(); List <RetAlarmReport> listinfo = new List <RetAlarmReport>(); using (AlertPoliciesEntities alert = new AlertPoliciesEntities()) { try { var alertList = alert.A_AlarmHistory.AsQueryable(); if (parameter.OrgID.ToString() != null && parameter.OrgID.ToString() != "") { var OrgID = Convert.ToInt32(parameter.OrgID); alertList = alertList.Where(s => s.OrgID == OrgID); } var list = alertList.GroupBy(a => a.DeviceID).Select(g => (new { DeviceID = g.Key })).ToList(); if (list == null) { r.Data = null; r.Code = -1; r.Msg = "未找到统计报警信息"; return(r); } if (list != null) { List <long> idlist = new List <long>(); foreach (var id in list) { idlist.Add(id.DeviceID); } var TimeList = alert.A_AlarmHistory.AsQueryable(); // 报表周期 if (parameter.StartTime != null && parameter.StartTime != "" && parameter.EndTime != null && parameter.EndTime != "") { var StartTime = Convert.ToDateTime(parameter.StartTime); var EndTime = Convert.ToDateTime(parameter.EndTime); TimeList = TimeList.Where(s => s.AlarmTime >= StartTime && s.EndTime <= EndTime); } TimeList = TimeList.Where(s => idlist.Contains(s.DeviceID)); foreach (var item in list) { var alertinfo = new RetAlarmReport(); alertinfo.DeviceID = item.DeviceID.ToString(); // 报警次数、报警总时长 Double time = 0; int num = 0; List <string> data = new List <string>(); foreach (var info in TimeList) { if (item.DeviceID == info.DeviceID) { time += (info.EndTime - info.AlarmTime).Value.TotalSeconds; num++; } } alertinfo.AlarmNumber = num.ToString(); data.Add(num.ToString()); alertinfo.TotalTime = time.ToString(); data.Add(time.ToString()); alertinfo.AlertData = data; // 设备名称 foreach (var DeviceInfo in Info) { if (DeviceInfo.ID == item.DeviceID) { if (DeviceInfo.Name.IndexOf(parameter.DeviceName) >= 0) { // 设备分组 if (parameter.GroupIDList != null && parameter.GroupIDList.Count > 0) { if (parameter.GroupIDList.Count() == 1 && parameter.GroupIDList[0] == null) { parameter.GroupIDList[0] = "0"; } if (parameter.GroupIDList.Contains(DeviceInfo.GroupID)) { alertinfo.DeviceName = DeviceInfo.Name; if (num > 0 && time > 0) { // 报警次数 if (parameter.StartNumber != "" && parameter.EndNumber != "") { if (num >= Convert.ToInt32(parameter.StartNumber) && num <= Convert.ToInt32(parameter.EndNumber)) { listinfo.Add(alertinfo); } } else { listinfo.Add(alertinfo); } } } } else { alertinfo.DeviceName = DeviceInfo.Name; if (num > 0 && time > 0) { // 报警次数 if (parameter.StartNumber != "" && parameter.EndNumber != "") { if (num >= Convert.ToInt32(parameter.StartNumber) && num <= Convert.ToInt32(parameter.EndNumber)) { listinfo.Add(alertinfo); } } else { listinfo.Add(alertinfo); } } } } } } } r.Count = listinfo.Count; r.Msg = "报警策略信息获取成功"; r.Code = 0; r.Data = listinfo; } } catch (Exception e) { r.Msg = "内部错误请重试"; log.ErrorFormat("内部错误:{0},{1}", e.Message, e.StackTrace); r.Code = -1; } } return(r); }