Fix metodi recupero ODL da MP/IO

This commit is contained in:
Samuele E. Locatelli
2019-01-07 17:00:16 +01:00
parent 03690228d6
commit b55c202544
5 changed files with 1974 additions and 1921 deletions
+1911 -1911
View File
File diff suppressed because it is too large Load Diff
+51 -4
View File
@@ -1489,18 +1489,64 @@ namespace MapoDb
memLayer.ML.resetRCnt(mHash("COUNT:pCall:getCounterTC"));
}
}
// variabile x controllo dati recuperati
DS_ProdTempi.StatoProdDataTable datiProdAct = null;
bool odlFound = false;
int taSP_ms_ant = memLayer.ML.cdvi("taStatoProd_ms_anticipo");
DateTime dataRif = DateTime.Now.AddMilliseconds(-taSP_ms_ant);
odlFound = getStatoProd(idxMacchina, ref datiProdAct, dataRif);
// se NON avesse recuperato --> aspetto taSP_ms_ant e poi RICHIAMO procedura...
int maxTry = 3;
while (!odlFound && maxTry > 0)
{
logger.lg.scriviLog(string.Format("[pzCounterTC] Impossibile recuperare dati ODL x idxMacchina {0}", idxMacchina), tipoLog.ERROR);
// sleep...
System.Threading.Thread.Sleep(taSP_ms_ant);
// riprovo lettura...
odlFound = getStatoProd(idxMacchina, ref datiProdAct, dataRif);
maxTry--;
}
// ora proseguo SE ho trovato i dati...
if (odlFound)
{
// ...a questo punto recupero DAVVERO i dati (o almeno ci provo...)
try
{
// controllo
answ = datiProdAct[0].PzTotODL;
}
catch (Exception exc)
{
logger.lg.scriviLog(string.Format("[pzCounterTC] Eccezione in recupero PzTotODL x idxMacchina {0}{1}{2}", idxMacchina, Environment.NewLine, exc), tipoLog.EXCEPTION);
}
}
else
{
logger.lg.scriviLog(string.Format("[pzCounterTC] Dati ODL x idxMacchina {0} non recuperati dopo tentativi reiterati...", idxMacchina), tipoLog.ERROR);
}
return answ;
}
/// <summary>
/// Recupero dati stato prod da macchina...
/// </summary>
/// <param name="idxMacchina"></param>
/// <param name="datiProdAct"></param>
/// <param name="dataRif"></param>
/// <returns></returns>
private static bool getStatoProd(string idxMacchina, ref DS_ProdTempi.StatoProdDataTable datiProdAct, DateTime dataRif)
{
bool answ = false;
try
{
// recupero con stored NUOVA...
int taSP_ms_ant = memLayer.ML.cdvi("taStatoProd_ms_anticipo");
DateTime dataRif = DateTime.Now.AddMilliseconds(-taSP_ms_ant);
var datiProdAct = DataLayer.obj.taStatoProd.GetData(idxMacchina, dataRif);
datiProdAct = DataLayer.obj.taStatoProd.GetData(idxMacchina, dataRif);
if (datiProdAct.Rows.Count > 0)
{
// solo SE ho idxODL (altrimenti loggo errore)
if (datiProdAct[0].IdxOdl > 0)
{
answ = datiProdAct[0].PzTotODL;
answ = true;
}
else
{
@@ -1519,6 +1565,7 @@ namespace MapoDb
}
return answ;
}
/// <summary>
/// Restituisce il contapezzi salvato per la macchina
/// </summary>
+11 -1
View File
@@ -423,19 +423,29 @@ namespace MapoDb
{
string answ = "";
// recupero con stored NUOVA...
var tabOdl = DataLayer.obj.taODL.getByMacchina(idxMacchina);
DS_ProdTempi.ODLDataTable tabOdl = DataLayer.obj.taODL.getByMacchina(idxMacchina);
if (tabOdl.Rows.Count > 0)
{
// solo SE ho idxODL (altrimenti loggo errore)
if (tabOdl[0].IdxODL > 0)
{
answ = tabOdl[0].IdxODL.ToString();
answ = answ == "" ? "0" : answ;
}
else
{
answ = "0";
logger.lg.scriviLog("[currODL] Errore in currODL x idxMacchina " + idxMacchina + ": IdxODL = 0");
}
}
else
{
// se è empty --> 0!!!
answ = "0";
}
// ultimo controllo su idxOdl...
answ = answ == "" ? "0" : answ;
// restituisco!
return answ;
}
/// <summary>