首页分组数据
This commit is contained in:
		
							parent
							
								
									ecf20b76bf
								
							
						
					
					
						commit
						c0036c4b98
					
				| 
						 | 
				
			
			@ -39,6 +39,11 @@
 | 
			
		|||
            首页趋势数据
 | 
			
		||||
            </summary>
 | 
			
		||||
        </member>
 | 
			
		||||
        <member name="F:langguanApi.Common.Redis.RedisKeylist.Today">
 | 
			
		||||
            <summary>
 | 
			
		||||
            缓存今日数据
 | 
			
		||||
            </summary>
 | 
			
		||||
        </member>
 | 
			
		||||
        <member name="F:langguanApi.Common.Redis.RedisKeylist.CleanData">
 | 
			
		||||
            <summary>
 | 
			
		||||
            缓存清洁数据
 | 
			
		||||
| 
						 | 
				
			
			@ -1753,7 +1758,7 @@
 | 
			
		|||
        </member>
 | 
			
		||||
        <member name="M:langguanApi.Service.BaseService`1.FindListyFilter(MongoDB.Driver.FilterDefinition{`0})">
 | 
			
		||||
            <summary>
 | 
			
		||||
            filterdefinition
 | 
			
		||||
            filter查找 流式数据
 | 
			
		||||
            </summary>
 | 
			
		||||
            <param name="filter"></param>
 | 
			
		||||
            <returns></returns>
 | 
			
		||||
| 
						 | 
				
			
			@ -1873,6 +1878,18 @@
 | 
			
		|||
            <param name="day"></param>
 | 
			
		||||
            <returns></returns>
 | 
			
		||||
        </member>
 | 
			
		||||
        <member name="M:langguanApi.Service.Hj212Service.GetTodayData">
 | 
			
		||||
            <summary>
 | 
			
		||||
            今日排放数据
 | 
			
		||||
            </summary>
 | 
			
		||||
            <returns></returns>
 | 
			
		||||
        </member>
 | 
			
		||||
        <member name="M:langguanApi.Service.Hj212Service.GetWeekData(System.Collections.Generic.List{System.String},System.Collections.Generic.List{System.String})">
 | 
			
		||||
            <summary>
 | 
			
		||||
            一周之内的排放数据
 | 
			
		||||
            </summary>
 | 
			
		||||
            <returns></returns>
 | 
			
		||||
        </member>
 | 
			
		||||
        <member name="M:langguanApi.Service.Hj212Service.Add(langguanApi.Model.HJ212,System.String)">
 | 
			
		||||
            <summary>
 | 
			
		||||
            新加数据
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -16,6 +16,10 @@
 | 
			
		|||
        /// </summary>
 | 
			
		||||
        public static string Trend = "tred";
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// 缓存今日数据
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        public static string Today = "today";
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// 缓存清洁数据
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        public static string CleanData = "cleandata";
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,6 +1,8 @@
 | 
			
		|||
using langguanApi.Model;
 | 
			
		||||
using Microsoft.AspNetCore.Http;
 | 
			
		||||
using Microsoft.AspNetCore.Mvc.RazorPages;
 | 
			
		||||
using Microsoft.Extensions.Options;
 | 
			
		||||
using MongoDB.Bson;
 | 
			
		||||
using MongoDB.Driver;
 | 
			
		||||
