diff --git a/AppData/ComLib.cs b/AppData/ComLib.cs
index 957ba45..6e549bd 100644
--- a/AppData/ComLib.cs
+++ b/AppData/ComLib.cs
@@ -791,6 +791,27 @@ namespace AppData
/// Chiave primo bunk su redis
///
protected static string redFirstBunkKey = $"{redProdReq}:FirstBunk";
+ ///
+ /// Chiave primo bunk su redis
+ ///
+ protected static string redAllNextBunkKey = $"{redProdReq}:NextBunk";
+ ///
+ /// Chiave primo bunk su redis
+ ///
+ protected static string redNextBunkKey(int BunkID)
+ {
+ return $"{redProdReq}:NextBunk:{BunkID}";
+ }
+ ///
+ /// Resetto in REDIS i dati di bunk (corrente e successivi)
+ ///
+ public void resetRedisBunkData()
+ {
+ redisFirstBunk = null;
+ }
+ ///
+ /// Cache redis del PRIMO bunk da lavorare
+ ///
private static WBunk redisFirstBunk
{
get
@@ -821,10 +842,54 @@ namespace AppData
// se null elimino da redis
{
memLayer.ML.setRSV(redFirstBunkKey, "");
+ // elimino TUTTI i next...
+ memLayer.ML.redFlushKey(redAllNextBunkKey);
}
}
}
+
+ ///
+ /// Recupero da Redis del SUCCESSIVO bunk da lavorare
+ ///
+ ///
+ ///
+ private static WBunk getRedisNextBunk(int currBunkId)
+ {
+ WBunk answ = null;
+ string rawData = memLayer.ML.getRSV(redNextBunkKey(currBunkId));
+ if (rawData != "")
+ {
+ // provo a deserializzare
+ try
+ {
+ answ = JsonConvert.DeserializeObject(rawData);
+ }
+ catch
+ { }
+ }
+ return answ;
+ }
+ ///
+ /// Salvo in Redis il SUCCESSIVO bunk da lavorare
+ ///
+ ///
+ ///
+ private static void setRedisNextBunk(int currBunkId, WBunk value)
+ {
+ if (value != null)
+ {
+ string redVal = JsonConvert.SerializeObject(value);
+ // default lascio x 5 minuti...
+ memLayer.ML.setRSV(redNextBunkKey(currBunkId), redVal, 300);
+ }
+ else
+ // se null elimino da redis
+ {
+ memLayer.ML.setRSV(redNextBunkKey(currBunkId), "");
+ }
+ }
+
///
/// Restituisce il PRIMO bunk secondo criterio:
/// - posizione = 5 (ho letto da webApp il BUNK e preso in carico)
@@ -864,33 +929,38 @@ namespace AppData
///
public static WBunk prodGetNextBunk(int BunkID)
{
- WBunk answ = null;
- // vado sul DB e leggo ...
- DS_App.StackListDataTable tabBunks = DataLayer.man.taSTL.getLoaded();
- // controllo di averne almeno 1...
- if (tabBunks.Count > 0)
+ WBunk answ = getRedisNextBunk(BunkID);
+ if (answ == null)
{
- DS_App.StackListRow currBunk = null;
- bool trovato = false;
- // ciclo
- foreach (var item in tabBunks)
+ // vado sul DB e leggo ...
+ DS_App.StackListDataTable tabBunks = DataLayer.man.taSTL.getLoaded();
+ // controllo di averne almeno 1...
+ if (tabBunks.Count > 0)
{
- if (trovato)
+ DS_App.StackListRow currBunk = null;
+ bool trovato = false;
+ // ciclo
+ foreach (var item in tabBunks)
{
- currBunk = item;
- break;
+ if (trovato)
+ {
+ currBunk = item;
+ break;
+ }
+ // controllo se sia quello richiesto
+ if (item.StackID == BunkID)
+ {
+ trovato = true;
+ }
}
- // controllo se sia quello richiesto
- if (item.StackID == BunkID)
+ // se c'è un bunk trovato --> carico
+ if (currBunk != null)
{
- trovato = true;
+ answ = getBunkFromDb(currBunk);
+ // salvo su redis
+ setRedisNextBunk(BunkID, answ);
}
}
- // se c'è un bunk trovato --> carico
- if (currBunk != null)
- {
- answ = getBunkFromDb(currBunk);
- }
}
return answ;
}