forked from ddrilling/AsbCloudServer
Добавлен OrderBy при сортировке телеметрии + расчет indexStart и indexEnd в методе CreateDataSaubStat
This commit is contained in:
parent
b9bbb06584
commit
ba56bfe274
@ -52,8 +52,8 @@ namespace AsbCloudInfrastructure.Background.PeriodicWorks
|
|||||||
|
|
||||||
foreach ( var idTelemetry in idTelemetries)
|
foreach ( var idTelemetry in idTelemetries)
|
||||||
{
|
{
|
||||||
var lastDate = stats.FirstOrDefault(s=>s.IdTelemetry == idTelemetry)?.DateEnd ?? DateTimeOffset.UnixEpoch;
|
var lastDate = stats.FirstOrDefault(s => s.IdTelemetry == idTelemetry)?.DateEnd ?? DateTimeOffset.UnixEpoch;
|
||||||
await CreateStatForTelemetryFromDate(db, idTelemetry, lastDate, token);
|
await CreateStatForTelemetryFromDate(db, idTelemetry, lastDate, token);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -78,6 +78,7 @@ namespace AsbCloudInfrastructure.Background.PeriodicWorks
|
|||||||
.Where(t => t.DateTime >= minDate)
|
.Where(t => t.DateTime >= minDate)
|
||||||
.Where(t => t.DateTime <= maxDate)
|
.Where(t => t.DateTime <= maxDate)
|
||||||
.Where(t => Math.Abs(t.BitDepth - t.WellDepth) < 0.0001)
|
.Where(t => Math.Abs(t.BitDepth - t.WellDepth) < 0.0001)
|
||||||
|
.OrderBy(t => t.DateTime)
|
||||||
.ToArrayAsync(token);
|
.ToArrayAsync(token);
|
||||||
|
|
||||||
if (!telemetryDataSaub.Any())
|
if (!telemetryDataSaub.Any())
|
||||||
@ -94,24 +95,29 @@ namespace AsbCloudInfrastructure.Background.PeriodicWorks
|
|||||||
var indexStart = 0;
|
var indexStart = 0;
|
||||||
var indexEnd = 0;
|
var indexEnd = 0;
|
||||||
var result = new List<DataSaubStat>();
|
var result = new List<DataSaubStat>();
|
||||||
|
|
||||||
|
if (!telemetryDataSaub.Any())
|
||||||
|
return result;
|
||||||
|
|
||||||
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);
|
||||||
indexEnd = Array.FindIndex(telemetryDataSaub, indexStart, t => t.DateTime > operation.DateEnd) - 1;
|
if (indexStart < 0)
|
||||||
|
break;
|
||||||
|
|
||||||
if (indexStart >= 0 && indexEnd >= indexStart)
|
indexEnd = Array.FindIndex(telemetryDataSaub, indexStart, t => t.DateTime > operation.DateEnd);
|
||||||
{
|
|
||||||
var length = indexEnd - indexStart;
|
|
||||||
|
|
||||||
var subset = telemetryDataSaub.AsSpan(indexStart, length + 1);
|
if (indexEnd < 0)
|
||||||
var stats = CalcStats(operation, subset);
|
indexEnd = telemetryDataSaub.Length - 1;
|
||||||
result.AddRange(stats);
|
|
||||||
}
|
if (indexEnd == indexStart)
|
||||||
else
|
continue;
|
||||||
{
|
|
||||||
indexStart = 0;
|
var length = indexEnd - indexStart;
|
||||||
indexEnd = 0;
|
|
||||||
}
|
var subset = telemetryDataSaub.AsSpan(indexStart, length);
|
||||||
|
var stats = CalcStats(operation, subset);
|
||||||
|
result.AddRange(stats);
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user