diff --git a/MP.Data/Services/IOC/IIocService.cs b/MP.Data/Services/IOC/IIocService.cs index f1376610..3f3b48a0 100644 --- a/MP.Data/Services/IOC/IIocService.cs +++ b/MP.Data/Services/IOC/IIocService.cs @@ -31,6 +31,13 @@ namespace MP.Data.Services.IOC /// Task EvListMicroStatoInsertAsync(MicroStatoMacchinaModel newRecMsm, EventListModel newRecEv); + /// + /// Restituisce il valOut booleano se la macchina sia abilitata all'input + /// + /// + /// + Task IobInsEnabAsync(string idxMacchina); + /// /// Aggiornamento record Microstato macchina /// @@ -49,6 +56,14 @@ namespace MP.Data.Services.IOC /// Task ProcessInputAsync(string idxMacchina, string valore, string dtEve, string dtCurr, string contatore); + /// + /// scrive un evento di keepalive sulla tabella + /// + /// + /// + /// + Task ScriviKeepAliveAsync(string IdxMacchina, DateTime oraMacchina); + #endregion Public Methods } } \ No newline at end of file diff --git a/MP.Data/Services/IOC/IocService.cs b/MP.Data/Services/IOC/IocService.cs index cce02490..8c5b9407 100644 --- a/MP.Data/Services/IOC/IocService.cs +++ b/MP.Data/Services/IOC/IocService.cs @@ -43,37 +43,6 @@ namespace MP.Data.Services.IOC return success; } - /// - /// Elenco completo config da DB - /// - /// - public async Task> ConfigGetAllAsync() - { - List? result = new List(); - // cerco in redis... - RedisValue rawData = await _redisDb.StringGetAsync(MP.Data.Utils.redisConfKey); - string source = "DB"; - if (!string.IsNullOrEmpty($"{rawData}")) - { - result = JsonConvert.DeserializeObject>($"{rawData}"); - source = "REDIS"; - } - else - { - result = await _repo.ConfigGetAllAsync(); - //result = await Task.FromResult(SpecDbController.ConfigGetAllAsync()); - // serializzo e salvo... - rawData = JsonConvert.SerializeObject(result); - await _redisDb.StringSetAsync(MP.Data.Utils.redisConfKey, rawData, getRandTOut(redisLongTimeCache)); - } - Log.Debug($"ConfigGetAllAsync Read from {source}"); - if (result == null) - { - result = new List(); - } - return result; - } - /// public async Task EvListMicroStatoInsertAsync(MicroStatoMacchinaModel newRecMsm, EventListModel newRecEv) { @@ -81,64 +50,20 @@ namespace MP.Data.Services.IOC return success; } - /// - /// Restituisce il valOut booleano se la macchina sia abilitata all'inserimento COMPLETO nel - /// Signal Log - /// - /// - /// - public async Task IobSLogEnabAsync(string idxMacchina) + /// + public async Task IobInsEnabAsync(string idxMacchina) { - bool answ = false; - // ORA recupero da memoria redis... - try - { - var currHash = MP.Data.Utils.RedKeyDatiMacc(idxMacchina, MpIoNS); - RedisValue rawData = await _redisDb.HashGetAsync(currHash, (RedisValue)"sLogEnabled"); - // se è vuoto... leggo da DB e popolo! - if (!rawData.HasValue) - { - await ResetDatiMacchinaAsync(idxMacchina); - // riprovo - rawData = await _redisDb.HashGetAsync(currHash, (RedisValue)"sLogEnabled"); - } + var key = MP.Data.Utils.RedKeyDatiMacc(idxMacchina, MpIoNS); - // provo conversione - bool.TryParse($"{rawData}", out answ); - } - catch (Exception exc) - { - Log.Error($"Errore IobSLogEnabAsync | idxMacchina {idxMacchina}:{Environment.NewLine}{exc}"); - } - return answ; - } + string? val = await _redisDb.HashGetAsync(key, "insEnabled"); - /// - /// Elenco completo valori Macchine 2 Slave - /// - /// - public async Task> Macchine2SlaveGetAllAsync() - { - List? result = new List(); - string currKey = $"{MP.Data.Utils.redisBaseAddr}:M2STab"; - // cerco in redis dato valOut sel macchina... - RedisValue rawData = await _redisDb.StringGetAsync(currKey); - if (rawData.HasValue) + if (val == null) { - result = JsonConvert.DeserializeObject>($"{rawData}"); + var data = await ResetDatiMacchinaAsync(idxMacchina); + data.TryGetValue("insEnabled", out val); } - else - { - result = await _repo.Macchine2SlaveAsync(); - // serializzo e salvo... - rawData = JsonConvert.SerializeObject(result); - await _redisDb.StringSetAsync(currKey, rawData, getRandTOut(redisLongTimeCache * 10)); - } - if (result == null) - { - result = new List(); - } - return result; + + return val != null && (val == "1" || val.ToLower() == "true"); } /// @@ -205,12 +130,7 @@ namespace MP.Data.Services.IOC return answ; } - /// - /// scrive un evento di keepalive sulla tabella - /// - /// - /// - /// + /// public async Task ScriviKeepAliveAsync(string IdxMacchina, DateTime oraMacchina) { // cerco se ho keep alive in redis, @@ -371,6 +291,37 @@ namespace MP.Data.Services.IOC return answ; } + /// + /// Elenco completo config da DB + /// + /// + private async Task> ConfigGetAllAsync() + { + List? result = new List(); + // cerco in redis... + RedisValue rawData = await _redisDb.StringGetAsync(MP.Data.Utils.redisConfKey); + string source = "DB"; + if (!string.IsNullOrEmpty($"{rawData}")) + { + result = JsonConvert.DeserializeObject>($"{rawData}"); + source = "REDIS"; + } + else + { + result = await _repo.ConfigGetAllAsync(); + //result = await Task.FromResult(SpecDbController.ConfigGetAllAsync()); + // serializzo e salvo... + rawData = JsonConvert.SerializeObject(result); + await _redisDb.StringSetAsync(MP.Data.Utils.redisConfKey, rawData, getRandTOut(redisLongTimeCache)); + } + Log.Debug($"ConfigGetAllAsync Read from {source}"); + if (result == null) + { + result = new List(); + } + return result; + } + /// /// Helper standardizzazione valOut dataora ricevuto da IOB remoti /// @@ -381,6 +332,38 @@ namespace MP.Data.Services.IOC return s?.Length > 17 ? s[..17] : s?.PadRight(17, '0') ?? string.Empty; } + /// + /// Restituisce il valOut booleano se la macchina sia abilitata all'inserimento COMPLETO nel + /// Signal Log + /// + /// + /// + private async Task IobSLogEnabAsync(string idxMacchina) + { + bool answ = false; + // ORA recupero da memoria redis... + try + { + var currHash = MP.Data.Utils.RedKeyDatiMacc(idxMacchina, MpIoNS); + RedisValue rawData = await _redisDb.HashGetAsync(currHash, (RedisValue)"sLogEnabled"); + // se è vuoto... leggo da DB e popolo! + if (!rawData.HasValue) + { + await ResetDatiMacchinaAsync(idxMacchina); + // riprovo + rawData = await _redisDb.HashGetAsync(currHash, (RedisValue)"sLogEnabled"); + } + + // provo conversione + bool.TryParse($"{rawData}", out answ); + } + catch (Exception exc) + { + Log.Error($"Errore IobSLogEnabAsync | idxMacchina {idxMacchina}:{Environment.NewLine}{exc}"); + } + return answ; + } + /// /// Restituisce il valOut booleano se la macchina sia di tipo MULTI (con più state machine x INGRESSI) /// usando dati macchina in cache per evitare lookup ridondanti @@ -442,6 +425,34 @@ namespace MP.Data.Services.IOC return result; } + /// + /// Elenco completo valori Macchine 2 Slave + /// + /// + private async Task> Macchine2SlaveGetAllAsync() + { + List? result = new List(); + string currKey = $"{MP.Data.Utils.redisBaseAddr}:M2STab"; + // cerco in redis dato valOut sel macchina... + RedisValue rawData = await _redisDb.StringGetAsync(currKey); + if (rawData.HasValue) + { + result = JsonConvert.DeserializeObject>($"{rawData}"); + } + else + { + result = await _repo.Macchine2SlaveAsync(); + // serializzo e salvo... + rawData = JsonConvert.SerializeObject(result); + await _redisDb.StringSetAsync(currKey, rawData, getRandTOut(redisLongTimeCache * 10)); + } + if (result == null) + { + result = new List(); + } + return result; + } + /// /// Restitusice elenco KVP dei campi DatiMacchine + StatoMacchine per l'impianto indicato /// diff --git a/MP.IOC/Controllers/IOBController.cs b/MP.IOC/Controllers/IOBController.cs index 563f5cca..a15d6427 100644 --- a/MP.IOC/Controllers/IOBController.cs +++ b/MP.IOC/Controllers/IOBController.cs @@ -98,7 +98,8 @@ namespace MP.IOC.Controllers try { // Il metodo ora restituisce direttamente il booleano logico - bool isEnabled = await DService.IobInsEnabAsync(id); + bool isEnabled = await IOCService.IobInsEnabAsync(id); + //bool isEnabled = await DService.IobInsEnabAsync(id); return isEnabled ? Ok("OK") diff --git a/MP.IOC/MP.IOC.csproj b/MP.IOC/MP.IOC.csproj index 0d8916eb..028a2a46 100644 --- a/MP.IOC/MP.IOC.csproj +++ b/MP.IOC/MP.IOC.csproj @@ -4,7 +4,7 @@ net8.0 enable enable - 8.16.2604.3017 + 8.16.2604.3018 diff --git a/MP.IOC/Resources/ChangeLog.html b/MP.IOC/Resources/ChangeLog.html index d84fdcbc..7d6890c5 100644 --- a/MP.IOC/Resources/ChangeLog.html +++ b/MP.IOC/Resources/ChangeLog.html @@ -1,6 +1,6 @@ Modulo MP-IOC -

Versione: 8.16.2604.3017

+

Versione: 8.16.2604.3018


Note di rilascio:
  • diff --git a/MP.IOC/Resources/VersNum.txt b/MP.IOC/Resources/VersNum.txt index 291a80f5..ab00c4c9 100644 --- a/MP.IOC/Resources/VersNum.txt +++ b/MP.IOC/Resources/VersNum.txt @@ -1 +1 @@ -8.16.2604.3017 +8.16.2604.3018 diff --git a/MP.IOC/Resources/manifest.xml b/MP.IOC/Resources/manifest.xml index e80112ee..eb4e55e3 100644 --- a/MP.IOC/Resources/manifest.xml +++ b/MP.IOC/Resources/manifest.xml @@ -1,6 +1,6 @@ - 8.16.2604.3017 + 8.16.2604.3018 https://nexus.steamware.net/repository/SWS/MP-IOC/stable/LAST/MP.IOC.zip https://nexus.steamware.net/repository/SWS/MP-IOC/stable/LAST/ChangeLog.html false