private JsonResult QueryHistorySummaryData(string groupid, string serverid, string communicateid, string deviceid, string period, string method, string fields = "", string series = "", int charttype = 1, string sdate = "", string edate = "", string serieclassify = "", int pagesize = 1000) { ///传递的曲线指标信息 string serieindex = "'" + series.Trim().Replace(",", "','") + "'"; string[] myfields = fields.Split(','); //获取对应的曲线配置信息 IEnumerable <SerieConfigModel> allItems = SerieServer.GetByWhere(" where SerieName in(" + serieindex + ") and SerieClassify='" + serieclassify + "'"); List <SerieConfigModel> Items = new List <SerieConfigModel>(); foreach (var item in allItems) { if (myfields.Contains(item.SerieName)) { Items.Add(item); } } DeviceGroupModel pWell = DeviceGroupService.GetById(int.Parse(groupid)); ///初始化曲线对象 EChartOption chartOption = new EChartOption(); chartOption.xAxis = new Axis[1]; chartOption.xAxis[0] = new Axis(); chartOption.xAxis[0].gridIndex = 1; chartOption.xAxis[0].type = "time"; chartOption.xAxis[0].name = "时间"; List <Axis> yaxis = new List <Axis>(); int index = 0; string[] legend = new string[Items.Count()]; foreach (var item in Items) { yaxis.Add(new Axis() { gridIndex = index, name = item.SerieTitle, type = "value" }); legend[index] = item.SerieTitle; index++; } chartOption.legend.data = legend; chartOption.yAxis = yaxis.ToArray(); //初始化对象结束 if (sdate == null || sdate == "") { sdate = DateTime.Now.AddHours(-1).ToString("yyyy-MM-dd HH:mm:ss"); } if (edate == null || edate == "") { edate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); } chartOption.series = new Series[Items.Count()]; string returnFields = " time"; #region { foreach (var item in Items) { returnFields += "," + method + "(field_" + item.SerieName.Trim().ToLower().ToString() + "_value) as field_" + item.SerieName.Trim().ToLower().ToString() + "_value"; } } #endregion InfluxDBHistoryResult realResult = mWebInfluxDbManager.DbQuery_HistoryStatics(serverid, communicateid, deviceid, Convert.ToDateTime(sdate), Convert.ToDateTime(edate), pagesize, 1, " DESC ", period, returnFields); if (realResult != null) { var datas = realResult.Seres; if (datas != null && datas.Count() > 0) { var onedata = datas.First(); int sindex = 0; foreach (var item in Items) { chartOption.series[sindex] = new Series(); chartOption.series[sindex].name = item.SerieTitle; chartOption.series[sindex].lineStyle.color = item.SerieColor; chartOption.series[sindex].lineStyle.width = int.Parse(item.SerieWidth); chartOption.series[sindex].itemStyle = null; chartOption.series[sindex].data = new double[onedata.Values.Count]; chartOption.series[sindex].type = item.SerieType; chartOption.series[sindex].showSymbol = item.ShowSymbol == "1" ? true : false; chartOption.series[sindex].symbol = item.SymbolType; chartOption.series[sindex].symbolSize = int.Parse(item.SymbolSize); sindex++; } string[] axisData = new string[onedata.Values.Count]; //获取的数据按照时间先后 int dataindex = onedata.Values.Count() - 1; foreach (var value in onedata.Values) { //获取采集时间 object objx = onedata.Values[dataindex][onedata.Columns.IndexOf("time")]; axisData[dataindex] = objx != null?objx.ToString() : ""; ////////////////////////// sindex = 0; foreach (var item in Items) { try { string record = item.SerieName.ToString().ToLower(); int recordindex = onedata.Columns.IndexOf("field_" + record + "_value"); if (recordindex >= 0) { object objy = onedata.Values[dataindex][recordindex]; chartOption.series[sindex].data[dataindex] = Convert.ToDouble(objy); chartOption.series[sindex].id = item.SerieName; } } catch { } sindex++; } dataindex--; } chartOption.xAxis[0].data = axisData;//设置x轴数据,time格式的数据必须在Axis轴上进行设置 } } //读取以下的实时数据,从influxDB中读取 return(Json(chartOption, JsonRequestBehavior.AllowGet)); }
private JsonResult ApiQueryHistoryData(ApiSerieConfig serieConfig, string serverid, string communicateid, string deviceid, int charttype = 1, string sdate = "", string edate = "", int pagesize = 1000) { //获取对应的曲线配置信息 List <ApiSerieConfigModel> Items = serieConfig.Series; ///初始化曲线对象 EChartOption chartOption = new EChartOption(); chartOption.xAxis = new Axis[1]; chartOption.xAxis[0] = new Axis(); chartOption.xAxis[0].gridIndex = 1; chartOption.xAxis[0].type = "time"; chartOption.xAxis[0].name = "时间"; List <Axis> yaxis = new List <Axis>(); int index = 0; string[] legend = new string[Items.Count()]; foreach (var item in Items) { yaxis.Add(new Axis() { gridIndex = index, name = item.SerieTitle, type = "value" }); legend[index] = item.SerieTitle; index++; } chartOption.legend.data = legend; chartOption.yAxis = yaxis.ToArray(); //初始化对象结束 if (sdate == null || sdate == "") { sdate = DateTime.Now.AddHours(-1).ToString("yyyy-MM-dd HH:mm:ss"); } if (edate == null || edate == "") { edate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); } chartOption.series = new Series[Items.Count()]; InfluxDBHistoryResult realResult = mWebInfluxDbManager.DbQuery_History(serverid, communicateid, deviceid, Convert.ToDateTime(sdate), Convert.ToDateTime(edate), 10000, 1, " ASC "); if (realResult != null) { var datas = realResult.Seres; if (datas != null && datas.Count() > 0) { var onedata = datas.First(); int sindex = 0; foreach (var item in Items) { chartOption.series[sindex] = new Series(); chartOption.series[sindex].name = item.SerieTitle; chartOption.series[sindex].lineStyle.color = item.SerieColor; chartOption.series[sindex].lineStyle.width = int.Parse(item.SerieWidth); chartOption.series[sindex].itemStyle = null; chartOption.series[sindex].data = new double[onedata.Values.Count]; chartOption.series[sindex].type = item.SerieType; chartOption.series[sindex].showSymbol = item.ShowSymbol == "1" ? true : false; chartOption.series[sindex].symbol = item.SymbolType; chartOption.series[sindex].symbolSize = int.Parse(item.SymbolSize); sindex++; } string[] axisData = new string[onedata.Values.Count]; //获取的数据按照时间先后 int dataindex = onedata.Values.Count() - 1; foreach (var value in onedata.Values) { //获取采集时间 object objx = onedata.Values[dataindex][onedata.Columns.IndexOf("time")]; axisData[dataindex] = objx != null?objx.ToString() : ""; ////////////////////////// sindex = 0; foreach (var item in Items) { try { int recordindex = onedata.Columns.IndexOf("field_" + item.SerieName.Trim().ToLower() + "_value"); if (recordindex >= 0) { object objy = onedata.Values[dataindex][recordindex]; chartOption.series[sindex].data[dataindex] = Convert.ToDouble(objy); chartOption.series[sindex].id = item.SerieName; } } catch { } sindex++; } dataindex--; } chartOption.xAxis[0].data = axisData;//设置x轴数据,time格式的数据必须在Axis轴上进行设置 } } //读取以下的实时数据,从influxDB中读取 return(Json(chartOption, JsonRequestBehavior.AllowGet)); }
public JsonResult QueryDefaultSeriesData(string groupid, string serverid, string communicateid, string deviceid, string paraid) { string sdate = DateTime.Now.AddHours(-1).ToString("yyyy-MM-dd HH:mm:ss"); string edate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); IEnumerable <DeviceGroupModel> groupdevices = DeviceGroupService.GetByWhere(" where GroupId=" + groupid + " and IO_SERVER_ID='" + serverid + "' and IO_COMM_ID='" + communicateid + "' and IO_DEVICE_ID='" + deviceid + "'"); DeviceGroupModel pWell = null; if (groupdevices.Count() > 0) { pWell = groupdevices.First(); } if (pWell == null) { return(Json(null, JsonRequestBehavior.AllowGet)); } List <string> ioids = pWell.IOPARAS.Split(',').ToList(); List <string> names = pWell.IOPARANAMES.Split(',').ToList(); List <string> titles = pWell.IOPARATITLES.Split(',').ToList(); int index = ioids.FindIndex(X => X == paraid.Trim()); string seriename = ""; if (index >= 0) { seriename = names[index]; } IEnumerable <SerieConfigModel> allItems = SerieServer.GetByWhere(" where SerieName='" + seriename + "' and SerieClassify='" + pWell.SerieType + "'"); SerieConfigModel serieConfig = new SerieConfigModel(); if (allItems.Count() > 0) { serieConfig = allItems.First(); } else { serieConfig.SerieTitle = titles[index]; serieConfig.SerieName = seriename; serieConfig.SerieType = "line"; } ///初始化曲线对象 EChartOption chartOption = new EChartOption(); chartOption.xAxis = new Axis[1]; chartOption.xAxis[0] = new Axis(); chartOption.xAxis[0].gridIndex = 1; chartOption.xAxis[0].type = "time"; chartOption.xAxis[0].name = "时间"; chartOption.name = serieConfig.SerieTitle; List <Axis> yaxis = new List <Axis>(); string legend = serieConfig.SerieTitle; yaxis.Add(new Axis() { gridIndex = 0, name = serieConfig.SerieTitle, type = "value" }); chartOption.legend.data = new string[1] { legend }; chartOption.yAxis = yaxis.ToArray(); //初始化对象结束 if (sdate == null || sdate == "") { sdate = DateTime.Now.AddHours(-1).ToString("yyyy-MM-dd HH:mm:ss"); } if (edate == null || edate == "") { edate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); } chartOption.series = new Series[1]; InfluxDBHistoryResult realResult = mWebInfluxDbManager.DbQuery_History(serverid, communicateid, deviceid, Convert.ToDateTime(sdate), Convert.ToDateTime(edate), 10000, 1, " ASC "); if (realResult != null) { var datas = realResult.Seres; if (datas != null && datas.Count() > 0) { var onedata = datas.First(); if (onedata != null) { chartOption.series[0] = new Series(); chartOption.series[0].name = serieConfig.SerieTitle; chartOption.series[0].lineStyle.color = serieConfig.SerieColor; chartOption.series[0].lineStyle.width = int.Parse(serieConfig.SerieWidth); chartOption.series[0].itemStyle = null; chartOption.series[0].data = new double[onedata.Values.Count]; chartOption.series[0].type = serieConfig.SerieType; chartOption.series[0].showSymbol = serieConfig.ShowSymbol == "1" ? true : false; chartOption.series[0].symbol = serieConfig.SymbolType; chartOption.series[0].symbolSize = int.Parse(serieConfig.SymbolSize); string[] axisData = new string[onedata.Values.Count]; //获取的数据按照时间先后 int dataindex = onedata.Values.Count() - 1; foreach (var value in onedata.Values) { //获取采集时间 object objx = onedata.Values[dataindex][onedata.Columns.IndexOf("time")]; axisData[dataindex] = objx != null?objx.ToString() : ""; ////////////////////////// try { int recordindex = onedata.Columns.IndexOf("field_" + serieConfig.SerieName.Trim().ToLower() + "_value"); if (recordindex >= 0) { object objy = onedata.Values[dataindex][recordindex]; chartOption.series[0].data[dataindex] = Convert.ToDouble(objy); chartOption.series[0].id = serieConfig.SerieName; } } catch { } dataindex--; } chartOption.xAxis[0].data = axisData;//设置x轴数据,time格式的数据必须在Axis轴上进行设置 } } } //读取以下的实时数据,从influxDB中读取 return(Json(chartOption, JsonRequestBehavior.AllowGet)); }