diff --git a/MP.Data/Controllers/MpIocController.cs b/MP.Data/Controllers/MpIocController.cs
index 4d8c330d..16b3b83b 100644
--- a/MP.Data/Controllers/MpIocController.cs
+++ b/MP.Data/Controllers/MpIocController.cs
@@ -364,6 +364,40 @@ namespace MP.Data.Controllers
return fatto;
}
+ ///
+ /// Inserimento record in DDB
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ public async Task DDB_InsStatoBatchAsync(string idxMacchina, DateTime inizioStato, int idxStato, string codArt, string value, int matrOpr, string pallet)
+ {
+ bool fatto = false;
+ using (var dbCtx = new MoonProContext(_configuration))
+ {
+ var IdxMacchina = new SqlParameter("@IdxMacchina", idxMacchina);
+ var InizioStato = new SqlParameter("@InizioStato", inizioStato);
+ var IdxStato = new SqlParameter("@IdxStato", idxStato);
+ var CodArticolo = new SqlParameter("@codArticolo", codArt);
+ var Value = new SqlParameter("@Value", value);
+ var MatrOpr = new SqlParameter("@MatrOpr", matrOpr);
+ var Pallet = new SqlParameter("@pallet", pallet);
+
+ var result = await dbCtx
+ .Database
+ .ExecuteSqlRawAsync("exec dbo.stp_DDB_InsStatoBatch @IdxMacchina, @InizioStato, @IdxStato, @codArticolo, @Value, @MatrOpr, @pallet", IdxMacchina, InizioStato, IdxStato, CodArticolo, Value, MatrOpr, Pallet);
+
+ // indico eseguito!
+ fatto = result > 0;
+ }
+ return fatto;
+ }
+
///
/// Elenco tabella decodifica articoli / codice decimale
///
@@ -1227,6 +1261,37 @@ namespace MP.Data.Controllers
return dbResult;
}
+ ///
+ /// Elenco ODL data macchina e periodo
+ ///
+ ///
+ ///
+ ///
+ ///
+ public async Task> OdlListByMaccPeriodoAsync(string idxMacchina, DateTime dtStart, DateTime dtEnd)
+ {
+ List dbResult = new List();
+ 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;
+ }
+
///
/// Conteggio PzProd Macchina
///
@@ -1634,6 +1699,26 @@ namespace MP.Data.Controllers
}
return dbResult;
}
+ ///
+ /// Tabella state machine eventi 2 stati data macchina e tipo evento
+ ///
+ ///
+ ///
+ public async Task> SMES_getHwTransitionsAsync(string idxMacchina, int idxTipo)
+ {
+ List dbResult = new List();
+ 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;
+ }
///
/// Tabella state machine eventi 2 stati data macchina e tipo evento
@@ -1657,6 +1742,28 @@ namespace MP.Data.Controllers
return dbResult;
}
+ ///
+ /// Tabella state machine eventi 2 stati data macchina e tipo evento
+ ///
+ ///
+ ///
+ public async Task> SMES_getUserForcedAsync(string idxMacchina, int idxTipo)
+ {
+ List dbResult = new List();
+ 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()
+ //.AsEnumerable()
+ .ToListAsync();
+ }
+ return dbResult;
+ }
+
///
/// Intera tabella state machine ingressi 2 eventi
///
diff --git a/MP.IOC/Data/MpDataService.cs b/MP.IOC/Data/MpDataService.cs
index b7bb5830..b8ee61f6 100644
--- a/MP.IOC/Data/MpDataService.cs
+++ b/MP.IOC/Data/MpDataService.cs
@@ -1882,7 +1882,7 @@ namespace MP.IOC.Data
result = await IocDbController.Macchine2SlaveAsync();
// serializzo e salvo...
rawData = JsonConvert.SerializeObject(result);
- await redisDb.StringSetAsync(currKey, rawData, getRandTOut(redisLongTimeCache));
+ await redisDb.StringSetAsync(currKey, rawData, getRandTOut(redisLongTimeCache * 10));
}
if (result == null)
{
@@ -2291,7 +2291,7 @@ namespace MP.IOC.Data
// se è vuoto... leggo da DB e popolo!
if (answ.Count == 0)
{
- answ = ResetDatiMacchina(idxMacchina);
+ answ = await ResetDatiMacchinaAsync(idxMacchina);
}
}
catch (Exception exc)
@@ -3828,7 +3828,7 @@ namespace MP.IOC.Data
/// DataOra evento
/// DataOra corrente
///
- public string saveCaricoPezzi(string idxMacchina, string qty, string dtEve = "", string dtCurr = "")
+ public async Task SaveCaricoPezziAsync(string idxMacchina, string qty, string dtEve = "", string dtCurr = "")
{
// default: 0, non registrato x cautela...
string answ = "0";
@@ -3848,7 +3848,7 @@ namespace MP.IOC.Data
// se il conteggio è >= 0 SALVO evento...
if (numPzIncr >= 0)
{
- var listOdl = IocDbController.OdlListByMaccPeriodo(idxMacchina, dtEvent, dtEvent.AddSeconds(1));
+ var listOdl = await IocDbController.OdlListByMaccPeriodoAsync(idxMacchina, dtEvent, dtEvent.AddSeconds(1));
if (listOdl != null && listOdl.Count > 0)
{
string codArticolo = listOdl.FirstOrDefault()?.CodArticolo ?? "ND";
@@ -3866,7 +3866,7 @@ namespace MP.IOC.Data
Value = qty
};
// salva e processa
- var resp = scriviRigaEvento(newRecEv);
+ var resp = await scriviRigaEventoAsync(newRecEv);
// registro in risposta che è andato tutto bene... ovvero la qty richiesta...
answ = qty;
}
@@ -4526,7 +4526,7 @@ namespace MP.IOC.Data
#region Private Methods
///
- /// verifica se sia necessario inserire un cambio di stato impianto (DiarioDi Bordo) in modalità batch
+ /// Verifica se sia necessario inserire un cambio di stato impianto (DiarioDi Bordo) in modalità batch
///
///
///
@@ -4536,7 +4536,7 @@ namespace MP.IOC.Data
///
///
///
- private void checkCambiaStatoBatch(tipoInputEvento tipoInput, string IdxMacchina, DateTime InizioStato, int IdxTipo, string CodArt, string Value, int MatrOpr, string pallet)
+ private async Task CheckCambiaStatoBatchAsync(tipoInputEvento tipoInput, string IdxMacchina, DateTime InizioStato, int IdxTipo, string CodArt, string Value, int MatrOpr, string pallet)
{
//DS_applicazione.TransizioneStatiDataTable tabTransStati;
//DS_applicazione.TransizioneStatiRow rigaTransStati;
@@ -4546,7 +4546,7 @@ namespace MP.IOC.Data
{
case tipoInputEvento.barcode:
// effettuo cambio stato INDIPENDENTEMENTE da stato precedente
- listTransit = IocDbController.SMES_getUserForced(IdxMacchina, IdxTipo);
+ listTransit = await IocDbController.SMES_getUserForcedAsync(IdxMacchina, IdxTipo);
if (listTransit.Count > 0)
{
@@ -4554,9 +4554,9 @@ namespace MP.IOC.Data
// solo se cambia stato...
if (rigaTrans != null && rigaTrans.IdxStato != rigaTrans.next_IdxStato)
{
- IocDbController.DDB_InsStatoBatch(IdxMacchina, InizioStato, rigaTrans.next_IdxStato, CodArt, Value, MatrOpr, pallet);
+ await IocDbController.DDB_InsStatoBatchAsync(IdxMacchina, InizioStato, rigaTrans.next_IdxStato, CodArt, Value, MatrOpr, pallet);
// aggiorno MSE
- IocDbController.RecalcMse(IdxMacchina, 0);
+ await IocDbController.RecalcMseAsync(IdxMacchina, 0);
}
}
else
@@ -4567,22 +4567,24 @@ namespace MP.IOC.Data
case tipoInputEvento.hw:
// verifico se ci sia necessità di cambio stato
- listTransit = IocDbController.SMES_getHwTransitions(IdxMacchina, IdxTipo);
+ listTransit = await IocDbController.SMES_getHwTransitionsAsync(IdxMacchina, IdxTipo);
if (listTransit.Count > 0)
{
rigaTrans = listTransit.FirstOrDefault();
if (rigaTrans != null && rigaTrans.IdxStato != rigaTrans.next_IdxStato)
{
- IocDbController.DDB_InsStatoBatch(IdxMacchina, InizioStato, rigaTrans.next_IdxStato, CodArt, Value, MatrOpr, pallet);
+ await IocDbController.DDB_InsStatoBatchAsync(IdxMacchina, InizioStato, rigaTrans.next_IdxStato, CodArt, Value, MatrOpr, pallet);
// aggiorno MSE
- IocDbController.RecalcMse(IdxMacchina, 0);
+ await IocDbController.RecalcMseAsync(IdxMacchina, 0);
}
}
else
{
Log.Debug($"Non trovata riga per: HW | IdxMacchina: {IdxMacchina} | IdxTipo: {IdxTipo} | CodArt: {CodArt} | Value: {Value} | MatrOpr: {MatrOpr} | pallet: {pallet}");
}
+ break;
+ default:
break;
}
}
@@ -4712,25 +4714,6 @@ namespace MP.IOC.Data
return answ;
}
- ///
- /// Restituisce il valore booleano se la macchina sia di tipo MULTI (con più state machine x INGRESSI)
- ///
- ///
- ///
- private bool isMulti(string idxMacchina)
- {
- bool answ = false;
- try
- {
- answ = Convert.ToBoolean(mDatiMacchinaVal(idxMacchina, "Multi") == "1");
- }
- catch (Exception exc)
- {
- Log.Error($"Eccezione in isMulti{Environment.NewLine}{exc}");
- }
- return answ;
- }
-
///
/// Restituisce il valore booleano se la macchina sia di tipo MULTI (con più state machine x INGRESSI)
/// usando dati macchina in cache per evitare lookup ridondanti
@@ -4767,54 +4750,6 @@ namespace MP.IOC.Data
return answ;
}
- ///
- /// Calcola l'effettivo valore da passare alla macchina a stati INGRESSI data conf Macchine2FamigliaIngressi
- ///
- ///
- ///
- ///
- private string preProcInput(string idxMacchina, string valore)
- {
- string newVal = "";
- try
- {
- // variabili
- int valINT = 0;
- int BitFilt = 0;
- int BSR = 0;
- bool ExplodeBit = false;
- int NumBit = 0;
- int newValInt = 0;
- // recupero parametri...
- int.TryParse(mDatiMacchinaVal(idxMacchina, "BitFilt"), out BitFilt);
- int.TryParse(mDatiMacchinaVal(idxMacchina, "BSR"), out BSR);
- Boolean.TryParse(mDatiMacchinaVal(idxMacchina, "ExplodeBit"), out ExplodeBit);
- int.TryParse(mDatiMacchinaVal(idxMacchina, "NumBit"), out NumBit); // non usato (x ora)
- // recupero valore
- valINT = int.Parse(valore, NumberStyles.HexNumber);
- // filtro
- newValInt = MP.Core.Utils.bMaskInt(valINT, BitFilt);
- // effettuo eventuale BitShiftRight
- if (BSR > 0)
- {
- newValInt = newValInt >> BSR;
- }
- // effettuo eventuale esplosione in BIT esclusivi
- if (ExplodeBit)
- {
- newValInt = Convert.ToInt32(1 << newValInt);
- }
- // riconverto a STRING HEX!!!
- newVal = newValInt.ToString("X");
- }
- catch
- {
- newVal = valore;
- }
-
- return newVal;
- }
-
///
/// Calcola l'effettivo valore da passare alla macchina a stati INGRESSI usando dati macchina in cache
///
@@ -4927,7 +4862,7 @@ namespace MP.IOC.Data
result.Add("Slave", isSlave);
// durata cache in secondi dal valore insEnabled...
- double numSecCache = 60 * ((result["insEnabled"].ToLower() == "true") ? redisShortTimeCache / 4 : redisShortTimeCache);
+ double numSecCache = ((result["insEnabled"].ToLower() == "true") ? redisShortTimeCache : redisLongTimeCache);
// ...e salvo...
RedisSetHashDict(currHash, result, numSecCache);
@@ -4993,7 +4928,7 @@ namespace MP.IOC.Data
result.Add("Slave", isSlave);
// durata cache in secondi dal valore insEnabled...
- double numSecCache = 60 * ((result["insEnabled"].ToLower() == "true") ? redisShortTimeCache : redisLongTimeCache);
+ double numSecCache = ((result["insEnabled"].ToLower() == "true") ? redisShortTimeCache : redisLongTimeCache);
// ...e salvo...
await RedisSetHashDictAsync(currHash, result, numSecCache);
@@ -5077,6 +5012,7 @@ namespace MP.IOC.Data
return answ;
}
+#if false
///
/// Scrive una riga di evento nel db + check cambio stato DiarioDiBordo
///
@@ -5090,7 +5026,7 @@ namespace MP.IOC.Data
// inserisco evento
inserito = IocDbController.EvListInsert(newRec);
// faccio controllo per eventuale cambio stato da tab transizioni...
- checkCambiaStatoBatch(tipoInputEvento.hw, newRec.IdxMacchina, newRec.InizioStato ?? DateTime.Now, newRec.IdxTipo, newRec.CodArticolo, newRec.Value, newRec.MatrOpr, newRec.pallet);
+ CheckCambiaStatoBatchAsync(tipoInputEvento.hw, newRec.IdxMacchina, newRec.InizioStato ?? DateTime.Now, newRec.IdxTipo, newRec.CodArticolo, newRec.Value, newRec.MatrOpr, newRec.pallet);
}
catch (Exception exc)
{
@@ -5101,7 +5037,8 @@ namespace MP.IOC.Data
answ.outValue = inserito.ToString();
answ.needStatusRefresh = true;
return answ;
- }
+ }
+#endif
///
/// Scrive una riga di evento nel db + check cambio stato DiarioDiBordo
@@ -5116,7 +5053,7 @@ namespace MP.IOC.Data
// inserisco evento
inserito = await IocDbController.EvListInsertAsync(newRec);
// faccio controllo per eventuale cambio stato da tab transizioni...
- checkCambiaStatoBatch(tipoInputEvento.hw, newRec.IdxMacchina, newRec.InizioStato ?? DateTime.Now, newRec.IdxTipo, newRec.CodArticolo, newRec.Value, newRec.MatrOpr, newRec.pallet);
+ await CheckCambiaStatoBatchAsync(tipoInputEvento.hw, newRec.IdxMacchina, newRec.InizioStato ?? DateTime.Now, newRec.IdxTipo, newRec.CodArticolo, newRec.Value, newRec.MatrOpr, newRec.pallet);
}
catch (Exception exc)
{
@@ -5142,7 +5079,7 @@ namespace MP.IOC.Data
// inserisco evento
inserito = await IocDbController.EvListInsertAsync(newRec);
// faccio controllo per eventuale cambio stato da tab transizioni...
- checkCambiaStatoBatch(tipoInputEvento.barcode, newRec.IdxMacchina, newRec.InizioStato ?? DateTime.Now, newRec.IdxTipo, newRec.CodArticolo, newRec.Value, newRec.MatrOpr, newRec.pallet);
+ CheckCambiaStatoBatchAsync(tipoInputEvento.barcode, newRec.IdxMacchina, newRec.InizioStato ?? DateTime.Now, newRec.IdxTipo, newRec.CodArticolo, newRec.Value, newRec.MatrOpr, newRec.pallet);
}
catch (Exception exc)
{
@@ -5155,26 +5092,6 @@ namespace MP.IOC.Data
return answ;
}
- ///
- /// Restituisce il valore booleano se la macchina sia abilitata all'inserimento COMPLETO nel
- /// Signal Log
- ///
- ///
- ///
- private bool sLogEnab(string idxMacchina)
- {
- bool answ = false;
- try
- {
- answ = Convert.ToBoolean(mDatiMacchinaVal(idxMacchina, "sLogEnabled"));
- }
- catch (Exception exc)
- {
- Log.Error($"Eccezione in sLogEnab{Environment.NewLine}{exc}");
- }
- return answ;
- }
-
///
/// Stato prod macchina (completo)
///
@@ -5184,7 +5101,6 @@ namespace MP.IOC.Data
private StatoProdModel StatoProdMacchina(string idxMacchina, DateTime dtReq, bool forceDb = false)
{
// setup parametri costanti
- string source = "DB";
StatoProdModel? result = new StatoProdModel();
// cerco in _redisConn...
string currKey = $"{Utils.redisStatoProd}:{idxMacchina}:{dtReq:HHmm}";
@@ -5192,7 +5108,6 @@ namespace MP.IOC.Data
if (rawData.HasValue && !forceDb)
{
result = JsonConvert.DeserializeObject($"{rawData}");
- source = "REDIS";
}
else
{
diff --git a/MP.IOC/MP.IOC.csproj b/MP.IOC/MP.IOC.csproj
index c37c7f83..961daab3 100644
--- a/MP.IOC/MP.IOC.csproj
+++ b/MP.IOC/MP.IOC.csproj
@@ -4,7 +4,7 @@
net8.0
enable
enable
- 6.16.2604.1811
+ 6.16.2604.1812
diff --git a/MP.IOC/Resources/ChangeLog.html b/MP.IOC/Resources/ChangeLog.html
index a07b3da9..2543ff32 100644
--- a/MP.IOC/Resources/ChangeLog.html
+++ b/MP.IOC/Resources/ChangeLog.html
@@ -1,6 +1,6 @@
Modulo MP-IOC
- Versione: 6.16.2604.1811
+ Versione: 6.16.2604.1812
Note di rilascio:
-
diff --git a/MP.IOC/Resources/VersNum.txt b/MP.IOC/Resources/VersNum.txt
index fe5ddc90..80f19f09 100644
--- a/MP.IOC/Resources/VersNum.txt
+++ b/MP.IOC/Resources/VersNum.txt
@@ -1 +1 @@
-6.16.2604.1811
+6.16.2604.1812
diff --git a/MP.IOC/Resources/manifest.xml b/MP.IOC/Resources/manifest.xml
index c9a0a7fc..889d57f8 100644
--- a/MP.IOC/Resources/manifest.xml
+++ b/MP.IOC/Resources/manifest.xml
@@ -1,6 +1,6 @@
-
- 6.16.2604.1811
+ 6.16.2604.1812
https://nexus.steamware.net/repository/SWS/MP-IOC/stable/LAST/MP.IOC.zip
https://nexus.steamware.net/repository/SWS/MP-IOC/stable/LAST/ChangeLog.html
false