diff --git a/MP.Stats/Components/ChartScarti.razor b/MP.Stats/Components/ChartScarti.razor new file mode 100644 index 00000000..cfa6718c --- /dev/null +++ b/MP.Stats/Components/ChartScarti.razor @@ -0,0 +1,35 @@ +@using MP.Stats.Data + +@inject MessageService MessageService +@inject MpStatsService StatService + +
+
+ +
+
+
+ +@code { + + [Parameter] + public SelectData currFilter { get; set; } + + protected List CurrData = new List(); + + protected override async Task OnInitializedAsync() + { + await reloadData(); + } + + private async Task reloadData() + { + CurrData = await StatService.StatScartiGetPareto(currFilter, MessageService.SearchVal); + } +} \ No newline at end of file diff --git a/MP.Stats/Data/ChartKV.cs b/MP.Stats/Data/ChartKV.cs new file mode 100644 index 00000000..6fcca452 --- /dev/null +++ b/MP.Stats/Data/ChartKV.cs @@ -0,0 +1,17 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; + +namespace MP.Stats.Data +{ + public class ChartKV + { + #region Public Properties + + public string label { get; set; } = ""; + public double value { get; set; } = 0; + + #endregion Public Properties + } +} \ No newline at end of file diff --git a/MP.Stats/Data/MpStatsService.cs b/MP.Stats/Data/MpStatsService.cs index 9b17ab77..decb5923 100644 --- a/MP.Stats/Data/MpStatsService.cs +++ b/MP.Stats/Data/MpStatsService.cs @@ -242,7 +242,7 @@ namespace MP.Stats.Data { //return Task.FromResult(dbController.StatScartiGetAll(DataStart, DataEnd, IdxMacchina, IdxODL, KeyRichiesta, CodArticolo).ToArray()); List dbResult = new List(); - string cacheKey = getCacheKey("MP:STATS:SCARTI", CurrFilter); + string cacheKey = getCacheKey("MP:STATS:SCARTI:RAW", CurrFilter); string rawData; var redisDataList = await distributedCache.GetAsync(cacheKey); if (redisDataList != null) @@ -260,6 +260,35 @@ namespace MP.Stats.Data return await Task.FromResult(dbResult); } + public async Task> StatScartiGetPareto(SelectData CurrFilter, string searchVal = "") + { + List statResult = new List(); + string cacheKey = getCacheKey("MP:STATS:SCARTI:PARETO", CurrFilter); + string rawData; + var redisDataList = await distributedCache.GetAsync(cacheKey); + if (redisDataList != null) + { + rawData = Encoding.UTF8.GetString(redisDataList); + statResult = JsonConvert.DeserializeObject>(rawData); + } + else + { + // recupero dal DB (eventualmente con cache) + var dbResult = StatScartiGetAll(CurrFilter, searchVal); + // faccio conteggio... + statResult = dbResult + .Result + .GroupBy(x => x.Causale) + .Select(y => new ChartKV() { label = y.First().Causale, value = y.Sum(c => c.Qta) }) + .ToList(); + + rawData = JsonConvert.SerializeObject(statResult); + redisDataList = Encoding.UTF8.GetBytes(rawData); + await distributedCache.SetAsync(cacheKey, redisDataList, cacheOpt); + } + return await Task.FromResult(statResult); + } + public async Task> StatTurniOeeGetAllAsync(DateTime DataStart, DateTime DataEnd, string IdxMacchina, int IdxODL, string KeyRichiesta, string CodArticolo, string searchVal = "") { return await Task.FromResult(dbController.StatTurniOeeGetAll(DataStart, DataEnd, IdxMacchina, IdxODL, KeyRichiesta, CodArticolo)); diff --git a/MP.Stats/Pages/Scarti.razor b/MP.Stats/Pages/Scarti.razor index 6e1d4d55..9e35ebee 100644 --- a/MP.Stats/Pages/Scarti.razor +++ b/MP.Stats/Pages/Scarti.razor @@ -7,6 +7,7 @@
+ @**@ @if (ListRecords == null) {