diff --git a/MP-TAB3/Components/MachineBlock.razor.cs b/MP-TAB3/Components/MachineBlock.razor.cs index d32fdfa3..a5cc7389 100644 --- a/MP-TAB3/Components/MachineBlock.razor.cs +++ b/MP-TAB3/Components/MachineBlock.razor.cs @@ -9,15 +9,15 @@ using System; namespace MP_TAB3.Components { - public partial class MachineBlock + public partial class MachineBlock : IDisposable { #region Protected Fields protected string baseCss = "sem"; - protected int currMaxVal = 1000; + protected int currMaxVal = 888; protected List innerCircleVals = new List(); protected int kaFactor = 60 / 2; - protected int maxVal = 1000; + protected int maxVal = 999; protected List outerCircleVals = new List(); #endregion Protected Fields @@ -45,10 +45,6 @@ namespace MP_TAB3.Components #region Public Properties -#if false - public string currIpv4 { get; set; } = ""; -#endif - [Parameter] public bool doBlink { get; set; } = false; @@ -368,10 +364,12 @@ namespace MP_TAB3.Components imgBasePath = $"{Environment.CurrentDirectory}/images/"; } await loadDetails(); + detailLoaded = true; } protected override async Task OnParametersSetAsync() { + TabDServ.DataInvalidated += TabDServ_DataInvalidated; // controllo variazione parametri... string lastIMS = LastIdxMacchSub; if (paramsChanged()) @@ -389,68 +387,111 @@ namespace MP_TAB3.Components { RecMSESub = RecMSE; } - // verificare - if (!FullMode || true) - { - await loadDetails(); - } + // carico dettagli + await loadDetails(); + } + setGaugeVals(); + } + + private async void TabDServ_DataInvalidated(object? sender, EventArgs e) + { + ReloadEventArgs rea = (ReloadEventArgs)e; + if (rea.ReloadMessage == IdxMaccCur) + { + // se riceve evento relativo a questo impianto --> ricarico dati prod... + detailLoaded = false; + // carico dettagli + await loadDetails(); setGaugeVals(); } } + public void Dispose() + { + TabDServ.DataInvalidated -= TabDServ_DataInvalidated; + } + private async Task loadDetails() { if (CRecMSE != null) { - DateTime adesso = DateTime.Now; + bool doForce = false; if (SDService.MachNumPzGet(IdxMaccCur) != CRecMSE.PezziProd || SDService.MachProdStGet(IdxMaccCur).IdxOdl != CRecMSE.IdxOdl || (datiProdAct != null && datiProdAct.PzTotODL != CRecMSE.PezziProd)) { - datiProdAct = await TabDServ.StatoProdMacchina(IdxMaccCur, adesso); + datiProdAct = await TabDServ.StatoProdMacchina(IdxMaccCur, DateTime.Now); SDService.MachProdStSet(IdxMaccCur, datiProdAct); SDService.MachNumPzSet(IdxMaccCur, CRecMSE.PezziProd); + doForce = true; } else { datiProdAct = SDService.MachProdStGet(IdxMaccCur); } + isMulti = SMServ.DictMacchMulti[IdxMaccMain] == 1; +#if false if (!string.IsNullOrEmpty(IdxMacchSub)) { - isMulti = SMServ.DictMacchMulti[IdxMaccMain] == 1; } else { - isMulti = false; + //isMulti = false; + isMulti = SMServ.DictMacchMulti[IdxMaccMain] == 1; + } +#endif + // verificare + if (!FullMode || !detailLoaded || doForce) + { + await ReloadXDL(true); } - await ReloadXDL(true); } } protected void setGaugeVals() { - if (CRecMSE != null) + + if (string.IsNullOrEmpty(IdxMacchSub) && isMulti) { - innerCircleVals.Clear(); - outerCircleVals.Clear(); - currMaxVal = int.Parse(CRecMSE.NumPezzi.ToString()!); - innerCircleVals.Add(new CircleGaugeMulti.CircSegm() { Color = "#FFC107", Value = CRecMSE.PezziProd }); - if (CRecMSE.PezziConf > 0) + if (CRecMSE != null) { - innerCircleVals.Add(new CircleGaugeMulti.CircSegm() { Color = "#198754", Value = CRecMSE.PezziConf }); - // se ho scarti aggiungo all'inizio - if (datiProdAct != null && datiProdAct.PzConfScarto > 0) + innerCircleVals.Clear(); + outerCircleVals.Clear(); + currMaxVal = CRecMSE.NumPezzi; + // int.Parse(CRecMSE.NumPezzi.ToString()!); + innerCircleVals.Add(new CircleGaugeMulti.CircSegm() { Color = "#FFC107", Value = CRecMSE.PezziProd }); + if (CRecMSE.PezziConf > 0) { - innerCircleVals.Add(new CircleGaugeMulti.CircSegm() { Color = "#CD1916", Value = datiProdAct.PzConfScarto }); + innerCircleVals.Add(new CircleGaugeMulti.CircSegm() { Color = "#198754", Value = CRecMSE.PezziConf }); + // se ho scarti aggiungo all'inizio + if (datiProdAct != null && datiProdAct.PzConfScarto > 0) + { + innerCircleVals.Add(new CircleGaugeMulti.CircSegm() { Color = "#CD1916", Value = datiProdAct.PzConfScarto }); + } + } + if (CRecMSE.extraVal > 0) + { + outerCircleVals.Add(new CircleGaugeMulti.CircSegm() { Color = "#1367FD", Value = CRecMSE.extraVal }); } } - if (CRecMSE.extraVal > 0) - { - outerCircleVals.Add(new CircleGaugeMulti.CircSegm() { Color = "#1367FD", Value = CRecMSE.extraVal }); - } - //Log.Trace($"MBlock | {RecMSE.IdxMacchina} | 03"); } else { - Log.Info("MBlock NO DATA"); + if (datiProdAct != null) + { + innerCircleVals.Clear(); + outerCircleVals.Clear(); + currMaxVal = datiProdAct.PzRichODL; + innerCircleVals.Add(new CircleGaugeMulti.CircSegm() { Color = "#FFC107", Value = datiProdAct.PzTotODL }); + innerCircleVals.Add(new CircleGaugeMulti.CircSegm() { Color = "#198754", Value = datiProdAct.PzConfAll }); + // se ho scarti aggiungo all'inizio + if (datiProdAct.PzConfScarto > 0) + { + innerCircleVals.Add(new CircleGaugeMulti.CircSegm() { Color = "#CD1916", Value = datiProdAct.PzConfScarto }); + } + if (CRecMSE.extraVal > 0) + { + outerCircleVals.Add(new CircleGaugeMulti.CircSegm() { Color = "#1367FD", Value = CRecMSE.extraVal }); + } + } } } diff --git a/MP-TAB3/Components/ProdConfirm.razor.cs b/MP-TAB3/Components/ProdConfirm.razor.cs index 5f63e960..88496012 100644 --- a/MP-TAB3/Components/ProdConfirm.razor.cs +++ b/MP-TAB3/Components/ProdConfirm.razor.cs @@ -300,6 +300,7 @@ namespace MP_TAB3.Components await DoUpdate(); await Task.Delay(1); await RefreshData(); + TabDServ.NotifyDataInvalidated(IdxMaccSel); isProcessing = false; } diff --git a/MP-TAB3/MP-TAB3.csproj b/MP-TAB3/MP-TAB3.csproj index fe8adc70..fff35ff8 100644 --- a/MP-TAB3/MP-TAB3.csproj +++ b/MP-TAB3/MP-TAB3.csproj @@ -3,7 +3,7 @@ net6.0 enable - 6.16.2503.716 + 6.16.2503.719 enable MP_TAB3 diff --git a/MP-TAB3/Resources/ChangeLog.html b/MP-TAB3/Resources/ChangeLog.html index de62dc11..07766399 100644 --- a/MP-TAB3/Resources/ChangeLog.html +++ b/MP-TAB3/Resources/ChangeLog.html @@ -1,6 +1,6 @@ Modulo MAPOSPEC -

Versione: 6.16.2503.716

+

Versione: 6.16.2503.719


Note di rilascio:
  • diff --git a/MP-TAB3/Resources/VersNum.txt b/MP-TAB3/Resources/VersNum.txt index c6ac295b..201238ef 100644 --- a/MP-TAB3/Resources/VersNum.txt +++ b/MP-TAB3/Resources/VersNum.txt @@ -1 +1 @@ -6.16.2503.716 +6.16.2503.719 diff --git a/MP-TAB3/Resources/manifest.xml b/MP-TAB3/Resources/manifest.xml index 7a9bb685..984ad1f1 100644 --- a/MP-TAB3/Resources/manifest.xml +++ b/MP-TAB3/Resources/manifest.xml @@ -1,6 +1,6 @@ - 6.16.2503.716 + 6.16.2503.719 https://nexus.steamware.net/repository/SWS/MP-TAB3/stable/LAST/MP-TAB3.zip https://nexus.steamware.net/repository/SWS/MP-TAB3/stable/LAST/ChangeLog.html false diff --git a/MP-TAB3/appsettings.json b/MP-TAB3/appsettings.json index 3d6347bd..ef552d62 100644 --- a/MP-TAB3/appsettings.json +++ b/MP-TAB3/appsettings.json @@ -8,7 +8,7 @@ "AllowedHosts": "*", "CodApp": "MP.TAB", "ConnectionStrings": { - "Redis": "localhost:26379,serviceName=devel,DefaultDatabase=5,connectTimeout=5000,syncTimeout=5000,asyncTimeout=5000,abortConnect=false,ssl=false,allowAdmin=true", + "Redis": "localhost:26379,serviceName=devel,DefaultDatabase=5,connectTimeout=15000,syncTimeout=15000,asyncTimeout=15000,abortConnect=false,ssl=false,allowAdmin=true", "MP.All": "Server=SQL2016DEV;Database=MoonPro; User ID=sa;Password=keyhammer16; integrated security=False; MultipleActiveResultSets=True; App=MP.TAB3;", "MP.Mon": "Server=SQL2016DEV;Database=MoonPro; User ID=sa;Password=keyhammer16; integrated security=False; MultipleActiveResultSets=True; App=MP.TAB3;", "MP.IS": "Server=SQL2016DEV;Database=MoonPro_IS_EdilChim; User ID=sa;Password=keyhammer16; integrated security=False; MultipleActiveResultSets=True; App=MP.INVE;", diff --git a/MP.Data/DatabaseModels/StatoProdModel.cs b/MP.Data/DatabaseModels/StatoProdModel.cs index 3f40892f..ca2fdc5b 100644 --- a/MP.Data/DatabaseModels/StatoProdModel.cs +++ b/MP.Data/DatabaseModels/StatoProdModel.cs @@ -24,5 +24,11 @@ namespace MP.Data.DatabaseModels public DateTime DataTo { get; set; } = DateTime.Now; public int PzConfRilav { get; set; } = 0; public int Pz2RecRilav { get; set; } = 0; + + [NotMapped] + public int PzConfAll + { + get => PzConfBuoni + PzConfRilav + PzConfScarto; + } } } diff --git a/MP.Data/Services/TabDataService.cs b/MP.Data/Services/TabDataService.cs index 83c06402..35988923 100644 --- a/MP.Data/Services/TabDataService.cs +++ b/MP.Data/Services/TabDataService.cs @@ -82,6 +82,10 @@ namespace MP.Data.Services /// Evento richiesta rilettura dati pagina (x refresh pagine aperte) /// public event EventHandler ReloadRequest = delegate { }; + /// + /// Evento report dati invalidati x rilettura + /// + public event EventHandler DataInvalidated = delegate { }; #endregion Public Events @@ -1310,6 +1314,19 @@ namespace MP.Data.Services ReloadRequest.Invoke(this, rea); } } + /// + /// Invio notifica dati invalidati x impianto + /// + /// + public void NotifyDataInvalidated(string idxMacchina) + { + if (ReloadRequest != null) + { + // messaggio + ReloadEventArgs rea = new ReloadEventArgs(idxMacchina); + DataInvalidated.Invoke(this, rea); + } + } /// /// ODL da key