public IHttpActionResult GetSiteList() { //ISiteService siteService = EngineContext.Current.Resolve<ISiteService>(); IAqiManager aqiManager = EngineContext.Current.Resolve <IAqiManager>(); IAqiGradeService gradeService = EngineContext.Current.Resolve <IAqiGradeService>(); var allSite = aqiManager.GetAllStation(); List <SiteGroup> gp = new List <SiteGroup>(); List <SiteModel> result = new List <SiteModel>(); foreach (var site in allSite) { SiteGroup g = gp.Where(p => p.GroupName == site.FirstPinyin).FirstOrDefault(); if (null == g) { g = new SiteGroup() { GroupName = site.FirstPinyin }; gp.Add(g); } SiteModel sm = new SiteModel(); sm.Id = site.StationCode; sm.Name = site.StationName; sm.Group = site.FirstPinyin; sm.Latitude = site.Latitude; sm.Longitude = site.Longitude; sm.Aqi = aqiManager.GetSiteCurrentAqi(site.StationCode)[0]; sm.Grade = gradeService.CalcGrade(sm.Aqi).Grade; g.Items.Add(sm); } return(Ok(gp.OrderBy(g => g.GroupName).ToList())); }
public Dictionary <int, SiteData> BuildAllSiteRealTimeAqi() { var time = _updateTimeRepository.Table.Where(t => t.Name == "AQINow").FirstOrDefault(); if (time == null) { return(null); } //var dataSource = _siteDataRepository.Table.Where(d => d.DurationID == 10 && d.LST_AQI == time.Time).Where(d => d.ParameterID == 101 || d.ParameterID == 102 || d.ParameterID == 104 || d.ParameterID == 106 || d.ParameterID == 107 || d.ParameterID == 108).ToList(); //var dataSource = _siteDataRepository.Table.Where(d => d.DurationID == 10 && d.LST_AQI == time.Time).Where(d => d.ParameterID == 1 || d.ParameterID == 2 || d.ParameterID == 6 || d.ParameterID == 7 || d.ParameterID == 8 || d.ParameterID == 21).ToList(); var dataSource = _siteDataRepository.Table.Where(d => d.DurationID == 10 && d.LST_AQI == time.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(); Dictionary <int, List <DataRTSite> > siteData = new Dictionary <int, List <DataRTSite> >(); Dictionary <int, SiteData> result = new Dictionary <int, SiteData>(); Dictionary <int, List <ParameterHourData> > hourData = Get24HoursData(time.Time); Dictionary <int, List <DayAqi> > dayData = Get30DayAqi(time.Time); var siteService = EngineContext.Current.Resolve <ISiteService>(); foreach (var dataItem in dataSource) { List <DataRTSite> sList = null; if (siteData.ContainsKey(dataItem.SiteID)) { sList = siteData[dataItem.SiteID]; } else { sList = new List <DataRTSite>(); siteData[dataItem.SiteID] = sList; } sList.Add(dataItem); } foreach (int siteId in siteData.Keys) { var pData = siteData[siteId]; //var primaryData = pData.OrderByDescending(s => s.AQI).FirstOrDefault(); //PrimaryParameter pp = new PrimaryParameter() //{ // Aqi = primaryData.AQI.Value, // Value = primaryData.Value.Value, // ParameterId = primaryData.ParameterID.Value, // ParameterName = primaryData.Parameter //}; var theSite = siteService.GetById(siteId); SiteData sd = new SiteData(); if (null != theSite) { sd.Name = theSite.Name; } sd.UpdateTime = time.Time.ToString("HH:mm"); foreach (var pd in pData) { if (pd.AQIItemID == 100) { var primaryData = pd; PrimaryParameter pp = new PrimaryParameter() { Aqi = primaryData.AQI.Value, Value = Math.Round(primaryData.Value.Value, 2), ParameterId = primaryData.ParameterID.Value, ParameterName = primaryData.Parameter }; sd.Primary = pp; sd.Aqi = pp.Aqi; sd.Grade = _aqiGradeService.CalcGrade(pp.Aqi); } else { ParameterData parameterData = new ParameterData(); parameterData.Value = pd.Value != null ? (Math.Round(pd.Value.Value, 2) + "ug/m3") : ""; parameterData.Name = pd.Parameter; sd.OtherParameters.Add(parameterData); } } if (hourData.ContainsKey(siteId)) { sd.Hours = hourData[siteId]; } if (dayData.ContainsKey(siteId)) { sd.Days = dayData[siteId]; } if (sd.Days == null || sd.Days.Count == 0) { sd.Days = createExampleDayAqi(time.Time); } sd.Forecast.AddRange(createExampleForecast(DateTime.Now)); result[siteId] = sd; } result[0] = GetCityRealtimeAqi(time.Time); 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 }); }