private Dictionary <int, List <ParameterHourData> > Get24HoursData(DateTime time) { DateTime d2 = time.AddHours(-24); //var dataSource = _siteDataRepository.Table.Where(d => d.DurationID == 10 && d.LST_AQI <= time && d.LST_AQI >= d2).Where(d => d.ParameterID == 101 || d.ParameterID == 102 || d.ParameterID == 104 || d.DurationID == 106 || d.ParameterID == 107 || d.ParameterID == 108).OrderBy(d => d.LST_AQI).ToList(); //var dataSource = _siteDataRepository.Table.Where(d => d.DurationID == 10 && d.LST_AQI <= time && d.LST_AQI >= d2).Where(d => d.ParameterID == 1 || d.ParameterID == 2 || d.ParameterID == 6 || d.ParameterID == 7 || d.ParameterID == 8 || d.ParameterID == 108).OrderBy(d => d.LST_AQI).ToList(); var dataSource = _siteDataRepository.Table.Where(d => d.DurationID == 10 && 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(); Dictionary <int, List <ParameterHourData> > result = new Dictionary <int, List <ParameterHourData> >(); foreach (var dataItem in dataSource) { List <ParameterHourData> phdList = null; if (result.ContainsKey(dataItem.SiteID)) { phdList = result[dataItem.SiteID]; } else { phdList = new List <ParameterHourData>(); result[dataItem.SiteID] = phdList; } ParameterHourData theData = phdList.Where(p => p.ParameterId == dataItem.ParameterID).FirstOrDefault(); if (null == theData) { theData = new ParameterHourData() { Parameter = dataItem.Parameter, ParameterId = dataItem.ParameterID.Value, Unit = "ug/m3" }; phdList.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); } 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); }
private void fillHourToSiteData(SiteData siteData, List <StationOrCityMeasuredData> hourData, RankingData rd) { var newestData = hourData[hourData.Count - 1]; PrimaryParameter pp = new PrimaryParameter(); pp.Aqi = int.Parse(newestData.AQI); pp.ParameterName = newestData.PrimaryPol.ToUpper(); pp.Value = switchPpValue(newestData); siteData.Primary = pp; siteData.Grade = _aqiGradeService.CalcGrade(pp.Aqi); siteData.Aqi = pp.Aqi; siteData.UpdateTime = newestData.DateTime.ToString("yyyy-MM-dd HH:00"); fillRankingData(rd, newestData, siteData.Name, pp.Aqi); siteData.OtherParameters.Add(new ParameterData() { Name = "SO2", Value = parseStringToDecimal(newestData.SO2) + "ug/m3" }); siteData.OtherParameters.Add(new ParameterData() { Name = "NO2", Value = parseStringToDecimal(newestData.NO2) + "ug/m3" }); siteData.OtherParameters.Add(new ParameterData() { Name = "PM10", Value = parseStringToDecimal(newestData.PM10) + "ug/m3" }); siteData.OtherParameters.Add(new ParameterData() { Name = "PM2.5", Value = parseStringToDecimal(newestData.PM25) + "ug/m3" }); siteData.OtherParameters.Add(new ParameterData() { Name = "CO", Value = parseStringToDecimal(newestData.CO) + "mg/m3" }); siteData.OtherParameters.Add(new ParameterData() { Name = "O3", Value = parseStringToDecimal(newestData.O3) + "ug/m3" }); ParameterHourData so2 = new ParameterHourData() { Parameter = "SO2", Unit = "ug/m3" }; ParameterHourData no2 = new ParameterHourData() { Parameter = "NO2", Unit = "ug/m3" }; ParameterHourData pm10 = new ParameterHourData() { Parameter = "PM10", Unit = "ug/m3" }; ParameterHourData pm25 = new ParameterHourData() { Parameter = "PM2.5", Unit = "ug/m3" }; ParameterHourData co = new ParameterHourData() { Parameter = "CO", Unit = "mg/m3" }; ParameterHourData o3 = new ParameterHourData() { Parameter = "O3", Unit = "ug/m3" }; foreach (var h in hourData) { so2.Data.Add(new HourData() { Aqi = parseStringToInt(h.SO2IAQI), Value = parseStringToDecimal(h.SO2), DateTime = h.DateTime }); no2.Data.Add(new HourData() { Aqi = parseStringToInt(h.NO2IAQI), Value = parseStringToDecimal(h.NO2), DateTime = h.DateTime }); pm10.Data.Add(new HourData() { Aqi = parseStringToInt(h.PM10IAQI), Value = parseStringToDecimal(h.PM10), DateTime = h.DateTime }); pm25.Data.Add(new HourData() { Aqi = parseStringToInt(h.PM25IAQI), Value = parseStringToDecimal(h.PM25), DateTime = h.DateTime }); co.Data.Add(new HourData() { Aqi = parseStringToInt(h.COIAQI), Value = parseStringToDecimal(h.CO), DateTime = h.DateTime }); o3.Data.Add(new HourData() { Aqi = parseStringToInt(h.O3IAQI), Value = parseStringToDecimal(h.O3), DateTime = h.DateTime }); } siteData.Hours.AddRange(new ParameterHourData[] { so2, no2, pm10, pm25, co, o3 }); }