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
|
public class SubsystemOperationTimeRequest: RequestBase
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// идентификатор скважины, может не указыватся пользователем
|
/// идентификатор скважины
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Required]
|
[Required]
|
||||||
public int IdWell { get; set; }
|
public int IdWell { get; set; }
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
using AsbCloudApp.Data.Subsystems;
|
using AsbCloudApp.Data;
|
||||||
|
using AsbCloudApp.Data.Subsystems;
|
||||||
using AsbCloudApp.Requests;
|
using AsbCloudApp.Requests;
|
||||||
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
@ -36,7 +38,15 @@ namespace AsbCloudApp.Services.Subsystems
|
|||||||
/// <param name="request"></param>
|
/// <param name="request"></param>
|
||||||
/// <param name="token"></param>
|
/// <param name="token"></param>
|
||||||
/// <returns></returns>
|
/// <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
|
#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)
|
private IQueryable<SubsystemOperationTime>? BuildQuery(SubsystemOperationTimeRequest request)
|
||||||
{
|
{
|
||||||
var well = wellService.GetOrDefault(request.IdWell);
|
var well = wellService.GetOrDefault(request.IdWell);
|
||||||
@ -249,6 +268,8 @@ namespace AsbCloudInfrastructure.Services.Subsystems
|
|||||||
dto.DateEnd = operationTime.DateEnd.ToRemoteDateTime(well.Timezone.Hours);
|
dto.DateEnd = operationTime.DateEnd.ToRemoteDateTime(well.Timezone.Hours);
|
||||||
return dto;
|
return dto;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
#nullable disable
|
#nullable disable
|
||||||
}
|
}
|
||||||
|
@ -10,6 +10,7 @@ using System.Threading;
|
|||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using AsbCloudInfrastructure;
|
using AsbCloudInfrastructure;
|
||||||
using System;
|
using System;
|
||||||
|
using AsbCloudApp.Data;
|
||||||
|
|
||||||
namespace AsbCloudWebApi.Controllers.Subsystems
|
namespace AsbCloudWebApi.Controllers.Subsystems
|
||||||
{
|
{
|
||||||
@ -59,6 +60,19 @@ namespace AsbCloudWebApi.Controllers.Subsystems
|
|||||||
return Ok(result);
|
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>
|
||||||
/// получить список наработок подсистем
|
/// получить список наработок подсистем
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
Loading…
Reference in New Issue
Block a user