Merge branch 'develop' into beta
This commit is contained in:
Vendored
+1
-1
@@ -12,7 +12,7 @@ pipeline {
|
||||
steps {
|
||||
/* calcolo numero versione... diverso x branch MASTER/DEVELOP */
|
||||
script {
|
||||
withEnv(['NEXT_BUILD_NUMBER=1332']) {
|
||||
withEnv(['NEXT_BUILD_NUMBER=1333']) {
|
||||
// env.versionNumber = VersionNumber(versionNumberString : '6.12.${BUILD_DATE_FORMATTED, "yyMM"}.${BUILDS_ALL_TIME}', projectStartDate : '2006-01-01', skipFailedBuilds: true)
|
||||
env.versionNumber = VersionNumber(versionNumberString : '6.12.${BUILD_DATE_FORMATTED, "yyMM"}.${BUILDS_ALL_TIME}', projectStartDate : '2006-01-01', skipFailedBuilds: true, overrideBuildsAllTime: '${NEXT_BUILD_NUMBER}')
|
||||
env.APP_NAME = 'MAPO'
|
||||
|
||||
@@ -325,6 +325,25 @@ namespace MP_IO.Controllers
|
||||
return DataLayerObj.forceSplitOdl(id, true, true, 100);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Chiude ODL precedente ed avvia uno nuovo (duplicandolo e sitemando quantità RIMANENTE), e CONFERMA produzione...
|
||||
///
|
||||
/// GET: IOB/forceSplitOdl/SIMUL_03?doConfirm=true&qtyFromLast=true&roundStep=150
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="id"></param>
|
||||
/// <param name="doConfirm"></param>
|
||||
/// <param name="qtyFromLast"></param>
|
||||
/// <param name="roundStep"></param>
|
||||
/// <returns>Esito chiamata (OK/vuoto)</returns>
|
||||
public string forceSplitOdlFull(string id, bool doConfirm, bool qtyFromLast, int roundStep)
|
||||
{
|
||||
// attenzione! poiché nell'URL il carattere "#" fiene filtrato ci aspettiamo il carattere "|" che poi trasformiamo ora in "#"
|
||||
id = id.Replace("|", "#");
|
||||
DataLayer DataLayerObj = new DataLayer();
|
||||
return DataLayerObj.forceSplitOdl(id, doConfirm, qtyFromLast, roundStep);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Recupera COUNTER x macchina:
|
||||
///
|
||||
@@ -417,7 +436,7 @@ namespace MP_IO.Controllers
|
||||
try
|
||||
{
|
||||
DataLayer DataLayerObj = new DataLayer();
|
||||
answ = DataLayerObj.currODL(id).ToString();
|
||||
answ = $"{DataLayerObj.currODL(id)}";
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
|
||||
+23
-7
@@ -5,18 +5,16 @@ namespace MP_SITE
|
||||
{
|
||||
public class BasePage : UserPage
|
||||
{
|
||||
#region Internal Fields
|
||||
|
||||
/// <summary>
|
||||
/// Oggetto datalayer specifico
|
||||
/// </summary>
|
||||
internal DataLayer DataLayerObj = new DataLayer();
|
||||
|
||||
public bool enableGraphJS
|
||||
{
|
||||
get
|
||||
{
|
||||
return memLayer.ML.CRB("enableGraphJS");
|
||||
}
|
||||
}
|
||||
#endregion Internal Fields
|
||||
|
||||
#region Protected Properties
|
||||
|
||||
/// <summary>
|
||||
/// Prox pagina da aprire
|
||||
@@ -34,6 +32,22 @@ namespace MP_SITE
|
||||
}
|
||||
}
|
||||
|
||||
#endregion Protected Properties
|
||||
|
||||
#region Public Properties
|
||||
|
||||
public bool enableGraphJS
|
||||
{
|
||||
get
|
||||
{
|
||||
return memLayer.ML.CRB("enableGraphJS");
|
||||
}
|
||||
}
|
||||
|
||||
#endregion Public Properties
|
||||
|
||||
#region Public Methods
|
||||
|
||||
/// <summary>
|
||||
/// effettua traduzione del lemma
|
||||
/// </summary>
|
||||
@@ -53,5 +67,7 @@ namespace MP_SITE
|
||||
{
|
||||
return user_std.UtSn.TraduciEn(lemma);
|
||||
}
|
||||
|
||||
#endregion Public Methods
|
||||
}
|
||||
}
|
||||
@@ -9,6 +9,48 @@ namespace MP_SITE.WebUserControls
|
||||
{
|
||||
public partial class mod_sequencerStati : System.Web.UI.UserControl
|
||||
{
|
||||
#region Protected Fields
|
||||
|
||||
protected objSequencer _grafico;
|
||||
|
||||
protected int _larghezza = 100;
|
||||
|
||||
protected double _min2plot = 0.0;
|
||||
|
||||
protected double _minRosso = 0.5;
|
||||
|
||||
protected double _minSpento = 0.5;
|
||||
|
||||
protected double _minVerde = 0.5;
|
||||
|
||||
protected int _timeSplits = 10;
|
||||
|
||||
protected string _titolo = "Sequencer";
|
||||
|
||||
/// <summary>
|
||||
/// totale in minuti da plottare
|
||||
/// </summary>
|
||||
protected double totale = 1;
|
||||
|
||||
#endregion Protected Fields
|
||||
|
||||
#region Public Fields
|
||||
|
||||
public resoconti _resoconti;
|
||||
|
||||
#endregion Public Fields
|
||||
|
||||
#region Public Events
|
||||
|
||||
/// <summary>
|
||||
/// evento di richeista zoom sui dati
|
||||
/// </summary>
|
||||
public event EventHandler eh_richiestaZoom;
|
||||
|
||||
#endregion Public Events
|
||||
|
||||
#region Public Properties
|
||||
|
||||
/// <summary>
|
||||
/// dati x grafico sequencer
|
||||
/// </summary>
|
||||
@@ -24,62 +66,198 @@ namespace MP_SITE.WebUserControls
|
||||
}
|
||||
}
|
||||
|
||||
public resoconti _resoconti;
|
||||
protected objSequencer _grafico;
|
||||
protected double _min2plot = 0.0;
|
||||
protected string _titolo = "Sequencer";
|
||||
protected int _larghezza = 100;
|
||||
protected int _timeSplits = 10;
|
||||
/// <summary>
|
||||
/// totale in minuti da plottare
|
||||
/// </summary>
|
||||
protected double totale = 1;
|
||||
/// <summary>
|
||||
/// numero dei segmenti del grafico
|
||||
/// </summary>
|
||||
public int numSplit { get; set; }
|
||||
protected double _minVerde = 0.5;
|
||||
protected double _minRosso = 0.5;
|
||||
protected double _minSpento = 0.5;
|
||||
/// <summary>
|
||||
/// altezza max grafico
|
||||
/// </summary>
|
||||
public int graphHeight { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// identificativo
|
||||
/// </summary>
|
||||
public string identificativo { get; set; }
|
||||
|
||||
protected void Page_Load(object sender, EventArgs e)
|
||||
/// <summary>
|
||||
/// larghezza totale del grafico (forzo a zero come minimo...)
|
||||
/// </summary>
|
||||
public int larghezza
|
||||
{
|
||||
doUpdate();
|
||||
get
|
||||
{
|
||||
return _larghezza;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value > 0)
|
||||
{
|
||||
_larghezza = value;
|
||||
}
|
||||
else
|
||||
{
|
||||
_larghezza = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// disegna la tabella
|
||||
/// valore minimo da plottare
|
||||
/// </summary>
|
||||
protected void plottaGrafico()
|
||||
public double min2plot
|
||||
{
|
||||
// a seconda del numero di eventi da plottare decido la procedura...
|
||||
DataLayer_generic.serieDatiDataTable dati = _grafico.serieDati;
|
||||
try
|
||||
get
|
||||
{
|
||||
// è la somma dei minuti totali dall'inizio alla fine...
|
||||
totale = _grafico.intervallo.fine.Subtract(_grafico.intervallo.inizio).TotalMinutes;
|
||||
return _min2plot;
|
||||
}
|
||||
catch
|
||||
{ }
|
||||
int numCelle = dati.Rows.Count;
|
||||
if (numCelle <= numSplit) // se ho eventi <= _num split....
|
||||
set
|
||||
{
|
||||
plottaDettaglio(dati);
|
||||
}
|
||||
else // altrimenti raggruppo!
|
||||
{
|
||||
plottaGruppi(dati);
|
||||
_min2plot = value;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// % minuma nel periodo per dire che sia rosso
|
||||
/// </summary>
|
||||
public double minRosso
|
||||
{
|
||||
get
|
||||
{
|
||||
return _minRosso;
|
||||
}
|
||||
set
|
||||
{
|
||||
_minRosso = value;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// % minuma nel periodo per dire che sia spento
|
||||
/// </summary>
|
||||
public double minSpento
|
||||
{
|
||||
get
|
||||
{
|
||||
return _minSpento;
|
||||
}
|
||||
set
|
||||
{
|
||||
_minSpento = value;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// % minuma nel periodo per dire che sia verde
|
||||
/// </summary>
|
||||
public double minVerde
|
||||
{
|
||||
get
|
||||
{
|
||||
return _minVerde;
|
||||
}
|
||||
set
|
||||
{
|
||||
_minVerde = value;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// numero dei segmenti del grafico
|
||||
/// </summary>
|
||||
public int numSplit { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// titolo del grafico
|
||||
/// </summary>
|
||||
public string titolo
|
||||
{
|
||||
get
|
||||
{
|
||||
return _titolo;
|
||||
}
|
||||
set
|
||||
{
|
||||
_titolo = value;
|
||||
}
|
||||
}
|
||||
|
||||
#endregion Public Properties
|
||||
|
||||
#region Private Methods
|
||||
|
||||
/// <summary>
|
||||
/// accoda i dati alla serie corretta
|
||||
/// </summary>
|
||||
/// <param name="tipo"></param>
|
||||
/// <param name="inizio"></param>
|
||||
/// <param name="fine"></param>
|
||||
/// <param name="rigaPrec"></param>
|
||||
/// <param name="codV"></param>
|
||||
/// <param name="codG"></param>
|
||||
/// <param name="codR"></param>
|
||||
/// <param name="codB"></param>
|
||||
/// <param name="codS"></param>
|
||||
private void accodaDati(ref int tipo, ref DateTime inizio, ref DateTime fine, DataLayer_generic.serieDatiRow rigaPrec, string codV, string codG, string codR, string codB, string codS)
|
||||
{
|
||||
switch (rigaPrec.colore)
|
||||
{
|
||||
case "sVe":
|
||||
tipo = 1;
|
||||
Chart1.Series["SeqV"].Points.AddXY(tipo, inizio, fine);
|
||||
// aggiungo tooltip
|
||||
Chart1.Series["SeqV"].Points[Chart1.Series["SeqV"].Points.Count - 1].ToolTip = string.Format("{2} | {0:dd/MM HH:mm:ss} -->{1:dd/MM HH:mm:ss}", inizio, fine, codV);
|
||||
Chart1.Series["SeqV"].Points[Chart1.Series["SeqV"].Points.Count - 1].PostBackValue = inizio.ToString();
|
||||
break;
|
||||
|
||||
case "sGi":
|
||||
tipo = 1;
|
||||
Chart1.Series["SeqG"].Points.AddXY(tipo, inizio, fine);
|
||||
// aggiungo tooltip
|
||||
Chart1.Series["SeqG"].Points[Chart1.Series["SeqG"].Points.Count - 1].ToolTip = string.Format("{2} | {0:dd/MM HH:mm:ss} -->{1:dd/MM HH:mm:ss}", inizio, fine, codG);
|
||||
Chart1.Series["SeqG"].Points[Chart1.Series["SeqG"].Points.Count - 1].PostBackValue = inizio.ToString();
|
||||
break;
|
||||
|
||||
case "sRo":
|
||||
tipo = 1;
|
||||
Chart1.Series["SeqR"].Points.AddXY(tipo, inizio, fine);
|
||||
// aggiungo tooltip
|
||||
Chart1.Series["SeqR"].Points[Chart1.Series["SeqR"].Points.Count - 1].ToolTip = string.Format("{2} | {0:dd/MM HH:mm:ss} -->{1:dd/MM HH:mm:ss}", inizio, fine, codR);
|
||||
Chart1.Series["SeqR"].Points[Chart1.Series["SeqR"].Points.Count - 1].PostBackValue = inizio.ToString();
|
||||
break;
|
||||
|
||||
case "sBl":
|
||||
tipo = 1;
|
||||
Chart1.Series["SeqB"].Points.AddXY(tipo, inizio, fine);
|
||||
// aggiungo tooltip
|
||||
Chart1.Series["SeqB"].Points[Chart1.Series["SeqB"].Points.Count - 1].ToolTip = string.Format("{2} | {0:dd/MM HH:mm:ss} -->{1:dd/MM HH:mm:ss}", inizio, fine, codR);
|
||||
Chart1.Series["SeqB"].Points[Chart1.Series["SeqB"].Points.Count - 1].PostBackValue = inizio.ToString();
|
||||
break;
|
||||
|
||||
case "sGr":
|
||||
tipo = 1;
|
||||
Chart1.Series["SeqS"].Points.AddXY(tipo, inizio, fine);
|
||||
// aggiungo tooltip
|
||||
Chart1.Series["SeqS"].Points[Chart1.Series["SeqS"].Points.Count - 1].ToolTip = string.Format("{2} | {0:dd/MM HH:mm:ss} -->{1:dd/MM HH:mm:ss}", inizio, fine, codS);
|
||||
Chart1.Series["SeqS"].Points[Chart1.Series["SeqS"].Points.Count - 1].PostBackValue = inizio.ToString();
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// intercetta richiesta di zoom e zoomma sul giorno in esame...
|
||||
/// </summary>
|
||||
/// <param name="sender"></param>
|
||||
/// <param name="e"></param>
|
||||
private void lnkb_Click(object sender, EventArgs e)
|
||||
{
|
||||
LinkButton lnk = (LinkButton)sender;
|
||||
// calcolo il giorno...
|
||||
memLayer.ML.setSessionVal("dataZoom", lnk.CommandArgument.ToString());
|
||||
if (eh_richiestaZoom != null)
|
||||
{
|
||||
eh_richiestaZoom(this, new EventArgs());
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// popola il sequencer degli stati riportando tutti i singoli valori
|
||||
@@ -177,77 +355,7 @@ namespace MP_SITE.WebUserControls
|
||||
fine = rigaPrec.timeData.AddMinutes(rigaPrec.valore);
|
||||
accodaDati(ref tipo, ref inizio, ref fine, rigaPrec, codV, codG, codR, codB, codS);
|
||||
}
|
||||
/// <summary>
|
||||
/// accoda i dati alla serie corretta
|
||||
/// </summary>
|
||||
/// <param name="tipo"></param>
|
||||
/// <param name="inizio"></param>
|
||||
/// <param name="fine"></param>
|
||||
/// <param name="rigaPrec"></param>
|
||||
/// <param name="codV"></param>
|
||||
/// <param name="codG"></param>
|
||||
/// <param name="codR"></param>
|
||||
/// <param name="codB"></param>
|
||||
/// <param name="codS"></param>
|
||||
private void accodaDati(ref int tipo, ref DateTime inizio, ref DateTime fine, DataLayer_generic.serieDatiRow rigaPrec, string codV, string codG, string codR, string codB, string codS)
|
||||
{
|
||||
switch (rigaPrec.colore)
|
||||
{
|
||||
case "sVe":
|
||||
tipo = 1;
|
||||
Chart1.Series["SeqV"].Points.AddXY(tipo, inizio, fine);
|
||||
// aggiungo tooltip
|
||||
Chart1.Series["SeqV"].Points[Chart1.Series["SeqV"].Points.Count - 1].ToolTip = string.Format("{2} | {0:dd/MM HH:mm:ss} -->{1:dd/MM HH:mm:ss}", inizio, fine, codV);
|
||||
Chart1.Series["SeqV"].Points[Chart1.Series["SeqV"].Points.Count - 1].PostBackValue = inizio.ToString();
|
||||
break;
|
||||
case "sGi":
|
||||
tipo = 1;
|
||||
Chart1.Series["SeqG"].Points.AddXY(tipo, inizio, fine);
|
||||
// aggiungo tooltip
|
||||
Chart1.Series["SeqG"].Points[Chart1.Series["SeqG"].Points.Count - 1].ToolTip = string.Format("{2} | {0:dd/MM HH:mm:ss} -->{1:dd/MM HH:mm:ss}", inizio, fine, codG);
|
||||
Chart1.Series["SeqG"].Points[Chart1.Series["SeqG"].Points.Count - 1].PostBackValue = inizio.ToString();
|
||||
break;
|
||||
case "sRo":
|
||||
tipo = 1;
|
||||
Chart1.Series["SeqR"].Points.AddXY(tipo, inizio, fine);
|
||||
// aggiungo tooltip
|
||||
Chart1.Series["SeqR"].Points[Chart1.Series["SeqR"].Points.Count - 1].ToolTip = string.Format("{2} | {0:dd/MM HH:mm:ss} -->{1:dd/MM HH:mm:ss}", inizio, fine, codR);
|
||||
Chart1.Series["SeqR"].Points[Chart1.Series["SeqR"].Points.Count - 1].PostBackValue = inizio.ToString();
|
||||
break;
|
||||
case "sBl":
|
||||
tipo = 1;
|
||||
Chart1.Series["SeqB"].Points.AddXY(tipo, inizio, fine);
|
||||
// aggiungo tooltip
|
||||
Chart1.Series["SeqB"].Points[Chart1.Series["SeqB"].Points.Count - 1].ToolTip = string.Format("{2} | {0:dd/MM HH:mm:ss} -->{1:dd/MM HH:mm:ss}", inizio, fine, codR);
|
||||
Chart1.Series["SeqB"].Points[Chart1.Series["SeqB"].Points.Count - 1].PostBackValue = inizio.ToString();
|
||||
break;
|
||||
case "sGr":
|
||||
tipo = 1;
|
||||
Chart1.Series["SeqS"].Points.AddXY(tipo, inizio, fine);
|
||||
// aggiungo tooltip
|
||||
Chart1.Series["SeqS"].Points[Chart1.Series["SeqS"].Points.Count - 1].ToolTip = string.Format("{2} | {0:dd/MM HH:mm:ss} -->{1:dd/MM HH:mm:ss}", inizio, fine, codS);
|
||||
Chart1.Series["SeqS"].Points[Chart1.Series["SeqS"].Points.Count - 1].PostBackValue = inizio.ToString();
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// intercetta richiesta di zoom e zoomma sul giorno in esame...
|
||||
/// </summary>
|
||||
/// <param name="sender"></param>
|
||||
/// <param name="e"></param>
|
||||
void lnkb_Click(object sender, EventArgs e)
|
||||
{
|
||||
LinkButton lnk = (LinkButton)sender;
|
||||
// calcolo il giorno...
|
||||
memLayer.ML.setSessionVal("dataZoom", lnk.CommandArgument.ToString());
|
||||
if (eh_richiestaZoom != null)
|
||||
{
|
||||
eh_richiestaZoom(this, new EventArgs());
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
/// popola il sequencer degli stati raggruppando perché troppi valori
|
||||
/// </summary>
|
||||
@@ -256,7 +364,7 @@ namespace MP_SITE.WebUserControls
|
||||
private void plottaGruppi(DataLayer_generic.serieDatiDataTable dati)
|
||||
{
|
||||
DataLayer_generic.serieDatiDataTable datiGrouped = new DataLayer_generic.serieDatiDataTable();
|
||||
// verifico se ho i dati in cache REDIS...
|
||||
// verifico se ho i dati in cache REDIS...
|
||||
double numGG = _grafico.intervallo.fine.Subtract(_grafico.intervallo.inizio).TotalDays;
|
||||
logger.lg.scriviLog(string.Format("Richiesta dati legacySeq GROUPED per {0} {1} gg", _grafico.idxMacchina, numGG));
|
||||
string rKey = DataLayer.mHash(string.Format("legacySeq:spl_{0}:mac_{1}_{2}_{3}", numSplit, _grafico.idxMacchina, _grafico.intervallo.inizio.ToString("yyyyMMdd_HHmmss"), _grafico.intervallo.fine.ToString("yyyyMMdd_HHmmss")).Replace(" ", "_"));
|
||||
@@ -268,7 +376,7 @@ namespace MP_SITE.WebUserControls
|
||||
try
|
||||
{
|
||||
needRecalc = false;
|
||||
// deserializzo
|
||||
// deserializzo
|
||||
datiGrouped = JsonConvert.DeserializeObject<DataLayer_generic.serieDatiDataTable>(redJson);
|
||||
logger.lg.scriviLog("Recuperato " + rKey);
|
||||
}
|
||||
@@ -310,15 +418,19 @@ namespace MP_SITE.WebUserControls
|
||||
case "sVe":
|
||||
valV = valV + riga.valore;
|
||||
break;
|
||||
|
||||
case "sGi":
|
||||
valG = valG + riga.valore;
|
||||
break;
|
||||
|
||||
case "sRo":
|
||||
valR = valR + riga.valore;
|
||||
break;
|
||||
|
||||
case "sBl":
|
||||
valB = valB + riga.valore;
|
||||
break;
|
||||
|
||||
case "sGr":
|
||||
valS = valS + riga.valore;
|
||||
break;
|
||||
@@ -364,7 +476,7 @@ namespace MP_SITE.WebUserControls
|
||||
}
|
||||
//registro fine
|
||||
logger.lg.scriviLog(string.Format("FINE calcolo dati per {0} {1}", _grafico.idxMacchina, rKey));
|
||||
// salvo sequenza in REDIS...
|
||||
// salvo sequenza in REDIS...
|
||||
string rData = JsonConvert.SerializeObject(datiGrouped);
|
||||
// salvo in sessione l'oggetto... secondo durata impostata in web.config.. moltiplicata x numero gg...
|
||||
memLayer.ML.setRSV(rKey, rData, 60 * memLayer.ML.CRI("seqCacheDurMin") * (int)numGG);
|
||||
@@ -373,6 +485,30 @@ namespace MP_SITE.WebUserControls
|
||||
plottaDettaglio(datiGrouped);
|
||||
}
|
||||
|
||||
#endregion Private Methods
|
||||
|
||||
#region Protected Methods
|
||||
|
||||
/// <summary>
|
||||
/// evento click su sequencer: zoom 2X
|
||||
/// </summary>
|
||||
/// <param name="sender"></param>
|
||||
/// <param name="e"></param>
|
||||
protected void Chart1_Click(object sender, ImageMapEventArgs e)
|
||||
{
|
||||
// alzo evento
|
||||
if (eh_richiestaZoom != null)
|
||||
{
|
||||
if (e != null)
|
||||
{
|
||||
ImageMapEventArgs evIM = e;
|
||||
// salvo in sessione
|
||||
memLayer.ML.setSessionVal("zoomCenter", e.PostBackValue);
|
||||
eh_richiestaZoom(this, new EventArgs());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// restituisce true se ci sono dati...
|
||||
/// </summary>
|
||||
@@ -393,97 +529,40 @@ namespace MP_SITE.WebUserControls
|
||||
return answ;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// valore minimo da plottare
|
||||
/// </summary>
|
||||
public double min2plot
|
||||
protected void Page_Load(object sender, EventArgs e)
|
||||
{
|
||||
get
|
||||
doUpdate();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// disegna la tabella
|
||||
/// </summary>
|
||||
protected void plottaGrafico()
|
||||
{
|
||||
// a seconda del numero di eventi da plottare decido la procedura...
|
||||
DataLayer_generic.serieDatiDataTable dati = _grafico.serieDati;
|
||||
try
|
||||
{
|
||||
return _min2plot;
|
||||
// è la somma dei minuti totali dall'inizio alla fine...
|
||||
totale = _grafico.intervallo.fine.Subtract(_grafico.intervallo.inizio).TotalMinutes;
|
||||
}
|
||||
set
|
||||
catch
|
||||
{ }
|
||||
int numCelle = dati.Rows.Count;
|
||||
if (numCelle <= numSplit) // se ho eventi <= _num split....
|
||||
{
|
||||
_min2plot = value;
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
/// titolo del grafico
|
||||
/// </summary>
|
||||
public string titolo
|
||||
{
|
||||
get
|
||||
{
|
||||
return _titolo;
|
||||
}
|
||||
set
|
||||
{
|
||||
_titolo = value;
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
/// larghezza totale del grafico (forzo a zero come minimo...)
|
||||
/// </summary>
|
||||
public int larghezza
|
||||
{
|
||||
get
|
||||
{
|
||||
return _larghezza;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value > 0)
|
||||
{
|
||||
_larghezza = value;
|
||||
}
|
||||
else
|
||||
{
|
||||
_larghezza = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
/// % minuma nel periodo per dire che sia verde
|
||||
/// </summary>
|
||||
public double minVerde
|
||||
{
|
||||
get
|
||||
{
|
||||
return _minVerde;
|
||||
}
|
||||
set
|
||||
{
|
||||
_minVerde = value;
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
/// % minuma nel periodo per dire che sia rosso
|
||||
/// </summary>
|
||||
public double minRosso
|
||||
{
|
||||
get
|
||||
{
|
||||
return _minRosso;
|
||||
}
|
||||
set
|
||||
{
|
||||
_minRosso = value;
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
/// % minuma nel periodo per dire che sia spento
|
||||
/// </summary>
|
||||
public double minSpento
|
||||
{
|
||||
get
|
||||
{
|
||||
return _minSpento;
|
||||
}
|
||||
set
|
||||
{
|
||||
_minSpento = value;
|
||||
plottaDettaglio(dati);
|
||||
}
|
||||
else // altrimenti raggruppo!
|
||||
{
|
||||
plottaGruppi(dati);
|
||||
}
|
||||
}
|
||||
|
||||
#endregion Protected Methods
|
||||
|
||||
#region Public Methods
|
||||
|
||||
/// <summary>
|
||||
/// aggiorna il controllo
|
||||
/// </summary>
|
||||
@@ -499,31 +578,6 @@ namespace MP_SITE.WebUserControls
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// evento di richeista zoom sui dati
|
||||
/// </summary>
|
||||
public event EventHandler eh_richiestaZoom;
|
||||
/// <summary>
|
||||
/// evento click su sequencer: zoom 2X
|
||||
/// </summary>
|
||||
/// <param name="sender"></param>
|
||||
/// <param name="e"></param>
|
||||
protected void Chart1_Click(object sender, ImageMapEventArgs e)
|
||||
{
|
||||
// alzo evento
|
||||
if (eh_richiestaZoom != null)
|
||||
{
|
||||
if (e != null)
|
||||
{
|
||||
ImageMapEventArgs evIM = e;
|
||||
// salvo in sessione
|
||||
memLayer.ML.setSessionVal("zoomCenter", e.PostBackValue);
|
||||
eh_richiestaZoom(this, new EventArgs());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#endregion Public Methods
|
||||
}
|
||||
}
|
||||
+39
-30
@@ -1206,7 +1206,7 @@ namespace MapoDb
|
||||
try
|
||||
{
|
||||
rCall = memLayer.ML.getRSV(currODLHash(idxMacchina));
|
||||
if (rCall != null && rCall != "")
|
||||
if (!string.IsNullOrEmpty(rCall))
|
||||
{
|
||||
answ = rCall;
|
||||
}
|
||||
@@ -1446,7 +1446,7 @@ namespace MapoDb
|
||||
string rawData = memLayer.ML.getRSV(redKey);
|
||||
if (string.IsNullOrEmpty(rawData))
|
||||
{
|
||||
// registro VETO x altri split... 2 minuti
|
||||
// registro VETO x altri split... 5 minuti
|
||||
memLayer.ML.setRSV(redKey, $"Inizio SPLIT-ODL {DateTime.Now}", 300);
|
||||
// calcolo la qta da gestire
|
||||
int qtyConf = 0;
|
||||
@@ -1506,6 +1506,11 @@ namespace MapoDb
|
||||
Thread.Sleep(100);
|
||||
// chiamo splitOdl
|
||||
MapoDbObj.taODL.splitODL(currData[0].IdxODL, 0, idxMacchina, currData[0].TCRichAttr, currData[0].PzPallet, $"Nuovo ODL da forceSplitOdl", true, qtyNew);
|
||||
// elimino eventuale ODL precedente...
|
||||
string rKey = memLayer.ML.redHash($"ODL:{idxMacchina}");
|
||||
memLayer.ML.setRSV(rKey, "");
|
||||
// ricalcola ODL macchina
|
||||
var newOdl = currODL(idxMacchina, true);
|
||||
// attendo 1000 msec
|
||||
Thread.Sleep(1000);
|
||||
adesso = DateTime.Now;
|
||||
@@ -1531,35 +1536,9 @@ namespace MapoDb
|
||||
logger.lg.scriviLog($"Eccezione in forceSplitOdl{Environment.NewLine}{exc}", tipoLog.EXCEPTION);
|
||||
}
|
||||
}
|
||||
return answ;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Aggiornamento parametro per macchina
|
||||
/// </summary>
|
||||
/// <param name="idxMacchina"></param>
|
||||
/// <param name="Original_uid">Parametro macchina come definito in file json</param>
|
||||
/// <param name="reqValue"></param>
|
||||
/// <returns></returns>
|
||||
public bool updateMachineParameter(string idxMacchina, string Original_uid, string reqValue)
|
||||
{
|
||||
bool answ = false;
|
||||
// recupero items...
|
||||
List<objItem> dcList = getCurrObjItems(idxMacchina);
|
||||
// cerco quello da aggiornare
|
||||
objItem trovato = dcList.Find(obj => obj.uid == Original_uid);
|
||||
List<objItem> list2Update = new List<objItem>();
|
||||
// se trovato procedo
|
||||
if (trovato != null)
|
||||
else
|
||||
{
|
||||
// aggiorno valore richiesto + dt richiesta
|
||||
trovato.reqValue = reqValue;
|
||||
trovato.lastRequest = DateTime.Now;
|
||||
list2Update.Add(trovato);
|
||||
upsertCurrObjItems(idxMacchina, list2Update);
|
||||
// accodo in task 2 exe la richiesta di processing
|
||||
addTask4Machine(idxMacchina, taskType.setParameter, trovato.uid);
|
||||
answ = true;
|
||||
logger.lg.scriviLog($"VETO ATTIVO | Richiesto forceSplitOdl per impianto {idxMacchina} | impossibile procedere");
|
||||
}
|
||||
return answ;
|
||||
}
|
||||
@@ -3344,6 +3323,36 @@ namespace MapoDb
|
||||
return answ;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Aggiornamento parametro per macchina
|
||||
/// </summary>
|
||||
/// <param name="idxMacchina"></param>
|
||||
/// <param name="Original_uid">Parametro macchina come definito in file json</param>
|
||||
/// <param name="reqValue"></param>
|
||||
/// <returns></returns>
|
||||
public bool updateMachineParameter(string idxMacchina, string Original_uid, string reqValue)
|
||||
{
|
||||
bool answ = false;
|
||||
// recupero items...
|
||||
List<objItem> dcList = getCurrObjItems(idxMacchina);
|
||||
// cerco quello da aggiornare
|
||||
objItem trovato = dcList.Find(obj => obj.uid == Original_uid);
|
||||
List<objItem> list2Update = new List<objItem>();
|
||||
// se trovato procedo
|
||||
if (trovato != null)
|
||||
{
|
||||
// aggiorno valore richiesto + dt richiesta
|
||||
trovato.reqValue = reqValue;
|
||||
trovato.lastRequest = DateTime.Now;
|
||||
list2Update.Add(trovato);
|
||||
upsertCurrObjItems(idxMacchina, list2Update);
|
||||
// accodo in task 2 exe la richiesta di processing
|
||||
addTask4Machine(idxMacchina, taskType.setParameter, trovato.uid);
|
||||
answ = true;
|
||||
}
|
||||
return answ;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Effettua UPSERT elenco parametri correnti x IOB (se c'è UPDATE, se manca ADD)
|
||||
/// </summary>
|
||||
|
||||
Reference in New Issue
Block a user