Разюиение АПД на АПД в роторе и АПД в слайде

This commit is contained in:
Olga Nemt 2023-08-28 09:43:32 +05:00
parent e28ec2cd0a
commit e66f716e62
3 changed files with 39 additions and 1 deletions

View File

@ -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);
}
}

View File

@ -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;

View File

@ -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>