поправлен расчет глубины на концах отрезков по дате

This commit is contained in:
Olga Nemt 2023-07-17 15:50:14 +05:00
parent b7d9ec8183
commit f8496a5034

View File

@ -76,7 +76,7 @@ namespace AsbCloudInfrastructure.Services.Subsystems
{ {
var begin = request.GtDate?.ToUtcDateTimeOffset(well.Timezone.Hours); var begin = request.GtDate?.ToUtcDateTimeOffset(well.Timezone.Hours);
var end = request.LtDate?.ToUtcDateTimeOffset(well.Timezone.Hours); var end = request.LtDate?.ToUtcDateTimeOffset(well.Timezone.Hours);
data = Trim(data, begin, end); data = TrimOperation(data, begin, end);
} }
var dtos = data.Select(o => Convert(o, well.Timezone.Hours)); var dtos = data.Select(o => Convert(o, well.Timezone.Hours));
@ -109,21 +109,34 @@ namespace AsbCloudInfrastructure.Services.Subsystems
return statList; return statList;
} }
private static IEnumerable<SubsystemOperationTime> Trim(IEnumerable<SubsystemOperationTime> data, DateTimeOffset? gtDate, DateTimeOffset? ltDate) private static IEnumerable<SubsystemOperationTime> TrimOperation(IEnumerable<SubsystemOperationTime> data, DateTimeOffset? gtDate, DateTimeOffset? ltDate)
{ {
if (!ltDate.HasValue && !gtDate.HasValue) return data;
var items = data.Select((item) => var items = data.Select((item) =>
{ {
var dateDiff = (ltDate!.Value - gtDate!.Value).TotalSeconds;
var depthDiff = (item.DepthEnd ?? 0) - (item.DepthStart ?? 0);
var a = depthDiff / (float)dateDiff;
var x = (float)(item.DateStart - gtDate.Value).TotalSeconds;
var b = item.DepthStart;
var cutDepth = a * x + b;
var operationTime = item.Adapt<SubsystemOperationTime>();
if (gtDate.HasValue && item.DateStart < gtDate.Value) if (gtDate.HasValue && item.DateStart < gtDate.Value)
{ {
item.DateStart = gtDate.Value; operationTime.DateStart = gtDate.Value;
item.DepthStart = null; operationTime.DepthStart = cutDepth;
} }
if (ltDate.HasValue && item.DateEnd > ltDate.Value) if (ltDate.HasValue && item.DateEnd > ltDate.Value)
{ {
item.DateEnd = ltDate.Value; operationTime.DateEnd = ltDate.Value;
item.DepthEnd = null; operationTime.DepthEnd = cutDepth;
var test = data;
} }
return item; return operationTime;
}); });
return items; return items;