32fb68fa68
- Cleanup codice area MapoDb
246 lines
9.3 KiB
C#
246 lines
9.3 KiB
C#
using MapoDb;
|
|
using SteamWare;
|
|
using System;
|
|
|
|
/// <summary>
|
|
/// Summary description for utility
|
|
/// </summary>
|
|
public class utility
|
|
{
|
|
#region Public Fields
|
|
|
|
/// <summary>
|
|
/// oggetto static per fare chiamate sul magazzino
|
|
/// </summary>
|
|
public static utility obj = new utility();
|
|
|
|
#endregion Public Fields
|
|
|
|
#region Public Methods
|
|
|
|
/// <summary>
|
|
/// Effettua la masking di un valore (INT) rispetto ad una BitMask (INT)
|
|
/// </summary>
|
|
/// <param name="valore">Valore da filtrare</param>
|
|
/// <param name="bitMask">BitMask (espresso in valore INT: es 1001 --> 9)</param>
|
|
/// <returns></returns>
|
|
public static int bMaskInt(int valore, int bitMask)
|
|
{
|
|
return valore & bitMask;
|
|
}
|
|
|
|
/// <summary>
|
|
/// restituisce stringa formattata in HH:mm:ss
|
|
/// </summary>
|
|
/// <param name="durataMinuti"></param>
|
|
/// <returns></returns>
|
|
public static string durataEventoHMS(double durataMinuti)
|
|
{
|
|
string durataFormattata = "";
|
|
try
|
|
{
|
|
DateTime tempo = new DateTime();
|
|
tempo = tempo.AddMinutes(durataMinuti);
|
|
durataFormattata = string.Format("{0:00}:{1:00}:{2:00}", tempo.Hour, tempo.Minute, tempo.Second);
|
|
}
|
|
catch
|
|
{
|
|
logger.lg.scriviLog(string.Format("errore calcolo durata: durataMinuti {0}", durataMinuti), tipoLog.EXCEPTION);
|
|
}
|
|
return durataFormattata;
|
|
}
|
|
|
|
/// <summary>
|
|
/// effettua reset del db
|
|
/// </summary>
|
|
public void resetDb()
|
|
{
|
|
taSM.stp_ZZZ_riallineaDateDb();
|
|
}
|
|
|
|
/// <summary>
|
|
/// effettua ultimo step (eliminazione eventi) * 16/15 --> x Syntesy L11 (HW - machining / HW
|
|
/// - power on) elimino se è (15/16) ed i 2 prec sono 15+16...
|
|
/// </summary>
|
|
/// <param name="idxMacchina"></param>
|
|
/// <param name="idxEvento1"></param>
|
|
/// <param name="idxEvento2"></param>
|
|
public void ripulisciStepFive(string idxMacchina, int idxEvento1, int idxEvento2)
|
|
{
|
|
// adesso svuoto i duplicati dalla tab eventi...
|
|
DS_applicazione.EventListRow[] righe = (DS_applicazione.EventListRow[])taEventi.GetDataFiltered(idxMacchina, new DateTime(1999, 1, 1), new DateTime(9999, 1, 1)).Select("", "InizioStato ASC");
|
|
DS_applicazione.EventListRow rigaMenoUno = righe[0];
|
|
DS_applicazione.EventListRow rigaMenoDue = righe[1];
|
|
foreach (DS_applicazione.EventListRow riga in righe)
|
|
{
|
|
if (riga.InizioStato > rigaMenoDue.InizioStato)
|
|
{
|
|
if (riga.IdxTipo == idxEvento1 || riga.IdxTipo == idxEvento2)
|
|
{
|
|
if ((rigaMenoUno.IdxTipo == idxEvento1 && rigaMenoDue.IdxTipo == idxEvento2) || (rigaMenoUno.IdxTipo == idxEvento2 && rigaMenoDue.IdxTipo == idxEvento1))
|
|
{
|
|
taEventi.DeleteQuery(riga.IdxMacchina, riga.InizioStato);
|
|
}
|
|
}
|
|
rigaMenoDue = rigaMenoUno;
|
|
rigaMenoUno = riga;
|
|
}
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// effettua terzo step (eliminazione e ricalcolo durate) pulizia righe tab elenco eventi
|
|
/// * 16/17 --> x caber 1 e 2 (cambio pallet "instabile" su lavorazione)
|
|
/// </summary>
|
|
/// <param name="idxMacchina"></param>
|
|
/// <param name="idxEvento2del"></param>
|
|
public void ripulisciStepFour(string idxMacchina, int idxEventoPre, int idxEvento2del)
|
|
{
|
|
// adesso svuoto i duplicati dalla tab eventi...
|
|
DS_applicazione.EventListRow[] righe = (DS_applicazione.EventListRow[])taEventi.GetDataFiltered(idxMacchina, new DateTime(1999, 1, 1), new DateTime(9999, 1, 1)).Select("", "InizioStato ASC");
|
|
DS_applicazione.EventListRow rigaEvPrev = righe[0];
|
|
foreach (DS_applicazione.EventListRow riga in righe)
|
|
{
|
|
if (riga.IdxTipo == idxEvento2del && rigaEvPrev.IdxTipo == idxEventoPre && riga.CodArticolo == rigaEvPrev.CodArticolo)
|
|
{
|
|
if (riga.InizioStato != rigaEvPrev.InizioStato)
|
|
{
|
|
taEventi.DeleteQuery(riga.IdxMacchina, riga.InizioStato);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
rigaEvPrev = riga;
|
|
}
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// effettua primo step
|
|
/// * se 13,4,17 --> (da lavora a cambioPallet) pulizia righe tab elenco stati x caber 1 e 2
|
|
/// (cambio pallet "instabile" su lavorazione)
|
|
/// </summary>
|
|
/// <param name="idxMacchina"></param>
|
|
/// <param name="idxStatoFrom"></param>
|
|
/// <param name="idxStatoTo"></param>
|
|
/// <param name="idxEventoTo"></param>
|
|
public void ripulisciStepOne(string idxMacchina, int idxStatoFrom, int idxStatoTo, int idxEventoTo)
|
|
{
|
|
// recupero SOLO le righe delle caber,1 alla volta...
|
|
DS_applicazione.DiarioDiBordoDataTable tabella = taStati.GetShortChanging(idxMacchina, 1, idxStatoFrom); // prendo solo le lavorazioni...
|
|
foreach (DS_applicazione.DiarioDiBordoRow riga in tabella)
|
|
{
|
|
// modifico lavorazione in cambiopallet...
|
|
taStati.UpdateStato(idxStatoTo, riga.IdxMacchina, riga.InizioStato);
|
|
taEventi.UpdateTipo(idxEventoTo, riga.IdxMacchina, riga.InizioStato);
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// effettua terzo step (eliminazione e ricalcolo durate) pulizia righe tab elenco eventi
|
|
/// * 17 --> x caber 1 e 2 (cambio pallet "instabile" su lavorazione)
|
|
/// </summary>
|
|
/// <param name="idxMacchina"></param>
|
|
/// <param name="idxEvento2del"></param>
|
|
public void ripulisciStepThree(string idxMacchina, int idxEvento2del)
|
|
{
|
|
// adesso svuoto i duplicati dalla tab eventi...
|
|
DS_applicazione.EventListRow[] righe = (DS_applicazione.EventListRow[])taEventi.GetDataFiltered(idxMacchina, new DateTime(1999, 1, 1), new DateTime(9999, 1, 1)).Select("", "InizioStato ASC");
|
|
DS_applicazione.EventListRow rigaEvPrev = righe[0];
|
|
foreach (DS_applicazione.EventListRow riga in righe)
|
|
{
|
|
if (riga.IdxTipo == idxEvento2del && rigaEvPrev.IdxTipo == idxEvento2del && riga.CodArticolo == rigaEvPrev.CodArticolo)
|
|
{
|
|
if (riga.InizioStato != rigaEvPrev.InizioStato)
|
|
{
|
|
taEventi.DeleteQuery(riga.IdxMacchina, riga.InizioStato);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
rigaEvPrev = riga;
|
|
}
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// effettua secondo step (eliminazione e ricalcolo durate) pulizia righe tab elenco stati
|
|
/// * 14 --> x caber 1 e 2 (cambio pallet "instabile" su lavorazione)
|
|
/// </summary>
|
|
/// <param name="idxMacchina"></param>
|
|
/// <param name="idxStato2reduce"></param>
|
|
public void ripulisciStepTwo(string idxMacchina, int idxStato2reduce)
|
|
{
|
|
DS_applicazione.DiarioDiBordoDataTable tabella = taStati.GetData();
|
|
// inizializzo riga...
|
|
DS_applicazione.DiarioDiBordoRow rigaCumulo = (DS_applicazione.DiarioDiBordoRow)tabella.Rows[0];
|
|
// controllo ogni riga, salvo i valori cumsum e start dalla prima, cancello corrente ed
|
|
// infine inserisco riga di sunto delle contigue...
|
|
double durata;
|
|
foreach (DS_applicazione.DiarioDiBordoRow riga in tabella)
|
|
{
|
|
// verifico se sia identica alla precedente...
|
|
if (rigaCumulo.IdxStato == idxStato2reduce && riga.IdxStato == idxStato2reduce && rigaCumulo.CodArticolo == riga.CodArticolo)
|
|
{
|
|
if (riga.InizioStato != rigaCumulo.InizioStato)
|
|
{
|
|
durata = riga.FineStato.Subtract(rigaCumulo.InizioStato).TotalMinutes;
|
|
taStati.UpdateFineDurata(riga.FineStato, (float)durata, rigaCumulo.IdxMacchina, rigaCumulo.InizioStato);
|
|
// cancello riga duplicata
|
|
taStati.DeleteQuery(riga.IdxMacchina, riga.InizioStato);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
rigaCumulo = riga;
|
|
}
|
|
}
|
|
}
|
|
|
|
#endregion Public Methods
|
|
|
|
#region Protected Constructors
|
|
|
|
protected utility()
|
|
{
|
|
initTA();
|
|
setupConnectionStringBase();
|
|
}
|
|
|
|
#endregion Protected Constructors
|
|
|
|
#region Protected Methods
|
|
|
|
/// <summary>
|
|
/// init dei table adapters
|
|
/// </summary>
|
|
protected void initTA()
|
|
{
|
|
// istanzio oggetto
|
|
taStati = new MapoDb.DS_applicazioneTableAdapters.DiarioDiBordoTableAdapter();
|
|
taEventi = new MapoDb.DS_applicazioneTableAdapters.EventListTableAdapter();
|
|
taSM = new MapoDb.DS_UtilityTableAdapters.StatoMacchineTableAdapter();
|
|
}
|
|
|
|
/// <summary>
|
|
/// effettua setup dei connection strings da web.config delal singola applicazione
|
|
/// </summary>
|
|
protected virtual void setupConnectionStringBase()
|
|
{
|
|
// connections del db
|
|
string _connectionString = memLayer.ML.confReadString("MoonProConnectionString");
|
|
taStati.Connection.ConnectionString = _connectionString;
|
|
taEventi.Connection.ConnectionString = _connectionString;
|
|
taSM.Connection.ConnectionString = _connectionString;
|
|
}
|
|
|
|
#endregion Protected Methods
|
|
|
|
#region Private Fields
|
|
|
|
private MapoDb.DS_applicazioneTableAdapters.EventListTableAdapter taEventi;
|
|
private MapoDb.DS_UtilityTableAdapters.StatoMacchineTableAdapter taSM;
|
|
private MapoDb.DS_applicazioneTableAdapters.DiarioDiBordoTableAdapter taStati;
|
|
|
|
#endregion Private Fields
|
|
} |