Cambio modalità processing, daily proc...
This commit is contained in:
+91
-16
@@ -66,16 +66,18 @@ namespace MapoDb
|
||||
exeResult answ = new exeResult();
|
||||
StringBuilder sb = new StringBuilder();
|
||||
Stopwatch sw = new Stopwatch();
|
||||
#if false
|
||||
// Oggetto dove verserò i dati
|
||||
List<tsGrouped> listaRecords = new List<tsGrouped>();
|
||||
tsGrouped currRecord = null;
|
||||
List<tsData> valori = new List<tsData>();
|
||||
tsData campione = null;
|
||||
tsData campione = null;
|
||||
#endif
|
||||
DateTime tStamp;
|
||||
string filtro = "";
|
||||
string sort = "idxMacchina ASC, codFlux ASC, dtEvento DESC";
|
||||
string currFlux = "";
|
||||
string currMacc = "";
|
||||
//string filtro = "";
|
||||
//string sort = "idxMacchina ASC, codFlux ASC, dtEvento DESC";
|
||||
//string currFlux = "";
|
||||
//string currMacc = "";
|
||||
int totRec = 0;
|
||||
// faccio ciclo su gg richiesti...
|
||||
for (int i = 0; i < numDays; i++)
|
||||
@@ -84,12 +86,26 @@ namespace MapoDb
|
||||
// leggo da DB i records...
|
||||
sw.Start();
|
||||
sb.AppendLine($"Inizio processing periodo {tStamp} --> {tStamp.AddDays(1)}");
|
||||
var tabDati = DataLayer.obj.taFL.getFilt("", tStamp, tStamp.AddDays(1), true);
|
||||
DS_applicazione.FluxLogDataTable tabDati = DataLayer.obj.taFL.getFiltOrd("", tStamp, tStamp.AddDays(1), true);
|
||||
sb.AppendLine($"Effettuata lettura DB: {tabDati.Count} record in {sw.ElapsedMilliseconds / 1000} sec");
|
||||
sw.Restart();
|
||||
filtro = $"dtEvento >= #{tStamp:yyyy-MM-dd HH:mm:00}# AND dtEvento <= #{tStamp.AddHours(1):yyyy-MM-dd HH:mm:00}#";
|
||||
var tabDay = (DS_applicazione.FluxLogRow[])tabDati.Select(filtro, sort);
|
||||
foreach (var item in tabDay)
|
||||
// chiamo procedura x conversione
|
||||
List<tsGrouped> risultato = convertTable(tabDati, tStamp, timeWindow.day);
|
||||
sb.AppendLine($"Generata collezione di {risultato.Count} record in {sw.ElapsedMilliseconds / 1000} sec");
|
||||
sw.Restart();
|
||||
|
||||
|
||||
// oggetto gestione dati ts raggruppati
|
||||
var collection = database.GetCollection<tsGrouped>("FluxLog");
|
||||
// salvo in blocco
|
||||
collection.InsertMany(risultato);
|
||||
sb.AppendLine($"Salvata su MongoDb collezione di {risultato.Count} record in {sw.ElapsedMilliseconds / 1000} sec");
|
||||
|
||||
#if false
|
||||
//filtro = $"dtEvento >= #{tStamp:yyyy-MM-dd HH:mm:00}# AND dtEvento <= #{tStamp.AddHours(1):yyyy-MM-dd HH:mm:00}#";
|
||||
//var tabDay = (DS_applicazione.FluxLogRow[])tabDati.Select(filtro, sort);
|
||||
//foreach (var item in tabDay)
|
||||
foreach (var item in tabDati)
|
||||
{
|
||||
// controllo flusso x nuovo record...
|
||||
if (item.CodFlux != currFlux || item.IdxMacchina != currMacc)
|
||||
@@ -127,8 +143,10 @@ namespace MapoDb
|
||||
valori.Add(campione);
|
||||
campione = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
#if false
|
||||
// aggiungo ultimo... salvo il VECCHIO record...
|
||||
if (currRecord != null)
|
||||
{
|
||||
@@ -142,17 +160,74 @@ namespace MapoDb
|
||||
collection.InsertMany(listaRecords);
|
||||
sb.AppendLine($"Salvata su MongoDb collezione di {listaRecords.Count} record in {sw.ElapsedMilliseconds / 1000} sec");
|
||||
|
||||
#if false
|
||||
// svuoto memoria...
|
||||
listaRecords = null;
|
||||
valori = null;
|
||||
tabDati = null;
|
||||
#endif
|
||||
|
||||
// restituisco messaggio...
|
||||
answ.esito = esitoExec.ok;
|
||||
answ.message = sb.ToString();
|
||||
return answ;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Converte una tabella dati da DB in una lista di oggetti pronti x salvataggio su MongoDb
|
||||
/// </summary>
|
||||
/// <param name="tabDati">Tabelal dei dati RAW registrati</param>
|
||||
/// <param name="tStamp">Data di riferimento</param>
|
||||
/// <param name="periodo">Periodo del campionamento desiderato (e passato coi dati che sono relativi a tale periodo...)</param>
|
||||
protected List<tsGrouped> convertTable(DS_applicazione.FluxLogDataTable tabDati, DateTime tStamp, timeWindow periodo)
|
||||
{
|
||||
// init oggetti
|
||||
List<tsGrouped> listaRecords = new List<tsGrouped>();
|
||||
tsGrouped currRecord = null;
|
||||
List<tsData> valori = new List<tsData>();
|
||||
tsData campione = null;
|
||||
string currFlux = "";
|
||||
string currMacc = "";
|
||||
|
||||
foreach (var item in tabDati)
|
||||
{
|
||||
// controllo flusso x nuovo record...
|
||||
if (item.CodFlux != currFlux || item.IdxMacchina != currMacc)
|
||||
{
|
||||
// salvo il VECCHIO record...
|
||||
if (currRecord != null)
|
||||
{
|
||||
currRecord.samples = valori;
|
||||
listaRecords.Add(currRecord);
|
||||
valori = null;
|
||||
currRecord = null;
|
||||
}
|
||||
// nuovi record...
|
||||
currFlux = item.CodFlux;
|
||||
currMacc = item.IdxMacchina;
|
||||
valori = new List<tsData>();
|
||||
currRecord = new tsGrouped()
|
||||
{
|
||||
vcMachine = currMacc,
|
||||
vcName = currFlux,
|
||||
timeStamp = tStamp,
|
||||
period = periodo
|
||||
};
|
||||
}
|
||||
campione = new tsData()
|
||||
{
|
||||
vcMachine = item.IdxMacchina,
|
||||
vcName = item.CodFlux,
|
||||
timeStamp = item.dtEvento,
|
||||
strValue = item.Valore
|
||||
};
|
||||
// aggiunta sample ai record prec...
|
||||
if (campione != null && currRecord != null)
|
||||
{
|
||||
valori.Add(campione);
|
||||
campione = null;
|
||||
}
|
||||
}
|
||||
// aggiungo ultimo... salvo il VECCHIO record...
|
||||
if (currRecord != null)
|
||||
{
|
||||
listaRecords.Add(currRecord);
|
||||
}
|
||||
return listaRecords;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user