Изменение алгоритма выбора подсистемы АКБ

This commit is contained in:
eugeniy_ivanov 2022-09-18 23:25:34 +05:00
parent 174be9b35f
commit c6a49056bd

View File

@ -151,13 +151,12 @@ namespace AsbCloudInfrastructure.Services.Subsystems
var subsystemOperationTime = new List<SubsystemOperationTime>(32); var subsystemOperationTime = new List<SubsystemOperationTime>(32);
var prevSubsystem1 = false;
DateTimeOffset? prevDate = null;
if (result.Read()) if (result.Read())
{ {
var mode = result.GetFieldValue<short>(1); var mode = result.GetFieldValue<short>(1);
var mseState = result.GetFieldValue<short>(3); //var mseState = result.GetFieldValue<short>(3);
var idSubsystem = GetSubsytemId(mode); var idSubsystem = GetSubsytemId(mode);
var foundSubsystem = idSubsystem.HasValue;
var dateStart = result.GetFieldValue<DateTimeOffset>(0); var dateStart = result.GetFieldValue<DateTimeOffset>(0);
var depthStart = result.GetFieldValue<float>(2); var depthStart = result.GetFieldValue<float>(2);
@ -165,51 +164,30 @@ namespace AsbCloudInfrastructure.Services.Subsystems
{ {
var dateEnd = result.GetFieldValue<DateTimeOffset>(0); var dateEnd = result.GetFieldValue<DateTimeOffset>(0);
var depthEnd = result.GetFieldValue<float>(2); var depthEnd = result.GetFieldValue<float>(2);
if (idSubsystem.HasValue) var currentMode = result.GetFieldValue<short>(1);
var currentSubsystemAkb = GetSubsytemId(currentMode);
var endSubsystemAkb = !currentSubsystemAkb.HasValue;
if (foundSubsystem && endSubsystemAkb)
{ {
if (idSubsystem == 1)
{
prevSubsystem1 = true;
prevDate = dateStart;
}
else
{
prevSubsystem1 = false;
prevDate = null;
}
var operationTimeItem = new SubsystemOperationTime() var operationTimeItem = new SubsystemOperationTime()
{
IdTelemetry = idTelemetry,
IdSubsystem = idSubsystem.Value,
DateStart = (DateTimeOffset)(prevSubsystem1 ? prevDate : dateStart),
DateEnd = dateEnd,
DepthStart = depthStart,
DepthEnd = depthEnd
};
subsystemOperationTime.Add(operationTimeItem);
if (IsSubsystemMse(mseState))
{ {
var operationTimeItemMse = new SubsystemOperationTime() IdTelemetry = idTelemetry,
{ IdSubsystem = idSubsystem.Value,
IdTelemetry = idTelemetry, DateStart = dateStart,
IdSubsystem = 2, DateEnd = dateEnd,
DateStart = (DateTimeOffset)(prevSubsystem1 ? prevDate : dateStart), DepthStart = depthStart,
DateEnd = dateEnd, DepthEnd = depthEnd
DepthStart = depthStart, };
DepthEnd = depthEnd subsystemOperationTime.Add(operationTimeItem);
}; foundSubsystem = false;
subsystemOperationTime.Add(operationTimeItemMse); }
} if (currentSubsystemAkb.HasValue && !foundSubsystem)
{
idSubsystem = currentSubsystemAkb;
dateStart = dateEnd;
foundSubsystem = true;
depthStart = depthEnd;
} }
mode = result.GetFieldValue<short>(1);
mseState = result.GetFieldValue<short>(3);
idSubsystem = GetSubsytemId(mode);
dateStart = dateEnd;
depthStart = depthEnd;
} }
} }
return subsystemOperationTime; return subsystemOperationTime;