forked from ddrilling/AsbCloudServer
Merge branch 'RangeDataOperationTime' into dev
This commit is contained in:
commit
0bab711eb8
@ -14,7 +14,7 @@ namespace AsbCloudApp.Requests
|
||||
public class SubsystemOperationTimeRequest: RequestBase
|
||||
{
|
||||
/// <summary>
|
||||
/// идентификатор скважины, может не указыватся пользователем
|
||||
/// идентификатор скважины
|
||||
/// </summary>
|
||||
[Required]
|
||||
public int IdWell { get; set; }
|
||||
|
@ -1,5 +1,7 @@
|
||||
using AsbCloudApp.Data.Subsystems;
|
||||
using AsbCloudApp.Data;
|
||||
using AsbCloudApp.Data.Subsystems;
|
||||
using AsbCloudApp.Requests;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
@ -36,7 +38,15 @@ namespace AsbCloudApp.Services.Subsystems
|
||||
/// <param name="request"></param>
|
||||
/// <param name="token"></param>
|
||||
/// <returns></returns>
|
||||
Task<IEnumerable<SubsystemOperationTimeDto>?> GetOperationTimeAsync(SubsystemOperationTimeRequest request, CancellationToken token);
|
||||
Task<IEnumerable<SubsystemOperationTimeDto>?> GetOperationTimeAsync(SubsystemOperationTimeRequest request, CancellationToken token);
|
||||
|
||||
/// <summary>
|
||||
/// Временной диапазон за который есть статистика работы подсистем
|
||||
/// </summary>
|
||||
/// <param name="request"></param>
|
||||
/// <param name="token"></param>
|
||||
/// <returns></returns>
|
||||
Task<DatesRangeDto?> GetDateRangeOperationTimeAsync(SubsystemOperationTimeRequest request, CancellationToken token);
|
||||
}
|
||||
#nullable disable
|
||||
}
|
||||
|
@ -185,6 +185,25 @@ namespace AsbCloudInfrastructure.Services.Subsystems
|
||||
|
||||
}
|
||||
|
||||
/// <inheritdoc/>
|
||||
public async Task<DatesRangeDto?> GetDateRangeOperationTimeAsync(SubsystemOperationTimeRequest request, CancellationToken token)
|
||||
{
|
||||
var query = BuildQuery(request);
|
||||
if (query is null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
var result = await query
|
||||
.GroupBy(o => o.IdTelemetry)
|
||||
.Select(g => new DatesRangeDto
|
||||
{
|
||||
From = g.Min(o => o.DateStart).DateTime,
|
||||
To = g.Max(o => o.DateEnd).DateTime
|
||||
})
|
||||
.FirstOrDefaultAsync(token);
|
||||
return result;
|
||||
}
|
||||
|
||||
private IQueryable<SubsystemOperationTime>? BuildQuery(SubsystemOperationTimeRequest request)
|
||||
{
|
||||
var well = wellService.GetOrDefault(request.IdWell);
|
||||
@ -249,6 +268,8 @@ namespace AsbCloudInfrastructure.Services.Subsystems
|
||||
dto.DateEnd = operationTime.DateEnd.ToRemoteDateTime(well.Timezone.Hours);
|
||||
return dto;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
#nullable disable
|
||||
}
|
||||
|
@ -10,6 +10,7 @@ using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using AsbCloudInfrastructure;
|
||||
using System;
|
||||
using AsbCloudApp.Data;
|
||||
|
||||
namespace AsbCloudWebApi.Controllers.Subsystems
|
||||
{
|
||||
@ -59,6 +60,19 @@ namespace AsbCloudWebApi.Controllers.Subsystems
|
||||
return Ok(result);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// получить доступный диапазон дат наработки подсистемы.
|
||||
/// </summary>
|
||||
[HttpGet("datesRange")]
|
||||
[ProducesResponseType(typeof(DatesRangeDto), (int)System.Net.HttpStatusCode.OK)]
|
||||
public async Task<IActionResult> GetDateRangeOperationTimeAsync([FromQuery] SubsystemOperationTimeRequest request, CancellationToken token = default)
|
||||
{
|
||||
if (!await UserHasAccesToWellAsync(request.IdWell, token))
|
||||
return Forbid();
|
||||
var result = await subsystemOperationTimeService.GetDateRangeOperationTimeAsync(request, token);
|
||||
return Ok(result);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// получить список наработок подсистем
|
||||
/// </summary>
|
||||
|
Loading…
Reference in New Issue
Block a user