diff --git a/MapoDb/DS_applicazione.Designer.cs b/MapoDb/DS_applicazione.Designer.cs
index 2b5f83b8..55dbe240 100644
--- a/MapoDb/DS_applicazione.Designer.cs
+++ b/MapoDb/DS_applicazione.Designer.cs
@@ -8637,8 +8637,12 @@ namespace MapoDb {
private global::System.Data.DataColumn columnBitFilt;
+ private global::System.Data.DataColumn columnMaxVal;
+
private global::System.Data.DataColumn columnBSR;
+ private global::System.Data.DataColumn columnExplodeBit;
+
private global::System.Data.DataColumn columnIdxMicroStato;
private global::System.Data.DataColumn columnIdxFamiglia;
@@ -8778,6 +8782,14 @@ namespace MapoDb {
}
}
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "15.0.0.0")]
+ public global::System.Data.DataColumn MaxValColumn {
+ get {
+ return this.columnMaxVal;
+ }
+ }
+
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "15.0.0.0")]
public global::System.Data.DataColumn BSRColumn {
@@ -8786,6 +8798,14 @@ namespace MapoDb {
}
}
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "15.0.0.0")]
+ public global::System.Data.DataColumn ExplodeBitColumn {
+ get {
+ return this.columnExplodeBit;
+ }
+ }
+
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "15.0.0.0")]
public global::System.Data.DataColumn IdxMicroStatoColumn {
@@ -8905,9 +8925,11 @@ namespace MapoDb {
bool insEnabled,
bool sLogEnabled,
int IdxFamigliaIngresso,
- bool Multi,
+ int Multi,
int BitFilt,
+ int MaxVal,
int BSR,
+ bool ExplodeBit,
int IdxMicroStato,
int IdxFamiglia,
int IdxStato,
@@ -8930,7 +8952,9 @@ namespace MapoDb {
IdxFamigliaIngresso,
Multi,
BitFilt,
+ MaxVal,
BSR,
+ ExplodeBit,
IdxMicroStato,
IdxFamiglia,
IdxStato,
@@ -8980,7 +9004,9 @@ namespace MapoDb {
this.columnIdxFamigliaIngresso = base.Columns["IdxFamigliaIngresso"];
this.columnMulti = base.Columns["Multi"];
this.columnBitFilt = base.Columns["BitFilt"];
+ this.columnMaxVal = base.Columns["MaxVal"];
this.columnBSR = base.Columns["BSR"];
+ this.columnExplodeBit = base.Columns["ExplodeBit"];
this.columnIdxMicroStato = base.Columns["IdxMicroStato"];
this.columnIdxFamiglia = base.Columns["IdxFamiglia"];
this.columnIdxStato = base.Columns["IdxStato"];
@@ -9013,12 +9039,16 @@ namespace MapoDb {
base.Columns.Add(this.columnsLogEnabled);
this.columnIdxFamigliaIngresso = new global::System.Data.DataColumn("IdxFamigliaIngresso", typeof(int), null, global::System.Data.MappingType.Element);
base.Columns.Add(this.columnIdxFamigliaIngresso);
- this.columnMulti = new global::System.Data.DataColumn("Multi", typeof(bool), null, global::System.Data.MappingType.Element);
+ this.columnMulti = new global::System.Data.DataColumn("Multi", typeof(int), null, global::System.Data.MappingType.Element);
base.Columns.Add(this.columnMulti);
this.columnBitFilt = new global::System.Data.DataColumn("BitFilt", typeof(int), null, global::System.Data.MappingType.Element);
base.Columns.Add(this.columnBitFilt);
+ this.columnMaxVal = new global::System.Data.DataColumn("MaxVal", typeof(int), null, global::System.Data.MappingType.Element);
+ base.Columns.Add(this.columnMaxVal);
this.columnBSR = new global::System.Data.DataColumn("BSR", typeof(int), null, global::System.Data.MappingType.Element);
base.Columns.Add(this.columnBSR);
+ this.columnExplodeBit = new global::System.Data.DataColumn("ExplodeBit", typeof(bool), null, global::System.Data.MappingType.Element);
+ base.Columns.Add(this.columnExplodeBit);
this.columnIdxMicroStato = new global::System.Data.DataColumn("IdxMicroStato", typeof(int), null, global::System.Data.MappingType.Element);
base.Columns.Add(this.columnIdxMicroStato);
this.columnIdxFamiglia = new global::System.Data.DataColumn("IdxFamiglia", typeof(int), null, global::System.Data.MappingType.Element);
@@ -9055,7 +9085,9 @@ namespace MapoDb {
this.columnIdxFamigliaIngresso.ReadOnly = true;
this.columnMulti.ReadOnly = true;
this.columnBitFilt.ReadOnly = true;
+ this.columnMaxVal.ReadOnly = true;
this.columnBSR.ReadOnly = true;
+ this.columnExplodeBit.ReadOnly = true;
this.columnIdxMicroStato.ReadOnly = true;
this.columnIdxFamiglia.ReadOnly = true;
this.columnIdxStato.ReadOnly = true;
@@ -12527,10 +12559,10 @@ namespace MapoDb {
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "15.0.0.0")]
- public bool Multi {
+ public int Multi {
get {
try {
- return ((bool)(this[this.tableMSFD.MultiColumn]));
+ return ((int)(this[this.tableMSFD.MultiColumn]));
}
catch (global::System.InvalidCastException e) {
throw new global::System.Data.StrongTypingException("Il valore della colonna \'Multi\' nella tabella \'MSFD\' è DBNull.", e);
@@ -12557,6 +12589,22 @@ namespace MapoDb {
}
}
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "15.0.0.0")]
+ public int MaxVal {
+ get {
+ try {
+ return ((int)(this[this.tableMSFD.MaxValColumn]));
+ }
+ catch (global::System.InvalidCastException e) {
+ throw new global::System.Data.StrongTypingException("Il valore della colonna \'MaxVal\' nella tabella \'MSFD\' è DBNull.", e);
+ }
+ }
+ set {
+ this[this.tableMSFD.MaxValColumn] = value;
+ }
+ }
+
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "15.0.0.0")]
public int BSR {
@@ -12573,6 +12621,22 @@ namespace MapoDb {
}
}
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "15.0.0.0")]
+ public bool ExplodeBit {
+ get {
+ try {
+ return ((bool)(this[this.tableMSFD.ExplodeBitColumn]));
+ }
+ catch (global::System.InvalidCastException e) {
+ throw new global::System.Data.StrongTypingException("Il valore della colonna \'ExplodeBit\' nella tabella \'MSFD\' è DBNull.", e);
+ }
+ }
+ set {
+ this[this.tableMSFD.ExplodeBitColumn] = value;
+ }
+ }
+
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "15.0.0.0")]
public int IdxMicroStato {
@@ -12837,6 +12901,18 @@ namespace MapoDb {
this[this.tableMSFD.BitFiltColumn] = global::System.Convert.DBNull;
}
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "15.0.0.0")]
+ public bool IsMaxValNull() {
+ return this.IsNull(this.tableMSFD.MaxValColumn);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "15.0.0.0")]
+ public void SetMaxValNull() {
+ this[this.tableMSFD.MaxValColumn] = global::System.Convert.DBNull;
+ }
+
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "15.0.0.0")]
public bool IsBSRNull() {
@@ -12849,6 +12925,18 @@ namespace MapoDb {
this[this.tableMSFD.BSRColumn] = global::System.Convert.DBNull;
}
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "15.0.0.0")]
+ public bool IsExplodeBitNull() {
+ return this.IsNull(this.tableMSFD.ExplodeBitColumn);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "15.0.0.0")]
+ public void SetExplodeBitNull() {
+ this[this.tableMSFD.ExplodeBitColumn] = global::System.Convert.DBNull;
+ }
+
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "15.0.0.0")]
public bool IsIdxMicroStatoNull() {
@@ -24780,7 +24868,9 @@ SELECT CodArticolo, DescArticolo, CurrRev, ProdRev, FlagIsNew FROM AnagArticoli
tableMapping.ColumnMappings.Add("IdxFamigliaIngresso", "IdxFamigliaIngresso");
tableMapping.ColumnMappings.Add("Multi", "Multi");
tableMapping.ColumnMappings.Add("BitFilt", "BitFilt");
+ tableMapping.ColumnMappings.Add("MaxVal", "MaxVal");
tableMapping.ColumnMappings.Add("BSR", "BSR");
+ tableMapping.ColumnMappings.Add("ExplodeBit", "ExplodeBit");
tableMapping.ColumnMappings.Add("IdxMicroStato", "IdxMicroStato");
tableMapping.ColumnMappings.Add("IdxFamiglia", "IdxFamiglia");
tableMapping.ColumnMappings.Add("IdxStato", "IdxStato");
diff --git a/MapoDb/DS_applicazione.xsd b/MapoDb/DS_applicazione.xsd
index 8f0d0336..1db86bd6 100644
--- a/MapoDb/DS_applicazione.xsd
+++ b/MapoDb/DS_applicazione.xsd
@@ -2359,7 +2359,9 @@ SELECT CodArticolo, DescArticolo, CurrRev, ProdRev, FlagIsNew FROM AnagArticoli
+
+
@@ -3017,9 +3019,11 @@ SELECT CodArticolo, DescArticolo, CurrRev, ProdRev, FlagIsNew FROM AnagArticoli
-
+
+
+
diff --git a/MapoDb/DataLayer.cs b/MapoDb/DataLayer.cs
index 13df6f81..c511feea 100644
--- a/MapoDb/DataLayer.cs
+++ b/MapoDb/DataLayer.cs
@@ -473,11 +473,22 @@ namespace MapoDb
{
// scrivo keep alive!!! (se encessario, altrimenti è in cache...)
connDb.scriviKeepAlive(idxMacchina, DateTime.Now);
- // ora processo e salvo il valore del microstato... INTERNAMENTE gestisce i casi DB/REDIS secondo necessitÃ
- connDb.checkMicroStato(idxMacchina, valore, dataOraEvento, contatore);
// verifico se sia una macchina MULTI ed in tal caso calcolo i SUB-systems e CHIAMERO' alla fine pure loro....
+ if (DataLayer.isMulti(idxMacchina))
+ {
+ // inizio preprocessing
+ // ora processo e salvo il valore del microstato... INTERNAMENTE gestisce i casi DB/REDIS secondo necessitÃ
+ connDb.checkMicroStato(idxMacchina, valore, dataOraEvento, contatore);
+ // ora processo i SUB-systems
+
+ }
+ else
+ {
+ // ora processo e salvo il valore del microstato... INTERNAMENTE gestisce i casi DB/REDIS secondo necessitÃ
+ connDb.checkMicroStato(idxMacchina, valore, dataOraEvento, contatore);
+ }
// registro in risposta che è andato tutto bene...
answ = "OK";
}
@@ -503,11 +514,22 @@ namespace MapoDb
{
// scrivo keep alive!!! (se encessario, altrimenti è in cache...)
MapoDb.obj.scriviKeepAlive(idxMacchina, DateTime.Now);
- // ora processo e salvo il valore del microstato...
- MapoDb.obj.checkMicroStato(idxMacchina, valore, dataOraEvento, contatore);
// verifico se sia una macchina MULTI ed in tal caso calcolo i SUB-systems e CHIAMERO' alla fine pure loro....
+ if (MapoDb.obj.isMulti(idxMacchina))
+ {
+ // inizio preprocessing
+ // ora processo e salvo il valore del microstato...
+ MapoDb.obj.checkMicroStato(idxMacchina, valore, dataOraEvento, contatore);
+ // ora processo i SUB-systems
+
+ }
+ else
+ {
+ // ora processo e salvo il valore del microstato...
+ MapoDb.obj.checkMicroStato(idxMacchina, valore, dataOraEvento, contatore);
+ }
answ = "OK"; // registro in risposta che è andato tutto bene...
}
catch (Exception exc)
@@ -643,7 +665,9 @@ namespace MapoDb
answ.Add("IdxFamIn", rigaMSFD.IdxFamigliaIngresso.ToString());
answ.Add("Multi", rigaMSFD.Multi.ToString());
answ.Add("BitFilt", rigaMSFD.BitFilt.ToString());
+ answ.Add("MaxVal", rigaMSFD.MaxVal.ToString());
answ.Add("BSR", rigaMSFD.BSR.ToString());
+ answ.Add("ExplodeBit", rigaMSFD.ExplodeBit.ToString());
answ.Add("IdxFamMacc", rigaMSFD.IdxFamiglia.ToString());
answ.Add("simplePallet", rigaMSFD.simplePallet.ToString());
answ.Add("palletChange", rigaMSFD.palletChange.ToString());
@@ -740,6 +764,43 @@ namespace MapoDb
return answ;
}
+ ///
+ /// Restituisce il valore booleano se la macchina sia di tipo MULTI (con più state machine x INGRESSI)
+ ///
+ ///
+ ///
+ public static bool isMulti(string idxMacchina)
+ {
+ bool answ = false;
+ if (memLayer.ML.CRB("IOB_RedEnab"))
+ {
+
+ // conto la richiesta nel contatore REDIS
+ long nCall = memLayer.ML.setRCntI(mHash("COUNT:isMulti"));
+ //... se == nCall2Log scrivo su log e resetto
+ long nCall2Log = memLayer.ML.cdvi("nCall2Log");
+ if (nCall >= nCall2Log)
+ {
+ // loggo
+ logger.lg.scriviLog(string.Format("isMulti: effettuate {0} call", nCall), tipoLog.INFO);
+ // resetto!
+ memLayer.ML.resetRCnt(mHash("COUNT:isMulti"));
+ }
+ try
+ {
+ answ = Convert.ToBoolean(mDatiMacchinaVal(idxMacchina, "Multi"));
+ }
+ catch
+ { }
+ }
+ // ...oppure dritto su DB
+ else
+ {
+ answ = MapoDb.obj.isMulti(idxMacchina);
+ }
+ return answ;
+ }
+
#endregion
#region gestione State Machine Ingressi
diff --git a/MapoDb/MapoDb.cs b/MapoDb/MapoDb.cs
index 11479057..39e3c950 100644
--- a/MapoDb/MapoDb.cs
+++ b/MapoDb/MapoDb.cs
@@ -477,6 +477,28 @@ namespace MapoDb
return answ;
}
///
+ /// Restituisce il valore booleano se la macchina sia di tipo MULTI (con più state machine x INGRESSI)
+ ///
+ ///
+ ///
+ public bool isMulti(string idxMacchina)
+ {
+ bool answ = false;
+ try
+ {
+ // 2017.07.11 se richiesto di NON usare singleton... riporto FUORI la gestione NUOVO oggetto
+ if (!memLayer.ML.CRB("disable_singleton"))
+ {
+ //2017.06.09 forzo inizializzazione oggetto..
+ taMSFD = new DS_applicazioneTableAdapters.MSFDTableAdapter();
+ }
+ answ = ((DS_applicazione.MSFDRow)taMSFD.getByIdxMacc(idxMacchina)[0]).Multi == 1;
+ }
+ catch
+ { }
+ return answ;
+ }
+ ///
/// salva il segnale di "microstato"
///
/// idx macchina
@@ -648,8 +670,8 @@ namespace MapoDb
}
string valEsteso = string.Format("[{0}] {1}", contatore.PadLeft(3, '0'), valore);
// aggiunto contatore!
- answ = scriviRigaEvento(idxMacchina, rigaTransIn.IdxTipoEvento, CodArticolo, valEsteso, 0, "-", dtEve, DateTime.Now);
- // 2017.09.12 SE era in modalità redis RICARICA dati macchina...
+ answ = scriviRigaEvento(idxMacchina, rigaTransIn.IdxTipoEvento, CodArticolo, valEsteso, 0, "-", dtEve, DateTime.Now);
+ // 2017.09.12 SE era in modalità redis RICARICA dati macchina...
if (memLayer.ML.CRB("IOB_RedEnab"))
{
DataLayer.resetDatiMacchina(idxMacchina);