首页数据太多,太卡,redis缓存一下

This commit is contained in:
yanghongwei 2024-06-14 22:33:39 +08:00
parent 846c921a65
commit ecf20b76bf
5 changed files with 111 additions and 51 deletions

View File

@ -34,6 +34,11 @@
缓存ARI数据 缓存ARI数据
</summary> </summary>
</member> </member>
<member name="F:langguanApi.Common.Redis.RedisKeylist.Trend">
<summary>
首页趋势数据
</summary>
</member>
<member name="F:langguanApi.Common.Redis.RedisKeylist.CleanData"> <member name="F:langguanApi.Common.Redis.RedisKeylist.CleanData">
<summary> <summary>
缓存清洁数据 缓存清洁数据
@ -99,7 +104,7 @@
</member> </member>
<member name="M:langguanApi.Controllers.AlertController.export(System.Nullable{System.DateTime},System.Nullable{System.DateTime})"> <member name="M:langguanApi.Controllers.AlertController.export(System.Nullable{System.DateTime},System.Nullable{System.DateTime})">
<summary> <summary>
export data export data 默认最近7天数据
</summary> </summary>
<param name="start"></param> <param name="start"></param>
<param name="end"></param> <param name="end"></param>
@ -1861,6 +1866,13 @@
<param name="input"></param> <param name="input"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:langguanApi.Service.Hj212Service.GetIndexData(System.Int32)">
<summary>
首页数据
</summary>
<param name="day"></param>
<returns></returns>
</member>
<member name="M:langguanApi.Service.Hj212Service.Add(langguanApi.Model.HJ212,System.String)"> <member name="M:langguanApi.Service.Hj212Service.Add(langguanApi.Model.HJ212,System.String)">
<summary> <summary>
新加数据 新加数据

View File

@ -12,6 +12,10 @@
/// </summary> /// </summary>
public static string AriQuality = "arqulaty"; public static string AriQuality = "arqulaty";
/// <summary> /// <summary>
/// 首页趋势数据
/// </summary>
public static string Trend = "tred";
/// <summary>
/// 缓存清洁数据 /// 缓存清洁数据
/// </summary> /// </summary>
public static string CleanData = "cleandata"; public static string CleanData = "cleandata";

View File

@ -1,6 +1,7 @@
using langguanApi.Extensions.AutoDI; using langguanApi.Extensions.AutoDI;
using langguanApi.Model; using langguanApi.Model;
using langguanApi.Model.Dto; using langguanApi.Model.Dto;
using System.Diagnostics;
using System.Linq.Expressions; using System.Linq.Expressions;
namespace langguanApi.Service namespace langguanApi.Service
@ -14,6 +15,46 @@ namespace langguanApi.Service
_deviceSerive = deviceSerive; _deviceSerive = deviceSerive;
} }
/// <summary> /// <summary>
/// 首页数据
/// </summary>
/// <param name="day"></param>
/// <returns></returns>
public async Task<object> GetIndexData(int day = 7)
{
Stopwatch sw = new Stopwatch();
sw.Start();
Expression<Func<Model.HJ212, bool>> 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) });
//});
}
/// <summary>
/// 新加数据 /// 新加数据
/// </summary> /// </summary>
/// <param name="hJ212"></param> /// <param name="hJ212"></param>
@ -22,8 +63,8 @@ namespace langguanApi.Service
public async Task Add(Model.HJ212 hJ212, string deviceIp) public async Task Add(Model.HJ212 hJ212, string deviceIp)
{ {
////判断设备类型 tsp 会有经纬度数据 ////判断设备类型 tsp 会有经纬度数据
// int deviceType = 1;//设备类型为1 =voc // int deviceType = 1;//设备类型为1 =voc
////先判断当前设备是否存在 ////先判断当前设备是否存在
//await _deviceSerive.Add(new DeviceAddDto() //await _deviceSerive.Add(new DeviceAddDto()
//{ //{

View File

@ -61,7 +61,8 @@ namespace langguanApi.Service
// 获取空气质量缓存2小时如果不存在则调用WeatherService获取 // 获取空气质量缓存2小时如果不存在则调用WeatherService获取
Func<Task<object>> getAriQualityFunc = async () => await _weatherService.GetAirQuality(); Func<Task<object>> getAriQualityFunc = async () => await _weatherService.GetAirQuality();
var ariQuality = await _cacheManager.GetConvertVale(RedisKeylist.AriQuality, getAriQualityFunc, 60 * 120); var ariQuality = await _cacheManager.GetConvertVale(RedisKeylist.AriQuality, getAriQualityFunc, 60 * 120);
Func<Task<object>> getTrendFunc = async () => await _hj212Service.GetIndexData();
var trend = await _cacheManager.GetConvertVale(RedisKeylist.Trend, getTrendFunc, 60 * new Random().Next(70));
//首页清洁运输比例 //首页清洁运输比例
var cleaData = new var cleaData = new
{ {
@ -73,9 +74,10 @@ namespace langguanApi.Service
day = new { voc = "70mg/m3", cemes = "100mg/m3" }, day = new { voc = "70mg/m3", cemes = "100mg/m3" },
week = new week = new
{ {
} }
}; };
return new ApiResult return new ApiResult
{ {
code = 0, code = 0,
@ -90,13 +92,15 @@ namespace langguanApi.Service
}, },
title = _configuration.GetValue<string>("Home:Title"), title = _configuration.GetValue<string>("Home:Title"),
}, },
weather,
devices, devices,
cleanData, cleanData,
ariQuality, ariQuality,
Realtime = "", rate = new { },
getViewTop = "", trend,
weather, // trend = await _hj212Service.GetIndexData(),
alerts, alerts,
getViewTop = "",
detections detections
} }
}; };

