Fix gestione veto (da testare) variabile da MAN

This commit is contained in:
Samuele Locatelli
2025-07-21 07:46:31 +02:00
parent bdaa28d06e
commit f3aa0eac40
9 changed files with 55 additions and 16 deletions
+41 -3
View File
@@ -36,6 +36,7 @@ namespace IOB_UT_NEXT
{
initRedisConn();
initMemKeys();
setVetoPeriod();
}
/// <summary>
@@ -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
/// </summary>
protected string redIobChannel = "IobChannel";
/// <summary>
/// /Chiave varabili scambiate con IOB-MAN
/// </summary>
protected string redManKey = "";
/// <summary>
/// Hash REDIS x dati server
/// </summary>
@@ -1444,6 +1454,11 @@ namespace IOB_UT_NEXT
/// </summary>
private Dictionary<string, DateTime> LastKeySave = new Dictionary<string, DateTime>();
/// <summary>
/// veriodo di veto salvataggio chaivi in REDIS quando inviate tramite pub/sub in realtime
/// </summary>
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");
}
/// <summary>
/// Impostazione periodo veto secondo il comportamento di IOB-MAN
/// </summary>
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
}
}
+2 -1
View File
@@ -1,3 +1,4 @@
C;[[ODL]];
S;[[SERIE]];[[CODICE]];;;[[ALTEZZA]];0;[[QUOTA_USCITA]];
P;[[CODICE_LUNGH]];[[QTA]];[[LUNGH]];90;90;;;[[CLIENTE]];
P;[[CODICE_LUNGH]];[[QTA]];[[LUNGH]];90;90;;;[[CLIENTE]];
B;10001;100;6000.0;1;0;O1;0
1 C;[[ODL]];
2 S;[[SERIE]];[[CODICE]];;;[[ALTEZZA]];0;[[QUOTA_USCITA]];
3 P;[[CODICE_LUNGH]];[[QTA]];[[LUNGH]];90;90;;;[[CLIENTE]];
4 B;10001;100;6000.0;1;0;O1;0
+1 -1
View File
@@ -19,4 +19,4 @@ CLI_INST=SteamWareSim
;STARTLIST=IMI_SONATEST
STARTLIST=FTP_SONATEST
MAXCNC=10
MAXCNC=10
+1 -1
View File
@@ -24,4 +24,4 @@ STARTLIST=3024
;NB: mettere copy always ai file di conf x fare test...
;STARTLIST=3024
MAXCNC=10
MAXCNC=10
+1 -1
View File
@@ -31,4 +31,4 @@ CLI_INST=SteamWareSim
;STARTLIST=1042
STARTLIST=2015
MAXCNC=10
MAXCNC=10
+1 -1
View File
@@ -18,4 +18,4 @@ STARTLIST=FTP-PING
;STARTLIST=SIMUL_08
;STARTLIST=3024-PING
MAXCNC=10
MAXCNC=10
+1 -1
View File
@@ -22,4 +22,4 @@ CLI_INST=SteamWareSim
STARTLIST=3018
;STARTLIST=3019
MAXCNC=10
MAXCNC=10
+5 -6
View File
@@ -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
/// </summary>
/// <param name="jobIdNew">Nuovo JobId</param>
/// <param name="jobIdOld">Vecchio JobId</param>
private void startNewJob(string jobIdNew, string jobIdOld)
/// <param name="jobIdNew">Nuovo JobId</param>
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
+2 -1
View File
@@ -1,3 +1,4 @@
C;[[ODL]];
S;[[SERIE]];[[CODICE]];;;[[ALTEZZA]];0;[[QUOTA_USCITA]];
P;[[CODICE_LUNGH]];[[QTA]];[[LUNGH]];90;90;;;[[CLIENTE]];
P;[[CODICE_LUNGH]];[[QTA]];[[LUNGH]];90;90;;;[[CLIENTE]];
B;10001;100;6000.0;1;0;O1;0
1 C;[[ODL]];
2 S;[[SERIE]];[[CODICE]];;;[[ALTEZZA]];0;[[QUOTA_USCITA]];
3 P;[[CODICE_LUNGH]];[[QTA]];[[LUNGH]];90;90;;;[[CLIENTE]];
4 B;10001;100;6000.0;1;0;O1;0