Введение справочника для определения предиката по типу операции

This commit is contained in:
Lyudmila Romanova 2022-06-10 14:04:03 +05:00
parent 4bc07bc727
commit e5c1880225
2 changed files with 34 additions and 5 deletions

View File

@ -1,4 +1,6 @@
namespace AsbCloudApp.Data
using System;
namespace AsbCloudApp.Data
{
/// <summary>
/// Описание целевых/нормативных показателей операций
@ -10,9 +12,9 @@
/// </summary>
public int Id { get; set; }
/// <summary>
/// Идентификатор скважины
/// </summary>
/// <summary>
/// Идентификатор скважины
/// </summary>
public int IdWell { get; set; }
/// <summary>
@ -40,5 +42,21 @@
/// </summary>
public double DepthEnd { get; set; }
/// <summary>
/// Определение применяемого предикат по типц операции
/// </summary>
/// <returns>Предикат для использования</returns>
public Predicate<double> PredicateTarget
{
get {
return IdOperationCategory switch
{
1 => (x) => false,
11 => (x) => x > TargetValue,
_ => (x) => true
};
}
}
}
}

View File

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