ajuste no calculo do tempo aguardando
This commit is contained in:
parent
2f37aa1c9c
commit
098f3b054d
|
|
@ -3477,7 +3477,9 @@ namespace AgroBase.Models
|
|||
else if (statusAtual == StatusOperacao.Aguardando)
|
||||
{
|
||||
double segundosAguardados = op.Sensoriamento?.Operacao?.TempoAguardandoSeg ?? 0;
|
||||
double segundosRestantes = Math.Max(0, op.TempoIniciarOperacao - segundosAguardados);
|
||||
double tempoTotalEspera = Math.Max(0, op.TempoIniciarOperacao);
|
||||
|
||||
double segundosRestantes = Math.Max(0, tempoTotalEspera - segundosAguardados);
|
||||
|
||||
int segundosTela = (int)Math.Ceiling(segundosRestantes);
|
||||
string plural = segundosTela == 1 ? "" : "s";
|
||||
|
|
@ -3765,17 +3767,29 @@ namespace AgroBase.Models
|
|||
op.Controle.Motivos = RedisService.GetField<List<string>>(CtxKey.DadosControle, "motivos", new List<string>());
|
||||
|
||||
double tempoDecorridoSeg = 0;
|
||||
|
||||
if (Operacao.DataInicio != DateTime.MinValue)
|
||||
{
|
||||
DateTime fim =
|
||||
Operacao.DataFim != DateTime.MinValue
|
||||
? Operacao.DataFim
|
||||
: agora;
|
||||
|
||||
DateTime fim = Operacao.DataFim != DateTime.MinValue ? Operacao.DataFim : agora;
|
||||
tempoDecorridoSeg = Math.Max(0, (fim - Operacao.DataInicio).TotalSeconds);
|
||||
}
|
||||
|
||||
double tempoAguardandoRaw = RedisService.GetField<double>(CtxKey.DadosOperacao, "tempo_aguardando", 0.0);
|
||||
double tempoAguardarInicio = RedisService.GetField<double>(CtxKey.DadosOperacao, "tempo_aguardar_inicio_operacao", op.TempoIniciarOperacao);
|
||||
double agoraUnix = DateTimeOffset.Now.ToUnixTimeMilliseconds() / 1000.0;
|
||||
double tempoAguardandoSeg;
|
||||
if (tempoAguardandoRaw > 1_000_000_000)
|
||||
{
|
||||
// Redis está mandando timestamp Unix de início da espera.
|
||||
tempoAguardandoSeg = Math.Max(0.0, agoraUnix - tempoAguardandoRaw);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Compatibilidade: caso algum fluxo antigo mande duração em segundos.
|
||||
tempoAguardandoSeg = Math.Max(0.0, tempoAguardandoRaw);
|
||||
}
|
||||
|
||||
op.TempoIniciarOperacao = Math.Max(0, Convert.ToInt32(Math.Round(tempoAguardarInicio)));
|
||||
|
||||
var operacaoAtualizada = new OperacaoSensoriamentoLogModel()
|
||||
{
|
||||
Momento = agora,
|
||||
|
|
@ -3791,6 +3805,7 @@ namespace AgroBase.Models
|
|||
DataInicio = Operacao.DataInicio,
|
||||
DataFim = Operacao.DataFim,
|
||||
TempoDecorridoSeg = tempoDecorridoSeg,
|
||||
TempoAguardandoSeg = tempoAguardandoSeg,
|
||||
TipoCanAtivo = CanManager.TipoServico,
|
||||
|
||||
OperacaoLiberada = RedisService.GetField(CtxKey.DadosOperacao, "liberado", false),
|
||||
|
|
@ -3798,7 +3813,6 @@ namespace AgroBase.Models
|
|||
ErroOperacaoLiberada = RedisService.GetField<string>(CtxKey.DadosOperacao, "motivo_nao_liberado"),
|
||||
OperacaoLiberacaoDebug = RedisService.GetField<JObject>(CtxKey.DadosOperacao, "operacao_liberacao_debug"),
|
||||
StatusOperacaoAtual = (StatusOperacao)RedisService.GetField<int>(CtxKey.DadosOperacao, "status", 0),
|
||||
TempoAguardandoSeg = RedisService.GetField<long>(CtxKey.DadosOperacao, "tempo_aguardando", 0),
|
||||
|
||||
ModulosMandatorios = new List<OperacaoModulosMandatoriosModel>(op.Parametros.ModulosMandatorios ?? new List<OperacaoModulosMandatoriosModel>()),
|
||||
ParametrosMandatorios = new List<OperacaoParametrosMandatoriosModel>(op.Parametros.ParametrosMandatorios ?? new List<OperacaoParametrosMandatoriosModel>()),
|
||||
|
|
|
|||
Loading…
Reference in New Issue