Completo update MpIocController: tutto portato ad async!

This commit is contained in:
Samuele Locatelli
2026-04-20 16:54:33 +02:00
parent 9f6643247a
commit 1d7b17b2d2
12 changed files with 256 additions and 848 deletions
+1 -1
View File
@@ -3,7 +3,7 @@
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<Nullable>enable</Nullable>
<Version>6.16.2604.1109</Version>
<Version>6.16.2604.2016</Version>
<ImplicitUsings>enable</ImplicitUsings>
<RootNamespace>MP_TAB3</RootNamespace>
</PropertyGroup>
+1 -1
View File
@@ -1,6 +1,6 @@
<body>
<i>Modulo MAPOSPEC </i>
<h4>Versione: 6.16.2604.1109</h4>
<h4>Versione: 6.16.2604.2016</h4>
<br /> Note di rilascio:
<ul>
<li>
+1 -1
View File
@@ -1 +1 @@
6.16.2604.1109
6.16.2604.2016
+1 -1
View File
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<item>
<version>6.16.2604.1109</version>
<version>6.16.2604.2016</version>
<url>https://nexus.steamware.net/repository/SWS/MP-TAB3/stable/LAST/MP-TAB3.zip</url>
<changelog>https://nexus.steamware.net/repository/SWS/MP-TAB3/stable/LAST/ChangeLog.html</changelog>
<mandatory>false</mandatory>
+179 -517
View File
@@ -839,56 +839,18 @@ namespace MP.Data.Controllers
public async Task<ODLExpModel> OdlLastByMaccAsync(string idxMacchina)
{
ODLExpModel answ = new();
using (var dbCtx = new MoonProContext(_configuration))
{
try
{
var pIdxMacchina = new SqlParameter("@IdxMacchina", idxMacchina);
// attenzione: se la stored resituisce una tabella, il primo elemento va recuperato in RAM!!!
var dbRes = (await dbCtx.DbSetODLExp
.FromSqlRaw("EXEC stp_ODL_getLastByMacchina @IdxMacchina", pIdxMacchina)
.AsNoTracking()
.ToListAsync()) // Esegue la query e scarica i risultati in memoria
.FirstOrDefault(); // Prende il primo elemento dalla lista in RAM
answ = dbRes ?? new();
}
catch (Exception exc)
{
Log.Error($"Eccezione durante OdlCurrByMaccAsync{Environment.NewLine}{exc}");
}
}
return answ;
}
using var dbCtx = new MoonProContext(_configuration);
/// <summary>
/// Elenco ODL data macchina e periodo
/// </summary>
/// <param name="idxMacchina"></param>
/// <param name="dtStart"></param>
/// <param name="dtEnd"></param>
/// <returns></returns>
public List<ODLExpModel> OdlListByMaccPeriodo(string idxMacchina, DateTime dtStart, DateTime dtEnd)
{
List<ODLExpModel> dbResult = new List<ODLExpModel>();
using (var dbCtx = new MoonProContext(_configuration))
{
try
{
var IdxMacchina = new SqlParameter("@IdxMacchina", idxMacchina);
var DataFrom = new SqlParameter("@dataFrom", dtStart);
var DataTo = new SqlParameter("@dataTo", dtEnd);
dbResult = dbCtx
.DbSetODLExp
.FromSqlRaw("EXEC stp_ODL_getByMacchinaPeriodo @IdxMacchina, @dataFrom, @dataTo", IdxMacchina, DataFrom, DataTo)
.AsNoTracking()
.ToList();
}
catch (Exception exc)
{
Log.Error($"Eccezione durante OdlListByMaccPeriodo{Environment.NewLine}{exc}");
}
}
return dbResult;
var pIdxMacchina = new SqlParameter("@IdxMacchina", idxMacchina);
// attenzione: se la stored resituisce una tabella, il primo elemento va recuperato in RAM!!!
var dbRes = (await dbCtx.DbSetODLExp
.FromSqlRaw("EXEC stp_ODL_getLastByMacchina @IdxMacchina", pIdxMacchina)
.AsNoTracking()
.ToListAsync()) // Esegue la query e scarica i risultati in memoria
.FirstOrDefault(); // Prende il primo elemento dalla lista in RAM
answ = dbRes ?? new();
return answ;
}
/// <summary>
@@ -901,45 +863,17 @@ namespace MP.Data.Controllers
public async Task<List<ODLExpModel>> OdlListByMaccPeriodoAsync(string idxMacchina, DateTime dtStart, DateTime dtEnd)
{
List<ODLExpModel> dbResult = new List<ODLExpModel>();
using (var dbCtx = new MoonProContext(_configuration))
{
try
{
var IdxMacchina = new SqlParameter("@IdxMacchina", idxMacchina);
var DataFrom = new SqlParameter("@dataFrom", dtStart);
var DataTo = new SqlParameter("@dataTo", dtEnd);
dbResult = await dbCtx
.DbSetODLExp
.FromSqlRaw("EXEC stp_ODL_getByMacchinaPeriodo @IdxMacchina, @dataFrom, @dataTo", IdxMacchina, DataFrom, DataTo)
.AsNoTracking()
.ToListAsync();
}
catch (Exception exc)
{
Log.Error($"Eccezione durante OdlListByMaccPeriodoAsync{Environment.NewLine}{exc}");
}
}
return dbResult;
}
using var dbCtx = new MoonProContext(_configuration);
/// <summary>
/// Conteggio PzProd Macchina
/// </summary>
/// <param name="idxMacchina"></param>
/// <returns></returns>
public PzProdModel PezziProdMacchina(string idxMacchina)
{
PzProdModel dbResult = new PzProdModel();
using (var dbCtx = new MoonProContext(_configuration))
{
var pIdxMacchina = new SqlParameter("@IdxMacchina", idxMacchina);
dbResult = (dbCtx
.DbSetPzProd
.FromSqlRaw("EXEC stp_PzProd_getByMacchina @IdxMacchina", pIdxMacchina)
var IdxMacchina = new SqlParameter("@IdxMacchina", idxMacchina);
var DataFrom = new SqlParameter("@dataFrom", dtStart);
var DataTo = new SqlParameter("@dataTo", dtEnd);
dbResult = await dbCtx
.DbSetODLExp
.FromSqlRaw("EXEC stp_ODL_getByMacchinaPeriodo @IdxMacchina, @dataFrom, @dataTo", IdxMacchina, DataFrom, DataTo)
.AsNoTracking()
.ToList())
.FirstOrDefault(); // recupero da RAM
}
.ToListAsync();
return dbResult;
}
@@ -951,16 +885,15 @@ namespace MP.Data.Controllers
public async Task<PzProdModel> PezziProdMacchinaAsync(string idxMacchina)
{
PzProdModel dbResult = new PzProdModel();
using (var dbCtx = new MoonProContext(_configuration))
{
var pIdxMacchina = new SqlParameter("@IdxMacchina", idxMacchina);
dbResult = (await dbCtx
.DbSetPzProd
.FromSqlRaw("EXEC stp_PzProd_getByMacchina @IdxMacchina", pIdxMacchina)
.AsNoTracking()
.ToListAsync())
.FirstOrDefault(); // recupero da RAM
}
using var dbCtx = new MoonProContext(_configuration);
var pIdxMacchina = new SqlParameter("@IdxMacchina", idxMacchina);
dbResult = (await dbCtx
.DbSetPzProd
.FromSqlRaw("EXEC stp_PzProd_getByMacchina @IdxMacchina", pIdxMacchina)
.AsNoTracking()
.ToListAsync())
.FirstOrDefault(); // recupero da RAM
return dbResult;
}
@@ -975,54 +908,21 @@ namespace MP.Data.Controllers
public async Task<List<PODLExpModel>> POdlGetByMaccArtAsync(string idxMacchina, string codArticolo, string codGruppo, bool onlyFree)
{
List<PODLExpModel> dbResult = new List<PODLExpModel>();
using (var dbCtx = new MoonProContext(_configuration))
{
var pIdxMacchina = new SqlParameter("@IdxMacchina", idxMacchina);
var pCodArticolo = new SqlParameter("@CodArticolo", codArticolo);
var pCodGruppo = new SqlParameter("@CodGruppo", codGruppo);
var pOnlyFree = new SqlParameter("@onlyFree", onlyFree);
using var dbCtx = new MoonProContext(_configuration);
dbResult = await dbCtx
.DbSetPODLExp
.FromSqlRaw("EXEC stp_PODL_getByMaccArt @IdxMacchina, @CodArticolo, @CodGruppo, @onlyFree", pIdxMacchina, pCodArticolo, pCodGruppo, pOnlyFree)
.AsNoTracking()
.ToListAsync();
}
var pIdxMacchina = new SqlParameter("@IdxMacchina", idxMacchina);
var pCodArticolo = new SqlParameter("@CodArticolo", codArticolo);
var pCodGruppo = new SqlParameter("@CodGruppo", codGruppo);
var pOnlyFree = new SqlParameter("@onlyFree", onlyFree);
dbResult = await dbCtx
.DbSetPODLExp
.FromSqlRaw("EXEC stp_PODL_getByMaccArt @IdxMacchina, @CodArticolo, @CodGruppo, @onlyFree", pIdxMacchina, pCodArticolo, pCodGruppo, pOnlyFree)
.AsNoTracking()
.ToListAsync();
return dbResult;
}
/// <summary>
/// Effettua ricalcolo MSE x macchina indicata
/// </summary>
/// <param name="idxMacchina">idx macchina da confermare</param>
/// <param name="maxAgeSec">Num massimo secondi di "vecchiaia" del dato</param>
/// <returns></returns>
public bool RecalcMse(string idxMacchina, int maxAgeSec)
{
bool answ = false;
try
{
var rigaProd = StatoProdMacchina(idxMacchina, DateTime.Now);
using (var dbCtx = new MoonProContext(_configuration))
{
var MaxAgeSec = new SqlParameter("@maxAgeSec ", maxAgeSec);
var IdxMacchina = new SqlParameter("@idxMacchina", idxMacchina);
var result = dbCtx
.Database
.ExecuteSqlRaw("EXEC stp_MSE_recalc @maxAgeSec, @idxMacchina ", MaxAgeSec, IdxMacchina);
// indico eseguito!
answ = result > 0;
}
}
catch (Exception exc)
{
Log.Error($"Eccezione in RecalcMse:{Environment.NewLine}{exc}");
}
return answ;
}
/// <summary>
/// Effettua ricalcolo MSE x macchina indicata
/// </summary>
@@ -1031,28 +931,17 @@ namespace MP.Data.Controllers
/// <returns></returns>
public async Task<bool> RecalcMseAsync(string idxMacchina, int maxAgeSec)
{
bool answ = false;
try
{
var rigaProd = await StatoProdMacchinaAsync(idxMacchina, DateTime.Now);
using (var dbCtx = new MoonProContext(_configuration))
{
var MaxAgeSec = new SqlParameter("@maxAgeSec ", maxAgeSec);
var IdxMacchina = new SqlParameter("@idxMacchina", idxMacchina);
using var dbCtx = new MoonProContext(_configuration);
var result = await dbCtx
.Database
.ExecuteSqlRawAsync("EXEC stp_MSE_recalc @maxAgeSec, @idxMacchina ", MaxAgeSec, IdxMacchina);
var rigaProd = await StatoProdMacchinaAsync(idxMacchina, DateTime.Now);
var MaxAgeSec = new SqlParameter("@maxAgeSec ", maxAgeSec);
var IdxMacchina = new SqlParameter("@idxMacchina", idxMacchina);
// indico eseguito!
answ = result > 0;
}
}
catch (Exception exc)
{
Log.Error($"Eccezione in RecalcMseAsync:{Environment.NewLine}{exc}");
}
return answ;
var result = await dbCtx
.Database
.ExecuteSqlRawAsync("EXEC stp_MSE_recalc @maxAgeSec, @idxMacchina ", MaxAgeSec, IdxMacchina);
return result != 0;
}
/// <summary>
@@ -1064,23 +953,20 @@ namespace MP.Data.Controllers
/// <param name="note"></param>
/// <param name="dataOra"></param>
/// <returns></returns>
public async Task<bool> RegControlliInsert(string idxMacchina, int matrOpr, bool esitoOk, string note, DateTime dataOra)
public async Task<bool> RegControlliInsertAsync(string idxMacchina, int matrOpr, bool esitoOk, string note, DateTime dataOra)
{
bool fatto = false;
using (var dbCtx = new MoonProContext(_configuration))
{
var IdxMacc = new SqlParameter("@IdxMacchina", idxMacchina);
var MatrOpr = new SqlParameter("@MatrOpr", matrOpr);
var EsitoOk = new SqlParameter("@EsitoOk", esitoOk);
var Note = new SqlParameter("@Note", note);
var DataOra = new SqlParameter("@DataOra", dataOra);
using var dbCtx = new MoonProContext(_configuration);
var result = await dbCtx
.Database
.ExecuteSqlRawAsync("EXEC stp_RC_insert @IdxMacchina, @MatrOpr, @EsitoOk, @Note, @DataOra", IdxMacc, MatrOpr, EsitoOk, Note, DataOra);
fatto = result != 0;
}
return fatto;
var IdxMacc = new SqlParameter("@IdxMacchina", idxMacchina);
var MatrOpr = new SqlParameter("@MatrOpr", matrOpr);
var EsitoOk = new SqlParameter("@EsitoOk", esitoOk);
var Note = new SqlParameter("@Note", note);
var DataOra = new SqlParameter("@DataOra", dataOra);
var result = await dbCtx
.Database
.ExecuteSqlRawAsync("EXEC stp_RC_insert @IdxMacchina, @MatrOpr, @EsitoOk, @Note, @DataOra", IdxMacc, MatrOpr, EsitoOk, Note, DataOra);
return result != 0;
}
/// <summary>
@@ -1088,24 +974,21 @@ namespace MP.Data.Controllers
/// </summary>
/// <param name="newRec"></param>
/// <returns></returns>
public async Task<bool> RegDichiarInsert(RegistroDichiarazioniModel newRec)
public async Task<bool> RegDichiarInsertAsync(RegistroDichiarazioniModel newRec)
{
bool fatto = false;
using (var dbCtx = new MoonProContext(_configuration))
{
var TagCode = new SqlParameter("@TagCode", newRec.TagCode);
var IdxMacchina = new SqlParameter("@IdxMacchina", newRec.IdxMacchina);
var DtRec = new SqlParameter("@DtRec", newRec.DtRec);
var MatrOpr = new SqlParameter("@MatrOpr", newRec.MatrOpr);
var ValString = new SqlParameter("@ValString", newRec.ValString);
using var dbCtx = new MoonProContext(_configuration);
var result = await dbCtx
.Database
.ExecuteSqlRawAsync("exec dbo.stp_DD_insertQuery @TagCode, @IdxMacchina, @DtRec, @MatrOpr, @ValString", TagCode, IdxMacchina, DtRec, MatrOpr, ValString);
// indico eseguito!
fatto = result > 0;
}
return fatto;
var TagCode = new SqlParameter("@TagCode", newRec.TagCode);
var IdxMacchina = new SqlParameter("@IdxMacchina", newRec.IdxMacchina);
var DtRec = new SqlParameter("@DtRec", newRec.DtRec);
var MatrOpr = new SqlParameter("@MatrOpr", newRec.MatrOpr);
var ValString = new SqlParameter("@ValString", newRec.ValString);
var result = await dbCtx
.Database
.ExecuteSqlRawAsync("exec dbo.stp_DD_insertQuery @TagCode, @IdxMacchina, @DtRec, @MatrOpr, @ValString", TagCode, IdxMacchina, DtRec, MatrOpr, ValString);
return result != 0;
}
/// <summary>
@@ -1113,24 +996,20 @@ namespace MP.Data.Controllers
/// </summary>
/// <param name="newRec"></param>
/// <returns></returns>
public async Task<bool> RegDichiarUpdate(RegistroDichiarazioniModel newRec)
public async Task<bool> RegDichiarUpdateAsync(RegistroDichiarazioniModel newRec)
{
bool fatto = false;
using (var dbCtx = new MoonProContext(_configuration))
{
var Original_IdxDich = new SqlParameter("@Original_IdxDich", newRec.IdxDich);
var DtRec = new SqlParameter("@DtRec", newRec.DtRec);
var TagCode = new SqlParameter("@TagCode", newRec.TagCode);
var ValString = new SqlParameter("@ValString", newRec.ValString);
var MatrOpr = new SqlParameter("@MatrOpr", newRec.MatrOpr);
using var dbCtx = new MoonProContext(_configuration);
var result = await dbCtx
.Database
.ExecuteSqlRawAsync("exec dbo.stp_DD_updateQuery @Original_IdxDich, @DtRec, @TagCode, @ValString, @MatrOpr", Original_IdxDich, DtRec, TagCode, ValString, MatrOpr);
// indico eseguito!
fatto = result > 0;
}
return fatto;
var Original_IdxDich = new SqlParameter("@Original_IdxDich", newRec.IdxDich);
var DtRec = new SqlParameter("@DtRec", newRec.DtRec);
var TagCode = new SqlParameter("@TagCode", newRec.TagCode);
var ValString = new SqlParameter("@ValString", newRec.ValString);
var MatrOpr = new SqlParameter("@MatrOpr", newRec.MatrOpr);
var result = await dbCtx
.Database
.ExecuteSqlRawAsync("exec dbo.stp_DD_updateQuery @Original_IdxDich, @DtRec, @TagCode, @ValString, @MatrOpr", Original_IdxDich, DtRec, TagCode, ValString, MatrOpr);
return result != 0;
}
/// <summary>
@@ -1138,28 +1017,23 @@ namespace MP.Data.Controllers
/// </summary>
/// <param name="newRec"></param>
/// <returns></returns>
public async Task<bool> RegScartiInsert(RegistroScartiModel newRec)
public async Task<bool> RegScartiInsertAsync(RegistroScartiModel newRec)
{
bool fatto = false;
using (var dbCtx = new MoonProContext(_configuration))
{
var IdxMacchina = new SqlParameter("@idxMacchina", newRec.IdxMacchina);
var DataOra = new SqlParameter("@DataOra", newRec.DataOra);
var Causale = new SqlParameter("@Causale", newRec.Causale);
var Qta = new SqlParameter("@Qta", newRec.Qta);
var Note = new SqlParameter("@Note", newRec.Note);
var MatrOpr = new SqlParameter("@MatrOpr", newRec.MatrOpr);
using var dbCtx = new MoonProContext(_configuration);
var result = await dbCtx
.DbSetRegWithCheck
.FromSqlRaw("exec dbo.stp_RS_Insert_withCheck @idxMacchina, @DataOra, @Causale, @Qta, @Note, @MatrOpr", IdxMacchina, DataOra, Causale, Qta, Note, MatrOpr)
.AsNoTracking()
.ToListAsync();
// indico eseguito!
// -1 = restituisce una select
fatto = result.Count > 0;
}
return fatto;
var IdxMacchina = new SqlParameter("@idxMacchina", newRec.IdxMacchina);
var DataOra = new SqlParameter("@DataOra", newRec.DataOra);
var Causale = new SqlParameter("@Causale", newRec.Causale);
var Qta = new SqlParameter("@Qta", newRec.Qta);
var Note = new SqlParameter("@Note", newRec.Note);
var MatrOpr = new SqlParameter("@MatrOpr", newRec.MatrOpr);
var result = await dbCtx
.DbSetRegWithCheck
.FromSqlRaw("exec dbo.stp_RS_Insert_withCheck @idxMacchina, @DataOra, @Causale, @Qta, @Note, @MatrOpr", IdxMacchina, DataOra, Causale, Qta, Note, MatrOpr)
.AsNoTracking()
.ToListAsync();
return result.Count != 0;
}
/// <summary>
@@ -1169,15 +1043,13 @@ namespace MP.Data.Controllers
/// <returns></returns>
public async Task<bool> RemRebootLogAddAsync(RemoteRebootLogModel newRec)
{
bool fatto = false;
using (var dbCtx = new MoonProContext(_configuration))
{
var dbResult = dbCtx
using var dbCtx = new MoonProContext(_configuration);
var dbResult = dbCtx
.DbSetRemRebLog
.Add(newRec);
fatto = await dbCtx.SaveChangesAsync() > 0;
}
return fatto;
return await dbCtx.SaveChangesAsync() > 0;
}
/// <summary>
@@ -1186,15 +1058,13 @@ namespace MP.Data.Controllers
/// <returns></returns>
public async Task<List<RemoteRebootLogModel>> RemRebootLogGetAllAsync()
{
List<RemoteRebootLogModel> dbResult = new List<RemoteRebootLogModel>();
using (var dbCtx = new MoonProContext(_configuration))
{
dbResult = await dbCtx
using var dbCtx = new MoonProContext(_configuration);
var dbResult = await dbCtx
.DbSetRemRebLog
.AsNoTracking()
.OrderByDescending(x => x.IdxReboot)
.ToListAsync();
}
return dbResult;
}
@@ -1204,15 +1074,12 @@ namespace MP.Data.Controllers
/// <returns></returns>
public async Task<List<RemoteRebootLogModel>> RemRebootLogGetLastAsync()
{
List<RemoteRebootLogModel> dbResult = new List<RemoteRebootLogModel>();
using (var dbCtx = new MoonProContext(_configuration))
{
dbResult = await dbCtx
.DbSetRemRebLog
.FromSqlRaw("EXEC stp_RRL_getLast")
.AsNoTracking()
.ToListAsync();
}
using var dbCtx = new MoonProContext(_configuration);
var dbResult = await dbCtx
.DbSetRemRebLog
.FromSqlRaw("EXEC stp_RRL_getLast")
.AsNoTracking()
.ToListAsync();
return dbResult;
}
@@ -1222,66 +1089,14 @@ namespace MP.Data.Controllers
/// <returns></returns>
public async Task<bool> RemRebootLogKeepLastAsync(int num2keep)
{
bool answ = false;
using (var dbCtx = new MoonProContext(_configuration))
{
var Num2keep = new SqlParameter("@num2keep", num2keep);
var dbResult = await dbCtx
.Database
.ExecuteSqlRawAsync("exec dbo.stp_RRL_KeepLatest @num2keep", Num2keep);
answ = dbResult > 0;
}
return answ;
}
using var dbCtx = new MoonProContext(_configuration);
/// <summary>
/// Annulla modifiche su una specifica entity (cancel update)
/// </summary>
/// <param name="item"></param>
/// <returns></returns>
public bool RollBackEntity(object item)
{
bool answ = false;
using (var dbCtx = new MoonProContext(_configuration))
{
try
{
if (dbCtx.Entry(item).State == Microsoft.EntityFrameworkCore.EntityState.Deleted || dbCtx.Entry(item).State == Microsoft.EntityFrameworkCore.EntityState.Modified)
{
dbCtx.Entry(item).Reload();
}
}
catch (Exception exc)
{
Log.Error($"Eccezione in rollBackEntity{Environment.NewLine}{exc}");
}
}
return answ;
}
var Num2keep = new SqlParameter("@num2keep", num2keep);
var dbResult = await dbCtx
.Database
.ExecuteSqlRawAsync("exec dbo.stp_RRL_KeepLatest @num2keep", Num2keep);
/// <summary>
/// Aggiunta record SignalLog
/// </summary>
/// <param name="newRec"></param>
/// <returns></returns>
public bool SignalLogInsert(SignalLogModel newRec)
{
bool fatto = false;
using (var dbCtx = new MoonProContext(_configuration))
{
try
{
var currRec = dbCtx
.DbSetSignalLog
.Add(newRec);
dbCtx.SaveChanges();
}
catch (Exception exc)
{
Log.Error($"Eccezione durante SignalLogInsert{Environment.NewLine}{exc}");
}
}
return fatto;
return dbResult != 0;
}
/// <summary>
@@ -1291,44 +1106,13 @@ namespace MP.Data.Controllers
/// <returns></returns>
public async Task<bool> SignalLogInsertAsync(SignalLogModel newRec)
{
bool fatto = false;
using (var dbCtx = new MoonProContext(_configuration))
{
try
{
var currRec = dbCtx
.DbSetSignalLog
.Add(newRec);
await dbCtx.SaveChangesAsync();
}
catch (Exception exc)
{
Log.Error($"Eccezione durante SignalLogInsertAsync{Environment.NewLine}{exc}");
}
}
return fatto;
}
using var dbCtx = new MoonProContext(_configuration);
/// <summary>
/// Tabella state machine eventi 2 stati data macchina e tipo evento
/// </summary>
/// <param name="idxTipo"></param>
/// <returns></returns>
public List<TransizioneStatiModel> SMES_getHwTransitions(string idxMacchina, int idxTipo)
{
List<TransizioneStatiModel> dbResult = new List<TransizioneStatiModel>();
using (var dbCtx = new MoonProContext(_configuration))
{
var IdxMacchina = new SqlParameter("@IdxMacchina", idxMacchina);
var IdxTipo = new SqlParameter("@IdxTipo", idxTipo);
dbResult = dbCtx
.DbSetSMES
.FromSqlRaw("exec dbo.stp_TS_getByIdxMacchIdxTipoEv @IdxMacchina, @IdxTipo", IdxMacchina, IdxTipo)
.AsNoTracking()
.AsEnumerable()
.ToList();
}
return dbResult;
var currRec = dbCtx
.DbSetSignalLog
.Add(newRec);
return await dbCtx.SaveChangesAsync() > 0;
}
/// <summary>
@@ -1338,39 +1122,16 @@ namespace MP.Data.Controllers
/// <returns></returns>
public async Task<List<TransizioneStatiModel>> SMES_getHwTransitionsAsync(string idxMacchina, int idxTipo)
{
List<TransizioneStatiModel> dbResult = new List<TransizioneStatiModel>();
using (var dbCtx = new MoonProContext(_configuration))
{
var IdxMacchina = new SqlParameter("@IdxMacchina", idxMacchina);
var IdxTipo = new SqlParameter("@IdxTipo", idxTipo);
dbResult = await dbCtx
.DbSetSMES
.FromSqlRaw("exec dbo.stp_TS_getByIdxMacchIdxTipoEv @IdxMacchina, @IdxTipo", IdxMacchina, IdxTipo)
.AsNoTracking()
.ToListAsync();
}
return dbResult;
}
using var dbCtx = new MoonProContext(_configuration);
var IdxMacchina = new SqlParameter("@IdxMacchina", idxMacchina);
var IdxTipo = new SqlParameter("@IdxTipo", idxTipo);
var dbResult = await dbCtx
.DbSetSMES
.FromSqlRaw("exec dbo.stp_TS_getByIdxMacchIdxTipoEv @IdxMacchina, @IdxTipo", IdxMacchina, IdxTipo)
.AsNoTracking()
.ToListAsync();
/// <summary>
/// Tabella state machine eventi 2 stati data macchina e tipo evento
/// </summary>
/// <param name="idxTipo"></param>
/// <returns></returns>
public List<TransizioneStatiModel> SMES_getUserForced(string idxMacchina, int idxTipo)
{
List<TransizioneStatiModel> dbResult = new List<TransizioneStatiModel>();
using (var dbCtx = new MoonProContext(_configuration))
{
var IdxMacchina = new SqlParameter("@IdxMacchina", idxMacchina);
var IdxTipo = new SqlParameter("@IdxTipo", idxTipo);
dbResult = dbCtx
.DbSetSMES
.FromSqlRaw("exec dbo.stp_TS_getUserForcedTrans @IdxMacchina, @IdxTipo", IdxMacchina, IdxTipo)
.AsNoTracking()
.AsEnumerable()
.ToList();
}
return dbResult;
}
@@ -1381,17 +1142,16 @@ namespace MP.Data.Controllers
/// <returns></returns>
public async Task<List<TransizioneStatiModel>> SMES_getUserForcedAsync(string idxMacchina, int idxTipo)
{
List<TransizioneStatiModel> dbResult = new List<TransizioneStatiModel>();
using (var dbCtx = new MoonProContext(_configuration))
{
var IdxMacchina = new SqlParameter("@IdxMacchina", idxMacchina);
var IdxTipo = new SqlParameter("@IdxTipo", idxTipo);
dbResult = await dbCtx
.DbSetSMES
.FromSqlRaw("exec dbo.stp_TS_getUserForcedTrans @IdxMacchina, @IdxTipo", IdxMacchina, IdxTipo)
.AsNoTracking()
.ToListAsync();
}
using var dbCtx = new MoonProContext(_configuration);
var IdxMacchina = new SqlParameter("@IdxMacchina", idxMacchina);
var IdxTipo = new SqlParameter("@IdxTipo", idxTipo);
var dbResult = await dbCtx
.DbSetSMES
.FromSqlRaw("exec dbo.stp_TS_getUserForcedTrans @IdxMacchina, @IdxTipo", IdxMacchina, IdxTipo)
.AsNoTracking()
.ToListAsync();
return dbResult;
}
@@ -1421,41 +1181,15 @@ namespace MP.Data.Controllers
/// <returns></returns>
public async Task<List<TransizioneIngressiModel>> StateMachineIngressiAsync(int idxFam)
{
List<TransizioneIngressiModel> dbResult = new List<TransizioneIngressiModel>();
using (var dbCtx = new MoonProContext(_configuration))
{
var IdxFamIn = new SqlParameter("@IdxFamigliaIngresso", idxFam);
dbResult = await dbCtx
.DbSetSMI
.FromSqlRaw("exec dbo.stp_TRI_getByIdxFamIng @IdxFamigliaIngresso", IdxFamIn)
.AsNoTracking()
.ToListAsync();
}
return dbResult;
}
using var dbCtx = new MoonProContext(_configuration);
var IdxFamIn = new SqlParameter("@IdxFamigliaIngresso", idxFam);
var dbResult = await dbCtx
.DbSetSMI
.FromSqlRaw("exec dbo.stp_TRI_getByIdxFamIng @IdxFamigliaIngresso", IdxFamIn)
.AsNoTracking()
.ToListAsync();
/// <summary>
/// Stato prod macchina (completo)
/// </summary>
/// <param name="idxMacchina"></param>
/// <param name="dtReq"></param>
/// <returns></returns>
public StatoProdModel StatoProdMacchina(string idxMacchina, DateTime dtReq)
{
StatoProdModel dbResult = new StatoProdModel();
using (var dbCtx = new MoonProContext(_configuration))
{
var IdxMacchina = new SqlParameter("@IdxMacchina", idxMacchina);
var DataOra = new SqlParameter("@DataOra ", dtReq);
var rawData = dbCtx
.DbSetStatoProd
.FromSqlRaw("EXEC stp_StatoProd_getByMacchina @IdxMacchina, @DataOra ", IdxMacchina, DataOra)
.AsNoTracking()
.AsEnumerable()
.ToList();
dbResult = rawData
.FirstOrDefault();
}
return dbResult;
}
@@ -1467,36 +1201,17 @@ namespace MP.Data.Controllers
/// <returns></returns>
public async Task<StatoProdModel> StatoProdMacchinaAsync(string idxMacchina, DateTime dtReq)
{
StatoProdModel dbResult = new StatoProdModel();
using (var dbCtx = new MoonProContext(_configuration))
{
var IdxMacchina = new SqlParameter("@IdxMacchina", idxMacchina);
var DataOra = new SqlParameter("@DataOra ", dtReq);
dbResult = (await dbCtx
.DbSetStatoProd
.FromSqlRaw("EXEC stp_StatoProd_getByMacchina @IdxMacchina, @DataOra ", IdxMacchina, DataOra)
.AsNoTracking()
.ToListAsync())
.FirstOrDefault();
}
return dbResult;
}
using var dbCtx = new MoonProContext(_configuration);
var IdxMacchina = new SqlParameter("@IdxMacchina", idxMacchina);
var DataOra = new SqlParameter("@DataOra ", dtReq);
var dbResult = (await dbCtx
.DbSetStatoProd
.FromSqlRaw("EXEC stp_StatoProd_getByMacchina @IdxMacchina, @DataOra ", IdxMacchina, DataOra)
.AsNoTracking()
.ToListAsync())
.FirstOrDefault();
/// <summary>
/// Intera vista v_MSFD
/// </summary>
/// <returns></returns>
public List<VMSFDModel> VMSFDGetAll()
{
List<VMSFDModel> dbResult = new List<VMSFDModel>();
using (var dbCtx = new MoonProContext(_configuration))
{
dbResult = dbCtx
.DbSetMSFD
.AsNoTracking()
.OrderBy(x => x.IdxMacchina)
.ToList();
}
return dbResult;
}
@@ -1506,43 +1221,14 @@ namespace MP.Data.Controllers
/// <returns></returns>
public async Task<List<VMSFDModel>> VMSFDGetAllAsync()
{
List<VMSFDModel> dbResult = new List<VMSFDModel>();
using (var dbCtx = new MoonProContext(_configuration))
{
try
{
dbResult = await dbCtx
.DbSetMSFD
.AsNoTracking()
.OrderBy(x => x.IdxMacchina)
.ToListAsync();
}
catch (Exception exc)
{
}
}
return dbResult;
}
using var dbCtx = new MoonProContext(_configuration);
/// <summary>
/// Vista v_MSFD x singola macchina (da stored) - singolo record
/// </summary>
/// <param name="idxMacc"></param>
/// <returns></returns>
public List<VMSFDModel> VMSFDGetByMacc(string idxMacc)
{
List<VMSFDModel> dbResult = new List<VMSFDModel>();
using (var dbCtx = new MoonProContext(_configuration))
{
var IdxMacchina = new SqlParameter("@IdxMacchina", idxMacc);
var dbResult = await dbCtx
.DbSetMSFD
.AsNoTracking()
.OrderBy(x => x.IdxMacchina)
.ToListAsync();
dbResult = dbCtx
.DbSetMSFD
.FromSqlRaw("exec dbo.stp_MSFD_getMacc @IdxMacchina", IdxMacchina)
.AsNoTracking()
.AsEnumerable()
.ToList();
}
return dbResult;
}
@@ -1553,39 +1239,16 @@ namespace MP.Data.Controllers
/// <returns></returns>
public async Task<VMSFDModel?> VMSFDGetByMaccAsync(string idxMacc)
{
VMSFDModel? dbResult = null;
using (var dbCtx = new MoonProContext(_configuration))
{
var IdxMacchina = new SqlParameter("@IdxMacchina", idxMacc);
dbResult = (await dbCtx
using var dbCtx = new MoonProContext(_configuration);
var IdxMacchina = new SqlParameter("@IdxMacchina", idxMacc);
var dbResult = (await dbCtx
.DbSetMSFD
.FromSqlRaw("exec dbo.stp_MSFD_getMacc @IdxMacchina", IdxMacchina)
.AsNoTracking()
.ToListAsync())
.FirstOrDefault();
}
return dbResult;
}
/// <summary>
/// Vista v_MSFD delle machine MULTI filtrato x macchina (da stored)
/// </summary>
/// <param name="idxMacc"></param>
/// <returns></returns>
public List<VMSFDModel> VMSFDGetMultiByMacc(string idxMacc)
{
List<VMSFDModel> dbResult = new List<VMSFDModel>();
using (var dbCtx = new MoonProContext(_configuration))
{
var IdxMacchina = new SqlParameter("@IdxMacchina", idxMacc);
dbResult = dbCtx
.DbSetMSFD
.FromSqlRaw("exec dbo.stp_MSFD_getMulti @IdxMacchina", IdxMacchina)
.AsNoTracking()
.AsEnumerable()
.ToList();
}
return dbResult;
}
@@ -1596,17 +1259,16 @@ namespace MP.Data.Controllers
/// <returns></returns>
public async Task<List<VMSFDModel>> VMSFDGetMultiByMaccAsync(string idxMacc)
{
List<VMSFDModel> dbResult = new List<VMSFDModel>();
using (var dbCtx = new MoonProContext(_configuration))
{
var IdxMacchina = new SqlParameter("@IdxMacchina", idxMacc);
using var dbCtx = new MoonProContext(_configuration);
dbResult = await dbCtx
var IdxMacchina = new SqlParameter("@IdxMacchina", idxMacc);
var dbResult = await dbCtx
.DbSetMSFD
.FromSqlRaw("exec dbo.stp_MSFD_getMulti @IdxMacchina", IdxMacchina)
.AsNoTracking()
.ToListAsync();
}
return dbResult;
}
+62 -69
View File
@@ -2581,7 +2581,7 @@ namespace MP.Data.Services
}
catch (Exception exc)
{
string logMsg = $"Eccezione in RegControlliInsert | macchina: {idxMacchina} | DataOra: {dataOra} | MatrOpr: {matrOpr} | Qta {esitoOk} | Note: {note}{Environment.NewLine}{exc}";
string logMsg = $"Eccezione in RegControlliInsertAsync | macchina: {idxMacchina} | DataOra: {dataOra} | MatrOpr: {matrOpr} | Qta {esitoOk} | Note: {note}{Environment.NewLine}{exc}";
Log.Error(logMsg);
}
return answ;
@@ -2696,7 +2696,7 @@ namespace MP.Data.Services
}
catch (Exception exc)
{
string logMsg = $"Eccezione in RegDichiarInsert | macchina: {newRec.IdxMacchina} | DtRec: {newRec.DtRec} | TagCode: {newRec.TagCode} | MatrOpr: {newRec.MatrOpr} | ValString {newRec.ValString}{Environment.NewLine}{exc}";
string logMsg = $"Eccezione in RegDichiarInsertAsync | macchina: {newRec.IdxMacchina} | DtRec: {newRec.DtRec} | TagCode: {newRec.TagCode} | MatrOpr: {newRec.MatrOpr} | ValString {newRec.ValString}{Environment.NewLine}{exc}";
Log.Error(logMsg);
}
return answ;
@@ -2719,7 +2719,7 @@ namespace MP.Data.Services
}
catch (Exception exc)
{
string logMsg = $"Eccezione in RegDichiarUpdate | macchina: {newRec.IdxMacchina} | DtRec: {newRec.DtRec} | TagCode: {newRec.TagCode} | MatrOpr: {newRec.MatrOpr} | ValString {newRec.ValString}{Environment.NewLine}{exc}";
string logMsg = $"Eccezione in RegDichiarUpdateAsync | macchina: {newRec.IdxMacchina} | DtRec: {newRec.DtRec} | TagCode: {newRec.TagCode} | MatrOpr: {newRec.MatrOpr} | ValString {newRec.ValString}{Environment.NewLine}{exc}";
Log.Error(logMsg);
}
return answ;
@@ -2783,7 +2783,7 @@ namespace MP.Data.Services
}
catch (Exception exc)
{
string logMsg = $"Eccezione in RegScartiInsert | macchina: {newRec.IdxMacchina} | DataOra: {newRec.DataOra} | Causale: {newRec.Causale} | MatrOpr: {newRec.MatrOpr} | Qta {newRec.Qta} | Note: {newRec.Note}{Environment.NewLine}{exc}";
string logMsg = $"Eccezione in RegScartiInsertAsync | macchina: {newRec.IdxMacchina} | DataOra: {newRec.DataOra} | Causale: {newRec.Causale} | MatrOpr: {newRec.MatrOpr} | Qta {newRec.Qta} | Note: {newRec.Note}{Environment.NewLine}{exc}";
Log.Error(logMsg);
}
return answ;
@@ -2902,71 +2902,64 @@ namespace MP.Data.Services
/// </summary>
/// <param name="idxMacchina"></param>
/// <returns></returns>
public async Task<Dictionary<string, string>> resetDatiMacchina(string idxMacchina)
public async Task<Dictionary<string, string>> ResetDatiMacchinaAsync(string idxMacchina)
{
Dictionary<string, string> answ = new Dictionary<string, string>();
// verifico il timeout che cambia a seconda che sia vero o falso insEnabled...
int tOutShort = 0;
int tOutLong = 0;
ConfigGetVal("TmOut.MS.S", ref tOutShort);
ConfigGetVal("TmOut.MS.L", ref tOutLong);
int redDtMacTOut = tOutLong;
// inizio con un bel reset...
string currKey = $"{redisBaseKey}:MSFD";
await FlushCache(currKey);
var tabMSFD = await VMSFDGetByMacc(idxMacchina);
if (tabMSFD != null && tabMSFD.Count > 0)
var rigaMSFD = await VMSFDGetByMaccAsync(idxMacchina);
if (rigaMSFD != null)
{
var rigaMSFD = tabMSFD.FirstOrDefault();
// ora provo a compilare...
try
{
// salvo 1:1 i valori... STATO
answ.Add("IdxMicroStato", $"{rigaMSFD.IdxMicroStato}");
answ.Add("IdxStato", $"{rigaMSFD.IdxStato}");
answ.Add("CodArticolo", $"{rigaMSFD.CodArticolo}");
answ.Add("insEnabled", $"{rigaMSFD.InsEnabled}");
answ.Add("sLogEnabled", $"{rigaMSFD.SLogEnabled}");
answ.Add("pallet", $"{rigaMSFD.Pallet}");
answ.Add("CodArticolo_A", $"{rigaMSFD.CodArticoloA}");
answ.Add("CodArticolo_B", $"{rigaMSFD.CodArticoloB}");
answ.Add("TempoCicloBase", $"{rigaMSFD.TempoCicloBase}");
answ.Add("PzPalletProd", $"{rigaMSFD.PzPalletProd}");
answ.Add("MatrOpr", $"{rigaMSFD.MatrOpr}");
answ.Add("lastVal", $"{rigaMSFD.LastVal}");
answ.Add("TCBase", $"{rigaMSFD.TempoCicloBase}");
// salvo 1:1 i valori... STATO
answ.Add("IdxMicroStato", $"{rigaMSFD.IdxMicroStato}");
answ.Add("IdxStato", $"{rigaMSFD.IdxStato}");
answ.Add("CodArticolo", $"{rigaMSFD.CodArticolo}");
answ.Add("insEnabled", $"{rigaMSFD.InsEnabled}");
answ.Add("sLogEnabled", $"{rigaMSFD.SLogEnabled}");
answ.Add("pallet", $"{rigaMSFD.Pallet}");
answ.Add("CodArticolo_A", $"{rigaMSFD.CodArticoloA}");
answ.Add("CodArticolo_B", $"{rigaMSFD.CodArticoloB}");
answ.Add("TempoCicloBase", $"{rigaMSFD.TempoCicloBase}");
answ.Add("PzPalletProd", $"{rigaMSFD.PzPalletProd}");
answ.Add("MatrOpr", $"{rigaMSFD.MatrOpr}");
answ.Add("lastVal", $"{rigaMSFD.LastVal}");
answ.Add("TCBase", $"{rigaMSFD.TempoCicloBase}");
//...e SETUP
answ.Add("CodMacc", rigaMSFD.Codmacchina);
answ.Add("IdxFamIn", $"{rigaMSFD.IdxFamigliaIngresso}");
answ.Add("Multi", $"{rigaMSFD.Multi}");
answ.Add("BitFilt", $"{rigaMSFD.BitFilt}");
answ.Add("MaxVal", $"{rigaMSFD.MaxVal}");
answ.Add("BSR", $"{rigaMSFD.Bsr}");
answ.Add("ExplodeBit", $"{rigaMSFD.ExplodeBit}");
answ.Add("NumBit", $"{rigaMSFD.NumBit}");
answ.Add("IdxFamMacc", $"{rigaMSFD.IdxFamiglia}");
answ.Add("simplePallet", $"{rigaMSFD.SimplePallet}");
answ.Add("palletChange", $"{rigaMSFD.PalletChange}");
// cerco dati master/slave...
var macSlave = await Macchine2Slave();
var mastList = macSlave
.Where(x => x.IdxMacchina.Equals(idxMacchina, StringComparison.InvariantCultureIgnoreCase))
.ToList();
var slaveList = macSlave
.Where(x => x.IdxMacchinaSlave.Equals(idxMacchina, StringComparison.InvariantCultureIgnoreCase))
.ToList();
//...e SETUP
answ.Add("CodMacc", rigaMSFD.Codmacchina);
answ.Add("IdxFamIn", $"{rigaMSFD.IdxFamigliaIngresso}");
answ.Add("Multi", $"{rigaMSFD.Multi}");
answ.Add("BitFilt", $"{rigaMSFD.BitFilt}");
answ.Add("MaxVal", $"{rigaMSFD.MaxVal}");
answ.Add("BSR", $"{rigaMSFD.Bsr}");
answ.Add("ExplodeBit", $"{rigaMSFD.ExplodeBit}");
answ.Add("NumBit", $"{rigaMSFD.NumBit}");
answ.Add("IdxFamMacc", $"{rigaMSFD.IdxFamiglia}");
answ.Add("simplePallet", $"{rigaMSFD.SimplePallet}");
answ.Add("palletChange", $"{rigaMSFD.PalletChange}");
string isMaster = mastList.Count > 0 ? "1" : "0";
string isSlave = slaveList.Count > 0 ? "1" : "0";
answ.Add("Master", isMaster);
answ.Add("Slave", isSlave);
}
catch (Exception exc)
{
Log.Error($"Errore in compilazione dati MSFD:{Environment.NewLine}{exc}");
}
// cerco dati master/slave...
var macSlave = await Macchine2Slave();
var mastList = macSlave
.Where(x => x.IdxMacchina.Equals(idxMacchina, StringComparison.InvariantCultureIgnoreCase))
.ToList();
var slaveList = macSlave
.Where(x => x.IdxMacchinaSlave.Equals(idxMacchina, StringComparison.InvariantCultureIgnoreCase))
.ToList();
string isMaster = mastList.Count > 0 ? "1" : "0";
string isSlave = slaveList.Count > 0 ? "1" : "0";
answ.Add("Master", isMaster);
answ.Add("Slave", isSlave);
// verifico il timeout che cambia a seconda che sia vero o falso insEnabled...
int tOutShort = 0;
int tOutLong = 0;
ConfigGetVal("TmOut.MS.S", ref tOutShort);
ConfigGetVal("TmOut.MS.L", ref tOutLong);
int redDtMacTOut = tOutLong;
try
{
redDtMacTOut = (answ["insEnabled"].ToLower() == "true") ? tOutShort : tOutLong;
@@ -3014,7 +3007,7 @@ namespace MP.Data.Services
};
var result = dbTabController.MicroStatoMacchinaUpsert(newRecMS);
// reset in _redisConn
await resetDatiMacchina(idxMacchina);
await ResetDatiMacchinaAsync(idxMacchina);
}
/// <summary>
@@ -3625,7 +3618,7 @@ namespace MP.Data.Services
}
else
{
result = dbIocController.VMSFDGetAll();
result = await dbIocController.VMSFDGetAllAsync();
// serializzo e salvo...
rawData = JsonConvert.SerializeObject(result);
await _redisDb.StringSetAsync(currKey, rawData, UltraFastCache);
@@ -3644,35 +3637,35 @@ namespace MP.Data.Services
/// </summary>
/// <param name="idxMacc"></param>
/// <returns></returns>
public async Task<List<VMSFDModel>> VMSFDGetByMacc(string idxMacc)
public async Task<VMSFDModel?> VMSFDGetByMaccAsync(string idxMacc)
{
// setup parametri costanti
string source = "DB";
Stopwatch sw = new Stopwatch();
sw.Start();
List<VMSFDModel>? result = new List<VMSFDModel>();
VMSFDModel? result = null;
// cerco in _redisConn...
string currKey = $"{redisBaseKey}:MSFD:MACCH:{idxMacc}";
RedisValue rawData = await _redisDb.StringGetAsync(currKey);
//if (!string.IsNullOrEmpty($"{rawData}"))
if (rawData.HasValue)
{
result = JsonConvert.DeserializeObject<List<VMSFDModel>>($"{rawData}");
result = JsonConvert.DeserializeObject<VMSFDModel>($"{rawData}");
source = "REDIS";
}
else
{
result = dbIocController.VMSFDGetByMacc(idxMacc);
result = await dbIocController.VMSFDGetByMaccAsync(idxMacc);
// serializzo e salvo...
rawData = JsonConvert.SerializeObject(result);
await _redisDb.StringSetAsync(currKey, rawData, UltraFastCache);
}
if (result == null)
{
result = new List<VMSFDModel>();
result = new();
}
sw.Stop();
Log.Debug($"VMSFDGetByMacc | {source} | {sw.Elapsed.TotalMilliseconds}ms");
Log.Debug($"VMSFDGetByMaccAsync | {source} | {sw.Elapsed.TotalMilliseconds}ms");
return result;
}
@@ -3699,7 +3692,7 @@ namespace MP.Data.Services
}
else
{
result = dbIocController.VMSFDGetMultiByMacc(idxMacc);
result = await dbIocController.VMSFDGetMultiByMaccAsync(idxMacc);
// serializzo e salvo...
rawData = JsonConvert.SerializeObject(result);
await _redisDb.StringSetAsync(currKey, rawData, LongCache);
+4 -4
View File
@@ -99,7 +99,7 @@ namespace MP.IOC.Controllers
/// api/Bench/FindSMI?id=60&idxMS=3&valore=1 </summary> <param name="id"></param> <param
/// name="idxMS"></param> <param name="valore"></param> <returns></returns>
[HttpGet("FindSMI")]
public string FindSMI(int? id, int? idxMS, int? valore)
public async Task<string> FindSMI(int? id, int? idxMS, int? valore)
{
string answ = "ND";
Stopwatch stopWatch = new Stopwatch();
@@ -126,7 +126,7 @@ namespace MP.IOC.Controllers
if (!trovato)
{
// ricarico tabella!
KeyValuePair<string, string>[] valori = DService.StateMachInByKey(idxFamIn);
KeyValuePair<string, string>[] valori = await DService.StateMachInByKeyAsync(idxFamIn);
answ = string.Format("Ricaricata SMI per famiglia {0}<br/>", fiHASH);
}
@@ -318,7 +318,7 @@ namespace MP.IOC.Controllers
/// <param name="id"></param>
/// <returns></returns>
[HttpGet("StateMachineIn")]
public string StateMachineIn(int? id)
public async Task<string> StateMachineIn(int? id)
{
string answ = "ND";
long splitTime = 0;
@@ -335,7 +335,7 @@ namespace MP.IOC.Controllers
answ = "";
try
{
KeyValuePair<string, string>[] valori = DService.StateMachInByKey(idxFamIn);
KeyValuePair<string, string>[] valori = await DService.StateMachInByKeyAsync(idxFamIn);
splitTime = stopWatch.ElapsedMilliseconds;
foreach (var item in valori)
{
+3 -250
View File
@@ -2431,37 +2431,6 @@ namespace MP.IOC.Data
return result;
}
/// <summary>
/// Restitusice elenco KVP
/// currKey: IdxMacchina
/// value: IdxFamigliaIngresso
/// </summary>
/// <param name="idxMacchina"></param>
/// <returns></returns>
public KeyValuePair<string, string>[] mTabMSMI(string idxMacchina)
{
// hard coded dimensione vettore DatiMacchine
KeyValuePair<string, string>[] answ = new KeyValuePair<string, string>[1];
// iniziualizzo con un valore... 0/0
answ[0] = new KeyValuePair<string, string>("0", "0");
// ORA recupero da memoria redis...
try
{
var currHash = Utils.RedKeyMsmi(idxMacchina);
answ = RedisGetHash(currHash);
// se è vuoto... leggo da DB e popolo!
if (answ.Length == 0)
{
answ = resetMSMI(idxMacchina);
}
}
catch (Exception exc)
{
Log.Error($"Errore in compilazione Tabella Multi State Machine Ingressi x Redis:{Environment.NewLine}{exc}");
}
return answ;
}
/// <summary>
/// Restitusice elenco KVP (async) per evitare blocchi quando chiamato da metodi asincroni
/// </summary>
@@ -3286,12 +3255,12 @@ namespace MP.IOC.Data
ValString = valore,
TagCode = label
};
await IocDbController.RegDichiarInsert(recDich);
await IocDbController.RegDichiarInsertAsync(recDich);
break;
case "RC":
bool esitoOk = valNum != 0;
await IocDbController.RegControlliInsert(idxMacchina, matrOpr, esitoOk, valore, dataOraEvento);
await IocDbController.RegControlliInsertAsync(idxMacchina, matrOpr, esitoOk, valore, dataOraEvento);
break;
case "RS":
@@ -3304,7 +3273,7 @@ namespace MP.IOC.Data
Note = valore,
MatrOpr = matrOpr
};
await IocDbController.RegScartiInsert(recSca);
await IocDbController.RegScartiInsertAsync(recSca);
break;
default:
@@ -3346,23 +3315,6 @@ namespace MP.IOC.Data
return answ;
}
/// <summary>
/// Restituisce il contapezzi come CONTEGGIO da TCRilevati per la macchina
/// </summary>
/// <param name="idxMacchina"></param>
/// <returns></returns>
public int pzCounterTc(string idxMacchina)
{
int answ = -1;
DateTime dataRif = DateTime.Now;
var datiProd = StatoProdMacchina(idxMacchina, dataRif);
if (datiProd != null)
{
answ = datiProd.PzTotODL;
}
return answ;
}
/// <summary>
/// Restituisce il contapezzi come CONTEGGIO da TCRilevati per la macchina - ASYNC
/// </summary>
@@ -3740,33 +3692,6 @@ namespace MP.IOC.Data
/// currKey: IdxMacchina
/// value: IdxFamigliaIngresso
/// </summary>
/// <param name="idxMacchina"></param>
/// <returns></returns>
public KeyValuePair<string, string>[] resetMSMI(string idxMacchina)
{
var currHash = Utils.RedKeyMsmi(idxMacchina);
//currTask = RedisGetHash(redKey);
// recupero records
var tabMSMI = IocDbController.VMSFDGetMultiByMacc(idxMacchina);
KeyValuePair<string, string>[] answ = new KeyValuePair<string, string>[tabMSMI.Count];
// salvo tutti i valori StateMachineIngressi...
int i = 0;
foreach (var item in tabMSMI)
{
answ[i] = new KeyValuePair<string, string>(item.IdxMacchina, item.IdxFamigliaIngresso.ToString());
i++;
}
// verifico il timeout (default 60 sec...)
var sTOutSmi = tryGetConfig("TmOut.MSMI").Result;
int tOut = 60;
int.TryParse(sTOutSmi, out tOut);
tOut = tOut <= 60 ? 60 : tOut;
// salvo in redis!
RedisSetHash(currHash, answ, tOut);
return answ;
}
/// <param name="idxMacchina"></param>
/// <returns></returns>
public async Task<KeyValuePair<string, string>[]> resetMSMIAsync(string idxMacchina)
@@ -3909,58 +3834,6 @@ namespace MP.IOC.Data
return answ;
}
/// <summary>
/// Processa registrazione di un counter x una data macchina IOB
/// </summary>
/// <param name="idxMacchina"></param>
/// <param name="counter">contapezzi</param>
/// <returns></returns>
public string saveCounter(string idxMacchina, string counter)
{
string answ = "0";
// inizio processing vero e proprio INPUT...
if (!string.IsNullOrEmpty(idxMacchina))
{
if (!string.IsNullOrEmpty(counter))
{
int newCounter = -1;
int.TryParse(counter, out newCounter);
// se il conteggio è >= 0 SALVO come nuovo conteggio...
if (newCounter >= 0)
{
var currKey = Utils.RedKeyPzCount(idxMacchina, MpIoNS);
RedisValue rawData = redisDb.StringGet(currKey);
if (!rawData.HasValue)
{
// salvo per + tempo...
redisDb.StringSet(currKey, answ.ToString());
answ = counter;
}
else
{
int currCount = pzCounterTc(idxMacchina);
answ = currCount.ToString();
// salvo per meno tempo...
redisDb.StringSet(currKey, answ, TimeSpan.FromSeconds(5));
}
}
}
else
{
string errore = "Errore: parametro counter vuoto";
Log.Error(errore);
answ = errore;
}
}
else
{
string errore = "Errore: parametro macchina vuoto";
Log.Info(errore);
answ = errore;
}
return answ;
}
/// <summary>
/// Processa registrazione di un counter x una data macchina IOB
/// </summary>
@@ -4038,27 +3911,6 @@ namespace MP.IOC.Data
return fatto;
}
/// <summary>
/// salva il segnale di "microstato" (segnale)
/// </summary>
/// <param name="idxMacchina">idx macchina</param>
/// <param name="valore">valore ingresso</param>
/// <param name="dtEve">data-ora evento (server)</param>
/// <param name="contatore">contatore sequenza dati inviati</param>
/// <returns></returns>
public bool saveSigLog(string idxMacchina, string valore, DateTime dtEve, int contatore)
{
SignalLogModel newRec = new SignalLogModel()
{
IdxMacchina = idxMacchina,
DtCurr = DateTime.Now,
DtEve = dtEve,
Contatore = contatore,
Valore = valore
};
return IocDbController.SignalLogInsert(newRec);
}
/// <summary>
/// salva il segnale di "microstato" (segnale) ASYNC
/// </summary>
@@ -4136,37 +3988,6 @@ namespace MP.IOC.Data
return answ;
}
/// <summary>
/// Restitusice elenco KVP dei campi della State Machine ingressi nel formato
/// currKey: cState_nVal (current MICRO-STATE + "_" + new Value)
/// value: iTipoEv_nState (IdxTipoEv da trasmettere + New MICRO-STATE
/// </summary>
/// <param name="idxFamIn"></param>
/// <returns></returns>
public KeyValuePair<string, string>[] StateMachInByKey(int idxFamIn)
{
// hard coded dimensione vettore DatiMacchine
KeyValuePair<string, string>[] answ = new KeyValuePair<string, string>[1];
// iniziualizzo con un valore... 0/0
answ[0] = new KeyValuePair<string, string>("0", "0");
// ORA recupero da memoria redis...
try
{
var currHash = Utils.GetHashSMI(idxFamIn);
answ = RedisGetHash(currHash);
// se è vuoto... leggo da DB e popolo!
if (answ.Length == 0)
{
answ = resetSMI(idxFamIn);
}
}
catch (Exception exc)
{
Log.Error($"Errore in compilazione State Machine Ingressi x Redis:{Environment.NewLine}{exc}");
}
return answ;
}
/// <summary>
/// Restitusice elenco KVP dei campi della State Machine ingressi nel formato
/// currKey: cState_nVal (current MICRO-STATE + "_" + new Value)
@@ -4840,43 +4661,6 @@ namespace MP.IOC.Data
return result;
}
/// <summary>
/// Resetta (rileggendo) i dati della State Machine ingressi nel formato
/// currKey: cState_nVal (current MICRO-STATE + "_" + new Value)
/// value: iTipoEv_nState (IdxTipoEv da trasmettere + New MICRO-STATE)
/// </summary>
/// <param name="idxFamIn"></param>
/// <returns></returns>
private KeyValuePair<string, string>[] resetSMI(int idxFamIn)
{
var currHash = Utils.GetHashSMI(idxFamIn);
// leggo da DB...
var tabSMI = IocDbController.StateMachineIngressi(idxFamIn);
KeyValuePair<string, string>[] answ = new KeyValuePair<string, string>[tabSMI.Count];
// salvo tutti i valori StateMachineIngressi...
int i = 0;
string key = "";
string val = "";
foreach (var item in tabSMI)
{
key = string.Format("{0}_{1}", item.IdxMicroStato, item.ValoreIngresso);
val = string.Format("{0}_{1}", item.IdxTipoEvento, item.NextIdxMicroStato);
answ[i] = new KeyValuePair<string, string>(key, val);
i++;
}
// verifico il timeout (default 60 sec...)
var sTOutSmi = tryGetConfig("TmOut.SMI").Result;
int tOut = 60;
if (!string.IsNullOrEmpty(sTOutSmi))
{
int.TryParse(sTOutSmi, out tOut);
}
// salvo in redis!
RedisSetHash(currHash, answ, tOut);
return answ;
}
/// <summary>
/// Resetta (rileggendo) i dati della State Machine ingressi nel formato
/// currKey: cState_nVal (current MICRO-STATE + "_" + new Value)
@@ -4994,37 +4778,6 @@ namespace MP.IOC.Data
return answ;
}
/// <summary>
/// Stato prod macchina (completo)
/// </summary>
/// <param name="idxMacchina"></param>
/// <param name="dtReq"></param>
/// <returns></returns>
private StatoProdModel StatoProdMacchina(string idxMacchina, DateTime dtReq, bool forceDb = false)
{
// setup parametri costanti
StatoProdModel? result = new StatoProdModel();
// cerco in _redisConn...
string currKey = $"{Utils.redisStatoProd}:{idxMacchina}:{dtReq:HHmm}";
RedisValue rawData = redisDb.StringGet(currKey);
if (rawData.HasValue && !forceDb)
{
result = JsonConvert.DeserializeObject<StatoProdModel>($"{rawData}");
}
else
{
result = IocDbController.StatoProdMacchina(idxMacchina, dtReq);
// serializzo e salvo...
rawData = JsonConvert.SerializeObject(result);
redisDb.StringSet(currKey, rawData, TimeSpan.FromSeconds(5));
}
if (result == null)
{
result = new StatoProdModel();
}
return result;
}
/// <summary>
/// Stato prod macchina (completo)
/// </summary>
+1 -1
View File
@@ -4,7 +4,7 @@
<TargetFramework>net8.0</TargetFramework>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
<Version>6.16.2604.2010</Version>
<Version>6.16.2604.2016</Version>
</PropertyGroup>
<ItemGroup>
+1 -1
View File
@@ -1,6 +1,6 @@
<body>
<i>Modulo MP-IOC </i>
<h4>Versione: 6.16.2604.2010</h4>
<h4>Versione: 6.16.2604.2016</h4>
<br /> Note di rilascio:
<ul>
<li>
+1 -1
View File
@@ -1 +1 @@
6.16.2604.2010
6.16.2604.2016
+1 -1
View File
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<item>
<version>6.16.2604.2010</version>
<version>6.16.2604.2016</version>
<url>https://nexus.steamware.net/repository/SWS/MP-IOC/stable/LAST/MP.IOC.zip</url>
<changelog>https://nexus.steamware.net/repository/SWS/MP-IOC/stable/LAST/ChangeLog.html</changelog>
<mandatory>false</mandatory>