From 0987a4f1872b02443a07fcba9722eb3660719ed1 Mon Sep 17 00:00:00 2001 From: Samuele Locatelli Date: Wed, 3 Apr 2024 11:14:52 +0200 Subject: [PATCH] Fix grafico --- MP.Data/Controllers/MpStatsController.cs | 329 ++++++++++++----------- MP.Stats/Data/MpStatsService.cs | 27 +- MP.Stats/Pages/TaskScheduler.razor.cs | 83 ++---- 3 files changed, 206 insertions(+), 233 deletions(-) diff --git a/MP.Data/Controllers/MpStatsController.cs b/MP.Data/Controllers/MpStatsController.cs index 14138d01..40aa264f 100644 --- a/MP.Data/Controllers/MpStatsController.cs +++ b/MP.Data/Controllers/MpStatsController.cs @@ -63,6 +63,58 @@ namespace MP.Data.Controllers return dbResult; } + public DateTime CalcNextExe(TaskListModel taskRec) + { + DateTime dtNext = DateTime.Today; + try + { + // calcolo next exec da tipo... + switch (taskRec.Freq) + { + case TaskFreqType.ND: + dtNext = taskRec.DtLastExec.AddDays(taskRec.Cad); + break; + + case TaskFreqType.Sec: + dtNext = taskRec.DtLastExec.AddSeconds(taskRec.Cad); + break; + + case TaskFreqType.Min: + dtNext = taskRec.DtLastExec.AddMinutes(taskRec.Cad); + break; + + case TaskFreqType.Hour: + dtNext = taskRec.DtLastExec.AddHours(taskRec.Cad); + break; + + case TaskFreqType.Day: + dtNext = taskRec.DtLastExec.AddDays(taskRec.Cad); + break; + + case TaskFreqType.Week: + dtNext = taskRec.DtLastExec.AddDays(7 * taskRec.Cad); + break; + + case TaskFreqType.Month: + dtNext = taskRec.DtLastExec.AddMonths(taskRec.Cad); + break; + + case TaskFreqType.Year: + dtNext = taskRec.DtLastExec.AddYears(taskRec.Cad); + break; + + default: + dtNext = taskRec.DtLastExec.AddDays(taskRec.Cad); + break; + } + } + catch (Exception exc) + { + Log.Error($"Eccezione in CalcNextExe{Environment.NewLine}{exc}"); + } + return dtNext; + } + /// /// Elenco tabella Articoli da filtro /// @@ -88,6 +140,74 @@ namespace MP.Data.Controllers { } + /// + /// Chiamata esecuzione di un singolo task programmato + /// + /// + /// + public TaskResultModel ExecuteTask(int TaskId) + { + TaskResultModel callRes = new TaskResultModel(); + using (var dbCtx = new MoonPro_STATSContext(_configuration)) + { + // imposto timeout a 5 min + //var currTimeout = dbCtx.Database.GetCommandTimeout(); + dbCtx.Database.SetCommandTimeout(TimeSpan.FromMinutes(5)); + try + { + DateTime dtStart = DateTime.Now; + // recupero i dati da richiamare... + var currRec = dbCtx + .DbSetTaskList + .Where(x => x.TaskId == TaskId) + .FirstOrDefault(); + if (currRec != null) + { + // recupero comando + string sqlCommand = currRec.Command; + string rawParams = currRec.Args; + callRes = dbCtx + .DbSetTaskResult + .FromSqlRaw($"EXEC {sqlCommand} {rawParams}") + .AsNoTracking() + .AsEnumerable() + .FirstOrDefault(); + DateTime dtEnd = DateTime.Now; + + // preparo record esecuzione... + TaskExecModel resRec = new TaskExecModel() + { + TaskId = TaskId, + DtStart = dtStart, + DtEnd = dtEnd, + IsError = callRes.ExecResult < 0, + Result = callRes.TextResult + }; + dbCtx + .DbSetTaskExe + .Add(resRec); + + // aggiorno record chiamata... + currRec.DtLastExec = dtStart; + currRec.LastResult = resRec.Result; + currRec.LastDuration = dtEnd.Subtract(dtStart).TotalSeconds; + // calcolo prossima esecuzione... + currRec.DtNextExec = CalcNextExe(currRec); + // segno modificato + dbCtx.Entry(currRec).State = EntityState.Modified; + + // salvo modifiche! + dbCtx.SaveChanges(); + } + } + catch (Exception exc) + { + Log.Error($"Eccezione in ExecuteSqlCommand{Environment.NewLine}{exc}"); + } + } + return callRes; + } + /// /// Elenco da tabella Macchine /// @@ -372,119 +492,6 @@ namespace MP.Data.Controllers return dbResult; } - public DateTime CalcNextExe(TaskListModel taskRec) - { - DateTime dtNext = DateTime.Today; - try - { - // calcolo next exec da tipo... - switch (taskRec.Freq) - { - case TaskFreqType.ND: - dtNext = taskRec.DtLastExec.AddDays(taskRec.Cad); - break; - case TaskFreqType.Sec: - dtNext = taskRec.DtLastExec.AddSeconds(taskRec.Cad); - break; - case TaskFreqType.Min: - dtNext = taskRec.DtLastExec.AddMinutes(taskRec.Cad); - break; - case TaskFreqType.Hour: - dtNext = taskRec.DtLastExec.AddHours(taskRec.Cad); - break; - case TaskFreqType.Day: - dtNext = taskRec.DtLastExec.AddDays(taskRec.Cad); - break; - case TaskFreqType.Week: - dtNext = taskRec.DtLastExec.AddDays(7 * taskRec.Cad); - break; - case TaskFreqType.Month: - dtNext = taskRec.DtLastExec.AddMonths(taskRec.Cad); - break; - case TaskFreqType.Year: - dtNext = taskRec.DtLastExec.AddYears(taskRec.Cad); - break; - default: - dtNext = taskRec.DtLastExec.AddDays(taskRec.Cad); - break; - } - } - catch (Exception exc) - { - Log.Error($"Eccezione in CalcNextExe{Environment.NewLine}{exc}"); - } - return dtNext; - } - - /// - /// Chiamata esecuzione di un singolo task programmato - /// - /// - /// - public TaskResultModel ExecuteTask(int TaskId) - { - TaskResultModel callRes = new TaskResultModel(); - using (var dbCtx = new MoonPro_STATSContext(_configuration)) - { - // imposto timeout a 5 min - //var currTimeout = dbCtx.Database.GetCommandTimeout(); - dbCtx.Database.SetCommandTimeout(TimeSpan.FromMinutes(5)); - try - { - DateTime dtStart = DateTime.Now; - // recupero i dati da richiamare... - var currRec = dbCtx - .DbSetTaskList - .Where(x => x.TaskId == TaskId) - .FirstOrDefault(); - if (currRec != null) - { - // recupero comando - string sqlCommand = currRec.Command; - string rawParams = currRec.Args; - callRes = dbCtx - .DbSetTaskResult - .FromSqlRaw($"EXEC {sqlCommand} {rawParams}") - .AsNoTracking() - .AsEnumerable() - .FirstOrDefault(); - DateTime dtEnd = DateTime.Now; - - // preparo record esecuzione... - TaskExecModel resRec = new TaskExecModel() - { - TaskId = TaskId, - DtStart = dtStart, - DtEnd = dtEnd, - IsError = callRes.ExecResult < 0, - Result = callRes.TextResult - }; - dbCtx - .DbSetTaskExe - .Add(resRec); - - // aggiorno record chiamata... - currRec.DtLastExec = dtStart; - currRec.LastResult = resRec.Result; - currRec.LastDuration = dtEnd.Subtract(dtStart).TotalSeconds; - // calcolo prossima esecuzione... - currRec.DtNextExec = CalcNextExe(currRec); - // segno modificato - dbCtx.Entry(currRec).State = EntityState.Modified; - - // salvo modifiche! - dbCtx.SaveChanges(); - } - - } - catch (Exception exc) - { - Log.Error($"Eccezione in ExecuteSqlCommand{Environment.NewLine}{exc}"); - } - } - return callRes; - } - /// /// Upsert record TaskExec /// @@ -546,54 +553,6 @@ namespace MP.Data.Controllers return dbResult; } - /// - /// Upsert record TaskList - /// - /// Record da aggiornare/inserire - /// - public bool TaskListUpsert(TaskListModel rec2upd) - { - bool done = false; - using (var dbCtx = new MoonPro_STATSContext(_configuration)) - { - try - { - var currData = dbCtx - .DbSetTaskList - .Where(x => x.TaskId == rec2upd.TaskId) - .FirstOrDefault(); - if (currData != null) - { - currData.Ordinal = rec2upd.Ordinal; - currData.Name = rec2upd.Name; - currData.Descript = rec2upd.Descript; - currData.Command = rec2upd.Command; - currData.Args = rec2upd.Args; - currData.Freq = rec2upd.Freq; - currData.Cad = rec2upd.Cad; - currData.DtLastExec = rec2upd.DtLastExec; - currData.DtNextExec = rec2upd.DtNextExec; - currData.LastDuration = rec2upd.LastDuration; - currData.LastResult = rec2upd.LastResult; - dbCtx.Entry(currData).State = EntityState.Modified; - } - else - { - dbCtx - .DbSetTaskList - .Add(rec2upd); - } - dbCtx.SaveChanges(); - done = true; - } - catch (Exception exc) - { - Log.Error($"Eccezione in TaskListUpsert{Environment.NewLine}{exc}"); - } - } - return done; - } - /// /// Update ordinamento task /// @@ -652,6 +611,54 @@ namespace MP.Data.Controllers return done; } + /// + /// Upsert record TaskList + /// + /// Record da aggiornare/inserire + /// + public bool TaskListUpsert(TaskListModel rec2upd) + { + bool done = false; + using (var dbCtx = new MoonPro_STATSContext(_configuration)) + { + try + { + var currData = dbCtx + .DbSetTaskList + .Where(x => x.TaskId == rec2upd.TaskId) + .FirstOrDefault(); + if (currData != null) + { + currData.Ordinal = rec2upd.Ordinal; + currData.Name = rec2upd.Name; + currData.Descript = rec2upd.Descript; + currData.Command = rec2upd.Command; + currData.Args = rec2upd.Args; + currData.Freq = rec2upd.Freq; + currData.Cad = rec2upd.Cad; + currData.DtLastExec = rec2upd.DtLastExec; + currData.DtNextExec = rec2upd.DtNextExec; + currData.LastDuration = rec2upd.LastDuration; + currData.LastResult = rec2upd.LastResult; + dbCtx.Entry(currData).State = EntityState.Modified; + } + else + { + dbCtx + .DbSetTaskList + .Add(rec2upd); + } + dbCtx.SaveChanges(); + done = true; + } + catch (Exception exc) + { + Log.Error($"Eccezione in TaskListUpsert{Environment.NewLine}{exc}"); + } + } + return done; + } + #endregion Public Methods #region Private Fields diff --git a/MP.Stats/Data/MpStatsService.cs b/MP.Stats/Data/MpStatsService.cs index c6b3ccc0..db21582b 100644 --- a/MP.Stats/Data/MpStatsService.cs +++ b/MP.Stats/Data/MpStatsService.cs @@ -641,20 +641,6 @@ namespace MP.Stats.Data return result; } - /// - /// Update/Insert record TaskList - /// - /// - /// - public async Task TaskListUpsert(TaskListModel rec2upd) - { - bool dbResult = dbController.TaskListUpsert(rec2upd); - // svuoto cache! - await FlushCache("Task"); - return await Task.FromResult(dbResult); - } - - /// /// Update ordinamento task /// @@ -668,6 +654,19 @@ namespace MP.Stats.Data return await Task.FromResult(dbResult); } + /// + /// Update/Insert record TaskList + /// + /// + /// + public async Task TaskListUpsert(TaskListModel rec2upd) + { + bool dbResult = dbController.TaskListUpsert(rec2upd); + // svuoto cache! + await FlushCache("Task"); + return await Task.FromResult(dbResult); + } + #endregion Public Methods #region Protected Fields diff --git a/MP.Stats/Pages/TaskScheduler.razor.cs b/MP.Stats/Pages/TaskScheduler.razor.cs index 1fe4e398..ef0fee1c 100644 --- a/MP.Stats/Pages/TaskScheduler.razor.cs +++ b/MP.Stats/Pages/TaskScheduler.razor.cs @@ -45,7 +45,7 @@ namespace MP.Stats.Pages { await InvokeAsync(() => { - Task task = UpdateData(); + Task task = ReloadData(); StateHasChanged(); }); } @@ -68,9 +68,13 @@ namespace MP.Stats.Pages get => detRecord == null ? "col-12" : "col-6"; } + protected int maxOrdinal { get; set; } = 999; + [Inject] protected MessageService MessageService { get; set; } + protected int minOrdinal { get; set; } = 0; + [Inject] protected NavigationManager NavManager { get; set; } @@ -78,8 +82,6 @@ namespace MP.Stats.Pages protected MpStatsService StatService { get; set; } protected int totalCount { get; set; } = 0; - protected int minOrdinal { get; set; } = 0; - protected int maxOrdinal { get; set; } = 999; protected Task2ExeType TypeSel { @@ -108,6 +110,17 @@ namespace MP.Stats.Pages await ReloadData(); } + /// + /// Gestione display avanzamento step + /// + /// + protected async Task advStep(int currStep) + { + currVal = currStep; + nextVal = currVal + 1; + await InvokeAsync(StateHasChanged); + } + protected async Task doCancel() { currRecord = null; @@ -121,12 +134,11 @@ namespace MP.Stats.Pages await ReloadData(); } - protected async Task DoFilter(SelectData newFilter) + protected async Task doMove(TaskListModel currRec, bool goUp) { - clearFile(); - SearchRecords = null; - ListRecords = null; - currFilter = newFilter; + await StatService.TaskListMove(currRec, goUp); + detRecord = null; + currRecord = null; await ReloadData(); } @@ -137,19 +149,6 @@ namespace MP.Stats.Pages await StatService.FlushCache(); await ReloadData(); } - private double currVal = 0; - private double nextVal = 0; - private int MaxVal = 10; - /// - /// Gestione display avanzamento step - /// - /// - protected async Task advStep(int currStep) - { - currVal = currStep; - nextVal = currVal + 1; - await InvokeAsync(StateHasChanged); - } protected async Task doRun(TaskListModel selRec) { @@ -249,7 +248,6 @@ namespace MP.Stats.Pages currRecord = null; SearchRecords = null; ListRecords = null; - currFilter = SelectData.Init(5, 7); await ReloadData(); } @@ -263,65 +261,34 @@ namespace MP.Stats.Pages return answ; } - protected double simVal(double minVal, double maxVal) - { - Random rnd = new Random(); - return rnd.NextDouble() * (maxVal - minVal) + minVal; - } - - protected async Task UpdateData() - { - currRecord = null; - await ReloadData(); - } - - protected async Task doMove(TaskListModel currRec, bool goUp) - { - await StatService.TaskListMove(currRec, goUp); - detRecord = null; - currRecord = null; - await ReloadData(); - } - #endregion Protected Methods #region Private Fields + private double currVal = 0; private List ListRecords; - + private int MaxVal = 10; + private double nextVal = 0; private List SearchRecords; #endregion Private Fields #region Private Properties - private SelectData currFilter - { - get - { - return MessageService.ODL_Filter; - } - set - { - MessageService.ODL_Filter = value; - } - } - private int currPage { get; set; } = 1; private TaskListModel currRecord { get; set; } = null; private TaskListModel detRecord { get; set; } = null; + private int expTimeMsec { get; set; } = 30000; + private string fullPath { get => $"{Directory.GetCurrentDirectory()}\\temp\\{fileName}"; } private bool isLoading { get; set; } = false; - - private int expTimeMsec { get; set; } = 30000; - private int numRecord { get; set; } = 10; private Task2ExeType typeSel { get; set; } = Task2ExeType.ND;