From 491365e8df3926b249cd902d8c8a7ff99c610da5 Mon Sep 17 00:00:00 2001 From: Samuele Locatelli Date: Thu, 3 Nov 2022 11:46:09 +0100 Subject: [PATCH] Vocabolario - aggiunto modello - aggiunta metori recupero DB/REDIS - aggiunto metodo traduzione lemmi (pag parametri) --- MP.Data/Controllers/MpSpecController.cs | 48 ++++++++- MP.Data/DatabaseModels/VocabolarioModel.cs | 22 +++++ MP.Data/MoonProContext.cs | 8 +- MP.SPEC/Components/ListPARAMS.razor | 4 + MP.SPEC/Components/ListPARAMS.razor.cs | 7 ++ MP.SPEC/Data/MpDataService.cs | 109 ++++++++++++++++++--- MP.SPEC/MP.SPEC.csproj | 2 +- MP.SPEC/Resources/ChangeLog.html | 2 +- MP.SPEC/Resources/VersNum.txt | 2 +- MP.SPEC/Resources/manifest.xml | 2 +- 10 files changed, 187 insertions(+), 19 deletions(-) create mode 100644 MP.Data/DatabaseModels/VocabolarioModel.cs diff --git a/MP.Data/Controllers/MpSpecController.cs b/MP.Data/Controllers/MpSpecController.cs index 5c169377..d2e07b20 100644 --- a/MP.Data/Controllers/MpSpecController.cs +++ b/MP.Data/Controllers/MpSpecController.cs @@ -354,6 +354,32 @@ namespace MP.Data.Controllers return dbResult; } + /// + /// insert di un record Dossier + /// + /// record dossier da modificare + /// + public async Task DossiersInsert(Dossiers newRec) + { + bool fatto = false; + using (var dbCtx = new MoonProContext(_configuration)) + { + try + { + dbCtx + .DbSetDossiers + .Add(newRec); + await dbCtx.SaveChangesAsync(); + fatto = true; + } + catch (Exception exc) + { + Log.Error($"Eccezione durante DossiersInsert{Environment.NewLine}{exc}"); + } + } + return fatto; + } + /// /// Effettua salvataggio snapshot parametri (con stored) + svuota eventuale cache redis /// @@ -401,7 +427,7 @@ namespace MP.Data.Controllers } /// - /// Update ddel campo VALORE di un dossier (che contiene json flux log serializzati) + /// Update del campo VALORE di un dossier (che contiene json flux log serializzati) /// /// record dossier da modificare /// @@ -744,7 +770,7 @@ namespace MP.Data.Controllers } /// - /// Recupero Odl CORRENTI + /// Recupero Odl CORRENTI /// /// public List OdlGetCurrent() @@ -1001,6 +1027,24 @@ namespace MP.Data.Controllers return dbResult; } + /// + /// Elenco Vocabolario (completo) + /// + /// + public List VocabolarioGetAll() + { + List dbResult = new List(); + using (var dbCtx = new MoonProContext(_configuration)) + { + dbResult = dbCtx + .DbSetVocabolario + .AsNoTracking() + .OrderBy(x => x.Lemma) + .ToList(); + } + return dbResult; + } + #endregion Public Methods #region Private Fields diff --git a/MP.Data/DatabaseModels/VocabolarioModel.cs b/MP.Data/DatabaseModels/VocabolarioModel.cs new file mode 100644 index 00000000..9583e936 --- /dev/null +++ b/MP.Data/DatabaseModels/VocabolarioModel.cs @@ -0,0 +1,22 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations.Schema; + +#nullable disable +// +// This is here so CodeMaid doesn't reorganize this document +// +namespace MP.Data.DatabaseModels +{ + [Table("Vocabolario")] + public partial class VocabolarioModel + { + #region Public Properties + + public string Lingua { get; set; } + public string Lemma { get; set; } + public string Traduzione { get; set; } + + #endregion Public Properties + } +} \ No newline at end of file diff --git a/MP.Data/MoonProContext.cs b/MP.Data/MoonProContext.cs index 99ddb37e..2ed53d5e 100644 --- a/MP.Data/MoonProContext.cs +++ b/MP.Data/MoonProContext.cs @@ -51,6 +51,7 @@ namespace MP.Data public virtual DbSet DbSetStatOdl { get; set; } public virtual DbSet DbSetStatoProd { get; set; } public virtual DbSet DbSetEvList { get; set; } + public virtual DbSet DbSetVocabolario { get; set; } #endregion Public Properties @@ -303,7 +304,12 @@ namespace MP.Data modelBuilder.Entity(entity => { - entity.HasKey(e => new { e.IdxMacchina, e.InizioStato, e.IdxTipo}); + entity.HasKey(e => new { e.IdxMacchina, e.InizioStato, e.IdxTipo }); + + }); + modelBuilder.Entity(entity => + { + entity.HasKey(e => new { e.Lingua, e.Lemma }); }); diff --git a/MP.SPEC/Components/ListPARAMS.razor b/MP.SPEC/Components/ListPARAMS.razor index 7d93b2da..d49a30f6 100644 --- a/MP.SPEC/Components/ListPARAMS.razor +++ b/MP.SPEC/Components/ListPARAMS.razor @@ -22,6 +22,7 @@ else Data Macchina Parametro + Nome Valore @@ -41,6 +42,9 @@ else @record.CodFlux + + @traduci(record.CodFlux) + @record.Valore diff --git a/MP.SPEC/Components/ListPARAMS.razor.cs b/MP.SPEC/Components/ListPARAMS.razor.cs index c1543575..48e215a9 100644 --- a/MP.SPEC/Components/ListPARAMS.razor.cs +++ b/MP.SPEC/Components/ListPARAMS.razor.cs @@ -182,6 +182,13 @@ namespace MP.SPEC.Components #endregion Protected Methods + + private string traduci(string lemma) + { + var answ = MDService.Traduci(lemma, "IT"); + return answ; + } + #region Private Fields private static System.Timers.Timer aTimer = null!; diff --git a/MP.SPEC/Data/MpDataService.cs b/MP.SPEC/Data/MpDataService.cs index 6297fedb..146ff727 100644 --- a/MP.SPEC/Data/MpDataService.cs +++ b/MP.SPEC/Data/MpDataService.cs @@ -53,7 +53,6 @@ namespace MP.SPEC.Data /// public Dictionary> currTagConf { get; set; } = new Dictionary>(); - #endregion Public Properties #region Public Methods @@ -393,6 +392,19 @@ namespace MP.SPEC.Data return result; } + /// + /// Inserimento nuovo record dossier + /// + /// + /// + public async Task DossiersInsert(Dossiers currDoss) + { + // aggiorno record sul DB + bool answ = await dbController.DossiersUpdateValore(currDoss); + + return answ; + } + /// /// Effettua salvataggio snapshot parametri (con stored) + svuota eventuale cache redis /// @@ -434,6 +446,19 @@ namespace MP.SPEC.Data return answ; } + /// + /// Update valore dossier + /// + /// + /// + public async Task DossiersUpdateValore(Dossiers currDoss) + { + // aggiorno record sul DB + bool answ = await dbController.DossiersUpdateValore(currDoss); + + return answ; + } + /// /// Restitusice elenco aziende /// @@ -472,6 +497,8 @@ namespace MP.SPEC.Data await Task.Delay(1); RedisValue pattern = new RedisValue($"{redisBaseAddr}*"); bool answ = await ExecFlushRedisPattern(pattern); + // rileggo vocabolario.,.. + ObjVocabolario = VocabolarioGetAll(); return answ; } @@ -610,8 +637,6 @@ namespace MP.SPEC.Data TimeSpan ts = stopWatch.Elapsed; Log.Debug($"ListPODLFilt | Read from {readType}: {ts.TotalMilliseconds}ms"); return result; - - } /// @@ -769,7 +794,6 @@ namespace MP.SPEC.Data TimeSpan ts = stopWatch.Elapsed; Log.Debug($"OdlGetCurrent | Read from {readType}: {ts.TotalMilliseconds}ms"); - return dbResult; } @@ -863,6 +887,29 @@ namespace MP.SPEC.Data return dbController.OdlStart(IdxOdl); } + /// + /// Esegue traduzione dato vocabolario da Lingua + Lemma + /// + /// + /// + /// + public string Traduci(string lemma, string lingua) + { + string answ = $"[{lemma}]"; + // verifico se ho qualcosa nell'obj vocabolario... + if (ObjVocabolario == null || ObjVocabolario.Count == 0) + { + // inizializzo il vocabolario... + ObjVocabolario = VocabolarioGetAll(); + } + var record = ObjVocabolario.Where(x => x.Lingua == lingua && x.Lemma == lemma).FirstOrDefault(); + if (record != null) + { + answ = record.Traduzione; + } + return answ; + } + public async Task updateDossierValue(Dossiers currDoss, FluxLogDTO editFL) { bool answ = false; @@ -903,13 +950,38 @@ namespace MP.SPEC.Data return answ; } - - public async Task DossiersUpdateValore(Dossiers currDoss) + /// + /// Elenco completo tabella Vocabolario + /// + /// + public List VocabolarioGetAll() { - // aggiorno record sul DB - bool answ = await dbController.DossiersUpdateValore(currDoss); - - return answ; + Stopwatch stopWatch = new Stopwatch(); + stopWatch.Start(); + List? result = new List(); + string source = "REDIS"; + // cerco in redis... + RedisValue rawData = redisDb.StringGet(redisVocabolario); + if (!string.IsNullOrEmpty($"{rawData}")) + { + result = JsonConvert.DeserializeObject>($"{rawData}"); + } + else + { + result = dbController.VocabolarioGetAll(); + // serializzo e salvo... + rawData = JsonConvert.SerializeObject(result); + redisDb.StringSet(redisVocabolario, rawData, getRandTOut(redisLongTimeCache / 5)); + source = "DB"; + } + stopWatch.Stop(); + TimeSpan ts = stopWatch.Elapsed; + Log.Debug($"VocabolarioGetAll Read from {source}: {ts.TotalMilliseconds}ms"); + if (result == null) + { + result = new List(); + } + return result; } #endregion Public Methods @@ -938,7 +1010,9 @@ namespace MP.SPEC.Data #region Private Fields private const string redisArtByDossier = redisBaseAddr + "SPEC:Cache:ArtByDossier"; + private const string redisArtList = redisBaseAddr + "SPEC:Cache:ArtList"; + private const string redisBaseAddr = "MP:"; private const string redisConfKey = redisBaseAddr + "SPEC:Cache:Config"; @@ -946,23 +1020,34 @@ namespace MP.SPEC.Data private const string redisDossByMac = redisBaseAddr + "SPEC:Cache:DossByMac"; private const string redisFluxByMac = redisBaseAddr + "SPEC:Cache:FluxByMac"; - private const string redisOdlCurrByMac = redisBaseAddr + "SPEC:Cache:OdlByMac"; + + private const string redisFluxLogFilt = redisBaseAddr + "SPEC:Cache:FluxLogFilt"; private const string redisMacByFlux = redisBaseAddr + "SPEC:Cache:MacByFlux"; + private const string redisMacList = redisBaseAddr + "SPEC:Cache:MacList"; + + private const string redisOdlCurrByMac = redisBaseAddr + "SPEC:Cache:OdlByMac"; + private const string redisPOdlList = redisBaseAddr + "SPEC:Cache:POdlList"; - private const string redisFluxLogFilt = redisBaseAddr + "SPEC:Cache:FluxLogFilt"; private const string redisStatoCom = redisBaseAddr + "SPEC:Cache:StatoCom"; private const string redisTipoArt = redisBaseAddr + "SPEC:Cache:TipoArt"; + private const string redisVocabolario = redisBaseAddr + "SPEC:Cache:Vocabolario"; + private static IConfiguration _configuration = null!; private static ILogger _logger = null!; private static Logger Log = LogManager.GetCurrentClassLogger(); + /// + /// Oggetto vocabolario x uso continuo traduzione + /// + private List ObjVocabolario = new List(); + /// /// Oggetto per connessione a REDIS /// diff --git a/MP.SPEC/MP.SPEC.csproj b/MP.SPEC/MP.SPEC.csproj index b871039a..4eed2b81 100644 --- a/MP.SPEC/MP.SPEC.csproj +++ b/MP.SPEC/MP.SPEC.csproj @@ -5,7 +5,7 @@ enable enable MP.SPEC - 6.16.2210.2110 + 6.16.2211.311 diff --git a/MP.SPEC/Resources/ChangeLog.html b/MP.SPEC/Resources/ChangeLog.html index 84ccf39f..0fb5f0b8 100644 --- a/MP.SPEC/Resources/ChangeLog.html +++ b/MP.SPEC/Resources/ChangeLog.html @@ -1,6 +1,6 @@ Modulo MAPOSPEC -

Versione: 6.16.2210.2110

+

Versione: 6.16.2211.311


Note di rilascio:
  • diff --git a/MP.SPEC/Resources/VersNum.txt b/MP.SPEC/Resources/VersNum.txt index 148d3a17..22639881 100644 --- a/MP.SPEC/Resources/VersNum.txt +++ b/MP.SPEC/Resources/VersNum.txt @@ -1 +1 @@ -6.16.2210.2110 +6.16.2211.311 diff --git a/MP.SPEC/Resources/manifest.xml b/MP.SPEC/Resources/manifest.xml index 463051c6..33dd5804 100644 --- a/MP.SPEC/Resources/manifest.xml +++ b/MP.SPEC/Resources/manifest.xml @@ -1,6 +1,6 @@ - 6.16.2210.2110 + 6.16.2211.311 https://nexus.steamware.net/repository/SWS/MP-SPEC/stable/LAST/MP.SPEC.zip https://nexus.steamware.net/repository/SWS/MP-SPEC/stable/LAST/ChangeLog.html false