diff --git a/AsbCloudApp/Data/OperationValueDto.cs b/AsbCloudApp/Data/OperationValueDto.cs index e235272b..8e82339b 100644 --- a/AsbCloudApp/Data/OperationValueDto.cs +++ b/AsbCloudApp/Data/OperationValueDto.cs @@ -1,4 +1,6 @@ -namespace AsbCloudApp.Data +using System; + +namespace AsbCloudApp.Data { /// /// Описание целевых/нормативных показателей операций @@ -10,9 +12,9 @@ /// public int Id { get; set; } - /// - /// Идентификатор скважины - /// + /// + /// Идентификатор скважины + /// public int IdWell { get; set; } /// @@ -40,5 +42,21 @@ /// public double DepthEnd { get; set; } + /// + /// Определение применяемого предикат по типц операции + /// + /// Предикат для использования + public Predicate PredicateTarget + { + get { + return IdOperationCategory switch + { + 1 => (x) => false, + 11 => (x) => x > TargetValue, + _ => (x) => true + }; + } + } + } } diff --git a/AsbCloudInfrastructure/Services/DetectOperations/DetectedOperationService.cs b/AsbCloudInfrastructure/Services/DetectOperations/DetectedOperationService.cs index e293ae99..2cb4a316 100644 --- a/AsbCloudInfrastructure/Services/DetectOperations/DetectedOperationService.cs +++ b/AsbCloudInfrastructure/Services/DetectOperations/DetectedOperationService.cs @@ -55,7 +55,18 @@ namespace AsbCloudInfrastructure.Services.DetectOperations res.Count = dtos.GroupBy(o => o.Driller==null?0:o.Driller.Id, p=>p, (key,gr)=>(key,gr.Count())).ToDictionary(e=>e.key,e=>e.Item2); - //res.test = g; + + res.Average = dtos.GroupBy(o => o.Driller == null ? 0 : o.Driller.Id, + p => p, + (key, gr) => (key, + gr.Sum(o => o.OperationValue?.TargetValue??0)/ gr.Count() + )).ToDictionary(e => e.key, e => e.Item2); + + //res.Efficiency = dtos.GroupBy(o => o.Driller == null ? 0 : o.Driller.Id, + // p => p, + // (key, gr) => (key, + // 100*gr.Where(i=>i.OperationValue.PredicateTarget(5)).Sum(o => o.OperationValue?.TargetValue ?? 0) / gr.Count() + // )).ToDictionary(e => e.key, e => e.Item2); return res; }