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