diff --git a/MP.Data/Controllers/MpSpecController.cs b/MP.Data/Controllers/MpSpecController.cs
index dd60d20d..1dac52bb 100644
--- a/MP.Data/Controllers/MpSpecController.cs
+++ b/MP.Data/Controllers/MpSpecController.cs
@@ -1433,26 +1433,24 @@ namespace MP.Data.Controllers
/// Data inizio
/// Data fine
///
- public List ListODLFilt(bool inCorso, string codArt, string keyRichPart, string Reparto, string IdxMacchina, DateTime startDate, DateTime endDate)
+ public async Task> ListODLFiltAsync(bool inCorso, string codArt, string keyRichPart, string Reparto, string IdxMacchina, DateTime startDate, DateTime endDate)
{
List dbResult = new List();
- using (var dbCtx = new MoonProContext(options))
- {
- var InCorso = new SqlParameter("@InCorso", inCorso);
- var CodArt = new SqlParameter("@CodArt", codArt);
- var KeyRich = new SqlParameter("@KeyRich", keyRichPart);
- var CodGruppo = new SqlParameter("@CodGruppo", Reparto);
- var IdxMacc = new SqlParameter("@IdxMacchina", IdxMacchina);
- var DataFrom = new SqlParameter("@DataFrom", startDate);
- var DataTo = new SqlParameter("@DataTo", endDate);
+ using var dbCtx = new MoonProContext(options);
- dbResult = dbCtx
- .DbSetODLExp
- .FromSqlRaw("EXEC stp_ODL_getByFiltSpec @InCorso, @CodArt, @KeyRich, @CodGruppo, @IdxMacchina, @DataFrom, @DataTo", InCorso, CodArt, KeyRich, CodGruppo, IdxMacc, DataFrom, DataTo)
- .AsNoTracking()
- .ToList();
- }
- return dbResult;
+ var InCorso = new SqlParameter("@InCorso", inCorso);
+ var CodArt = new SqlParameter("@CodArt", codArt);
+ var KeyRich = new SqlParameter("@KeyRich", keyRichPart);
+ var CodGruppo = new SqlParameter("@CodGruppo", Reparto);
+ var IdxMacc = new SqlParameter("@IdxMacchina", IdxMacchina);
+ var DataFrom = new SqlParameter("@DataFrom", startDate);
+ var DataTo = new SqlParameter("@DataTo", endDate);
+
+ return await dbCtx
+ .DbSetODLExp
+ .FromSqlRaw("EXEC stp_ODL_getByFiltSpec @InCorso, @CodArt, @KeyRich, @CodGruppo, @IdxMacchina, @DataFrom, @DataTo", InCorso, CodArt, KeyRich, CodGruppo, IdxMacc, DataFrom, DataTo)
+ .AsNoTracking()
+ .ToListAsync();
}
///
@@ -2206,7 +2204,7 @@ namespace MP.Data.Controllers
///
///
///
- public async Task> PODL_getDictOdlPodl(List missingIds)
+ public async Task> PODL_getDictOdlPodlAsync(List missingIds)
{
if (missingIds == null || !missingIds.Any())
return new Dictionary();
diff --git a/MP.Data/Services/OrderDataSrv.cs b/MP.Data/Services/OrderDataSrv.cs
index f6865451..42e0efdb 100644
--- a/MP.Data/Services/OrderDataSrv.cs
+++ b/MP.Data/Services/OrderDataSrv.cs
@@ -109,7 +109,7 @@ namespace MP.Data.Services
}
else
{
- result = await Task.FromResult(dbController.ListODLFilt(inCorso, CodArt, keyRichPart, Reparto, IdxMacchina, startDate, endDate));
+ result = await dbController.ListODLFiltAsync(inCorso, CodArt, keyRichPart, Reparto, IdxMacchina, startDate, endDate);
// serializzp e salvo...
rawData = JsonConvert.SerializeObject(result);
await _redisDb.StringSetAsync(currKey, rawData, LongCache);
@@ -119,7 +119,7 @@ namespace MP.Data.Services
result = new List();
}
sw.Stop();
- Log.Debug($"ListODLFilt | CodArt: {CodArt} | IdxMacchina: {IdxMacchina} | {source} | {sw.Elapsed.TotalMilliseconds}ms");
+ Log.Debug($"ListODLFiltAsync | CodArt: {CodArt} | IdxMacchina: {IdxMacchina} | {source} | {sw.Elapsed.TotalMilliseconds}ms");
return result;
}
diff --git a/MP.SPEC/Components/AskCloseOdl.razor.cs b/MP.SPEC/Components/AskCloseOdl.razor.cs
index 98fe22f4..d82ff0ea 100644
--- a/MP.SPEC/Components/AskCloseOdl.razor.cs
+++ b/MP.SPEC/Components/AskCloseOdl.razor.cs
@@ -76,7 +76,7 @@ namespace MP.SPEC.Components
{
DateTime oggi = DateTime.Today;
// recupero idxMaccSel x ODL...
- var elencoOdl = await MDService.OdlListGetFilt(true, "*", "*", "*", "*", DateTime.Today.AddMonths(-1), DateTime.Today.AddDays(1));
+ var elencoOdl = await MDService.OdlListGetFiltAsync(true, "*", "*", "*", "*", DateTime.Today.AddMonths(-1), DateTime.Today.AddDays(1));
var currOdl = elencoOdl.FirstOrDefault(x => x.IdxOdl == idxOdl);
if (currOdl != null && currOdl.IdxOdl == idxOdl)
{
diff --git a/MP.SPEC/Components/ListDossiers.razor.cs b/MP.SPEC/Components/ListDossiers.razor.cs
index 778e8cb9..72530118 100644
--- a/MP.SPEC/Components/ListDossiers.razor.cs
+++ b/MP.SPEC/Components/ListDossiers.razor.cs
@@ -78,8 +78,8 @@ namespace MP.SPEC.Components
#region Protected Fields
- protected string selAzienda = "*";
protected string giacenzeConf = "false";
+ protected string selAzienda = "*";
#endregion Protected Fields
@@ -229,22 +229,10 @@ namespace MP.SPEC.Components
ListStati = await MDService.AnagStatiCommAsync();
selAzienda = await MDService.ConfigTryGetAsync("AZIENDA");
giacenzeConf = await MDService.ConfigTryGetAsync("SPEC_ShowGiacenze");
-#if false
- ListArticoli = await MDService.ArticoliGetSearchAsync(100000, "*", selAzienda, "");
-#endif
ListMacchine = await MDService.MacchineGetFiltAsync("*");
await ReloadData(true);
}
- ///
- /// Ricerca articoli
- ///
- private string SearchArt = "";
- ///
- /// Num min car x ricerca
- ///
- private int SearchMinChar = 3;
-
protected override async Task OnParametersSetAsync()
{
if (!lastFilter.Equals(SelFilter))
@@ -277,7 +265,6 @@ namespace MP.SPEC.Components
if (alert)
{
- await Task.Delay(1);
if (currRecord != null)
{
// serializzo valore x flux log...
@@ -288,8 +275,7 @@ namespace MP.SPEC.Components
await MDService.DossiersUpdateValore(currRecord);
currFluxLogDto = null;
isEditing = false;
- await Task.Delay(1);
- StateHasChanged();
+ await InvokeAsync(StateHasChanged);
}
return;
}
@@ -320,16 +306,19 @@ namespace MP.SPEC.Components
private DossierModel? currRecordClone = null;
-#if false
- private List? ListArticoli;
-#endif
private List? ListGruppiFase;
private List? ListMacchine;
+
private List? ListRecords;
private List? ListStati;
+ ///
+ /// Ricerca articoli
+ ///
+ private string SearchArt = "";
+
private List? SearchRecords;
#endregion Private Fields
@@ -354,6 +343,11 @@ namespace MP.SPEC.Components
private List? listaFlux { get; set; } = null;
+ private int MaxRec
+ {
+ get => SelFilter.MaxRecord;
+ }
+
private int MaxRecord
{
get => SelFilter.MaxRecord;
@@ -387,10 +381,6 @@ namespace MP.SPEC.Components
{
get => SelFilter.IdxMacchina;
}
- private int MaxRec
- {
- get => SelFilter.MaxRecord;
- }
private int totalCount
{
diff --git a/MP.SPEC/Components/ListODL.razor.cs b/MP.SPEC/Components/ListODL.razor.cs
index 55e93867..9d100587 100644
--- a/MP.SPEC/Components/ListODL.razor.cs
+++ b/MP.SPEC/Components/ListODL.razor.cs
@@ -384,7 +384,7 @@ namespace MP.SPEC.Components
private async Task ReloadDataAsync()
{
isLoading = true;
- SearchRecords = await MDService.OdlListGetFilt(currFilter.IsActive, currFilter.SearchVal, currFilter.CodFase, currFilter.CodReparto, currFilter.IdxMacchina, currFilter.DtStart, currFilter.DtEnd);
+ SearchRecords = await MDService.OdlListGetFiltAsync(currFilter.IsActive, currFilter.SearchVal, currFilter.CodFase, currFilter.CodReparto, currFilter.IdxMacchina, currFilter.DtStart, currFilter.DtEnd);
await ReloadPOdlData();
await ReloadLutData();
totalCount = SearchRecords.Count;
@@ -399,7 +399,7 @@ namespace MP.SPEC.Components
if (SearchRecords != null)
{
var listIdx = SearchRecords.Select(x => x.IdxOdl).ToList();
- _podlLocalCache = await MDService.PODL_getDictOdlPodl(listIdx);
+ _podlLocalCache = await MDService.PODL_getDictOdlPodlAsync(listIdx);
#if false
// 1. Popolo la cache locale in parallelo sfruttando la velocità di FusionCache
var tasks = SearchRecords.Select(async odl =>
diff --git a/MP.SPEC/Components/SelArticolo.razor.cs b/MP.SPEC/Components/SelArticolo.razor.cs
index dd26d88b..e7293b35 100644
--- a/MP.SPEC/Components/SelArticolo.razor.cs
+++ b/MP.SPEC/Components/SelArticolo.razor.cs
@@ -6,29 +6,30 @@ namespace MP.SPEC.Components
{
public partial class SelArticolo
{
- // Parametri per il Two-Way Data Binding
+ #region Public Properties
+
[Parameter]
- public string Value { get; set; }
+ public string SearchVal { get; set; } = "";
+
+ [Parameter]
+ public string SelAzienda { get; set; } = "*";
+
+ [Parameter]
+ public string Value { get; set; } = null!;
[Parameter]
public EventCallback ValueChanged { get; set; }
- // Parametri di filtro
- [Parameter]
- public string SearchVal { get; set; } = "";
- [Parameter]
- public string SelAzienda { get; set; } = "*";
+ #endregion Public Properties
+
+ #region Protected Properties
[Inject]
protected MpDataService MDService { get; set; } = null!;
- private List? ListArticoli;
+ #endregion Protected Properties
- // Variabili di appoggio per tracciare il cambio dei filtri
- private string _oldSearchVal = string.Empty;
- private string _oldSelAzienda = string.Empty;
-
- private int maxNum = 100;
+ #region Protected Methods
protected override async Task OnInitializedAsync()
{
@@ -46,6 +47,21 @@ namespace MP.SPEC.Components
}
}
+ #endregion Protected Methods
+
+ #region Private Fields
+
+ // Variabili di appoggio per tracciare il cambio dei filtri
+ private string _oldSearchVal = string.Empty;
+
+ private string _oldSelAzienda = string.Empty;
+ private List? ListArticoli;
+ private int maxNum = 100;
+
+ #endregion Private Fields
+
+ #region Private Methods
+
private async Task CaricaArticoli()
{
ListArticoli = await MDService.ArticoliGetSearchAsync(maxNum, "*", SelAzienda, SearchVal);
@@ -57,5 +73,7 @@ namespace MP.SPEC.Components
// Notifica il componente padre della variazione
await ValueChanged.InvokeAsync(Value);
}
+
+ #endregion Private Methods
}
}
\ No newline at end of file
diff --git a/MP.SPEC/Data/MpDataService.cs b/MP.SPEC/Data/MpDataService.cs
index 01c92078..c378c733 100644
--- a/MP.SPEC/Data/MpDataService.cs
+++ b/MP.SPEC/Data/MpDataService.cs
@@ -1726,9 +1726,20 @@ namespace MP.SPEC.Data
/// Data inizio
/// Data fine
///
- public async Task> OdlListGetFilt(bool inCorso, string codArt, string keyRichPart, string Reparto, string IdxMacchina, DateTime startDate, DateTime endDate)
+ public async Task> OdlListGetFiltAsync(bool inCorso, string codArt, string keyRichPart, string Reparto, string IdxMacchina, DateTime startDate, DateTime endDate)
{
- using var activity = ActivitySource.StartActivity("OdlListGetFilt");
+
+ string currKey = $"{Utils.redisOdlList}:{inCorso}:{codArt}:{keyRichPart}:{Reparto}:{IdxMacchina}:{startDate:yyyyMMdd_HHmmss}:{endDate:yyyyMMdd_HHmmss}";
+ return await GetOrFetchAsync(
+ operationName: "OdlListGetFiltAsync",
+ cacheKey: currKey,
+ expiration: getRandTOut(redisShortTimeCache),
+ fetchFunc: async () => await dbController.ListODLFiltAsync(inCorso, codArt, keyRichPart, Reparto, IdxMacchina, startDate, endDate) ?? new(),
+ tagList: [Utils.redisOdlList]
+ );
+
+#if false
+ using var activity = ActivitySource.StartActivity("OdlListGetFiltAsync");
List? result = new List();
string source = "DB";
string currKey = $"{Utils.redisOdlList}:{inCorso}:{codArt}:{keyRichPart}:{Reparto}:{IdxMacchina}:{startDate:yyyyMMdd_HHmmss}:{endDate:yyyyMMdd_HHmmss}";
@@ -1741,7 +1752,7 @@ namespace MP.SPEC.Data
}
else
{
- result = await Task.FromResult(dbController.ListODLFilt(inCorso, codArt, keyRichPart, Reparto, IdxMacchina, startDate, endDate));
+ result = await dbController.ListODLFiltAsync(inCorso, codArt, keyRichPart, Reparto, IdxMacchina, startDate, endDate);
// serializzo e salvo...
rawData = JsonConvert.SerializeObject(result);
redisDb.StringSet(currKey, rawData, TimeSpan.FromSeconds(redisShortTimeCache));
@@ -1753,8 +1764,9 @@ namespace MP.SPEC.Data
activity?.SetTag("data.source", source);
activity?.SetTag("result.count", result.Count);
activity?.Stop();
- LogTrace($"OdlListGetFilt | Read from {source}: {activity?.Duration.TotalMilliseconds}ms");
- return result;
+ LogTrace($"OdlListGetFiltAsync | Read from {source}: {activity?.Duration.TotalMilliseconds}ms");
+ return result;
+#endif
}
///
@@ -1879,7 +1891,7 @@ namespace MP.SPEC.Data
///
///
///
- public async Task> PODL_getDictOdlPodl(List idxOdlList)
+ public async Task> PODL_getDictOdlPodlAsync(List idxOdlList)
{
if (idxOdlList == null || !idxOdlList.Any())
return new Dictionary();
@@ -1910,7 +1922,7 @@ namespace MP.SPEC.Data
if (missingIds.Any())
{
// Riceviamo direttamente un Dictionary ottimizzato da EF Core
- Dictionary dbResults = await dbController.PODL_getDictOdlPodl(missingIds);
+ Dictionary dbResults = await dbController.PODL_getDictOdlPodlAsync(missingIds);
// STEP 3: Scriviamo i risultati in cache e li uniamo al dizionario finale
foreach (var kvp in dbResults)
diff --git a/MP.SPEC/Pages/GroupMacOprMan.razor b/MP.SPEC/Pages/GroupMacOprMan.razor
index 066214f9..df08cb90 100644
--- a/MP.SPEC/Pages/GroupMacOprMan.razor
+++ b/MP.SPEC/Pages/GroupMacOprMan.razor
@@ -16,11 +16,11 @@
@if (ShowDetail)
{
-
+
}
else
{
-
+
}
diff --git a/MP.SPEC/Pages/GroupMacOprMan.razor.cs b/MP.SPEC/Pages/GroupMacOprMan.razor.cs
index 9e5c2bb1..f9f63a52 100644
--- a/MP.SPEC/Pages/GroupMacOprMan.razor.cs
+++ b/MP.SPEC/Pages/GroupMacOprMan.razor.cs
@@ -30,7 +30,6 @@ namespace MP.SPEC.Pages
if (searchVal != value)
{
searchVal = value;
- ReloadDataAsync();
}
}
}
@@ -38,10 +37,10 @@ namespace MP.SPEC.Pages
#endregion Protected Properties
#region Protected Methods
-
- protected override void OnInitialized()
+ protected override async Task OnInitializedAsync()
{
- ReloadDataAsync();
+ await ReloadBaseDataAsync();
+ await ReloadDataAsync();
}
#endregion Protected Methods
@@ -77,13 +76,13 @@ namespace MP.SPEC.Pages
#region Private Methods
- private void ForceReload(bool doForce)
+ private async Task ForceReload(bool doForce)
{
if (doForce)
{
CodGruppo = "";
}
- ReloadDataAsync();
+ await ReloadDataAsync();
}
private async Task ReloadBaseDataAsync()