首页数据太多,太卡,redis缓存一下
This commit is contained in:
		
							parent
							
								
									846c921a65
								
							
						
					
					
						commit
						ecf20b76bf
					
				| 
						 | 
				
			
			@ -34,6 +34,11 @@
 | 
			
		|||
            缓存ARI数据
 | 
			
		||||
            </summary>
 | 
			
		||||
        </member>
 | 
			
		||||
        <member name="F:langguanApi.Common.Redis.RedisKeylist.Trend">
 | 
			
		||||
            <summary>
 | 
			
		||||
            首页趋势数据
 | 
			
		||||
            </summary>
 | 
			
		||||
        </member>
 | 
			
		||||
        <member name="F:langguanApi.Common.Redis.RedisKeylist.CleanData">
 | 
			
		||||
            <summary>
 | 
			
		||||
            缓存清洁数据
 | 
			
		||||
| 
						 | 
				
			
			@ -99,7 +104,7 @@
 | 
			
		|||
        </member>
 | 
			
		||||
        <member name="M:langguanApi.Controllers.AlertController.export(System.Nullable{System.DateTime},System.Nullable{System.DateTime})">
 | 
			
		||||
            <summary>
 | 
			
		||||
            export data
 | 
			
		||||
            export data 默认最近7天数据
 | 
			
		||||
            </summary>
 | 
			
		||||
            <param name="start"></param>
 | 
			
		||||
            <param name="end"></param>
 | 
			
		||||
| 
						 | 
				
			
			@ -1861,6 +1866,13 @@
 | 
			
		|||
            <param name="input"></param>
 | 
			
		||||
            <returns></returns>
 | 
			
		||||
        </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)">
 | 
			
		||||
            <summary>
 | 
			
		||||
            新加数据
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -12,6 +12,10 @@
 | 
			
		|||
        /// </summary>
 | 
			
		||||
        public static string AriQuality = "arqulaty";
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// 首页趋势数据
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        public static string Trend = "tred";
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// 缓存清洁数据
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        public static string CleanData = "cleandata";
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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;
 | 
			
		||||
        }
 | 
			
		||||
        /// <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>
 | 
			
		||||
        /// <param name="hJ212"></param>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -61,7 +61,8 @@ namespace langguanApi.Service
 | 
			
		|||
            // 获取空气质量,缓存2小时,如果不存在,则调用WeatherService获取
 | 
			
		||||
            Func<Task<object>> getAriQualityFunc = async () => await _weatherService.GetAirQuality();
 | 
			
		||||
            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
 | 
			
		||||
            {
 | 
			
		||||
| 
						 | 
				
			
			@ -76,6 +77,7 @@ namespace langguanApi.Service
 | 
			
		|||
 | 
			
		||||
                }
 | 
			
		||||
            };
 | 
			
		||||
 | 
			
		||||
            return new ApiResult
 | 
			
		||||
            {
 | 
			
		||||
                code = 0,
 | 
			
		||||
| 
						 | 
				
			
			@ -90,13 +92,15 @@ namespace langguanApi.Service
 | 
			
		|||
                        },
 | 
			
		||||
                        title = _configuration.GetValue<string>("Home:Title"),
 | 
			
		||||
                    },
 | 
			
		||||
                    weather,
 | 
			
		||||
                    devices,
 | 
			
		||||
                    cleanData,
 | 
			
		||||
                    ariQuality,
 | 
			
		||||
                    Realtime = "",
 | 
			
		||||
                    getViewTop = "",
 | 
			
		||||
                    weather,
 | 
			
		||||
                    rate = new { },
 | 
			
		||||
                    trend,
 | 
			
		||||
                    // trend = await _hj212Service.GetIndexData(),
 | 
			
		||||
                    alerts,
 | 
			
		||||
                    getViewTop = "",
 | 
			
		||||
                    detections
 | 
			
		||||
                }
 | 
			
		||||
            };
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue