ancora rimozione chaimate async

This commit is contained in:
Samuele Locatelli
2026-04-18 14:54:25 +02:00
parent d470352dcd
commit 4c117d274a
6 changed files with 18 additions and 185 deletions
+5 -11
View File
@@ -62,7 +62,7 @@ namespace MP.IOC.Controllers
/// <param name="id"></param>
/// <returns></returns>
[HttpGet("DatiMacc")]
public string DatiMacc(string id)
public async Task<string> DatiMacc(string id)
{
string answ = "ND";
Stopwatch stopWatch = new Stopwatch();
@@ -77,8 +77,7 @@ namespace MP.IOC.Controllers
answ = "";
try
{
Dictionary<string, string> valori = DService.mDatiMacchine(id);
//Dictionary<string, string> valori = DService.ResetDatiMacchina(id);
Dictionary<string, string> valori = await DService.mDatiMacchineAsync(id);
foreach (var item in valori)
{
answ += $"{item.Key}|{item.Value}{Environment.NewLine}";
@@ -154,7 +153,7 @@ namespace MP.IOC.Controllers
/// <param name="id"></param>
/// <returns></returns>
[HttpGet("InsEnab")]
public string InsEnab(string id)
public async Task<string> InsEnab(string id)
{
string answ = "ND";
Stopwatch stopWatch = new Stopwatch();
@@ -167,13 +166,8 @@ namespace MP.IOC.Controllers
else
{
// recupero microstato macchina da chiave relativa
answ = "";
try
{
answ += $"Macchina {id}, insEnabled {DService.IobInsEnab(id)}{Environment.NewLine}";
}
catch
{ }
var insEnab = await DService.IobInsEnabAsync(id);
answ = $"Macchina {id}, insEnabled {insEnab}{Environment.NewLine}";
}
stopWatch.Stop();
// Get the elapsed time as a TimeSpan value.
+9 -170
View File
@@ -1703,17 +1703,6 @@ namespace MP.IOC.Data
return mongoController.InitRecipe(confPath, idxPODL, CalcArgs);
}
/// <summary>
/// Restituisce il valore booleano se la macchina sia abilitata all'input
/// </summary>
/// <param name="idxMacchina"></param>
/// <returns></returns>
public bool IobInsEnab(string idxMacchina)
{
bool answ = Convert.ToBoolean(mDatiMacchinaVal(idxMacchina, "insEnabled"));
return answ;
}
/// <summary>
/// Restituisce il valore booleano se la macchina sia abilitata all'input
/// </summary>
@@ -1723,18 +1712,14 @@ namespace MP.IOC.Data
{
var key = Utils.RedKeyDatiMacc(idxMacchina, MpIoNS);
// 1. Tentativo ottimizzato: leggiamo solo il campo che ci serve
// Supponendo che tu usi StackExchange.Redis direttamente o un wrapper
string? val = await redisDb.HashGetAsync(key, "insEnabled");
// 2. Se non c'è in cache, carichiamo/resettiamo tutto
if (val == null)
{
var data = await ResetDatiMacchinaAsync(idxMacchina);
data.TryGetValue("insEnabled", out val);
}
// 3. Parsing sicuro
return val != null && (val == "1" || val.ToLower() == "true");
}
@@ -2230,6 +2215,7 @@ namespace MP.IOC.Data
return answ;
}
#if false
/// <summary>
/// Restituisce valore di una singola chiave del dizionario DatiMacchina
/// </summary>
@@ -2273,6 +2259,7 @@ namespace MP.IOC.Data
}
return answ;
}
#endif
/// <summary>
/// Restitusice elenco KVP dei campi DatiMacchine + StatoMacchine per l'impianto indicato
@@ -4822,6 +4809,7 @@ namespace MP.IOC.Data
stopWatch.Start();
string readType = "DB";
var dbResults = IocDbController.VMSFDGetByMacc(idxMacc);
double numSecCache = redisLongTimeCache;
// converto in formato dizionario...
if (dbResults != null && dbResults.Count > 0)
{
@@ -4853,6 +4841,8 @@ namespace MP.IOC.Data
result.Add("IdxFamMacc", $"{rowResult.IdxFamiglia}");
result.Add("simplePallet", $"{rowResult.SimplePallet}");
result.Add("palletChange", $"{rowResult.PalletChange}");
//double numSecCache = ((result["insEnabled"].ToLower() == "true") ? redisShortTimeCache : redisLongTimeCache);
numSecCache = rowResult.InsEnabled ? redisShortTimeCache : redisLongTimeCache;
}
// cerco info Master/slave...
var m2sTab = Macchine2SlaveGetAll();
@@ -4861,8 +4851,6 @@ namespace MP.IOC.Data
result.Add("Master", isMaster);
result.Add("Slave", isSlave);
// durata cache in secondi dal valore insEnabled...
double numSecCache = ((result["insEnabled"].ToLower() == "true") ? redisShortTimeCache : redisLongTimeCache);
// ...e salvo...
RedisSetHashDict(currHash, result, numSecCache);
@@ -4890,6 +4878,7 @@ namespace MP.IOC.Data
Dictionary<string, string>? result = new Dictionary<string, string>();
var dbResult = await IocDbController.VMSFDGetByMaccAsync(idxMacc);
double numSecCache = redisLongTimeCache;
// converto in formato dizionario...
if (dbResult != null)
{ // salvo 1:1 i valori... STATO
@@ -4919,6 +4908,9 @@ namespace MP.IOC.Data
result.Add("IdxFamMacc", $"{dbResult.IdxFamiglia}");
result.Add("simplePallet", $"{dbResult.SimplePallet}");
result.Add("palletChange", $"{dbResult.PalletChange}");
// durata cache in secondi dal valore insEnabled...
//double numSecCache = ((result["insEnabled"].ToLower() == "true") ? redisShortTimeCache : redisLongTimeCache);
numSecCache = dbResult.InsEnabled ? redisShortTimeCache : redisLongTimeCache;
}
// cerco info Master/slave...
var m2sTab = await Macchine2SlaveGetAllAsync();
@@ -4927,8 +4919,6 @@ namespace MP.IOC.Data
result.Add("Master", isMaster);
result.Add("Slave", isSlave);
// durata cache in secondi dal valore insEnabled...
double numSecCache = ((result["insEnabled"].ToLower() == "true") ? redisShortTimeCache : redisLongTimeCache);
// ...e salvo...
await RedisSetHashDictAsync(currHash, result, numSecCache);
@@ -5189,157 +5179,6 @@ namespace MP.IOC.Data
return RedisGetHashField(currHash, field);
}
#if false
/// <summary>
/// controlla se da il segnale di "microstato" deriva un evento da generare - modalità OFFLINE
/// </summary>
/// <param name="idxMacchina">idx macchina</param>
/// <param name="valore">valore ingresso</param>
/// <param name="dtEve">data-ora evento (server)</param>
/// <returns></returns>
public inputComandoMapo checkMicroStato(string idxMacchina, string valore, DateTime dtEve)
{
if (cMemLayer.CRI("_logLevel") > 6)
{
Log.Info(string.Format("{2}---------------------------{2}Richiesta verifica INPUT per Macchina {0}, seriale {1}", idxMacchina, valore, Environment.NewLine), tipoLog.INFO);
}
// formatto output
inputComandoMapo answ = new inputComandoMapo();
DS_applicazione.TransizioneIngressiDataTable TabTransIn;
DS_applicazione.TransizioneIngressiRow rigaTransIn = null;
// verifico se esista la macchina altrimenti la creo...
verificaIdxMacchina(idxMacchina);
string CodArticolo = "";
// recupero CodArticolo corretto
try
{
// 2017.07.10 forzo init x errori "sovrapposizioni"
taDatiMacchine = new DS_ProdTempiTableAdapters.DatiMacchineTableAdapter();
CodArticolo = taDatiMacchine.getByIdx(idxMacchina)[0].CodArticolo_A;
}
catch (Exception exc)
{
Log.Info(string.Format("[ChkMiSt_4b] - Eccezione in recupero CodArticolo:{0}{1}", Environment.NewLine, exc), tipoLog.EXCEPTION);
}
// recupero next microstato
//int? valINT = Convert.ToInt32(valore);
int? valINT = 0;
try
{
// 2017.06.09 forzo init x errori "sovrapposizioni"
MapoDbObj.taTransIngr = new DS_applicazioneTableAdapters.TransizioneIngressiTableAdapter();
valINT = int.Parse(valore, System.Globalization.NumberStyles.HexNumber);
TabTransIn = MapoDbObj.taTransIngr.getByIdxMacchinaValore(idxMacchina, valINT);
if (TabTransIn.Rows.Count > 0)
{
rigaTransIn = TabTransIn[0];
}
}
catch (Exception exc)
{
Log.Info(string.Format("[ChkMiSt_5b] - Eccezione in recupero riga Trans ingressi per idxMacchina {3} e valore {2}:{0}{1}", Environment.NewLine, exc, valINT, idxMacchina), tipoLog.EXCEPTION);
}
int _logLevel = cMemLayer.CRI("_logLevel");
// effettuo update vari
if (rigaTransIn != null)
{
try
{
if (_logLevel > 5)
{
Log.Info(string.Format("[ChkMiSt_6b] - Salvo Update Microstato:{0}macchina: {1} | valore seriale: {2} | next micro stato: {3}", Environment.NewLine, idxMacchina, valINT, rigaTransIn.next_IdxMicroStato), tipoLog.INFO);
}
// salvo nuovo microstato...
MapoDbObj.taMSM.updateQuery(rigaTransIn.next_IdxMicroStato, dtEve, valore, idxMacchina);
// controllo se c'è evento
if (rigaTransIn.IdxTipoEvento > 0)
{
if (_logLevel > 5)
{
Log.Info(string.Format("[ChkMiSt_7b] - Salvo evento:{0}macchina: {1} | tipoEvento: {2} | CodArticolo: {3}", Environment.NewLine, idxMacchina, rigaTransIn.IdxTipoEvento, CodArticolo), tipoLog.INFO);
}
answ = scriviRigaEvento(idxMacchina, rigaTransIn.IdxTipoEvento, CodArticolo, valore, 0, "-", dtEve, DateTime.Now);
if (_logLevel > 5)
{
Log.Info(string.Format("[ChkMiSt_b] -Macchina {0}, seriale(INT) {1}{2}---------------------------{2}", idxMacchina, valINT, Environment.NewLine), tipoLog.INFO);
}
}
}
catch (Exception exc)
{
Log.Info(string.Format("[ChkMiSt_8b] - Eccezione:{0}{1}", Environment.NewLine, exc), tipoLog.EXCEPTION);
}
}
return answ;
}
/// <summary>
/// controlla se da il segnale di "microstato" deriva un evento da generare
/// </summary>
/// <param name="idxMacchina"></param>
/// <param name="valore"></param>
/// <returns></returns>
public inputComandoMapo checkMicroStato(string idxMacchina, string valore)
{
// wrapper ad ora corrente...
return checkMicroStato(idxMacchina, valore, DateTime.Now);
}
#endif
/// <summary>
/// cerca codice in anagrafica macchine ed eventualmente inserisce nuova macchina
/// </summary>
/// <param name="IdxMacchina"></param>
private void verificaIdxMacchina(string IdxMacchina)
{
bool needDB = false;
try
{
// esecuzione in REDIS...cerco status macchina...
if (mDatiMacchine(IdxMacchina).Count == 0)
{
needDB = true;
}
}
catch { }
if (needDB)
{
// verifico se esiste su DB
var dbRec = IocDbController.MacchineGetByIdx(IdxMacchina);
if (dbRec == null)
{
MacchineModel newRec = new MacchineModel()
{
IdxMacchina = IdxMacchina,
CodMacchina = "0000",
Nome = IdxMacchina,
Descrizione = "Macchina non codificata",
Note = "-",
locazione = "",
RecipeArchivePath = "",
RecipePath = ""
};
IocDbController.MacchineUpsert(newRec);
// verifico ci sia un microstato macchina...
var recMSM = IocDbController.MicroStatoMacchinaGetByIdxMacc(IdxMacchina);
if (recMSM.Count == 0)
{
// inserisco nuovo stato...
MicroStatoMacchinaModel msRec = new MicroStatoMacchinaModel()
{
IdxMacchina = IdxMacchina,
IdxMicroStato = 0,
InizioStato = DateTime.Now,
Value = "00"
};
IocDbController.MicroStatoMacchinaUpsert(msRec);
}
}
}
}
/// <summary>
/// cerca codice in anagrafica macchine ed eventualmente inserisce nuova macchina
/// </summary>
+1 -1
View File
@@ -4,7 +4,7 @@
<TargetFramework>net8.0</TargetFramework>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
<Version>6.16.2604.1812</Version>
<Version>6.16.2604.1814</Version>
</PropertyGroup>
<ItemGroup>
+1 -1
View File
@@ -1,6 +1,6 @@
<body>
<i>Modulo MP-IOC </i>
<h4>Versione: 6.16.2604.1812</h4>
<h4>Versione: 6.16.2604.1814</h4>
<br /> Note di rilascio:
<ul>
<li>
+1 -1
View File
@@ -1 +1 @@
6.16.2604.1812
6.16.2604.1814
+1 -1
View File
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<item>
<version>6.16.2604.1812</version>
<version>6.16.2604.1814</version>
<url>https://nexus.steamware.net/repository/SWS/MP-IOC/stable/LAST/MP.IOC.zip</url>
<changelog>https://nexus.steamware.net/repository/SWS/MP-IOC/stable/LAST/ChangeLog.html</changelog>
<mandatory>false</mandatory>