View File

@ -98,87 +98,86 @@ namespace langguanApi.Service
{ {
case "CO": case "CO":
keyword = "一氧化碳"; keyword = "一氧化碳";
standard = "0.5μg/m3"; standard = "4 mg/m3";
if (double.Parse(value) >= 0.5) if (double.Parse(value) > 4)
{ {
level = ""; level = "";
} }
else if (double.Parse(value) >= 0.3) else if (double.Parse(value) == 4)
{ {
level = "持平"; level = "持平";
} }
else else
{ {
level = ""; level = "";
} }
break; break;
case "NO2": case "NO2":
keyword = "二氧化氮"; keyword = "二氧化氮";
standard = "50μg/m3"; standard = "40μg/m3";
if (double.Parse(value) >= 50) if (double.Parse(value) >= 40)
{ {
level = ""; level = "";
} }
else if (double.Parse(value) >= 150) 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 = "持平"; level = "持平";
} }
else else
{
level = "优";
}
break;
case "O3":
keyword = "臭氧";
standard = "160μg/L";
if (double.Parse(value) > 160)
{ {
level = "差"; level = "差";
} }
else if (double.Parse(value) == 160)
{
level = "持平";
}
else
{
level = "优";
}
break; break;
case "PM10": case "PM10":
keyword = "PM10"; keyword = "PM10";
standard = "50ug/m3"; standard = "10mg/m3";
if (double.Parse(value) >= 50) if (double.Parse(value) > 10)
{ {
level = "优"; level = "";
} }
else if (double.Parse(value) >= 150) else if (double.Parse(value) == 10)
{ {
level = ""; level = "持平";
} }
else else
{ {
level = ""; level = "";
} }
break; break;
case "PM2_5": case "PM2_5":
keyword = "PM2.5"; keyword = "PM2.5";
standard = "25ug/m3"; standard = "8mg/m3";
if (double.Parse(value) >= 25) if (double.Parse(value) > 8)
{
level = "优";
}
else if (double.Parse(value) >= 100)
{
level = "中";
}
else
{ {
level = "差"; level = "差";
} }
else if (double.Parse(value) == 8)
{
level = "持平";
}
else
{
level = "优";
}
break; break;
case "SO2": case "SO2":
keyword = "二氧化硫"; keyword = "二氧化硫";
standard = "15μg/m3"; standard = "15μg/m3";
if (double.Parse(value) >= 15) if (double.Parse(value) >= 15)