forked from ddrilling/AsbCloudServer
Изменение алгоритма расчёта наработки АПД
This commit is contained in:
parent
17c13b7a7b
commit
410ef56f18
@ -29,4 +29,9 @@ public class OperationsSummaryDto
|
||||
/// Cумма продолжительностей операций
|
||||
/// </summary>
|
||||
public double SumDurationHours { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Флаг включенной подсистемы
|
||||
/// </summary>
|
||||
public int EnabledSubsystems { get; set; }
|
||||
}
|
||||
|
@ -104,14 +104,15 @@ namespace AsbCloudInfrastructure.Services.DetectOperations
|
||||
query = query.Where(operation => operation.DepthEnd <= request.LeDepthEnd.Value);
|
||||
|
||||
var queryGroup = query
|
||||
.GroupBy(operation => new { operation.IdTelemetry, operation.IdCategory })
|
||||
.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)
|
||||
SumDurationHours = group.Sum(operation => (operation.DateEnd - operation.DateStart).TotalHours),
|
||||
})
|
||||
.OrderBy(summ => summ.IdTelemetry)
|
||||
.ThenBy(summ => summ.IdCategory);
|
||||
|
@ -156,9 +156,7 @@ internal class SubsystemOperationTimeService : ISubsystemOperationTimeService
|
||||
var groupedSubsystemsTimes = subsystemsTimes
|
||||
.OrderBy(o => o.Id)
|
||||
.GroupBy(o => o.IdSubsystem);
|
||||
|
||||
var periodGroupTotal = subsystemsTimes.Sum(o => (o.DateEnd - o.DateStart).TotalHours);
|
||||
|
||||
|
||||
var result = groupedSubsystemsTimes.Select(g =>
|
||||
{
|
||||
var periodGroup = g.Sum(o => (o.DateEnd - o.DateStart).TotalHours);
|
||||
@ -193,7 +191,11 @@ internal class SubsystemOperationTimeService : ISubsystemOperationTimeService
|
||||
SumDepthInterval = apdParts.Sum(part => part.SumDepthInterval),
|
||||
OperationCount = apdParts.Sum(part => part.OperationCount),
|
||||
};
|
||||
apdSum.KUsage = apdSum.SumDepthInterval / apdSum.SumOperationDepthInterval;
|
||||
|
||||
operationsSummaries = operationsSummaries.Where(o => o.EnabledSubsystems == 1);
|
||||
|
||||
var (_, sumOprationsDurationHours) = AggregateOperationsSummaries(IdSubsystemAKBRotor, operationsSummaries);
|
||||
apdSum.KUsage = sumOprationsDurationHours / apdSum.SumOperationDurationHours;
|
||||
if (apdSum.KUsage > 1)
|
||||
apdSum.KUsage = 1;
|
||||
result = result.Append(apdSum).OrderBy(m => m.IdSubsystem);
|
||||
|
Loading…
Reference in New Issue
Block a user