#8103063 Подтягивание режимов при формировании композитной скважины

This commit is contained in:
ai.astrakhantsev 2023-01-26 10:59:24 +05:00
parent d8b131622f
commit ccbc499754
3 changed files with 71 additions and 3 deletions

View File

@ -1,4 +1,5 @@
using AsbCloudApp.Data.ProcessMap;
using AsbCloudApp.Data;
using AsbCloudApp.Data.ProcessMap;
using System.Collections.Generic;
using System.IO;
using System.Threading;
@ -19,6 +20,14 @@ namespace AsbCloudApp.Services
/// <param name="token"></param>
/// <returns></returns>
Task<IEnumerable<ProcessMapReportDto>> GetProcessMapAsync(int idWell, CancellationToken token);
/// <summary>
/// Получение РТК по композитной скважине
/// </summary>
/// <param name="dtos"></param>
/// <param name="token"></param>
/// <returns></returns>
Task<IEnumerable<ProcessMapDto>> GetCompositeData(int idWell, CancellationToken token);
}
#nullable disable
}

View File

@ -26,6 +26,7 @@ namespace AsbCloudInfrastructure.Services.ProcessMap
private readonly ITelemetryDataSaubService telemetryDataSaubService;
private readonly ILimitingParameterRepository limitingParameterRepository;
private readonly ISubsystemOperationTimeService subsystemOperationTimeService;
private readonly IWellCompositeRepository wellCompositeRepository;
public ProcessMapService(
IWellService wellService,
@ -33,7 +34,8 @@ namespace AsbCloudInfrastructure.Services.ProcessMap
IProcessMapRepository processMapRepository,
ITelemetryDataSaubService telemetryDataSaubService,
ILimitingParameterRepository limitingParameterRepository,
ISubsystemOperationTimeService subsystemOperationTimeService)
ISubsystemOperationTimeService subsystemOperationTimeService,
IWellCompositeRepository wellCompositeRepository)
{
this.wellService = wellService;
this.wellOperationRepository = wellOperationService;
@ -41,6 +43,7 @@ namespace AsbCloudInfrastructure.Services.ProcessMap
this.telemetryDataSaubService = telemetryDataSaubService;
this.limitingParameterRepository = limitingParameterRepository;
this.subsystemOperationTimeService = subsystemOperationTimeService;
this.wellCompositeRepository = wellCompositeRepository;
}
public async Task<IEnumerable<ProcessMapReportDto>> GetProcessMapAsync(int idWell, CancellationToken token)
@ -68,6 +71,48 @@ namespace AsbCloudInfrastructure.Services.ProcessMap
return result;
}
public async Task<IEnumerable<ProcessMapDto>> GetCompositeData(int idWell, CancellationToken token)
{
var result = new List<ProcessMapDto>();
var dtos = await wellCompositeRepository.GetAsync(idWell, token);
foreach (var dto in dtos)
{
var processMaps = (await processMapRepository.GetByIdWellAsync(dto.IdWellSrc, token))!.
Where(x => x.IdWellSectionType == dto.IdWellSectionType).
Select(x => new ProcessMapDto {
IdWell = dto.IdWell,
IdWellSectionType = dto.IdWellSectionType,
RopPlan = x.RopPlan,
DepthStart = x.DepthStart,
DepthEnd = x.DepthEnd,
AxialLoad = new PlanFactDto
{
Plan = x.AxialLoad.Fact ?? 0
},
Flow = new PlanFactDto
{
Plan = x.Flow.Fact ?? 0
},
Pressure = new PlanFactDto
{
Plan = x.Pressure.Fact ?? 0
},
TopDriveSpeed = new PlanFactDto
{
Plan = x.TopDriveSpeed.Fact ?? 0
},
TopDriveTorque = new PlanFactDto
{
Plan = x.TopDriveTorque.Fact ?? 0
},
LastUpdate = DateTime.UtcNow
});
result.AddRange(processMaps);
}
return result;
}
private Task<IEnumerable<SubsystemOperationTimeDto>?> GetOperationTimeAsync(int idWell, CancellationToken token)
{
var request = new SubsystemOperationTimeRequest

View File

@ -1,4 +1,5 @@
using AsbCloudApp.Data;
using AsbCloudApp.Data.ProcessMap;
using AsbCloudApp.Repositories;
using AsbCloudApp.Services;
using Microsoft.AspNetCore.Authorization;
@ -20,11 +21,15 @@ namespace AsbCloudWebApi.Controllers
{
private readonly IWellCompositeRepository wellCompositeRepository;
private readonly IWellService wellService;
private readonly IProcessMapService processMapService;
public WellCompositeController(IWellCompositeRepository wellCompositeRepository, IWellService wellService)
public WellCompositeController(IWellCompositeRepository wellCompositeRepository,
IWellService wellService,
IProcessMapService processMapService)
{
this.wellCompositeRepository = wellCompositeRepository;
this.wellService = wellService;
this.processMapService = processMapService;
}
/// <summary>
@ -63,6 +68,15 @@ namespace AsbCloudWebApi.Controllers
return Ok(result);
}
[HttpGet("getCompositeData")]
[Permission]
[ProducesResponseType(typeof(IEnumerable<ProcessMapDto>), (int)System.Net.HttpStatusCode.OK)]
public async Task<IActionResult> GetCompositeData(int idWell, CancellationToken token = default)
{
var result = await processMapService.GetCompositeData(idWell, token).ConfigureAwait(false);
return Ok(result);
}
private async Task<bool> CanUserAccessToWellAsync(int idWell, CancellationToken token = default)
{
int? idCompany = User.GetCompanyId();