From 32d370fbd3f36b7e39940f7dd28af3907b5a5947 Mon Sep 17 00:00:00 2001 From: Samuele Locatelli Date: Wed, 10 Sep 2025 15:19:21 +0200 Subject: [PATCH] Update TAB3: - inserita dataora forzata x chiusura ODL - ritardo 50ms prima di procedere --- MP-TAB3/Components/OdlMan.razor.cs | 17 +++- MP-TAB3/MP-TAB3.csproj | 2 +- MP-TAB3/Resources/ChangeLog.html | 2 +- MP-TAB3/Resources/VersNum.txt | 2 +- MP-TAB3/Resources/manifest.xml | 2 +- MP.Data/Controllers/MpTabController.cs | 50 +++++----- MP.Data/Services/TabDataService.cs | 125 ++++++++++++------------- 7 files changed, 103 insertions(+), 97 deletions(-) diff --git a/MP-TAB3/Components/OdlMan.razor.cs b/MP-TAB3/Components/OdlMan.razor.cs index 2535685a..35b6523e 100644 --- a/MP-TAB3/Components/OdlMan.razor.cs +++ b/MP-TAB3/Components/OdlMan.razor.cs @@ -277,7 +277,8 @@ namespace MP_TAB3.Components await advStep(currStep++); // processo x macchina selezionata - await TabDServ.OdlFineProd(idxODLCurr, IdxMaccSel); + await TabDServ.OdlFineProd(idxODLCurr, IdxMaccSel, DateTime.Now); + await Task.Delay(50); await advStep(currStep++); string evText = "Registrata ANNULLAMENTO ATTREZZAGGIO per ODL {0}"; @@ -296,7 +297,8 @@ namespace MP_TAB3.Components sb.AppendLine("---"); var tabOdlAltra = await TabDServ.OdlCurrByMacc(idxMaccAltraTav, true); int idxOdlAltra = tabOdlAltra.IdxOdl; - await TabDServ.OdlFineProd(idxOdlAltra, idxMaccAltraTav); + await Task.Delay(50); + await TabDServ.OdlFineProd(idxOdlAltra, idxMaccAltraTav, DateTime.Now); sb.AppendLine(String.Format(evText, idxOdlAltra)); await processaEvento(idxMaccAltraTav, idxEvento, String.Format(evText, idxOdlAltra), idxOdlAltra); @@ -706,7 +708,8 @@ namespace MP_TAB3.Components if (idxOdlAltra > 0) { sb.AppendLine("---"); - await TabDServ.OdlFineProd(idxOdlAltra, idxMaccAltraTav); + await TabDServ.OdlFineProd(idxOdlAltra, idxMaccAltraTav, DateTime.Now); + await Task.Delay(50); evText = $"Registrato inizio attrezzaggio per ODL {idxOdlAltra} (setup seconda tavola)"; sb.AppendLine(evText); await processaEvento(idxMaccAltraTav, idxEvento, evText, idxOdlAltra); @@ -849,7 +852,8 @@ namespace MP_TAB3.Components try { // processo x macchina selezionata - await TabDServ.OdlFineProd(idxODLCurr, IdxMaccSel); + await TabDServ.OdlFineProd(idxODLCurr, IdxMaccSel, DateTime.Now); + await Task.Delay(50); string evText = "Registrata fine produzione per ODL {0}"; StringBuilder sb = new StringBuilder(); sb.AppendLine(String.Format(evText, idxODLCurr)); @@ -861,7 +865,8 @@ namespace MP_TAB3.Components sb.AppendLine("---"); var tabOdlAltra = await TabDServ.OdlCurrByMacc(idxMaccAltraTav, true); int idxOdlAltra = tabOdlAltra.IdxOdl; - await TabDServ.OdlFineProd(idxOdlAltra, idxMaccAltraTav); + await TabDServ.OdlFineProd(idxOdlAltra, idxMaccAltraTav, DateTime.Now); + await Task.Delay(50); sb.AppendLine(String.Format(evText, idxOdlAltra)); await processaEvento(idxMaccAltraTav, idxEvento, String.Format(evText, idxOdlAltra), idxOdlAltra); } @@ -1202,10 +1207,12 @@ namespace MP_TAB3.Components private bool approvTCEnabled = false; private bool confRett = true; private double currVal = 0; + /// /// Tempo di delay x simulare cambio idxMaccSub /// private int delayUpd = 1000; + private List emailAdmDest = new List(); private bool enableAnnullaSetup = false; diff --git a/MP-TAB3/MP-TAB3.csproj b/MP-TAB3/MP-TAB3.csproj index db9146d1..a7305a47 100644 --- a/MP-TAB3/MP-TAB3.csproj +++ b/MP-TAB3/MP-TAB3.csproj @@ -3,7 +3,7 @@ net6.0 enable - 6.16.2509.917 + 6.16.2509.1015 enable MP_TAB3 diff --git a/MP-TAB3/Resources/ChangeLog.html b/MP-TAB3/Resources/ChangeLog.html index 5853e646..b1b9f217 100644 --- a/MP-TAB3/Resources/ChangeLog.html +++ b/MP-TAB3/Resources/ChangeLog.html @@ -1,6 +1,6 @@ Modulo MAPOSPEC -

