From 1b4d70330e70a068fa97267712ab9da2cfead1ef Mon Sep 17 00:00:00 2001 From: Samuele Locatelli Date: Fri, 31 Mar 2023 11:53:06 +0200 Subject: [PATCH] update stored pulizia dati x Taskexec --- MP.MONO.Data/Controllers/MpDbController.cs | 195 ++++++++++-------- .../SqlScripts/Stored/stp_removeOldData.sql | 9 + 2 files changed, 117 insertions(+), 87 deletions(-) diff --git a/MP.MONO.Data/Controllers/MpDbController.cs b/MP.MONO.Data/Controllers/MpDbController.cs index 59ae03e..fe38664 100644 --- a/MP.MONO.Data/Controllers/MpDbController.cs +++ b/MP.MONO.Data/Controllers/MpDbController.cs @@ -2,23 +2,14 @@ using MP.MONO.Core.DTO; using MP.MONO.Data.DbModels; using MP.MONO.Data.DTO; -using MySqlConnector; using NLog; -using System.Collections.Generic; using System.Diagnostics; -using System.Reflection.PortableExecutable; using static MP.MONO.Core.Enums; namespace MP.MONO.Data.Controllers { public class MpDbController : IDisposable { - #region Private Fields - - private static NLog.Logger Log = LogManager.GetCurrentClassLogger(); - - #endregion Private Fields - #region Public Constructors public MpDbController() @@ -513,8 +504,8 @@ namespace MP.MONO.Data.Controllers stopWatch.Start(); try { - // verifico non sia già aperto... - // verifico eventuali items già aperti da NON dover aggiungere... + // verifico non sia già aperto... verifico eventuali items già aperti da NON + // dover aggiungere... var stillOpenAlarms = localDbCtx .DbSetAlarmRec .Where(x => x.DtStart >= x.DtEnd && x.AlarmId == newItem.AlarmId) @@ -589,7 +580,7 @@ namespace MP.MONO.Data.Controllers newItems.Remove(singleItem); } } - } + } #endif if (newItems.Count > 0) @@ -695,6 +686,7 @@ namespace MP.MONO.Data.Controllers } return fatto; } + /// /// Recupero DataLogDTO data condizione filtro /// @@ -984,7 +976,6 @@ namespace MP.MONO.Data.Controllers return currMachDto; } - /// /// Recupero pareto status impianto /// @@ -1263,7 +1254,6 @@ namespace MP.MONO.Data.Controllers return fatto; } - /// /// Inserimento di una lista record Production Log /// @@ -1290,6 +1280,31 @@ namespace MP.MONO.Data.Controllers return fatto; } + /// + /// Effettua chiamata stored x pulizia dati stale/vecchi + /// + /// + /// + public List RemoveOldData(int numDay2Keep) + { + List dbResult = new List(); + using (MapoMonoContext localDbCtx = new MapoMonoContext()) + { + try + { + dbResult = localDbCtx + .DbSetTaskExec + .FromSqlRaw("CALL stp_removeOldData({0});", numDay2Keep) + .ToList(); + } + catch (Exception exc) + { + Log.Error($"Eccezione durante RemoveOldData{Environment.NewLine}{exc}"); + } + } + return dbResult; + } + /// /// genera elenco Task Schedulati missing da schema + attualmente presenti... /// @@ -1366,69 +1381,6 @@ namespace MP.MONO.Data.Controllers return answ; } - - /// - /// Inserisce un nuovo record status log calcolando durata da rec precedente.. - /// - /// - /// - public async Task StatusLogInsert(StatusLogModel newRec) - { - bool answ = false; - using (MapoMonoContext localDbCtx = new MapoMonoContext()) - { - try - { - bool needInsert = false; - // ultimo inserito... - var lastRec = localDbCtx - .DbSetStatusLog - .Where(x => x.MachineId == newRec.MachineId) - .OrderByDescending(x => x.DtRif) - .FirstOrDefault(); - - // se non trovato inserisco comunque - if (lastRec == null) - { - needInsert = true; - } - // se trovato controllo variazione... - else - { - // se cambia stato... - if (lastRec.CodStatus != newRec.CodStatus) - { - needInsert = true; - } - // oppure se è passato il giorno... - else if (lastRec.DtRif.Date < newRec.DtRif.Date) - { - needInsert = true; - } - // calcolo durata vecchio record... - lastRec.Duration = (float)DateTime.Now.Subtract(lastRec.DtRif).TotalMinutes; - } - - if (needInsert) - { - localDbCtx - .DbSetStatusLog - .Add(newRec); - } - - // salvo - localDbCtx.SaveChanges(); - answ = true; - } - catch (Exception exc) - { - Log.Error($"Eccezione durante StatusLogInsert{Environment.NewLine}{exc}"); - } - } - await Task.Delay(1); - return answ; - } - /// /// Recupero elenco Task Schedulati dati Macchina ed intervento "master" /// @@ -1560,30 +1512,99 @@ namespace MP.MONO.Data.Controllers } /// - /// Effettua chiamata stored x pulizia dati stale/vecchi + /// Inserisce un nuovo record status log calcolando durata da rec precedente.. /// - /// + /// /// - public List RemoveOldData(int numDay2Keep) + public async Task StatusLogInsert(StatusLogModel newRec) { - List dbResult = new List(); + bool answ = false; using (MapoMonoContext localDbCtx = new MapoMonoContext()) { try { - dbResult = localDbCtx - .DbSetTaskExec - .FromSqlRaw("CALL stp_removeOldData({0});", numDay2Keep) - .ToList(); + bool needInsert = false; + // ultimo inserito... + var lastRec = localDbCtx + .DbSetStatusLog + .Where(x => x.MachineId == newRec.MachineId) + .OrderByDescending(x => x.DtRif) + .FirstOrDefault(); + + // se non trovato inserisco comunque + if (lastRec == null) + { + needInsert = true; + } + // se trovato controllo variazione... + else + { + // se cambia stato... + if (lastRec.CodStatus != newRec.CodStatus) + { + needInsert = true; + } + // oppure se è passato il giorno... + else if (lastRec.DtRif.Date < newRec.DtRif.Date) + { + needInsert = true; + } + // calcolo durata vecchio record... + lastRec.Duration = (float)DateTime.Now.Subtract(lastRec.DtRif).TotalMinutes; + } + + if (needInsert) + { + localDbCtx + .DbSetStatusLog + .Add(newRec); + } + + // salvo + localDbCtx.SaveChanges(); + answ = true; } catch (Exception exc) { - Log.Error($"Eccezione durante RemoveOldData{Environment.NewLine}{exc}"); + Log.Error($"Eccezione durante StatusLogInsert{Environment.NewLine}{exc}"); } } - return dbResult; + await Task.Delay(1); + return answ; + } + + /// + /// Registrazione record esecuzione task x log + /// + /// + /// + public bool TaskExecInsertLog(List recList) + { + bool answ = false; + using (MapoMonoContext localDbCtx = new MapoMonoContext()) + { + try + { + localDbCtx + .DbSetTaskExec + .AddRange(recList); + localDbCtx.SaveChanges(); + answ = true; + } + catch (Exception exc) + { + Log.Error($"Eccezione durante TaskExecInsertLog{Environment.NewLine}{exc}"); + } + } + return answ; } #endregion Public Methods + + #region Private Fields + + private static NLog.Logger Log = LogManager.GetCurrentClassLogger(); + + #endregion Private Fields } } \ No newline at end of file diff --git a/MP.MONO.Data/SqlScripts/Stored/stp_removeOldData.sql b/MP.MONO.Data/SqlScripts/Stored/stp_removeOldData.sql index 4af4ab5..fa1d08e 100644 --- a/MP.MONO.Data/SqlScripts/Stored/stp_removeOldData.sql +++ b/MP.MONO.Data/SqlScripts/Stored/stp_removeOldData.sql @@ -54,6 +54,15 @@ BEGIN ,'Cleanup StatusLog' AS CodTask ,CONCAT('Deleted ', CAST(ROW_COUNT() AS NCHAR), ' rows') AS Result; + -- TaskExec + DELETE + FROM TaskExec + WHERE DtRif <= @dt_min; + INSERT INTO TaskExec(DtRif, CodTask, Result) + SELECT CURRENT_TIMESTAMP AS DtRif + ,'Cleanup TaskExec' AS CodTask + ,CONCAT('Deleted ', CAST(ROW_COUNT() AS NCHAR), ' rows') AS Result; + COMMIT;