コード例 #1
0
        public MetricSearchResponseDTO GetMeterList(MetricSearchRequestDTO dto)
        {
            List <MetricMeter> meterList = dal.GetMeterList(dto);

            if (meterList == null || meterList.Count < 1)
            {
                return(null);
            }

            MetricSearchResponseDTO responseDTO = new MetricSearchResponseDTO();

            responseDTO.MetricUnit = meterList[0].MetricUnit;

            #region 分别求 responseDTO.XAxisValueList 和 responseDTO.SerieList

            // 分别求 responseDTO.XAxisValueList 和 responseDTO.SerieList:
            DateTime           xAxisDateTime         = CommonHelper.GetDateByUnit(dto.IntervalUnit, dto.StartTime);
            DateTime           endTimeSearchCondtion = CommonHelper.GetDateByUnit(dto.IntervalUnit, dto.EndTime);
            List <MetricMeter> selectResult          = null;
            List <string>      seriesNameList        = meterList.Select(x => x.SeriesName).Distinct().ToList <string>();
            // value表示Series Name,key表示yAxisValueList:
            Dictionary <string, Series> dictionary = new Dictionary <string, Series>();

            if (xAxisDateTime == endTimeSearchCondtion) // start: if-else
            {
                responseDTO.XAxisValueList.Add(CommonHelper.ConvertDateToStringByUnit(dto.IntervalUnit, xAxisDateTime));
                DateTime endTime = CommonHelper.GetNextTime(xAxisDateTime, dto.Interval, dto.IntervalUnit);
                selectResult = meterList.Where(m => m.XAxisValue >= xAxisDateTime && m.XAxisValue < endTime).ToList <MetricMeter>();

                GetYAxisValueDictionary(seriesNameList, selectResult, dto.AggregationWay, dictionary);
            }
            else
            {
                while (xAxisDateTime < endTimeSearchCondtion)
                { // start: while
                    responseDTO.XAxisValueList.Add(CommonHelper.ConvertDateToStringByUnit(dto.IntervalUnit, xAxisDateTime));
                    DateTime endTime = CommonHelper.GetNextTime(xAxisDateTime, dto.Interval, dto.IntervalUnit);
                    selectResult  = meterList.Where(m => m.XAxisValue >= xAxisDateTime && m.XAxisValue < endTime).ToList <MetricMeter>();
                    xAxisDateTime = endTime;

                    // 每次外循环结束后,就能为每个series获得一个YAxisValue:
                    GetYAxisValueDictionary(seriesNameList, selectResult, dto.AggregationWay, dictionary);
                } // end: while
            }     // end: if-else
            responseDTO.SerieList = dictionary.Values.ToList <Series>();

            #endregion

            return(responseDTO);
        }
コード例 #2
0
        MetricSearchResponseDTO GetResponseResult(MetricSearchArgs searchCondition)
        {
            MetricSearchResponseDTO result = null;

            switch (searchCondition.MetricType)
            {
            case MetricType.Meters:
                result = logic.GetMeterList(searchCondition.ToDTO());
                break;

            case MetricType.Histograms:
                result = logic.GetHistogramList(searchCondition.ToDTO());
                break;
            }
            return(result);
        }
コード例 #3
0
        public JsonResult Search(MetricSearchArgs searchCondition)
        {
            MetricSearchResponseDTO result = null;

            switch (searchCondition.MetricType)
            {
            case MetricType.Meters:
                result = logic.GetMeterList(searchCondition.ToDTO());
                break;

            case MetricType.Histograms:
                result = logic.GetHistogramList(searchCondition.ToDTO());
                break;
            }

            return(Json(result, JsonRequestBehavior.AllowGet));
        }
コード例 #4
0
        public MetricSearchResponseDTO GetHistogramList(MetricSearchRequestDTO dto)
        {
            MetricSearchResponseDTO     responseDTO  = null;
            List <MetricHistogram>      selectResult = null;
            Dictionary <string, Series> dic          = new Dictionary <string, Series>();

            List <MetricHistogram> list = dal.GetHistogramList(dto);

            if (list != null && list.Count > 0)
            {
                responseDTO = new MetricSearchResponseDTO();

                responseDTO.MetricUnit = list[0].MetricUnit;
                //所有数据列名称
                List <string> seriesName = list.Select(x => x.SeriesName).Distinct().ToList <string>();
                //DateTime xAxisDateTime = dto.StartTime;
                DateTime xAxisDateTime         = CommonHelper.GetDateByUnit(dto.IntervalUnit, dto.StartTime);
                DateTime endTimeSearchCondtion = CommonHelper.GetDateByUnit(dto.IntervalUnit, dto.EndTime);
                bool     firstTime             = true;
                //获取所有间隔时间的数据
                //while (xAxisDateTime < dto.EndTime || firstTime)
                while (xAxisDateTime < endTimeSearchCondtion || firstTime)
                {
                    firstTime = false;
                    responseDTO.XAxisValueList.Add(CommonHelper.ConvertDateToStringByUnit(dto.IntervalUnit, xAxisDateTime));
                    DateTime endTime = CommonHelper.GetNextTime(xAxisDateTime, dto.Interval, dto.IntervalUnit);
                    selectResult = list.Where(c => c.AddTime >= xAxisDateTime && c.AddTime < endTime).ToList <MetricHistogram>();

                    for (int index = 0; index < seriesName.Count; index++)
                    {
                        if (!dic.ContainsKey(seriesName[index]))
                        {
                            dic.Add(seriesName[index], new Series()
                            {
                                Name = seriesName[index]
                            });
                        }
                        dic[seriesName[index]].YAxisValueList.Add(Math.Round(GetSeriesValue(selectResult, seriesName[index], dto.AggregationWay), 2));
                    }
                    xAxisDateTime = endTime;
                }
                responseDTO.SerieList = dic.Values.ToList <Series>();
            }
            return(responseDTO);
        }
コード例 #5
0
        // GET api/<controller>/5
        public HttpResponseMessage Get([FromUri] MetricSearchArgs searchCondition, string callback = "callback")
        {
            MetricSearchResponseDTO result = GetResponseResult(searchCondition);

            if (result != null)
            {
                JavaScriptSerializer serializer = new JavaScriptSerializer();
                string content = string.Format("{0}({1})", callback, serializer.Serialize(result));
                return(new HttpResponseMessage(HttpStatusCode.OK)
                {
                    Content = new StringContent(content, System.Text.Encoding.UTF8, "text/javascript")
                });
            }
            else
            {
                return(new HttpResponseMessage(HttpStatusCode.OK));
            }
        }