CS2-96: Added DrillParams methods to get composite well drill params

This commit is contained in:
KharchenkoVladimir 2021-10-13 12:27:40 +05:00
parent 50c3cca8b8
commit 70ee22bccf
3 changed files with 115 additions and 4 deletions

View File

@ -12,5 +12,17 @@ namespace AsbCloudApp.Services
Task<IEnumerable<DrillParamsDto>> GetAllAsync(int idWell, Task<IEnumerable<DrillParamsDto>> GetAllAsync(int idWell,
CancellationToken token = default); CancellationToken token = default);
Task<IEnumerable<DrillParamsDto>> GetCompositeAllAsync(int idWell,
CancellationToken token = default);
Task<int> InsertAsync(int idWell, DrillParamsDto dto,
CancellationToken token = default);
Task<int> InsertRangeAsync(int idWell, IEnumerable<DrillParamsDto> dtos,
CancellationToken token = default);
new Task<int> UpdateAsync(int idWell, DrillParamsDto dto,
CancellationToken token = default);
} }
} }

View File

@ -39,6 +39,7 @@ namespace AsbCloudInfrastructure.Services
}) })
.AsNoTracking() .AsNoTracking()
.DefaultIfEmpty() .DefaultIfEmpty()
.OrderBy(t => t.Min)
.FirstOrDefaultAsync(token) .FirstOrDefaultAsync(token)
.ConfigureAwait(false); .ConfigureAwait(false);
@ -51,6 +52,7 @@ namespace AsbCloudInfrastructure.Services
}) })
.AsNoTracking() .AsNoTracking()
.DefaultIfEmpty() .DefaultIfEmpty()
.OrderBy(t => t.Min)
.FirstOrDefaultAsync(token) .FirstOrDefaultAsync(token)
.ConfigureAwait(false); .ConfigureAwait(false);
@ -63,6 +65,7 @@ namespace AsbCloudInfrastructure.Services
}) })
.AsNoTracking() .AsNoTracking()
.DefaultIfEmpty() .DefaultIfEmpty()
.OrderBy(t => t.Min)
.FirstOrDefaultAsync(token) .FirstOrDefaultAsync(token)
.ConfigureAwait(false); .ConfigureAwait(false);
@ -75,6 +78,7 @@ namespace AsbCloudInfrastructure.Services
}) })
.AsNoTracking() .AsNoTracking()
.DefaultIfEmpty() .DefaultIfEmpty()
.OrderBy(t => t.Min)
.FirstOrDefaultAsync(token) .FirstOrDefaultAsync(token)
.ConfigureAwait(false); .ConfigureAwait(false);
@ -87,6 +91,7 @@ namespace AsbCloudInfrastructure.Services
}) })
.AsNoTracking() .AsNoTracking()
.DefaultIfEmpty() .DefaultIfEmpty()
.OrderBy(t => t.Min)
.FirstOrDefaultAsync(token) .FirstOrDefaultAsync(token)
.ConfigureAwait(false); .ConfigureAwait(false);
@ -124,10 +129,59 @@ namespace AsbCloudInfrastructure.Services
.ToListAsync(token) .ToListAsync(token)
.ConfigureAwait(false); .ConfigureAwait(false);
var dto = entities.Select(entity => entity.Adapt<DrillParamsDto>()); var dto = entities.Select(entity =>
entity.Adapt<DrillParamsDto>());
return dto; return dto;
} }
public async Task<IEnumerable<DrillParamsDto>> GetCompositeAllAsync(int idWell,
CancellationToken token = default)
{
var compositeWellDrillParams =
await (from p in db.DrillParams
from c in db.WellComposites
where c.IdWell == idWell &&
p.IdWell == c.IdWellSrc &&
p.IdWellSectionType == c.IdWellSectionType
select p)
.ToListAsync(token)
.ConfigureAwait(false);
var compositeDrillParamsDtos = compositeWellDrillParams.Select(c => c.Adapt<DrillParamsDto>());
return compositeDrillParamsDtos;
}
public async Task<int> InsertAsync(int idWell, DrillParamsDto dto,
CancellationToken token = default)
{
dto.IdWell = idWell;
var result = await base.InsertAsync(dto, token);
return result;
}
public async Task<int> InsertRangeAsync(int idWell, IEnumerable<DrillParamsDto> dtos,
CancellationToken token = default)
{
foreach (var dto in dtos)
dto.IdWell = idWell;
var result = await base.InsertRangeAsync(dtos, token);
return result;
}
public override async Task<int> UpdateAsync(int idWell, DrillParamsDto dto,
CancellationToken token = default)
{
dto.IdWell = idWell;
var result = await base.UpdateAsync(dto.Id, dto, token);
return result;
}
private IQueryable<IGrouping<int, TelemetryDataSaub>> GetTelemetryGroupQuery(int idTelemetry, private IQueryable<IGrouping<int, TelemetryDataSaub>> GetTelemetryGroupQuery(int idTelemetry,
double startDepth, double endDepth) double startDepth, double endDepth)
{ {

View File

@ -32,7 +32,7 @@ namespace AsbCloudWebApi.Controllers
/// <param name="endDepth"> Конечная глубина </param> /// <param name="endDepth"> Конечная глубина </param>
/// <param name="token"> Токен отмены задачи </param> /// <param name="token"> Токен отмены задачи </param>
/// <returns> Значения по умолчанию для режимов бурения </returns> /// <returns> Значения по умолчанию для режимов бурения </returns>
[HttpGet("/autoParams")] [HttpGet("autoParams")]
[ProducesResponseType(typeof(DrillParamsDto), (int) System.Net.HttpStatusCode.OK)] [ProducesResponseType(typeof(DrillParamsDto), (int) System.Net.HttpStatusCode.OK)]
public async Task<IActionResult> GetDefaultAsync(int idWell, public async Task<IActionResult> GetDefaultAsync(int idWell,
double startDepth, double endDepth, CancellationToken token = default) double startDepth, double endDepth, CancellationToken token = default)
@ -80,7 +80,7 @@ namespace AsbCloudWebApi.Controllers
/// <returns></returns> /// <returns></returns>
[HttpPost] [HttpPost]
[ProducesResponseType(typeof(int), (int) System.Net.HttpStatusCode.OK)] [ProducesResponseType(typeof(int), (int) System.Net.HttpStatusCode.OK)]
public async Task<IActionResult> SaveAsync(int idWell, public async Task<IActionResult> InsertAsync(int idWell,
DrillParamsDto drillParamsDto, CancellationToken token = default) DrillParamsDto drillParamsDto, CancellationToken token = default)
{ {
var idCompany = User.GetCompanyId(); var idCompany = User.GetCompanyId();
@ -89,7 +89,31 @@ namespace AsbCloudWebApi.Controllers
idWell, token).ConfigureAwait(false)) idWell, token).ConfigureAwait(false))
return Forbid(); return Forbid();
var result = await drillParamsService.InsertAsync(drillParamsDto, token); var result = await drillParamsService.InsertAsync(idWell, drillParamsDto, token);
return Ok(result);
}
/// <summary>
/// Добавляет массив объектов режимов бурений
/// </summary>
/// <param name="idWell"> id скважины </param>
/// <param name="drillParams"> Массив объектов параметров режима бурений для секции</param>
/// <param name="token"> Токен отмены задачи </param>
/// <returns></returns>
[HttpPost("range")]
[ProducesResponseType(typeof(int), (int) System.Net.HttpStatusCode.OK)]
public async Task<IActionResult> InsertRangeAsync(int idWell,
IEnumerable<DrillParamsDto> drillParams, CancellationToken token = default)
{
var idCompany = User.GetCompanyId();
if (idCompany is null || !await wellService.IsCompanyInvolvedInWellAsync((int)idCompany,
idWell, token).ConfigureAwait(false))
return Forbid();
var result = await drillParamsService.InsertRangeAsync(idWell, drillParams,
token);
return Ok(result); return Ok(result);
} }
@ -141,5 +165,26 @@ namespace AsbCloudWebApi.Controllers
return Ok(result); return Ok(result);
} }
/// <summary>
/// Возвращает значения для режимов бурения на композитной скважине
/// </summary>
/// <param name="idWell"> id скважины </param>
/// <param name="token"> Токен отмены задачи </param>
/// <returns> Список параметров для режимов бурения на композитной скважине </returns>
[HttpGet("composite")]
[ProducesResponseType(typeof(IEnumerable<DrillParamsDto>), (int) System.Net.HttpStatusCode.OK)]
public async Task<IActionResult> GetCompositeAllAsync(int idWell, CancellationToken token = default)
{
var idCompany = User.GetCompanyId();
if (idCompany is null || !await wellService.IsCompanyInvolvedInWellAsync((int)idCompany,
idWell, token).ConfigureAwait(false))
return Forbid();
var dto = await drillParamsService.GetCompositeAllAsync(idWell, token);
return Ok(dto);
}
} }
} }