diff --git a/AsbCloudApp/Data/DetectedOperation/DetectedOperationDto.cs b/AsbCloudApp/Data/DetectedOperation/DetectedOperationDto.cs index 9ca920b9..0b9a2f91 100644 --- a/AsbCloudApp/Data/DetectedOperation/DetectedOperationDto.cs +++ b/AsbCloudApp/Data/DetectedOperation/DetectedOperationDto.cs @@ -12,6 +12,11 @@ namespace AsbCloudApp.Data.DetectedOperation /// public int IdWell { get; set; } + + /// + /// Id телеметрии + /// + public int IdTelemetry { get; set; } /// /// Id названия/описания операции @@ -34,9 +39,9 @@ namespace AsbCloudApp.Data.DetectedOperation public DateTime DateEnd { get; set; } /// - /// Продолжительность операции в минутах + /// Продолжительность операции в часах /// - public double DurationMinutes => (DateEnd - DateStart).TotalMinutes; + public double DurationHours => (DateEnd - DateStart).TotalHours; /// /// глубина на начало операции, м @@ -72,5 +77,10 @@ namespace AsbCloudApp.Data.DetectedOperation /// Ключевой параметр операции /// public double Value { get; set; } + + /// + /// Флаг включенной подсистемы + /// + public int EnabledSubsystems { get; set; } } } diff --git a/AsbCloudApp/Data/DetectedOperation/OperationsSummaryDto.cs b/AsbCloudApp/Data/DetectedOperation/OperationsSummaryDto.cs deleted file mode 100644 index 74fe1e7b..00000000 --- a/AsbCloudApp/Data/DetectedOperation/OperationsSummaryDto.cs +++ /dev/null @@ -1,37 +0,0 @@ -namespace AsbCloudApp.Data.DetectedOperation; - -/// -/// Статистика по операциям -/// -public class OperationsSummaryDto -{ - /// - /// Id телеметрии - /// - public int IdTelemetry { get; set; } - - /// - /// Id названия/описания операции - /// - public int IdCategory { get; set; } - - /// - /// Количество операций - /// - public int Count { get; set; } - - /// - /// Cумма проходок операций - /// - public double SumDepthIntervals { get; set; } - - /// - /// Cумма продолжительностей операций - /// - public double SumDurationHours { get; set; } - - /// - /// Флаг включенной подсистемы - /// - public int EnabledSubsystems { get; set; } -} diff --git a/AsbCloudApp/Requests/DetectedOperationRequest.cs b/AsbCloudApp/Requests/DetectedOperationRequest.cs index 9bfa22f7..1e38ff7b 100644 --- a/AsbCloudApp/Requests/DetectedOperationRequest.cs +++ b/AsbCloudApp/Requests/DetectedOperationRequest.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; +using System.Linq; namespace AsbCloudApp.Requests { @@ -14,31 +15,37 @@ namespace AsbCloudApp.Requests /// [Required] public int IdWell { get; set; } + + /// + /// Список id телеметрий + /// пустой список - нет фильтрации + /// + public IEnumerable IdsTelemetries { get; set; } = Enumerable.Empty(); /// /// категории операций /// - public IEnumerable? IdsCategories { get; set; } + public IEnumerable IdsCategories { get; set; } = Enumerable.Empty(); /// /// Больше или равно дате /// - public DateTime? GtDate { get; set; } + public DateTimeOffset? GeDateStart { get; set; } /// /// Меньше или равно дате /// - public DateTime? LtDate { get; set; } + public DateTimeOffset? LeDateEnd { get; set; } /// /// Больше или равно глубины забоя /// - public double? GtDepth { get; set; } + public double? GeDepth { get; set; } /// /// Меньше или равно глубины забоя /// - public double? LtDepth { get; set; } + public double? LeDepth { get; set; } /// /// Фильтр по пользователю панели diff --git a/AsbCloudApp/Requests/DetectedOperationSummaryRequest.cs b/AsbCloudApp/Requests/DetectedOperationSummaryRequest.cs deleted file mode 100644 index 2b362f28..00000000 --- a/AsbCloudApp/Requests/DetectedOperationSummaryRequest.cs +++ /dev/null @@ -1,53 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; - -namespace AsbCloudApp.Requests; - -/// -/// Запрос на получение обобщенных данных по операцим -/// -public class DetectedOperationSummaryRequest -{ - /// - /// Список id телеметрий - /// пустой список - нет фильтрации - /// - public IEnumerable IdsTelemetries { get;set;} = Enumerable.Empty(); - - /// - /// Список id категорий операций - /// пустой список - нет фильтрации - /// - public IEnumerable IdsOperationCategories { get; set; } = Enumerable.Empty(); - - /// - /// Больше или равно даты начала операции - /// - public DateTimeOffset? GeDateStart {get;set;} - - /// - /// Меньше или равно даты начала операции - /// - public DateTimeOffset? LeDateStart { get; set; } - - /// - /// Меньше или равно даты окончания операции - /// - public DateTimeOffset? LeDateEnd { get; set; } - - /// - /// Больше или равно глубины начала операции - /// - public double? GeDepthStart { get; set; } - - /// - /// Меньше или равно глубины начала операции - /// - public double? LeDepthStart { get; set; } - - /// - /// Меньше или равно глубины окончания операции - /// - public double? LeDepthEnd { get; set; } -} diff --git a/AsbCloudApp/Services/IDetectedOperationService.cs b/AsbCloudApp/Services/IDetectedOperationService.cs index 1117d8e3..0ba595ff 100644 --- a/AsbCloudApp/Services/IDetectedOperationService.cs +++ b/AsbCloudApp/Services/IDetectedOperationService.cs @@ -37,14 +37,6 @@ namespace AsbCloudApp.Services /// Task?> GetOperationsAsync(DetectedOperationRequest request, CancellationToken token); - /// - /// Получить интервалы глубин по всем скважинам - /// - /// - /// - /// кортеж - ид телеметрии, интервалы глубины забоя (ротор,слайд) - Task> GetOperationSummaryAsync(DetectedOperationSummaryRequest request, CancellationToken token); - /// /// Удалить операции /// diff --git a/AsbCloudInfrastructure/Services/DailyReport/DailyReportService.cs b/AsbCloudInfrastructure/Services/DailyReport/DailyReportService.cs index 99a213d9..78e7f67e 100644 --- a/AsbCloudInfrastructure/Services/DailyReport/DailyReportService.cs +++ b/AsbCloudInfrastructure/Services/DailyReport/DailyReportService.cs @@ -263,8 +263,8 @@ public class DailyReportService : IDailyReportService { IdsCategories = new[] { idWellOperationSlipsTime }, IdWell = dailyReport.IdWell, - GtDate = dailyReport.Date, - LtDate = dailyReport.Date.AddHours(24) + GeDateStart = dailyReport.Date, + LeDateEnd = dailyReport.Date.AddHours(24) }, cancellationToken))?.Stats.Sum(s => s.Count); dailyReport.TimeBalanceBlock.WellDepth.Fact = factWellOperations diff --git a/AsbCloudInfrastructure/Services/DetectOperations/DetectedOperationService.cs b/AsbCloudInfrastructure/Services/DetectOperations/DetectedOperationService.cs index 65b4722c..4b58e235 100644 --- a/AsbCloudInfrastructure/Services/DetectOperations/DetectedOperationService.cs +++ b/AsbCloudInfrastructure/Services/DetectOperations/DetectedOperationService.cs @@ -65,62 +65,6 @@ namespace AsbCloudInfrastructure.Services.DetectOperations return dtos; } - public async Task> GetOperationSummaryAsync(DetectedOperationSummaryRequest request, CancellationToken token) - { - var query = db.Set() - .AsNoTracking(); - - if (request.IdsTelemetries.Any()) - query = query.Where(operation => request.IdsTelemetries.Contains(operation.IdTelemetry)); - - if (request.IdsOperationCategories.Any()) - query = query.Where(operation => request.IdsOperationCategories.Contains(operation.IdCategory)); - - if (request.GeDateStart.HasValue) - { - var geDateStart = request.GeDateStart.Value.ToUniversalTime(); - query = query.Where(operation => operation.DateStart >= geDateStart); - } - - if (request.LeDateStart.HasValue) - { - var leDateStart = request.LeDateStart.Value.ToUniversalTime(); - query = query.Where(operation => operation.DateStart <= leDateStart); - } - - if (request.LeDateEnd.HasValue) - { - var leDateEnd = request.LeDateEnd.Value.ToUniversalTime(); - query = query.Where(operation => operation.DateEnd <= leDateEnd); - } - - if (request.GeDepthStart.HasValue) - query = query.Where(operation => operation.DepthStart >= request.GeDepthStart.Value); - - if (request.LeDepthStart.HasValue) - query = query.Where(operation => operation.DepthStart <= request.LeDepthStart.Value); - - if (request.LeDepthEnd.HasValue) - query = query.Where(operation => operation.DepthEnd <= request.LeDepthEnd.Value); - - var queryGroup = query - .GroupBy(operation => new { operation.IdTelemetry, operation.IdCategory, operation.EnabledSubsystems }) - .Select(group => new OperationsSummaryDto - { - IdTelemetry = group.Key.IdTelemetry, - IdCategory = group.Key.IdCategory, - EnabledSubsystems = group.Key.EnabledSubsystems, - Count = group.Count(), - SumDepthIntervals = group.Sum(operation => operation.DepthEnd - operation.DepthStart), - SumDurationHours = group.Sum(operation => (operation.DateEnd - operation.DateStart).TotalHours), - }) - .OrderBy(summ => summ.IdTelemetry) - .ThenBy(summ => summ.IdCategory); - - var result = await queryGroup.ToArrayAsync(token); - return result; - } - private static IEnumerable GetOperationsDrillersStat(IEnumerable operations) { var groups = operations.GroupBy(o => o.Driller); @@ -241,20 +185,23 @@ namespace AsbCloudInfrastructure.Services.DetectOperations if (request is not null) { - if (request.IdsCategories?.Any() == true) + if (request.IdsTelemetries.Any()) + query = query.Where(o => request.IdsTelemetries.Contains(o.IdTelemetry)); + + if (request.IdsCategories.Any()) query = query.Where(o => request.IdsCategories.Contains(o.IdCategory)); - if (request.GtDate is not null) - query = query.Where(o => o.DateStart >= request.GtDate.Value.ToUtcDateTimeOffset(well.Timezone.Hours)); + if (request.GeDateStart is not null) + query = query.Where(o => o.DateStart >= request.GeDateStart.Value.Date.ToUtcDateTimeOffset(well.Timezone.Hours)); - if (request.LtDate is not null) - query = query.Where(o => o.DateEnd <= request.LtDate.Value.ToUtcDateTimeOffset(well.Timezone.Hours)); + if (request.LeDateEnd is not null) + query = query.Where(o => o.DateEnd <= request.LeDateEnd.Value.Date.ToUtcDateTimeOffset(well.Timezone.Hours)); - if (request.GtDepth is not null) - query = query.Where(o => o.DepthStart >= request.GtDepth); + if (request.GeDepth is not null) + query = query.Where(o => o.DepthStart >= request.GeDepth); - if (request.LtDepth is not null) - query = query.Where(o => o.DepthEnd <= request.LtDepth); + if (request.LeDepth is not null) + query = query.Where(o => o.DepthEnd <= request.LeDepth); if (request.EqIdTelemetryUser is not null) query = query.Where(o => o.IdUsersAtStart == request.EqIdTelemetryUser);