Fix metodo AddOptPar
This commit is contained in:
+13
-13
@@ -19,6 +19,7 @@ namespace MP.Core
|
||||
|
||||
public const string redisBaseAddr = "MP:";
|
||||
|
||||
public const string redisConfFlux = redisBaseAddr + "Cache:ConfFlux";
|
||||
public const string redisConfKey = redisBaseAddr + "Cache:Config";
|
||||
|
||||
public const string redisDecNumArtKey = redisBaseAddr + "Cache:DecNumArt";
|
||||
@@ -30,8 +31,6 @@ namespace MP.Core
|
||||
|
||||
public const string redisFluxByMac = redisBaseAddr + "Cache:FluxByMac";
|
||||
public const string redisFluxByMacFirst = redisBaseAddr + "Cache:FluxByMacFirst";
|
||||
public const string redisConfFlux = redisBaseAddr + "Cache:ConfFlux";
|
||||
|
||||
public const string redisFluxLogFilt = redisBaseAddr + "Cache:FluxLogFilt";
|
||||
|
||||
public const string redisGiacenzaList = redisBaseAddr + "Cache:GiacenzaList";
|
||||
@@ -166,17 +165,6 @@ namespace MP.Core
|
||||
return endRounded;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Nome della variabile HASH da utilizzare (dato CodModulo / Server / DB impiegato
|
||||
/// dafunzionalita' DbConfig) + idxMacchina richiesto...
|
||||
/// </summary>
|
||||
/// <param name="idxMacchina"></param>
|
||||
/// <returns></returns>
|
||||
public static RedisKey OptParHash(string idxMacchina)
|
||||
{
|
||||
return (RedisKey)$"{redisBaseAddr}OpPar:{idxMacchina}";
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Nome della variabile HASH da utilizzare (dato CodModulo / Server / DB impiegato da
|
||||
/// funzionalita' DbConfig) + idxMacchina richiesto...
|
||||
@@ -291,6 +279,18 @@ namespace MP.Core
|
||||
return (RedisKey)$"{prefix}:hMSMI:{idxMacchina}";
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Key variabile OptPar calcolata x idxMacchina (ex optParHash)
|
||||
/// </summary>
|
||||
/// <param name="idxMacchina"></param>
|
||||
/// <param name="baseAddr">Chiave override per i valori in caso di dati che accedono al dominio dati di un altra app (es: baseAddr x IO legacy)</param>
|
||||
/// <returns></returns>
|
||||
public static RedisKey RedKeyOptPar(string idxMacchina, string baseAddr = null)
|
||||
{
|
||||
var prefix = (baseAddr ?? redisBaseAddr).TrimEnd(':');
|
||||
return (RedisKey)$"{prefix}:OptPar:{idxMacchina}";
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Hash dati countapezzi macchina
|
||||
/// </summary>
|
||||
|
||||
@@ -26,7 +26,8 @@ namespace MP.IOC.Controllers
|
||||
|
||||
#region Public Methods
|
||||
|
||||
/// <summary> SALVA x macchina KVP parametro/valore:
|
||||
/// <summary>
|
||||
/// SALVA x macchina KVP parametro/valore:
|
||||
/// GET: api/IOB/addOptPar/SIMUL_03?pName=PZREQ&pValue=1000
|
||||
/// </summary> <param name="id"></param> <param name="pName"></param> <param name="pValue"></param>
|
||||
[HttpGet("addOptPar/{id}")]
|
||||
@@ -1284,87 +1285,6 @@ namespace MP.IOC.Controllers
|
||||
return Ok(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>
|
||||
/// <summary>
|
||||
/// Recupera DATI PODL NEXT (=NON AVVIATI) x macchina: (copia di getCurrPODL)
|
||||
///
|
||||
/// GET: IOB/getPOdlNext/SIMUL_03
|
||||
/// </summary>
|
||||
/// <param name="id">id macchina, se "" mostra tutto</param>
|
||||
/// <returns>Json contenente lista oggetti PODL serializzati</returns>
|
||||
#if false
|
||||
/// <summary>
|
||||
/// Recupera DATI PODL x macchina e codice PODL:
|
||||
///
|
||||
/// GET: IOB/getPODL/SIMUL_03?idxPODL=123
|
||||
/// </summary>
|
||||
/// <param name="id"></param>
|
||||
/// <param name="idxPODL">idx del PDL da avviare</param>
|
||||
/// <returns>Json contenente lista oggetti PODL serializzati</returns>
|
||||
public string getPODL(string id, int idxPODL)
|
||||
{
|
||||
// attenzione! poiché nell'URL il carattere "#" viene filtrato ci aspettiamo il
|
||||
// carattere "|" che poi trasformiamo ora in "#"
|
||||
if (!string.IsNullOrEmpty(id))
|
||||
{
|
||||
id = id.Replace("|", "#");
|
||||
}
|
||||
string answ = "";
|
||||
|
||||
// init obj DataLayer
|
||||
DataLayer DataLayerObj = new DataLayer();
|
||||
try
|
||||
{
|
||||
// recupero dati da chaive, ignorando info macchina...
|
||||
var elencoOdl = DataLayerObj.taPODL.getByKey(idxPODL);
|
||||
answ = JsonConvert.SerializeObject(elencoOdl);
|
||||
}
|
||||
catch
|
||||
{ }
|
||||
return answ;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Recupera DATI PODL Running/Actual (AVVIATO e in corso) x macchina:
|
||||
///
|
||||
/// GET: IOB/getPOdlAct/SIMUL_03
|
||||
/// </summary>
|
||||
/// <param name="id">id macchina, se "" mostra tutto</param>
|
||||
/// <returns>Json contenente lista 1 oggetto PODL serializzato, se presente</returns>
|
||||
public string getPOdlAct(string id)
|
||||
{
|
||||
// attenzione! poiché nell'URL il carattere "#" viene filtrato ci aspettiamo il
|
||||
// carattere "|" che poi trasformiamo ora in "#"
|
||||
if (!string.IsNullOrEmpty(id))
|
||||
{
|
||||
id = id.Replace("|", "#");
|
||||
}
|
||||
string answ = "";
|
||||
|
||||
// init obj DataLayer
|
||||
DataLayer DataLayerObj = new DataLayer();
|
||||
try
|
||||
{
|
||||
// recupero IdxOdl corrente
|
||||
string sIdxOdl = DataLayerObj.currODL(id);
|
||||
int IdxOdl = 0;
|
||||
int.TryParse(sIdxOdl, out IdxOdl);
|
||||
// recupero Podl running x macchina ...
|
||||
DS_ProdTempi.PromesseODLDataTable elencoOdl = DataLayerObj.taPODL.getByIdxOdl(IdxOdl);
|
||||
answ = JsonConvert.SerializeObject(elencoOdl);
|
||||
}
|
||||
catch
|
||||
{ }
|
||||
return answ;
|
||||
}
|
||||
#endif
|
||||
|
||||
/// <summary>
|
||||
/// Processa una chiamata GET x salvare UserLog
|
||||
/// GET: IOB/ulog/SIMUL_03?flux=PROG&valore=P0001&dtEve=20161223180600000&dtCurr=20161223180600000&cnt=999&matrOpr=0=0&label=&valNum
|
||||
@@ -1646,7 +1566,7 @@ namespace MP.IOC.Controllers
|
||||
innovazioni.Add(trovato);
|
||||
}
|
||||
// faccio upsert innovations!
|
||||
DService.UpsertCurrObjItems(idxMacc, innovazioni);
|
||||
DService.UpsertCurrObjItemsAsync(idxMacc, innovazioni);
|
||||
Log.Info($"processFLogJsonAsync | {idxMacc} | Updated {innovazioni.Count} par");
|
||||
}
|
||||
catch (Exception exc)
|
||||
|
||||
+14
-112
@@ -177,12 +177,20 @@ namespace MP.IOC.Data
|
||||
public bool AddOptPar4Machine(string idxMacchina, string taskKey, string taskVal)
|
||||
{
|
||||
bool answ = false;
|
||||
RedisKey currHash = Utils.OptParHash(idxMacchina);
|
||||
RedisKey currHash = Utils.RedKeyOptPar(idxMacchina, MpIoNS);
|
||||
try
|
||||
{
|
||||
// leggo tName attuali...
|
||||
var currVal = mOptParMacchina(idxMacchina);
|
||||
currVal[taskKey] = taskVal;
|
||||
// verifico se esista o se vada aggiunto...
|
||||
if (currVal.ContainsKey(taskKey))
|
||||
{
|
||||
currVal[taskKey] = taskVal;
|
||||
}
|
||||
else
|
||||
{
|
||||
currVal.Add(taskKey, taskVal);
|
||||
}
|
||||
RedisSetHashDict(currHash, currVal);
|
||||
answ = true;
|
||||
}
|
||||
@@ -2173,20 +2181,6 @@ namespace MP.IOC.Data
|
||||
return result;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Esegue aggiornamento MachineParamList (ex CurrObjItems)
|
||||
/// </summary>
|
||||
/// <param name="idxMacchina"></param>
|
||||
/// <param name="currData"></param>
|
||||
/// <returns></returns>
|
||||
public bool MachineParamListSet(string idxMacchina, List<ObjItemDTO> currData)
|
||||
{
|
||||
string serVal = JsonConvert.SerializeObject(currData);
|
||||
var currKey = Utils.RedKeyCurrObjItems(idxMacchina, MpIoNS);
|
||||
bool fatto = redisDb.StringSet(currKey, serVal);
|
||||
return fatto;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Esegue aggiornamento MachineParamList (ex CurrObjItems) Async
|
||||
/// </summary>
|
||||
@@ -2201,46 +2195,6 @@ namespace MP.IOC.Data
|
||||
return fatto;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Effettua UPSERT elenco parametri correnti x IOB (se c'è UPDATE, se manca ADD)
|
||||
/// </summary>
|
||||
/// <param name="idxMacchina"></param>
|
||||
/// <param name="innovations"></param>
|
||||
/// <returns></returns>
|
||||
public bool MachineParamUpsert(string idxMacchina, List<ObjItemDTO> innovations)
|
||||
{
|
||||
bool answ = false;
|
||||
if (innovations != null)
|
||||
{
|
||||
Log.Info($"upsertCurrObjItems | idxMacchina: {idxMacchina} | {innovations.Count} innovations");
|
||||
// leggo i valori attuali...
|
||||
List<ObjItemDTO> actValues = MachineParamList(idxMacchina);
|
||||
// per ogni valore passatomi faccio insert o update rispetto elenco valori correnti
|
||||
// in REDIS
|
||||
foreach (var item in actValues)
|
||||
{
|
||||
// cerco nelle innovazioni SE CI SIA il valore...
|
||||
var trovato = innovations.Find(obj => obj.uid == item.uid);
|
||||
// se non trovato nelle innovazioni...
|
||||
if (trovato == null)
|
||||
{
|
||||
// lo ri-aggiungo x non perderlo
|
||||
innovations.Add(item);
|
||||
Log.Trace($"innovations | add | item.uid: {item.uid} | item.value: {item.value}");
|
||||
}
|
||||
// altrimenti aggiorno campo (non trasmesso) name e tengo il resto...
|
||||
else
|
||||
{
|
||||
trovato.name = item.name;
|
||||
Log.Info($"innovations | update | item.uid: {item.uid} | item.value: {item.value} --> {trovato.value} ");
|
||||
}
|
||||
}
|
||||
// serializzo e salvo
|
||||
answ = MachineParamListSet(idxMacchina, innovations);
|
||||
}
|
||||
return answ;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Effettua UPSERT elenco parametri correnti x IOB (se c'è UPDATE, se manca ADD)
|
||||
/// </summary>
|
||||
@@ -2276,56 +2230,11 @@ namespace MP.IOC.Data
|
||||
}
|
||||
}
|
||||
// serializzo e salvo
|
||||
answ = MachineParamListSet(idxMacchina, innovations);
|
||||
answ = await MachineParamListSetAsync(idxMacchina, innovations);
|
||||
}
|
||||
return answ;
|
||||
}
|
||||
|
||||
#if false
|
||||
/// <summary>
|
||||
/// Restituisce valore di una singola chiave del dizionario DatiMacchina
|
||||
/// </summary>
|
||||
/// <param name="idxMacchina"></param>
|
||||
/// <param name="chiave"></param>
|
||||
/// <returns></returns>
|
||||
public string mDatiMacchinaVal(string idxMacchina, string chiave)
|
||||
{
|
||||
string answ = "";
|
||||
try
|
||||
{
|
||||
answ = mDatiMacchine(idxMacchina)[chiave];
|
||||
}
|
||||
catch { }
|
||||
return answ;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Restitusice elenco KVP dei campi DatiMacchine + StatoMacchine per l'impianto indicato
|
||||
/// </summary>
|
||||
/// <param name="idxMacchina"></param>
|
||||
/// <returns></returns>
|
||||
public Dictionary<string, string> mDatiMacchine(string idxMacchina)
|
||||
{
|
||||
// hard coded dimensione vettore DatiMacchine
|
||||
Dictionary<string, string> answ = new Dictionary<string, string>();
|
||||
// ORA recupero da memoria redis...
|
||||
try
|
||||
{
|
||||
var currHash = Utils.RedKeyDatiMacc(idxMacchina, MpIoNS);
|
||||
answ = RedisGetHashDict(currHash);
|
||||
// se è vuoto... leggo da DB e popolo!
|
||||
if (answ.Count == 0)
|
||||
{
|
||||
answ = ResetDatiMacchina(idxMacchina);
|
||||
}
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
Log.Error($"Errore in compilazione dati Macchine x Redis - idxMacchina {idxMacchina}:{Environment.NewLine}{exc}");
|
||||
}
|
||||
return answ;
|
||||
}
|
||||
#endif
|
||||
|
||||
/// <summary>
|
||||
/// Restitusice elenco KVP dei campi DatiMacchine + StatoMacchine per l'impianto indicato
|
||||
@@ -2364,15 +2273,8 @@ namespace MP.IOC.Data
|
||||
// hard coded dimensione vettore DatiMacchine
|
||||
Dictionary<string, string> answ = new Dictionary<string, string>();
|
||||
// ORA recupero da memoria redis...
|
||||
try
|
||||
{
|
||||
RedisKey currHash = Utils.OptParHash(idxMacchina);
|
||||
answ = RedisGetHashDict(currHash);
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
Log.Error($"Errore in compilazione dati OPT PARAM x Redis - idxMacchina {idxMacchina}{Environment.NewLine}{exc}");
|
||||
}
|
||||
RedisKey currHash = Utils.RedKeyOptPar(idxMacchina, MpIoNS);
|
||||
answ = RedisGetHashDict(currHash);
|
||||
return answ;
|
||||
}
|
||||
|
||||
@@ -4123,7 +4025,7 @@ namespace MP.IOC.Data
|
||||
/// <param name="idxMacchina"></param>
|
||||
/// <param name="innovations"></param>
|
||||
/// <returns></returns>
|
||||
public bool UpsertCurrObjItems(string idxMacchina, List<ObjItemDTO> innovations)
|
||||
public async Task<bool> UpsertCurrObjItemsAsync(string idxMacchina, List<ObjItemDTO> innovations)
|
||||
{
|
||||
bool answ = false;
|
||||
if (innovations != null)
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<TargetFramework>net8.0</TargetFramework>
|
||||
<Nullable>enable</Nullable>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Version>6.16.2604.2219</Version>
|
||||
<Version>6.16.2604.2308</Version>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<body>
|
||||
<i>Modulo MP-IOC </i>
|
||||
<h4>Versione: 6.16.2604.2219</h4>
|
||||
<h4>Versione: 6.16.2604.2308</h4>
|
||||
<br /> Note di rilascio:
|
||||
<ul>
|
||||
<li>
|
||||
|
||||
@@ -1 +1 @@
|
||||
6.16.2604.2219
|
||||
6.16.2604.2308
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<item>
|
||||
<version>6.16.2604.2219</version>
|
||||
<version>6.16.2604.2308</version>
|
||||
<url>https://nexus.steamware.net/repository/SWS/MP-IOC/stable/LAST/MP.IOC.zip</url>
|
||||
<changelog>https://nexus.steamware.net/repository/SWS/MP-IOC/stable/LAST/ChangeLog.html</changelog>
|
||||
<mandatory>false</mandatory>
|
||||
|
||||
Reference in New Issue
Block a user