From 941050821392ac65c57da2287560f7b6db0b25dc Mon Sep 17 00:00:00 2001
From: "ai.astrakhantsev" <ai.astrakhantsev@digitaldrilling.ru>
Date: Mon, 30 Jan 2023 10:52:12 +0500
Subject: [PATCH] #8103063 fix

---
 .../Repositories/IWellCompositeRepository.cs  |  2 +-
 AsbCloudApp/Requests/WellCompositeRequest.cs  |  8 +-
 AsbCloudApp/Services/IProcessMapService.cs    |  4 +-
 .../Repository/ProcessMapRepository.cs        |  6 +-
 .../Repository/WellCompositeRepository.cs     | 84 +++++++++----------
 .../Services/ProcessMap/ProcessMapService.cs  |  5 +-
 6 files changed, 51 insertions(+), 58 deletions(-)

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
         /// <param name="idWell"></param>
         /// <param name="token"></param>
         /// <returns></returns>
-        Task<IEnumerable<ProcessMapDto>> GetCompositeProcessMap(int idWell, CancellationToken token);
+        Task<IEnumerable<ProcessMapDto>?> 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
     /// <summary>
@@ -9,12 +11,12 @@
         /// <summary>
         /// Идентификатор скважины
         /// </summary>
-        public int IdWell { get; set; }
+        public IEnumerable<int> IdWells { get; set; } = null!;
 
         /// <summary>
         /// Тип секции
         /// </summary>
-        public int? IdWellSectionType { get; set; }
+        public IEnumerable<int>? 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<IEnumerable<ProcessMapDto>?> 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
         }
 
         /// <inheritdoc/>
-        public async Task<IEnumerable<ProcessMapDto>> GetCompositeProcessMap(int idWell, CancellationToken token)
+        public async Task<IEnumerable<ProcessMapDto>?> GetCompositeProcessMap(int idWell, CancellationToken token)
         {
-            var result = new List<ProcessMapDto>();
-
             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;
         }
 
         /// <inheritdoc/>