- corretta rigenerazione task

This commit is contained in:
Samuele Locatelli
2022-06-11 12:24:18 +02:00
parent dcbcecc435
commit d798e91055
3 changed files with 121 additions and 122 deletions
+80 -78
View File
@@ -362,6 +362,81 @@ namespace MP.MONO.Data.Controllers
return dbResult;
}
/// <summary>
/// genera elenco Task Schedulati missing da schema + attualmente presenti...
/// </summary>
/// <param name="MachineId"></param>
/// <returns></returns>
public async Task<bool> SchedMaintTaskCreateMissing(int MachineId)
{
bool answ = false;
using (MapoMonoContext localDbCtx = new MapoMonoContext())
{
try
{
List<PrevMaintTaskModel> missTask = new List<PrevMaintTaskModel>();
List<PrevMaintTaskModel>? allTask = localDbCtx
.DbSetPMTask
.Where(x => x.MachineId == MachineId)
.Include(i => i.CounterNav)
.ToList();
// analizzo task per idx del PMTask
var reqTask = allTask
.Select(x => x.PMTaskId)
.ToList();
var openTask = localDbCtx
.DbSetSMTask
.Where(x => x.DtExecution == DateTime.MinValue)
.Include(m => m.PMTaskeNav)
.ToList();
var currTask = openTask
.Where(x => x.PMTaskeNav.MachineId == MachineId)
.Select(x => x.PMTaskId)
.ToList();
// elenco dei SOLI task presenti
var listTaskOk = currTask.Intersect(reqTask).ToList();
// dall'elenco di quelli originali elimino presenti --> ho elenco mancanti...
foreach (var iTask in allTask)
{
// se non nell'elenco aggiungo...
if (!listTaskOk.Exists(x => x == iTask.PMTaskId))
{
missTask.Add(iTask);
}
}
var newRecs = missTask.Select(x => new ScheduledMaintModel()
{
CCode = x.CCode,
DtCreation = DateTime.Now,
ExpiryVal = x.ExpiryVal,
PMTaskId = x.PMTaskId,
CountStartVal = x.CounterNav.ActualVal
}).ToList();
localDbCtx
.DbSetSMTask
.AddRange(newRecs);
// salvo
localDbCtx.SaveChanges();
answ = true;
}
catch (Exception exc)
{
Log.Error($"Eccezione durante SchedMaintTaskGetFilt{Environment.NewLine}{exc}");
}
}
await Task.Delay(1);
return answ;
}
/// <summary>
/// Recupero elenco Task Schedulati (ultimi dato "skip")
/// </summary>
@@ -406,17 +481,17 @@ namespace MP.MONO.Data.Controllers
/// <param name="ExecDT"></param>
/// <param name="ExecUser"></param>
/// <returns></returns>
public async Task<bool> SchedMaintTaskSetDone(int MachineId, int SMTaskId, DateTime ExecDT,string ExecUser)
public async Task<bool> SchedMaintTaskSetDone(int MachineId, int SMTaskId, DateTime ExecDT, string ExecUser)
{
bool answ = false;
using (MapoMonoContext localDbCtx = new MapoMonoContext())
{
try
{
var dbResult = localDbCtx
.DbSetSMTask
.Where(x => x.PMTaskeNav.MachineId == MachineId && x.SMTaskId == SMTaskId)
.FirstOrDefault();
var dbResult = localDbCtx
.DbSetSMTask
.Where(x => x.PMTaskeNav.MachineId == MachineId && x.SMTaskId == SMTaskId)
.FirstOrDefault();
if (dbResult != null)
{
dbResult.DtExecution = ExecDT;
@@ -434,79 +509,6 @@ namespace MP.MONO.Data.Controllers
return answ;
}
/// <summary>
/// genera elenco Task Schedulati missing da schema + attualmente presenti...
/// </summary>
/// <param name="MachineId"></param>
/// <returns></returns>
public async Task<bool> SchedMaintTaskCreateMissing(int MachineId)
{
bool answ = false;
using (MapoMonoContext localDbCtx = new MapoMonoContext())
{
try
{
List<PrevMaintTaskModel> missTask = new List<PrevMaintTaskModel>();
List<PrevMaintTaskModel>? allTask = localDbCtx
.DbSetPMTask
.Where(x => x.MachineId == MachineId)
.ToList();
// analizzo task per idx del PMTask
var reqTask = allTask
.Select(x => x.PMTaskId)
.ToList();
var openTask = localDbCtx
.DbSetSMTask
.Where(x => x.DtExecution == DateTime.MinValue)
.Include(m => m.PMTaskeNav)
.ToList();
var currTask = openTask
.Where(x => x.PMTaskeNav.MachineId == MachineId)
.Select(x => x.PMTaskId)
.ToList();
// elenco dei SOLI task presenti
var listTaskOk = currTask.Intersect(reqTask).ToList();
// dall'elenco di quelli originali elimino presenti --> ho elenco mancanti...
foreach (var iTask in allTask)
{
// se non nell'elenco aggiungo...
if (!listTaskOk.Exists(x => x == iTask.PMTaskId))
{
missTask.Add(iTask);
}
}
var newRecs = missTask.Select(x => new ScheduledMaintModel()
{
CCode = x.CCode,
DtCreation = DateTime.Now,
ExpiryVal = x.ExpiryVal,
PMTaskId = x.PMTaskId
}).ToList();
localDbCtx
.DbSetSMTask
.AddRange(newRecs);
// salvo
localDbCtx.SaveChanges();
answ = true;
}
catch (Exception exc)
{
Log.Error($"Eccezione durante SchedMaintTaskGetFilt{Environment.NewLine}{exc}");
}
}
await Task.Delay(1);
return answ;
}
#endregion Public Methods
#region Private Fields
+41 -43
View File
@@ -22,8 +22,18 @@ namespace MP.MONO.UI.Components
// FARE!!! filtro macchina
private int MachineId = 1;
/// <summary>
/// Valore limite (in ore) per indicare come rosso una scadenza
/// </summary>
private int redLim = 24 * 2;
private List<ScheduledMaintModel>? SearchRecords = null;
/// <summary>
/// Valore limite (in ore) per indicare come giallo una scadenza
/// </summary>
private int yelLim = 24 * 7;
#endregion Private Fields
#region Private Properties
@@ -45,8 +55,13 @@ namespace MP.MONO.UI.Components
}
}
private int currSMTaskId { get; set; } = 0;
private DateTime execDate { get; set; } = DateTime.Today.AddHours(DateTime.Now.Hour);
private string execName { get; set; } = "";
private bool isLoading { get; set; } = false;
private int LimitDayPeriod { get; set; } = 7;
private int MaxRecord
{
get
@@ -64,6 +79,11 @@ namespace MP.MONO.UI.Components
}
}
private string modalShow
{
get => showTaskConf ? "show" : "hide";
}
private int numRecord
{
get => _numRecord;
@@ -92,6 +112,8 @@ namespace MP.MONO.UI.Components
}
}
private bool showTaskConf { get; set; } = false;
private int totalCount
{
get
@@ -109,6 +131,19 @@ namespace MP.MONO.UI.Components
#region Private Methods
private async Task ConfirmDone()
{
// se ho dataora ed esecutore...
if (!string.IsNullOrEmpty(execName) && currSMTaskId > 0)
{
// salvo!
bool fatto = await MMDataService.SchedMaintTaskSetDone(MachineId, currSMTaskId, execDate, execName);
// rigenero!
await RegenTask();
}
}
private void ForceReload(int newNum)
{
numRecord = newNum;
@@ -125,38 +160,6 @@ namespace MP.MONO.UI.Components
await ReloadData();
}
private bool showTaskConf { get; set; } = false;
private void ShowConfirm(int SMTaskId)
{
showTaskConf = !showTaskConf;
currSMTaskId = SMTaskId;
}
private DateTime execDate { get; set; } = DateTime.Today.AddHours(DateTime.Now.Hour);
private string execName { get; set; } = "";
private int currSMTaskId { get; set; } = 0;
private string modalShow
{
get => showTaskConf ? "show" : "hide";
}
private async Task ConfirmDone()
{
// se ho dataora ed esecutore...
if (!string.IsNullOrEmpty(execName) && currSMTaskId > 0)
{
// salvo!
bool fatto = await MMDataService.SchedMaintTaskSetDone(MachineId, currSMTaskId, execDate, execName);
// rigenero!
await RegenTask();
}
}
private async Task ReloadData()
{
isLoading = true;
@@ -169,6 +172,12 @@ namespace MP.MONO.UI.Components
isLoading = false;
}
private void ShowConfirm(int SMTaskId)
{
showTaskConf = !showTaskConf;
currSMTaskId = SMTaskId;
}
private async Task ToggleCompleted()
{
await Task.Delay(1);
@@ -176,17 +185,6 @@ namespace MP.MONO.UI.Components
await Task.Delay(1);
}
private int LimitDayPeriod { get; set; } = 7;
/// <summary>
/// Valore limite (in ore) per indicare come rosso una scadenza
/// </summary>
private int redLim = 24 * 2;
/// <summary>
/// Valore limite (in ore) per indicare come giallo una scadenza
/// </summary>
private int yelLim = 24 * 7;
#endregion Private Methods
}
}
-1
View File
@@ -345,7 +345,6 @@ namespace MP.MONO.UI.Data
return await Task.FromResult(dbResult);
}
/// <summary>
/// Registro esecuzione task schedualto
/// </summary>