Avanzamento gestione manutenzione rpeventiva (NON completata...)

This commit is contained in:
Samuele Locatelli
2022-06-10 19:45:22 +02:00
parent 010ca67d6e
commit 5586dcfede
28 changed files with 458 additions and 122 deletions
+114 -2
View File
@@ -17,7 +17,7 @@ namespace MP.MONO.Data.Controllers
#region Public Methods
/// <summary>
/// Recupero elenco allarmi (ultimi datop "skip")
/// Recupero elenco allarmi (ultimi dato "skip")
/// </summary>
/// <param name="MachineId"></param>
/// <param name="skipRec"></param>
@@ -328,7 +328,7 @@ namespace MP.MONO.Data.Controllers
}
/// <summary>
/// Recupero elenco allarmi (ultimi datop "skip")
/// Recupero elenco Task Manut Prev Previsti/Configurati (ultimi dato "skip")
/// </summary>
/// <param name="MachineId"></param>
/// <param name="skipRec"></param>
@@ -362,6 +362,118 @@ namespace MP.MONO.Data.Controllers
return dbResult;
}
/// <summary>
/// Recupero elenco Task Schedulati (ultimi dato "skip")
/// </summary>
/// <param name="MachineId"></param>
/// <param name="skipRec"></param>
/// <param name="numRec"></param>
/// <param name="showCompleted"></param>
/// <returns></returns>
public List<ScheduledMaintModel> SchedMaintTaskGetFilt(int MachineId, int skipRec, int numRec, bool showCompleted)
{
List<ScheduledMaintModel> dbResult = new List<ScheduledMaintModel>();
using (MapoMonoContext localDbCtx = new MapoMonoContext())
{
try
{
dbResult = localDbCtx
.DbSetSMTask
.Where(x => x.PMTaskeNav.MachineId == MachineId && (x.DtExecution == DateTime.MinValue || showCompleted))
.Include(m => m.PMTaskeNav.MachGroupNav)
.Include(m => m.CounterNav)
.Include(m => m.PMTaskeNav.MachineNav)
.Include(m => m.PMTaskeNav.TopicNav)
.Include(m => m.PMTaskeNav.UserTeamNav)
.OrderBy(x => x.PMTaskeNav.ExtIdx)
.Skip(skipRec)
.Take(numRec)
.ToList();
}
catch (Exception exc)
{
Log.Error($"Eccezione durante SchedMaintTaskGetFilt{Environment.NewLine}{exc}");
}
}
return dbResult;
}
/// <summary>
/// genera elenco Task Schedulati missing da schema + attualmente presenti...
/// </summary>
/// <param name="MachineId"></param>
/// <param name="skipRec"></param>
/// <param name="numRec"></param>
/// <param name="showCompleted"></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