Merge branch 'Release/MpTab_DP_03'

This commit is contained in:
Samuele Locatelli
2025-03-13 16:48:44 +01:00
7 changed files with 226 additions and 111 deletions
+7 -1
View File
@@ -168,8 +168,14 @@
}
</div>
<div class="col d-flex justify-content-between">
@if (!showPOdlData)
@if (CurrOdl != null && !showPOdlData)
{
<div class="px-0 small">
Inizio:
</div>
<div class="px-0 text-end fw-bold">
@($"{CurrOdl.DataInizio:ddd yyyy.MM.dd HH:mm:ss}")
</div>
}
else
{
+154 -45
View File
@@ -328,6 +328,17 @@ namespace MP_TAB3.Components
await CheckAttr();
await advStep(currStep++);
await FlushMpIoOdlCache();
// notifica...
if (isMulti)
{
await E_MachSel.InvokeAsync(idxMaccAltraTav);
await Task.Delay(100);
}
else
{
TabDServ.NotifyDataInvalidated(IdxMaccSel);
}
await E_MachSel.InvokeAsync(IdxMaccSel);
isProcessing = false;
await InvokeAsync(StateHasChanged);
}
@@ -369,6 +380,17 @@ namespace MP_TAB3.Components
await CheckAttr();
await advStep(currStep++);
await FlushMpIoOdlCache();
// notifica...
if (isMulti)
{
await E_MachSel.InvokeAsync(idxMaccAltraTav);
await Task.Delay(100);
}
else
{
TabDServ.NotifyDataInvalidated(IdxMaccSel);
}
await E_MachSel.InvokeAsync(IdxMaccSel);
// chiudo update...
isProcessing = false;
await InvokeAsync(StateHasChanged);
@@ -410,6 +432,18 @@ namespace MP_TAB3.Components
await RefreshData();
await CheckAttr();
await advStep(currStep++);
await FlushMpIoOdlCache();
// notifica...
if (isMulti)
{
await E_MachSel.InvokeAsync(idxMaccAltraTav);
await Task.Delay(100);
}
else
{
TabDServ.NotifyDataInvalidated(IdxMaccSel);
}
await E_MachSel.InvokeAsync(IdxMaccSel);
// chiudo update...
isProcessing = false;
await InvokeAsync(StateHasChanged);
@@ -523,6 +557,17 @@ namespace MP_TAB3.Components
await CheckAttr();
await advStep(currStep++);
await FlushMpIoOdlCache();
// notifica...
if (isMulti)
{
await E_MachSel.InvokeAsync(idxMaccAltraTav);
await Task.Delay(100);
}
else
{
TabDServ.NotifyDataInvalidated(IdxMaccSel);
}
await E_MachSel.InvokeAsync(IdxMaccSel);
// chiudo update...
isProcessing = false;
await InvokeAsync(StateHasChanged);
@@ -546,7 +591,7 @@ namespace MP_TAB3.Components
***************************************************/
// preparo gestione progress display
MaxVal = 11;
MaxVal = 10;
int currStep = 0;
// elimino dati status...
isProcessing = true;
@@ -630,47 +675,10 @@ namespace MP_TAB3.Components
sb.AppendLine(String.Format(evText, idxODL_curr));
await processaEvento(IdxMaccSel, idxEvento, sb.ToString(), idxODL_curr);
await advStep(currStep++);
// indico INIZIO SETUP su REDIS come EXE della macchina...
string ts = string.Format("{0:yyMMdd}T{0:HHmmss.fff}Z", DateTime.Now);
string outData = $"TS:{ts}|MATR:{MatrOpr}|ODL:{idxODL_curr}";
// aggiungo articolo, commessa, richiesta pezzi...
try
{
var datiODL = await TabDServ.OdlCurrByMacc(IdxMaccSel, true);
string setArtVal = $"{datiODL.CodArticolo}";
string setPzCommVal = $"{datiODL.NumPezzi}";
string setCommVal = $"ODL{datiODL.IdxOdl:00000000}";
// FIXME TODO: scrivere come sotto? testare valvital x linea LASCO
TabDServ.addTask4Machine(IdxMaccSel, taskType.startSetup, outData);
TabDServ.addTask4Machine(IdxMaccSel, taskType.setArt, setArtVal);
TabDServ.addTask4Machine(IdxMaccSel, taskType.setComm, setCommVal);
TabDServ.addTask4Machine(IdxMaccSel, taskType.setPzComm, setPzCommVal);
TabDServ.MachineParamUpdate(IdxMaccSel, "setArt", setArtVal);
TabDServ.MachineParamUpdate(IdxMaccSel, "setComm", setCommVal);
TabDServ.MachineParamUpdate(IdxMaccSel, "setPzComm", setPzCommVal);
TabDServ.addTask4Machine(IdxMaccSel, taskType.setParameter, "ForceUpdate");
await advStep(currStep++);
// li aggiungo ANCHE sui PLC slave se ci sono...
if (isMaster)
{
// calcolo gli slave...
var slaveList = SMServ.ListM2S
.Where(x => x.IdxMacchina.Equals(IdxMaccSel, StringComparison.InvariantCultureIgnoreCase))
.ToList();
foreach (var machine in slaveList)
{
outData = $"TS:{ts}|MATR:{MatrOpr}|Master Machine: {IdxMaccSel}";
// invio chiusura attrezzaggio
TabDServ.addTask4Machine(machine.IdxMacchinaSlave, taskType.startSetup, outData);
TabDServ.addTask4Machine(machine.IdxMacchinaSlave, taskType.setArt, setArtVal);
TabDServ.addTask4Machine(machine.IdxMacchinaSlave, taskType.setComm, setCommVal);
TabDServ.addTask4Machine(machine.IdxMacchinaSlave, taskType.setPzComm, setPzCommVal);
TabDServ.MachineParamUpdate(machine.IdxMacchinaSlave, "setArt", setArtVal);
TabDServ.MachineParamUpdate(machine.IdxMacchinaSlave, "setComm", setCommVal);
TabDServ.MachineParamUpdate(machine.IdxMacchinaSlave, "setPzComm", setPzCommVal);
TabDServ.addTask4Machine(machine.IdxMacchinaSlave, taskType.setParameter, "ForceUpdate");
}
}
await DoSendTaskOdl(idxODL_curr);
await advStep(currStep++);
}
catch (Exception exc)
@@ -739,6 +747,17 @@ namespace MP_TAB3.Components
await CheckAttr();
inAttr = true;
tcRichAttr = tmpTCR;
// notifica...
if (isMulti)
{
await E_MachSel.InvokeAsync(idxMaccAltraTav);
await Task.Delay(100);
}
else
{
TabDServ.NotifyDataInvalidated(IdxMaccSel);
}
await E_MachSel.InvokeAsync(IdxMaccSel);
isProcessing = false;
await InvokeAsync(StateHasChanged);
}
@@ -797,7 +816,7 @@ namespace MP_TAB3.Components
}
// verifica conferma produzione
datiProdAct = await TabDServ.StatoProdMacchina(IdxMaccSel, DateTime.Now);
checkConfProd();
await checkConfProd();
}
protected async Task ProdEnd()
@@ -929,6 +948,17 @@ namespace MP_TAB3.Components
await RefreshData();
await CheckAttr();
await advStep(currStep++);
// notifica...
if (isMulti)
{
await E_MachSel.InvokeAsync(idxMaccAltraTav);
await Task.Delay(100);
}
else
{
TabDServ.NotifyDataInvalidated(IdxMaccSel);
}
await E_MachSel.InvokeAsync(IdxMaccSel);
isProcessing = false;
await InvokeAsync(StateHasChanged);
}
@@ -1065,6 +1095,10 @@ namespace MP_TAB3.Components
}
}
/// <summary>
/// Esegue split ODL corrente
/// </summary>
/// <returns></returns>
protected async Task SplitOdl()
{
if (!await JSRuntime.InvokeAsync<bool>("confirm", $"Confermi richiesta riattrezzaggio ODL, con conseguente chiusura ODL corrente + split nuovo ODL con TC {tcRichAttr:N3}?"))
@@ -1075,7 +1109,7 @@ namespace MP_TAB3.Components
SDService.MachProdStRem(IdxMaccSel);
// preparo gestione progress display
MaxVal = 9;
MaxVal = 10;
int currStep = 0;
await advStep(currStep);
@@ -1123,6 +1157,23 @@ namespace MP_TAB3.Components
await advStep(currStep++);
showSplitOdlRiattr = false;
await ReloadXDL(true);
// invio richiesta reset NUOVO ODL...
if (IdxOdl > 0)
{
await DoSendTaskOdl(IdxOdl);
}
await advStep(currStep++);
// notifica...
if (isMulti)
{
await E_MachSel.InvokeAsync(idxMaccAltraTav);
await Task.Delay(100);
}
else
{
TabDServ.NotifyDataInvalidated(IdxMaccSel);
}
await E_MachSel.InvokeAsync(IdxMaccSel);
// chiudo update...
isProcessing = false;
await InvokeAsync(StateHasChanged);
@@ -1480,13 +1531,20 @@ namespace MP_TAB3.Components
}
}
private void checkConfProd()
private async Task checkConfProd()
{
// calcolo conferma prod...
needConfProd = RecMSE != null && datiProdAct != null;
if (datiProdAct != null)
{
needConfProd = (datiProdAct.Pz2RecTot > 0 || datiProdAct.Pz2RecScarto != 0) && !isSlave;
needConfProd = (datiProdAct.Pz2RecTot > 0 || datiProdAct.Pz2RecScarto > 0 || datiProdAct.Pz2RecRilav > 0) && !isSlave;
// se è multi controllo anche altra tavola...
if (isMulti && !needConfProd)
{
// verifica conferma produzione
var datiProdAltra = await TabDServ.StatoProdMacchina(idxMaccAltraTav, DateTime.Now);
needConfProd = (datiProdAltra.Pz2RecTot > 0 || datiProdAltra.Pz2RecScarto > 0 || datiProdAltra.Pz2RecRilav > 0) && !isSlave;
}
if (needConfProd)
{
StateHasChanged();
@@ -1523,7 +1581,7 @@ namespace MP_TAB3.Components
// recupero pz da confermare
datiProdAct = await TabDServ.StatoProdMacchina(IdxMaccSel, adesso);
checkConfProd();
await checkConfProd();
if (datiProdAct.Pz2RecTot > 0)
{
@@ -1578,6 +1636,57 @@ namespace MP_TAB3.Components
}
}
/// <summary>
/// Invio set informazioni x segnalare setupODL
/// </summary>
/// <param name="idxODL_curr"></param>
/// <returns></returns>
private async Task DoSendTaskOdl(int idxODL_curr)
{
// indico INIZIO SETUP su REDIS come EXE della macchina...
string ts = string.Format("{0:yyMMdd}T{0:HHmmss.fff}Z", DateTime.Now);
string outData = $"TS:{ts}|MATR:{MatrOpr}|ODL:{idxODL_curr}";
var datiODL = await TabDServ.OdlCurrByMacc(IdxMaccSel, true);
string setArtVal = $"{datiODL.CodArticolo}";
string setPzCommVal = $"{datiODL.NumPezzi}";
string setCommVal = $"ODL{datiODL.IdxOdl:00000000}";
// FIXME TODO: scrivere come sotto? testare valvital x linea LASCO
TabDServ.addTask4Machine(IdxMaccSel, taskType.startSetup, outData);
TabDServ.addTask4Machine(IdxMaccSel, taskType.setArt, setArtVal);
TabDServ.addTask4Machine(IdxMaccSel, taskType.setComm, setCommVal);
TabDServ.addTask4Machine(IdxMaccSel, taskType.setPzComm, setPzCommVal);
TabDServ.addTask4Machine(IdxMaccSel, taskType.forceResetPzCount, "0");
TabDServ.MachineParamUpdate(IdxMaccSel, "setArt", setArtVal);
TabDServ.MachineParamUpdate(IdxMaccSel, "setComm", setCommVal);
TabDServ.MachineParamUpdate(IdxMaccSel, "setPzComm", setPzCommVal);
TabDServ.MachineParamUpdate(IdxMaccSel, "forceResetPzCount", "0");
TabDServ.addTask4Machine(IdxMaccSel, taskType.setParameter, "ForceUpdate");
//await advStep(currStep++);
// li aggiungo ANCHE sui PLC slave se ci sono...
if (isMaster)
{
// calcolo gli slave...
var slaveList = SMServ.ListM2S
.Where(x => x.IdxMacchina.Equals(IdxMaccSel, StringComparison.InvariantCultureIgnoreCase))
.ToList();
foreach (var machine in slaveList)
{
outData = $"TS:{ts}|MATR:{MatrOpr}|Master Machine:{IdxMaccSel}";
// invio chiusura attrezzaggio
TabDServ.addTask4Machine(machine.IdxMacchinaSlave, taskType.startSetup, outData);
TabDServ.addTask4Machine(machine.IdxMacchinaSlave, taskType.setArt, setArtVal);
TabDServ.addTask4Machine(machine.IdxMacchinaSlave, taskType.setComm, setCommVal);
TabDServ.addTask4Machine(machine.IdxMacchinaSlave, taskType.setPzComm, setPzCommVal);
TabDServ.addTask4Machine(machine.IdxMacchinaSlave, taskType.forceResetPzCount, "0");
TabDServ.MachineParamUpdate(machine.IdxMacchinaSlave, "setArt", setArtVal);
TabDServ.MachineParamUpdate(machine.IdxMacchinaSlave, "setComm", setCommVal);
TabDServ.MachineParamUpdate(machine.IdxMacchinaSlave, "setPzComm", setPzCommVal);
TabDServ.MachineParamUpdate(machine.IdxMacchinaSlave, "forceResetPzCount", "0");
TabDServ.addTask4Machine(machine.IdxMacchinaSlave, taskType.setParameter, "ForceUpdate");
}
}
}
private void fixTcNotePzPallet(bool reloadFromOdl)
{
if (tcRichAttr == 0 || string.IsNullOrEmpty(noteAttr) || PzPallet == 0)
@@ -1683,7 +1792,7 @@ namespace MP_TAB3.Components
{
var rawData = await TabDServ.PezziProdMacchina(IdxMaccSel);
datiProdAct = await TabDServ.StatoProdMacchina(IdxMaccSel, DateTime.Now);
checkConfProd();
await checkConfProd();
Log.Trace("OdlMan.ReloadData | check checkConfProd done");
}
}
+61 -61
View File
@@ -8,26 +8,6 @@ namespace MP_TAB3.Components
{
public partial class ProdConfirm
{
#region Private Fields
private static Logger Log = LogManager.GetCurrentClassLogger();
private bool chkPzBuoniNeg = false;
private bool confRett = false;
private bool enableMagPrint = false;
private bool enablePzProdLasciati = false;
private bool isMulti = false;
private string lblOut = "";
private int modoConfProd = 0;
#endregion Private Fields
#region Public Properties
/// <summary>
@@ -95,7 +75,6 @@ namespace MP_TAB3.Components
protected StatoProdModel? datiProdAct { get; set; } = null;
protected DateTime dtFine { get; set; } = DateTime.Today.AddMonths(-1);
protected DateTime dtInizio { get; set; } = DateTime.Today.AddMonths(-2);
/// <summary>
@@ -145,7 +124,6 @@ namespace MP_TAB3.Components
protected MessageService MsgServ { get; set; } = null!;
protected int numPz2Rec { get; set; } = 0;
protected int numPzBuoniConf { get; set; } = 0;
/// <summary>
@@ -172,13 +150,10 @@ namespace MP_TAB3.Components
}
protected int numPzProdotti { get; set; } = 0;
protected int numPzProdotti2Rec { get; set; } = 0;
protected int numPzRilav2Rec { get; set; } = 0;
protected int numPzRilavConf { get; set; } = 0;
protected int numPzScaConf { get; set; } = 0;
protected int numPzScarto2Rec { get; set; } = 0;
/// <summary>
@@ -226,31 +201,6 @@ namespace MP_TAB3.Components
#endregion Protected Properties
#region Private Properties
private bool confProdActive { get; set; } = false;
private MappaStatoExpl? currRecMSE { get; set; } = null;
private DateTime dtReqUpdate { get; set; } = DateTime.Now;
private string IdxMaccSel { get; set; } = "";
private bool isProcessing { get; set; } = false;
private MappaStatoExpl? lastRecMSE { get; set; } = null;
private int MatrOpr
{
get => MsgServ.MatrOpr;
}
private int numPzLasc { get; set; } = 0;
private bool showConfirm { get; set; } = true;
#endregion Private Properties
#region Protected Methods
/// <summary>
@@ -296,21 +246,24 @@ namespace MP_TAB3.Components
{
numPzLasciati = 0;
}
// verifico se la macchina sia configurata tra le MSFD...
if (SMServ.DictMacchMulti.ContainsKey(RecMSE.IdxMacchina))
if (!confDone)
{
isMulti = SMServ.DictMacchMulti[RecMSE.IdxMacchina] == 1;
}
IdxMaccSel = RecMSE.IdxMacchina;
if (isMulti)
{
var idxMSel = MsgServ.UserPrefGet(IdxMaccSel);
if (!string.IsNullOrEmpty(idxMSel))
// verifico se la macchina sia configurata tra le MSFD...
if (SMServ.DictMacchMulti.ContainsKey(RecMSE.IdxMacchina))
{
IdxMaccSel = idxMSel;
isMulti = SMServ.DictMacchMulti[RecMSE.IdxMacchina] == 1;
}
IdxMaccSel = RecMSE.IdxMacchina;
if (isMulti)
{
var idxMSel = MsgServ.UserPrefGet(IdxMaccSel);
if (!string.IsNullOrEmpty(idxMSel))
{
IdxMaccSel = idxMSel;
}
}
}
//salvo lastRec...
// salvo lastRec...
lastRecMSE = RecMSE;
dtReqUpdate = DateTime.Now.AddMilliseconds(100);
await DoUpdate();
@@ -382,6 +335,53 @@ namespace MP_TAB3.Components
#endregion Protected Methods
#region Private Fields
private static Logger Log = LogManager.GetCurrentClassLogger();
private bool chkPzBuoniNeg = false;
private bool confRett = false;
private bool enableMagPrint = false;
private bool enablePzProdLasciati = false;
private bool confDone = false;
private bool isMulti = false;
private bool isSlave = false;
private string lblOut = "";
private int modoConfProd = 0;
#endregion Private Fields
#region Private Properties
private bool confProdActive { get; set; } = false;
private MappaStatoExpl? currRecMSE { get; set; } = null;
private DateTime dtReqUpdate { get; set; } = DateTime.Now;
private string IdxMaccSel { get; set; } = "";
private bool isProcessing { get; set; } = false;
private MappaStatoExpl? lastRecMSE { get; set; } = null;
private int MatrOpr
{
get => MsgServ.MatrOpr;
}
private int numPzLasc { get; set; } = 0;
private bool showConfirm { get; set; } = true;
#endregion Private Properties
#region Private Methods
/// <summary>
+1 -1
View File
@@ -3,7 +3,7 @@
<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<Nullable>enable</Nullable>
<Version>6.16.2503.1314</Version>
<Version>6.16.2503.1316</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.2503.1314</h4>
<h4>Versione: 6.16.2503.1316</h4>
<br /> Note di rilascio:
<ul>
<li>
+1 -1
View File
@@ -1 +1 @@
6.16.2503.1314
6.16.2503.1316
+1 -1
View File
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<item>
<version>6.16.2503.1314</version>
<version>6.16.2503.1316</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>