Update x gestione calcoli stats in Redis

This commit is contained in:
Samuele Locatelli
2023-10-23 18:50:00 +02:00
parent 3b82c3efcf
commit 6c563b8b28
9 changed files with 159 additions and 16 deletions
+25 -11
View File
@@ -551,16 +551,16 @@ namespace MP.Data.Controllers
/// <param name="currPeriodo"></param>
/// <param name="valMode"></param>
/// <param name="intReq"></param>
/// <returns></returns>
public async Task<bool> FluxLogDataRedux(string idxMaccSel, List<string> fluxList, Periodo currPeriodo, Enum.ValSelection valMode, Enum.DataInterval intReq, int maxItem)
/// <returns>Restitusice list dei record statistiche raccolti (da integrare a quelli rpesenti in Redis...)</returns>
public async Task<List<DTO.StatDedupDTO>> FluxLogDataRedux(string idxMaccSel, List<string> fluxList, Periodo currPeriodo, Enum.ValSelection valMode, Enum.DataInterval intReq, int maxItem)
{
List<DTO.StatDedupDTO> procStats = new List<DTO.StatDedupDTO>();
Log.Info($"Inizio FluxLogDataRedux | idxMaccSel: {idxMaccSel} | periodo: {currPeriodo.Inizio} --> {currPeriodo.Fine}");
bool fatto = false;
TimeSpan step = TimeSpan.FromHours(1);
switch (intReq)
{
case Enum.DataInterval.minute:
step = TimeSpan.FromMinutes(1.00/ maxItem);
step = TimeSpan.FromMinutes(1.00 / maxItem);
break;
case Enum.DataInterval.hour:
step = TimeSpan.FromHours(1.00 / maxItem);
@@ -571,7 +571,6 @@ namespace MP.Data.Controllers
default:
break;
}
List<LogFLDedupModel> procStats = new List<LogFLDedupModel>();
// setup parametri costanti x stored
var pIdxMacchina = new SqlParameter("@IdxMacchina", idxMaccSel);
@@ -628,9 +627,21 @@ namespace MP.Data.Controllers
listPeriodi.Add(new Periodo(dtCursStart, recEnd.dtEvento));
break;
case Enum.ValSelection.Center:
var recCent = currFlux.Skip(numRec / 2).FirstOrDefault();
// salvo 2 periodi!
int idx = 1;
// per iniziare mi metto a 1/(n+1) rec come step
var recCent = currFlux.Skip(idx / (maxItem + 1)).FirstOrDefault();
listPeriodi.Add(new Periodo(dtCursStart, recCent.dtEvento));
// salvo restanti periodi (se > 1)!
if (maxItem > 1)
{
for (int i = 2; i < maxItem; i++)
{
DateTime dtInizio = recCent.dtEvento;
recCent = currFlux.Skip(i / (maxItem + 1)).FirstOrDefault();
listPeriodi.Add(new Periodo(dtInizio, recCent.dtEvento));
}
}
// aggiungo ultimo...
listPeriodi.Add(new Periodo(recCent.dtEvento.AddSeconds(1), dtCursEnd));
break;
default:
@@ -656,21 +667,24 @@ namespace MP.Data.Controllers
}
// fermo cronometro e salvo su DB...
sw.Stop();
LogFLDedupModel currStat = new LogFLDedupModel()
DTO.StatDedupDTO currStat = new DTO.StatDedupDTO()
{
IdxMacchina = idxMaccSel,
CodFlux = item,
DtRif = DateTime.Now,
Interval = intReq,
Num4Int = maxItem,
NumRec = numRecProc,
ProcTime = sw.Elapsed.TotalSeconds
};
procStats.Add(currStat);
}
#if false
// salvo le statistiche di processing...
fatto = LogFLDedupInsert(procStats);
fatto = LogFLDedupInsert(procStats);
#endif
Log.Info($"FINE FluxLogDataRedux | idxMaccSel: {idxMaccSel} | periodo: {currPeriodo.Inizio} --> {currPeriodo.Fine}");
return fatto;
return procStats;
}
/// <summary>