forked from ddrilling/AsbCloudServer
поправлен расчет глубины на концах отрезков по дате
This commit is contained in:
parent
b7d9ec8183
commit
f8496a5034
@ -76,7 +76,7 @@ namespace AsbCloudInfrastructure.Services.Subsystems
|
||||
{
|
||||
var begin = request.GtDate?.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));
|
||||
@ -109,21 +109,34 @@ namespace AsbCloudInfrastructure.Services.Subsystems
|
||||
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)
|
||||
{
|
||||
var items = data.Select((item) =>
|
||||
if (!ltDate.HasValue && !gtDate.HasValue) return data;
|
||||
|
||||
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)
|
||||
{
|
||||
item.DateStart = gtDate.Value;
|
||||
item.DepthStart = null;
|
||||
operationTime.DateStart = gtDate.Value;
|
||||
operationTime.DepthStart = cutDepth;
|
||||
}
|
||||
if (ltDate.HasValue && item.DateEnd > ltDate.Value)
|
||||
{
|
||||
item.DateEnd = ltDate.Value;
|
||||
item.DepthEnd = null;
|
||||
operationTime.DateEnd = ltDate.Value;
|
||||
operationTime.DepthEnd = cutDepth;
|
||||
|
||||
var test = data;
|
||||
}
|
||||
return item;
|
||||
return operationTime;
|
||||
});
|
||||
|
||||
return items;
|
||||
|
Loading…
Reference in New Issue
Block a user