testing tra grafico e metodo JS + cache in redis x json calcolato

This commit is contained in:
Samuele E. Locatelli
2018-06-04 23:40:10 +02:00
parent d21bf9902b
commit 752a334dfb
6 changed files with 145 additions and 42 deletions
+41 -17
View File
@@ -2,6 +2,7 @@ using MapoDb;
using SteamWare;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
/// <summary>
@@ -27,6 +28,24 @@ public struct objSequencer
/// </summary>
public DataLayer_generic.serieDatiDataTable serieDati;
}
/// <summary>
/// oggetto dati per grafico sequencer
/// </summary>
public struct jsonVisJS
{
/// <summary>
/// idx macchina
/// </summary>
public string idxMacchina;
/// <summary>
/// intervallo analisi
/// </summary>
public intervalloDate intervallo;
/// <summary>
/// serie dei dati già elaborati come json stream
/// </summary>
public string jsonDati;
}
/// <summary>
/// oggetto dati per grafico TempiCiclo
@@ -45,8 +64,8 @@ public struct objTempiCiclo
}
//public struct intervallo
//{
// public DateTime inizio;
// public DateTime fine;
// public DateTime inizio;
// public DateTime fine;
//}
public class resoconti
{
@@ -80,7 +99,7 @@ public class resoconti
{
//if (_StatoMacchine == null)
//{
// _StatoMacchine = taStatoMacchine.GetData();
// _StatoMacchine = taStatoMacchine.GetData();
//}
if (!memLayer.ML.isInCacheObject("StatoMacchine"))
{
@@ -545,14 +564,18 @@ public class resoconti
/// <returns></returns>
public List<visjsDsItem> sequenzaDatiVisJS(string idxMacchina, intervalloDate _intervallo, int numSplit)
{
List<visjsDsItem> sequenza = new List<visjsDsItem>();
Stopwatch stopwatch = new Stopwatch();
DateTime start = DateTime.Now;
// leggo i dati e costituisco una collezione...
List<visjsDsItem> sequenza = new List<visjsDsItem>();
int i = 0;
if (idxMacchina != null && idxMacchina != "")
{
logger.lg.scriviLog("inizio WS");
stopwatch.Restart();
// seleziono i dati...
DS_applicazione.DiarioDiBordoDataTable tabSeq = taDiarioDiBordo.GetSequenza(idxMacchina, _intervallo.inizio, _intervallo.fine);
logger.lg.scriviLog(string.Format("Letta tabella: {0} rec, {1} msec", tabSeq.Rows.Count, stopwatch.ElapsedMilliseconds));
// se ho troppi dati faccio la riduzione dei dati, MAX numSplit...
if (tabSeq.Rows.Count > numSplit)
@@ -560,11 +583,12 @@ public class resoconti
double sogliaMin = _intervallo.fine.Subtract(_intervallo.inizio).TotalMinutes / numSplit;
tabSeq = riduciSeq(tabSeq, sogliaMin);
}
logger.lg.scriviLog(string.Format("Riduzione seq fatta: {0} rec, {1} msec", tabSeq.Count, stopwatch.ElapsedMilliseconds));
// ora converto in oggetto definitivo x vis.js
sequenza = tabSeq.AsEnumerable().Select(riga => new visjsDsItem
{
//id = i,
//content = riga.CodArticolo,
content = "",//riga.CodArticolo,
start = riga.InizioStato.ToString("yyyy-MM-dd HH:mm:ss"),
end = riga.FineStato.ToString("yyyy-MM-dd HH:mm:ss"),
group = "1", // per mostrare multi macchine
@@ -574,23 +598,23 @@ public class resoconti
foreach (var item in sequenza)
{
item.content = i.ToString();
//item.content = i.ToString();
item.id = i;
i++;
}
logger.lg.scriviLog(string.Format("Conversione oggetto eseguita: {0} rec, {1} msec", sequenza.Count, stopwatch.ElapsedMilliseconds));
#if false
// faccio trim x primo evento...
if (_sequenza[0].start < _intervallo.inizio)
{
_sequenza.serieDati[0].valore -= _intervallo.inizio.Subtract(_sequenza.serieDati[0].timeData).TotalMinutes;
_sequenza.serieDati[0].timeData = _intervallo.inizio;
}
//...e ultimo evento...
int numValori = _sequenza.serieDati.Count - 1;
_sequenza.serieDati[numValori].valore = _intervallo.fine.Subtract(_sequenza.serieDati[numValori].timeData).TotalMinutes;
// faccio trim x primo evento...
if (_sequenza[0].start < _intervallo.inizio)
{
_sequenza.serieDati[0].valore -= _intervallo.inizio.Subtract(_sequenza.serieDati[0].timeData).TotalMinutes;
_sequenza.serieDati[0].timeData = _intervallo.inizio;
}
//...e ultimo evento...
int numValori = _sequenza.serieDati.Count - 1;
_sequenza.serieDati[numValori].valore = _intervallo.fine.Subtract(_sequenza.serieDati[numValori].timeData).TotalMinutes;
#endif
}
if (sequenza.Count > numSplit) sequenza.RemoveRange(0, sequenza.Count - numSplit);
return sequenza;
}
/// <summary>
@@ -684,7 +708,7 @@ public class resoconti
//riga.InizioStato = _t_0;
copia.ImportRow(riga);
// modifico inizio stato...
((DS_applicazione.DiarioDiBordoRow)copia.Rows[copia.Rows.Count -1]).InizioStato = _t_0;
((DS_applicazione.DiarioDiBordoRow)copia.Rows[copia.Rows.Count - 1]).InizioStato = _t_0;
// reset dei contatori...
valRigaCum = 0.0;