Files
Samuele Locatelli 32fb68fa68 CodeMaid:
- Cleanup codice area MapoDb
2022-12-21 15:11:04 +01:00

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
}