From b1508cdc1afa326c96f3c601e1cf6d50a4e39a5c Mon Sep 17 00:00:00 2001 From: Samuele Locatelli Date: Thu, 13 Mar 2025 16:48:18 +0100 Subject: [PATCH] Fix condizioni chiusura setup ODL con refresh --- MP-TAB3/Components/OdlMan.razor.cs | 179 ++++++++++++++++++++++------- 1 file changed, 135 insertions(+), 44 deletions(-) diff --git a/MP-TAB3/Components/OdlMan.razor.cs b/MP-TAB3/Components/OdlMan.razor.cs index fcce2e18..ecf8fd17 100644 --- a/MP-TAB3/Components/OdlMan.razor.cs +++ b/MP-TAB3/Components/OdlMan.razor.cs @@ -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); @@ -633,7 +678,7 @@ namespace MP_TAB3.Components // aggiungo articolo, commessa, richiesta pezzi... try { - await sendTaskOdl(idxODL_curr); + await DoSendTaskOdl(idxODL_curr); await advStep(currStep++); } catch (Exception exc) @@ -702,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); } @@ -892,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); } @@ -1028,6 +1095,10 @@ namespace MP_TAB3.Components } } + /// + /// Esegue split ODL corrente + /// + /// protected async Task SplitOdl() { if (!await JSRuntime.InvokeAsync("confirm", $"Confermi richiesta riattrezzaggio ODL, con conseguente chiusura ODL corrente + split nuovo ODL con TC {tcRichAttr:N3}?")) @@ -1089,9 +1160,20 @@ namespace MP_TAB3.Components // invio richiesta reset NUOVO ODL... if (IdxOdl > 0) { - await sendTaskOdl(IdxOdl); + 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); @@ -1554,6 +1636,57 @@ namespace MP_TAB3.Components } } + /// + /// Invio set informazioni x segnalare setupODL + /// + /// + /// + 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) @@ -1746,48 +1879,6 @@ namespace MP_TAB3.Components fixTcNotePzPallet(reloadFromOdl); } - private async Task sendTaskOdl(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.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"); - } - } - } - private async Task updateIdxOdl() { // sistemo idxOdl...