32fb68fa68
- Cleanup codice area MapoDb
101 lines
3.2 KiB
C#
101 lines
3.2 KiB
C#
using MapoSDK;
|
|
using MongoDB.Driver;
|
|
using SteamWare;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
|
|
namespace MapoDb
|
|
{
|
|
/// <summary>
|
|
/// Classe gestione ALLARMI come eventi speciali (documenti registrati su MongoDb)
|
|
/// </summary>
|
|
public class AlarmsArchive
|
|
{
|
|
#region Public Fields
|
|
|
|
/// <summary>
|
|
/// Singleton gestione istanza AlarmsManager
|
|
/// </summary>
|
|
public static AlarmsArchive man = new AlarmsArchive();
|
|
|
|
#endregion Public Fields
|
|
|
|
#region Public Constructors
|
|
|
|
/// <summary>
|
|
/// Classe gestione archivio allarmi
|
|
/// </summary>
|
|
public AlarmsArchive()
|
|
{
|
|
database = memLayer.ML.getMongoDatabase("MAPO");
|
|
DataLayerObj = new DataLayer();
|
|
}
|
|
|
|
#endregion Public Constructors
|
|
|
|
#region Public Methods
|
|
|
|
/// <summary>
|
|
/// Crea una registrazione incidente su MongoDB
|
|
/// </summary>
|
|
/// <param name="idxMacchina"></param>
|
|
/// <param name="elencoAllarmi"></param>
|
|
/// <param name="lastMinutes">numero di minuti precedenti di dati FluxLog da includere</param>
|
|
/// <returns></returns>
|
|
public int createAlarmEvent(string idxMacchina, List<alarmData> elencoAllarmi, int lastMinutes)
|
|
{
|
|
int answ = 0;
|
|
string currDateStr = "";
|
|
int startYMD = 0;
|
|
DateTime adesso = DateTime.Now;
|
|
int anno = adesso.Year;
|
|
currDateStr = adesso.ToString("yyyyMMdd");
|
|
int.TryParse(currDateStr, out startYMD);
|
|
// in primis recupero contatore allarmi correnti, lo incremento salvandolo e genero
|
|
// nuovo documento...
|
|
var collAlarmStats = database.GetCollection<alarmStats>("AlarmStats");
|
|
var builderAlarmStat = Builders<alarmStats>.Filter;
|
|
var filtThisYear = builderAlarmStat.Eq(u => u.year, anno);
|
|
|
|
var datiCorrenti = collAlarmStats.Find(filtThisYear);
|
|
var collAlarmEvents = database.GetCollection<alarmEvent>("AlarmEvents");
|
|
|
|
List<rawData> lastFluxLog = new List<rawData>();
|
|
DS_applicazione.FluxLogDataTable tabDati = DataLayerObj.taFL.getFiltOrd(idxMacchina, adesso.AddMinutes(-lastMinutes), adesso, true, "");
|
|
if (tabDati.Count > 0)
|
|
{
|
|
// chiamo procedura x conversione
|
|
lastFluxLog = FluxArchive.man.convertTable(tabDati, adesso, timeWindow.free);
|
|
}
|
|
alarmEvent nuovoAllarme = new alarmEvent()
|
|
{
|
|
yCurr = anno,
|
|
yCounter = answ,
|
|
dateYMD = startYMD,
|
|
started = DateTime.Now,
|
|
blackBoxData = lastFluxLog,
|
|
activeConditions = elencoAllarmi
|
|
};
|
|
|
|
collAlarmEvents.InsertOne(nuovoAllarme);
|
|
|
|
return answ;
|
|
}
|
|
|
|
#endregion Public Methods
|
|
|
|
#region Private Fields
|
|
|
|
/// <summary>
|
|
/// Database corrente MongoDB
|
|
/// </summary>
|
|
private IMongoDatabase database;
|
|
|
|
/// <summary>
|
|
/// Oggetto privato datalayer
|
|
/// </summary>
|
|
private DataLayer DataLayerObj;
|
|
|
|
#endregion Private Fields
|
|
}
|
|
} |