Добавил WellController.GetOrDefaultStatAsync(..) с расширенной статистикой по скважине.

This commit is contained in:
ngfrolov 2023-07-05 14:22:22 +05:00
parent b8c9c37b49
commit 0230432c8c
Signed by: ng.frolov
GPG Key ID: E99907A0357B29A7
3 changed files with 47 additions and 0 deletions

View File

@ -102,5 +102,13 @@ namespace AsbCloudApp.Services
/// <param name="token"></param> /// <param name="token"></param>
/// <returns></returns> /// <returns></returns>
Task<IEnumerable<DepositBranchDto>> GetWellTreeAsync(int idCompany, CancellationToken token); Task<IEnumerable<DepositBranchDto>> GetWellTreeAsync(int idCompany, CancellationToken token);
/// <summary>
/// Статистика по скважине
/// </summary>
/// <param name="idWell"></param>
/// <param name="token"></param>
/// <returns></returns>
Task<WellMapInfoWithTelemetryStat?> GetOrDefaultStatAsync(int idWell, CancellationToken token);
} }
} }

View File

@ -103,6 +103,23 @@ namespace AsbCloudInfrastructure.Services
return depositTree; return depositTree;
} }
public async Task<WellMapInfoWithTelemetryStat?> GetOrDefaultStatAsync(int idWell, CancellationToken token)
{
var dto = wellInfoService.FirstOrDefault(well => well.Id == idWell);
if (dto is not null)
return dto;
var request = new WellRequest{Ids = new[] { idWell }};
var entities = await GetEntitiesAsync(request, token);
var entity = entities.FirstOrDefault();
if (entity is null)
return null;
dto = entity.Adapt<WellMapInfoWithTelemetryStat>();
return dto;
}
public async Task<IEnumerable<WellDto>> GetAsync(WellRequest request, CancellationToken token) public async Task<IEnumerable<WellDto>> GetAsync(WellRequest request, CancellationToken token)
{ {
var wells = await GetEntitiesAsync(request, token); var wells = await GetEntitiesAsync(request, token);

View File

@ -88,6 +88,28 @@ namespace AsbCloudWebApi.Controllers
return Ok(well); return Ok(well);
} }
/// <summary>
/// Возвращает информацию о требуемой скважине
/// </summary>
/// <param name="idWell"> Id требуемой скважины </param>
/// <param name="token"> Токен отмены задачи </param>
/// <returns>Информация о требуемой скважине </returns>
[HttpGet("{idWell}/info")]
[Permission]
[ProducesResponseType(typeof(WellDto), (int)System.Net.HttpStatusCode.OK)]
public async Task<IActionResult> GetStatAsync(int idWell, CancellationToken token)
{
var idCompany = User.GetCompanyId();
if (idCompany is null || !await wellService.IsCompanyInvolvedInWellAsync(idCompany ?? default, idWell, token).ConfigureAwait(false))
return Forbid();
var well = await wellService.GetOrDefaultStatAsync(idWell,
token);
return Ok(well);
}
/// <summary> /// <summary>
/// Редактирует указанные поля скважины /// Редактирует указанные поля скважины
/// </summary> /// </summary>