forked from ddrilling/AsbCloudServer
Рефактор
This commit is contained in:
parent
7514e3132a
commit
c137358e79
@ -112,39 +112,6 @@ namespace AsbCloudInfrastructure.Repository
|
||||
CancellationToken token)
|
||||
where TEntity : WitsItemBase<TValue>
|
||||
where TValue : notnull
|
||||
{
|
||||
var query = BuildQuery<TEntity, TValue>(request, token);
|
||||
|
||||
var fullDataCount = await query.CountAsync(token);
|
||||
if (fullDataCount == 0)
|
||||
return Enumerable.Empty<ItemRecord>();
|
||||
|
||||
if (request.ApproxPointsCount is not null && fullDataCount > 1.75 * request.ApproxPointsCount)
|
||||
{
|
||||
var m = (int)Math.Round(1d * fullDataCount / request.ApproxPointsCount!.Value);
|
||||
if (m > 1)
|
||||
query = query.Where((d) => (((d.DateTime.DayOfYear * 24 + d.DateTime.Hour) * 60 + d.DateTime.Minute) * 60 + d.DateTime.Second) % m == 0);
|
||||
}
|
||||
|
||||
var entities = await query
|
||||
.AsNoTracking()
|
||||
.ToListAsync(token)
|
||||
.ConfigureAwait(false);
|
||||
|
||||
var items = entities.Select(e => new ItemRecord
|
||||
{
|
||||
IdRecord = e.IdRecord,
|
||||
IdTelemetry = e.IdTelemetry,
|
||||
Date = e.DateTime.ToRemoteDateTime(request.TimezoneHours),
|
||||
IdItem = e.IdItem,
|
||||
Item = new JsonValue(e.Value)
|
||||
});
|
||||
return items;
|
||||
}
|
||||
|
||||
private IQueryable<TEntity> BuildQuery<TEntity, TValue>(WitsRequest request, CancellationToken token)
|
||||
where TEntity : WitsItemBase<TValue>
|
||||
where TValue : notnull
|
||||
{
|
||||
var query = db.Set<TEntity>().Where(i => i.IdTelemetry == request.IdTelemetry);
|
||||
|
||||
@ -160,9 +127,33 @@ namespace AsbCloudInfrastructure.Repository
|
||||
query = query
|
||||
.Where(d => d.DateTime <= request.DateEnd);
|
||||
|
||||
return query.OrderBy(d => d.DateTime);
|
||||
}
|
||||
var fullDataCount = await query.CountAsync(token);
|
||||
if (fullDataCount == 0)
|
||||
return Enumerable.Empty<ItemRecord>();
|
||||
|
||||
if (request.ApproxPointsCount is not null && fullDataCount > 1.75 * request.ApproxPointsCount)
|
||||
{
|
||||
var m = (int)Math.Round(1d * fullDataCount / request.ApproxPointsCount!.Value);
|
||||
if (m > 1)
|
||||
query = query.Where((d) => (((d.DateTime.DayOfYear * 24 + d.DateTime.Hour) * 60 + d.DateTime.Minute) * 60 + d.DateTime.Second) % m == 0);
|
||||
}
|
||||
|
||||
var entities = await query
|
||||
.OrderBy(d => d.DateTime)
|
||||
.AsNoTracking()
|
||||
.ToListAsync(token)
|
||||
.ConfigureAwait(false);
|
||||
|
||||
var items = entities.Select(e => new ItemRecord
|
||||
{
|
||||
IdRecord = e.IdRecord,
|
||||
IdTelemetry = e.IdTelemetry,
|
||||
Date = e.DateTime.ToRemoteDateTime(request.TimezoneHours),
|
||||
IdItem = e.IdItem,
|
||||
Item = new JsonValue(e.Value)
|
||||
});
|
||||
return items;
|
||||
}
|
||||
|
||||
public async Task SaveDataAsync(int idTelemetry, WitsRecordDto dto, CancellationToken token)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user