forked from ddrilling/AsbCloudServer
Разюиение АПД на АПД в роторе и АПД в слайде
This commit is contained in:
parent
e28ec2cd0a
commit
e66f716e62
@ -64,5 +64,13 @@ namespace AsbCloudApp.Services.Subsystems
|
||||
/// <param name="token"></param>
|
||||
/// <returns></returns>
|
||||
Task<IEnumerable<SubsystemActiveWellStatDto>> GetStatByActiveWells(IEnumerable<int> wellIds, CancellationToken token);
|
||||
|
||||
/// <summary>
|
||||
/// Получение периода, за который будет расчитываться статистика
|
||||
/// </summary>
|
||||
/// <param name="request"></param>
|
||||
/// <param name="token"></param>
|
||||
/// <returns></returns>
|
||||
Task<IEnumerable<DateTime>> GetStatDateRangeAsync(SubsystemOperationTimeRequest request, CancellationToken token);
|
||||
}
|
||||
}
|
||||
|
@ -109,6 +109,20 @@ namespace AsbCloudInfrastructure.Services.Subsystems
|
||||
return statList;
|
||||
}
|
||||
|
||||
public async Task<IEnumerable<DateTime>> GetStatDateRangeAsync(SubsystemOperationTimeRequest request, CancellationToken token)
|
||||
{
|
||||
request.SelectMode = SubsystemOperationTimeRequest.SelectModeTrim;
|
||||
var data = await GetOperationTimeAsync(request, token);
|
||||
if (data is null)
|
||||
return Enumerable.Empty<DateTime>();
|
||||
|
||||
var dateRanges = new List<DateTime>();
|
||||
dateRanges.Add(data.Min(d => d.DateStart));
|
||||
dateRanges.Add(data.Max(d => d.DateEnd));
|
||||
|
||||
return dateRanges.AsEnumerable();
|
||||
}
|
||||
|
||||
private static IEnumerable<SubsystemOperationTime> TrimOperation(IEnumerable<SubsystemOperationTime> data, DateTimeOffset? gtDate, DateTimeOffset? ltDate)
|
||||
{
|
||||
if (!ltDate.HasValue && !gtDate.HasValue)
|
||||
@ -162,7 +176,7 @@ namespace AsbCloudInfrastructure.Services.Subsystems
|
||||
UsedTimeHours = periodGroup,
|
||||
KUsage = periodGroupDepth / depthIntervalSubsystem,
|
||||
SumDepthInterval = periodGroupDepth,
|
||||
OperationCount = g.Count()
|
||||
OperationCount = g.Count(),
|
||||
};
|
||||
if (subsystemStat.KUsage > 1)
|
||||
subsystemStat.KUsage = 1;
|
||||
|
@ -53,6 +53,22 @@ namespace AsbCloudWebApi.Controllers.Subsystems
|
||||
return Ok(subsystemResult);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// получить период, за который будет расчитываться статистика
|
||||
/// </summary>
|
||||
[HttpGet("dateRange")]
|
||||
[ProducesResponseType(typeof(IEnumerable<DateTime>), (int)System.Net.HttpStatusCode.OK)]
|
||||
public async Task<IActionResult> GetStatDateRangeAsync([FromQuery] SubsystemOperationTimeRequest request, CancellationToken token)
|
||||
{
|
||||
if (!await UserHasAccesToWellAsync(request.IdWell, token))
|
||||
return Forbid();
|
||||
if (!await IsValidRequest(request, token))
|
||||
return BadRequest("Запрашиваемый диапазон должен заканчиваться за 2 часа до текущего времени(после приведения к UTC).");
|
||||
|
||||
var dateRange = await subsystemOperationTimeService.GetStatDateRangeAsync(request, token);
|
||||
return Ok(dateRange);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// получить статистику по активным скважинам
|
||||
/// </summary>
|
||||
|
Loading…
Reference in New Issue
Block a user