pequenos ajustes na instancia geral OperacaoEmAndamento
This commit is contained in:
parent
afc3f41b5f
commit
1e82065e91
|
|
@ -12,6 +12,8 @@ namespace AgroBase.Models
|
||||||
{
|
{
|
||||||
public class LivoxModel
|
public class LivoxModel
|
||||||
{
|
{
|
||||||
|
public DateTime Momento { get; set; }
|
||||||
|
|
||||||
public long timestamp { get; set; }
|
public long timestamp { get; set; }
|
||||||
public bool conectado { get; set; }
|
public bool conectado { get; set; }
|
||||||
public bool executando { get; set; }
|
public bool executando { get; set; }
|
||||||
|
|
@ -31,6 +33,7 @@ namespace AgroBase.Models
|
||||||
{
|
{
|
||||||
return new LivoxModel()
|
return new LivoxModel()
|
||||||
{
|
{
|
||||||
|
Momento = Momento,
|
||||||
timestamp = timestamp,
|
timestamp = timestamp,
|
||||||
conectado = conectado,
|
conectado = conectado,
|
||||||
executando = executando,
|
executando = executando,
|
||||||
|
|
|
||||||
|
|
@ -270,6 +270,8 @@ namespace AgroBase.Models.Modules
|
||||||
{
|
{
|
||||||
return new ModuloIMUModel
|
return new ModuloIMUModel
|
||||||
{
|
{
|
||||||
|
Momento = Momento,
|
||||||
|
|
||||||
valido = valido,
|
valido = valido,
|
||||||
modo = modo,
|
modo = modo,
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -61,39 +61,11 @@ namespace AgroBase.Models
|
||||||
public OperacaoSensoriamentoConjuntoModel Sensoriamento { get; set; } = new OperacaoSensoriamentoConjuntoModel();
|
public OperacaoSensoriamentoConjuntoModel Sensoriamento { get; set; } = new OperacaoSensoriamentoConjuntoModel();
|
||||||
public Form frmOperacao { get; set; }
|
public Form frmOperacao { get; set; }
|
||||||
|
|
||||||
#region STATUS DE CONTEXTO
|
|
||||||
//public StatusOperacao StatusAtual { get; private set; } = StatusOperacao.NaoIniciado;
|
|
||||||
//public StatusOperacao StatusAnterior { get; private set; } = StatusOperacao.NaoIniciado;
|
|
||||||
//public bool Emergencia { get; set; } = false;
|
|
||||||
//public bool Pausa { get; set; } = false;
|
|
||||||
//public bool OperacaoLiberada { get; private set; } = false;
|
|
||||||
//public bool OperacaoConfigurada { get; private set; } = false;
|
|
||||||
//public string ErroOperacaoLiberada { get; set; }
|
|
||||||
//public DateTime TempoAguardando { get; private set; } = DateTime.Now;
|
|
||||||
//public double TempoAguardandoSegs => (TempoAguardando.AddSeconds(TempoIniciarOperacao) - DateTime.Now).TotalSeconds;
|
|
||||||
//public bool Iniciado { get; set; }
|
|
||||||
//public bool Finalizando { get; set; } = false;
|
|
||||||
//public bool Calibrando { get; set; } = false;
|
|
||||||
//public DateTime DataInicio { get; set; } = DateTime.MinValue;
|
|
||||||
//public DateTime DataFim { get; set; } = DateTime.MinValue;
|
|
||||||
//public double TempoDecorridoSegs
|
|
||||||
//{
|
|
||||||
// get
|
|
||||||
// {
|
|
||||||
// return (StatusAtual == StatusOperacao.Parametrizando ? 0 : ((Variaveis.OperacaoEmAndamento.DataFim != DateTime.MinValue ? Variaveis.OperacaoEmAndamento.DataFim : DateTime.Now) - Variaveis.OperacaoEmAndamento.DataInicio).TotalSeconds);
|
|
||||||
// }
|
|
||||||
//}
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
|
|
||||||
public bool Treinando { get; set; } = false;
|
public bool Treinando { get; set; } = false;
|
||||||
public bool Simulando { get; set; } = false;
|
public bool Simulando { get; set; } = false;
|
||||||
public double SimulacaoAnguloControle { get; set; } = 0;
|
public double SimulacaoAnguloControle { get; set; } = 0;
|
||||||
public double SimulacaoRpmControle { get; set; } = 0;
|
public double SimulacaoRpmControle { get; set; } = 0;
|
||||||
|
|
||||||
//public Dictionary<T_Code, Dictionary<string, bool>> ModsCalibragem { get; set; } = new Dictionary<T_Code, Dictionary<string, bool>>();
|
|
||||||
//public List<OperacaoModulosMandatoriosModel> ModulosMandatorios { get; set; } = new List<OperacaoModulosMandatoriosModel>();
|
|
||||||
//public List<OperacaoParametrosMandatoriosModel> ParametrosMandatorios { get; set; } = new List<OperacaoParametrosMandatoriosModel>();
|
|
||||||
public int TempoIniciarOperacao { get; set; } = 10;
|
public int TempoIniciarOperacao { get; set; } = 10;
|
||||||
public string ID { get; set; }
|
public string ID { get; set; }
|
||||||
public double tmrLogsInterval
|
public double tmrLogsInterval
|
||||||
|
|
@ -233,8 +205,10 @@ namespace AgroBase.Models
|
||||||
if (Parametros.Modo == null) return (false, new List<string>());
|
if (Parametros.Modo == null) return (false, new List<string>());
|
||||||
|
|
||||||
CarregarParametrosOperacaoPadrao((ModoOperacao)Parametros.Modo, true);
|
CarregarParametrosOperacaoPadrao((ModoOperacao)Parametros.Modo, true);
|
||||||
|
op = Variaveis.OperacaoEmAndamento;
|
||||||
|
|
||||||
op.Parametros = Parametros;
|
op.Parametros = Parametros;
|
||||||
|
op.DefinirComponentesEmUso();
|
||||||
|
|
||||||
op.Descricao = Parametros.Descricao;
|
op.Descricao = Parametros.Descricao;
|
||||||
op.OprPath = opr_path;
|
op.OprPath = opr_path;
|
||||||
|
|
@ -955,44 +929,55 @@ namespace AgroBase.Models
|
||||||
p.ModulosMandatorios.Add(new OperacaoModulosMandatoriosModel() { Dispositivo = T_Code.Npc, Mandatorio = true, Utilizar = true });
|
p.ModulosMandatorios.Add(new OperacaoModulosMandatoriosModel() { Dispositivo = T_Code.Npc, Mandatorio = true, Utilizar = true });
|
||||||
p.ModulosMandatorios.Add(new OperacaoModulosMandatoriosModel() { Dispositivo = T_Code.Can, Mandatorio = true, Utilizar = true });
|
p.ModulosMandatorios.Add(new OperacaoModulosMandatoriosModel() { Dispositivo = T_Code.Can, Mandatorio = true, Utilizar = true });
|
||||||
p.ModulosMandatorios.Add(new OperacaoModulosMandatoriosModel() { Dispositivo = T_Code.Bat, Mandatorio = true, Utilizar = true });
|
p.ModulosMandatorios.Add(new OperacaoModulosMandatoriosModel() { Dispositivo = T_Code.Bat, Mandatorio = true, Utilizar = true });
|
||||||
p.ModulosMandatorios.ForEach(m => m.ComponentesEmUso = op?.PreencherComponentesEmUso(m.Dispositivo));
|
|
||||||
|
|
||||||
if (isagrobase)
|
if (isagrobase)
|
||||||
{
|
{
|
||||||
op.Parametros = p;
|
op.Parametros = p;
|
||||||
|
Variaveis.OperacaoEmAndamento = op;
|
||||||
|
p.ModulosMandatorios.ForEach(m => m.ComponentesEmUso = op?.PreencherComponentesEmUso(m.Dispositivo));
|
||||||
op.DefinirComponentesEmUso();
|
op.DefinirComponentesEmUso();
|
||||||
RedisService.AtualizarCampos(CtxKey.DadosOperacao, ("configurado", false));
|
RedisService.AtualizarCampos(CtxKey.DadosOperacao, ("configurado", false));
|
||||||
op.Sensoriamento.AtualizarDados();
|
op.Sensoriamento.AtualizarDados();
|
||||||
|
|
||||||
Variaveis.OperacaoEmAndamento = op;
|
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
p.ModulosMandatorios.ForEach(m => m.ComponentesEmUso = op?.PreencherComponentesEmUso(m.Dispositivo));
|
||||||
|
}
|
||||||
|
|
||||||
return p;
|
return p;
|
||||||
}
|
}
|
||||||
|
|
||||||
private Dictionary<string, (bool, bool)> PreencherComponentesEmUso(T_Code Modulo)
|
private Dictionary<string, (bool, bool)> PreencherComponentesEmUso(T_Code Modulo)
|
||||||
{
|
{
|
||||||
var op = Variaveis.OperacaoEmAndamento;
|
var op = this;
|
||||||
|
|
||||||
Dictionary<string, (bool, bool)> d = new Dictionary<string, (bool, bool)>();
|
Dictionary<string, (bool, bool)> d = new Dictionary<string, (bool, bool)>();
|
||||||
switch (Modulo)
|
switch (Modulo)
|
||||||
{
|
{
|
||||||
case T_Code.Mov:
|
case T_Code.Mov:
|
||||||
op.DispMvd?.Dados?.Modulos?.ForEach(m => d.Add(m.MovMotor.Mod_ID, (true, m.MovMotor.Comandar)));
|
if (op.DispMvd != null)
|
||||||
|
op.DispMvd?.Dados?.Modulos?.ForEach(m => d.Add(m.MovMotor.Mod_ID, (true, m.MovMotor.Comandar)));
|
||||||
break;
|
break;
|
||||||
case T_Code.Dir:
|
case T_Code.Dir:
|
||||||
op.DispMvd?.Dados?.Modulos?.ForEach(m => d.Add(m.DirMotor.Mod_ID, (true, m.DirMotor.Comandar)));
|
if (op.DispMvd != null)
|
||||||
|
op.DispMvd?.Dados?.Modulos?.ForEach(m => d.Add(m.DirMotor.Mod_ID, (true, m.DirMotor.Comandar)));
|
||||||
break;
|
break;
|
||||||
case T_Code.Atu:
|
case T_Code.Atu:
|
||||||
op.DispAtu?.Dados?.Sensores?.ForEach(s => d.Add(s.ID, (s.Mandatorio, s.Aferir)));
|
if (op.DispAtu != null)
|
||||||
op.DispAtu?.Dados?.BombasPressurizadoras?.ForEach(b => d.Add(b.ID, (b.Mandatorio, b.Comandar)));
|
{
|
||||||
op.DispAtu?.Dados?.BicosPulverizadores?.ForEach(b => d.Add(b.ID, (b.Mandatorio, b.Comandar)));
|
op.DispAtu?.Dados?.Sensores?.ForEach(s => d.Add(s.ID, (s.Mandatorio, s.Aferir)));
|
||||||
|
op.DispAtu?.Dados?.BombasPressurizadoras?.ForEach(b => d.Add(b.ID, (b.Mandatorio, b.Comandar)));
|
||||||
|
op.DispAtu?.Dados?.BicosPulverizadores?.ForEach(b => d.Add(b.ID, (b.Mandatorio, b.Comandar)));
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case T_Code.Sen:
|
case T_Code.Sen:
|
||||||
op.DispSen?.Dados?.Sensores?.ForEach(s => d.Add(s.ID, (s.Mandatorio, s.Aferir)));
|
if (op.DispSen != null)
|
||||||
op.DispSen?.Dados?.Sinaleiros?.ForEach(s => d.Add(s.ID, (s.Mandatorio, s.Controlar)));
|
{
|
||||||
op.DispSen?.Dados?.Servos?.ForEach(s => d.Add(s.ID, (s.Mandatorio, s.Controlar)));
|
op.DispSen?.Dados?.Sensores?.ForEach(s => d.Add(s.ID, (s.Mandatorio, s.Aferir)));
|
||||||
op.DispSen?.Dados?.Reles?.ForEach(r => d.Add(r.ID, (r.Mandatorio, r.Controlar)));
|
op.DispSen?.Dados?.Sinaleiros?.ForEach(s => d.Add(s.ID, (s.Mandatorio, s.Controlar)));
|
||||||
|
op.DispSen?.Dados?.Servos?.ForEach(s => d.Add(s.ID, (s.Mandatorio, s.Controlar)));
|
||||||
|
op.DispSen?.Dados?.Reles?.ForEach(r => d.Add(r.ID, (r.Mandatorio, r.Controlar)));
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
return d;
|
return d;
|
||||||
|
|
@ -1000,14 +985,15 @@ namespace AgroBase.Models
|
||||||
|
|
||||||
private void DefinirComponentesEmUso()
|
private void DefinirComponentesEmUso()
|
||||||
{
|
{
|
||||||
var op = Variaveis.OperacaoEmAndamento;
|
var op = this;
|
||||||
|
|
||||||
op.Parametros.ModulosMandatorios?.ForEach(m =>
|
op.Parametros.ModulosMandatorios?.ForEach(m =>
|
||||||
{
|
{
|
||||||
|
var comp = m.ComponentesEmUso ?? new Dictionary<string, (bool, bool)>();
|
||||||
switch (m.Dispositivo)
|
switch (m.Dispositivo)
|
||||||
{
|
{
|
||||||
case T_Code.Mov:
|
case T_Code.Mov:
|
||||||
foreach (var c in m.ComponentesEmUso)
|
foreach (var c in comp)
|
||||||
{
|
{
|
||||||
var d = op.DispMvd?.Dados?.Modulos?.FirstOrDefault(x => x?.MovMotor?.Mod_ID == c.Key)?.MovMotor;
|
var d = op.DispMvd?.Dados?.Modulos?.FirstOrDefault(x => x?.MovMotor?.Mod_ID == c.Key)?.MovMotor;
|
||||||
if (d != null)
|
if (d != null)
|
||||||
|
|
@ -1015,7 +1001,7 @@ namespace AgroBase.Models
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case T_Code.Dir:
|
case T_Code.Dir:
|
||||||
foreach (var c in m.ComponentesEmUso)
|
foreach (var c in comp)
|
||||||
{
|
{
|
||||||
var d = op.DispMvd?.Dados?.Modulos?.FirstOrDefault(x => x?.DirMotor?.Mod_ID == c.Key)?.DirMotor;
|
var d = op.DispMvd?.Dados?.Modulos?.FirstOrDefault(x => x?.DirMotor?.Mod_ID == c.Key)?.DirMotor;
|
||||||
if (d != null)
|
if (d != null)
|
||||||
|
|
@ -1024,7 +1010,7 @@ namespace AgroBase.Models
|
||||||
break;
|
break;
|
||||||
case T_Code.Atu:
|
case T_Code.Atu:
|
||||||
var da = op.DispAtu?.Dados;
|
var da = op.DispAtu?.Dados;
|
||||||
foreach (var c in m.ComponentesEmUso)
|
foreach (var c in comp)
|
||||||
{
|
{
|
||||||
var s = da?.Sensores?.FirstOrDefault(x => x.ID == c.Key);
|
var s = da?.Sensores?.FirstOrDefault(x => x.ID == c.Key);
|
||||||
if (s != null)
|
if (s != null)
|
||||||
|
|
@ -1051,7 +1037,7 @@ namespace AgroBase.Models
|
||||||
break;
|
break;
|
||||||
case T_Code.Sen:
|
case T_Code.Sen:
|
||||||
var ds = op.DispSen?.Dados;
|
var ds = op.DispSen?.Dados;
|
||||||
foreach (var c in m.ComponentesEmUso)
|
foreach (var c in comp)
|
||||||
{
|
{
|
||||||
var s = ds?.Sensores?.FirstOrDefault(x => x.ID == c.Key);
|
var s = ds?.Sensores?.FirstOrDefault(x => x.ID == c.Key);
|
||||||
if (s != null)
|
if (s != null)
|
||||||
|
|
@ -1091,9 +1077,8 @@ namespace AgroBase.Models
|
||||||
{
|
{
|
||||||
if (Parametros.Modo == null) return (false, new List<string>());
|
if (Parametros.Modo == null) return (false, new List<string>());
|
||||||
|
|
||||||
var op = Variaveis.OperacaoEmAndamento;
|
|
||||||
|
|
||||||
CarregarParametrosOperacaoPadrao((ModoOperacao)Parametros.Modo, true);
|
CarregarParametrosOperacaoPadrao((ModoOperacao)Parametros.Modo, true);
|
||||||
|
var op = Variaveis.OperacaoEmAndamento;
|
||||||
|
|
||||||
op.Descricao = Parametros.Descricao;
|
op.Descricao = Parametros.Descricao;
|
||||||
op.OprPath = $"Base ({VariaveisEquipamento.Parametros.base_ip})";
|
op.OprPath = $"Base ({VariaveisEquipamento.Parametros.base_ip})";
|
||||||
|
|
@ -1110,6 +1095,8 @@ namespace AgroBase.Models
|
||||||
p.ModulosMandatorios = Parametros.ModulosMandatorios;
|
p.ModulosMandatorios = Parametros.ModulosMandatorios;
|
||||||
p.ParametrosMandatorios = Parametros.ParametrosMandatorios;
|
p.ParametrosMandatorios = Parametros.ParametrosMandatorios;
|
||||||
|
|
||||||
|
op.DefinirComponentesEmUso();
|
||||||
|
|
||||||
List<string> ruasSelecionadas = Parametros.RuasPercorrer ?? new List<string>();
|
List<string> ruasSelecionadas = Parametros.RuasPercorrer ?? new List<string>();
|
||||||
if (Parametros.Mapa != null)
|
if (Parametros.Mapa != null)
|
||||||
{
|
{
|
||||||
|
|
@ -1243,8 +1230,30 @@ namespace AgroBase.Models
|
||||||
if (op.Sensoriamento.Operacao.Calibrando) return;
|
if (op.Sensoriamento.Operacao.Calibrando) return;
|
||||||
|
|
||||||
var modsCalibragem = op.Sensoriamento.Operacao.ModsCalibragem;
|
var modsCalibragem = op.Sensoriamento.Operacao.ModsCalibragem;
|
||||||
|
if (modsCalibragem == null)
|
||||||
|
{
|
||||||
|
modsCalibragem = new Dictionary<T_Code, Dictionary<string, bool>>();
|
||||||
|
op.Sensoriamento.Operacao.ModsCalibragem = modsCalibragem;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!modsCalibragem.ContainsKey(T_Code.Mov))
|
||||||
|
modsCalibragem[T_Code.Mov] = new Dictionary<string, bool>();
|
||||||
|
|
||||||
|
if (!modsCalibragem.ContainsKey(T_Code.Dir))
|
||||||
|
modsCalibragem[T_Code.Dir] = new Dictionary<string, bool>();
|
||||||
|
|
||||||
|
if (!modsCalibragem.ContainsKey(T_Code.Atu))
|
||||||
|
modsCalibragem[T_Code.Atu] = new Dictionary<string, bool>();
|
||||||
|
|
||||||
|
bool modsCalibrados =
|
||||||
|
modsCalibragem != null &&
|
||||||
|
modsCalibragem.Any() &&
|
||||||
|
modsCalibragem.All(x =>
|
||||||
|
x.Value != null &&
|
||||||
|
x.Value.Values.Count > 0 &&
|
||||||
|
x.Value.Values.All(y => y == true)
|
||||||
|
);
|
||||||
|
|
||||||
bool modsCalibrados = modsCalibragem.All(x => x.Value.Values.Count > 0 && x.Value.Values.All(y => y == true));
|
|
||||||
if (!forcar && modsCalibrados)
|
if (!forcar && modsCalibrados)
|
||||||
{
|
{
|
||||||
op.Sensoriamento.InserirLog(T_Code.Mod, StatusModulo.Operante, 100, "Todos os módulos já foram calibrados anteriormente, não irá calibrar novamente.");
|
op.Sensoriamento.InserirLog(T_Code.Mod, StatusModulo.Operante, 100, "Todos os módulos já foram calibrados anteriormente, não irá calibrar novamente.");
|
||||||
|
|
@ -2827,27 +2836,6 @@ namespace AgroBase.Models
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void SalvarLog<T>(string Arquivo, T Objeto, bool Fim)
|
|
||||||
{
|
|
||||||
var Caminho = Variaveis.CaminhoOperacoes + Variaveis.OperacaoEmAndamento.ID;
|
|
||||||
if (!Directory.Exists(Caminho))
|
|
||||||
{
|
|
||||||
Directory.CreateDirectory(Caminho);
|
|
||||||
}
|
|
||||||
|
|
||||||
Caminho += "/" + Arquivo + ".json";
|
|
||||||
string jsonLog = JsonConvert.SerializeObject(Objeto, Formatting.None);
|
|
||||||
|
|
||||||
if (!File.Exists(Caminho))
|
|
||||||
{
|
|
||||||
File.WriteAllText(Caminho, "[" + jsonLog);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
File.AppendAllText(Caminho, "," + jsonLog + (Fim ? "]" : ""));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void SalvarLogCameraSolo()
|
private void SalvarLogCameraSolo()
|
||||||
{
|
{
|
||||||
var cameras = CameraWorkerService.CamerasSolo.ToList();
|
var cameras = CameraWorkerService.CamerasSolo.ToList();
|
||||||
|
|
@ -3146,6 +3134,7 @@ namespace AgroBase.Models
|
||||||
|
|
||||||
public class OperacaoControleModel
|
public class OperacaoControleModel
|
||||||
{
|
{
|
||||||
|
public DateTime Momento { get; set; }
|
||||||
public double Angulo { get; set; }
|
public double Angulo { get; set; }
|
||||||
public int heartbeat { get; set; } = 1;
|
public int heartbeat { get; set; } = 1;
|
||||||
public DateTime ticks_sem_resposta { get; set; } = DateTime.MinValue;
|
public DateTime ticks_sem_resposta { get; set; } = DateTime.MinValue;
|
||||||
|
|
@ -3257,23 +3246,37 @@ namespace AgroBase.Models
|
||||||
|
|
||||||
public OperacaoControleModel Clone()
|
public OperacaoControleModel Clone()
|
||||||
{
|
{
|
||||||
return new OperacaoControleModel()
|
var clone = new OperacaoControleModel()
|
||||||
{
|
{
|
||||||
|
Momento = Momento,
|
||||||
|
|
||||||
Angulo = Angulo,
|
Angulo = Angulo,
|
||||||
PercentualVelocidadeSP = PercentualVelocidadeSP,
|
PercentualVelocidadeSP = PercentualVelocidadeSP,
|
||||||
_tipoMovimento = _tipoMovimento,
|
|
||||||
TipoMovimento = TipoMovimento,
|
|
||||||
TiposControle = new List<OperacaoControleTipoModel>(TiposControle),
|
|
||||||
SimulacaoMPC = new List<MPCSimulacaoModel>(SimulacaoMPC),
|
|
||||||
AlturaBarra = AlturaBarra,
|
AlturaBarra = AlturaBarra,
|
||||||
heartbeat = heartbeat,
|
heartbeat = heartbeat,
|
||||||
ticks_sem_resposta = ticks_sem_resposta,
|
ticks_sem_resposta = ticks_sem_resposta,
|
||||||
Latencia = Latencia,
|
Latencia = Latencia,
|
||||||
EmFreio = EmFreio,
|
EmFreio = EmFreio,
|
||||||
ErroLateral = ErroLateral,
|
ErroLateral = ErroLateral,
|
||||||
|
TiposControle = TiposControle?.Select(x => new OperacaoControleTipoModel()
|
||||||
|
{
|
||||||
|
Tipo = x.Tipo,
|
||||||
|
DelayEnvioComandoBase = x.DelayEnvioComandoBase,
|
||||||
|
DelayEnvioComando = x.DelayEnvioComando,
|
||||||
|
DelayEnvioComandoExtra = x.DelayEnvioComandoExtra,
|
||||||
|
UltimoComando = x.UltimoComando,
|
||||||
|
Comandos = new List<string>(x.Comandos ?? new List<string>()),
|
||||||
|
DirecaoAtual = x.DirecaoAtual,
|
||||||
|
UltimaDirecao = x.UltimaDirecao
|
||||||
|
}).ToList() ?? new List<OperacaoControleTipoModel>(),
|
||||||
|
SimulacaoMPC = new List<MPCSimulacaoModel>(SimulacaoMPC ?? new List<MPCSimulacaoModel>()),
|
||||||
DebugCustoMpc = new Dictionary<string, ManagerWorkerMessageResponseDebugCustoModel>(DebugCustoMpc ?? new Dictionary<string, ManagerWorkerMessageResponseDebugCustoModel>()),
|
DebugCustoMpc = new Dictionary<string, ManagerWorkerMessageResponseDebugCustoModel>(DebugCustoMpc ?? new Dictionary<string, ManagerWorkerMessageResponseDebugCustoModel>()),
|
||||||
Motivos = new List<string>(Motivos ?? new List<string>())
|
Motivos = new List<string>(Motivos ?? new List<string>())
|
||||||
};
|
};
|
||||||
|
|
||||||
|
clone._tipoMovimento = _tipoMovimento;
|
||||||
|
|
||||||
|
return clone;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -3356,6 +3359,18 @@ namespace AgroBase.Models
|
||||||
var op = Variaveis.OperacaoEmAndamento;
|
var op = Variaveis.OperacaoEmAndamento;
|
||||||
op.Controle.Motivos = RedisService.GetField<List<string>>(CtxKey.DadosControle, "motivos", new List<string>());
|
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;
|
||||||
|
|
||||||
|
tempoDecorridoSeg = Math.Max(0, (fim - Operacao.DataInicio).TotalSeconds);
|
||||||
|
}
|
||||||
|
|
||||||
var operacaoAtualizada = new OperacaoSensoriamentoLogModel()
|
var operacaoAtualizada = new OperacaoSensoriamentoLogModel()
|
||||||
{
|
{
|
||||||
Momento = agora,
|
Momento = agora,
|
||||||
|
|
@ -3370,7 +3385,7 @@ namespace AgroBase.Models
|
||||||
Finalizando = Operacao.Finalizando,
|
Finalizando = Operacao.Finalizando,
|
||||||
DataInicio = Operacao.DataInicio,
|
DataInicio = Operacao.DataInicio,
|
||||||
DataFim = Operacao.DataFim,
|
DataFim = Operacao.DataFim,
|
||||||
TempoDecorridoSeg = Operacao.TempoDecorridoSeg,
|
TempoDecorridoSeg = tempoDecorridoSeg,
|
||||||
TipoCanAtivo = CanManager.TipoServico,
|
TipoCanAtivo = CanManager.TipoServico,
|
||||||
|
|
||||||
OperacaoLiberada = RedisService.GetField(CtxKey.DadosOperacao, "liberado", false),
|
OperacaoLiberada = RedisService.GetField(CtxKey.DadosOperacao, "liberado", false),
|
||||||
|
|
@ -4292,24 +4307,40 @@ namespace AgroBase.Models
|
||||||
public ModuloIMUModel IMU { get; set; } = new ModuloIMUModel();
|
public ModuloIMUModel IMU { get; set; } = new ModuloIMUModel();
|
||||||
public void AtualizarImu(DateTime agora)
|
public void AtualizarImu(DateTime agora)
|
||||||
{
|
{
|
||||||
string imu = RedisService.Get(RedisService.ModKey(T_Code.Imu)) ?? "";
|
try
|
||||||
var sIMU = JsonConvert.DeserializeObject<ModuloIMUModel>(imu);
|
{
|
||||||
sIMU.Momento = agora;
|
string imu = RedisService.Get(RedisService.ModKey(T_Code.Imu)) ?? "";
|
||||||
IMU = sIMU;
|
var sIMU = JsonConvert.DeserializeObject<ModuloIMUModel>(imu) ?? new ModuloIMUModel();
|
||||||
|
|
||||||
|
sIMU.Momento = agora;
|
||||||
|
IMU = sIMU;
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
IMU = new ModuloIMUModel()
|
||||||
|
{
|
||||||
|
Momento = agora
|
||||||
|
};
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Gps
|
// Gps
|
||||||
public GPSModel Gps { get; set; } = new GPSModel();
|
public GPSModel Gps { get; set; } = new GPSModel();
|
||||||
public void AtualizarGps(DateTime agora)
|
public void AtualizarGps(DateTime agora)
|
||||||
{
|
{
|
||||||
Gps = GPSService.GetSnapshot();
|
Gps = GPSService.GetSnapshot() ?? new GPSModel();
|
||||||
|
Gps.Momento = agora;
|
||||||
|
|
||||||
|
if (VariaveisOperacao.PosicaoBase != null)
|
||||||
|
VariaveisOperacao.PosicaoBase.Momento = agora;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Lvx
|
// Lvx
|
||||||
public LivoxModel LivoxLidar { get; set; } = new LivoxModel();
|
public LivoxModel LivoxLidar { get; set; } = new LivoxModel();
|
||||||
public void AtualizarLivox(DateTime agora)
|
public void AtualizarLivox(DateTime agora)
|
||||||
{
|
{
|
||||||
LivoxLidar = LivoxManagerProcess.DadosLeitura?.Clone();
|
LivoxLidar = LivoxManagerProcess.DadosLeitura?.Clone() ?? new LivoxModel();
|
||||||
|
LivoxLidar.Momento = agora;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Bat
|
// Bat
|
||||||
|
|
@ -4526,7 +4557,8 @@ namespace AgroBase.Models
|
||||||
var dadosVisualWorker = OperadorVisual?.Clone();
|
var dadosVisualWorker = OperadorVisual?.Clone();
|
||||||
var dadosHealthWorker = OperadorSaude?.Clone();
|
var dadosHealthWorker = OperadorSaude?.Clone();
|
||||||
var dadosLivox = LivoxLidar?.Clone();
|
var dadosLivox = LivoxLidar?.Clone();
|
||||||
var dadosCooler = _Cooler?.GetResumo();
|
var dadosCooler = _Cooler?.GetResumo(agora);
|
||||||
|
op.Controle.Momento = agora;
|
||||||
|
|
||||||
OperacaoSensoriamentoConjuntoModel dadosAtualizados = new OperacaoSensoriamentoConjuntoModel()
|
OperacaoSensoriamentoConjuntoModel dadosAtualizados = new OperacaoSensoriamentoConjuntoModel()
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -163,10 +163,11 @@ namespace AgroBase.Services
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public CoolerControlDataModel GetResumo()
|
public CoolerControlDataModel GetResumo(DateTime agora)
|
||||||
{
|
{
|
||||||
return new CoolerControlDataModel()
|
return new CoolerControlDataModel()
|
||||||
{
|
{
|
||||||
|
Momento = agora,
|
||||||
Modo = ModoAtual,
|
Modo = ModoAtual,
|
||||||
UltimaMudanca = UltimaMudancaModo,
|
UltimaMudanca = UltimaMudancaModo,
|
||||||
TemperaturaLigar = TempOn,
|
TemperaturaLigar = TempOn,
|
||||||
|
|
@ -191,6 +192,7 @@ namespace AgroBase.Services
|
||||||
|
|
||||||
public class CoolerControlDataModel
|
public class CoolerControlDataModel
|
||||||
{
|
{
|
||||||
|
public DateTime Momento { get; set; }
|
||||||
public CoolerMode Modo { get; set; }
|
public CoolerMode Modo { get; set; }
|
||||||
public DateTime UltimaMudanca { get; set; }
|
public DateTime UltimaMudanca { get; set; }
|
||||||
public double TemperaturaLigar { get; set; }
|
public double TemperaturaLigar { get; set; }
|
||||||
|
|
@ -206,6 +208,7 @@ namespace AgroBase.Services
|
||||||
{
|
{
|
||||||
return new CoolerControlDataModel()
|
return new CoolerControlDataModel()
|
||||||
{
|
{
|
||||||
|
Momento = Momento,
|
||||||
Modo = Modo,
|
Modo = Modo,
|
||||||
UltimaMudanca = UltimaMudanca,
|
UltimaMudanca = UltimaMudanca,
|
||||||
TemperaturaLigar = TemperaturaLigar,
|
TemperaturaLigar = TemperaturaLigar,
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue