Update metodi x scrittura/ lettura array parametri

This commit is contained in:
Samuele E. Locatelli
2019-11-10 17:26:59 +01:00
parent af501346f5
commit 2625ab7fa5
2 changed files with 79 additions and 11 deletions
+36 -1
View File
@@ -354,7 +354,42 @@ namespace MP_IO.Controllers
answ = JsonConvert.SerializeObject(currParams);
}
}
catch(Exception exc)
catch (Exception exc)
{
logger.lg.scriviLog($"Errore in getCurrParams{Environment.NewLine}{exc}");
answ = "NO";
}
}
return answ;
}
/// <summary>
/// restituisce elenco parametri CHE RICHIEDONO scrittura su PLC come una List Json di oggetti objItem
/// GET: IOB/getObjItems2Write/SIMUL_03
/// </summary>
/// <param name="id">ID dell'IOB</param>
/// <returns></returns>
public string getObjItems2Write(string id)
{
string answ = "";
if (string.IsNullOrWhiteSpace(id))
{
answ = "Missing IOB";
}
else
{
// procedo a recuperare l'oggetto...
List<objItem> currParams = new List<objItem>();
try
{
// deserializzo.
currParams = DataLayer.getCurrObjItemsPendigWrite(id);
// se != null --> salvo!
if (currParams != null)
{
answ = JsonConvert.SerializeObject(currParams);
}
}
catch (Exception exc)
{
logger.lg.scriviLog($"Errore in getCurrParams{Environment.NewLine}{exc}");
answ = "NO";
+43 -10
View File
@@ -1028,19 +1028,51 @@ namespace MapoDb
public static List<objItem> getCurrObjItems(string idxMacchina)
{
string serVal = memLayer.ML.getRSV(currParametersHash(idxMacchina));
List<objItem> currParameters = new List<objItem>();
List<objItem> actValues = new List<objItem>();
if (serVal != null)
{
try
{
currParameters = JsonConvert.DeserializeObject<List<objItem>>(serVal);
actValues = JsonConvert.DeserializeObject<List<objItem>>(serVal);
}
catch (Exception exc)
{
logger.lg.scriviLog($"Eccezione in deserializzazione getIobCurrParam{Environment.NewLine}{exc}");
}
}
return currParameters;
return actValues;
}
/// <summary>
/// GET elenco parametri che richiedono una WRITE x IOB
/// </summary>
/// <param name="idxMacchina"></param>
/// <returns></returns>
public static List<objItem> getCurrObjItemsPendigWrite(string idxMacchina)
{
string serVal = memLayer.ML.getRSV(currParametersHash(idxMacchina));
List<objItem> actValues = new List<objItem>();
List<objItem> writeValues = new List<objItem>();
if (serVal != null)
{
try
{
actValues = JsonConvert.DeserializeObject<List<objItem>>(serVal);
// cerco e rimuovo parametri sola lettura o SENZA richieste scrittura
foreach (var item in actValues)
{
objItem trovato = actValues.Find(obj => obj.writable == true && !string.IsNullOrEmpty(obj.reqValue));
if (trovato != null)
{
writeValues.Add(trovato);
}
}
}
catch (Exception exc)
{
logger.lg.scriviLog($"Eccezione in deserializzazione getIobCurrParam{Environment.NewLine}{exc}");
}
}
return writeValues;
}
/// <summary>
/// SET elenco parametri correnti x IOB
@@ -1072,18 +1104,19 @@ namespace MapoDb
// leggo i valori attuali...
List<objItem> actValues = getCurrObjItems(idxMacchina);
// per ogni valore passatomi faccio insert o update
foreach (var item in innovations)
foreach (var item in actValues)
{
objItem trovato = actValues.Find(obj => obj.uid == item.uid);
if (trovato != null)
// cerco nelle innovazioni SE CI SIA un valore act
objItem trovato = innovations.Find(obj => obj.uid == item.uid);
// se non trovato...
if (trovato == null)
{
actValues.Remove(trovato);
// aggiungo
innovations.Add(item);
}
// aggiungo
actValues.Add(item);
}
// serializzo e salvo
string serVal = JsonConvert.SerializeObject(actValues);
string serVal = JsonConvert.SerializeObject(innovations);
memLayer.ML.setRSV(currParametersHash(idxMacchina), serVal);
}
return answ;