示例#1
0
        private Dictionary <int, List <DayAqi> > Get30DayAqi(DateTime time)
        {
            DateTime d2         = time.AddDays(-30);
            var      dataSource = _siteDataRepository.Table.Where(d => d.DurationID == 11 && d.LST_AQI <= time && d.LST_AQI >= d2 && d.ParameterID == 0)
                                  .OrderBy(d => d.LST_AQI).ToList();

            Dictionary <int, List <DayAqi> > result = new Dictionary <int, List <DayAqi> >();

            foreach (var dataItem in dataSource)
            {
                List <DayAqi> dayAqi = null;
                if (result.ContainsKey(dataItem.SiteID))
                {
                    dayAqi = result[dataItem.SiteID];
                }
                else
                {
                    dayAqi = new List <DayAqi>();
                    result[dataItem.SiteID] = dayAqi;
                }
                DayAqi aqi = new DayAqi()
                {
                    Aqi = dataItem.AQI.Value, DayTime = dataItem.LST_AQI, Level = dataItem.Grade.Value
                };
                dayAqi.Add(aqi);
            }

            return(result);
        }
示例#2
0
        private List <DayAqi> createExampleDayAqi(DateTime time)
        {
            List <DayAqi> result = new List <DayAqi>();

            time = new DateTime(time.Year, time.Month, time.Day);
            DateTime d1 = time.AddDays(-30);
            Random   r  = new Random();

            while (d1 <= time)
            {
                DayAqi dayAqi = new DayAqi();
                dayAqi.Aqi = r.Next(1, 300);
                var g = _aqiGradeService.CalcGrade(dayAqi.Aqi);
                dayAqi.Level   = g.Grade;
                dayAqi.DayTime = d1;
                d1             = d1.AddDays(1);
                result.Add(dayAqi);
            }
            return(result);
        }
示例#3
0
        private SiteData GetCityRealtimeAqi(DateTime time)
        {
            var dataSource = _groupDataRepository.Table.Where(d => d.DurationID == 10 && d.GroupID == 102 && d.LST_AQI == time).Where(d => d.AQIItemID == 100 || d.AQIItemID == 101 || d.AQIItemID == 102 || d.AQIItemID == 107 || d.AQIItemID == 104 || d.AQIItemID == 106 || d.ParameterID == 108).ToList();

            SiteData result = new SiteData()
            {
                Name       = "郑州市",
                UpdateTime = time.ToString("HH:mm")
            };

            foreach (var dataItem in dataSource)
            {
                if (dataItem.AQIItemID == 100)
                {
                    var primaryData     = dataItem;
                    PrimaryParameter pp = new PrimaryParameter()
                    {
                        Aqi           = primaryData.AQI.Value,
                        Value         = Math.Round(primaryData.Value.Value, 2),
                        ParameterId   = primaryData.ParameterID.Value,
                        ParameterName = primaryData.Parameter
                    };
                    result.Primary = pp;
                    result.Aqi     = pp.Aqi;
                    result.Grade   = _aqiGradeService.CalcGrade(pp.Aqi);
                }
                else
                {
                    ParameterData pd = new ParameterData();
                    pd.Name  = dataItem.Parameter;
                    pd.Value = null != dataItem.Value ? (Math.Round(dataItem.Value.Value, 2) + "ug/m3") : "";
                    result.OtherParameters.Add(pd);
                }
            }

            DateTime d2                 = time.AddHours(-24);
            var      hourData           = _groupDataRepository.Table.Where(d => d.DurationID == 10 && d.GroupID == 102 && d.LST_AQI <= time && d.LST_AQI >= d2).Where(d => d.AQIItemID == 100 || d.AQIItemID == 101 || d.AQIItemID == 102 || d.AQIItemID == 107 || d.AQIItemID == 104 || d.AQIItemID == 106 || d.ParameterID == 108).OrderBy(d => d.LST_AQI).ToList();
            List <ParameterHourData> hp = new List <ParameterHourData>();

            foreach (var dataItem in hourData)
            {
                ParameterHourData theData = hp.Where(p => p.ParameterId == dataItem.ParameterID).FirstOrDefault();
                if (null == theData)
                {
                    theData = new ParameterHourData()
                    {
                        Parameter = dataItem.Parameter, ParameterId = dataItem.ParameterID.Value, Unit = "ug/m3"
                    };
                    hp.Add(theData);
                }
                HourData hd = new HourData()
                {
                    Aqi = dataItem.AQI.Value, Value = Math.Round(dataItem.Value.Value, 2), DateTime = dataItem.LST_AQI
                };
                theData.Data.Add(hd);
            }
            result.Hours = hp;
            d2           = time.AddDays(-30);

            var dayData = _groupDataRepository.Table.Where(d => d.DurationID == 11 && d.GroupID == 102 && d.LST_AQI <= time && d.LST_AQI >= d2 && d.ParameterID == 0).OrderBy(d => d.LST_AQI).ToList();

            foreach (var dataItem in dayData)
            {
                DayAqi dayAqi = new DayAqi();
                dayAqi.Aqi     = dataItem.AQI.Value;
                dayAqi.Level   = dataItem.Grade.Value;
                dayAqi.DayTime = dataItem.LST_AQI;
                result.Days.Add(dayAqi);
            }
            if (result.Days.Count == 0)
            {
                result.Days.AddRange(createExampleDayAqi(time));
            }
            result.Forecast.AddRange(createExampleForecast(DateTime.Now));
            return(result);
        }