From f3aa0eac403eba3f4187c0bab898c692fdc2fe87 Mon Sep 17 00:00:00 2001 From: Samuele Locatelli Date: Mon, 21 Jul 2025 07:46:31 +0200 Subject: [PATCH] Fix gestione veto (da testare) variabile da MAN --- IOB-UT-NEXT/RedisMan.cs | 44 +++++++++++++++++++++++-- IOB-UT-NEXT/Tools/TEMPLATE_ODL_USDT.csv | 3 +- IOB-WIN-FTP/DATA/CONF/MAIN.ini | 2 +- IOB-WIN-MTC/DATA/CONF/MAIN.ini | 2 +- IOB-WIN-OPC-UA/DATA/CONF/MAIN.ini | 2 +- IOB-WIN-PING/DATA/CONF/MAIN.ini | 2 +- IOB-WIN-WPS/DATA/CONF/MAIN.ini | 2 +- IOB-WIN-WS/IobWs/EmmegiFPW.cs | 11 +++---- IOB-WIN-WS/Tools/TEMPLATE_ODL_USDT.csv | 3 +- 9 files changed, 55 insertions(+), 16 deletions(-) diff --git a/IOB-UT-NEXT/RedisMan.cs b/IOB-UT-NEXT/RedisMan.cs index 193c1987..d6c1e376 100644 --- a/IOB-UT-NEXT/RedisMan.cs +++ b/IOB-UT-NEXT/RedisMan.cs @@ -36,6 +36,7 @@ namespace IOB_UT_NEXT { initRedisConn(); initMemKeys(); + setVetoPeriod(); } /// @@ -54,6 +55,7 @@ namespace IOB_UT_NEXT currCodIob = codIob; currIobType = tipoIob; initMemKeys(); + setVetoPeriod(); // init oggetti gestiti ServerMpStatus newSrvStatus = new ServerMpStatus() { @@ -1194,18 +1196,21 @@ namespace IOB_UT_NEXT { bool fatto = false; // effettuo la scrittura nell'area di memoria indicata SE passato intervallo minimo di 60 sec - bool doSave = true; + bool doSave = false; if (LastKeySave.ContainsKey(memKey)) { - if (DateTime.Now.Subtract(LastKeySave[memKey]).TotalSeconds < 60) + if (DateTime.Now.Subtract(LastKeySave[memKey]).TotalSeconds > vetoSavePeriod) { - doSave = false; + doSave = true; } } else { LastKeySave.Add(memKey, DateTime.Now); + doSave = true; } + + // se scaduto veto periodo salvo if (doSave) { cache.StringSet(memKey, message); @@ -1430,6 +1435,11 @@ namespace IOB_UT_NEXT /// protected string redIobChannel = "IobChannel"; + /// + /// /Chiave varabili scambiate con IOB-MAN + /// + protected string redManKey = ""; + /// /// Hash REDIS x dati server /// @@ -1444,6 +1454,11 @@ namespace IOB_UT_NEXT /// private Dictionary LastKeySave = new Dictionary(); + /// + /// veriodo di veto salvataggio chaivi in REDIS quando inviate tramite pub/sub in realtime + /// + private int vetoSavePeriod = 10; + #endregion Private Fields #region Private Properties @@ -1493,6 +1508,7 @@ namespace IOB_UT_NEXT { // init dati di base... redServKey = redHash($"MP"); + redManKey = redHash($"MAN"); redIobKey = redHash($"IOB:{currCodIob}"); redIobTrackKey = redHash($"IOB:FluxLog:{currCodIob}"); redIobChannel = $"IobChannel_{currCodIob}"; @@ -1513,6 +1529,28 @@ namespace IOB_UT_NEXT Logging.Instance.Info($"Apertura di un Redis Multiplexer"); } + /// + /// Impostazione periodo veto secondo il comportamento di IOB-MAN + /// + private void setVetoPeriod() + { + // cerco in redis la chiave di veto (scritta da IOB-MAN) + string rKey = $"{redManKey}:vetoSave"; + string rawVal = getRSV(rKey); + // se la trovo la metto da qui + if (!string.IsNullOrEmpty(rawVal)) + { + int.TryParse(rawVal, out vetoSavePeriod); + } + //se non la trovo di default รจ 15 + else + { + vetoSavePeriod = 15; + // salvo in redis il valore impostato + setRSV(rKey, $"{vetoSavePeriod}"); + } + } + #endregion Private Methods } } \ No newline at end of file diff --git a/IOB-UT-NEXT/Tools/TEMPLATE_ODL_USDT.csv b/IOB-UT-NEXT/Tools/TEMPLATE_ODL_USDT.csv index 3e90e531..1f77e340 100644 --- a/IOB-UT-NEXT/Tools/TEMPLATE_ODL_USDT.csv +++ b/IOB-UT-NEXT/Tools/TEMPLATE_ODL_USDT.csv @@ -1,3 +1,4 @@ C;[[ODL]]; S;[[SERIE]];[[CODICE]];;;[[ALTEZZA]];0;[[QUOTA_USCITA]]; -P;[[CODICE_LUNGH]];[[QTA]];[[LUNGH]];90;90;;;[[CLIENTE]]; \ No newline at end of file +P;[[CODICE_LUNGH]];[[QTA]];[[LUNGH]];90;90;;;[[CLIENTE]]; +B;10001;100;6000.0;1;0;O1;0 \ No newline at end of file diff --git a/IOB-WIN-FTP/DATA/CONF/MAIN.ini b/IOB-WIN-FTP/DATA/CONF/MAIN.ini index ebc0bef6..1494af89 100644 --- a/IOB-WIN-FTP/DATA/CONF/MAIN.ini +++ b/IOB-WIN-FTP/DATA/CONF/MAIN.ini @@ -19,4 +19,4 @@ CLI_INST=SteamWareSim ;STARTLIST=IMI_SONATEST STARTLIST=FTP_SONATEST -MAXCNC=10 +MAXCNC=10 \ No newline at end of file diff --git a/IOB-WIN-MTC/DATA/CONF/MAIN.ini b/IOB-WIN-MTC/DATA/CONF/MAIN.ini index c8d6337a..70338fc7 100644 --- a/IOB-WIN-MTC/DATA/CONF/MAIN.ini +++ b/IOB-WIN-MTC/DATA/CONF/MAIN.ini @@ -24,4 +24,4 @@ STARTLIST=3024 ;NB: mettere copy always ai file di conf x fare test... ;STARTLIST=3024 -MAXCNC=10 +MAXCNC=10 \ No newline at end of file diff --git a/IOB-WIN-OPC-UA/DATA/CONF/MAIN.ini b/IOB-WIN-OPC-UA/DATA/CONF/MAIN.ini index 0ce8cc30..f7df2bee 100644 --- a/IOB-WIN-OPC-UA/DATA/CONF/MAIN.ini +++ b/IOB-WIN-OPC-UA/DATA/CONF/MAIN.ini @@ -31,4 +31,4 @@ CLI_INST=SteamWareSim ;STARTLIST=1042 STARTLIST=2015 -MAXCNC=10 +MAXCNC=10 \ No newline at end of file diff --git a/IOB-WIN-PING/DATA/CONF/MAIN.ini b/IOB-WIN-PING/DATA/CONF/MAIN.ini index ec3f6146..3da98a3a 100644 --- a/IOB-WIN-PING/DATA/CONF/MAIN.ini +++ b/IOB-WIN-PING/DATA/CONF/MAIN.ini @@ -18,4 +18,4 @@ STARTLIST=FTP-PING ;STARTLIST=SIMUL_08 ;STARTLIST=3024-PING -MAXCNC=10 +MAXCNC=10 \ No newline at end of file diff --git a/IOB-WIN-WPS/DATA/CONF/MAIN.ini b/IOB-WIN-WPS/DATA/CONF/MAIN.ini index 73c016b4..905ae245 100644 --- a/IOB-WIN-WPS/DATA/CONF/MAIN.ini +++ b/IOB-WIN-WPS/DATA/CONF/MAIN.ini @@ -22,4 +22,4 @@ CLI_INST=SteamWareSim STARTLIST=3018 ;STARTLIST=3019 -MAXCNC=10 +MAXCNC=10 \ No newline at end of file diff --git a/IOB-WIN-WS/IobWs/EmmegiFPW.cs b/IOB-WIN-WS/IobWs/EmmegiFPW.cs index 0731b4ba..a1071299 100644 --- a/IOB-WIN-WS/IobWs/EmmegiFPW.cs +++ b/IOB-WIN-WS/IobWs/EmmegiFPW.cs @@ -541,8 +541,7 @@ namespace IOB_WIN_WS.IobWs string FileInPath = IOBConfFull.OptParGet("FileInPath"); if (!string.IsNullOrEmpty(FileInPath)) { - string fullPath = Path.Combine("Tools", FileInPath); - if (File.Exists(fullPath)) + if (File.Exists(FileInPath)) { // verifico presenza in cache REDIS rawData = redisMan.getRSV(rKeyConf); @@ -748,7 +747,7 @@ namespace IOB_WIN_WS.IobWs //var lastJobId = getCurrProdData("currPODL", ""); if (!lastJobId.Equals(currStatusDTO.Workstation.JobId)) { - startNewJob(currStatusDTO.Workstation.JobId, lastJobId); + startNewJob(lastJobId, currStatusDTO.Workstation.JobId); // --> salvo come valore corrente... upsertKey("currJobId", currStatusDTO.Workstation.JobId); } @@ -767,13 +766,13 @@ namespace IOB_WIN_WS.IobWs /// - archiviazione file OPR*.csv /// - TTL cache redis in disabilitazione /// - /// Nuovo JobId /// Vecchio JobId - private void startNewJob(string jobIdNew, string jobIdOld) + /// Nuovo JobId + private void startNewJob(string jobIdOld, string jobIdNew) { + lgInfo($"Richiesta startNewJob: {jobIdOld} --> {jobIdNew}"); // ipotesi JobId = OPRxx-yyyyy (se fosse PODL va modificato) - // eseguo chiusura ultimo ODL // avvio PODL nuovo diff --git a/IOB-WIN-WS/Tools/TEMPLATE_ODL_USDT.csv b/IOB-WIN-WS/Tools/TEMPLATE_ODL_USDT.csv index 3e90e531..1f77e340 100644 --- a/IOB-WIN-WS/Tools/TEMPLATE_ODL_USDT.csv +++ b/IOB-WIN-WS/Tools/TEMPLATE_ODL_USDT.csv @@ -1,3 +1,4 @@ C;[[ODL]]; S;[[SERIE]];[[CODICE]];;;[[ALTEZZA]];0;[[QUOTA_USCITA]]; -P;[[CODICE_LUNGH]];[[QTA]];[[LUNGH]];90;90;;;[[CLIENTE]]; \ No newline at end of file +P;[[CODICE_LUNGH]];[[QTA]];[[LUNGH]];90;90;;;[[CLIENTE]]; +B;10001;100;6000.0;1;0;O1;0 \ No newline at end of file