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
+
+
+
+
+
+ @foreach (var item in CurrData)
+ {
+ - @item.label: @item.value
+ }
+
+
+
+
+
+@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)
{