From 046a6a765d8a331cf75bb5a7bce24d3b107f0bc4 Mon Sep 17 00:00:00 2001 From: "ai.astrakhantsev" Date: Fri, 25 Nov 2022 11:56:21 +0500 Subject: [PATCH] =?UTF-8?q?#7887519=20=D0=97=D0=B0=D0=BC=D0=B5=D1=87=D0=B0?= =?UTF-8?q?=D0=BD=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ILimitingParameterRepository.cs | 4 +- .../Services/ILimitingParameterService.cs | 4 +- .../Repository/LimitingParameterRepository.cs | 5 +-- .../LimitingParameterBackgroundService.cs | 44 ------------------- .../Services/LimitingParameterService.cs | 10 ++--- .../LimitingParameterServiceTest.cs | 2 +- .../LimitingParameterController.cs | 10 ++++- 7 files changed, 19 insertions(+), 60 deletions(-) diff --git a/AsbCloudApp/Repositories/ILimitingParameterRepository.cs b/AsbCloudApp/Repositories/ILimitingParameterRepository.cs index 64111c32..507270ef 100644 --- a/AsbCloudApp/Repositories/ILimitingParameterRepository.cs +++ b/AsbCloudApp/Repositories/ILimitingParameterRepository.cs @@ -13,13 +13,13 @@ namespace AsbCloudApp.Repositories public interface ILimitingParameterRepository { /// - /// Получение информации идентификатору скважины + /// Получение списка ограничивающих параметров по идентификатору скважины /// /// /// /// /// - Task> GetStatOrDefaultAsync(LimitingParameterRequest request, WellDto wellDto, CancellationToken token); + Task> GetLimitingParametersAsync(LimitingParameterRequest request, WellDto wellDto, CancellationToken token); } #nullable disable } diff --git a/AsbCloudApp/Services/ILimitingParameterService.cs b/AsbCloudApp/Services/ILimitingParameterService.cs index a6625191..3e82eba1 100644 --- a/AsbCloudApp/Services/ILimitingParameterService.cs +++ b/AsbCloudApp/Services/ILimitingParameterService.cs @@ -13,12 +13,12 @@ namespace AsbCloudApp.Services public interface ILimitingParameterService { /// - /// Получение информации идентификатору скважины + /// Получение статистики по ограничивающим параметрам /// /// /// /// - Task?> GetStatOrDefaultAsync(LimitingParameterRequest request, CancellationToken token); + Task> GetStatAsync(LimitingParameterRequest request, CancellationToken token); } #nullable disable } diff --git a/AsbCloudInfrastructure/Repository/LimitingParameterRepository.cs b/AsbCloudInfrastructure/Repository/LimitingParameterRepository.cs index 42681c86..88c5f869 100644 --- a/AsbCloudInfrastructure/Repository/LimitingParameterRepository.cs +++ b/AsbCloudInfrastructure/Repository/LimitingParameterRepository.cs @@ -19,13 +19,10 @@ namespace AsbCloudInfrastructure.Repository { this.context = context; } - public async Task> GetStatOrDefaultAsync(LimitingParameterRequest request, WellDto wellDto, CancellationToken token) + public async Task> GetLimitingParametersAsync(LimitingParameterRequest request, WellDto wellDto, CancellationToken token) { var query = BuildQuery(request, wellDto); - if (query is null) - return Enumerable.Empty(); - var data = (await query.ToListAsync(token)) .Select(x => new LimitingParameterDataDto { diff --git a/AsbCloudInfrastructure/Services/LimitingParameterBackgroundService.cs b/AsbCloudInfrastructure/Services/LimitingParameterBackgroundService.cs index 391fe71e..261ceb9c 100644 --- a/AsbCloudInfrastructure/Services/LimitingParameterBackgroundService.cs +++ b/AsbCloudInfrastructure/Services/LimitingParameterBackgroundService.cs @@ -150,52 +150,8 @@ namespace AsbCloudInfrastructure.Services }; } } - await result.DisposeAsync(); } - //var rows = new List<(short IdLimiting, DateTimeOffset Date, float WellDepth)>(32); - //{ - // using var result = await ExecuteReaderAsync(db, query, token); - // int? idLimitingLast = null; - // while (result.Read()) - // { - // var idLimiting = result.GetFieldValue(1); - // var wellDepth = result.GetFieldValue(2); - // if (idLimitingLast != idLimiting) - // { - // idLimitingLast = idLimiting; - // var date = result.GetFieldValue(0); - // rows.Add((idLimiting, date, wellDepth)); - // } - // } - // await result.DisposeAsync(); - //} - - //if (rows.Count < 2) - // return Enumerable.Empty(); - - //var limitingParameters = new List(32); - - //for (int i = 1; i < rows.Count; i++) - //{ - // var r0 = rows[i - 1]; - // var r1 = rows[i]; - // if (r0.IdLimiting != r1.IdLimiting) - // { - // var limitingParameter = new LimitingParameter() - // { - // IdTelemetry = idTelemetry, - // DateStart = r0.Date, - // DateEnd = r1.Date, - // DepthStart = r0.WellDepth, - // DepthEnd = r1.WellDepth, - // IdFeedRegulator = (short)r0.IdLimiting - // }; - - // limitingParameters.Add(limitingParameter); - // } - //} - return limitingParameters; } diff --git a/AsbCloudInfrastructure/Services/LimitingParameterService.cs b/AsbCloudInfrastructure/Services/LimitingParameterService.cs index b86e2da3..34ebbd24 100644 --- a/AsbCloudInfrastructure/Services/LimitingParameterService.cs +++ b/AsbCloudInfrastructure/Services/LimitingParameterService.cs @@ -23,17 +23,17 @@ namespace AsbCloudInfrastructure.Services this.wellService = wellService; } - public async Task?> GetStatOrDefaultAsync(LimitingParameterRequest request, CancellationToken token) + public async Task> GetStatAsync(LimitingParameterRequest request, CancellationToken token) { var well = await wellService.GetOrDefaultAsync(request.IdWell, token); if (well?.IdTelemetry is null || well.Timezone is null) - return null; + return Enumerable.Empty(); - var data = (await limitingParameterRepository.GetStatOrDefaultAsync(request, well, token)) + var data = (await limitingParameterRepository.GetLimitingParametersAsync(request, well, token)) .GroupBy(x => x.IdFeedRegulator); - List result = new List(); + List result = new List(data.Count()); foreach (var item in data) { var trimData = TrimLimitingParameters(item, request); @@ -79,7 +79,7 @@ namespace AsbCloudInfrastructure.Services x.DepthEnd = (float)request.LtDepth.Value; } return x; - }).ToList(); + }); return result; } diff --git a/AsbCloudWebApi.Tests/ServicesTests/LimitingParameterServiceTest.cs b/AsbCloudWebApi.Tests/ServicesTests/LimitingParameterServiceTest.cs index b669aace..06dae8b4 100644 --- a/AsbCloudWebApi.Tests/ServicesTests/LimitingParameterServiceTest.cs +++ b/AsbCloudWebApi.Tests/ServicesTests/LimitingParameterServiceTest.cs @@ -84,7 +84,7 @@ namespace AsbCloudWebApi.Tests.ServicesTests [Fact] public async Task GetList() { - var data = await limitingParameterService.GetStatOrDefaultAsync(limitingParameterRequest, CancellationToken.None); + var data = await limitingParameterService.GetStatAsync(limitingParameterRequest, CancellationToken.None); Assert.NotNull(data); Assert.Single(data); Assert.Equal(1275, data.First().Depth); diff --git a/AsbCloudWebApi/Controllers/LimitingParameterController.cs b/AsbCloudWebApi/Controllers/LimitingParameterController.cs index 7fc076fe..1df008e8 100644 --- a/AsbCloudWebApi/Controllers/LimitingParameterController.cs +++ b/AsbCloudWebApi/Controllers/LimitingParameterController.cs @@ -24,13 +24,19 @@ namespace AsbCloudWebApi.Controllers this.wellService = wellService; } + /// + /// Получение статистики по ограничивающим параметрам + /// + /// + /// + /// [HttpGet("stat")] [ProducesResponseType(typeof(IEnumerable), (int)System.Net.HttpStatusCode.OK)] - public async Task GetInfosAsync([FromQuery] LimitingParameterRequest request, CancellationToken token = default) + public async Task GetStatAsync([FromQuery] LimitingParameterRequest request, CancellationToken token = default) { if (!await UserHasAccesToWellAsync(request.IdWell, token)) return Forbid(); - var subsystemResult = await limitingParameterService.GetStatOrDefaultAsync(request, token); + var subsystemResult = await limitingParameterService.GetStatAsync(request, token); return Ok(subsystemResult); }