public JsonResult ApiQueryHistorySeriesData(SeriesPara para) { ApiSerieConfig serieConfig = para.serieConfig; string serverid = para.serverid; string communicateid = para.communicateid; string deviceid = para.deviceid; int charttype = para.charttype; string sdate = para.sdate; string edate = para.edate; int pagesize = para.pagesize; return(ApiQueryHistoryData(serieConfig, serverid, communicateid, deviceid, charttype, sdate, edate, pagesize)); }
public JsonResult ApiGetSerieConfig(ApiSerieConfig device) { List <SerieOption> _select = new List <SerieOption>(); if (device.Series != null && device.IO_DEVICE_ID != "") { foreach (var item in device.Series) { SerieOption _option = new SerieOption { id = item.SerieName.ToString(), name = item.SerieTitle, value = item.SerieName, SerieConfig = new SerieConfigModel() { CreateTime = DateTime.Now, CreateUserId = 0, Id = 0, SerieClassify = "", SerieColor = item.SerieColor, SerieName = item.SerieName, SerieTitle = item.SerieTitle, SerieType = item.SerieType, SerieWidth = item.SerieWidth.ToString(), ShowLegend = item.ShowLegend.ToString().ToLower(), ShowSymbol = item.ShowSymbol.ToLower(), SymbolColor = item.SymbolColor, SymbolSize = item.SymbolSize, SymbolStep = item.SymbolStep, SymbolType = item.SymbolType } }; _select.Add(_option); } } return(Json(_select, 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)); }