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); }
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); }
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); }