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