Versione: 6.16.2509.917

+

Versione: 6.16.2509.1015


Note di rilascio:
  • diff --git a/MP-TAB3/Resources/VersNum.txt b/MP-TAB3/Resources/VersNum.txt index f8cbadf0..a8436916 100644 --- a/MP-TAB3/Resources/VersNum.txt +++ b/MP-TAB3/Resources/VersNum.txt @@ -1 +1 @@ -6.16.2509.917 +6.16.2509.1015 diff --git a/MP-TAB3/Resources/manifest.xml b/MP-TAB3/Resources/manifest.xml index 1134051c..046ec27d 100644 --- a/MP-TAB3/Resources/manifest.xml +++ b/MP-TAB3/Resources/manifest.xml @@ -1,6 +1,6 @@ - 6.16.2509.917 + 6.16.2509.1015 https://nexus.steamware.net/repository/SWS/MP-TAB3/stable/LAST/MP-TAB3.zip https://nexus.steamware.net/repository/SWS/MP-TAB3/stable/LAST/ChangeLog.html false diff --git a/MP.Data/Controllers/MpTabController.cs b/MP.Data/Controllers/MpTabController.cs index 3624e8e2..4975a126 100644 --- a/MP.Data/Controllers/MpTabController.cs +++ b/MP.Data/Controllers/MpTabController.cs @@ -509,6 +509,27 @@ namespace MP.Data.Controllers _configuration = null; } + /// + /// Restituisce elenco RC filtrato + /// + /// + /// + /// + /// + public List ElencoConfProdFilt(string idxMacchina, DateTime dataFrom, DateTime dataTo) + { + List dbResult = new List(); + using (var dbCtx = new MoonProContext(_configuration)) + { + dbResult = dbCtx + .DbSetElConfProd + .Where(x => x.IdxMacchina == idxMacchina && (dataFrom <= x.DataOraConf && x.DataOraConf <= dataTo)) + .AsNoTracking() + .ToList(); + } + return dbResult; + } + /// /// Fix ODL per Elenco Lotti /// @@ -1200,8 +1221,9 @@ namespace MP.Data.Controllers /// /// /// + /// /// - public bool OdlFineProd(int idxODL, string idxMacchina) + public bool OdlFineProd(int idxODL, string idxMacchina, DateTime dtRif) { bool fatto = false; using (var dbCtx = new MoonProContext(_configuration)) @@ -1210,9 +1232,10 @@ namespace MP.Data.Controllers { var IdxODL = new SqlParameter("@IdxODL", idxODL); var IdxMacc = new SqlParameter("@IdxMacchina", idxMacchina); + var DataChiusura = new SqlParameter("@DataChiusura", dtRif); var result = dbCtx .Database - .ExecuteSqlRaw("EXEC stp_ODL_fineProd @IdxODL, @IdxMacchina", IdxODL, IdxMacc); + .ExecuteSqlRaw("EXEC stp_ODL_fineProd @IdxODL, @IdxMacchina, @DataChiusura", IdxODL, IdxMacc, DataChiusura); fatto = result != 0; } catch (Exception exc) @@ -1717,29 +1740,6 @@ namespace MP.Data.Controllers return dbResult; } - /// - /// Restituisce elenco RC filtrato - /// - /// - /// - /// - /// - public List ElencoConfProdFilt(string idxMacchina, DateTime dataFrom, DateTime dataTo) - { - List dbResult = new List(); - using (var dbCtx = new MoonProContext(_configuration)) - { - dbResult = dbCtx - .DbSetElConfProd - .Where (x => x.IdxMacchina== idxMacchina && (dataFrom <= x.DataOraConf && x.DataOraConf <= dataTo)) - .AsNoTracking() - .ToList(); - } - return dbResult; - } - - - /// /// Registra controllo /// diff --git a/MP.Data/Services/TabDataService.cs b/MP.Data/Services/TabDataService.cs index 54c445b5..e344431a 100644 --- a/MP.Data/Services/TabDataService.cs +++ b/MP.Data/Services/TabDataService.cs @@ -653,28 +653,43 @@ namespace MP.Data.Services return SteamCrypto.DecryptString(encData, Constants.passPhrase); } - private bool _disposed = false; - protected override void Dispose(bool disposing) + /// + /// Restituisce elenco ElencoConfermeProd filtrato e async + /// + /// + /// + /// + /// + public async Task> ElencoConfProdFiltAsync(string idxMacchina, DateTime dataFrom, DateTime dataTo) { - if (!_disposed) + // setup parametri costanti + string source = "DB"; + Stopwatch sw = new Stopwatch(); + sw.Start(); + List result = new List(); + // cerco in redisConn... + string currKey = $"{redisBaseKey}:ElConfProd:{idxMacchina}:{dataFrom:yyyyyMMdd-HHmm}:{dataFrom:yyyyyMMdd-HHmm}"; + RedisValue rawData = await redisDb.StringGetAsync(currKey); + if (rawData.HasValue) { - if (disposing) - { - // Free managed resources here - dbTabController.Dispose(); - dbIocController.Dispose(); - dbInveController.Dispose(); - CurrConfig.Clear(); - connStrParams.Clear(); - esCollect.Dispose(); - } - - // Free unmanaged resources here - _disposed = true; + result = JsonConvert.DeserializeObject>($"{rawData}") ?? new List(); + source = "REDIS"; } - - // Call base class implementation. - base.Dispose(disposing); + else + { + result = dbTabController.ElencoConfProdFilt(idxMacchina, dataFrom, dataTo); + // serializzo e salvo... + rawData = JsonConvert.SerializeObject(result); + await redisDb.StringSetAsync(currKey, rawData, UltraLongCache); + } + sw.Stop(); + string callName = $"ElencoConfProdFiltAsync.{source}"; + int numRec = esCollect.RecordCall(callName, sw.Elapsed.TotalMilliseconds); + if (numRec >= nRecLog) + { + Log.Debug(esCollect.GetCallSum(callName, true)); + } + return result; } /// @@ -1867,19 +1882,20 @@ namespace MP.Data.Services /// /// /// + /// /// - public async Task OdlFineProd(int idxODL, string idxMacchina) + public async Task OdlFineProd(int idxODL, string idxMacchina, DateTime dtRif) { bool answ = false; try { // inserisco evento - answ = dbTabController.OdlFineProd(idxODL, idxMacchina); + answ = dbTabController.OdlFineProd(idxODL, idxMacchina, dtRif); await FlushOdlCache(); } catch (Exception exc) { - string logMsg = $"Eccezione in OdlFineProd | idxODL: {idxODL} | idxMacchina: {idxMacchina}{Environment.NewLine}{exc}"; + string logMsg = $"Eccezione in OdlFineProd | idxODL: {idxODL} | idxMacchina: {idxMacchina} | dtRif: {dtRif}{Environment.NewLine}{exc}"; Log.Error(logMsg); } return answ; @@ -2595,46 +2611,6 @@ namespace MP.Data.Services return result; } - - /// - /// Restituisce elenco ElencoConfermeProd filtrato e async - /// - /// - /// - /// - /// - public async Task> ElencoConfProdFiltAsync(string idxMacchina, DateTime dataFrom, DateTime dataTo) - { - // setup parametri costanti - string source = "DB"; - Stopwatch sw = new Stopwatch(); - sw.Start(); - List result = new List(); - // cerco in redisConn... - string currKey = $"{redisBaseKey}:ElConfProd:{idxMacchina}:{dataFrom:yyyyyMMdd-HHmm}:{dataFrom:yyyyyMMdd-HHmm}"; - RedisValue rawData = await redisDb.StringGetAsync(currKey); - if (rawData.HasValue) - { - result = JsonConvert.DeserializeObject>($"{rawData}")?? new List(); - source = "REDIS"; - } - else - { - result = dbTabController.ElencoConfProdFilt(idxMacchina, dataFrom, dataTo); - // serializzo e salvo... - rawData = JsonConvert.SerializeObject(result); - await redisDb.StringSetAsync(currKey, rawData, UltraLongCache); - } - sw.Stop(); - string callName = $"ElencoConfProdFiltAsync.{source}"; - int numRec = esCollect.RecordCall(callName, sw.Elapsed.TotalMilliseconds); - if (numRec >= nRecLog) - { - Log.Debug(esCollect.GetCallSum(callName, true)); - } - return result; - } - /// /// Registra controllo /// @@ -3927,6 +3903,29 @@ namespace MP.Data.Services #region Protected Methods + protected override void Dispose(bool disposing) + { + if (!_disposed) + { + if (disposing) + { + // Free managed resources here + dbTabController.Dispose(); + dbIocController.Dispose(); + dbInveController.Dispose(); + CurrConfig.Clear(); + connStrParams.Clear(); + esCollect.Dispose(); + } + + // Free unmanaged resources here + _disposed = true; + } + + // Call base class implementation. + base.Dispose(disposing); + } + protected void setExpDays() { ConfigGetVal("TAB_dtTimerScadLogin", ref expMinutes); @@ -3937,7 +3936,7 @@ namespace MP.Data.Services #region Private Fields private static Logger Log = LogManager.GetCurrentClassLogger(); - + private bool _disposed = false; private string CodModulo = ""; private string CodModuloParam = "";