forked from ddrilling/AsbCloudServer
Правки по результатам тестирования
This commit is contained in:
parent
e39ac38129
commit
cbec0b2cc5
@ -40,13 +40,15 @@ namespace AsbCloudInfrastructure.Background.PeriodicWorks
|
|||||||
if (!idTelemetries.Any())
|
if (!idTelemetries.Any())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
var stats = await db.Set<DataSaubStat>()
|
var statsQuery = await db.Set<DataSaubStat>()
|
||||||
.Where(s => idTelemetries.Contains(s.IdTelemetry))
|
.Where(s => idTelemetries.Contains(s.IdTelemetry))
|
||||||
|
.ToArrayAsync(token);
|
||||||
|
|
||||||
|
var stats = statsQuery
|
||||||
.GroupBy(s => s.IdTelemetry)
|
.GroupBy(s => s.IdTelemetry)
|
||||||
.ToDictionaryAsync(
|
.ToDictionary(
|
||||||
g => g.Key,
|
g => g.Key,
|
||||||
g => g.OrderByDescending(s => s.DateEnd).First(),
|
g => g.OrderByDescending(s => s.DateEnd).First()
|
||||||
token
|
|
||||||
);
|
);
|
||||||
|
|
||||||
foreach ( var idTelemetry in idTelemetries)
|
foreach ( var idTelemetry in idTelemetries)
|
||||||
@ -92,6 +94,7 @@ namespace AsbCloudInfrastructure.Background.PeriodicWorks
|
|||||||
{
|
{
|
||||||
var indexStart = 0;
|
var indexStart = 0;
|
||||||
var indexEnd = 0;
|
var indexEnd = 0;
|
||||||
|
var result = new List<DataSaubStat>();
|
||||||
foreach (var operation in detectedOperations)
|
foreach (var operation in detectedOperations)
|
||||||
{
|
{
|
||||||
indexStart = Array.FindIndex(telemetryDataSaub, indexEnd, t => t.DateTime >= operation.DateStart);
|
indexStart = Array.FindIndex(telemetryDataSaub, indexEnd, t => t.DateTime >= operation.DateStart);
|
||||||
@ -103,14 +106,21 @@ namespace AsbCloudInfrastructure.Background.PeriodicWorks
|
|||||||
|
|
||||||
var subset = telemetryDataSaub.AsSpan(indexStart, length + 1);
|
var subset = telemetryDataSaub.AsSpan(indexStart, length + 1);
|
||||||
var stats = CalcStats(operation, subset);
|
var stats = CalcStats(operation, subset);
|
||||||
foreach (var stat in stats)
|
result.AddRange(stats);
|
||||||
yield return stat;
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
indexStart = 0;
|
||||||
|
indexEnd = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static IEnumerable<DataSaubStat> CalcStats(DetectedOperation operation, Span<TelemetryDataSaub> telemetryDataSaub)
|
private static IEnumerable<DataSaubStat> CalcStats(DetectedOperation operation, Span<TelemetryDataSaub> telemetryDataSaub)
|
||||||
{
|
{
|
||||||
|
var result = new List<DataSaubStat>();
|
||||||
|
|
||||||
var indexStart = 0;
|
var indexStart = 0;
|
||||||
for (var i = 1; i < telemetryDataSaub.Length; i++)
|
for (var i = 1; i < telemetryDataSaub.Length; i++)
|
||||||
{
|
{
|
||||||
@ -123,9 +133,11 @@ namespace AsbCloudInfrastructure.Background.PeriodicWorks
|
|||||||
var span = telemetryDataSaub.Slice(indexStart, length);
|
var span = telemetryDataSaub.Slice(indexStart, length);
|
||||||
indexStart = i;
|
indexStart = i;
|
||||||
var stat = CalcStat(operation, span);
|
var stat = CalcStat(operation, span);
|
||||||
yield return stat;
|
result.Add(stat);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static DataSaubStat CalcStat(DetectedOperation operation, Span<TelemetryDataSaub> span)
|
private static DataSaubStat CalcStat(DetectedOperation operation, Span<TelemetryDataSaub> span)
|
||||||
|
Loading…
Reference in New Issue
Block a user