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