исправление класса интерполяции

This commit is contained in:
eugeniy_ivanov 2022-10-11 14:28:34 +05:00
parent b487f01fae
commit 37e29e003c
2 changed files with 9 additions and 8 deletions

View File

@ -8,7 +8,7 @@ namespace AsbCloudInfrastructure.Services.Subsystems.Utils
internal class Interpolation internal class Interpolation
{ {
private IEnumerator<(DateTimeOffset dateMin, float? depthMin, DateTimeOffset dateMax, float? depthMax)> enumerator; private IEnumerator<(DateTimeOffset dateMin, float? depthMin, DateTimeOffset dateMax, float? depthMax)> enumerator;
(DateTimeOffset dateMin, float? depthMin, DateTimeOffset dateMax, float? depthMax) lastValue = default; (DateTimeOffset x, float? y) lastValue = default;
public Interpolation(IOrderedEnumerable<(DateTimeOffset dateMin, float? depthMin, DateTimeOffset dateMax, float? depthMax)> collection) public Interpolation(IOrderedEnumerable<(DateTimeOffset dateMin, float? depthMin, DateTimeOffset dateMax, float? depthMax)> collection)
{ {
@ -18,17 +18,18 @@ namespace AsbCloudInfrastructure.Services.Subsystems.Utils
public float GetDepth(DateTimeOffset date) public float GetDepth(DateTimeOffset date)
{ {
if (lastValue.depthMin is not null &&
lastValue.depthMax is not null)
{ {
while (date > enumerator.Current.dateMax) while (date >= enumerator.Current.dateMax)
{ {
if (isLess(date)) if (isLess(date))
CalcValue(enumerator.Current, date.Second); {
lastValue.x = date;
lastValue.y = CalcValue(enumerator.Current, date.Second);
}
enumerator.MoveNext(); enumerator.MoveNext();
} }
} }
return (float)lastValue.depthMin; return (float)lastValue.y;
} }
private bool isLess(DateTimeOffset date) private bool isLess(DateTimeOffset date)

View File

@ -265,7 +265,7 @@ namespace AsbCloudInfrastructure.Services.Subsystems
" max(well_depth) as max_well_depth " + " max(well_depth) as max_well_depth " +
"from " + "from " +
" t_telemetry_data_saub " + " t_telemetry_data_saub " +
"where id_telemetry = @idTelemetry and \"date\" > @begin " + "where id_telemetry = @idTelemetry and \"date\" >= @begin " +
"group by ceil(well_depth * 10) " + "group by ceil(well_depth * 10) " +
"order by min_date; "; "order by min_date; ";