/// <summary> /// 为对报表进行异常处理,进行一维正态分布分类 /// </summary> /// <param name="device"></param> /// <returns></returns> public static RetDeviceTableData Gaussain(RetDeviceTableData device) { RetDeviceTableData deviceSplice = new RetDeviceTableData(); if (device != null) { List <double> data = device.Data; List <string> time = device.Time; List <List <object> > anomCoordination = new List <List <object> >(); //实例化,用来接收异常点坐标,可以调取实例化方法 List <List <object> > normCoordination = new List <List <object> >(); //实例化,用来接收正常点坐标,可以调取实例化方法 //List<List<object>> allCoordination = new List<List<object>>();//实例化,用来接收所有点坐标,可以调取实例化方法 var average = data.Average(); double variance; double sum = 0; var length = data.Count(); foreach (var d in data) { sum += (d - average) * (d - average); } variance = sum / length; for (var i = 0; i < data.Count(); i++) { List <object> zuobiao = new List <object>(); if (data[i] > average + 2 * variance || data[i] < average - 2 * variance)//取一个合适的系数,这里取的2 { zuobiao.Add(time[i]); zuobiao.Add(data[i]); anomCoordination.Add(zuobiao); } else { zuobiao.Add(time[i]); zuobiao.Add(data[i]); normCoordination.Add(zuobiao); } //allCoordination.Add(zuobiao); } deviceSplice.Data = data; deviceSplice.Time = time; deviceSplice.DeviceTableList = device.DeviceTableList; deviceSplice.DeviceItemName = device.DeviceItemName; deviceSplice.Unit = device.Unit; deviceSplice.NormCoordination = normCoordination; deviceSplice.AnomCoordination = anomCoordination; //deviceSplice.AllCoordination = allCoordination; return(deviceSplice);//包含正常点坐标与异常点坐标 } else { return(deviceSplice = null); } }
public IHttpActionResult GetEnergyReportListData(EquipmentEnergyModel parameter) { RetDeviceTableData info = new RetDeviceTableData(); List <RetDeviceTableList> table = new List <RetDeviceTableList>(); if (parameter.Property != null) { int i = 0; for (; i < parameter.Property.Count; i++) { DeviceDataModel model = new DeviceDataModel(); model.DeviceID = parameter.Property[i].data[0]; model.DeviceItemID = parameter.Property[i].data[1]; model.StartTime = parameter.StartTime; model.EndTime = parameter.EndTime; model.StatisticalInterval = parameter.StatisticalInterval; model.IntervalUnit = parameter.IntervalUnit; model.GetTogetherType = parameter.Type; DeviceDataBLL data = new DeviceDataBLL(); var get = data.GetEnergyReportListData(model); if (get.Data != null) { foreach (var item in get.Data.DeviceTableList) { table.Add(item); } } } } info.DeviceTableList = table.OrderByDescending(o => o.Time).ToList(); ReturnItem <RetDeviceTableData> r = new ReturnItem <RetDeviceTableData>(); r.Count = info.DeviceTableList.Count(); r.Msg = "设备数据获取成功"; r.Code = 0; r.Data = info; return(InspurJson <RetDeviceTableData>(r)); }
public IHttpActionResult GetEquipmentReportListDataByHandl2(DeviceDataListModel2 model) { DeviceDataBLL data = new DeviceDataBLL(); RetDeviceTableData tabledata = new RetDeviceTableData(); ReturnItem <List <RetDeviceTableData> > retdata = new ReturnItem <List <RetDeviceTableData> >(); DeviceDataModel datamodel = new DeviceDataModel() { EndTime = model.EndTime, StartTime = model.StartTime, GetTogetherType = model.GetTogetherType, IntervalUnit = model.IntervalUnit, StatisticalInterval = model.StatisticalInterval }; Dictionary <string, string> itemIdToDeviceId = new Dictionary <string, string>(); //key为itemID,value为deviceId if (model.DeviceIDs != null || model.DeviceIDs.Count != 0) //获取参数中的所有设备对应的propertyLable属性 { UserApi api = new UserApi(); var userApi = api.GetUserInfoByToken(); model.DeviceItemIDs = new List <string>(); foreach (var id in model.DeviceIDs) { var deviceid = Convert.ToInt32(id); DeviceItemInfoModel parameter = new DeviceItemInfoModel(); parameter.OrgID = userApi.Data.OrgID.ToString(); parameter.DeviceID = deviceid; DeviceInfoBLL device = new DeviceInfoBLL(); var getitem = device.GetEquipmentItemsList(parameter); if (getitem.Data != null) { var temp = getitem.Data; foreach (var item in getitem.Data) { if (item.PropertyLabel == model.DeviceItemPropertyLabel)//如果是该PropertyLabel的,则放到参数里面 { model.DeviceItemIDs.Add(item.ID); itemIdToDeviceId.Add(item.ID, id); break; } } } else { return(null); } } } if (model.DeviceItemIDs != null && model.DeviceItemIDs.Count > 0) { var count = 0; List <RetDeviceTableList> listtabledata = new List <RetDeviceTableList>(); List <string> listtimedata = new List <string>(); List <List <object> > listcordata = new List <List <object> >(); List <List <object> > listanodata = new List <List <object> >(); List <List <object> > listnordata = new List <List <object> >(); List <double> listdatadata = new List <double>(); List <RetDeviceTableData> listdata = new List <RetDeviceTableData>(); foreach (var item in model.DeviceItemIDs) { RetDeviceTableData chartdata = new RetDeviceTableData();//图表数据 datamodel.DeviceItemID = item; string id = ""; itemIdToDeviceId.TryGetValue(item, out id); if (id == null || id == "") { retdata.Code = -1; retdata.Msg = "在Dictionary中获取deviceId失败"; retdata.Data = null; return(InspurJson <List <RetDeviceTableData> >(retdata)); } datamodel.DeviceID = id; var get = data.GetEquipmentReportListDataByHandl(datamodel); if (get != null && get.Data != null) { chartdata.AllCoordination = get.Data.AllCoordination; chartdata.AnomCoordination = get.Data.AnomCoordination; chartdata.Data = get.Data.Data; chartdata.DeviceItemName = get.Data.DeviceItemName; chartdata.DeviceName = get.Data.DeviceName; chartdata.DeviceTableList = get.Data.DeviceTableList; chartdata.NormCoordination = get.Data.NormCoordination; chartdata.Time = get.Data.Time; chartdata.Unit = get.Data.Unit; chartdata.type = "2"; listdata.Add(chartdata); if (get.Data.DeviceTableList != null) { foreach (var listitem in get.Data.DeviceTableList) { listtabledata.Add(listitem); } } if (get.Data.Time != null) { foreach (var listtime in get.Data.Time) { listtimedata.Add(listtime); } } if (get.Data.AllCoordination != null) { foreach (var cooitem in get.Data.AllCoordination) { listcordata.Add(cooitem); } } if (get.Data.AnomCoordination != null) { foreach (var anoitem in get.Data.AnomCoordination) { listanodata.Add(anoitem); } } if (get.Data.NormCoordination != null) { foreach (var noritem in get.Data.NormCoordination) { listnordata.Add(noritem); } } if (get.Data.Data != null) { foreach (var dataitem in get.Data.Data) { listdatadata.Add(dataitem); } } count += get.Count; retdata.Code = get.Code; //retdata.Msg = get.Msg; retdata.Msg = "wahahaaaaaaaaa"; } } tabledata.DeviceTableList = listtabledata; tabledata.Time = listtimedata; tabledata.AllCoordination = listcordata; tabledata.AnomCoordination = listanodata; tabledata.NormCoordination = listnordata; tabledata.Data = listdatadata; tabledata.type = "1"; listdata.Add(tabledata);//添加列表数据 retdata.Data = listdata; retdata.Count = count; } return(InspurJson <List <RetDeviceTableData> >(retdata)); }
public IHttpActionResult GetEquipmentReportListDataByHandl(DeviceDataListModel model) { DeviceDataBLL data = new DeviceDataBLL(); RetDeviceTableData tabledata = new RetDeviceTableData(); ReturnItem <List <RetDeviceTableData> > retdata = new ReturnItem <List <RetDeviceTableData> >(); DeviceDataModel datamodel = new DeviceDataModel() { DeviceID = model.DeviceID, EndTime = model.EndTime, StartTime = model.StartTime, GetTogetherType = model.GetTogetherType, IntervalUnit = model.IntervalUnit, StatisticalInterval = model.StatisticalInterval }; if (model.DeviceItemIDs == null || model.DeviceItemIDs.Count == 0)//当前台不选属性时,将该设备所有的属性展示 { UserApi api = new UserApi(); var userApi = api.GetUserInfoByToken(); var deviceid = 0; if (model.DeviceID != null && model.DeviceID != "") { deviceid = Convert.ToInt32(model.DeviceID); } DeviceItemInfoModel parameter = new DeviceItemInfoModel(); parameter.OrgID = userApi.Data.OrgID.ToString(); parameter.DeviceID = deviceid; DeviceInfoBLL device = new DeviceInfoBLL(); var getitem = device.GetEquipmentItemsList(parameter); if (getitem.Data != null) { foreach (var item in getitem.Data) { model.DeviceItemIDs.Add(item.ID);//核心语句 } } else { return(null); } } if (model.DeviceItemIDs != null && model.DeviceItemIDs.Count > 0) { var count = 0; List <RetDeviceTableList> listtabledata = new List <RetDeviceTableList>(); List <string> listtimedata = new List <string>(); List <List <object> > listcordata = new List <List <object> >(); List <List <object> > listanodata = new List <List <object> >(); List <List <object> > listnordata = new List <List <object> >(); List <double> listdatadata = new List <double>(); List <RetDeviceTableData> listdata = new List <RetDeviceTableData>(); foreach (var item in model.DeviceItemIDs) { RetDeviceTableData chartdata = new RetDeviceTableData();//图表数据 datamodel.DeviceItemID = item; var get = data.GetEquipmentReportListDataByHandl(datamodel); if (get != null && get.Data != null) { chartdata.AllCoordination = get.Data.AllCoordination; chartdata.AnomCoordination = get.Data.AnomCoordination; chartdata.Data = get.Data.Data; chartdata.DeviceItemName = get.Data.DeviceItemName; chartdata.DeviceName = get.Data.DeviceName; chartdata.DeviceTableList = get.Data.DeviceTableList; chartdata.NormCoordination = get.Data.NormCoordination; chartdata.Time = get.Data.Time; chartdata.Unit = get.Data.Unit; chartdata.type = "2"; listdata.Add(chartdata); if (get.Data.DeviceTableList != null) { foreach (var listitem in get.Data.DeviceTableList) { listtabledata.Add(listitem); } } if (get.Data.Time != null) { foreach (var listtime in get.Data.Time) { listtimedata.Add(listtime); } } if (get.Data.AllCoordination != null) { foreach (var cooitem in get.Data.AllCoordination) { listcordata.Add(cooitem); } } if (get.Data.AnomCoordination != null) { foreach (var anoitem in get.Data.AnomCoordination) { listanodata.Add(anoitem); } } if (get.Data.NormCoordination != null) { foreach (var noritem in get.Data.NormCoordination) { listnordata.Add(noritem); } } if (get.Data.Data != null) { foreach (var dataitem in get.Data.Data) { listdatadata.Add(dataitem); } } count += get.Count; retdata.Code = get.Code; retdata.Msg = get.Msg; } } tabledata.DeviceTableList = listtabledata; tabledata.Time = listtimedata; tabledata.AllCoordination = listcordata; tabledata.AnomCoordination = listanodata; tabledata.NormCoordination = listnordata; tabledata.Data = listdatadata; tabledata.type = "1"; listdata.Add(tabledata);//添加列表数据 retdata.Data = listdata; retdata.Count = count; } //else //{ // datamodel.DeviceItemID = model.DeviceItemIDs[0]; // var get = data.GetEquipmentReportListDataByHandl(datamodel); // retdata = get; //} return(InspurJson <List <RetDeviceTableData> >(retdata)); }