diff --git a/MTC_Sim/MTC_Sim/AdapterESA.cs b/MTC_Sim/MTC_Sim/AdapterESA.cs index 7086f24..8759774 100644 --- a/MTC_Sim/MTC_Sim/AdapterESA.cs +++ b/MTC_Sim/MTC_Sim/AdapterESA.cs @@ -207,13 +207,14 @@ namespace MTC_Adapter /// Oggetto elenco dati produzione /// public datiProdSCM[] elencoDatiProd; + /// /// leggo altri file: /// - dati produzione /// - protected override void loadOtherFile() + public override void getSlowChangingData() { - base.loadOtherFile(); + base.getSlowChangingData(); // carico dati x Maintenance if (utils.CRB("verbose")) lg.Info(string.Format("Inizio caricamento file dati produzione ({0})", ScmProdFileName)); @@ -242,10 +243,19 @@ namespace MTC_Adapter // ora trimmo vettore al solo numero VERO degli allarmi caricati... Array.Resize(ref elencoDatiProdNew, rumRiga); - // !!!FARE!!! (ri-fare) - - // ora devo verificare il contenuto rispetto ai "vecchi" valori... conto numero righe (devono essere diverse o uguali e ultima riga con qta differente e pari cod PRG...) + /*-------------------------------------------------- + * Gestione verifica dati prod (naive) + * - se file curr vuoto --> inizio a popolare + * - se i 2 file hannos tessa lunghezza --> verifico +update last row + * - se nNew > nCurr --> accodo + * - se nCurr > nNew e nNew ==0 --> aggiorno last row giorno prec + * - se nCurr > nNew e nNew > 0 --> svuoto file curr e riparto + *--------------------------------------------------*/ + + + // verifica preliminare dati da lung vettori int nRecCur = 0; + int nRecIst = 0; if (elencoDatiProd != null) { try @@ -255,53 +265,54 @@ namespace MTC_Adapter catch { } } - int nRecIst = 0; if (elencoDatiProdNew != null) { try { - nRecCur = elencoDatiProdNew.Length; + nRecIst = elencoDatiProdNew.Length; } catch { } } // in primis devo verificare che sia > 0 num oggetti su entrambi i vettori - - // se vett curr è nullo --> devo inizializzare - - // se NONE' nullo devo confrontare ULTIMO record Curr con equivalente record NEW x verificare se sia variato - - // se ultimo curr === corrispondente new DEVO aggiungere 1 riga - - // riporto comunque ultima riga del vettore CURR (sia perché variato sia perché aggiunto) -#if false - - - - bool checkNumRow = nRecCur != nRecIst; - bool checkPart = elencoDatiProd[nRecCur - 1].fileName != elencoDatiProdNew[nRecIst - 1].fileName; - bool checkQta = elencoDatiProd[nRecCur - 1].qta != elencoDatiProdNew[nRecIst - 1].qta; - // se differiscono processo - if (checkNumRow || checkPart || (!checkPart && checkQta)) + if (nRecCur + nRecIst > 0) { - // CARICO IN vettore IST il primo dei NUOVI particolari coi suoi pezzi prodotti - istPathPartId[0] = elencoDatiProdNew[nRecIst - 1].fileName; - istPathPartCount[0] = Convert.ToUInt32(elencoDatiProdNew[nRecIst - 1].qta); - // aggiorno ultima riga (son diverse x numeri righe...) - if (checkNumRow) + // verifico se ho meno valori CURR e quindi devo accodare + if (nRecCur < nRecIst) { + // resize vettore! Array.Resize(ref elencoDatiProd, nRecCur + 1); - elencoDatiProd[nRecCur + 1] = elencoDatiProdNew[nRecCur + 1]; + // carico nuovo record + elencoDatiProd[nRecCur] = elencoDatiProdNew[nRecCur]; + nRecCur++; + } + else if (nRecCur == nRecIst) + { + // devo confrontare ULTIMO record Curr con equivalente record NEW x verificare se sia variato.. verifico PRG + start + bool checkName = elencoDatiProd[nRecCur].fileName == elencoDatiProdNew[nRecCur].fileName; + bool checkStart = elencoDatiProd[nRecCur].start == elencoDatiProdNew[nRecCur].start; + if (checkName && checkStart) + { + elencoDatiProd[nRecCur] = elencoDatiProdNew[nRecCur]; + } } - //... aggiorno ultima riga dati... else { - elencoDatiProd[nRecCur] = elencoDatiProdNew[nRecCur]; + // inizio svuotando elenco eventi CURR (migliorabile leggendo da data prec?!?) + elencoDatiProd = null; + nRecCur = 0; } - // al prossimo giro caricherà altro particolare... - } -#endif + + // riporto comunque ultima riga del vettore CURR (sia perché variato sia perché aggiunto) + if (nRecCur > 0) + { + string prgName = elencoDatiProd[nRecCur - 1].fileName; + prgName = prgName.Substring(prgName.LastIndexOf(@"\") + 1); + istPathPartId[0] = prgName; + istPathPartCount[0] = Convert.ToUInt32(elencoDatiProd[nRecCur - 1].qta); + } + } } /// /// Processo stti macchina... diff --git a/MTC_Sim/MTC_Sim/AdapterGeneric.cs b/MTC_Sim/MTC_Sim/AdapterGeneric.cs index c089ef9..0c34a2f 100644 --- a/MTC_Sim/MTC_Sim/AdapterGeneric.cs +++ b/MTC_Sim/MTC_Sim/AdapterGeneric.cs @@ -2052,19 +2052,22 @@ namespace MTC_Adapter // controllo valore riferimento x tutti i path se sia cambiato programma... for (int i = 0; i < currAdpConf.nPath; i++) { - if (istPathPartId[i] != currPathPartId[i]) + if (istPathPartId[i] != null) { - // aggiorno valore in Path RefList - updatePathRefList(i, "Path_{0:00}_PartId", istPathPartId[i]); + if (istPathPartId[i] != currPathPartId[i]) + { + // aggiorno valore in Path RefList + updatePathRefList(i, "Path_{0:00}_PartId", istPathPartId[i]); - // prendo nuovo valore programma x path! - vettPath[i].mPathPartId.Value = istPathPartId[i]; - // imposto a ZERO i pezzi del nuovo articolo - vettPath[i].mPathPartCount.Value = 0; - // segnalo necessità salvataggio! - needSave = true; - // ...aggiorno valore riferimento... - currPathPartId[i] = istPathPartId[i]; + // prendo nuovo valore programma x path! + vettPath[i].mPathPartId.Value = istPathPartId[i]; + // imposto a ZERO i pezzi del nuovo articolo + vettPath[i].mPathPartCount.Value = 0; + // segnalo necessità salvataggio! + needSave = true; + // ...aggiorno valore riferimento... + currPathPartId[i] = istPathPartId[i]; + } } } return needSave; @@ -2079,20 +2082,23 @@ namespace MTC_Adapter // controllo valore riferimento x tutti i path se sia cambiato programma... for (int i = 0; i < currAdpConf.nPath; i++) { - // controllo valore riferimento... - if (istPathPartCount[i] > currPathPartCount[i]) + if (istPathPartCount[i] != null) { - uint deltaPz = istPathPartCount[i] - currPathPartCount[i]; - uint contTotPz = updatePathRefListByIncr(i, deltaPz, "Path_{0:00}_PZ_TOT"); + // controllo valore riferimento... + if (istPathPartCount[i] > currPathPartCount[i]) + { + uint deltaPz = istPathPartCount[i] - currPathPartCount[i]; + uint contTotPz = updatePathRefListByIncr(i, deltaPz, "Path_{0:00}_PZ_TOT"); - // passo valore num pz all'adapter - vettPath[i].mPathPartCount.Value = contTotPz; + // passo valore num pz all'adapter + vettPath[i].mPathPartCount.Value = contTotPz; - // segnalo necessità salvataggio! - needSave = true; + // segnalo necessità salvataggio! + needSave = true; + } + // ...aggiorno valore riferimento... + currPathPartCount[i] = istPathPartCount[i]; } - // ...aggiorno valore riferimento... - currPathPartCount[i] = istPathPartCount[i]; } return needSave; }