OK test FixODL postumo con RPO

This commit is contained in:
Samuele Locatelli
2023-11-06 19:09:56 +01:00
parent 51eabbb70e
commit bf8e4fe389
4 changed files with 218 additions and 79 deletions
+58
View File
@@ -768,6 +768,64 @@ namespace MP.Data.Controllers
return dbResult;
}
/// <summary>
/// Setup ODL Postumo
/// </summary>
/// <param name="idxODL"></param>
/// <param name="idxMacchina"></param>
/// <returns></returns>
public bool OdlSetupPostumo(int idxODL, string idxMacchina)
{
bool fatto = false;
using (var dbCtx = new MoonProContext(_configuration))
{
try
{
var IdxODL = new SqlParameter("@idxODL", idxODL);
var IdxMacc = new SqlParameter("@IdxMacchina", idxMacchina);
var result = dbCtx
.Database
.ExecuteSqlRaw("EXEC stp_ODL_insPostumo @idxODL, @IdxMacchina", IdxODL, IdxMacc);
fatto = result != 0;
}
catch (Exception exc)
{
Log.Error($"Eccezione durante OdlSetupPostumo{Environment.NewLine}{exc}");
}
}
return fatto;
}
/// <summary>
/// Setup PODL Postumo
/// </summary>
/// <param name="idxPromOdl"></param>
/// <param name="matrOpr"></param>
/// <param name="idxMacchina"></param>
/// <returns></returns>
public bool OdlSetupPromPostuma(int idxPromOdl, int matrOpr, string idxMacchina)
{
bool fatto = false;
using (var dbCtx = new MoonProContext(_configuration))
{
try
{
var IdxPODL = new SqlParameter("@idxPromessa", idxPromOdl);
var MatrOpr = new SqlParameter("@MatrOpr", matrOpr);
var IdxMacc = new SqlParameter("@IdxMacchina", idxMacchina);
var result = dbCtx
.Database
.ExecuteSqlRaw("EXEC stp_ODL_inizioSetupPromessaPostuma @idxPromessa, @MatrOpr, @IdxMacchina", IdxPODL, MatrOpr, IdxMacc);
fatto = result != 0;
}
catch (Exception exc)
{
Log.Error($"Eccezione durante OdlSetupPromPostuma{Environment.NewLine}{exc}");
}
}
return fatto;
}
/// <summary>
/// Stato prod macchina
/// </summary>
+86 -39
View File
@@ -1033,6 +1033,92 @@ namespace MP.Data.Services
return answ;
}
/// <summary>
/// Elenco ODL data macchina e periodo
/// </summary>
/// <param name="idxMacchina"></param>
/// <param name="dtStart"></param>
/// <param name="dtEnd"></param>
/// <returns></returns>
public async Task<List<ODLModel>> OdlListByMacc(string idxMacchina, DateTime dtStart, DateTime dtEnd)
{
string source = "DB";
Stopwatch sw = new Stopwatch();
sw.Start();
List<ODLModel>? result = new List<ODLModel>();
// cerco in redis...
string currKey = $"{redisBaseKey}:ODL:{idxMacchina}:{dtStart:yyyyMMdd-HHmmss}:{dtEnd:yyyyMMdd-HHmmss}";
RedisValue rawData = await redisDb.StringGetAsync(currKey);
if (rawData.HasValue)
{
result = JsonConvert.DeserializeObject<List<ODLModel>>($"{rawData}");
source = "REDIS";
}
else
{
result = await Task.FromResult(dbTabController.OdlListByMacc(idxMacchina, dtStart, dtEnd));
// riordino
result = result.OrderByDescending(x => x.DataInizio).ToList();
// serializzp e salvo...
rawData = JsonConvert.SerializeObject(result);
await redisDb.StringSetAsync(currKey, rawData, UltraLongCache);
}
if (result == null)
{
result = new List<ODLModel>();
}
sw.Stop();
Log.Debug($"OdlListByMacc | {source} | {sw.Elapsed.TotalMilliseconds}ms");
return result;
}
/// <summary>
/// Setup ODL Postumo
/// </summary>
/// <param name="idxODL"></param>
/// <param name="idxMacchina"></param>
/// <returns></returns>
public async Task<bool> OdlSetupPostumo(int idxODL, string idxMacchina)
{
bool answ = false;
try
{
// inserisco evento
answ = dbTabController.OdlSetupPostumo(idxODL, idxMacchina);
await FlushCache("ODL");
}
catch (Exception exc)
{
string logMsg = $"Eccezione in OdlSetupPostumo | macchina: {idxMacchina} | idxODL: {idxODL}{Environment.NewLine}{exc}";
Log.Error(logMsg);
}
return answ;
}
/// <summary>
/// Setup ODL Postumo
/// </summary>
/// <param name="idxPromOdl"></param>
/// <param name="matrOpr"></param>
/// <param name="idxMacchina"></param>
/// <returns></returns>
public async Task<bool> OdlSetupPromPostuma(int idxPromOdl, int matrOpr, string idxMacchina)
{
bool answ = false;
try
{
// inserisco evento
answ = dbTabController.OdlSetupPromPostuma(idxPromOdl, matrOpr, idxMacchina);
await FlushCache("ODL");
}
catch (Exception exc)
{
string logMsg = $"Eccezione in OdlSetupPromPostuma | macchina: {idxMacchina} | idxPromOdl: {idxPromOdl} | MatrOpr: {matrOpr}{Environment.NewLine}{exc}";
Log.Error(logMsg);
}
return answ;
}
/// <summary>
/// Stato prod macchina
/// </summary>
@@ -1990,45 +2076,6 @@ namespace MP.Data.Services
return result;
}
/// <summary>
/// Elenco ODL data macchina e periodo
/// </summary>
/// <param name="idxMacchina"></param>
/// <param name="dtStart"></param>
/// <param name="dtEnd"></param>
/// <returns></returns>
public async Task<List<ODLModel>> OdlListByMacc(string idxMacchina, DateTime dtStart, DateTime dtEnd)
{
string source = "DB";
Stopwatch sw = new Stopwatch();
sw.Start();
List<ODLModel>? result = new List<ODLModel>();
// cerco in redis...
string currKey = $"{redisBaseKey}:ODL:{idxMacchina}:{dtStart:yyyyMMdd-HHmmss}:{dtEnd:yyyyMMdd-HHmmss}";
RedisValue rawData = await redisDb.StringGetAsync(currKey);
if (rawData.HasValue)
{
result = JsonConvert.DeserializeObject<List<ODLModel>>($"{rawData}");
source = "REDIS";
}
else
{
result = await Task.FromResult(dbTabController.OdlListByMacc(idxMacchina, dtStart, dtEnd));
// riordino
result = result.OrderByDescending(x => x.DataInizio).ToList();
// serializzp e salvo...
rawData = JsonConvert.SerializeObject(result);
await redisDb.StringSetAsync(currKey, rawData, UltraLongCache);
}
if (result == null)
{
result = new List<ODLModel>();
}
sw.Stop();
Log.Debug($"OdlListByMacc | {source} | {sw.Elapsed.TotalMilliseconds}ms");
return result;
}
/// <summary>
/// Elenco ultimi ODL x macchina
/// </summary>