diff --git a/MP.Core/Utils.cs b/MP.Core/Utils.cs index 5be06dbe..b138599a 100644 --- a/MP.Core/Utils.cs +++ b/MP.Core/Utils.cs @@ -49,6 +49,7 @@ namespace MP.Core public const string redisOdlLastByMac = redisXdlData + "LastOdlByMac"; public const string redisOdlList = redisXdlData + "OdlList"; + public const string redisOdlStats = redisXdlData + "OdlStats"; public const string redisOprList = redisBaseAddr + "Cache:OprList"; diff --git a/MP.Data/Controllers/MpSpecController.cs b/MP.Data/Controllers/MpSpecController.cs index 83a95c6c..d536a4ee 100644 --- a/MP.Data/Controllers/MpSpecController.cs +++ b/MP.Data/Controllers/MpSpecController.cs @@ -54,63 +54,57 @@ namespace MP.Data.Controllers /// Stacca un nuovo counter x il tipo richiesto /// /// - public AnagCountersModel AnagCountersGetNext(string cntType) + public async Task AnagCountersGetNextAsync(string cntType) { AnagCountersModel answ = new AnagCountersModel(); + using var dbCtx = new MoonProContext(options); bool outTable = true; if (outTable) { - using (var dbCtx = new MoonProContext(options)) + var pCntType = new SqlParameter("@CntType", cntType); + var pLastNum = new SqlParameter { - var pCntType = new SqlParameter("@CntType", cntType); - var pLastNum = new SqlParameter - { - ParameterName = "@LastNum", - SqlDbType = SqlDbType.Int, - Direction = ParameterDirection.Output - }; + ParameterName = "@LastNum", + SqlDbType = SqlDbType.Int, + Direction = ParameterDirection.Output + }; - var dbResult = dbCtx + var dbResult = await dbCtx .DbSetAnagCount .FromSqlRaw("EXEC dbo.stp_getNextNumb @CntType, @LastNum OUTPUT", pCntType, pLastNum) .AsNoTracking() - .AsEnumerable() - .FirstOrDefault(); - if (dbResult != null) - { - answ = dbResult; - } + .FirstOrDefaultAsync(); + if (dbResult != null) + { + answ = dbResult; } } else { // se si volessero impiegare parametri OUTPUT (qui ne mancherebbe 1 nella stored x CntCode...) - using (var dbCtx = new MoonProContext(options)) + var pCntType = new SqlParameter("@CntType", cntType); + var pLastNum = new SqlParameter { - var pCntType = new SqlParameter("@CntType", cntType); - var pLastNum = new SqlParameter - { - ParameterName = "@LastNum", - SqlDbType = SqlDbType.Int, - Direction = ParameterDirection.Output - }; - var pCntCode = new SqlParameter - { - ParameterName = "@CntCode", - SqlDbType = SqlDbType.NVarChar, - Direction = ParameterDirection.Output - }; - var dbResult = dbCtx - .Database - .ExecuteSqlRaw("EXEC dbo.stp_getNextNumb @CntType, @LastNum OUTPUT, @CntCode OUTPUT", pCntType, pLastNum, pCntCode); - if (dbResult != 0) - { - answ.CntType = cntType; - answ.CntCode = $"{pCntCode.Value}"; - int lNum = 0; - int.TryParse($"{pLastNum.Value}", out lNum); - answ.LastNum = lNum; - } + ParameterName = "@LastNum", + SqlDbType = SqlDbType.Int, + Direction = ParameterDirection.Output + }; + var pCntCode = new SqlParameter + { + ParameterName = "@CntCode", + SqlDbType = SqlDbType.NVarChar, + Direction = ParameterDirection.Output + }; + var dbResult = await dbCtx + .Database + .ExecuteSqlRawAsync("EXEC dbo.stp_getNextNumb @CntType, @LastNum OUTPUT, @CntCode OUTPUT", pCntType, pLastNum, pCntCode); + if (dbResult != 0) + { + answ.CntType = cntType; + answ.CntCode = $"{pCntCode.Value}"; + int lNum = 0; + int.TryParse($"{pLastNum.Value}", out lNum); + answ.LastNum = lNum; } } return answ; @@ -782,25 +776,13 @@ namespace MP.Data.Controllers /// /// record dossier da modificare /// - public async Task DossiersInsert(DossierModel newRec) + public async Task DossiersInsertAsync(DossierModel newRec) { - bool fatto = false; - using (var dbCtx = new MoonPro_FluxContext(_configuration)) - { - try - { - dbCtx - .DbSetDossiers - .Add(newRec); - await dbCtx.SaveChangesAsync(); - fatto = true; - } - catch (Exception exc) - { - Log.Error($"Eccezione durante DossiersInsert{Environment.NewLine}{exc}"); - } - } - return fatto; + using var dbCtx = new MoonPro_FluxContext(_configuration); + dbCtx + .DbSetDossiers + .AddAsync(newRec); + return await dbCtx.SaveChangesAsync() > 0; } /// @@ -832,21 +814,17 @@ namespace MP.Data.Controllers /// macchina /// Data min x selezione /// Data MAX x selezione - public bool DossiersTakeParamsSnapshotLast(string idxMacchina, DateTime dtMin, DateTime dtMax) + public async Task DossiersTakeParamsSnapshotLastAsync(string idxMacchina, DateTime dtMin, DateTime dtMax) { - bool answ = false; - using (var dbCtx = new MoonPro_FluxContext(_configuration)) - { - var pIdxMacchina = new SqlParameter("@IdxMacchina", idxMacchina); - var pDtMin = new SqlParameter("@DtMin", dtMin); - var pDtMax = new SqlParameter("@DtMax", dtMax); + using var dbCtx = new MoonPro_FluxContext(_configuration); + var pIdxMacchina = new SqlParameter("@IdxMacchina", idxMacchina); + var pDtMin = new SqlParameter("@DtMin", dtMin); + var pDtMax = new SqlParameter("@DtMax", dtMax); - var dbResult = dbCtx - .Database - .ExecuteSqlRaw("EXEC stp_FL_TakeSnapshotLast @IdxMacchina,@DtMin,@DtMax", pIdxMacchina, pDtMin, pDtMax); - answ = true; - } - return answ; + var dbResult = await dbCtx + .Database + .ExecuteSqlRawAsync("EXEC stp_FL_TakeSnapshotLast @IdxMacchina,@DtMin,@DtMax", pIdxMacchina, pDtMin, pDtMax); + return dbResult != 0; } /// @@ -854,37 +832,25 @@ namespace MP.Data.Controllers /// /// record dossier da modificare /// - public async Task DossiersUpdateValore(DossierModel editRec) + public async Task DossiersUpdateValoreAsync(DossierModel editRec) { - bool fatto = false; - using (var dbCtx = new MoonPro_FluxContext(_configuration)) - { - try - { - var currRec = dbCtx - .DbSetDossiers - .Where(x => x.IdxDossier == editRec.IdxDossier) - .FirstOrDefault(); - if (currRec != null) - { - currRec.Valore = editRec.Valore; - dbCtx.Entry(currRec).State = EntityState.Modified; - } - else - { - dbCtx + using var dbCtx = new MoonPro_FluxContext(_configuration); + var currRec = await dbCtx .DbSetDossiers - .Add(editRec); - } - await dbCtx.SaveChangesAsync(); - fatto = true; - } - catch (Exception exc) - { - Log.Error($"Eccezione durante DossiersUpdateRecord{Environment.NewLine}{exc}"); - } + .Where(x => x.IdxDossier == editRec.IdxDossier) + .FirstOrDefaultAsync(); + if (currRec != null) + { + currRec.Valore = editRec.Valore; + dbCtx.Entry(currRec).State = EntityState.Modified; } - return fatto; + else + { + await dbCtx + .DbSetDossiers + .AddAsync(editRec); + } + return await dbCtx.SaveChangesAsync() > 0; } /// @@ -920,25 +886,14 @@ namespace MP.Data.Controllers /// /// /// - public async Task EvListInsert(EventListModel newRec) + public async Task EvListInsertAsync(EventListModel newRec) { - bool fatto = false; - using (var dbCtx = new MoonProContext(options)) - { - try - { - var currRec = dbCtx - .DbSetEvList - .Add(newRec); - await dbCtx.SaveChangesAsync(); - } - catch (Exception exc) - { - Log.Error($"Eccezione durante EvListInsert{Environment.NewLine}{exc}"); - } - } - await Task.Delay(1); - return fatto; + using var dbCtx = new MoonProContext(options); + var currRec = await dbCtx + .DbSetEvList + .AddAsync(newRec); + + return await dbCtx.SaveChangesAsync() > 0; } /// @@ -952,10 +907,10 @@ namespace MP.Data.Controllers /// /// Restitusice list dei record statistiche raccolti (da integrare a quelli rpesenti in Redis...) /// - public async Task> FluxLogDataRedux(string idxMaccSel, List fluxList, Periodo currPeriodo, Enums.ValSelection valMode, Enums.DataInterval intReq, int maxItem) + public async Task> FluxLogDataReduxAsync(string idxMaccSel, List fluxList, Periodo currPeriodo, Enums.ValSelection valMode, Enums.DataInterval intReq, int maxItem) { List procStats = new List(); - Log.Info($"Inizio FluxLogDataRedux | idxMaccSel: {idxMaccSel} | periodo: {currPeriodo.Inizio:yyyy-MM-dd} --> {currPeriodo.Fine:yyyy-MM-dd}"); + Log.Info($"Inizio FluxLogDataReduxAsync | idxMaccSel: {idxMaccSel} | periodo: {currPeriodo.Inizio:yyyy-MM-dd} --> {currPeriodo.Fine:yyyy-MM-dd}"); TimeSpan step = TimeSpan.FromHours(1); switch (intReq) { @@ -982,7 +937,7 @@ namespace MP.Data.Controllers // processo 1:1 ogni flusso foreach (var item in fluxList) { - Log.Info($"FluxLogDataRedux | Flux: {item}"); + Log.Info($"FluxLogDataReduxAsync | Flux: {item}"); int numRecProc = 0; Stopwatch sw = new Stopwatch(); sw.Start(); @@ -1058,9 +1013,9 @@ namespace MP.Data.Controllers // parametri x periodo (base) var pDtStart = new SqlParameter("@DtStart", slot.Inizio); var pDtEnd = new SqlParameter("@DtEnd", slot.Fine); - var dbResult = dbCtx - .Database - .ExecuteSqlRaw("EXEC man.stp_ReduceFluxLog @IdxMacchina, @CodFlux, @DtStart, @DtEnd, @OnlyTest", pIdxMacchina, pCodFlux, pDtStart, pDtEnd, pOnlyTest); + var dbResult = await dbCtx + .Database + .ExecuteSqlRawAsync("EXEC man.stp_ReduceFluxLog @IdxMacchina, @CodFlux, @DtStart, @DtEnd, @OnlyTest", pIdxMacchina, pCodFlux, pDtStart, pDtEnd, pOnlyTest); } } @@ -1083,7 +1038,7 @@ namespace MP.Data.Controllers }; procStats.Add(currStat); } - Log.Info($"FINE FluxLogDataRedux | idxMaccSel: {idxMaccSel} | periodo: {currPeriodo.Inizio:yyyy-MM-dd} --> {currPeriodo.Fine:yyyy-MM-dd}"); + Log.Info($"FINE FluxLogDataReduxAsync | idxMaccSel: {idxMaccSel} | periodo: {currPeriodo.Inizio:yyyy-MM-dd} --> {currPeriodo.Fine:yyyy-MM-dd}"); return procStats; } @@ -1914,73 +1869,63 @@ namespace MP.Data.Controllers /// Conferma con rettifica (ev 121) x pezzi lasciati in macchina /// Modo conferma produzione (0=periodo, 1=giorno, 2=turno) /// - public async Task ODLClose(int idxOdl, string idxMacchina, int matrOpr, bool confPezzi, bool confRett, int modoConfProd) + public async Task ODLCloseAsync(int idxOdl, string idxMacchina, int matrOpr, bool confPezzi, bool confRett, int modoConfProd) { bool fatto = false; - await Task.Delay(1); if (idxOdl > 0) { - using (var dbCtx = new MoonProContext(options)) + using var dbCtx = new MoonProContext(options); + DateTime adesso = DateTime.Now; + // preparo i parametri + var IdxODL = new SqlParameter("@IdxODL", idxOdl); + var IdxMacchina = new SqlParameter("@IdxMacchina", idxMacchina); + + + // se richiesto confermo produzione + if (confPezzi) { - DateTime adesso = DateTime.Now; - // preparo i parametri - var IdxODL = new SqlParameter("@IdxODL", idxOdl); - var IdxMacchina = new SqlParameter("@IdxMacchina", idxMacchina); + var MatrApp = new SqlParameter("@MatrApp", idxMacchina); - // FARE FIXME TODO !!! da valutare casi setup/autoconferma... -#if false - // controllo se HO pezzi da confermare... - var statoProd = StatoProdMacchina(idxMacchina); - if (statoProd.pezziNonConfermati < 1) - { } -#endif + /* ---------------------------------- + * CONFERMA PEZZI + * + * condizioni da verificare: + * - gestione rettifica (ev121) / pezzi da LASCIARE in macchina + * - conferma a zero pezzi (setup) oppure con i pezzi fatti e non ancora confermati + * + * + * + * */ - // se richiesto confermo produzione - if (confPezzi) - { - var MatrApp = new SqlParameter("@MatrApp", idxMacchina); + // recupero i dati dei pezzi da confermare... con DbSetPzProd + exec + // stp_PzProd_getByMacchina 'SIMUL_01' - /* ---------------------------------- - * CONFERMA PEZZI - * - * condizioni da verificare: - * - gestione rettifica (ev121) / pezzi da LASCIARE in macchina - * - conferma a zero pezzi (setup) oppure con i pezzi fatti e non ancora confermati - * - * - * - * */ + // stp_ConfermaProduzCompletaFull + /* + * @idxMacchina NVARCHAR(50), + @MatrApp INT, + @dataFrom DATETIME, + @dataTo DATETIME, + @pezziConf INT, + @pezziLasciati INT, -- pezzi lasciati = evento 121 (-) pre conferma e (+) dopo --> da lasciare in macchina post conferma + @pezziScar INT = 0, -- pezzi scartati (registrati da 2016.11.20) DA INDICARE COME VALORE > 0!!! sennò faccio ABS... + @TipoConf INT = 0, -- Tipo intervallo conferma: 0 = periodo intero, 1 = per giorni, 2 = per turni + @DataOraApp DATETIME = NULL, -- di norma GETDATE() nel programma - serve per ricalcolo + @TestConferma BIT = 1 -- TestConferma : 1 = verifica conf. duplicata e inserisci in ElencoConfermeProd, 0 = nessuna verifica e inserimento ( per ricalcolo ) + */ + } - // recupero i dati dei pezzi da confermare... con DbSetPzProd + exec - // stp_PzProd_getByMacchina 'SIMUL_01' - - // stp_ConfermaProduzCompletaFull - /* - * @idxMacchina NVARCHAR(50), - @MatrApp INT, - @dataFrom DATETIME, - @dataTo DATETIME, - @pezziConf INT, - @pezziLasciati INT, -- pezzi lasciati = evento 121 (-) pre conferma e (+) dopo --> da lasciare in macchina post conferma - @pezziScar INT = 0, -- pezzi scartati (registrati da 2016.11.20) DA INDICARE COME VALORE > 0!!! sennò faccio ABS... - @TipoConf INT = 0, -- Tipo intervallo conferma: 0 = periodo intero, 1 = per giorni, 2 = per turni - @DataOraApp DATETIME = NULL, -- di norma GETDATE() nel programma - serve per ricalcolo - @TestConferma BIT = 1 -- TestConferma : 1 = verifica conf. duplicata e inserisci in ElencoConfermeProd, 0 = nessuna verifica e inserimento ( per ricalcolo ) - */ - } - - // ora chiudo ODL con stored SENZA ritorno... - try - { - var dbResult = dbCtx - .Database - .ExecuteSqlRaw("EXEC stp_ODL_fineProd @IdxODL, @IdxMacchina", IdxODL, IdxMacchina); - fatto = true; - } - catch (Exception exc) - { - Log.Error($"Eccezione durante ODLClose{Environment.NewLine}{exc}"); - } + // ora chiudo ODL con stored SENZA ritorno... + try + { + var dbResult = await dbCtx + .Database + .ExecuteSqlRawAsync("EXEC stp_ODL_fineProd @IdxODL, @IdxMacchina", IdxODL, IdxMacchina); + fatto = dbResult != 0; + } + catch (Exception exc) + { + Log.Error($"Eccezione durante ODLCloseAsync{Environment.NewLine}{exc}"); } } return fatto; @@ -2003,6 +1948,7 @@ namespace MP.Data.Controllers return dbResult; } +#if false /// /// Elenco TUTTI GLI ODL /// @@ -2025,27 +1971,26 @@ namespace MP.Data.Controllers } } return dbResult; - } + } +#endif /// /// Statistiche ODL calcolate (da stored stp_STAT_ODL) /// /// - public async Task> OdlStart(int IdxOdl) + public async Task> OdlGetStatAsync(int IdxOdl) { List dbResult = new List(); if (IdxOdl > 0) { - using (var dbCtx = new MoonProContext(options)) - { - var IdxODL = new SqlParameter("@IdxODL", IdxOdl); + using var dbCtx = new MoonProContext(options); + var IdxODL = new SqlParameter("@IdxODL", IdxOdl); - dbResult = await dbCtx - .DbSetStatOdl - .FromSqlRaw("EXEC stp_STAT_ODL @IdxODL", IdxODL) - .AsNoTracking() - .ToListAsync(); - } + dbResult = await dbCtx + .DbSetStatOdl + .FromSqlRaw("EXEC stp_STAT_ODL @IdxODL", IdxODL) + .AsNoTracking() + .ToListAsync(); } return dbResult; } @@ -2128,27 +2073,15 @@ namespace MP.Data.Controllers /// /// /// - public async Task PODL_getByKey(int idxPODL) + public async Task PODL_getByKeyAsync(int idxPODL) { - PODLModel dbResult = new PODLModel(); - using (var dbCtx = new MoonProContext(options)) - { - try - { - dbResult = dbCtx - .DbSetPODL - .AsNoTracking() - .Where(x => x.IdxPromessa == idxPODL) - .Include(a => a.ArticoloNav) - .FirstOrDefault(); - } - catch (Exception exc) - { - Log.Error($"Eccezione durante PODL_getByKey{Environment.NewLine}{exc}"); - } - } - await Task.Delay(1); - return dbResult; + using var dbCtx = new MoonProContext(options); + return await dbCtx + .DbSetPODL + .AsNoTracking() + .Where(x => x.IdxPromessa == idxPODL) + .Include(a => a.ArticoloNav) + .FirstOrDefaultAsync() ?? new(); } /// @@ -2355,45 +2288,34 @@ namespace MP.Data.Controllers /// /// /// - public async Task PODLUpdateRecord(PODLModel editRec) + public async Task PODLUpdateRecordAsync(PODLModel editRec) { - bool fatto = false; - using (var dbCtx = new MoonProContext(options)) - { - try - { - var currRec = dbCtx - .DbSetPODL - .Where(x => x.IdxPromessa == editRec.IdxPromessa) - .FirstOrDefault(); - if (currRec != null) - { - currRec.CodGruppo = editRec.CodGruppo; - currRec.CodArticolo = editRec.CodArticolo; - currRec.IdxMacchina = editRec.IdxMacchina; - currRec.KeyBCode = editRec.KeyBCode; - currRec.KeyRichiesta = editRec.KeyRichiesta; - currRec.NumPezzi = editRec.NumPezzi; - currRec.Tcassegnato = editRec.Tcassegnato; - currRec.Attivabile = editRec.Attivabile; - currRec.Note = editRec.Note; - dbCtx.Entry(currRec).State = EntityState.Modified; - } - else - { - dbCtx + using var dbCtx = new MoonProContext(options); + var currRec = await dbCtx .DbSetPODL - .Add(editRec); - } - await dbCtx.SaveChangesAsync(); - fatto = true; - } - catch (Exception exc) - { - Log.Error($"Eccezione durante PODLUpdateRecord{Environment.NewLine}{exc}"); - } + .Where(x => x.IdxPromessa == editRec.IdxPromessa) + .FirstOrDefaultAsync(); + if (currRec != null) + { + currRec.CodGruppo = editRec.CodGruppo; + currRec.CodArticolo = editRec.CodArticolo; + currRec.IdxMacchina = editRec.IdxMacchina; + currRec.KeyBCode = editRec.KeyBCode; + currRec.KeyRichiesta = editRec.KeyRichiesta; + currRec.NumPezzi = editRec.NumPezzi; + currRec.Tcassegnato = editRec.Tcassegnato; + currRec.Attivabile = editRec.Attivabile; + currRec.Note = editRec.Note; + dbCtx.Entry(currRec).State = EntityState.Modified; } - return fatto; + else + { + await dbCtx + .DbSetPODL + .AddAsync(editRec); + } + return await dbCtx.SaveChangesAsync() > 0; + } /// @@ -2440,26 +2362,21 @@ namespace MP.Data.Controllers /// Elimina record /// /// - public bool TemplateKitDelete(TemplateKitModel rec2del) + public async Task TemplateKitDeleteAsync(TemplateKitModel rec2del) { - bool fatto = false; - using (var dbCtx = new MoonProContext(options)) + using var dbCtx = new MoonProContext(options); + var actRec = await dbCtx + .DbSetTempKit + .Where(x => x.CodArtParent == rec2del.CodArtParent && x.CodArtChild == rec2del.CodArtChild) + .FirstOrDefaultAsync(); + // se ci fosse aggiorno... + if (actRec != null) { - var actRec = dbCtx - .DbSetTempKit - .Where(x => x.CodArtParent == rec2del.CodArtParent && x.CodArtChild == rec2del.CodArtChild) - .FirstOrDefault(); - // se ci fosse aggiorno... - if (actRec != null) - { - dbCtx - .DbSetTempKit - .Remove(actRec); - } - var res = dbCtx.SaveChanges(); - fatto = res != 0; + dbCtx + .DbSetTempKit + .Remove(actRec); } - return fatto; + return await dbCtx.SaveChangesAsync() > 0; } /// diff --git a/MP.Data/Controllers/MpTabController.cs b/MP.Data/Controllers/MpTabController.cs index 55981185..1a5c469b 100644 --- a/MP.Data/Controllers/MpTabController.cs +++ b/MP.Data/Controllers/MpTabController.cs @@ -688,7 +688,7 @@ namespace MP.Data.Controllers } catch (Exception exc) { - Log.Error($"Eccezione durante EvListInsert{Environment.NewLine}{exc}"); + Log.Error($"Eccezione durante EvListInsertAsync{Environment.NewLine}{exc}"); } } await Task.Delay(1); @@ -1709,7 +1709,7 @@ namespace MP.Data.Controllers } catch (Exception exc) { - Log.Error($"Eccezione durante PODL_getByKey{Environment.NewLine}{exc}"); + Log.Error($"Eccezione durante PODL_getByKeyAsync{Environment.NewLine}{exc}"); } } return dbResult; diff --git a/MP.Data/Services/TabDataService.cs b/MP.Data/Services/TabDataService.cs index 2b6f631d..b1771ed1 100644 --- a/MP.Data/Services/TabDataService.cs +++ b/MP.Data/Services/TabDataService.cs @@ -2412,7 +2412,7 @@ namespace MP.Data.Services #if false Log.Debug($"PODL_getByKey | {idxPODL} | {source} | {sw.Elapsed.TotalMilliseconds}ms"); #endif - string callName = $"PODL_getByKey.{source}"; + string callName = $"PODL_getByKeyAsync.{source}"; int numRec = esCollect.RecordCall(callName, sw.Elapsed.TotalMilliseconds); if (numRec >= nRecLog) { diff --git a/MP.SPEC/Components/AskCloseOdl.razor.cs b/MP.SPEC/Components/AskCloseOdl.razor.cs index d82ff0ea..1defeafe 100644 --- a/MP.SPEC/Components/AskCloseOdl.razor.cs +++ b/MP.SPEC/Components/AskCloseOdl.razor.cs @@ -81,7 +81,7 @@ namespace MP.SPEC.Components if (currOdl != null && currOdl.IdxOdl == idxOdl) { // effettua chiusura sul DB - fatto = await MDService.ODLClose(idxOdl, currOdl.IdxMacchina, 0, true); + fatto = await MDService.ODLCloseAsync(idxOdl, currOdl.IdxMacchina, 0, true); if (fatto) { Log.Info($"Effettuata chiusura ODL {idxOdl}"); diff --git a/MP.SPEC/Components/ListDossiers.razor.cs b/MP.SPEC/Components/ListDossiers.razor.cs index 4ec778d3..d2ea0aa0 100644 --- a/MP.SPEC/Components/ListDossiers.razor.cs +++ b/MP.SPEC/Components/ListDossiers.razor.cs @@ -105,7 +105,7 @@ namespace MP.SPEC.Components await Task.Delay(1); if (currRecord != null) { - listaFlux = MDService.FluxLogDtoGetByFlux(currRecord.Valore); + listaFlux = MDService.FluxLogDtoConvert(currRecord.Valore); } StateHasChanged(); } @@ -254,7 +254,7 @@ namespace MP.SPEC.Components { currRecord = selRec; await RecordSel.InvokeAsync(selRec); - listaFlux = MDService.FluxLogDtoGetByFlux(selRec.Valore); + listaFlux = MDService.FluxLogDtoConvert(selRec.Valore); await toggleTableFlux(); } @@ -271,7 +271,7 @@ namespace MP.SPEC.Components string newVal = JsonConvert.SerializeObject(updatedResult); currRecord.Valore = newVal; // METODO PER UPDATE FLUX - await MDService.DossiersUpdateValore(currRecord); + await MDService.DossiersUpdateValoreAsync(currRecord); currFluxLogDto = null; isEditing = false; await InvokeAsync(StateHasChanged); diff --git a/MP.SPEC/Components/ListODL.razor.cs b/MP.SPEC/Components/ListODL.razor.cs index 9d100587..42f4107d 100644 --- a/MP.SPEC/Components/ListODL.razor.cs +++ b/MP.SPEC/Components/ListODL.razor.cs @@ -109,7 +109,7 @@ namespace MP.SPEC.Components if (currRecord != null) { // effettua chiusura sul DB - await MDService.ODLClose(currRecord.IdxOdl, currRecord.IdxMacchina, 0, true); + await MDService.ODLCloseAsync(currRecord.IdxOdl, currRecord.IdxMacchina, 0, true); Log.Info($"Effettuata chiusura ODL {currRecord.IdxOdl}"); // RESETTO task x setComm, setArt, SetPzComm @@ -426,7 +426,7 @@ namespace MP.SPEC.Components showStats = true; if (currRec != null) { - ListOdlStats = await MDService.StatOdl(currRec.IdxOdl); + ListOdlStats = await MDService.OdlStatsAsync(currRec.IdxOdl); } else { diff --git a/MP.SPEC/Components/ODLPlot.razor.cs b/MP.SPEC/Components/ODLPlot.razor.cs index 9e51d6e7..6a2fbafc 100644 --- a/MP.SPEC/Components/ODLPlot.razor.cs +++ b/MP.SPEC/Components/ODLPlot.razor.cs @@ -64,7 +64,7 @@ namespace MP.SPEC.Components Data.Clear(); Labels.Clear(); colors.Clear(); - ListRecords = await MDService.StatOdl(SelectedOdl); + ListRecords = await MDService.OdlStatsAsync(SelectedOdl); // se hideSpenta --> filtro stato 11 = spenta... if (hideSpenta) { diff --git a/MP.SPEC/Components/ScratchPodlKit.razor.cs b/MP.SPEC/Components/ScratchPodlKit.razor.cs index 9f29a46f..d4cb17ef 100644 --- a/MP.SPEC/Components/ScratchPodlKit.razor.cs +++ b/MP.SPEC/Components/ScratchPodlKit.razor.cs @@ -109,7 +109,7 @@ namespace MP.SPEC.Components if (!await JSRuntime.InvokeAsync("confirm", "Eliminazione riga Istanza KIT: sei sicuro di voler procedere?")) return; - var done = await MDService.IstKitDelete(selRec); + var done = await MDService.IstKitDeleteAsync(selRec); EditRecord = null; await ResetDataAsync(); } @@ -119,7 +119,7 @@ namespace MP.SPEC.Components if (!await JSRuntime.InvokeAsync("confirm", "Confermi di voler salvare le modifiche?")) return; - var done = await MDService.IstKitUpsert(selRec); + var done = await MDService.IstKitUpsertAsync(selRec); EditRecord = null; await ResetDataAsync(); } diff --git a/MP.SPEC/Data/MpDataService.cs b/MP.SPEC/Data/MpDataService.cs index d5b0051d..1aa19dcd 100644 --- a/MP.SPEC/Data/MpDataService.cs +++ b/MP.SPEC/Data/MpDataService.cs @@ -124,7 +124,7 @@ namespace MP.SPEC.Data } activity?.SetTag("data.source", source); activity?.Stop(); - LogTrace($"ActionGetReq Read from {source}: {activity?.Duration.TotalMilliseconds}ms"); + LogTrace($"ActionGetReq | {source} | {activity?.Duration.TotalMilliseconds}ms"); return result; } @@ -152,15 +152,15 @@ namespace MP.SPEC.Data /// Stacca un nuovo counter x il tipo richiesto /// /// - public AnagCountersModel AnagCountersGetNext(string cntType) + public async Task AnagCountersGetNextAsync(string cntType) { - using var activity = ActivitySource.StartActivity("AnagCountersGetNext"); + using var activity = ActivitySource.StartActivity("AnagCountersGetNextAsync"); AnagCountersModel result = new AnagCountersModel(); string source = "DB"; - result = dbController.AnagCountersGetNext(cntType); + result = await dbController.AnagCountersGetNextAsync(cntType); activity?.SetTag("data.source", source); activity?.Stop(); - LogTrace($"AnagCountersGetNext | {source} | {activity?.Duration.TotalMilliseconds}ms"); + LogTrace($"AnagCountersGetNextAsync | {source} | {activity?.Duration.TotalMilliseconds}ms"); return result; } @@ -190,12 +190,13 @@ namespace MP.SPEC.Data { using var activity = ActivitySource.StartActivity("AnagGruppiDeleteAsync"); bool result = false; + string source = "DB"; result = dbController.AnagGruppiDelete(updRec); // elimino cache redis... - await FlushCacheByTagAsync(Utils.redisAnagGruppi); - activity?.SetTag("data.source", "DB"); + await FlushCacheAsync(Utils.redisAnagGruppi); + activity?.SetTag("data.source", source); activity?.Stop(); - LogTrace($"AnagGruppiDeleteAsync | CodGruppo {updRec.CodGruppo} | {activity?.Duration.TotalMilliseconds}ms"); + LogTrace($"AnagGruppiDeleteAsync | CodGruppo {updRec.CodGruppo} | {source}{activity?.Duration.TotalMilliseconds}ms"); return result; } @@ -208,12 +209,13 @@ namespace MP.SPEC.Data { using var activity = ActivitySource.StartActivity("AnagGruppiUpsertAsync"); bool result = false; + string source = "DB"; result = dbController.AnagGruppiUpsert(UpdRec); // elimino cache redis... - await FlushCacheByTagAsync(Utils.redisAnagGruppi); - activity?.SetTag("data.source", "DB"); + await FlushCacheAsync(Utils.redisAnagGruppi); + activity?.SetTag("data.source", source); activity?.Stop(); - LogTrace($"AnagGruppiUpsertAsync | CodGruppo {UpdRec.CodGruppo} | {activity?.Duration.TotalMilliseconds}ms"); + LogTrace($"AnagGruppiUpsertAsync | CodGruppo {UpdRec.CodGruppo} | {source} | {activity?.Duration.TotalMilliseconds}ms"); return result; } @@ -294,12 +296,12 @@ namespace MP.SPEC.Data public async Task ArticoliDeleteRecord(AnagArticoliModel currRec) { using var activity = ActivitySource.StartActivity("ArticoliDeleteRecord"); - string source = "DB+REDIS"; + string source = "DB"; bool fatto = await dbController.ArticoliDeleteRecord(currRec); - await resetCacheArticoli(); + await FlushCacheArticoli(); activity?.SetTag("data.source", source); activity?.Stop(); - LogTrace($"ArticoliDeleteRecord | Read from {source}: {activity?.Duration.TotalMilliseconds}ms"); + LogTrace($"ArticoliDeleteRecord | {source} | {activity?.Duration.TotalMilliseconds}ms"); return fatto; } @@ -370,12 +372,12 @@ namespace MP.SPEC.Data public async Task ArticoliUpdateRecord(AnagArticoliModel currRec) { using var activity = ActivitySource.StartActivity("ArticoliUpdateRecord"); - string source = "DB+REDIS"; + string source = "DB"; bool fatto = await dbController.ArticoliUpdateRecord(currRec); - await resetCacheArticoli(); + await FlushCacheArticoli(); activity?.SetTag("data.source", source); activity?.Stop(); - LogTrace($"ArticoliUpdateRecord | Read from {source}: {activity?.Duration.TotalMilliseconds}ms"); + LogTrace($"ArticoliUpdateRecord | {source} | {activity?.Duration.TotalMilliseconds}ms"); return fatto; } @@ -462,10 +464,10 @@ namespace MP.SPEC.Data { using var activity = ActivitySource.StartActivity("ConfigResetCacheAsync"); string source = "REDIS"; - await ResetConfigCache(); + await FlushCacheConfig(); activity?.SetTag("data.source", source); activity?.Stop(); - LogTrace($"ConfigResetCacheAsync Read from {source}: {activity?.Duration.TotalMilliseconds}ms"); + LogTrace($"ConfigResetCacheAsync | {source} | {activity?.Duration.TotalMilliseconds}ms"); } /// @@ -500,7 +502,7 @@ namespace MP.SPEC.Data using var activity = ActivitySource.StartActivity("ConfigUpdateAsync"); string source = "DB"; var updRes = await dbController.ConfigUpdateAsync(updRec); - await ResetConfigCache(); + await FlushCacheConfig(); activity?.SetTag("data.source", source); activity?.Stop(); LogTrace($"ConfigUpdateAsync Read from {source}: {activity?.Duration.TotalMilliseconds}ms"); @@ -511,9 +513,9 @@ namespace MP.SPEC.Data /// Restituisce le statistiche di DB maintenance eseguite /// /// - public Dictionary DbDedupStats() + public async Task> DbDedupStatsAsync() { - using var activity = ActivitySource.StartActivity("DbDedupStats"); + using var activity = ActivitySource.StartActivity("DbDedupStatsAsync"); string source = "REDIS"; Dictionary actStats = new Dictionary(); string currKey = $"{Utils.redisStatsDbMaint}"; @@ -529,7 +531,7 @@ namespace MP.SPEC.Data } activity?.SetTag("data.source", source); activity?.Stop(); - LogTrace($"DbDedupStats Read from {source}: {activity?.Duration.TotalMilliseconds}ms"); + LogTrace($"DbDedupStatsAsync Read from {source}: {activity?.Duration.TotalMilliseconds}ms"); return actStats; } @@ -553,10 +555,8 @@ namespace MP.SPEC.Data using var activity = ActivitySource.StartActivity("DossiersDeleteRecordAsync"); bool result = false; result = await dbController.DossiersDeleteRecordAsync(selRecord); - // elimino cache redis... - //RedisValue pattern = new RedisValue($"{Utils.redisDossByMac}:*"); - //bool answ = await ExecFlushRedisPatternAsync(pattern); - await FlushCacheByTagAsync(Utils.redisDossByMac); + // elimino cache... + await FlushCacheAsync(Utils.redisDossByMac); activity?.SetTag("data.source", "DB"); activity?.Stop(); LogTrace($"DossiersDeleteRecordAsync | IdxMacchina {selRecord.IdxMacchina} | DtRif {selRecord.DtRif} | IdxODL {selRecord.IdxODL} | {activity?.Duration.TotalMilliseconds}ms"); @@ -591,13 +591,14 @@ namespace MP.SPEC.Data /// public async Task DossiersInsert(DossierModel currDoss) { - using var activity = ActivitySource.StartActivity("DossiersInsert"); + using var activity = ActivitySource.StartActivity("DossiersInsertAsync"); string source = "DB"; // aggiorno record sul DB - bool answ = await dbController.DossiersInsert(currDoss); + bool answ = await dbController.DossiersInsertAsync(currDoss); + answ = await FlushCacheAsync(Utils.redisDossByMac); activity?.SetTag("data.source", source); activity?.Stop(); - LogTrace($"DossiersInsert | Read from {source}: {activity?.Duration.TotalMilliseconds}ms"); + LogTrace($"DossiersInsertAsync | {source} | {activity?.Duration.TotalMilliseconds}ms"); return answ; } @@ -610,18 +611,17 @@ namespace MP.SPEC.Data /// public async Task DossiersTakeParamsSnapshotLast(string IdxMacchina, DateTime dtMin, DateTime dtMax) { - using var activity = ActivitySource.StartActivity("DossiersUpdateValore"); - string source = "DB+REDIS"; + using var activity = ActivitySource.StartActivity("DossiersUpdateValoreAsync"); + string source = "DB"; bool answ = false; Log.Info($"Richiesta snapshot per idxMaccSel {IdxMacchina} | periodo {dtMin} --> {dtMax}"); // chiamo stored x salvare parametri - dbController.DossiersTakeParamsSnapshotLast(IdxMacchina, dtMin, dtMax); - // elimino cache redis... - RedisValue pattern = new RedisValue($"{Utils.redisDossByMac}:*"); - answ = await ExecFlushRedisPatternAsync(pattern); - activity?.SetTag("data.source", "DB+REDIS"); + await dbController.DossiersTakeParamsSnapshotLastAsync(IdxMacchina, dtMin, dtMax); + // elimino cache... + answ = await FlushCacheAsync(Utils.redisDossByMac); + activity?.SetTag("data.source", source); activity?.Stop(); - LogTrace($"DossiersTakeParamsSnapshotLast | Svuotata cache dossier | {pattern} | Read from {source}: {activity?.Duration.TotalMilliseconds}ms"); + LogTrace($"DossiersTakeParamsSnapshotLastAsync | Svuotata cache dossier | {source} | {activity?.Duration.TotalMilliseconds}ms"); return answ; } @@ -630,15 +630,16 @@ namespace MP.SPEC.Data /// /// /// - public async Task DossiersUpdateValore(DossierModel currDoss) + public async Task DossiersUpdateValoreAsync(DossierModel currDoss) { - using var activity = ActivitySource.StartActivity("DossiersUpdateValore"); + using var activity = ActivitySource.StartActivity("DossiersUpdateValoreAsync"); string source = "DB"; // aggiorno record sul DB - bool answ = await dbController.DossiersUpdateValore(currDoss); + bool answ = await dbController.DossiersUpdateValoreAsync(currDoss); + answ = await FlushCacheAsync(Utils.redisDossByMac); activity?.SetTag("data.source", source); activity?.Stop(); - LogTrace($"DossiersUpdateValore | Read from {source}: {activity?.Duration.TotalMilliseconds}ms"); + LogTrace($"DossiersUpdateValoreAsync | {source} | {activity?.Duration.TotalMilliseconds}ms"); return answ; } @@ -749,64 +750,15 @@ namespace MP.SPEC.Data /// public async Task EvListInsert(EventListModel newRec) { - using var activity = ActivitySource.StartActivity("EvListInsert"); + using var activity = ActivitySource.StartActivity("EvListInsertAsync"); string source = "DB"; - var result = await dbController.EvListInsert(newRec); + var result = await dbController.EvListInsertAsync(newRec); activity?.SetTag("data.source", source); activity?.Stop(); - LogTrace($"EvListInsert | Read from {source}: {activity?.Duration.TotalMilliseconds}ms"); + LogTrace($"EvListInsertAsync | Read from {source}: {activity?.Duration.TotalMilliseconds}ms"); return result; } - /// - /// Esegue flush memoria redis dato keyVal - /// - /// - /// - public bool ExecFlushRedisPattern(string pat2Flush) - { - using var activity = ActivitySource.StartActivity("ExecFlushRedisPattern"); - string source = "REDIS"; - bool answ = false; - var masterEndpoint = redisConn.GetEndPoints() - .Where(ep => redisConn.GetServer(ep).IsConnected && !redisConn.GetServer(ep).IsReplica) - .FirstOrDefault(); - - // sepattern è "*" elimino intero DB... - if (masterEndpoint != null && (pat2Flush.Equals(new RedisValue("*")) || pat2Flush == RedisValue.Null)) - { - redisConn.GetServer(masterEndpoint).FlushDatabase(database: redisDb.Database); - } - else - { - var server = redisConn.GetServer(masterEndpoint); - var keys = server.Keys(database: redisDb.Database, pattern: pat2Flush, pageSize: 1000); - var batch = new List(); - foreach (var key in keys) - { - batch.Add(key); - - // Flush in batches of 1000 - if (batch.Count >= 1000) - { - foreach (var item in batch) - redisDb.KeyDelete(item); - - batch.Clear(); - } - } - - // Flush remaining keys - foreach (var item in batch) - redisDb.KeyDelete(item); - } - answ = true; - activity?.SetTag("data.source", source); - activity?.Stop(); - LogTrace($"ExecFlushRedisPattern | Read from {source}: {activity?.Duration.TotalMilliseconds}ms"); - return answ; - } - /// /// Esegue flush memoria redis dato keyVal, async /// @@ -869,7 +821,7 @@ namespace MP.SPEC.Data /// Cancellazione FusionCache dato singolo tag /// /// - public async Task FlushCacheByTagAsync(string tag) + public async Task FlushCacheAsync(string tag) { if (string.IsNullOrWhiteSpace(tag)) return false; @@ -882,7 +834,7 @@ namespace MP.SPEC.Data /// Cancellazione FusionCache dato elenco tags /// /// - public async Task FlushCacheByTagAsync(List listTags) + public async Task FlushCacheAsync(List listTags) { if (listTags == null || listTags.Count == 0) return false; @@ -897,19 +849,6 @@ namespace MP.SPEC.Data return true; } - public async Task FlushCacheFluxLog() - { - using var activity = ActivitySource.StartActivity("FlushCacheFluxLog"); - string source = "REDIS"; - bool answ = false; - RedisValue pattern = new RedisValue($"{Utils.redisParetoFLKey}:*"); - answ = await ExecFlushRedisPatternAsync(pattern); - activity?.SetTag("data.source", source); - activity?.Stop(); - LogTrace($"FlushCacheFluxLog | Read from {source}: {activity?.Duration.TotalMilliseconds}ms"); - return answ; - } - /// /// Flush cache relativa a MP-IO x dati ODL /// @@ -932,23 +871,14 @@ namespace MP.SPEC.Data public async Task FlushRedisCache() { using var activity = ActivitySource.StartActivity("FlushRedisCache"); - string source = "REDIS"; + string source = "FUSION"; + // valutare se tenere RedisValue pattern = Utils.RedValue("*"); - bool answ = await ExecFlushRedisPatternAsync(pattern); + await ExecFlushRedisPatternAsync(pattern); + // pulisco fusionlog cache... + bool answ = await FlushCacheAsync(); activity?.Stop(); - LogTrace($"FlushRedisCache | Read from {source}: {activity?.Duration.TotalMilliseconds}ms"); - return answ; - } - - public async Task FlushRedisKey(string redKey) - { - using var activity = ActivitySource.StartActivity("FlushRedisKey"); - string source = "REDIS"; - RedisValue pattern = Utils.RedValue(redKey); - bool answ = await ExecFlushRedisPatternAsync(pattern); - activity?.SetTag("data.source", source); - activity?.Stop(); - LogTrace($"FlushRedisKey | Read from {source}: {activity?.Duration.TotalMilliseconds}ms"); + LogTrace($"FlushCache | {source} | {activity?.Duration.TotalMilliseconds}ms"); return answ; } @@ -964,19 +894,24 @@ namespace MP.SPEC.Data /// public async Task FluxLogDataRedux(string idxMaccSel, List fluxList, DtUtils.Periodo currPeriodo, Enums.ValSelection valMode, Enums.DataInterval intReq, int maxItem) { - using var activity = ActivitySource.StartActivity("FluxLogDataRedux"); - string source = "DB+REDIS"; - List procStats = await dbController.FluxLogDataRedux(idxMaccSel, fluxList, currPeriodo, valMode, intReq, maxItem); + using var activity = ActivitySource.StartActivity("FluxLogDataReduxAsync"); + string source = "DB"; + List procStats = await dbController.FluxLogDataReduxAsync(idxMaccSel, fluxList, currPeriodo, valMode, intReq, maxItem); // effettuo merge statistiche... - ProcDedupStatMerge(procStats); + await ProcDedupStatMergeAsync(procStats); // svuoto cache await FlushCacheFluxLog(); activity?.SetTag("data.source", source); activity?.Stop(); - LogTrace($"FluxLogDataRedux | Read from {source}: {activity?.Duration.TotalMilliseconds}ms"); + LogTrace($"FluxLogDataReduxAsync | Read from {source}: {activity?.Duration.TotalMilliseconds}ms"); } - public List FluxLogDtoGetByFlux(string Valore) + /// + /// Helper conversione valore raw in List di FluxLogDTO + /// + /// + /// + public List FluxLogDtoConvert(string Valore) { List answ = new List(); DossierFluxLogDTO? result = JsonConvert.DeserializeObject(Valore); @@ -1050,15 +985,15 @@ namespace MP.SPEC.Data public async Task ForceDbMaint(bool doExec = true, bool doUpdStat = true, bool doSave = true, int minPgCnt = 1000, int minAvgFrag = 10, int maxAvgFragReb = 50) { using var activity = ActivitySource.StartActivity("ForceDbMaint"); - string source = "DB+REDIS"; + string source = "DB"; await dbController.ForceDbMaint(doExec, doUpdStat, doSave, minPgCnt, minAvgFrag, maxAvgFragReb); // svuoto cache await FlushCacheFluxLog(); activity?.SetTag("data.source", source); activity?.Stop(); - LogTrace($"ForceDbMaint | Read from {source}: {activity?.Duration.TotalMilliseconds}ms"); + LogTrace($"ForceDbMaint | {source} | {activity?.Duration.TotalMilliseconds}ms"); // registro statistiche esecuzione - RecDbMaintStat(activity?.Duration ?? TimeSpan.FromSeconds(1)); + await RecDbMaintStatAsync(activity?.Duration ?? TimeSpan.FromSeconds(1)); } /// @@ -1072,7 +1007,7 @@ namespace MP.SPEC.Data bool result = false; result = await dbController.Grp2MaccDeleteAsync(rec2del); // elimino cache redis... - await ResetMacGrpCache(); + await FlushCacheMacGrp(); activity?.SetTag("data.source", "DB"); activity?.Stop(); LogTrace($"Grp2MaccDeleteAsync | CodGruppo {rec2del.CodGruppo} | IdxMacc {rec2del.IdxMacchina} | {activity?.Duration.TotalMilliseconds}ms"); @@ -1090,7 +1025,7 @@ namespace MP.SPEC.Data bool result = false; result = await dbController.Grp2MaccInsertAsync(upsRec); // elimino cache redis... - await ResetMacGrpCache(); + await FlushCacheMacGrp(); activity?.SetTag("data.source", "DB"); activity?.Stop(); LogTrace($"Grp2MaccInsertAsync | CodGruppo {upsRec.CodGruppo} | IdxMacc {upsRec.IdxMacchina} | {activity?.Duration.TotalMilliseconds}ms"); @@ -1108,7 +1043,7 @@ namespace MP.SPEC.Data bool result = false; result = await dbController.Grp2OperDeleteAsync(rec2del); // elimino cache redis... - await ResetOprGrpCache(); + await FlushCacheOprGrp(); activity?.SetTag("data.source", "DB"); activity?.Stop(); LogTrace($"Grp2OperDeleteAsync | CodGruppo {rec2del.CodGruppo} | MatrOpr {rec2del.MatrOpr} | {activity?.Duration.TotalMilliseconds}ms"); @@ -1126,7 +1061,7 @@ namespace MP.SPEC.Data bool result = false; result = await dbController.Grp2OperInsertAsync(upsRec); // elimino cache redis... - await ResetOprGrpCache(); + await FlushCacheOprGrp(); activity?.SetTag("data.source", "DB"); activity?.Stop(); LogTrace($"Grp2OperInsertAsync | CodGruppo {upsRec.CodGruppo} | MatrOpr {upsRec.MatrOpr} | {activity?.Duration.TotalMilliseconds}ms"); @@ -1149,7 +1084,7 @@ namespace MP.SPEC.Data /// Elimina record + svuotamento cache /// /// - public async Task IstKitDelete(IstanzeKitModel currRecord) + public async Task IstKitDeleteAsync(IstanzeKitModel currRecord) { using var activity = ActivitySource.StartActivity("IstKitDeleteAsync"); string source = "DB"; @@ -1204,7 +1139,7 @@ namespace MP.SPEC.Data /// Esegue salvataggio record + svuotamento cache /// /// - public async Task IstKitUpsert(IstanzeKitModel currRecord) + public async Task IstKitUpsertAsync(IstanzeKitModel currRecord) { using var activity = ActivitySource.StartActivity("IstKitUpsertAsync"); string source = "DB"; @@ -1462,9 +1397,9 @@ namespace MP.SPEC.Data /// idx idxMaccSel /// matricola operatore /// indica se confermare i pezzi priam di chiudere ODL - public async Task ODLClose(int idxOdl, string idxMacchina, int matrOpr, bool confPezzi) + public async Task ODLCloseAsync(int idxOdl, string idxMacchina, int matrOpr, bool confPezzi) { - using var activity = ActivitySource.StartActivity("ODLClose"); + using var activity = ActivitySource.StartActivity("ODLCloseAsync"); string source = "DB"; bool fatto = false; @@ -1482,11 +1417,13 @@ namespace MP.SPEC.Data int.TryParse(vModo, out modoConfProd); } // chiamo metodo conferma! - fatto = await dbController.ODLClose(idxOdl, idxMacchina, matrOpr, confPezzi, confRett, modoConfProd); + fatto = await dbController.ODLCloseAsync(idxOdl, idxMacchina, matrOpr, confPezzi, confRett, modoConfProd); + + await FlushCacheAsync(Utils.redisOdlByKey); activity?.SetTag("data.source", source); activity?.Stop(); - LogTrace($"ODLClose | Read from {source}: {activity?.Duration.TotalMilliseconds}ms"); + LogTrace($"ODLCloseAsync | Read from {source}: {activity?.Duration.TotalMilliseconds}ms"); return fatto; } @@ -1629,7 +1566,7 @@ namespace MP.SPEC.Data string source = "DB+REDIS"; var dbResult = await dbController.PODLDeleteRecord(currRec); // elimino cache redis... - await POdlFlushCache(); + await FlushCachePOdl(); activity?.SetTag("data.source", source); activity?.Stop(); LogTrace($"POdlDeleteRecord | Read from {source}: {activity?.Duration.TotalMilliseconds}ms"); @@ -1647,7 +1584,7 @@ namespace MP.SPEC.Data string source = "DB+REDIS"; var dbResult = await dbController.PODL_startSetup(currRec, 0, 1, 1, "", DateTime.Now); // elimino cache redis... - await POdlFlushCache(); + await FlushCachePOdl(); activity?.SetTag("data.source", source); activity?.Stop(); LogTrace($"POdlDoSetup | Read from {source}: {activity?.Duration.TotalMilliseconds}ms"); @@ -1661,6 +1598,15 @@ namespace MP.SPEC.Data /// public async Task POdlGetByKey(int idxPODL) { + string currKey = $"{Utils.redisPOdlByPOdl}:{idxPODL}"; + return await GetOrFetchAsync( + operationName: "POdlGetByKey", + cacheKey: currKey, + expiration: TimeSpan.FromMinutes(redisLongTimeCache), + fetchFunc: async () => await dbController.PODL_getByKeyAsync(idxPODL) ?? new(), + tagList: [Utils.redisPOdlByPOdl] + ); +#if false PODLModel result = new PODLModel(); if (idxPODL != 0) { @@ -1698,7 +1644,8 @@ namespace MP.SPEC.Data { Log.Debug("Errore IdxPODL = 0"); } - return result; + return result; +#endif } /// @@ -1729,7 +1676,7 @@ namespace MP.SPEC.Data // salvo fatto = await dbController.PodlIstKitDeleteAsync(IdxPODL); // svuoto cache - await FlushCacheByTagAsync(new List() { Utils.redisPOdlList }); + await FlushCachePOdl(); activity?.SetTag("data.source", "DB"); return fatto; } @@ -1749,7 +1696,6 @@ namespace MP.SPEC.Data fetchFunc: async () => await dbController.ListPODL_ByKitParentAsync(IdxPodlParent) ?? new(), tagList: [Utils.redisPOdlList] ); - } /// @@ -1814,14 +1760,11 @@ namespace MP.SPEC.Data public async Task POdlUpdateRecipe(int idxPODL, string recipeName) { using var activity = ActivitySource.StartActivity("POdlUpdateRecipe"); - string source = "DB+REDIS"; + string source = "DB"; bool answ = false; answ = await dbController.PODL_updateRecipe(idxPODL, recipeName); // reset redis... - if (answ) - { - await POdlFlushCache(); - } + await FlushCachePOdl(); activity?.SetTag("data.source", source); activity?.Stop(); LogTrace($"POdlUpdateRecipe | Read from {source}: {activity?.Duration.TotalMilliseconds}ms"); @@ -1836,10 +1779,10 @@ namespace MP.SPEC.Data public async Task POdlUpdateRecord(PODLModel currRec) { using var activity = ActivitySource.StartActivity("POdlUpdateRecord"); - string source = "DB+REDIS"; - var dbResult = await dbController.PODLUpdateRecord(currRec); + string source = "DB"; + var dbResult = await dbController.PODLUpdateRecordAsync(currRec); // elimino cache redis... - await POdlFlushCache(); + await FlushCachePOdl(); activity?.SetTag("data.source", source); activity?.Stop(); LogTrace($"POdlUpdateRecord | Read from {source}: {activity?.Duration.TotalMilliseconds}ms"); @@ -1850,14 +1793,14 @@ namespace MP.SPEC.Data /// Restituisce le statistiche di processo correnti x depluplica FluxLog /// /// - public List ProcFLStats() + public async Task> ProcFLStatsAsync() { - using var activity = ActivitySource.StartActivity("ProcFLStats"); + using var activity = ActivitySource.StartActivity("ProcFLStatsAsync"); string source = "REDIS"; List actStats = new List(); string currKey = $"{Utils.redisStatsProcFL}"; // recupero i record statistiche correnti - RedisValue rawData = redisDb.StringGet(currKey); + RedisValue rawData = await redisDb.StringGetAsync(currKey); if (rawData.HasValue) { var rawStats = JsonConvert.DeserializeObject>($"{rawData}"); @@ -1868,7 +1811,7 @@ namespace MP.SPEC.Data } activity?.SetTag("data.source", source); activity?.Stop(); - LogTrace($"ProcFLStats | Read from {source}: {activity?.Duration.TotalMilliseconds}ms"); + LogTrace($"ProcFLStatsAsync | Read from {source}: {activity?.Duration.TotalMilliseconds}ms"); return actStats; } @@ -1897,13 +1840,10 @@ namespace MP.SPEC.Data public async Task RecipeSetByPODL(RecipeModel currRecord) { using var activity = ActivitySource.StartActivity("RecipeSetByPODL"); - string source = "DB+REDIS"; + string source = "MONGO"; bool answ = false; answ = await mongoController.RecipeSetByPODL(currRecord); - if (answ) - { - await POdlFlushCache(); - } + await FlushCachePOdl(); activity?.SetTag("data.source", source); activity?.Stop(); LogTrace($"RecipeSetByPODL | Read from {source}: {activity?.Duration.TotalMilliseconds}ms"); @@ -1995,15 +1935,27 @@ namespace MP.SPEC.Data /// Statistiche ODL calcolate (da stored stp_STAT_ODL) /// /// - public Task> StatOdl(int IdxOdl) + public async Task> OdlStatsAsync(int IdxOdl) { - using var activity = ActivitySource.StartActivity("StatOdl"); + string currKey = $"{Utils.redisOdlStats}:{IdxOdl}"; + + return await GetOrFetchAsync( + operationName: "OdlStatsAsync", + cacheKey: currKey, + expiration: getRandTOut(redisShortTimeCache), + fetchFunc: async () => await dbController.OdlGetStatAsync(IdxOdl) ?? new(), + tagList: [Utils.redisOdlStats] + ); + +#if false + using var activity = ActivitySource.StartActivity("OdlStatsAsync"); string source = "DB"; - var result = dbController.OdlStart(IdxOdl); + var result = await dbController.OdlGetStatAsync(IdxOdl); activity?.SetTag("data.source", source); activity?.Stop(); - LogTrace($"StatOdl | {source} | {activity?.Duration.TotalMilliseconds}ms"); - return result; + LogTrace($"OdlStatsAsync | {source} | {activity?.Duration.TotalMilliseconds}ms"); + return result; +#endif } /// @@ -2034,8 +1986,8 @@ namespace MP.SPEC.Data string source = "DB"; bool fatto = false; // salvo - fatto = dbController.TemplateKitDelete(currRecord); - await FlushCacheByTagAsync(Utils.redisKitTempl); + fatto = await dbController.TemplateKitDeleteAsync(currRecord); + await FlushCacheAsync(Utils.redisKitTempl); activity?.SetTag("data.source", source); activity?.Stop(); LogTrace($"TemplateKitDeleteAsync | {source} | {activity?.Duration.TotalMilliseconds}ms"); @@ -2073,7 +2025,7 @@ namespace MP.SPEC.Data bool fatto = false; // salvo fatto = dbController.TemplateKitUpsert(currRecord, codAzienda); - await FlushCacheByTagAsync(Utils.redisKitTempl); + await FlushCacheAsync(Utils.redisKitTempl); activity?.SetTag("data.source", source); activity?.Stop(); LogTrace($"TemplateKitUpsertAsync | {source} | {activity?.Duration.TotalMilliseconds}ms"); @@ -2156,7 +2108,7 @@ namespace MP.SPEC.Data // salvo fatto = await dbController.WipKitDeleteAsync(currRecord); // svuoto cache - await FlushCacheByTagAsync(Utils.redisKitWip); + await FlushCacheAsync(Utils.redisKitWip); activity?.SetTag("data.source", source); activity?.Stop(); LogTrace($"WipKitDeleteAsync Read from {source}: {activity?.Duration.TotalMilliseconds}ms"); @@ -2175,7 +2127,7 @@ namespace MP.SPEC.Data // salvo fatto = await dbController.WipKitDeleteOlderAsync(DateLimit); // svuoto cache KitWip - await FlushCacheByTagAsync(Utils.redisKitWip); + await FlushCacheAsync(Utils.redisKitWip); activity?.SetTag("data.source", source); activity?.Stop(); LogTrace($"WipKitDeleteOlderAsync Read from {source}: {activity?.Duration.TotalMilliseconds}ms"); @@ -2211,7 +2163,7 @@ namespace MP.SPEC.Data // salvo fatto = await dbController.WipKitUpsertAsync(currRecord); // svuoto cache KitWip - await FlushCacheByTagAsync(Utils.redisKitWip); + await FlushCacheAsync(Utils.redisKitWip); activity?.SetTag("data.source", source); activity?.Stop(); LogTrace($"WipKitUpsertAsync | {source} | {activity?.Duration.TotalMilliseconds}ms"); @@ -2222,6 +2174,93 @@ namespace MP.SPEC.Data #region Protected Methods + protected async Task FlushCacheArticoli() + { + using var activity = ActivitySource.StartActivity("FlushCacheArticoli"); + string source = "FUSION"; + bool answ = await FlushCacheAsync(new List() { Utils.redisArtList, Utils.redisArtByDossier }); + activity?.SetTag("data.source", source); + activity?.Stop(); + LogTrace($"FlushCacheArticoli | {source} | {activity?.Duration.TotalMilliseconds}ms"); + return answ; + } + + protected async Task FlushCacheConfig() + { + using var activity = ActivitySource.StartActivity("FlushCacheConfig"); + string source = "FUSION"; + bool answ = await FlushCacheAsync(new List() { Utils.redisConfKey }); + activity?.SetTag("data.source", source); + activity?.Stop(); + LogTrace($"FlushCacheConfig | {source} | {activity?.Duration.TotalMilliseconds}ms"); + return answ; + } + + /// + /// Reset macchine e gruppi + /// + protected async Task FlushCacheMacGrp() + { + using var activity = ActivitySource.StartActivity("FlushCacheMacGrp"); + string source = "FUSION"; + bool answ = await FlushCacheAsync(new List { Utils.redisAnagGruppi, Utils.redisMacList }); + activity?.SetTag("data.source", source); + activity?.Stop(); + LogTrace($"FlushCacheMacGrp | {source} | {activity?.Duration.TotalMilliseconds}ms"); + return answ; + } + + /// + /// Reset cache operatori e gruppi + /// + protected async Task FlushCacheOprGrp() + { + using var activity = ActivitySource.StartActivity("FlushCacheOprGrp"); + string source = "FUSION"; + bool answ = await FlushCacheAsync(new List { Utils.redisAnagGruppi, Utils.redisOprList }); + activity?.SetTag("data.source", source); + activity?.Stop(); + LogTrace($"FlushCacheOprGrp | {source} | {activity?.Duration.TotalMilliseconds}ms"); + return answ; + } + + protected async Task FlushCachePOdl() + { +#if false + using var activity = ActivitySource.StartActivity("POdlFlushCache"); + bool answ = false; + RedisValue pattern = new RedisValue($"{Utils.redisXdlData}:*"); + answ = await ExecFlushRedisPatternAsync(pattern); + pattern = new RedisValue($"{Utils.redisPOdlByOdl}:*"); + answ = await ExecFlushRedisPatternAsync(pattern); + pattern = new RedisValue($"{Utils.redisPOdlByPOdl}:*"); + answ = await ExecFlushRedisPatternAsync(pattern); + pattern = new RedisValue($"{Utils.redisPOdlList}:*"); + answ = await ExecFlushRedisPatternAsync(pattern); + activity?.SetTag("data.source", "REDIS"); + return answ; +#endif + + using var activity = ActivitySource.StartActivity("FlushCachePOdl"); + string source = "FUSION"; + bool answ = await FlushCacheAsync(new List() { Utils.redisXdlData, Utils.redisPOdlByOdl, Utils.redisPOdlByPOdl, Utils.redisPOdlList }); + activity?.SetTag("data.source", source); + activity?.Stop(); + LogTrace($"FlushCachePOdl | {source} | {activity?.Duration.TotalMilliseconds}ms"); + return answ; + } + + protected async Task FlushKitCache() + { + using var activity = ActivitySource.StartActivity("FlushKitCache"); + string source = "FUSION"; + bool answ = await FlushCacheAsync(new List() { Utils.redisPOdlList, Utils.redisKitInst, Utils.redisKitWip, Utils.redisKitScore, Utils.redisPOdlByCodArt }); + activity?.SetTag("data.source", source); + activity?.Stop(); + LogTrace($"FlushKitCache | {source} | {activity?.Duration.TotalMilliseconds}ms"); + return answ; + } + /// /// Restituisce un timeout dal valore secondi richiesti + tempo random +/-3% /// @@ -2234,66 +2273,20 @@ namespace MP.SPEC.Data return TimeSpan.FromSeconds(rValue); } - /// - /// Merge statistiche Dedup - /// - /// - /// - protected bool ProcDedupStatMerge(List procStats) - { - bool answ = false; - List actStats = ProcFLStats(); - // se fosse vuoto --> add diretto - if (actStats.Count == 0) - { - actStats.AddRange(procStats); - } - else - { - // aggiorno su redis i record statistiche 1:1... - foreach (var recStat in procStats) - { - // cerco se ci fosse x aggiornare - var currRec = actStats.Where(x => x.IdxMacchina == recStat.IdxMacchina - && x.CodFlux == recStat.CodFlux - && x.Interval == recStat.Interval - && x.Num4Int == recStat.Num4Int).FirstOrDefault(); - // se trovato aggiorno - if (currRec != null) - { - currRec.ProcTime += recStat.ProcTime; - currRec.NumRec += recStat.NumRec; - } - // altrimenti aggiungo - else - { - actStats.Add(recStat); - } - } - } - // salvo record statistiche - var rawData = JsonConvert.SerializeObject(actStats); - string currKey = $"{Utils.redisStatsProcFL}"; - redisDb.StringSet(currKey, rawData); - return answ; - } - /// /// Merge statistiche DB Maintenance /// /// /// - protected bool RecDbMaintStat(TimeSpan duration) + protected async Task RecDbMaintStatAsync(TimeSpan duration) { - bool answ = false; - Dictionary actStats = DbDedupStats(); + Dictionary actStats = await DbDedupStatsAsync(); // aggiungo record! actStats.Add(DateTime.Now, duration.TotalSeconds); // salvo NUOVO record statistiche string currKey = $"{Utils.redisStatsDbMaint}"; var rawData = JsonConvert.SerializeObject(actStats); - redisDb.StringSet(currKey, rawData); - return answ; + return await redisDb.StringSetAsync(currKey, rawData); } #endregion Protected Methods @@ -2390,9 +2383,15 @@ namespace MP.SPEC.Data } } - private async Task FlushKitCache() + private async Task FlushCacheFluxLog() { - await FlushCacheByTagAsync(new List() { Utils.redisPOdlList, Utils.redisKitInst, Utils.redisKitWip, Utils.redisKitScore, Utils.redisPOdlByCodArt }); + using var activity = ActivitySource.StartActivity("FlushCacheFluxLog"); + string source = "FUSION"; + bool answ = await FlushCacheAsync(new List() { Utils.redisFluxLogFilt, Utils.redisParetoFLKey }); + activity?.SetTag("data.source", source); + activity?.Stop(); + LogTrace($"FlushCacheFluxLog | {source} | {activity?.Duration.TotalMilliseconds}ms"); + return answ; } /// @@ -2477,20 +2476,46 @@ namespace MP.SPEC.Data Log.Log(reqLevel, traceMsg); } - private async Task POdlFlushCache() + /// + /// Merge statistiche Dedup + /// + /// + /// + private async Task ProcDedupStatMergeAsync(List procStats) { - using var activity = ActivitySource.StartActivity("POdlFlushCache"); - bool answ = false; - RedisValue pattern = new RedisValue($"{Utils.redisXdlData}:*"); - answ = await ExecFlushRedisPatternAsync(pattern); - pattern = new RedisValue($"{Utils.redisPOdlByOdl}:*"); - answ = await ExecFlushRedisPatternAsync(pattern); - pattern = new RedisValue($"{Utils.redisPOdlByPOdl}:*"); - answ = await ExecFlushRedisPatternAsync(pattern); - pattern = new RedisValue($"{Utils.redisPOdlList}:*"); - answ = await ExecFlushRedisPatternAsync(pattern); - activity?.SetTag("data.source", "REDIS"); - return answ; + List actStats = await ProcFLStatsAsync(); + // se fosse vuoto --> add diretto + if (actStats.Count == 0) + { + actStats.AddRange(procStats); + } + else + { + // aggiorno su redis i record statistiche 1:1... + foreach (var recStat in procStats) + { + // cerco se ci fosse x aggiornare + var currRec = actStats.Where(x => x.IdxMacchina == recStat.IdxMacchina + && x.CodFlux == recStat.CodFlux + && x.Interval == recStat.Interval + && x.Num4Int == recStat.Num4Int).FirstOrDefault(); + // se trovato aggiorno + if (currRec != null) + { + currRec.ProcTime += recStat.ProcTime; + currRec.NumRec += recStat.NumRec; + } + // altrimenti aggiungo + else + { + actStats.Add(recStat); + } + } + } + // salvo record statistiche + var rawData = JsonConvert.SerializeObject(actStats); + string currKey = $"{Utils.redisStatsProcFL}"; + return await redisDb.StringSetAsync(currKey, rawData); } private string redHashMpIO(string keyName) @@ -2508,44 +2533,6 @@ namespace MP.SPEC.Data return result; } - private async Task resetCacheArticoli() - { - using var activity = ActivitySource.StartActivity("resetCacheArticoli"); - RedisValue pattern = new RedisValue($"{Utils.redisArtByDossier}:*"); - await ExecFlushRedisPatternAsync(pattern); - pattern = new RedisValue($"{Utils.redisArtList}:*"); - await ExecFlushRedisPatternAsync(pattern); - // elimino anche in FusionCache - List tags2del = new List() { Utils.redisArtList, Utils.redisArtByDossier }; - await FlushCacheByTagAsync(tags2del); - activity?.SetTag("data.source", "REDIS"); - } - - private async Task ResetConfigCache() - { - await redisDb.StringSetAsync(Utils.redisConfKey, ""); - List tags2del = new List() { Utils.redisConfKey }; - await FlushCacheByTagAsync(tags2del); - } - - /// - /// Reset macchine e gruppi - /// - private async Task ResetMacGrpCache() - { - await FlushCacheByTagAsync(new List { Utils.redisAnagGruppi, Utils.redisMacList }); - } - - /// - /// Reset cache operatori e gruppi - /// - private async Task ResetOprGrpCache() - { - //ExecFlushRedisPattern($"{Utils.redisAnagGruppi}:*"); - //ExecFlushRedisPattern($"{Utils.redisOprList}:*"); - await FlushCacheByTagAsync(new List { Utils.redisAnagGruppi, Utils.redisOprList }); - } - #endregion Private Methods } } \ No newline at end of file diff --git a/MP.SPEC/MP.SPEC.csproj b/MP.SPEC/MP.SPEC.csproj index 982527dc..0ab5e00b 100644 --- a/MP.SPEC/MP.SPEC.csproj +++ b/MP.SPEC/MP.SPEC.csproj @@ -5,7 +5,7 @@ enable enable MP.SPEC - 8.16.2605.3010 + 8.16.2605.3012 1800a78a-6ff1-40f9-b490-87fb8bfc1394 en diff --git a/MP.SPEC/Pages/FluxLogStatus.razor.cs b/MP.SPEC/Pages/FluxLogStatus.razor.cs index 1b0d3ff8..cd472022 100644 --- a/MP.SPEC/Pages/FluxLogStatus.razor.cs +++ b/MP.SPEC/Pages/FluxLogStatus.razor.cs @@ -95,7 +95,7 @@ namespace MP.SPEC.Pages await MDataServ.FluxLogDataRedux(idxMaccSel, new List { item }, CurrPeriodo, ValMode, IntReq, NumItem); currStep++; } - //await MDataServ.FluxLogDataRedux(idxMaccSel, fluxList, CurrPeriodo, ValMode, IntReq, maxItem); + //await MDataServ.FluxLogDataReduxAsync(idxMaccSel, fluxList, CurrPeriodo, ValMode, IntReq, maxItem); sw.Stop(); lastDedupExecTime = $"{sw.Elapsed.Minutes}m {sw.Elapsed.Seconds}s"; isProcessing = false; @@ -122,7 +122,7 @@ namespace MP.SPEC.Pages protected override async Task OnInitializedAsync() { - ReloadStats(); + await ReloadStatsAsync(); await ReloadDataAsync(); } @@ -226,10 +226,10 @@ namespace MP.SPEC.Pages CurrPeriodo = new Periodo(dtStart, dtEnd); } - private void ReloadStats() + private async Task ReloadStatsAsync() { - actProcDedupStats = MDataServ.ProcFLStats(); - actDbMaintStats = MDataServ.DbDedupStats(); + actProcDedupStats = await MDataServ.ProcFLStatsAsync(); + actDbMaintStats = await MDataServ.DbDedupStatsAsync(); } private void updateExpTime() diff --git a/MP.SPEC/Pages/KIT.razor.cs b/MP.SPEC/Pages/KIT.razor.cs index d45da043..af46bcbc 100644 --- a/MP.SPEC/Pages/KIT.razor.cs +++ b/MP.SPEC/Pages/KIT.razor.cs @@ -112,7 +112,7 @@ namespace MP.SPEC.Pages // se deve essere autogenerato da counter... if (AutoGen) { - var cntRec = MDService.AnagCountersGetNext("NumKitArt"); + var cntRec = await MDService.AnagCountersGetNextAsync("NumKitArt"); if (cntRec != null) { codParent = $"{cntRec.CntCode}{cntRec.LastNum:000000}"; diff --git a/MP.SPEC/Pages/Podl2Kit.razor.cs b/MP.SPEC/Pages/Podl2Kit.razor.cs index 47361bd6..bea6e530 100644 --- a/MP.SPEC/Pages/Podl2Kit.razor.cs +++ b/MP.SPEC/Pages/Podl2Kit.razor.cs @@ -130,7 +130,7 @@ namespace MP.SPEC.Pages return; await Task.Delay(1); - var done = await MDService.IstKitDelete(selRec); + var done = await MDService.IstKitDeleteAsync(selRec); EditRecord = null; await ResetDataAsync(); } @@ -141,7 +141,7 @@ namespace MP.SPEC.Pages return; await Task.Delay(1); - var done = await MDService.IstKitUpsert(selRec); + var done = await MDService.IstKitUpsertAsync(selRec); EditRecord = null; await ResetDataAsync(); } diff --git a/MP.SPEC/Resources/ChangeLog.html b/MP.SPEC/Resources/ChangeLog.html index af4e92ba..6f505a94 100644 --- a/MP.SPEC/Resources/ChangeLog.html +++ b/MP.SPEC/Resources/ChangeLog.html @@ -1,6 +1,6 @@ Modulo MAPOSPEC -

