From 2176cbeb8852855a7635d5b03389b4dcbd6573f1 Mon Sep 17 00:00:00 2001 From: Samuele Locatelli Date: Tue, 10 Oct 2023 18:56:50 +0200 Subject: [PATCH] Fix e test conferma fermate riqualificate --- MP-TAB-SERV/Components/NotesEditor.razor.cs | 18 ++- MP-TAB-SERV/MP-TAB-SERV.csproj | 2 +- MP-TAB-SERV/Pages/ProdStop.razor.cs | 116 +++++++++++--------- MP-TAB-SERV/Resources/ChangeLog.html | 2 +- MP-TAB-SERV/Resources/VersNum.txt | 2 +- MP-TAB-SERV/Resources/manifest.xml | 2 +- MP.Data/Controllers/MpTabController.cs | 94 +++++++++++++++- MP.Data/Services/TabDataService.cs | 38 ++++++- 8 files changed, 214 insertions(+), 60 deletions(-) diff --git a/MP-TAB-SERV/Components/NotesEditor.razor.cs b/MP-TAB-SERV/Components/NotesEditor.razor.cs index 10b11275..30135b33 100644 --- a/MP-TAB-SERV/Components/NotesEditor.razor.cs +++ b/MP-TAB-SERV/Components/NotesEditor.razor.cs @@ -88,12 +88,24 @@ namespace MP_TAB_SERV.Components #region Protected Methods - public void doCancel() + protected void doCancel() { DoReset(); } - public async Task doSave() + /// + /// Forza salvataggio impostando data-ora + /// + /// + /// + public async Task ForceSave(DateTime dtRif) + { + DateSel = dtRif; + // ora salvo + await doSave(); + } + + protected async Task doSave() { // registro evento EventListModel newRec = new EventListModel() @@ -142,7 +154,7 @@ namespace MP_TAB_SERV.Components /// Determina se insert sia Realtime o batch con DataOra (in base a diff tra DataOra /// selezionata e realtime, se superiore ad X minuti NON � realtime) /// - public bool insRealtime + protected bool insRealtime { get { diff --git a/MP-TAB-SERV/MP-TAB-SERV.csproj b/MP-TAB-SERV/MP-TAB-SERV.csproj index 5d91b08e..f85cea51 100644 --- a/MP-TAB-SERV/MP-TAB-SERV.csproj +++ b/MP-TAB-SERV/MP-TAB-SERV.csproj @@ -3,7 +3,7 @@ net6.0 enable - 6.16.2310.1016 + 6.16.2310.1018 enable MP_TAB_SERV diff --git a/MP-TAB-SERV/Pages/ProdStop.razor.cs b/MP-TAB-SERV/Pages/ProdStop.razor.cs index 00340524..da6d4def 100644 --- a/MP-TAB-SERV/Pages/ProdStop.razor.cs +++ b/MP-TAB-SERV/Pages/ProdStop.razor.cs @@ -3,6 +3,7 @@ using MP.Data; using MP.Data.DatabaseModels; using MP.Data.Services; using MP_TAB_SERV.Components; +using NLog; namespace MP_TAB_SERV.Pages { @@ -11,6 +12,10 @@ namespace MP_TAB_SERV.Pages #region Protected Fields protected int dltMinRealtime = 1; + protected int minAnticipoRicalcolo = 1; + protected bool rdm_ChkOnly = false; + protected int rdm_nEvCheck = 1; + protected int rdm_nEvStep = 1; #endregion Protected Fields @@ -103,74 +108,75 @@ namespace MP_TAB_SERV.Pages } else { - // chiamo registrazione commento... - if (noteEdit != null) - { - await noteEdit.doSave(); - } - -#if false // in primis disabilito insert... - DataLayerObj.taStatoMacchine.setInsEnabled(idxMacchina, false); + TabServ.MacchinaSetInsEnab(IdxMacc, false); + // calcolo evento - string evento = IdxEv.ToString(); + string evento = $"{IdxEv}"; string commento = ""; try { - evento = DataLayerObj.taAnagEventi.GetByIdx(IdxEv)[0].Nome.Replace("Barcode - ", ""); + evento = rigaEvento.Nome.Replace("Barcode - ", ""); } catch { } // genero stringa pseudo-univoca - string codRich = string.Format("{0:yyMMddHHmmss}-{1}", DateTime.Now, IdxEv); + string codRich = $"{DateTime.Now:yyMMddHHmmss}-{IdxEv}"; // x prima cosa scrivo un evento tipo "1" x chiudere la durata appena prima // dell'evento successivo try { // cerco da 1 sec DOPO evento... - DS_applicazione.DiarioDiBordoDataTable tabNext = controllerMapo.nextEventoImpiantoFrom(idxMacchina, dataOraEv.AddSeconds(1)); + var tabNext = TabServ.DDB_getNext(IdxMacc, DtRif.AddSeconds(1)); + + DateTime nextEvDT = tabNext != null ? tabNext.InizioStato : DateTime.Now.AddMinutes(-1); - DateTime nextEvDT = DateTime.Now; - if (tabNext.Rows.Count > 0) - { - nextEvDT = tabNext[0].InizioStato; - } - // se non trovo chiusura evento inserisco a 1 minuto prima di adesso la chiusura... - else - { - nextEvDT = DateTime.Now.AddMinutes(-1); - } // fix salvo la dichiarazione di chiusura - commento = string.Format("999 - M.Lav EndEvt: {0} [{1}]", evento, codRich); - DataLayerObj.scriviRigaEventoBarcode(idxMacchina, 1, rigaStato.CodArticolo, commento, DataLayerObj.MatrOpr, rigaStato.pallet, nextEvDT.AddSeconds(-1), DateTime.Now); // 1 hard-coded x resettare - } - catch - { } - // update commento! - commento = string.Format("999 - Dich StartEvt: {0} [{1}]", evento, codRich); - // recupero data/ora evento da inserire (quella selezionata) ed AGGIUNGO 1 - // sec!!! cos� rimane traccia - DataLayerObj.scriviRigaEventoBarcode(idxMacchina, IdxEv, rigaStato.CodArticolo, commento, DataLayerObj.MatrOpr, rigaStato.pallet, dataOraEv.AddSeconds(1), DateTime.Now); - // eseguo ricalcolo! - DateTime startRicalcolo = dataOraEv.AddMinutes(memLayer.ML.CRI("minAnticipoRicalcolo")); + commento = $"999 - M.Lav EndEvt: {evento} [{codRich}]"; + // 1 hard-coded x resettare + EventListModel newRec = new EventListModel() + { + IdxMacchina = IdxMacc, + InizioStato = nextEvDT.AddSeconds(-1), + IdxTipo = 1, + CodArticolo = rigaStato.CodArticolo, + Value = commento, + MatrOpr = MatrOpr, + pallet = rigaStato.pallet + }; + await TabServ.EvListInsert(newRec, MP.Data.Objects.Enums.tipoInputEvento.barcode); + + // update commento apertura! + commento = $"999 - Dich StartEvt: {evento} [{codRich}]"; + newRec = new EventListModel() + { + IdxMacchina = IdxMacc, + InizioStato = DtRif.AddSeconds(1), + IdxTipo = IdxEv, + CodArticolo = rigaStato.CodArticolo, + Value = commento, + MatrOpr = MatrOpr, + pallet = rigaStato.pallet + }; + await TabServ.EvListInsert(newRec, MP.Data.Objects.Enums.tipoInputEvento.barcode); + // eseguo ricalcolo! + DateTime startRicalcolo = DtRif.AddMinutes(minAnticipoRicalcolo); + // eseguo ricalcolo periodo.. + TabServ.DDB_DoRecalc(IdxMacc, startRicalcolo, 1, rdm_nEvStep, rdm_nEvCheck, rdm_ChkOnly); + // chiamo registrazione commento... + if (noteEdit != null) + { + await noteEdit.ForceSave(DtRif.AddSeconds(5)); + DtRif = DateTime.Now; + } + } + catch (Exception exc) + { + Log.Error($"Eccezione in fase di riqualifica fermi{Environment.NewLine}{exc}"); + } - // leggo parametri x esecuzione... - int rdm_nEvStep = memLayer.ML.CRI("rdm_nEvStep"); - int rdm_nEvCheck = memLayer.ML.CRI("rdm_nEvCheck"); - bool rdm_ChkOnly = memLayer.ML.CRB("rdm_ChkOnly"); - DataLayerObj.taComm.stp_ricalcolaDatiMacchinaFromDate(idxMacchina, startRicalcolo, 1, rdm_nEvStep, rdm_nEvCheck, rdm_ChkOnly); // nella stored imposto macchina OFFline e poi ONline, parto da "minAnticipoRicalcolo" minuti prima... - // aggiorno - // data - // evento - // x - // insert - // eventuale - // commento - // (5 sec...) - dataOraEv = dataOraEv.AddSeconds(5); // riabilito insert... anche se non dovrebbe servire x stored ricalcolo precedente... - DataLayerObj.taStatoMacchine.setInsEnabled(idxMacchina, true); -#endif + TabServ.MacchinaSetInsEnab(IdxMacc, true); } // mostro esito alertCss = "alert-succes"; @@ -198,6 +204,10 @@ namespace MP_TAB_SERV.Pages protected override async Task OnInitializedAsync() { dltMinRealtime = SMServ.GetConfInt("dltMinRealtime"); + minAnticipoRicalcolo = SMServ.GetConfInt("minAnticipoRicalcolo"); + rdm_nEvStep = SMServ.GetConfInt("rdm_nEvStep"); + rdm_nEvCheck = SMServ.GetConfInt("rdm_nEvCheck"); + rdm_ChkOnly = SMServ.GetConfBool("rdm_ChkOnly"); // leggo gli altri dati await ReloadData(); } @@ -209,6 +219,12 @@ namespace MP_TAB_SERV.Pages #endregion Protected Methods + #region Private Fields + + private static Logger Log = LogManager.GetCurrentClassLogger(); + + #endregion Private Fields + #region Private Properties private int MatrOpr diff --git a/MP-TAB-SERV/Resources/ChangeLog.html b/MP-TAB-SERV/Resources/ChangeLog.html index 19716452..4acdd247 100644 --- a/MP-TAB-SERV/Resources/ChangeLog.html +++ b/MP-TAB-SERV/Resources/ChangeLog.html @@ -1,6 +1,6 @@ Modulo MAPOSPEC -

Versione: 6.16.2310.1016

+

Versione: 6.16.2310.1018


Note di rilascio: