diff --git a/AsbCloudApp/Services/IProcessMapService.cs b/AsbCloudApp/Services/IProcessMapService.cs index 3d2eeff4..4a8be8e2 100644 --- a/AsbCloudApp/Services/IProcessMapService.cs +++ b/AsbCloudApp/Services/IProcessMapService.cs @@ -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 /// /// Task> GetProcessMapAsync(int idWell, CancellationToken token); + + /// + /// Получение РТК по композитной скважине + /// + /// + /// + /// + Task> GetCompositeData(int idWell, CancellationToken token); } #nullable disable } diff --git a/AsbCloudInfrastructure/Services/ProcessMap/ProcessMapService.cs b/AsbCloudInfrastructure/Services/ProcessMap/ProcessMapService.cs index 2b932368..5269199d 100644 --- a/AsbCloudInfrastructure/Services/ProcessMap/ProcessMapService.cs +++ b/AsbCloudInfrastructure/Services/ProcessMap/ProcessMapService.cs @@ -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> GetProcessMapAsync(int idWell, CancellationToken token) @@ -68,6 +71,48 @@ namespace AsbCloudInfrastructure.Services.ProcessMap return result; } + public async Task> GetCompositeData(int idWell, CancellationToken token) + { + var result = new List(); + + 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?> GetOperationTimeAsync(int idWell, CancellationToken token) { var request = new SubsystemOperationTimeRequest diff --git a/AsbCloudWebApi/Controllers/WellCompositeController.cs b/AsbCloudWebApi/Controllers/WellCompositeController.cs index c6f5c9cf..dbdd12a7 100644 --- a/AsbCloudWebApi/Controllers/WellCompositeController.cs +++ b/AsbCloudWebApi/Controllers/WellCompositeController.cs @@ -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; } /// @@ -63,6 +68,15 @@ namespace AsbCloudWebApi.Controllers return Ok(result); } + [HttpGet("getCompositeData")] + [Permission] + [ProducesResponseType(typeof(IEnumerable), (int)System.Net.HttpStatusCode.OK)] + public async Task GetCompositeData(int idWell, CancellationToken token = default) + { + var result = await processMapService.GetCompositeData(idWell, token).ConfigureAwait(false); + return Ok(result); + } + private async Task CanUserAccessToWellAsync(int idWell, CancellationToken token = default) { int? idCompany = User.GetCompanyId();