From 443a56cc0750d95bc80d2fb64645b70f85462256 Mon Sep 17 00:00:00 2001 From: Samuele Locatelli Date: Fri, 4 Nov 2022 18:01:59 +0100 Subject: [PATCH] Update gestione filtro periodo parametri --- MP.Data/Controllers/MpSpecController.cs | 7 ++++--- MP.SPEC/Components/ListPARAMS.razor.cs | 12 +++++++++--- MP.SPEC/Data/MpDataService.cs | 9 +++++---- 3 files changed, 18 insertions(+), 10 deletions(-) diff --git a/MP.Data/Controllers/MpSpecController.cs b/MP.Data/Controllers/MpSpecController.cs index 10e5bf5c..8292b9e3 100644 --- a/MP.Data/Controllers/MpSpecController.cs +++ b/MP.Data/Controllers/MpSpecController.cs @@ -502,12 +502,13 @@ namespace MP.Data.Controllers /// /// Elenco ultimi n record flux log dato macchina e flusso (ordinato x data registrazione) /// - /// Data massima (recupera eventi antecedenti) + /// Data massima x eventi + /// Data minima x eventi /// * = tutte, altrimenti solo x una data macchina /// *=tutti, altrimenti solo selezionato /// numero massimo record da restituire /// - public List FluxLogGetLastFilt(DateTime DtMax, string IdxMacchina, string CodFlux, int MaxRec) + public List FluxLogGetLastFilt(DateTime DtMax, DateTime DtMin, string IdxMacchina, string CodFlux, int MaxRec) { List dbResult = new List(); using (var dbCtx = new MoonProContext(_configuration)) @@ -515,7 +516,7 @@ namespace MP.Data.Controllers dbResult = dbCtx .DbSetFluxLog .AsNoTracking() - .Where(x => (x.dtEvento <= DtMax) && (IdxMacchina == "*" || x.IdxMacchina == IdxMacchina) && (CodFlux == "*" || x.CodFlux == CodFlux)) + .Where(x => (x.dtEvento >= DtMin && x.dtEvento <= DtMax) && (IdxMacchina == "*" || x.IdxMacchina == IdxMacchina) && (CodFlux == "*" || x.CodFlux == CodFlux)) .OrderByDescending(x => x.dtEvento) .Take(MaxRec) .ToList(); diff --git a/MP.SPEC/Components/ListPARAMS.razor.cs b/MP.SPEC/Components/ListPARAMS.razor.cs index 67a203e0..60e514d1 100644 --- a/MP.SPEC/Components/ListPARAMS.razor.cs +++ b/MP.SPEC/Components/ListPARAMS.razor.cs @@ -93,12 +93,18 @@ namespace MP.SPEC.Components public async Task reloadData(bool setChanged) { isLoading = true; - DateTime limitData = DateTime.Now; + DateTime dataFrom = DateTime.Today.AddMonths(-1); + DateTime dataTo = DateTime.Now.AddMinutes(5); + if (SelFilter != null && SelFilter.dtMin != null) + { + dataFrom = (DateTime)SelFilter.dtMin; + } if (SelDtMax != null) { - limitData = (DateTime)SelDtMax; + dataTo = (DateTime)SelDtMax; } - SearchRecords = await MDService.FluxLogGetLastFilt(limitData, SelMacchina, SelFlux, MaxRecord); + + SearchRecords = await MDService.FluxLogGetLastFilt(dataTo, dataFrom, SelMacchina, SelFlux, MaxRecord); totalCount = SearchRecords.Count; ListRecords = SearchRecords.Skip(numRecord * (currPage - 1)).Take(numRecord).ToList(); await Task.Delay(1); diff --git a/MP.SPEC/Data/MpDataService.cs b/MP.SPEC/Data/MpDataService.cs index bdcf0c87..cd090911 100644 --- a/MP.SPEC/Data/MpDataService.cs +++ b/MP.SPEC/Data/MpDataService.cs @@ -505,18 +505,19 @@ namespace MP.SPEC.Data /// /// Elenco ultimi n record flux log dato macchina e flusso (ordinato x data registrazione) /// - /// Data massima (recupera eventi antecedenti) + /// Data massima x eventi + /// Data minima x eventi /// * = tutte, altrimenti solo x una data macchina /// *=tutti, altrimenti solo selezionato /// numero massimo record da restituire /// - public async Task> FluxLogGetLastFilt(DateTime DtMax, string IdxMacchina, string CodFlux, int MaxRec) + public async Task> FluxLogGetLastFilt(DateTime DtMax, DateTime DtMin, string IdxMacchina, string CodFlux, int MaxRec) { List? result = new List(); Stopwatch stopWatch = new Stopwatch(); stopWatch.Start(); string readType = "DB"; - string currKey = $"{redisFluxLogFilt}:{IdxMacchina}:{CodFlux}:{MaxRec}:{DtMax:yyyyMMdd}:{DtMax:HHmm}"; + string currKey = $"{redisFluxLogFilt}:{IdxMacchina}:{CodFlux}:{MaxRec}:{DtMax:yyyyMMddHHmm}:{DtMin:yyyyMMddHHmm}"; // cerco in redis dato valore sel macchina... RedisValue rawData = redisDb.StringGet(currKey); if (rawData.HasValue) @@ -526,7 +527,7 @@ namespace MP.SPEC.Data } else { - result = await Task.FromResult(dbController.FluxLogGetLastFilt(DtMax, IdxMacchina, CodFlux, MaxRec)); + result = await Task.FromResult(dbController.FluxLogGetLastFilt(DtMax, DtMin, IdxMacchina, CodFlux, MaxRec)); // serializzo e salvo... rawData = JsonConvert.SerializeObject(result); redisDb.StringSet(currKey, rawData, TimeSpan.FromSeconds(10));