Versione: 8.16.2605.3010

+

Versione: 8.16.2605.3012


Note di rilascio:
  • diff --git a/MP.SPEC/Resources/VersNum.txt b/MP.SPEC/Resources/VersNum.txt index fac721dd..3cbdcdc0 100644 --- a/MP.SPEC/Resources/VersNum.txt +++ b/MP.SPEC/Resources/VersNum.txt @@ -1 +1 @@ -8.16.2605.3010 +8.16.2605.3012 diff --git a/MP.SPEC/Resources/manifest.xml b/MP.SPEC/Resources/manifest.xml index aefa43a4..cad23318 100644 --- a/MP.SPEC/Resources/manifest.xml +++ b/MP.SPEC/Resources/manifest.xml @@ -1,6 +1,6 @@ - 8.16.2605.3010 + 8.16.2605.3012 https://nexus.steamware.net/repository/SWS/MP-SPEC/stable/LAST/MP.SPEC.zip https://nexus.steamware.net/repository/SWS/MP-SPEC/stable/LAST/ChangeLog.html false diff --git a/Refactor_Plan.md b/Refactor_Plan.md index 8120444a..12a5cf0a 100644 --- a/Refactor_Plan.md +++ b/Refactor_Plan.md @@ -9,7 +9,7 @@ Migrare la logica di caching manuale (Redis + DB) verso l'utilizzo di `IFusionCa ## Strategia di Migrazione - **Metodo Standard**: `GetOrFetchAsync(string operationName, string cacheKey, Func> fetchFunc, TimeSpan expiration, params string[] tagList)`. -- **Invalidazione**: Utilizzare i tag tramite `FlushCacheByTagsAsync`. +- **Invalidazione**: Utilizzare i tag tramite `FlushCacheByTagAsync`. ## Stato Avanzamento @@ -71,12 +71,15 @@ Migrare la logica di caching manuale (Redis + DB) verso l'utilizzo di `IFusionCa - [ ] Migrazione di `ActionSetReq` (linea 136: usa `BroadastMsgPipe.saveAndSendMessage`). - [ ] Migrazione di `ArticoliDeleteRecord`/`UpdateRecord` (linea 296/372: usa `resetCacheArticoli`). - [ ] Migrazione di `DbDedupStats` (linea 516: usa `redisDb.StringGet`). -- [ ] Migrazione di `DossiersDeleteRecord` (linea 554: usa `ExecFlushRedisPatternAsync`). -- [ ] Migrazione di `DossiersTakeParamsSnapshotLast` (linea 613: usa `ExecFlushRedisPatternAsync`). +- [ ] Migrazione di `DossiersDeleteRecord` (linea 551: usa `ExecFlushRedisPatternAsync`). +- [ ] Migrazione di `DossiersTakeParamsSnapshotLast` (linea 610: usa `ExecFlushRedisPatternAsync`). - [ ] Migrazione di `ElencoRepartiDTO` (linea 697: usa `redisDb.StringGet` e `StringSet`). -- [ ] Migrazione di `PodlIstKitDelete` (linea 1842: usa `ExecFlushRedisPattern`). -- [ ] Migrazione di `POdlListByKitParent` (linea 1863: usa `redisDb.StringGet` e `StringSet`). -- [ ] Migrazione di `ProcFLStats` (linea 1992: usa `redisDb.StringSet`). +- [ ] Migrazione di `PodlIstKitDelete` (linea 1760: usa `ExecFlushRedisPattern` sincrono). +- [ ] Migrazione di `POdlListByKitParent` (linea 1781: usa `redisDb.StringGet` e `StringSet`). +- [ ] Migrazione di `POdlGetByKey` (linea 1662: usa `redisDb.StringGet` e `StringSet`). +- [ ] Migrazione di `POdlUpdateRecipe` (linea 1814: usa `POdlFlushCache` con pattern). +- [ ] Migrazione di `POdlUpdateRecord` (linea 1836: usa `POdlFlushCache` con pattern). +- [ ] Migrazione di `ProcFLStats` (linea 1853: usa `redisDb.StringGet`). - [ ] Migrazione di `RecDbMaintStat` (linea 2451: usa `redisDb.StringSet`). *(Nota: Il vecchio metodo `VocabolarioGetAll` e la gestione manuale del dizionario sono stati rimossi in favore di `Traduci` con FusionCache).* @@ -94,3 +97,4 @@ Migrare la logica di caching manuale (Redis + DB) verso l'utilizzo di `IFusionCa +