Completato fix pagina gestione PODL-KIT x refresh

This commit is contained in:
Samuele Locatelli
2026-05-30 10:09:00 +02:00
parent 79024ddcac
commit 18aa123672
8 changed files with 27 additions and 110 deletions
+1 -1
View File
@@ -1312,7 +1312,7 @@ namespace MP.Data.Controllers
var dbResult = await dbCtx
.Database
.ExecuteSqlRawAsync("EXEC dbo.stp_IstKit_insertByWKS @CodArtParent,@KeyFilt", pCodArtParent, pKeyFilt);
return dbResult > 0;
return dbResult != 0;
}
/// <summary>
@@ -100,11 +100,8 @@ namespace MP.SPEC.Components.ProdKit
// eseguo stored...
bool fatto = await MDService.IstKitInsertByWKSAsync(currRec.CodArtParent, KeyFilt);
if (fatto)
{
// segnalo update
await EC_KitCreated.InvokeAsync(true);
}
// segnalo update
await EC_KitCreated.InvokeAsync(fatto);
}
private void ReloadData()
+1 -1
View File
@@ -16,7 +16,7 @@
<KitComposer SearchRecords="@listWSM" KeyFilt="@keyFilt" EC_ListUpdated="ForceReloadData" EC_ListCleared="ForceReset"></KitComposer>
</div>
<div class="col-6 mb-1 px-1">
<KitVerify KeyFilt="@keyFilt" AllRecTSM="@listTSM" AllRecWSM="@listWSM" AllRecPODL="listPOdlCheck" PodlRecords="@listPOdlAct" EC_KitCreated="ForceReset"></KitVerify>
<KitVerify KeyFilt="@keyFilt" AllRecTSM="@listTSM" AllRecWSM="@listWSM" AllRecPODL="listPOdlCheck" PodlRecords="@listPOdlAct" EC_KitCreated="ForceReloadData"></KitVerify>
</div>
}
<div class="@KPColClass mb-1 px-1">
+19 -99
View File
@@ -881,7 +881,7 @@ namespace MP.SPEC.Data
/// Cancellazione FusionCache dato elenco tags
/// </summary>
/// <returns></returns>
public async Task<bool> FlushCacheByTagsAsync(List<string> listTags)
public async Task<bool> FlushCacheByTagAsync(List<string> listTags)
{
if (listTags == null || listTags.Count == 0) return false;
@@ -1152,9 +1152,8 @@ namespace MP.SPEC.Data
{
using var activity = ActivitySource.StartActivity("IstKitDeleteAsync");
string source = "DB";
bool fatto = false;
// salvo
fatto = await dbController.IstKitDeleteAsync(currRecord);
bool fatto = await dbController.IstKitDeleteAsync(currRecord);
// svuoto cache
await FlushKitCache();
activity?.SetTag("data.source", source);
@@ -1163,15 +1162,6 @@ namespace MP.SPEC.Data
return fatto;
}
private async Task FlushKitCache()
{
#if false
RedisValue pattern = $"{Utils.redisKitInst}:*";
await ExecFlushRedisPatternAsync(pattern);
#endif
await FlushCacheByTagsAsync(new List<string>() { Utils.redisPOdlList, Utils.redisKitInst, Utils.redisKitWip, Utils.redisKitScore, Utils.redisPOdlByCodArt });
}
/// <summary>
/// Elenco Istanze KIT da ricerca
/// </summary>
@@ -1197,11 +1187,10 @@ namespace MP.SPEC.Data
/// <param name="KeyFilt">Chiave x filtro conf su tab WKS</param>
public async Task<bool> IstKitInsertByWKSAsync(string CodArtParent, string KeyFilt)
{
bool fatto = false;
using var activity = ActivitySource.StartActivity("IstKitInsertByWKSAsync");
string source = "DB";
// salvo
fatto = await dbController.IstKitInsertByWKSAsync(CodArtParent, KeyFilt);
bool fatto = await dbController.IstKitInsertByWKSAsync(CodArtParent, KeyFilt);
// svuoto cache
await FlushKitCache();
activity?.SetTag("data.source", source);
@@ -1218,9 +1207,8 @@ namespace MP.SPEC.Data
{
using var activity = ActivitySource.StartActivity("IstKitUpsertAsync");
string source = "DB";
bool fatto = false;
// salvo
fatto = await dbController.IstKitUpsertAsync(currRecord);
bool fatto = await dbController.IstKitUpsertAsync(currRecord);
// svuoto cache
await FlushKitCache();
activity?.SetTag("data.source", source);
@@ -1263,46 +1251,6 @@ namespace MP.SPEC.Data
fetchFunc: async () => await dbController.ListPODL_ByCodArtAsync(CodArticolo, OnlyAvail) ?? new(),
tagList: [Utils.redisPOdlByCodArt]
);
#if false
List<PODLExpModel> result = new List<PODLExpModel>();
if (!string.IsNullOrEmpty(CodArticolo))
{
using var activity = ActivitySource.StartActivity("ListPODL_ByCodArt");
string source = "DB";
// cerco in redis dato valore sel idxMaccSel...
RedisValue rawData = redisDb.StringGet(currKey);
if (rawData.HasValue && rawData.Length() > 2)
{
var rawResult = JsonConvert.DeserializeObject<List<PODLExpModel>>($"{rawData}");
if (rawResult != null)
{
result = rawResult;
source = "REDIS";
}
}
else
{
result = dbController.ListPODL_ByCodArt(CodArticolo, OnlyAvail);
// serializzo e salvo...
rawData = JsonConvert.SerializeObject(result);
redisDb.StringSet(currKey, rawData, getRandTOut(redisLongTimeCache));
}
if (result == null)
{
result = new List<PODLExpModel>();
}
activity?.SetTag("data.source", source);
activity?.SetTag("result.count", result.Count);
activity?.Stop();
Log.Trace($"ListPODL_ByCodArt | {source} | {activity?.Duration.TotalMilliseconds}ms");
}
else
{
Log.Debug("Errore CodArt vuoto");
}
return result;
#endif
}
/// <summary>
@@ -1541,7 +1489,6 @@ namespace MP.SPEC.Data
return fatto;
}
/// <summary>
/// Elenco ODL filtrati x stato, articolo, KeyRich (che contiene stato)
/// </summary>
@@ -1781,14 +1728,7 @@ namespace MP.SPEC.Data
// salvo
fatto = await dbController.PodlIstKitDeleteAsync(IdxPODL);
// svuoto cache
await FlushCacheByTagsAsync(new List<string>() { Utils.redisPOdlList });
#if false
string pattern = $"{Utils.redisKit}:*";
if (!string.IsNullOrEmpty(pattern))
{
ExecFlushRedisPattern(pattern);
}
#endif
await FlushCacheByTagAsync(new List<string>() { Utils.redisPOdlList });
activity?.SetTag("data.source", "DB");
return fatto;
}
@@ -1809,35 +1749,6 @@ namespace MP.SPEC.Data
tagList: [Utils.redisPOdlList]
);
#if false
using var activity = ActivitySource.StartActivity("POdlListByKitParent");
List<PODLExpModel>? result = new List<PODLExpModel>();
string source = "DB";
string currKey = $"{Utils.redisPOdlList}_kit:ByParent:{IdxPodlParent}";
// cerco in redis dato valore sel idxMaccSel...
RedisValue rawData = redisDb.StringGet(currKey);
if (rawData.HasValue)
{
result = JsonConvert.DeserializeObject<List<PODLExpModel>>($"{rawData}");
source = "REDIS";
}
else
{
result = await dbController.ListPODL_ByKitParentAsync(IdxPodlParent);
// serializzo e salvo...
rawData = JsonConvert.SerializeObject(result);
redisDb.StringSet(currKey, rawData, TimeSpan.FromSeconds(redisShortTimeCache));
}
if (result == null)
{
result = new List<PODLExpModel>();
}
activity?.SetTag("data.source", source);
activity?.SetTag("result.count", result.Count);
activity?.Stop();
LogTrace($"POdlListByKitParent | Read from {source}: {activity?.Duration.TotalMilliseconds}ms");
return result;
#endif
}
/// <summary>
@@ -2394,10 +2305,15 @@ namespace MP.SPEC.Data
private static readonly ActivitySource ActivitySource = new ActivitySource("MP.DATA.Tracer");
private static IConfiguration _configuration = null!;
private static Logger Log = LogManager.GetCurrentClassLogger();
private readonly IFusionCache _cache;
private DateTime _artCacheExpiry = DateTime.MinValue;
private Dictionary<string, string> _configData = new();
private DateTime _dtParamExpiry = DateTime.Now;
/// <summary>
@@ -2457,7 +2373,6 @@ namespace MP.SPEC.Data
#region Private Methods
/// <summary>
/// Verifica caricamento dizionario ConfigData
/// </summary>
@@ -2474,6 +2389,11 @@ namespace MP.SPEC.Data
}
}
private async Task FlushKitCache()
{
await FlushCacheByTagAsync(new List<string>() { Utils.redisPOdlList, Utils.redisKitInst, Utils.redisKitWip, Utils.redisKitScore, Utils.redisPOdlByCodArt });
}
/// <summary>
/// Implementa gestione recupero cache da memoria o da obj esterno + cache memoria + tracking attività
/// </summary>
@@ -2596,7 +2516,7 @@ namespace MP.SPEC.Data
await ExecFlushRedisPatternAsync(pattern);
// elimino anche in FusionCache
List<string> tags2del = new List<string>() { Utils.redisArtList, Utils.redisArtByDossier };
await FlushCacheByTagsAsync(tags2del);
await FlushCacheByTagAsync(tags2del);
activity?.SetTag("data.source", "REDIS");
}
@@ -2604,7 +2524,7 @@ namespace MP.SPEC.Data
{
await redisDb.StringSetAsync(Utils.redisConfKey, "");
List<string> tags2del = new List<string>() { Utils.redisConfKey };
await FlushCacheByTagsAsync(tags2del);
await FlushCacheByTagAsync(tags2del);
}
/// <summary>
@@ -2612,7 +2532,7 @@ namespace MP.SPEC.Data
/// </summary>
private async Task ResetMacGrpCache()
{
await FlushCacheByTagsAsync(new List<string> { Utils.redisAnagGruppi, Utils.redisMacList });
await FlushCacheByTagAsync(new List<string> { Utils.redisAnagGruppi, Utils.redisMacList });
}
/// <summary>
@@ -2622,7 +2542,7 @@ namespace MP.SPEC.Data
{
//ExecFlushRedisPattern($"{Utils.redisAnagGruppi}:*");
//ExecFlushRedisPattern($"{Utils.redisOprList}:*");
await FlushCacheByTagsAsync(new List<string> { Utils.redisAnagGruppi, Utils.redisOprList });
await FlushCacheByTagAsync(new List<string> { Utils.redisAnagGruppi, Utils.redisOprList });
}
#endregion Private Methods
+1 -1
View File
@@ -5,7 +5,7 @@
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
<RootNamespace>MP.SPEC</RootNamespace>
<Version>8.16.2605.3009</Version>
<Version>8.16.2605.3010</Version>
<UserSecretsId>1800a78a-6ff1-40f9-b490-87fb8bfc1394</UserSecretsId>
<SatelliteResourceLanguages>en</SatelliteResourceLanguages>
</PropertyGroup>
+1 -1
View File
@@ -1,6 +1,6 @@
<body>
<i>Modulo MAPOSPEC </i>
<h4>Versione: 8.16.2605.3009</h4>
<h4>Versione: 8.16.2605.3010</h4>
<br /> Note di rilascio:
<ul>
<li>
+1 -1
View File
@@ -1 +1 @@
8.16.2605.3009
8.16.2605.3010
+1 -1
View File
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<item>
<version>8.16.2605.3009</version>
<version>8.16.2605.3010</version>
<url>https://nexus.steamware.net/repository/SWS/MP-SPEC/stable/LAST/MP.SPEC.zip</url>
<changelog>https://nexus.steamware.net/repository/SWS/MP-SPEC/stable/LAST/ChangeLog.html</changelog>
<mandatory>false</mandatory>