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;
}