forked from ddrilling/AsbCloudServer
Изменение SubsystemStatDTO
Изменение алгоритмов просчета статистики
This commit is contained in:
parent
43f3a12651
commit
eb987c6ff2
@ -23,8 +23,13 @@ namespace AsbCloudApp.Data.Subsystems
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public double KUsage { get; set; }
|
public double KUsage { get; set; }
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// коэффициент применения
|
/// сумма изменения глубин
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public double K2 { get; set; }
|
public double SumDepthChange { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// количество операций
|
||||||
|
/// </summary>
|
||||||
|
public int OperationCount { get; set; }
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -122,19 +122,63 @@ namespace AsbCloudInfrastructure.Services.Subsystems
|
|||||||
var result = groupedDataSubsystems.Select(item =>
|
var result = groupedDataSubsystems.Select(item =>
|
||||||
{
|
{
|
||||||
var periodGroup = item.Sum(o => (o.DateEnd - o.DateStart).TotalHours);
|
var periodGroup = item.Sum(o => (o.DateEnd - o.DateStart).TotalHours);
|
||||||
|
var periodGroupDepth = item.Sum(o => o.DepthEnd - o.DepthStart);
|
||||||
|
var depthChange = GetDepthChange(item.Key, gtDate, ltDate);
|
||||||
var subsystemStat = new SubsystemStatDto()
|
var subsystemStat = new SubsystemStatDto()
|
||||||
{
|
{
|
||||||
IdSubsystem = item.Key,
|
IdSubsystem = item.Key,
|
||||||
SubsystemName = subsystemService.GetOrDefault(item.Key)?.Name ?? "unknown",
|
SubsystemName = subsystemService.GetOrDefault(item.Key)?.Name ?? "unknown",
|
||||||
UsedTimeHours = periodGroup,
|
UsedTimeHours = periodGroup,
|
||||||
KUsage = 1d * periodGroup / periodRequest,
|
//условие добавлено что бы избежать деление на ноль
|
||||||
K2 = 1d * periodGroup / periodGroupTotal,
|
//чисто теоретически такое событие может произойти только в случае
|
||||||
|
//если не было определенных операций по какому то из режимов
|
||||||
|
// тогда в этом поле статистики будет null
|
||||||
|
KUsage = depthChange==0? double.NaN : periodGroupDepth / depthChange,
|
||||||
|
SumDepthChange = periodGroupDepth,
|
||||||
|
OperationCount = item.Count()
|
||||||
};
|
};
|
||||||
return subsystemStat;
|
return subsystemStat;
|
||||||
});
|
});
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
private double GetDepthChange (int idSubsystem, DateTime gtDate, DateTime ltDate)
|
||||||
|
{
|
||||||
|
double depthChange = 0;
|
||||||
|
var detectOperations = db.DetectedOperations
|
||||||
|
.Where(a => a.DateStart >= gtDate & a.DateEnd <= ltDate)
|
||||||
|
.ToList();
|
||||||
|
//AKB - Rotor+Slide
|
||||||
|
if (idSubsystem == 1)
|
||||||
|
{
|
||||||
|
depthChange = detectOperations.Where(a => a.IdCategory == 1 & a.IdCategory == 3)
|
||||||
|
.Sum(o => o.DepthEnd - o.DepthStart);
|
||||||
|
return depthChange;
|
||||||
|
}
|
||||||
|
//Mse - all detect operations
|
||||||
|
if (idSubsystem == 2)
|
||||||
|
{
|
||||||
|
depthChange = detectOperations
|
||||||
|
.Sum(o => o.DepthEnd - o.DepthStart);
|
||||||
|
return depthChange;
|
||||||
|
}
|
||||||
|
//Slide
|
||||||
|
if (idSubsystem == 65536)
|
||||||
|
{
|
||||||
|
depthChange = detectOperations.Where(o => o.IdCategory == 3)
|
||||||
|
.Sum(o => o.DepthEnd - o.DepthStart);
|
||||||
|
return depthChange;
|
||||||
|
}
|
||||||
|
//Rotor
|
||||||
|
if (idSubsystem == 65537)
|
||||||
|
{
|
||||||
|
depthChange = detectOperations.Where(o => o.IdCategory == 1)
|
||||||
|
.Sum(o => o.DepthEnd - o.DepthStart);
|
||||||
|
return depthChange;
|
||||||
|
}
|
||||||
|
|
||||||
|
return depthChange;
|
||||||
|
}
|
||||||
|
|
||||||
private IQueryable<SubsystemOperationTime>? BuildQuery(SubsystemOperationTimeRequest request)
|
private IQueryable<SubsystemOperationTime>? BuildQuery(SubsystemOperationTimeRequest request)
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user