数据查询方式调整
This commit is contained in:
parent
82906fd1af
commit
f97fe92dac
|
|
@ -2878,6 +2878,13 @@
|
||||||
<param name="exp"></param>
|
<param name="exp"></param>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="M:langguanApi.Service.BaseService`1.GetGroupedResultsAsync(MongoDB.Bson.BsonDocument[])">
|
||||||
|
<summary>
|
||||||
|
聚合查询
|
||||||
|
</summary>
|
||||||
|
<param name="pipeline"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
<member name="M:langguanApi.Service.DetectionService.GetIndexData(System.Int32)">
|
<member name="M:langguanApi.Service.DetectionService.GetIndexData(System.Int32)">
|
||||||
<summary>
|
<summary>
|
||||||
//获取最新的数据
|
//获取最新的数据
|
||||||
|
|
|
||||||
|
|
@ -252,5 +252,14 @@ namespace langguanApi.Service
|
||||||
.Skip(req.pageSize * (req.current - 1)).Take(req.pageSize).ToList();
|
.Skip(req.pageSize * (req.current - 1)).Take(req.pageSize).ToList();
|
||||||
return new Tuple<long, List<T>>(total, items);
|
return new Tuple<long, List<T>>(total, items);
|
||||||
}
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// 聚合查询
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="pipeline"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public async Task<List<BsonDocument>> GetGroupedResultsAsync(BsonDocument[] pipeline)
|
||||||
|
{
|
||||||
|
return await _collection.Aggregate<BsonDocument>(pipeline).ToListAsync();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -25,23 +25,62 @@ namespace langguanApi.Service
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public async Task<object> GetIndexData(int day = 7)
|
public async Task<object> GetIndexData(int day = 7)
|
||||||
{
|
{
|
||||||
Expression<Func<Model.HJ212, bool>> exp = filter => filter.CreateDateTime >= DateTime.Now.AddDays(-day);
|
var now = DateTime.UtcNow; // 获取当前时间(UTC)
|
||||||
var result = (await base.GetListWithExp(exp)).ToList();
|
var sevenDaysAgo = now.AddDays(-2); // 计算 7 天前的时间
|
||||||
var temp = result.Select(s => new
|
var pipeline = new[]
|
||||||
{
|
{
|
||||||
s.a34001,
|
new BsonDocument("$match", new BsonDocument
|
||||||
s.a34002,
|
|
||||||
s.a34004,
|
|
||||||
date = s.CreateDateTime.AddHours(8).ToString("MM-dd")
|
|
||||||
}).ToList();
|
|
||||||
return temp.GroupBy(g => new { g.date })
|
|
||||||
.Select(s => new
|
|
||||||
{
|
{
|
||||||
s.Key.date,
|
{ "CreateDateTime", new BsonDocument { { "$gte", sevenDaysAgo }, { "$lt", now } } }
|
||||||
a34001 = Math.Round(s.Sum(t => t.a34001), 2),
|
}),
|
||||||
a34002 = Math.Round(s.Sum(t => t.a34002), 2),
|
new BsonDocument("$project", new BsonDocument
|
||||||
a34004 = Math.Round(s.Sum(t => t.a34004), 2)
|
{
|
||||||
}).ToList();
|
{ "date", new BsonDocument("$dateToString", new BsonDocument { { "format", "%m-%d" }, { "date", "$CreateDateTime" } }) },
|
||||||
|
{ "a34001", 1 },
|
||||||
|
{ "a34002", 1 },
|
||||||
|
{ "a34004", 1 }
|
||||||
|
}),
|
||||||
|
new BsonDocument("$group", new BsonDocument
|
||||||
|
{
|
||||||
|
{ "_id", "$date" },
|
||||||
|
{ "a34001", new BsonDocument("$sum", "$a34001") },
|
||||||
|
{ "a34002", new BsonDocument("$sum", "$a34002") },
|
||||||
|
{ "a34004", new BsonDocument("$sum", "$a34004") }
|
||||||
|
}),
|
||||||
|
new BsonDocument("$sort", new BsonDocument { { "_id", 1 } }) // 按日期排序
|
||||||
|
};
|
||||||
|
|
||||||
|
var temp = await base.GetGroupedResultsAsync(pipeline);
|
||||||
|
List<object> result = new List<object>();
|
||||||
|
foreach (var item in temp)
|
||||||
|
{
|
||||||
|
result.Add(new
|
||||||
|
{
|
||||||
|
date = item["_id"].ToString(),
|
||||||
|
a34001 = Math.Round(item["a34001"].ToDouble(), 2),
|
||||||
|
a34002 = Math.Round(item["a34002"].ToDouble(), 2),
|
||||||
|
a34004 = Math.Round(item["a34004"].ToDouble(), 2)
|
||||||
|
});
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
//var temp = result.Select(s => new
|
||||||
|
//{
|
||||||
|
// s.a34001,
|
||||||
|
// s.a34002,
|
||||||
|
// s.a34004,
|
||||||
|
// date = s.CreateDateTime.AddHours(8).ToString("MM-dd")
|
||||||
|
//}).ToList();
|
||||||
|
//return temp.GroupBy(g => new
|
||||||
|
//{
|
||||||
|
// g.date
|
||||||
|
//})
|
||||||
|
// .Select(s => new
|
||||||
|
// {
|
||||||
|
// s.Key.date,
|
||||||
|
// 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();
|
||||||
|
|
||||||
|
|
||||||
//temp.GroupBy(g => new { g.date }).ToList().ForEach(s =>
|
//temp.GroupBy(g => new { g.date }).ToList().ForEach(s =>
|
||||||
|
|
@ -72,7 +111,7 @@ namespace langguanApi.Service
|
||||||
Builders<Model.HJ212>.Filter.Eq(x => x.ST, 27),
|
Builders<Model.HJ212>.Filter.Eq(x => x.ST, 27),
|
||||||
Builders<Model.HJ212>.Filter.Eq(x => x.CN, 2031)
|
Builders<Model.HJ212>.Filter.Eq(x => x.CN, 2031)
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
var finalFilter = Builders<Model.HJ212>.Filter.And(dateFilter, conditionFilter);
|
var finalFilter = Builders<Model.HJ212>.Filter.And(dateFilter, conditionFilter);
|
||||||
var result = await base.FindListyFilter(finalFilter);
|
var result = await base.FindListyFilter(finalFilter);
|
||||||
// 过滤掉voc设备
|
// 过滤掉voc设备
|
||||||
|
|
@ -110,7 +149,7 @@ namespace langguanApi.Service
|
||||||
Builders<Model.HJ212>.Filter.Eq(x => x.ST, 27),
|
Builders<Model.HJ212>.Filter.Eq(x => x.ST, 27),
|
||||||
Builders<Model.HJ212>.Filter.Eq(x => x.CN, 2031)
|
Builders<Model.HJ212>.Filter.Eq(x => x.CN, 2031)
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
// 组合过滤器(先按时间,再按其他条件)
|
// 组合过滤器(先按时间,再按其他条件)
|
||||||
var finalFilter = Builders<Model.HJ212>.Filter.And(dateFilter, conditionFilter);
|
var finalFilter = Builders<Model.HJ212>.Filter.And(dateFilter, conditionFilter);
|
||||||
var result = await base.FindListyFilter(finalFilter);
|
var result = await base.FindListyFilter(finalFilter);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue