From bcdfb1933edb0a686d4768953a50ba7a0048cd10 Mon Sep 17 00:00:00 2001 From: eugeniy_ivanov Date: Thu, 3 Nov 2022 12:42:26 +0500 Subject: [PATCH] =?UTF-8?q?=D0=B2=D0=BD=D0=B5=D1=81=D0=B5=D0=BD=D0=B8?= =?UTF-8?q?=D0=B5=20=D0=BF=D1=80=D0=B0=D0=B2=D0=BE=D0=BA=20=D1=81=D0=BE?= =?UTF-8?q?=D0=B3=D0=BB=D0=B0=D1=81=D0=BD=D0=BE=20=D0=BA=D0=BE=D0=B4-?= =?UTF-8?q?=D1=80=D0=B5=D0=B2=D1=8C=D1=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Subsystems/SubsystemActiveWellStatDto.cs | 16 ++++++ .../Services/IDetectedOperationService.cs | 11 ++++ .../DetectedOperationService.cs | 19 +++++++ .../SubsystemOperationTimeService.cs | 50 ++++++++----------- 4 files changed, 66 insertions(+), 30 deletions(-) diff --git a/AsbCloudApp/Data/Subsystems/SubsystemActiveWellStatDto.cs b/AsbCloudApp/Data/Subsystems/SubsystemActiveWellStatDto.cs index a06f1064..45bc7147 100644 --- a/AsbCloudApp/Data/Subsystems/SubsystemActiveWellStatDto.cs +++ b/AsbCloudApp/Data/Subsystems/SubsystemActiveWellStatDto.cs @@ -15,6 +15,22 @@ namespace AsbCloudApp.Data.Subsystems /// Наработки подсистем /// public IEnumerable listSubsystemStat { get; set; } + /// + /// Наработки подсистемы АКБ + /// + public SubsystemStatDto SubsystemAKB { get; set; } + /// + /// Наработки подсистемы МСЕ + /// + public SubsystemStatDto SubsystemMSE { get; set; } + /// + /// Наработки подсистемы СПИН + /// + public SubsystemStatDto SubsystemSpinMaster { get; set; } + /// + /// Наработки подсистемы ТОРК + /// + public SubsystemStatDto SubsystemTorqueMaster { get; set; } } } \ No newline at end of file diff --git a/AsbCloudApp/Services/IDetectedOperationService.cs b/AsbCloudApp/Services/IDetectedOperationService.cs index 14a05665..7544f5c3 100644 --- a/AsbCloudApp/Services/IDetectedOperationService.cs +++ b/AsbCloudApp/Services/IDetectedOperationService.cs @@ -1,6 +1,7 @@ using AsbCloudApp.Data; using AsbCloudApp.Data.DetectedOperation; using AsbCloudApp.Requests; +using System; using System.Collections.Generic; using System.IO; using System.Threading; @@ -39,6 +40,16 @@ namespace AsbCloudApp.Services /// Task?> GetOperationsAsync(DetectedOperationRequest request, CancellationToken token); + /// + /// Удалить операции + /// + /// + /// + /// + /// + /// кортеж - ид телеметрии, интервалы глубины забоя + Task?> GetDepthIntervalAllOperationsAsync(DateTime gtDate, DateTime ltDate, double wellTimezoneHours, CancellationToken token); + /// /// Удалить операции /// diff --git a/AsbCloudInfrastructure/Services/DetectOperations/DetectedOperationService.cs b/AsbCloudInfrastructure/Services/DetectOperations/DetectedOperationService.cs index 3e8b3df2..3891af42 100644 --- a/AsbCloudInfrastructure/Services/DetectOperations/DetectedOperationService.cs +++ b/AsbCloudInfrastructure/Services/DetectOperations/DetectedOperationService.cs @@ -84,6 +84,25 @@ namespace AsbCloudInfrastructure.Services.DetectOperations return dtos; } + public async Task?> GetDepthIntervalAllOperationsAsync(DateTime gtDate, DateTime ltDate, double wellTimezoneHours ,CancellationToken token) + { + var query = db.Set() + .Include(o => o.OperationCategory) + .Where(o => o.DateStart >= gtDate.ToUtcDateTimeOffset(wellTimezoneHours)) + .Where(o => o.DateEnd <= ltDate.ToUtcDateTimeOffset(wellTimezoneHours)); + if (query is null) + return null; + var data = await query.ToListAsync(token); + var result = data.GroupBy(g => g.IdTelemetry) + .Select(g => + ( + g.Key, + g.Where(o => o.IdCategory == 1).Sum(o => o.DepthEnd - o.DepthStart), + g.Where(o => o.IdCategory == 3).Sum(o => o.DepthEnd - o.DepthStart) + )); + return result; + } + private static IEnumerable GetOperationsDrillersStat(IEnumerable operations) { var groups = operations.GroupBy(o => o.Driller); diff --git a/AsbCloudInfrastructure/Services/Subsystems/SubsystemOperationTimeService.cs b/AsbCloudInfrastructure/Services/Subsystems/SubsystemOperationTimeService.cs index 2852a52e..05ba770e 100644 --- a/AsbCloudInfrastructure/Services/Subsystems/SubsystemOperationTimeService.cs +++ b/AsbCloudInfrastructure/Services/Subsystems/SubsystemOperationTimeService.cs @@ -183,15 +183,7 @@ namespace AsbCloudInfrastructure.Services.Subsystems return depthIntervalSubsystem; } - - //TODO: - // скорее всего нужно доработать wellService - первое это метод - // GetWellsByCompanyAsync (получать сразу активные скважины ,а не вытягивать сначала все) - // второе - метод GetOperationsAsync - по умолчанию если не указан - // ИД скважины он заполняется как 0 , в нашем случае нужно получить опред операции по ВСЕМ - // скважинам - - + private async Task> GetActiveWellByCompany(int idCompany, CancellationToken token) { var listWell = await wellService.GetWellsByCompanyAsync(idCompany, token); @@ -207,39 +199,35 @@ namespace AsbCloudInfrastructure.Services.Subsystems var firstWell = activeWell.FirstOrDefault(); if (firstWell == null) return null; - var _well = wellService.GetOrDefault(firstWell.Id); - if (_well is null || _well.Timezone is null) - return null; - DateTimeOffset ExtractDate(DateTime dateTime) - { - var dateTimeOffset = dateTime.ToUtcDateTimeOffset(_well!.Timezone.Hours); - var date = new DateTimeOffset(dateTimeOffset.Year, dateTimeOffset.Month, dateTimeOffset.Day, 0, 0, 0, TimeSpan.Zero); - return date; - } var query = db.SubsystemOperationTimes .Where(o => telemetryIds.Contains(o.IdTelemetry)) - .AsNoTracking(); + .AsNoTracking(); - if (gtDate is not null) + if (gtDate is not null) { - var beginUTC = ExtractDate(gtDate.Value); + var beginUTC = gtDate.Value.ToUtcDateTimeOffset(firstWell.Timezone.Hours); query = query.Where(d => d.DateStart >= beginUTC); } - //query = query.Where(o => o.DateStart >= DateTime.Today.ToUtcDateTimeOffset(_well.Timezone.Hours)); - - if (ltDate is not null) + else { - var endUTC = ExtractDate(ltDate.Value); + var beginUTC = DateTime.Today.AddDays(-1).ToUtcDateTimeOffset(firstWell.Timezone.Hours); + query = query.Where(o => o.DateStart >= beginUTC ); + } + + if (ltDate is not null) + { + var endUTC = ltDate.Value.ToUtcDateTimeOffset(firstWell.Timezone.Hours); query = query.Where(d => d.DateEnd <= endUTC); } - //query = query.Where(o => o.DateEnd <= DateTime.Today.AddDays(-1).ToUtcDateTimeOffset(_well.Timezone.Hours)); + else + { + var endUTC = DateTime.Today.ToUtcDateTimeOffset(firstWell.Timezone.Hours); + query = query.Where(o => o.DateEnd <= endUTC); + } var result = new List(); - if (query is null) - { - return null; - } + var subsystemsOperationTime = await query.ToListAsync(token); var groupingSubsystemsOperationTime = subsystemsOperationTime.GroupBy(g => g.IdTelemetry); @@ -272,7 +260,9 @@ namespace AsbCloudInfrastructure.Services.Subsystems var dto = subsystem.Select(s => s.Adapt()); var subsystemStat = CalcStat(dto, depthInterval); wellStat.listSubsystemStat.Concat(subsystemStat); + //wellStat.Saub = subsystemStat.FirstOrDefault(s=>s.IdSubsystem == idSubsystemSaub) } + result.Add(wellStat); } }