1. Разделение методов получения фактических и плановых операций (GetPageOperationsPlanAsync и GetPageOperationsFactAsync)

2. Фикс получения категории операции в BuildQuery
This commit is contained in:
Olga Nemt 2023-02-21 17:16:45 +05:00
parent c15c0e5522
commit c7c5de563a
2 changed files with 34 additions and 5 deletions

View File

@ -356,7 +356,7 @@ namespace AsbCloudInfrastructure.Repository
IdWellSectionType = o.IdWellSectionType, IdWellSectionType = o.IdWellSectionType,
IdCategory = o.IdCategory, IdCategory = o.IdCategory,
CategoryName = o.WellSectionType.Caption, CategoryName = o.OperationCategory.Name,
WellSectionTypeName = o.WellSectionType.Caption, WellSectionTypeName = o.WellSectionType.Caption,
DateStart = DateTime.SpecifyKind(o.DateStart.UtcDateTime + timeZoneOffset, DateTimeKind.Unspecified), DateStart = DateTime.SpecifyKind(o.DateStart.UtcDateTime + timeZoneOffset, DateTimeKind.Unspecified),
@ -375,8 +375,7 @@ namespace AsbCloudInfrastructure.Repository
.Where(subOp => subOp.IdType == o.IdType) .Where(subOp => subOp.IdType == o.IdType)
.Where(subOp => subOp.DateStart <= o.DateStart) .Where(subOp => subOp.DateStart <= o.DateStart)
.Min(subOp => subOp.DateStart)) .Min(subOp => subOp.DateStart))
.TotalDays, .TotalDays
}); });
if (request.SortFields?.Any() == true) if (request.SortFields?.Any() == true)

View File

@ -86,16 +86,18 @@ namespace AsbCloudWebApi.Controllers
} }
/// <summary> /// <summary>
/// Отфильтрованный список операций на скважине. Если не применять фильтр, то вернется весь список. Сортированный по глубине затем по дате /// Отфильтрованный список фактических операций на скважине.
/// Если не применять фильтр, то вернется весь список. Сортированный по глубине затем по дате
/// </summary> /// </summary>
/// <param name="idWell">id скважины</param> /// <param name="idWell">id скважины</param>
/// <param name="request"></param> /// <param name="request"></param>
/// <param name="token"></param> /// <param name="token"></param>
/// <returns>Список операций на скважине</returns> /// <returns>Список операций на скважине</returns>
[HttpGet] [HttpGet]
[Route("fact")]
[Permission] [Permission]
[ProducesResponseType(typeof(IEnumerable<WellOperationDto>), (int)System.Net.HttpStatusCode.OK)] [ProducesResponseType(typeof(IEnumerable<WellOperationDto>), (int)System.Net.HttpStatusCode.OK)]
public async Task<IActionResult> GetOperationsAsync( public async Task<IActionResult> GetPageOperationsFactAsync(
[FromRoute] int idWell, [FromRoute] int idWell,
[FromQuery] WellOperationRequestBase request, [FromQuery] WellOperationRequestBase request,
CancellationToken token) CancellationToken token)
@ -111,6 +113,34 @@ namespace AsbCloudWebApi.Controllers
return Ok(result); return Ok(result);
} }
/// <summary>
/// Отфильтрованный список плановых операций на скважине.
/// Если не применять фильтр, то вернется весь список. Сортированный по глубине затем по дате
/// </summary>
/// <param name="idWell">id скважины</param>
/// <param name="request"></param>
/// <param name="token"></param>
/// <returns>Список операций на скважине в контейнере для постраничного просмотра</returns>
[HttpGet]
[Route("plan")]
[Permission]
[ProducesResponseType(typeof(PaginationContainer<WellOperationDto>), (int)System.Net.HttpStatusCode.OK)]
public async Task<IActionResult> GetPageOperationsPlanAsync(
[FromRoute] int idWell,
[FromQuery] WellOperationRequestBase request,
CancellationToken token)
{
if (!await CanUserAccessToWellAsync(idWell, token).ConfigureAwait(false))
return Forbid();
var requestToService = new WellOperationRequest(request, idWell);
var result = await operationRepository.GetPageAsync(
requestToService,
token)
.ConfigureAwait(false);
return Ok(result);
}
/// <summary> /// <summary>
/// Статистика операций по скважине, группированая по категориям /// Статистика операций по скважине, группированая по категориям
/// </summary> /// </summary>