using System.Linq.Expressions;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -184,16 +186,27 @@ namespace langguanApi.Service
 | 
			
		|||
        {
 | 
			
		||||
            FilterDefinition<T> filters = Builders<T>.Filter.Where(filter);
 | 
			
		||||
            return await _collection.Find(filters).ToListAsync();
 | 
			
		||||
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// filterdefinition
 | 
			
		||||
        /// filter查找 流式数据
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        /// <param name="filter"></param>
 | 
			
		||||
        /// <returns></returns>
 | 
			
		||||
        public async Task<List<T>> FindListyFilter(FilterDefinition<T> filter)
 | 
			
		||||
        {
 | 
			
		||||
            return await _collection.Find(filter).ToListAsync();
 | 
			
		||||
            List<T> result = new List<T>();
 | 
			
		||||
            var cursor = await _collection.FindAsync(filter);
 | 
			
		||||
            while (await cursor.MoveNextAsync())
 | 
			
		||||
            {
 | 
			
		||||
                var batch = cursor.Current;
 | 
			
		||||
                foreach (var document in batch)
 | 
			
		||||
                {
 | 
			
		||||
                    result.Add(document);
 | 
			
		||||
                    //    Console.WriteLine(document.ToString());
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            return result;
 | 
			
		||||
        }
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// 是否存在
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,8 +1,12 @@
 | 
			
		|||
using langguanApi.Extensions.AutoDI;
 | 
			
		||||
using langguanApi.Model;
 | 
			
		||||
using langguanApi.Model.Dto;
 | 
			
		||||
using MongoDB.Bson;
 | 
			
		||||
using MongoDB.Driver;
 | 
			
		||||
using NPOI.HSSF.Record;
 | 
			
		||||
using System.Diagnostics;
 | 
			
		||||
using System.Linq.Expressions;
 | 
			
		||||
using System.Text.RegularExpressions;
 | 
			
		||||
 | 
			
		||||
namespace langguanApi.Service
 | 
			
		||||
{
 | 
			
		||||
| 
						 | 
				
			
			@ -21,8 +25,6 @@ namespace langguanApi.Service
 | 
			
		|||
        /// <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
 | 
			
		||||
| 
						 | 
				
			
			@ -32,15 +34,13 @@ namespace langguanApi.Service
 | 
			
		|||
                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)
 | 
			
		||||
                        a34001 = Math.Round(s.Sum(t => t.a34001), 2),
 | 
			
		||||
                        a34002 = Math.Round(s.Sum(t => t.a34002), 2),
 | 
			
		||||
                        a34004 = Math.Round(s.Sum(t => t.a34004), 2)
 | 
			
		||||
                    }).ToList();
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -54,6 +54,61 @@ namespace langguanApi.Service
 | 
			
		|||
            //    list.Add(new columnView() { hour = s.Key.date, type = "a34004", value = Math.Round(v3, 2) });
 | 
			
		||||
            //});
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// 今日排放数据
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        /// <returns></returns>
 | 
			
		||||
        public async Task<object> GetTodayData()
 | 
			
		||||
        {
 | 
			
		||||
            Expression<Func<Model.Device, bool>> exp = filter => filter.DeviceType == 1 || filter.DeviceType == 2;
 | 
			
		||||
            var devices = (await _deviceSerive.GetListWithExp(exp)).ToList();
 | 
			
		||||
            var tody = Convert.ToDateTime(DateTime.Now.ToString("D").ToString());
 | 
			
		||||
            Expression<Func<Model.HJ212, bool>> expall = filter => devices.Select(s => s.deviceMN).Contains(filter.deviceMN) && filter.CreateDateTime >= tody;
 | 
			
		||||
            var result = (await base.GetListWithExp(expall)).ToList();
 | 
			
		||||
            var vocList = devices.Where(s => s.DeviceType == 1).Select(s => s.deviceMN).ToList();
 | 
			
		||||
            var cemsList = devices.Where(s => s.DeviceType == 2).Select(s => s.deviceMN).ToList();
 | 
			
		||||
            var voc = Math.Round(result.Where(s => vocList.Contains(s.deviceMN)).ToList().Select(s => s.a34004).Sum(), 2);
 | 
			
		||||
            var cems = Math.Round(result.Where(s => vocList.Contains(s.deviceMN)).ToList().Select(s => s.a34002).Sum(), 2);
 | 
			
		||||
            return new
 | 
			
		||||
            {
 | 
			
		||||
                today = new { voc, cems },
 | 
			
		||||
                week = await GetWeekData(vocList, cemsList)
 | 
			
		||||
            };
 | 
			
		||||
        }
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// 一周之内的排放数据
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        /// <returns></returns>
 | 
			
		||||
        public async Task<object> GetWeekData(List<string> vocList, List<string> cemsList)
 | 
			
		||||
        {
 | 
			
		||||
         //   Expression<Func<Model.HJ212, bool>> exp = filter => filter.CreateDateTime >= DateTime.Now.AddDays(-7);
 | 
			
		||||
 | 
			
		||||
            var filter = Builders<Model.HJ212>.Filter.In(s => s.deviceMN, vocList.Concat(cemsList))
 | 
			
		||||
                & Builders<Model.HJ212>.Filter.Gte(s => s.CreateDateTime, DateTime.Now.AddDays(-7));
 | 
			
		||||
            var result = await base.FindListyFilter(filter);
 | 
			
		||||
            var voc = result.Where(s => vocList.Contains(s.deviceMN)).Select(s => new
 | 
			
		||||
            {
 | 
			
		||||
                s.a34001,
 | 
			
		||||
                date = s.CreateDateTime.ToString("MM-dd")
 | 
			
		||||
            }).GroupBy(s => s.date)
 | 
			
		||||
            .Select(s => new
 | 
			
		||||
            {
 | 
			
		||||
                s.Key,
 | 
			
		||||
                value = Math.Round(s.Sum(t => t.a34001))
 | 
			
		||||
            });
 | 
			
		||||
            var cems = result.Where(s => cemsList.Contains(s.deviceMN)).Select(s => new
 | 
			
		||||
            {
 | 
			
		||||
                s.a34002,
 | 
			
		||||
                date = s.CreateDateTime.ToString("MM-dd")
 | 
			
		||||
            }).GroupBy(s => s.date)
 | 
			
		||||
            .Select(s => new
 | 
			
		||||
            {
 | 
			
		||||
                s.Key,
 | 
			
		||||
                value = Math.Round(s.Sum(t => t.a34002))
 | 
			
		||||
            });
 | 
			
		||||
            return new { voc, cems };
 | 
			
		||||
        }
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// 新加数据
 | 
			
		||||
        /// </summary>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -49,7 +49,6 @@ namespace langguanApi.Service
 | 
			
		|||
                Yesterday = 0.8,
 | 
			
		||||
                LastWeek = 0.6,
 | 
			
		||||
            };
 | 
			
		||||
 | 
			
		||||
            Expression<Func<Model.HJ212, bool>> filter = exp => true;
 | 
			
		||||
            // 首页设备报警数据
 | 
			
		||||
            var alerts = await _alertService.IndexData();
 | 
			
		||||
