diff --git a/IOB-WIN-NEXT/IobSqlServLantek.cs b/IOB-WIN-NEXT/IobSqlServLantek.cs index 2f9c405c..fcbd390d 100644 --- a/IOB-WIN-NEXT/IobSqlServLantek.cs +++ b/IOB-WIN-NEXT/IobSqlServLantek.cs @@ -117,6 +117,11 @@ namespace IOB_WIN_NEXT } } + /// + /// Dati fluxLog serializzati in REDIS di reference durante run (precedenti) + /// + protected List fluxLogDataRef { get; set; } = new List(); + #endregion Protected Properties #region Private Properties @@ -554,60 +559,37 @@ namespace IOB_WIN_NEXT private bool processFluxLogTable(DateTime adesso) { bool fatto = false; - string tabNameIn = "FluxLog"; - string tabNameOut = "FluxLogToMes"; - // cerco info sui SignLog (ToMes e letti) - var currFluxLogRead = elencoSyncState.FirstOrDefault(x => x.TableName == tabNameIn); - // se nullo inizializzo - if (currFluxLogRead == null) + bool doSend = false; + // leggo eventuali dati di fluxlog ed invio... + if (fluxLogData != null && fluxLogData.Count>0) { - currFluxLogRead = new SyncStateModel() + // confronto ultimo record dei prev se corrispondono x saltare... + if(fluxLogDataRef!=null && fluxLogDataRef.Count>0) { - LastIdx = 0, - LastUpdate = adesso, - TableName = tabNameIn, - Note = "Init" - }; - } - var currFluxLogSent = elencoSyncState.FirstOrDefault(x => x.TableName == tabNameOut); - // se nullo inizializzo - if (currFluxLogSent == null) - { - currFluxLogSent = new SyncStateModel() + doSend = (!fluxLogDataRef.LastOrDefault().Equals(fluxLogData.LastOrDefault())); + } + else { - LastIdx = 0, - LastUpdate = adesso, - TableName = tabNameOut, - Note = "Init" - }; - } - // verifica se ci siano dati da trasmettere (sui valori LastIdx) - if (currFluxLogRead.LastIdx > currFluxLogSent.LastIdx) - { - // recupero i dati dal DB... - var data2send = dbProxy.MachFluxLogGetNew(currFluxLogSent.LastIdx); - // se ho dati preparo invio - if (data2send != null && data2send.Count > 0) + doSend = true; + } + // controllo se devo inviare + if (doSend) { string sVal = ""; - foreach (var fLog2send in data2send) + foreach (var fLog2send in fluxLogData) { - sVal = $"[DYNDATA] |{fLog2send.DtEvento:yyyy-MM-dd HH:mm:ss}|{fLog2send.CodFlux}|{fLog2send.Valore}"; + var kvpFlux = fLog2send.valString.Split(";"); + sVal = $"[DYNDATA] |{fLog2send.dtRif:yyyy-MM-dd HH:mm:ss}|{kvpFlux[0]}|{kvpFlux[1]}"; // chiamo accodamento con dataora corretta... accodaFLog(sVal, qEncodeFLog(fLog2send.DtEvento, fLog2send.CodFlux, fLog2send.Valore)); } fatto = true; + + // salvo info... + fluxLogDataRef = fluxLogData; } - - // aggiorno idx inviato... - currFluxLogSent.Note = $"Updated from {currFluxLogRead.LastIdx}"; - currFluxLogSent.LastUpdate = adesso; - currFluxLogSent.LastIdx = currFluxLogRead.LastIdx; } - // alla fine aggiorno i dati inviati! - dbProxy.SyncStateUpsert(currFluxLogSent); - return fatto; }