diff --git a/MP.Data/Controllers/MpSpecController.cs b/MP.Data/Controllers/MpSpecController.cs index f9229d82..39568dbe 100644 --- a/MP.Data/Controllers/MpSpecController.cs +++ b/MP.Data/Controllers/MpSpecController.cs @@ -465,6 +465,8 @@ namespace MP.Data.Controllers .DbSetPODL .Where(x => (x.IdxOdl == 0) && (x.KeyRichiesta.Contains(keyRichPart) || keyRichPart == "*") && (codArt == "*" || x.CodArticolo.Contains(codArt))) .AsNoTracking() + .Include(m => m.MachineNav) + .Include(a => a.ArticoloNav) .OrderBy(x => x.InsertDate) .ToList(); } @@ -625,6 +627,7 @@ namespace MP.Data.Controllers currRec.KeyRichiesta = editRec.KeyRichiesta; currRec.NumPezzi = editRec.NumPezzi; currRec.Tcassegnato = editRec.Tcassegnato; + currRec.Note = editRec.Note; dbCtx.Entry(currRec).State = EntityState.Modified; } else diff --git a/MP.Data/DatabaseModels/PODLModel.cs b/MP.Data/DatabaseModels/PODLModel.cs index 73b5b19d..2575e287 100644 --- a/MP.Data/DatabaseModels/PODLModel.cs +++ b/MP.Data/DatabaseModels/PODLModel.cs @@ -55,6 +55,17 @@ namespace MP.Data.DatabaseModels } } + /// + /// Navigazione oggetto Machine + /// + [ForeignKey("IdxMacchina")] + public virtual Macchine MachineNav { get; set; } = null!; + /// + /// Navigazione oggetto Articolo + /// + [ForeignKey("CodArticolo")] + public virtual AnagArticoli ArticoloNav { get; set; } = null!; + #endregion Public Properties } } \ No newline at end of file diff --git a/MP.SPEC/Components/ListODL.razor.cs b/MP.SPEC/Components/ListODL.razor.cs index 3acc8de4..13af41c6 100644 --- a/MP.SPEC/Components/ListODL.razor.cs +++ b/MP.SPEC/Components/ListODL.razor.cs @@ -133,10 +133,6 @@ namespace MP.SPEC.Components } private int totalCount { get; set; } = 0; - //{ - // get => MessageService.totalCount; - // set => MessageService.totalCount = value; - //} #endregion Private Properties diff --git a/MP.SPEC/Components/ListPODL.razor b/MP.SPEC/Components/ListPODL.razor index 966b1e2e..b7bf7cb8 100644 --- a/MP.SPEC/Components/ListPODL.razor +++ b/MP.SPEC/Components/ListPODL.razor @@ -25,6 +25,7 @@ else # pz T.Ciclo Note + Att @@ -33,14 +34,17 @@ else { - + + @record.CodArticolo +
@record.ArticoloNav.DescArticolo
@tradFase(record.KeyRichiesta) @record.IdxMacchina +
@record.MachineNav.Descrizione
@record.NumPezzi @@ -49,6 +53,16 @@ else @record.Tcassegnato.ToString("N3") @record.Note + + @if (@record.Attivabile) + { + + } + else + { + + } + @if (POdlDelEnabled(record.IdxOdl)) { diff --git a/MP.SPEC/Components/ListPODL.razor.cs b/MP.SPEC/Components/ListPODL.razor.cs index 6e3d1422..08e811b7 100644 --- a/MP.SPEC/Components/ListPODL.razor.cs +++ b/MP.SPEC/Components/ListPODL.razor.cs @@ -15,6 +15,9 @@ namespace MP.SPEC.Components [Parameter] public EventCallback RecordSel { get; set; } + [Parameter] + public EventCallback updateRecordCount { get; set; } + #endregion Public Properties #region Public Methods @@ -51,6 +54,31 @@ namespace MP.SPEC.Components #region Protected Methods + protected async Task cloneRecord(PODLModel selRec) + { + // creo record duplicato... + PODLModel newRec = new PODLModel() + { + Attivabile = selRec.Attivabile, + CodArticolo = selRec.CodArticolo, + CodCli = selRec.CodCli, + CodGruppo = selRec.CodGruppo, + DueDate = selRec.DueDate, + IdxMacchina = selRec.IdxMacchina, + IdxOdl = selRec.IdxOdl, + IdxPromessa = 0, + InsertDate = selRec.InsertDate, + KeyBCode = selRec.KeyBCode, + KeyRichiesta = selRec.KeyRichiesta, + Note = $"DUPLICATED - {selRec.Note}", + NumPezzi = selRec.NumPezzi, + Priorita = selRec.Priorita, + PzPallet = selRec.PzPallet, + Tcassegnato = selRec.Tcassegnato + }; + await RecordSel.InvokeAsync(newRec); + } + /// /// Eliminazione record selezionato (previa conferma) /// @@ -73,6 +101,10 @@ namespace MP.SPEC.Components MsgService.EA_SearchUpdated += OnSeachUpdated; MsgService.EA_StatoSearch += MsgService_EA_StatoSearch; ListStati = await MDService.AnagStatiComm(); + } + + protected override async Task OnParametersSetAsync() + { await reloadData(); } @@ -148,11 +180,7 @@ namespace MP.SPEC.Components set => MsgService.StateSel = value; } - private int totalCount - { - get => MsgService.totalCount; - set => MsgService.totalCount = value; - } + private int totalCount { get; set; } = 0; #endregion Private Properties @@ -182,6 +210,7 @@ namespace MP.SPEC.Components ListRecords = SearchRecords.Skip(numRecord * (currPage - 1)).Take(numRecord).ToList(); await Task.Delay(1); await InvokeAsync(() => StateHasChanged()); + await updateRecordCount.InvokeAsync(totalCount); isLoading = false; } diff --git a/MP.SPEC/Components/ParamsFilter.razor b/MP.SPEC/Components/ParamsFilter.razor index 7642a4c3..1be0c622 100644 --- a/MP.SPEC/Components/ParamsFilter.razor +++ b/MP.SPEC/Components/ParamsFilter.razor @@ -98,14 +98,16 @@ } } - @if (dtMax == null) + @if (selDtMax == null) { } else { - - + + + + } diff --git a/MP.SPEC/Components/ParamsFilter.razor.cs b/MP.SPEC/Components/ParamsFilter.razor.cs index f2989711..fba1461c 100644 --- a/MP.SPEC/Components/ParamsFilter.razor.cs +++ b/MP.SPEC/Components/ParamsFilter.razor.cs @@ -182,6 +182,7 @@ namespace MP.SPEC.Components currFilt.CurrPage = 0; currFilt.lastUpdate = $"{DateTime.Now:yyyy/MM/dd HH:mm:ss}"; currFilt.dtMax = RoundDatetime(5); + currFilt.dtMin = RoundDatetime(5).AddHours(-2); SelFilter = currFilt; } @@ -201,11 +202,11 @@ namespace MP.SPEC.Components // fermo udpate liveUpdate = false; // se non ho data rif uso adesso... - DateTime dtMax = SelFilter.dtMax == null ? DateTime.Now : (DateTime)SelFilter.dtMax; - DateTime dtMin = SelFilter.dtMin == null ? DateTime.Now : (DateTime)SelFilter.dtMin; + DateTime dtMax = selDtMax == null ? DateTime.Now : (DateTime)selDtMax; + DateTime dtMin = selDtMin == null ? DateTime.Now : (DateTime)selDtMin; // aggiungo 2 sec dtMax = dtMax.AddSeconds(15); - dtMin = dtMin.AddMinutes(-30); + //dtMin = dtMin.AddMinutes(-30); await MDService.DossiersTakeParamsSnapshotLast(selMacchina, dtMin, dtMax); lastUpdate = $"{DateTime.Now:yyyy/MM/dd HH:mm:ss}"; } @@ -213,6 +214,7 @@ namespace MP.SPEC.Components protected void toggleParams() { showEditPar = !showEditPar; + selDtMax = null; } protected async Task toggleUpdate() @@ -225,7 +227,7 @@ namespace MP.SPEC.Components } else { - dtMax = null; + selDtMax = null; } } @@ -244,7 +246,7 @@ namespace MP.SPEC.Components #region Private Properties - private DateTime? dtMax + private DateTime? selDtMax { get => SelFilter.dtMax; set @@ -263,7 +265,7 @@ namespace MP.SPEC.Components } } } - private DateTime? dtMin + private DateTime? selDtMin { get => SelFilter.dtMin; set diff --git a/MP.SPEC/Data/MpDataService.cs b/MP.SPEC/Data/MpDataService.cs index ab2d312b..2c9116a5 100644 --- a/MP.SPEC/Data/MpDataService.cs +++ b/MP.SPEC/Data/MpDataService.cs @@ -368,7 +368,7 @@ namespace MP.SPEC.Data redisDb.StringSet(currKey, "", TimeSpan.FromSeconds(1)); return answ; } - + /// /// Effettua salvataggio snapshot parametri (con stored) + svuota eventuale cache redis /// @@ -421,35 +421,6 @@ namespace MP.SPEC.Data return answ; } - /// - /// Esegue flush memoria redis dato pattern - /// - /// - /// - private async Task ExecFlushRedisPattern(RedisValue pattern) - { - bool answ = false; - var listEndpoints = redisConnAdmin.GetEndPoints(); - foreach (var endPoint in listEndpoints) - { - //var server = redisConnAdmin.GetServer(listEndpoints[0]); - var server = redisConnAdmin.GetServer(endPoint); - if (server != null) - { - var keyList = server.Keys(redisDb.Database, pattern); - foreach (var item in keyList) - { - await redisDb.KeyDeleteAsync(item); - } - // brutalmente rimuovo intero contenuto DB... DANGER - //await server.FlushDatabaseAsync(); - answ = true; - } - } - - return answ; - } - /// /// Elenco ultimi n record flux log dato macchina e flusso (ordinato x data registrazione) /// @@ -670,15 +641,25 @@ namespace MP.SPEC.Data #region Private Fields private const string redisBaseAddr = "MP:"; + private const string redisConfKey = redisBaseAddr + "SPEC:Cache:Config"; + private const string redisDossByMac = redisBaseAddr + "SPEC:Cache:DossByMac"; + private const string redisFluxByMac = redisBaseAddr + "SPEC:Cache:FluxByMac"; + private const string redisMacByFlux = redisBaseAddr + "SPEC:Cache:MacByFlux"; + private const string redisMacList = redisBaseAddr + "SPEC:Cache:MacList"; + private const string redisStatoCom = redisBaseAddr + "SPEC:Cache:StatoCom"; + private const string redisTipoArt = redisBaseAddr + "SPEC:Cache:TipoArt"; + private static IConfiguration _configuration = null!; + private static ILogger _logger = null!; + private static Logger Log = LogManager.GetCurrentClassLogger(); /// @@ -699,5 +680,38 @@ namespace MP.SPEC.Data private int redisLongTimeCache = 5; #endregion Private Fields + + #region Private Methods + + /// + /// Esegue flush memoria redis dato pattern + /// + /// + /// + private async Task ExecFlushRedisPattern(RedisValue pattern) + { + bool answ = false; + var listEndpoints = redisConnAdmin.GetEndPoints(); + foreach (var endPoint in listEndpoints) + { + //var server = redisConnAdmin.GetServer(listEndpoints[0]); + var server = redisConnAdmin.GetServer(endPoint); + if (server != null) + { + var keyList = server.Keys(redisDb.Database, pattern); + foreach (var item in keyList) + { + await redisDb.KeyDeleteAsync(item); + } + // brutalmente rimuovo intero contenuto DB... DANGER + //await server.FlushDatabaseAsync(); + answ = true; + } + } + + return answ; + } + + #endregion Private Methods } } \ No newline at end of file diff --git a/MP.SPEC/MP.SPEC.csproj b/MP.SPEC/MP.SPEC.csproj index 0a551df9..0c5728b0 100644 --- a/MP.SPEC/MP.SPEC.csproj +++ b/MP.SPEC/MP.SPEC.csproj @@ -5,7 +5,7 @@ enable enable MP.SPEC - 6.16.2209.2717 + 6.16.2210.510 diff --git a/MP.SPEC/Pages/Articoli.razor b/MP.SPEC/Pages/Articoli.razor index 8e161a2b..2cc76697 100644 --- a/MP.SPEC/Pages/Articoli.razor +++ b/MP.SPEC/Pages/Articoli.razor @@ -135,7 +135,8 @@ { - + +
@record.CodArticolo
diff --git a/MP.SPEC/Pages/Articoli.razor.cs b/MP.SPEC/Pages/Articoli.razor.cs index 2dabf683..577db802 100644 --- a/MP.SPEC/Pages/Articoli.razor.cs +++ b/MP.SPEC/Pages/Articoli.razor.cs @@ -136,6 +136,10 @@ namespace MP.SPEC.Pages } ListAziende = await MDService.ElencoAziende(); ListTipoArt = await MDService.AnagTipoArtLV(); + } + + protected override async Task OnParametersSetAsync() + { await reloadData(); } @@ -155,6 +159,21 @@ namespace MP.SPEC.Pages currRecord = selRec; await Task.Delay(1); } + protected async Task cloneRecord(AnagArticoli selRec) + { + // creo record duplicato... + AnagArticoli newRec = new AnagArticoli() + { + Azienda = selRec.Azienda, + CodArticolo = selRec.CodArticolo, + DescArticolo = $"CLONE - { selRec.DescArticolo }", + Disegno = selRec.Disegno, + Tipo=selRec.Tipo + }; + currRecord = newRec; + await Task.Delay(1); + } + protected async Task update(AnagArticoli selRec) { diff --git a/MP.SPEC/Pages/PODL.razor b/MP.SPEC/Pages/PODL.razor index 46c6fe3e..9ce35a87 100644 --- a/MP.SPEC/Pages/PODL.razor +++ b/MP.SPEC/Pages/PODL.razor @@ -42,7 +42,7 @@ - + @if (currRecord != null) { @@ -77,6 +77,12 @@
+
+ # pz + + T.Ciclo + +
@@ -94,7 +100,6 @@
-
@@ -129,6 +134,23 @@
+
+
+ Note + +
+
+
+
+
+ Att + +
+ +
+
+
+
@@ -195,7 +217,7 @@ } else { - + }