diff --git a/langguanApi.xml b/langguanApi.xml index c5c27f9..ccbb527 100644 --- a/langguanApi.xml +++ b/langguanApi.xml @@ -34,6 +34,11 @@ 缓存ARI数据 + + + 首页趋势数据 + + 缓存清洁数据 @@ -99,7 +104,7 @@ - export data + export data 默认最近7天数据 @@ -1861,6 +1866,13 @@ + + + 首页数据 + + + + 新加数据 diff --git a/langguanApi/Common/Redis/RedisKeylist.cs b/langguanApi/Common/Redis/RedisKeylist.cs index a3a3b77..6093aa6 100644 --- a/langguanApi/Common/Redis/RedisKeylist.cs +++ b/langguanApi/Common/Redis/RedisKeylist.cs @@ -12,6 +12,10 @@ /// public static string AriQuality = "arqulaty"; /// + /// 首页趋势数据 + /// + public static string Trend = "tred"; + /// /// 缓存清洁数据 /// public static string CleanData = "cleandata"; diff --git a/langguanApi/Service/Hj212Service.cs b/langguanApi/Service/Hj212Service.cs index 8d00e74..08b5b76 100644 --- a/langguanApi/Service/Hj212Service.cs +++ b/langguanApi/Service/Hj212Service.cs @@ -1,6 +1,7 @@ using langguanApi.Extensions.AutoDI; using langguanApi.Model; using langguanApi.Model.Dto; +using System.Diagnostics; using System.Linq.Expressions; namespace langguanApi.Service @@ -14,6 +15,46 @@ namespace langguanApi.Service _deviceSerive = deviceSerive; } /// + /// 首页数据 + /// + /// + /// + public async Task GetIndexData(int day = 7) + { + Stopwatch sw = new Stopwatch(); + sw.Start(); + Expression> exp = filter => filter.CreateDateTime >= DateTime.Now.AddDays(-day); + var result = (await base.GetListWithExp(exp)).ToList(); + var temp = result.Select(s => new + { + s.a34001, + s.a34002, + s.a34004, + date = s.CreateDateTime.AddHours(8).ToString("MM-dd") + }).ToList(); + sw.Stop(); + Console.WriteLine($"GetIndexData:{sw.ElapsedMilliseconds}ms"); + return temp.GroupBy(g => new { g.date }) + .Select(s => new + { + s.Key.date, + a34001 = s.Sum(t => t.a34001), + a34002 = s.Sum(t => t.a34002), + a34004 = s.Sum(t => t.a34004) + }).ToList(); + + + //temp.GroupBy(g => new { g.date }).ToList().ForEach(s => + //{ + // var v1 = temp.Where(m => m.date == s.Key.date).Sum(t => t.a34001); + // var v2 = temp.Where(m => m.date == s.Key.date).Sum(t => t.a34002); + // var v3 = temp.Where(m => m.date == s.Key.date).Sum(t => t.a34004); + // list.Add(new columnView() { hour = s.Key.date, type = "a34001", value = v1 }); + // list.Add(new columnView() { hour = s.Key.date, type = "a34002", value = Math.Round(v2, 2) }); + // list.Add(new columnView() { hour = s.Key.date, type = "a34004", value = Math.Round(v3, 2) }); + //}); + } + /// /// 新加数据 /// /// @@ -22,8 +63,8 @@ namespace langguanApi.Service public async Task Add(Model.HJ212 hJ212, string deviceIp) { ////判断设备类型 tsp 会有经纬度数据 - // int deviceType = 1;//设备类型为1 =voc - + // int deviceType = 1;//设备类型为1 =voc + ////先判断当前设备是否存在 //await _deviceSerive.Add(new DeviceAddDto() //{ diff --git a/langguanApi/Service/HomeService.cs b/langguanApi/Service/HomeService.cs index bf7b49e..82ba3ab 100644 --- a/langguanApi/Service/HomeService.cs +++ b/langguanApi/Service/HomeService.cs @@ -61,7 +61,8 @@ namespace langguanApi.Service // 获取空气质量,缓存2小时,如果不存在,则调用WeatherService获取 Func> getAriQualityFunc = async () => await _weatherService.GetAirQuality(); var ariQuality = await _cacheManager.GetConvertVale(RedisKeylist.AriQuality, getAriQualityFunc, 60 * 120); - + Func> getTrendFunc = async () => await _hj212Service.GetIndexData(); + var trend = await _cacheManager.GetConvertVale(RedisKeylist.Trend, getTrendFunc, 60 * new Random().Next(70)); //首页清洁运输比例 var cleaData = new { @@ -73,9 +74,10 @@ namespace langguanApi.Service day = new { voc = "70mg/m3", cemes = "100mg/m3" }, week = new { - - } + + } }; + return new ApiResult { code = 0, @@ -90,13 +92,15 @@ namespace langguanApi.Service }, title = _configuration.GetValue("Home:Title"), }, + weather, devices, cleanData, ariQuality, - Realtime = "", - getViewTop = "", - weather, + rate = new { }, + trend, + // trend = await _hj212Service.GetIndexData(), alerts, + getViewTop = "", detections } }; diff --git a/langguanApi/Service/WeatherService.cs b/langguanApi/Service/WeatherService.cs index d3e0a8f..b1394d7 100644 --- a/langguanApi/Service/WeatherService.cs +++ b/langguanApi/Service/WeatherService.cs @@ -98,87 +98,86 @@ namespace langguanApi.Service { case "CO": keyword = "一氧化碳"; - standard = "0.5μg/m3"; - if (double.Parse(value) >= 0.5) + standard = "4 mg/m3"; + if (double.Parse(value) > 4) { - level = "优"; + level = "差"; } - else if (double.Parse(value) >= 0.3) + else if (double.Parse(value) == 4) { level = "持平"; } else { - level = "差"; + level = "优"; } break; case "NO2": keyword = "二氧化氮"; - standard = "50μg/m3"; - if (double.Parse(value) >= 50) + standard = "40μg/m3"; + if (double.Parse(value) >= 40) { - level = "优"; + 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) + else if (double.Parse(value) == 150) { level = "持平"; } else + { + level = "优"; + } + break; + case "O3": + keyword = "臭氧"; + standard = "160μg/L"; + if (double.Parse(value) > 160) { level = "差"; } + else if (double.Parse(value) == 160) + { + level = "持平"; + } + else + { + level = "优"; + } break; case "PM10": keyword = "PM10"; - standard = "50ug/m3"; - if (double.Parse(value) >= 50) + standard = "10mg/m3"; + if (double.Parse(value) > 10) { - level = "优"; + level = "差"; } - else if (double.Parse(value) >= 150) + else if (double.Parse(value) == 10) { - level = "中"; + level = "持平"; } else { - level = "差"; + 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 + standard = "8mg/m3"; + if (double.Parse(value) > 8) { level = "差"; } + else if (double.Parse(value) == 8) + { + level = "持平"; + } + else + { + level = "优"; + } break; case "SO2": - keyword = "二氧化硫"; standard = "15μg/m3"; if (double.Parse(value) >= 15)