| 
						 | 
				
			
			@ -69,15 +68,9 @@ namespace langguanApi.Service
 | 
			
		|||
                yesterday = 0.8,
 | 
			
		||||
                lastWeek = 0.6
 | 
			
		||||
            };
 | 
			
		||||
            var day = new
 | 
			
		||||
            {
 | 
			
		||||
                day = new { voc = "70mg/m3", cemes = "100mg/m3" },
 | 
			
		||||
                week = new
 | 
			
		||||
                {
 | 
			
		||||
 | 
			
		||||
                }
 | 
			
		||||
            };
 | 
			
		||||
 | 
			
		||||
            var d1 = await _hj212Service.GetTodayData();
 | 
			
		||||
            Func<Task<object>> getTodayFunc = async () => await _hj212Service.GetTodayData();
 | 
			
		||||
            var today = await _cacheManager.GetConvertVale(RedisKeylist.Today, getTodayFunc, 60 * 30);
 | 
			
		||||
            return new ApiResult
 | 
			
		||||
            {
 | 
			
		||||
                code = 0,
 | 
			
		||||
| 
						 | 
				
			
			@ -92,14 +85,18 @@ namespace langguanApi.Service
 | 
			
		|||
                        },
 | 
			
		||||
                        title = _configuration.GetValue<string>("Home:Title"),
 | 
			
		||||
                    },
 | 
			
		||||
                    weather,
 | 
			
		||||
 | 
			
		||||
                    devices,
 | 
			
		||||
                    cleanData,
 | 
			
		||||
                    weather,
 | 
			
		||||
                    ariQuality,
 | 
			
		||||
                    rate = new { },
 | 
			
		||||
                    rate = new[] {
 | 
			
		||||
                        new { key = "cems", val = 0.7 } ,
 | 
			
		||||
                        new { key = "VOC", val = 0.6 }
 | 
			
		||||
                    },
 | 
			
		||||
                    trend,
 | 
			
		||||
                    // trend = await _hj212Service.GetIndexData(),
 | 
			
		||||
                    alerts,
 | 
			
		||||
                    cleanData,
 | 
			
		||||
                    today,
 | 
			
		||||
                    getViewTop = "",
 | 
			
		||||
                    detections
 | 
			
		||||
                }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue