首页分组数据

This commit is contained in:
yanghongwei 2024-06-16 03:17:41 +08:00
parent ecf20b76bf
commit c0036c4b98
5 changed files with 111 additions and 25 deletions

View File

@ -39,6 +39,11 @@
首页趋势数据 首页趋势数据
</summary> </summary>
</member> </member>
<member name="F:langguanApi.Common.Redis.RedisKeylist.Today">
<summary>
缓存今日数据
</summary>
</member>
<member name="F:langguanApi.Common.Redis.RedisKeylist.CleanData"> <member name="F:langguanApi.Common.Redis.RedisKeylist.CleanData">
<summary> <summary>
缓存清洁数据 缓存清洁数据
@ -1753,7 +1758,7 @@
</member> </member>
<member name="M:langguanApi.Service.BaseService`1.FindListyFilter(MongoDB.Driver.FilterDefinition{`0})"> <member name="M:langguanApi.Service.BaseService`1.FindListyFilter(MongoDB.Driver.FilterDefinition{`0})">
<summary> <summary>
filterdefinition filter查找 流式数据
</summary> </summary>
<param name="filter"></param> <param name="filter"></param>
<returns></returns> <returns></returns>
@ -1873,6 +1878,18 @@
<param name="day"></param> <param name="day"></param>
<returns></returns> <returns></returns>
</member> </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)"> <member name="M:langguanApi.Service.Hj212Service.Add(langguanApi.Model.HJ212,System.String)">
<summary> <summary>
新加数据 新加数据

View File

@ -16,6 +16,10 @@
/// </summary> /// </summary>
public static string Trend = "tred"; public static string Trend = "tred";
/// <summary> /// <summary>
/// 缓存今日数据
/// </summary>
public static string Today = "today";
/// <summary>
/// 缓存清洁数据 /// 缓存清洁数据
/// </summary> /// </summary>
public static string CleanData = "cleandata"; public static string CleanData = "cleandata";

View File

@ -1,6 +1,8 @@
using langguanApi.Model; using langguanApi.Model;
using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc.RazorPages; using Microsoft.AspNetCore.Mvc.RazorPages;
using Microsoft.Extensions.Options;
using MongoDB.Bson;
using MongoDB.Driver; using MongoDB.Driver;
using System.Linq.Expressions; using System.Linq.Expressions;
@ -184,16 +186,27 @@ namespace langguanApi.Service
{ {
FilterDefinition<T> filters = Builders<T>.Filter.Where(filter); FilterDefinition<T> filters = Builders<T>.Filter.Where(filter);
return await _collection.Find(filters).ToListAsync(); return await _collection.Find(filters).ToListAsync();
} }
/// <summary> /// <summary>
/// filterdefinition /// filter查找 流式数据
/// </summary> /// </summary>
/// <param name="filter"></param> /// <param name="filter"></param>
/// <returns></returns> /// <returns></returns>
public async Task<List<T>> FindListyFilter(FilterDefinition<T> filter) 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> /// <summary>
/// 是否存在 /// 是否存在

View File

@ -1,8 +1,12 @@
using langguanApi.Extensions.AutoDI; using langguanApi.Extensions.AutoDI;
using langguanApi.Model; using langguanApi.Model;
using langguanApi.Model.Dto; using langguanApi.Model.Dto;
using MongoDB.Bson;
using MongoDB.Driver;
using NPOI.HSSF.Record;
using System.Diagnostics; using System.Diagnostics;
using System.Linq.Expressions; using System.Linq.Expressions;
using System.Text.RegularExpressions;
namespace langguanApi.Service namespace langguanApi.Service
{ {
@ -21,8 +25,6 @@ namespace langguanApi.Service
/// <returns></returns> /// <returns></returns>
public async Task<object> GetIndexData(int day = 7) 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); Expression<Func<Model.HJ212, bool>> exp = filter => filter.CreateDateTime >= DateTime.Now.AddDays(-day);
var result = (await base.GetListWithExp(exp)).ToList(); var result = (await base.GetListWithExp(exp)).ToList();
var temp = result.Select(s => new var temp = result.Select(s => new
@ -32,15 +34,13 @@ namespace langguanApi.Service
s.a34004, s.a34004,
date = s.CreateDateTime.AddHours(8).ToString("MM-dd") date = s.CreateDateTime.AddHours(8).ToString("MM-dd")
}).ToList(); }).ToList();
sw.Stop();
Console.WriteLine($"GetIndexData:{sw.ElapsedMilliseconds}ms");
return temp.GroupBy(g => new { g.date }) return temp.GroupBy(g => new { g.date })
.Select(s => new .Select(s => new
{ {
s.Key.date, s.Key.date,
a34001 = s.Sum(t => t.a34001), a34001 = Math.Round(s.Sum(t => t.a34001), 2),
a34002 = s.Sum(t => t.a34002), a34002 = Math.Round(s.Sum(t => t.a34002), 2),
a34004 = s.Sum(t => t.a34004) a34004 = Math.Round(s.Sum(t => t.a34004), 2)
}).ToList(); }).ToList();
@ -54,6 +54,61 @@ namespace langguanApi.Service
// list.Add(new columnView() { hour = s.Key.date, type = "a34004", value = Math.Round(v3, 2) }); // 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>
/// 新加数据 /// 新加数据
/// </summary> /// </summary>

View File

@ -49,7 +49,6 @@ namespace langguanApi.Service
Yesterday = 0.8, Yesterday = 0.8,
LastWeek = 0.6, LastWeek = 0.6,
}; };
Expression<Func<Model.HJ212, bool>> filter = exp => true; Expression<Func<Model.HJ212, bool>> filter = exp => true;
// 首页设备报警数据 // 首页设备报警数据
var alerts = await _alertService.IndexData(); var alerts = await _alertService.IndexData();
@ -69,15 +68,9 @@ namespace langguanApi.Service
yesterday = 0.8, yesterday = 0.8,
lastWeek = 0.6 lastWeek = 0.6
}; };
var day = new var d1 = await _hj212Service.GetTodayData();
{ Func<Task<object>> getTodayFunc = async () => await _hj212Service.GetTodayData();
day = new { voc = "70mg/m3", cemes = "100mg/m3" }, var today = await _cacheManager.GetConvertVale(RedisKeylist.Today, getTodayFunc, 60 * 30);
week = new
{
}
};
return new ApiResult return new ApiResult
{ {
code = 0, code = 0,
@ -92,14 +85,18 @@ namespace langguanApi.Service
}, },
title = _configuration.GetValue<string>("Home:Title"), title = _configuration.GetValue<string>("Home:Title"),
}, },
weather,
devices, devices,
cleanData, weather,
ariQuality, ariQuality,
rate = new { }, rate = new[] {
new { key = "cems", val = 0.7 } ,
new { key = "VOC", val = 0.6 }
},
trend, trend,
// trend = await _hj212Service.GetIndexData(),
alerts, alerts,
cleanData,
today,
getViewTop = "", getViewTop = "",
detections detections
} }