diff --git a/AsbCloudApp/Repositories/IWellCompositeRepository.cs b/AsbCloudApp/Repositories/IWellCompositeRepository.cs index 8b24d32f..8369a803 100644 --- a/AsbCloudApp/Repositories/IWellCompositeRepository.cs +++ b/AsbCloudApp/Repositories/IWellCompositeRepository.cs @@ -35,7 +35,7 @@ namespace AsbCloudApp.Repositories /// /// /// - Task> GetCompositeProcessMap(int idWell, CancellationToken token); + Task?> GetCompositeProcessMap(int idWell, CancellationToken token); } #nullable disable } diff --git a/AsbCloudApp/Requests/WellCompositeRequest.cs b/AsbCloudApp/Requests/WellCompositeRequest.cs index 893a88fd..f9f2246a 100644 --- a/AsbCloudApp/Requests/WellCompositeRequest.cs +++ b/AsbCloudApp/Requests/WellCompositeRequest.cs @@ -1,4 +1,6 @@ -namespace AsbCloudApp.Requests +using System.Collections.Generic; + +namespace AsbCloudApp.Requests { #nullable enable /// @@ -9,12 +11,12 @@ /// /// Идентификатор скважины /// - public int IdWell { get; set; } + public IEnumerable IdWells { get; set; } = null!; /// /// Тип секции /// - public int? IdWellSectionType { get; set; } + public IEnumerable? IdWellSectionTypes { get; set; } = null!; } #nullable disable } diff --git a/AsbCloudApp/Services/IProcessMapService.cs b/AsbCloudApp/Services/IProcessMapService.cs index f45f8c36..11bb2846 100644 --- a/AsbCloudApp/Services/IProcessMapService.cs +++ b/AsbCloudApp/Services/IProcessMapService.cs @@ -1,7 +1,5 @@ -using AsbCloudApp.Data; -using AsbCloudApp.Data.ProcessMap; +using AsbCloudApp.Data.ProcessMap; using System.Collections.Generic; -using System.IO; using System.Threading; using System.Threading.Tasks; diff --git a/AsbCloudInfrastructure/Repository/ProcessMapRepository.cs b/AsbCloudInfrastructure/Repository/ProcessMapRepository.cs index 257791bc..e631bcbb 100644 --- a/AsbCloudInfrastructure/Repository/ProcessMapRepository.cs +++ b/AsbCloudInfrastructure/Repository/ProcessMapRepository.cs @@ -43,10 +43,10 @@ namespace AsbCloudInfrastructure.Repository public async Task?> GetByRequesProcessMaplAsync(WellCompositeRequest request, CancellationToken token) { - var query = GetQuery().Where(e => e.IdWell == request.IdWell); - if (request.IdWellSectionType is not null) + var query = GetQuery().Where(e => request.IdWells.Contains(e.IdWell)); + if (request.IdWellSectionTypes is not null) { - query.Where(e => e.IdWellSectionType == request.IdWellSectionType); + query.Where(e => request.IdWellSectionTypes.Contains(e.IdWellSectionType)); } var entities = await query diff --git a/AsbCloudInfrastructure/Repository/WellCompositeRepository.cs b/AsbCloudInfrastructure/Repository/WellCompositeRepository.cs index a56fa91f..557132b5 100644 --- a/AsbCloudInfrastructure/Repository/WellCompositeRepository.cs +++ b/AsbCloudInfrastructure/Repository/WellCompositeRepository.cs @@ -51,53 +51,49 @@ namespace AsbCloudInfrastructure.Repository } /// - public async Task> GetCompositeProcessMap(int idWell, CancellationToken token) + public async Task?> GetCompositeProcessMap(int idWell, CancellationToken token) { - var result = new List(); - var dtos = await GetAsync(idWell, token); - foreach (var dto in dtos) - { - var processMaps = (await processMapRepository.GetByRequesProcessMaplAsync(new WellCompositeRequest - { - IdWell = dto.IdWellSrc, - IdWellSectionType = dto.IdWellSectionType - } - , 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 ?? x.Flow.Plan - }, - Pressure = new PlanFactDto - { - Plan = x.Pressure.Fact ?? x.Pressure.Plan - }, - TopDriveSpeed = new PlanFactDto - { - Plan = x.TopDriveSpeed.Fact ?? x.TopDriveSpeed.Plan - }, - TopDriveTorque = new PlanFactDto - { - Plan = x.TopDriveTorque.Fact ?? x.TopDriveTorque.Plan - }, - LastUpdate = DateTime.UtcNow - }); + var idWells = dtos.Select(c => c.IdWellSrc); + var idWellSectionTypes = dtos.Select(c => c.IdWellSectionType); - if (processMaps is not null) - result.AddRange(processMaps); - } + var processMap = (await processMapRepository.GetByRequesProcessMaplAsync(new WellCompositeRequest + { + IdWells = idWells, + IdWellSectionTypes = idWellSectionTypes + }, + token)); + + var result = processMap?.Select(x => new ProcessMapDto + { + IdWell = x.IdWell, + IdWellSectionType = x.IdWellSectionType, + RopPlan = x.RopPlan, + DepthStart = x.DepthStart, + DepthEnd = x.DepthEnd, + AxialLoad = new PlanFactDto + { + Plan = x.AxialLoad.Fact ?? x.AxialLoad.Plan, + }, + Flow = new PlanFactDto + { + Plan = x.Flow.Fact ?? x.Flow.Plan + }, + Pressure = new PlanFactDto + { + Plan = x.Pressure.Fact ?? x.Pressure.Plan + }, + TopDriveSpeed = new PlanFactDto + { + Plan = x.TopDriveSpeed.Fact ?? x.TopDriveSpeed.Plan + }, + TopDriveTorque = new PlanFactDto + { + Plan = x.TopDriveTorque.Fact ?? x.TopDriveTorque.Plan + }, + LastUpdate = DateTime.UtcNow + }); + return result; } diff --git a/AsbCloudInfrastructure/Services/ProcessMap/ProcessMapService.cs b/AsbCloudInfrastructure/Services/ProcessMap/ProcessMapService.cs index 998f61fb..0ede2e82 100644 --- a/AsbCloudInfrastructure/Services/ProcessMap/ProcessMapService.cs +++ b/AsbCloudInfrastructure/Services/ProcessMap/ProcessMapService.cs @@ -26,7 +26,6 @@ namespace AsbCloudInfrastructure.Services.ProcessMap private readonly ITelemetryDataSaubService telemetryDataSaubService; private readonly ILimitingParameterRepository limitingParameterRepository; private readonly ISubsystemOperationTimeService subsystemOperationTimeService; - private readonly IWellCompositeRepository wellCompositeRepository; public ProcessMapService( IWellService wellService, @@ -34,8 +33,7 @@ namespace AsbCloudInfrastructure.Services.ProcessMap IProcessMapRepository processMapRepository, ITelemetryDataSaubService telemetryDataSaubService, ILimitingParameterRepository limitingParameterRepository, - ISubsystemOperationTimeService subsystemOperationTimeService, - IWellCompositeRepository wellCompositeRepository) + ISubsystemOperationTimeService subsystemOperationTimeService) { this.wellService = wellService; this.wellOperationRepository = wellOperationService; @@ -43,7 +41,6 @@ namespace AsbCloudInfrastructure.Services.ProcessMap this.telemetryDataSaubService = telemetryDataSaubService; this.limitingParameterRepository = limitingParameterRepository; this.subsystemOperationTimeService = subsystemOperationTimeService; - this.wellCompositeRepository = wellCompositeRepository; } ///