forked from ddrilling/AsbCloudServer
Merge pull request 'поправлен расчет глубины на концах отрезков по дате' (#79) from fix/trim-subsystem-operation-time-data into dev
Reviewed-on: http://test.digitaldrilling.ru:8080/DDrilling/AsbCloudServer/pulls/79
This commit is contained in:
commit
8f76a911a2
@ -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,35 @@ 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.Select(d => d.Adapt<SubsystemOperationTime>());
|
||||||
|
|
||||||
var items = data.Select((item) =>
|
var items = data.Select((item) =>
|
||||||
{
|
{
|
||||||
|
var operationTime = item.Adapt<SubsystemOperationTime>();
|
||||||
|
if (!(item.DepthStart.HasValue && item.DepthEnd.HasValue))
|
||||||
|
return operationTime;
|
||||||
|
|
||||||
|
var dateDiff = (item.DateEnd - item.DateStart).TotalSeconds;
|
||||||
|
var depthDiff = item.DepthEnd.Value - item.DepthStart.Value;
|
||||||
|
var a = depthDiff / dateDiff;
|
||||||
|
var b = item.DepthStart.Value;
|
||||||
|
|
||||||
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;
|
var x = (gtDate.Value - item.DateStart).TotalSeconds;
|
||||||
|
operationTime.DepthStart = (float)(a * x + b);
|
||||||
}
|
}
|
||||||
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;
|
var x = (ltDate.Value - item.DateStart).TotalSeconds;
|
||||||
|
operationTime.DepthEnd = (float)(a * x + b);
|
||||||
}
|
}
|
||||||
return item;
|
return operationTime;
|
||||||
});
|
});
|
||||||
|
|
||||||
return items;
|
return items;
|
||||||
|
Loading…
Reference in New Issue
Block a user