Fix lettura current + next BUNK con REDIS
This commit is contained in:
+90
-20
@@ -791,6 +791,27 @@ namespace AppData
|
||||
/// Chiave primo bunk su redis
|
||||
/// </summary>
|
||||
protected static string redFirstBunkKey = $"{redProdReq}:FirstBunk";
|
||||
/// <summary>
|
||||
/// Chiave primo bunk su redis
|
||||
/// </summary>
|
||||
protected static string redAllNextBunkKey = $"{redProdReq}:NextBunk";
|
||||
/// <summary>
|
||||
/// Chiave primo bunk su redis
|
||||
/// </summary>
|
||||
protected static string redNextBunkKey(int BunkID)
|
||||
{
|
||||
return $"{redProdReq}:NextBunk:{BunkID}";
|
||||
}
|
||||
/// <summary>
|
||||
/// Resetto in REDIS i dati di bunk (corrente e successivi)
|
||||
/// </summary>
|
||||
public void resetRedisBunkData()
|
||||
{
|
||||
redisFirstBunk = null;
|
||||
}
|
||||
/// <summary>
|
||||
/// Cache redis del PRIMO bunk da lavorare
|
||||
/// </summary>
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Recupero da Redis del SUCCESSIVO bunk da lavorare
|
||||
/// </summary>
|
||||
/// <param name="currBunkId"></param>
|
||||
/// <returns></returns>
|
||||
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<WBunk>(rawData);
|
||||
}
|
||||
catch
|
||||
{ }
|
||||
}
|
||||
return answ;
|
||||
}
|
||||
/// <summary>
|
||||
/// Salvo in Redis il SUCCESSIVO bunk da lavorare
|
||||
/// </summary>
|
||||
/// <param name="currBunkId"></param>
|
||||
/// <param name="value"></param>
|
||||
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), "");
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Restituisce il PRIMO bunk secondo criterio:
|
||||
/// - posizione = 5 (ho letto da webApp il BUNK e preso in carico)
|
||||
@@ -864,33 +929,38 @@ namespace AppData
|
||||
/// <returns></returns>
|
||||
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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user