空气质量
This commit is contained in:
parent
649c2be62d
commit
f71dac2ac2
|
|
@ -29,6 +29,11 @@
|
|||
缓存天气信息
|
||||
</summary>
|
||||
</member>
|
||||
<member name="F:langguanApi.Common.Redis.RedisKeylist.AriQuality">
|
||||
<summary>
|
||||
缓存ARI数据
|
||||
</summary>
|
||||
</member>
|
||||
<member name="F:langguanApi.Common.Redis.RedisKeylist.CleanData">
|
||||
<summary>
|
||||
缓存清洁数据
|
||||
|
|
@ -2228,6 +2233,67 @@
|
|||
</summary>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:langguanApi.Service.WeatherService.GetAirQuality">
|
||||
<summary>
|
||||
爬空气质量数据
|
||||
</summary>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="P:langguanApi.Service.WeatherService.Quality.key">
|
||||
<summary>
|
||||
空气质量key
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:langguanApi.Service.WeatherService.Quality.val">
|
||||
<summary>
|
||||
空气质量指数数值
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:langguanApi.Service.WeatherService.Quality.level">
|
||||
<summary>
|
||||
空气质量指数级别
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:langguanApi.Service.WeatherService.Quality.standard">
|
||||
<summary>
|
||||
空气质量指数标准
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:langguanApi.Service.WeatherService.AirQuality">
|
||||
<summary>
|
||||
空气质量数据
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:langguanApi.Service.WeatherService.AirQuality.CO">
|
||||
<summary>
|
||||
一氧化碳
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:langguanApi.Service.WeatherService.AirQuality.NO2">
|
||||
<summary>
|
||||
二氧化氮
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:langguanApi.Service.WeatherService.AirQuality.O3">
|
||||
<summary>
|
||||
臭氧
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:langguanApi.Service.WeatherService.AirQuality.PM10">
|
||||
<summary>
|
||||
PM10
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:langguanApi.Service.WeatherService.AirQuality.PM2_5">
|
||||
<summary>
|
||||
PM25
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:langguanApi.Service.WeatherService.AirQuality.SO2">
|
||||
<summary>
|
||||
二氧化硫
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:langguanApi.Service.WeatherService.Location.id">
|
||||
<summary>
|
||||
54511
|
||||
|
|
|
|||
|
|
@ -8,6 +8,10 @@
|
|||
/// </summary>
|
||||
public static string Weather = "weather";
|
||||
/// <summary>
|
||||
/// 缓存ARI数据
|
||||
/// </summary>
|
||||
public static string AriQuality = "arqulaty";
|
||||
/// <summary>
|
||||
/// 缓存清洁数据
|
||||
/// </summary>
|
||||
public static string CleanData = "cleandata";
|
||||
|
|
|
|||
|
|
@ -40,7 +40,7 @@ namespace langguanApi.Service
|
|||
/// </summary>
|
||||
/// <param name="hours"></param>
|
||||
/// <returns></returns>
|
||||
public async Task<List<Model.HJ212>> GetViewTop(int hours = -10)
|
||||
public async Task<List<Model.HJ212>> GetViewTop(int hours = -5)
|
||||
{
|
||||
var date = DateTime.Now.AddHours(-8).AddHours(hours);
|
||||
Expression<Func<Model.HJ212, bool>> exp = filter => filter.CreateDateTime >= date;
|
||||
|
|
|
|||
|
|
@ -41,7 +41,6 @@ namespace langguanApi.Service
|
|||
public async Task<ApiResult> View()
|
||||
{
|
||||
var devices = await _deviceService.GetAsync();
|
||||
var ariQuality = "";
|
||||
var cleanData = new
|
||||
{
|
||||
Yesterday = 0.8,
|
||||
|
|
@ -55,6 +54,8 @@ namespace langguanApi.Service
|
|||
// 获取天气信息,缓存1小时,如果不存在,则调用WeatherService获取
|
||||
Func<Task<object>> getWeatherFunc = async () => await _weatherService.GetWeather();
|
||||
var weather = await _cacheManager.GetConvertVale(RedisKeylist.Weather, getWeatherFunc, 60 * 60);
|
||||
Func<Task<object>> getAriQualityFunc= async () => await _weatherService.GetAirQuality();
|
||||
var ariQuality = await _cacheManager.GetConvertVale(RedisKeylist.AriQuality, getAriQualityFunc, 60 * 120);
|
||||
return new ApiResult
|
||||
{
|
||||
code = 0,
|
||||
|
|
|
|||
|
|
@ -1,5 +1,7 @@
|
|||
using langguanApi.Extensions.AutoDI;
|
||||
using Newtonsoft.Json;
|
||||
using NPOI.SS.Formula.Functions;
|
||||
using System.Reflection;
|
||||
|
||||
namespace langguanApi.Service
|
||||
{
|
||||
|
|
@ -50,6 +52,203 @@ namespace langguanApi.Service
|
|||
}
|
||||
return null;
|
||||
}
|
||||
/// <summary>
|
||||
/// 爬空气质量数据
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public async Task<object> GetAirQuality()
|
||||
{
|
||||
var client = _httpClientFactory.CreateClient();
|
||||
var resp = await client.GetAsync(_configuration.GetSection("AirQuality").Value);
|
||||
if (resp.IsSuccessStatusCode)
|
||||
{
|
||||
var data = await resp.Content.ReadAsStringAsync();
|
||||
var air = JsonConvert.DeserializeObject<AirQuality>(data);
|
||||
return Convert2QualityList(air);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
private List<Quality> Convert2QualityList(AirQuality airQuality)
|
||||
{
|
||||
Type modelType = typeof(AirQuality);
|
||||
List<Quality> qualityList = new List<Quality>();
|
||||
PropertyInfo[] PropertyList = modelType.GetProperties();
|
||||
foreach (PropertyInfo item in PropertyList)
|
||||
{
|
||||
Quality quality = new Quality();
|
||||
object value = item.GetValue(airQuality, null);
|
||||
if (value != null)
|
||||
{
|
||||
var tuple = GetStandard(item.Name, value.ToString());
|
||||
quality.key = tuple.Item1;
|
||||
quality.val = value.ToString();
|
||||
quality.standard = tuple.Item2;
|
||||
quality.level = tuple.Item3;
|
||||
qualityList.Add(quality);
|
||||
}
|
||||
}
|
||||
return qualityList;
|
||||
}
|
||||
private Tuple<string, string, string> GetStandard(string key, string value)
|
||||
{
|
||||
string standard = "";
|
||||
string keyword = "";
|
||||
string level = "";
|
||||
switch (key)
|
||||
{
|
||||
case "CO":
|
||||
keyword = "一氧化碳";
|
||||
standard = "0.5μg/m3";
|
||||
if (double.Parse(value) >= 0.5)
|
||||
{
|
||||
level = "优";
|
||||
}
|
||||
else if (double.Parse(value) >= 0.3)
|
||||
{
|
||||
level = "持平";
|
||||
}
|
||||
else
|
||||
{
|
||||
level = "差";
|
||||
}
|
||||
break;
|
||||
case "NO2":
|
||||
keyword = "二氧化氮";
|
||||
standard = "50μg/m3";
|
||||
if (double.Parse(value) >= 50)
|
||||
{
|
||||
level = "优";
|
||||
}
|
||||
else if (double.Parse(value) >= 150)
|
||||
{
|
||||
level = "轻度污染";
|
||||
}
|
||||
else
|
||||
{
|
||||
level = "中度污染";
|
||||
}
|
||||
break;
|
||||
case "O3":
|
||||
keyword = "臭氧";
|
||||
standard = "100μg/m3";
|
||||
if (double.Parse(value) >= 100)
|
||||
{
|
||||
level = "优";
|
||||
}
|
||||
else if (double.Parse(value) >= 50)
|
||||
{
|
||||
level = "持平";
|
||||
}
|
||||
else
|
||||
{
|
||||
level = "差";
|
||||
}
|
||||
break;
|
||||
case "PM10":
|
||||
keyword = "PM10";
|
||||
standard = "50ug/m3";
|
||||
if (double.Parse(value) >= 50)
|
||||
{
|
||||
level = "优";
|
||||
}
|
||||
else if (double.Parse(value) >= 150)
|
||||
{
|
||||
level = "中";
|
||||
}
|
||||
else
|
||||
{
|
||||
level = "差";
|
||||
}
|
||||
break;
|
||||
case "PM2_5":
|
||||
|
||||
keyword = "PM2.5";
|
||||
standard = "25ug/m3";
|
||||
if (double.Parse(value) >= 25)
|
||||
{
|
||||
level = "优";
|
||||
}
|
||||
else if (double.Parse(value) >= 100)
|
||||
{
|
||||
level = "中";
|
||||
}
|
||||
else
|
||||
{
|
||||
level = "差";
|
||||
}
|
||||
break;
|
||||
case "SO2":
|
||||
|
||||
keyword = "二氧化硫";
|
||||
standard = "15μg/m3";
|
||||
if (double.Parse(value) >= 15)
|
||||
{
|
||||
level = "优";
|
||||
}
|
||||
else if (double.Parse(value) >= 35)
|
||||
{
|
||||
level = "中";
|
||||
}
|
||||
else
|
||||
{
|
||||
level = "差";
|
||||
}
|
||||
break;
|
||||
}
|
||||
return new Tuple<string, string, string>(keyword, standard, level);
|
||||
}
|
||||
public class Quality
|
||||
{
|
||||
/// <summary>
|
||||
/// 空气质量key
|
||||
/// </summary>
|
||||
public string key { get; set; }
|
||||
/// <summary>
|
||||
/// 空气质量指数数值
|
||||
/// </summary>
|
||||
public string val { get; set; }
|
||||
/// <summary>
|
||||
/// 空气质量指数级别
|
||||
/// </summary>
|
||||
public string level { get; set; }
|
||||
/// <summary>
|
||||
/// 空气质量指数标准
|
||||
/// </summary>
|
||||
public string standard { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 空气质量数据
|
||||
/// </summary>
|
||||
public class AirQuality
|
||||
{
|
||||
// public string Area { get; set; }
|
||||
// public int CityCode { get; set; }
|
||||
/// <summary>
|
||||
/// 一氧化碳
|
||||
/// </summary>
|
||||
public string CO { get; set; }
|
||||
/// <summary>
|
||||
/// 二氧化氮
|
||||
/// </summary>
|
||||
public string NO2 { get; set; }
|
||||
/// <summary>
|
||||
/// 臭氧
|
||||
/// </summary>
|
||||
public string O3 { get; set; }
|
||||
/// <summary>
|
||||
/// PM10
|
||||
/// </summary>
|
||||
public string PM10 { get; set; }
|
||||
/// <summary>
|
||||
/// PM25
|
||||
/// </summary>
|
||||
public string PM2_5 { get; set; }
|
||||
/// <summary>
|
||||
/// 二氧化硫
|
||||
/// </summary>
|
||||
public string SO2 { get; set; }
|
||||
}
|
||||
public class Location
|
||||
{
|
||||
/// <summary>
|
||||
|
|
|
|||
|
|
@ -16,6 +16,7 @@
|
|||
"Index": 5
|
||||
},
|
||||
"Weather": "https://weather.cma.cn/api/now/54511", //天气预报地址,中国气象
|
||||
"AirQuality": "https://air.cnemc.cn:18007/CityData/GetAQIDataPublishLiveInfo?cityCode=110000",//空气质量API地址
|
||||
"Home": {
|
||||
"Title": "鄂托克旗新航焦化有限公司",
|
||||
"Center": {
|
||||
|
|
|
|||
Loading…
Reference in New Issue