update decoder x gestione decodifica preliminare parametri (manca DB)
This commit is contained in:
+41
-56
@@ -1,6 +1,7 @@
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using MP.MONO.Core;
|
||||
using MP.MONO.Core.CONF;
|
||||
using MP.MONO.Core.DTO;
|
||||
using MP.MONO.Data;
|
||||
using MP.MONO.Data.Controllers;
|
||||
using MP.MONO.Data.DbModels;
|
||||
@@ -209,8 +210,10 @@ void AlarmsValPipe_EA_NewMessage(object? sender, EventArgs e)
|
||||
}
|
||||
}
|
||||
}
|
||||
catch
|
||||
{ }
|
||||
catch (Exception exc)
|
||||
{
|
||||
Log.Error($"Eccezione in AlarmsValPipe_EA_NewMessage:{Environment.NewLine}{exc}");
|
||||
}
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
@@ -253,77 +256,59 @@ void ParamsValPipe_EA_NewMessage(object? sender, EventArgs e)
|
||||
#endif
|
||||
|
||||
// verifico codici ricevuti
|
||||
var paramsList = JsonConvert.DeserializeObject<Dictionary<string, uint>>(currArgs.newMessage);
|
||||
var paramsList = JsonConvert.DeserializeObject<Dictionary<string, double>>(currArgs.newMessage);
|
||||
|
||||
if (paramsList != null)
|
||||
{
|
||||
// variabili accessorie
|
||||
List<string> activeAlarmList = new List<string>();
|
||||
List<AlarmLogModel> alarmLogList = new List<AlarmLogModel>();
|
||||
|
||||
// rileggo da REDIS la conf attuale allarmi da area ALARMS_SETT_KEY, altrimenti uso quella letta inizialmente da conf base
|
||||
List<BaseAlarmConf>? currAlarmsConf = new List<BaseAlarmConf>();
|
||||
string rawData = redisDb.StringGet(Constants.ALARMS_SETT_KEY);
|
||||
// se trovati uso questi...
|
||||
// recupero elenco parametri salvati in redis...
|
||||
List<DisplayDataDTO>? redisParamConf = new List<DisplayDataDTO>();
|
||||
List<DisplayDataDTO> updatedParams = new List<DisplayDataDTO>();
|
||||
string rawData = redisDb.StringGet(Constants.PARAMS_CONF_KEY);
|
||||
if (!string.IsNullOrEmpty(rawData))
|
||||
{
|
||||
currAlarmsConf = JsonConvert.DeserializeObject<List<BaseAlarmConf>>(rawData);
|
||||
}
|
||||
// altrimenti uso quelli di default inizialmente letti
|
||||
else
|
||||
{
|
||||
currAlarmsConf = alarmsConf;
|
||||
}
|
||||
if (currAlarmsConf != null)
|
||||
{
|
||||
// ciclo x ogni bank di allarmi configurato
|
||||
foreach (var alarmData in currAlarmsConf)
|
||||
redisParamConf = JsonConvert.DeserializeObject<List<DisplayDataDTO>>(rawData);
|
||||
// se ho i parametri...
|
||||
if (redisParamConf != null)
|
||||
{
|
||||
// recupero valore allarme
|
||||
var bankVal = paramsList.FirstOrDefault(x => x.Key == alarmData.memAddr);
|
||||
uint actVal = !string.IsNullOrEmpty(bankVal.Key) ? bankVal.Value : 0;
|
||||
// valutare se dividere in 2 da 16... FIXME TODO
|
||||
var bankAlarmList = AlarmsManager.processData(alarmData.memAddr, alarmData.messages, alarmData.silenceMask[0], alarmData.disableMask[0], alarmData.alarmsState[0], ref actVal);
|
||||
// salvo nuovo valore in oggetto...
|
||||
if (alarmData.alarmsState[0] != actVal)
|
||||
// ciclo x ogni valore ricevuto da message service...
|
||||
foreach (var item in paramsList)
|
||||
{
|
||||
alarmData.alarmsState[0] = actVal;
|
||||
// aggiungo...
|
||||
activeAlarmList.AddRange(bankAlarmList);
|
||||
|
||||
AlarmLogModel newAlarm = new AlarmLogModel()
|
||||
// cerco il parametro corrispondente...
|
||||
var currParam = redisParamConf.FirstOrDefault(x => x.Title == item.Key);
|
||||
if (currParam != null)
|
||||
{
|
||||
MachineId = MachineId,
|
||||
DtRif = DateTime.Now,
|
||||
MemAddress = bankVal.Key,
|
||||
Index = alarmData != null ? alarmData.index : 0,
|
||||
Status = alarmData != null ? (uint)bankVal.Value & alarmData.silenceMask[0] & alarmData.disableMask[0] : (uint)bankVal.Value,
|
||||
ValDecoded = bankAlarmList.Count > 0 ? string.Join(", ", bankAlarmList) : "All OK"
|
||||
};
|
||||
alarmLogList.Add(newAlarm);
|
||||
currParam.ValueNum = item.Value;
|
||||
currParam.Value = $"{item.Value.ToString(currParam.DisplFormat)}";
|
||||
// aggiungo a lista...
|
||||
updatedParams.Add(currParam);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// salvo status aggiornato allarme...
|
||||
redisDb.StringSet(Constants.ALARMS_SETT_KEY, JsonConvert.SerializeObject(currAlarmsConf));
|
||||
//// salvo status aggiornato parametri...
|
||||
//redisDb.StringSet(Constants.PARAMS_CURR_KEY, JsonConvert.SerializeObject(redisParamConf));
|
||||
|
||||
string updRawVal = JsonConvert.SerializeObject(redisParamConf);
|
||||
|
||||
// invio sulla message pipeline corretta TUTTI i parametri aggiornati serializzati
|
||||
paramsPipe.saveAndSendMessage(Constants.PARAMS_CURR_KEY, updRawVal);
|
||||
|
||||
// serializzo l'elenco allarmi...
|
||||
string serAlarms = "[]";
|
||||
serAlarms = JsonConvert.SerializeObject(activeAlarmList);
|
||||
// invio sulla message pipeline corretta TUTTI gli allarmi serializzati
|
||||
alarmsPipe.saveAndSendMessage(Constants.ALARM_CURR_KEY, serAlarms);
|
||||
if (dbController != null)
|
||||
{
|
||||
// salvo nel DB lo stato dei bank di allarme
|
||||
foreach (var dbItem in alarmLogList)
|
||||
{
|
||||
_ = dbController.AlarmLogInsert(dbItem).Result;
|
||||
}
|
||||
// effettuo update in DB se ho
|
||||
//// salvo nel DB lo stato dei bank di allarme
|
||||
//foreach (var dbItem in alarmLogList)
|
||||
//{
|
||||
// _ = dbController.AlarmLogInsert(dbItem).Result;
|
||||
//}
|
||||
}
|
||||
}
|
||||
}
|
||||
catch
|
||||
{ }
|
||||
catch (Exception exc)
|
||||
{
|
||||
Log.Error($"Eccezione in ParamsValPipe_EA_NewMessage:{Environment.NewLine}{exc}");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user