Update TAB3:

- inserita dataora forzata x chiusura ODL
- ritardo 50ms prima di procedere
This commit is contained in:
Samuele Locatelli
2025-09-10 15:19:21 +02:00
parent 808e2a0b15
commit 32d370fbd3
7 changed files with 103 additions and 97 deletions
+12 -5
View File
@@ -277,7 +277,8 @@ namespace MP_TAB3.Components
await advStep(currStep++);
// processo x macchina selezionata
await TabDServ.OdlFineProd(idxODLCurr, IdxMaccSel);
await TabDServ.OdlFineProd(idxODLCurr, IdxMaccSel, DateTime.Now);
await Task.Delay(50);
await advStep(currStep++);
string evText = "Registrata ANNULLAMENTO ATTREZZAGGIO per ODL {0}";
@@ -296,7 +297,8 @@ namespace MP_TAB3.Components
sb.AppendLine("---");
var tabOdlAltra = await TabDServ.OdlCurrByMacc(idxMaccAltraTav, true);
int idxOdlAltra = tabOdlAltra.IdxOdl;
await TabDServ.OdlFineProd(idxOdlAltra, idxMaccAltraTav);
await Task.Delay(50);
await TabDServ.OdlFineProd(idxOdlAltra, idxMaccAltraTav, DateTime.Now);
sb.AppendLine(String.Format(evText, idxOdlAltra));
await processaEvento(idxMaccAltraTav, idxEvento, String.Format(evText, idxOdlAltra), idxOdlAltra);
@@ -706,7 +708,8 @@ namespace MP_TAB3.Components
if (idxOdlAltra > 0)
{
sb.AppendLine("---");
await TabDServ.OdlFineProd(idxOdlAltra, idxMaccAltraTav);
await TabDServ.OdlFineProd(idxOdlAltra, idxMaccAltraTav, DateTime.Now);
await Task.Delay(50);
evText = $"Registrato inizio attrezzaggio per ODL {idxOdlAltra} (setup seconda tavola)";
sb.AppendLine(evText);
await processaEvento(idxMaccAltraTav, idxEvento, evText, idxOdlAltra);
@@ -849,7 +852,8 @@ namespace MP_TAB3.Components
try
{
// processo x macchina selezionata
await TabDServ.OdlFineProd(idxODLCurr, IdxMaccSel);
await TabDServ.OdlFineProd(idxODLCurr, IdxMaccSel, DateTime.Now);
await Task.Delay(50);
string evText = "Registrata fine produzione per ODL {0}";
StringBuilder sb = new StringBuilder();
sb.AppendLine(String.Format(evText, idxODLCurr));
@@ -861,7 +865,8 @@ namespace MP_TAB3.Components
sb.AppendLine("---");
var tabOdlAltra = await TabDServ.OdlCurrByMacc(idxMaccAltraTav, true);
int idxOdlAltra = tabOdlAltra.IdxOdl;
await TabDServ.OdlFineProd(idxOdlAltra, idxMaccAltraTav);
await TabDServ.OdlFineProd(idxOdlAltra, idxMaccAltraTav, DateTime.Now);
await Task.Delay(50);
sb.AppendLine(String.Format(evText, idxOdlAltra));
await processaEvento(idxMaccAltraTav, idxEvento, String.Format(evText, idxOdlAltra), idxOdlAltra);
}
@@ -1202,10 +1207,12 @@ namespace MP_TAB3.Components
private bool approvTCEnabled = false;
private bool confRett = true;
private double currVal = 0;
/// <summary>
/// Tempo di delay x simulare cambio idxMaccSub
/// </summary>
private int delayUpd = 1000;
private List<string> emailAdmDest = new List<string>();
private bool enableAnnullaSetup = false;
+1 -1
View File
@@ -3,7 +3,7 @@
<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<Nullable>enable</Nullable>
<Version>6.16.2509.917</Version>
<Version>6.16.2509.1015</Version>
<ImplicitUsings>enable</ImplicitUsings>
<RootNamespace>MP_TAB3</RootNamespace>
</PropertyGroup>
+1 -1
View File
@@ -1,6 +1,6 @@
<body>
<i>Modulo MAPOSPEC </i>
<h4>Versione: 6.16.2509.917</h4>
<h4>Versione: 6.16.2509.1015</h4>
<br /> Note di rilascio:
<ul>
<li>
+1 -1
View File
@@ -1 +1 @@
6.16.2509.917
6.16.2509.1015
+1 -1
View File
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<item>
<version>6.16.2509.917</version>
<version>6.16.2509.1015</version>
<url>https://nexus.steamware.net/repository/SWS/MP-TAB3/stable/LAST/MP-TAB3.zip</url>
<changelog>https://nexus.steamware.net/repository/SWS/MP-TAB3/stable/LAST/ChangeLog.html</changelog>
<mandatory>false</mandatory>
+25 -25
View File
@@ -509,6 +509,27 @@ namespace MP.Data.Controllers
_configuration = null;
}
/// <summary>
/// Restituisce elenco RC filtrato
/// </summary>
/// <param name="idxMacchina"></param>
/// <param name="dataFrom"></param>
/// <param name="dataTo"></param>
/// <returns></returns>
public List<ElencoConfermeProdModel> ElencoConfProdFilt(string idxMacchina, DateTime dataFrom, DateTime dataTo)
{
List<ElencoConfermeProdModel> dbResult = new List<ElencoConfermeProdModel>();
using (var dbCtx = new MoonProContext(_configuration))
{
dbResult = dbCtx
.DbSetElConfProd
.Where(x => x.IdxMacchina == idxMacchina && (dataFrom <= x.DataOraConf && x.DataOraConf <= dataTo))
.AsNoTracking()
.ToList();
}
return dbResult;
}
/// <summary>
/// Fix ODL per Elenco Lotti
/// </summary>
@@ -1200,8 +1221,9 @@ namespace MP.Data.Controllers
/// </summary>
/// <param name="idxODL"></param>
/// <param name="idxMacchina"></param>
/// <param name="dtRif"></param>
/// <returns></returns>
public bool OdlFineProd(int idxODL, string idxMacchina)
public bool OdlFineProd(int idxODL, string idxMacchina, DateTime dtRif)
{
bool fatto = false;
using (var dbCtx = new MoonProContext(_configuration))
@@ -1210,9 +1232,10 @@ namespace MP.Data.Controllers
{
var IdxODL = new SqlParameter("@IdxODL", idxODL);
var IdxMacc = new SqlParameter("@IdxMacchina", idxMacchina);
var DataChiusura = new SqlParameter("@DataChiusura", dtRif);
var result = dbCtx
.Database
.ExecuteSqlRaw("EXEC stp_ODL_fineProd @IdxODL, @IdxMacchina", IdxODL, IdxMacc);
.ExecuteSqlRaw("EXEC stp_ODL_fineProd @IdxODL, @IdxMacchina, @DataChiusura", IdxODL, IdxMacc, DataChiusura);
fatto = result != 0;
}
catch (Exception exc)
@@ -1717,29 +1740,6 @@ namespace MP.Data.Controllers
return dbResult;
}
/// <summary>
/// Restituisce elenco RC filtrato
/// </summary>
/// <param name="idxMacchina"></param>
/// <param name="dataFrom"></param>
/// <param name="dataTo"></param>
/// <returns></returns>
public List<ElencoConfermeProdModel> ElencoConfProdFilt(string idxMacchina, DateTime dataFrom, DateTime dataTo)
{
List<ElencoConfermeProdModel> dbResult = new List<ElencoConfermeProdModel>();
using (var dbCtx = new MoonProContext(_configuration))
{
dbResult = dbCtx
.DbSetElConfProd
.Where (x => x.IdxMacchina== idxMacchina && (dataFrom <= x.DataOraConf && x.DataOraConf <= dataTo))
.AsNoTracking()
.ToList();
}
return dbResult;
}
/// <summary>
/// Registra controllo
/// </summary>
+62 -63
View File
@@ -653,28 +653,43 @@ namespace MP.Data.Services
return SteamCrypto.DecryptString(encData, Constants.passPhrase);
}
private bool _disposed = false;
protected override void Dispose(bool disposing)
/// <summary>
/// Restituisce elenco ElencoConfermeProd filtrato e async
/// </summary>
/// <param name="idxMacchina"></param>
/// <param name="dataFrom"></param>
/// <param name="dataTo"></param>
/// <returns></returns>
public async Task<List<ElencoConfermeProdModel>> ElencoConfProdFiltAsync(string idxMacchina, DateTime dataFrom, DateTime dataTo)
{
if (!_disposed)
// setup parametri costanti
string source = "DB";
Stopwatch sw = new Stopwatch();
sw.Start();
List<ElencoConfermeProdModel> result = new List<ElencoConfermeProdModel>();
// cerco in redisConn...
string currKey = $"{redisBaseKey}:ElConfProd:{idxMacchina}:{dataFrom:yyyyyMMdd-HHmm}:{dataFrom:yyyyyMMdd-HHmm}";
RedisValue rawData = await redisDb.StringGetAsync(currKey);
if (rawData.HasValue)
{
if (disposing)
{
// Free managed resources here
dbTabController.Dispose();
dbIocController.Dispose();
dbInveController.Dispose();
CurrConfig.Clear();
connStrParams.Clear();
esCollect.Dispose();
}
// Free unmanaged resources here
_disposed = true;
result = JsonConvert.DeserializeObject<List<ElencoConfermeProdModel>>($"{rawData}") ?? new List<ElencoConfermeProdModel>();
source = "REDIS";
}
// Call base class implementation.
base.Dispose(disposing);
else
{
result = dbTabController.ElencoConfProdFilt(idxMacchina, dataFrom, dataTo);
// serializzo e salvo...
rawData = JsonConvert.SerializeObject(result);
await redisDb.StringSetAsync(currKey, rawData, UltraLongCache);
}
sw.Stop();
string callName = $"ElencoConfProdFiltAsync.{source}";
int numRec = esCollect.RecordCall(callName, sw.Elapsed.TotalMilliseconds);
if (numRec >= nRecLog)
{
Log.Debug(esCollect.GetCallSum(callName, true));
}
return result;
}
/// <summary>
@@ -1867,19 +1882,20 @@ namespace MP.Data.Services
/// </summary>
/// <param name="idxODL"></param>
/// <param name="idxMacchina"></param>
/// <param name="dtRif"></param>
/// <returns></returns>
public async Task<bool> OdlFineProd(int idxODL, string idxMacchina)
public async Task<bool> OdlFineProd(int idxODL, string idxMacchina, DateTime dtRif)
{
bool answ = false;
try
{
// inserisco evento
answ = dbTabController.OdlFineProd(idxODL, idxMacchina);
answ = dbTabController.OdlFineProd(idxODL, idxMacchina, dtRif);
await FlushOdlCache();
}
catch (Exception exc)
{
string logMsg = $"Eccezione in OdlFineProd | idxODL: {idxODL} | idxMacchina: {idxMacchina}{Environment.NewLine}{exc}";
string logMsg = $"Eccezione in OdlFineProd | idxODL: {idxODL} | idxMacchina: {idxMacchina} | dtRif: {dtRif}{Environment.NewLine}{exc}";
Log.Error(logMsg);
}
return answ;
@@ -2595,46 +2611,6 @@ namespace MP.Data.Services
return result;
}
/// <summary>
/// Restituisce elenco ElencoConfermeProd filtrato e async
/// </summary>
/// <param name="idxMacchina"></param>
/// <param name="dataFrom"></param>
/// <param name="dataTo"></param>
/// <returns></returns>
public async Task<List<ElencoConfermeProdModel>> ElencoConfProdFiltAsync(string idxMacchina, DateTime dataFrom, DateTime dataTo)
{
// setup parametri costanti
string source = "DB";
Stopwatch sw = new Stopwatch();
sw.Start();
List<ElencoConfermeProdModel> result = new List<ElencoConfermeProdModel>();
// cerco in redisConn...
string currKey = $"{redisBaseKey}:ElConfProd:{idxMacchina}:{dataFrom:yyyyyMMdd-HHmm}:{dataFrom:yyyyyMMdd-HHmm}";
RedisValue rawData = await redisDb.StringGetAsync(currKey);
if (rawData.HasValue)
{
result = JsonConvert.DeserializeObject<List<ElencoConfermeProdModel>>($"{rawData}")?? new List<ElencoConfermeProdModel>();
source = "REDIS";
}
else
{
result = dbTabController.ElencoConfProdFilt(idxMacchina, dataFrom, dataTo);
// serializzo e salvo...
rawData = JsonConvert.SerializeObject(result);
await redisDb.StringSetAsync(currKey, rawData, UltraLongCache);
}
sw.Stop();
string callName = $"ElencoConfProdFiltAsync.{source}";
int numRec = esCollect.RecordCall(callName, sw.Elapsed.TotalMilliseconds);
if (numRec >= nRecLog)
{
Log.Debug(esCollect.GetCallSum(callName, true));
}
return result;
}
/// <summary>
/// Registra controllo
/// </summary>
@@ -3927,6 +3903,29 @@ namespace MP.Data.Services
#region Protected Methods
protected override void Dispose(bool disposing)
{
if (!_disposed)
{
if (disposing)
{
// Free managed resources here
dbTabController.Dispose();
dbIocController.Dispose();
dbInveController.Dispose();
CurrConfig.Clear();
connStrParams.Clear();
esCollect.Dispose();
}
// Free unmanaged resources here
_disposed = true;
}
// Call base class implementation.
base.Dispose(disposing);
}
protected void setExpDays()
{
ConfigGetVal("TAB_dtTimerScadLogin", ref expMinutes);
@@ -3937,7 +3936,7 @@ namespace MP.Data.Services
#region Private Fields
private static Logger Log = LogManager.GetCurrentClassLogger();
private bool _disposed = false;
private string CodModulo = "";
private string CodModuloParam = "";