Update pesante x gestione servizio x accesso IOC repo

This commit is contained in:
Samuele Locatelli
2026-04-30 17:58:55 +02:00
parent 7fe91d59d7
commit 523bf78d33
9 changed files with 1184 additions and 19 deletions
+75
View File
@@ -1,5 +1,6 @@
using MP.Data.DbModels;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using static MP.Core.Objects.Enums;
@@ -26,6 +27,18 @@ namespace MP.Data.Repository.IOC
/// <returns></returns>
Task<bool> CheckCambiaStatoBatchAsync(tipoInputEvento tipoInput, string IdxMacchina, DateTime InizioStato, int IdxTipo, string CodArt, string Value, int MatrOpr, string pallet);
/// <summary>
/// Elenco da tabella Config
/// </summary>
/// <returns></returns>
Task<List<ConfigModel>> ConfigGetAllAsync();
/// <summary>
/// Intera tab dati macchina
/// </summary>
/// <returns></returns>
Task<List<DatiMacchineModel>> DatiMacchineGetAllAsync();
/// <summary>
/// Aggiunta record MicroStato + EventList
/// </summary>
@@ -34,6 +47,41 @@ namespace MP.Data.Repository.IOC
/// <returns></returns>
Task<bool> EvListMicroStatoInsertAsync(MicroStatoMacchinaModel newRecMsm, EventListModel newRecEv);
/// <summary>
/// Upsert record keepalive
/// </summary>
/// <param name="IdxMacc"></param>
/// <param name="OraServer"></param>
/// <param name="OraMacc"></param>
/// <returns></returns>
Task<bool> KeepAliveUpsertAsync(string IdxMacc, DateTime OraServer, DateTime OraMacc);
/// <summary>
/// Intera tabella relazione master/slave in machine (gestione setup master - slave)
/// </summary>
/// <returns></returns>
Task<List<Macchine2SlaveModel>> Macchine2SlaveAsync();
/// <summary>
/// Recupera record macchina da Idx
/// </summary>
/// <param name="IdxMacchina"></param>
/// <returns></returns>
Task<MacchineModel?> MacchineGetByIdxAsync(string IdxMacchina);
/// <summary>
/// Upsert Record Macchine ASYNC
/// </summary>
/// <returns></returns>
Task<bool> MacchineUpsertAsync(MacchineModel entity);
/// <summary>
/// Elenco da tabella Macchine
/// </summary>
/// <param name="IdxMacc"></param>
/// <returns></returns>
Task<List<MicroStatoMacchinaModel>> MicroStatoMacchinaGetByIdxMaccAsync(string IdxMacc);
/// <summary>
/// Aggiornamento record Microstato macchina
/// </summary>
@@ -41,6 +89,33 @@ namespace MP.Data.Repository.IOC
/// <returns></returns>
Task<bool> MicroStatoMacchinaUpsertAsync(MicroStatoMacchinaModel newRec);
/// <summary>
/// Aggiunta record SignalLog Async
/// </summary>
/// <param name="newRec"></param>
/// <returns></returns>
Task<bool> SignalLogInsertAsync(SignalLogModel newRec);
/// <summary>
/// Intera tabella state machine ingressi 2 eventi
/// </summary>
/// <returns></returns>
Task<List<TransizioneIngressiModel>> StateMachineIngressiAsync(int idxFam);
/// <summary>
/// Vista v_MSFD x singola macchina (da stored) - singolo record
/// </summary>
/// <param name="idxMacc"></param>
/// <returns></returns>
Task<VMSFDModel?> VMSFDGetByMaccAsync(string idxMacc);
/// <summary>
/// Vista v_MSFD delle machine MULTI filtrato x macchina (da stored)
/// </summary>
/// <param name="idxMacc"></param>
/// <returns></returns>
Task<List<VMSFDModel>> VMSFDGetMultiByMaccAsync(string idxMacc);
#endregion Public Methods
}
}
+170 -1
View File
@@ -1,8 +1,10 @@
using Microsoft.Data.SqlClient;
using Microsoft.EntityFrameworkCore;
using MongoDB.Driver;
using MP.Data.DbModels;
using NLog;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Threading.Tasks;
@@ -99,6 +101,30 @@ namespace MP.Data.Repository.IOC
}
}
/// <inheritdoc />
public async Task<List<ConfigModel>> ConfigGetAllAsync()
{
await using var dbCtx = await CreateContextAsync();
var dbResult = await dbCtx
.DbSetConfig
.AsNoTracking()
.OrderBy(x => x.Chiave)
.ToListAsync();
return dbResult;
}
/// <inheritdoc />
public async Task<List<DatiMacchineModel>> DatiMacchineGetAllAsync()
{
await using var dbCtx = await CreateContextAsync();
var dbResult = await dbCtx
.DbSetDatiMacchine
.AsNoTracking()
.OrderBy(x => x.IdxMacchina)
.ToListAsync();
return dbResult;
}
/// <inheritdoc />
public async Task<bool> EvListMicroStatoInsertAsync(MicroStatoMacchinaModel newRecMsm, EventListModel newRecEv)
{
@@ -145,10 +171,103 @@ namespace MP.Data.Repository.IOC
}
}
/// <inheritdoc />
public async Task<bool> KeepAliveUpsertAsync(string IdxMacc, DateTime OraServer, DateTime OraMacc)
{
await using var dbCtx = await CreateContextAsync();
bool fatto = false;
var currRec = await dbCtx
.DbSetKeepAlive
.Where(x => x.IdxMacchina == IdxMacc)
.FirstOrDefaultAsync();
if (currRec != null)
{
currRec.DataOraServer = OraServer;
currRec.DataOraMacchina = OraMacc;
dbCtx.Entry(currRec).State = EntityState.Modified;
}
else
{
KeepAliveModel newRec = new KeepAliveModel()
{
IdxMacchina = IdxMacc,
DataOraMacchina = OraMacc,
DataOraServer = OraServer,
DataOraStart = DateTime.Now
};
dbCtx
.DbSetKeepAlive
.Add(newRec);
}
fatto = await dbCtx.SaveChangesAsync() > 0;
return fatto;
}
/// <inheritdoc />
public async Task<List<Macchine2SlaveModel>> Macchine2SlaveAsync()
{
await using var dbCtx = await CreateContextAsync();
List<Macchine2SlaveModel> dbResult = await dbCtx
.DbSetM2S
.AsNoTracking()
.OrderBy(x => x.IdxMacchina)
.ToListAsync();
return dbResult;
}
/// <inheritdoc />
public async Task<MacchineModel?> MacchineGetByIdxAsync(string IdxMacchina)
{
await using var dbCtx = await CreateContextAsync();
MacchineModel dbResult = await dbCtx
.DbSetMacchine
.FirstOrDefaultAsync(x => x.IdxMacchina == IdxMacchina);
return dbResult;
}
/// <inheritdoc />
public async Task<bool> MacchineUpsertAsync(MacchineModel entity)
{
await using var dbCtx = await CreateContextAsync();
// Recuperiamo l'entità tracciata dal context
var trackedEntity = await dbCtx
.DbSetMacchine
.FirstOrDefaultAsync(x => x.IdxMacchina == entity.IdxMacchina);
if (trackedEntity != null)
{
// Aggiorna i valori dell'entità tracciata con quelli della nuova
dbCtx.Entry(trackedEntity).CurrentValues.SetValues(entity);
}
else
{
dbCtx.DbSetMacchine.Update(entity);
}
return await dbCtx.SaveChangesAsync() > 0;
}
/// <inheritdoc />
public async Task<List<MicroStatoMacchinaModel>> MicroStatoMacchinaGetByIdxMaccAsync(string IdxMacc)
{
await using var dbCtx = await CreateContextAsync();
List<MicroStatoMacchinaModel> dbResult = new List<MicroStatoMacchinaModel>();
dbResult = await dbCtx
.DbSetMicroStatoMacc
.Where(x => x.IdxMacchina == IdxMacc)
.AsNoTracking()
.ToListAsync();
return dbResult;
}
/// <inheritdoc />
public async Task<bool> MicroStatoMacchinaUpsertAsync(MicroStatoMacchinaModel newRec)
{
bool fatto = false;
await using var dbCtx = await CreateContextAsync();
bool fatto = false;
var actRec = await dbCtx
.DbSetMicroStatoMacc
@@ -174,6 +293,56 @@ namespace MP.Data.Repository.IOC
return fatto;
}
/// <inheritdoc />
public async Task<bool> SignalLogInsertAsync(SignalLogModel newRec)
{
await using var dbCtx = await CreateContextAsync();
var currRec = dbCtx
.DbSetSignalLog
.Add(newRec);
return await dbCtx.SaveChangesAsync() > 0;
}
/// <inheritdoc />
public async Task<List<TransizioneIngressiModel>> StateMachineIngressiAsync(int idxFam)
{
await using var dbCtx = await CreateContextAsync();
var IdxFamIn = new SqlParameter("@IdxFamigliaIngresso", idxFam);
var dbResult = await dbCtx
.DbSetSMI
.FromSqlRaw("exec dbo.stp_TRI_getByIdxFamIng @IdxFamigliaIngresso", IdxFamIn)
.AsNoTracking()
.ToListAsync();
return dbResult;
}
/// <inheritdoc />
public async Task<VMSFDModel?> VMSFDGetByMaccAsync(string idxMacc)
{
await using var dbCtx = await CreateContextAsync();
var IdxMacchina = new SqlParameter("@IdxMacchina", idxMacc);
var dbResult = (await dbCtx
.DbSetMSFD
.FromSqlRaw("exec dbo.stp_MSFD_getMacc @IdxMacchina", IdxMacchina)
.AsNoTracking()
.ToListAsync())
.FirstOrDefault();
return dbResult;
}
/// <inheritdoc />
public async Task<List<VMSFDModel>> VMSFDGetMultiByMaccAsync(string idxMacc)
{
await using var dbCtx = await CreateContextAsync();
var IdxMacchina = new SqlParameter("@IdxMacchina", idxMacc);
var dbResult = await dbCtx
.DbSetMSFD
.FromSqlRaw("exec dbo.stp_MSFD_getMulti @IdxMacchina", IdxMacchina)
.AsNoTracking()
.ToListAsync();
return dbResult;
}
#endregion Public Methods
#region Protected Fields