diff --git a/EgwCoreLib.Lux.Data/Controllers/LuxController.cs b/EgwCoreLib.Lux.Data/Controllers/LuxController.cs index 71a9c955..4d43e455 100644 --- a/EgwCoreLib.Lux.Data/Controllers/LuxController.cs +++ b/EgwCoreLib.Lux.Data/Controllers/LuxController.cs @@ -3151,7 +3151,7 @@ namespace EgwCoreLib.Lux.Data.Controllers ProductionGroupModel newRec = new ProductionGroupModel() { OrderRowID = currRec.OrderRowID, - GrpType = ProdGroupType.UnWorkable, + GrpType = ProdGroupType.Vincolated, WorkGroupListRaw = rawWGL }; listProdGroup2Add.Add(newRec); @@ -3179,7 +3179,7 @@ namespace EgwCoreLib.Lux.Data.Controllers ProductionGroupModel newRec = new ProductionGroupModel() { OrderRowID = currRec.OrderRowID, - GrpType = ProdGroupType.UnWorkable, + GrpType = ProdGroupType.Balanced, WorkGroupListRaw = rawWGL }; listProdGroup2Add.Add(newRec); @@ -3201,6 +3201,79 @@ namespace EgwCoreLib.Lux.Data.Controllers return answ; } + /// + /// Upsert record di un singolo ProdGroup da fase Balance + /// + /// UID dell'item offerta di cui si è ricevuto l'oggetto Balance' + /// Prod Group di riferimento + /// + internal async Task ProdGroupUpsertBalance(string uID, string rGroup, string rawBalance) + { + bool answ = false; + //using (DataLayerContext dbCtx = new DataLayerContext(_config)) + using (DataLayerContext dbCtx = new DataLayerContext()) + { + // Togliamo la 'G' e convertiamo in int (gestisce automaticamente "01" -> 1) + int gType = int.Parse(rGroup.TrimStart('G')); + try + { + // recupero ord row (parent)... + var ordRowRec = dbCtx + .DbSetOrderRow + .Where(x => x.OrderRowUID == uID) + .FirstOrDefault(); + if (ordRowRec != null) + { + // recupero record specifico + var currRec = dbCtx + .DbSetProdGroup + .Where(x => x.OrderRowID == ordRowRec.OrderID && (int)x.GrpType == gType) + .FirstOrDefault(); + + // se trovato aggiorno + if (currRec != null) + { + // calcolo il dizionario degli elementi... + Dictionary newWorkGroupList = new(); +#if false + // converto il dizionario... + foreach (var item in machineTags) + { + ProdMachineDetailDto detProd = new ProdMachineDetailDto() + { + TagList = item.Value + .Select(x => x.Tag) + .ToList(), + Time = item.Value + .Sum(x => (double)x.Time) + }; + newWorkGroupList.Add(item.Key, detProd); + } + string rawWGL = JsonConvert.SerializeObject(newWorkGroupList); + + + currRec.WorkGroupListRaw = rawBalance; +#endif + } + // altrimenti aggiungo + else + { + } + + // salvo TUTTI i cambiamenti... + var result = await dbCtx.SaveChangesAsync(); + answ = result > 0; + } + } + catch (Exception exc) + { + Log.Error($"Eccezione durante ProdGroupUpsertBalance{Environment.NewLine}{exc}"); + } + } + await Task.Delay(100); + return answ; + } + /// /// Upsert record /// diff --git a/EgwCoreLib.Lux.Data/DbModel/Production/ProductionGroupModel.cs b/EgwCoreLib.Lux.Data/DbModel/Production/ProductionGroupModel.cs index 755ed76c..29c72015 100644 --- a/EgwCoreLib.Lux.Data/DbModel/Production/ProductionGroupModel.cs +++ b/EgwCoreLib.Lux.Data/DbModel/Production/ProductionGroupModel.cs @@ -38,6 +38,15 @@ namespace EgwCoreLib.Lux.Data.DbModel.Production get => $"G{(int)GrpType:00}"; } + /// + /// Codice Gruppo calcolato dal tipo + /// + [NotMapped] + public string ReqUID + { + get => $"{OrderRowNav?.OrderRowUID ?? "NA"}:{GroupCode}"; + } + /// /// Valore effettivo serializzato dei WorkgroupList /// diff --git a/EgwCoreLib.Lux.Data/Services/DataLayerServices.cs b/EgwCoreLib.Lux.Data/Services/DataLayerServices.cs index b5f705a6..7189272a 100644 --- a/EgwCoreLib.Lux.Data/Services/DataLayerServices.cs +++ b/EgwCoreLib.Lux.Data/Services/DataLayerServices.cs @@ -1900,20 +1900,18 @@ namespace EgwCoreLib.Lux.Data.Services /// /// Esegue salvataggio ProdBalance (di un gruppo lavorazioni per riga ordine) sul DB /// - /// UID dell'item offerta + group di cui si è ricevuto l'oggetto Balance' + /// UID dell'item offerta di cui si è ricevuto l'oggetto Balance' + /// Prod Group di riferimento /// Environment dell'item /// Stima Balance serializzata /// - public async Task SaveProdBalanceAsync(string uID, Constants.EXECENVIRONMENTS execEnvironment, string balance) + public async Task SaveProdBalanceAsync(string uID, string rGroup, Constants.EXECENVIRONMENTS execEnvironment, string balance) { // salvo sul DB il risultato della BOM if (!string.IsNullOrEmpty(balance)) { -#if false // salvo info balance nel record del DB relativo all'oggetto richiesto - await dbController.OrderRowUpsertProdEst(uID, balance); -#endif - await Task.Delay(100); + await dbController.ProdGroupUpsertBalance(uID, rGroup, balance); } } diff --git a/Lux.API/Lux.API.csproj b/Lux.API/Lux.API.csproj index 5bf05b63..2abbe849 100644 --- a/Lux.API/Lux.API.csproj +++ b/Lux.API/Lux.API.csproj @@ -4,7 +4,7 @@ net8.0 enable enable - 0.9.2601.0915 + 0.9.2601.0916 diff --git a/Lux.API/Services/ExternalMessageProcessor.cs b/Lux.API/Services/ExternalMessageProcessor.cs index 119564c5..6b1afd06 100644 --- a/Lux.API/Services/ExternalMessageProcessor.cs +++ b/Lux.API/Services/ExternalMessageProcessor.cs @@ -179,14 +179,15 @@ namespace Lux.API.Services // gestione ritorno tipo Balance dei gruppi di lavorazione (x carico macchine/schedulazione) if (retData.Args.ContainsKey("Balance")) { - // ATTENZIONE! qui il valore UID deve contenere ANCHE il gruppo cui è riferito (es: POR.25.0000004B.G01) + // ATTENZIONE! qui oltre al valore UID deve leggere ANCHE il gruppo cui è riferito (es: Group: G01) // recupero lista risultati calcolo... + string refGroup = retData.Args["Group"]; string rawBalance = retData.Args["Balance"]; List? machineEstimList = new List(); // deserializzo try { - await dbService.SaveProdBalanceAsync(UID, retData.ExecEnvironment, rawBalance); + await dbService.SaveProdBalanceAsync(UID, refGroup, retData.ExecEnvironment, rawBalance); } catch (Exception exc) { diff --git a/Lux.UI/Components/Compo/OrderRowMan.razor.cs b/Lux.UI/Components/Compo/OrderRowMan.razor.cs index 62511154..8539420a 100644 --- a/Lux.UI/Components/Compo/OrderRowMan.razor.cs +++ b/Lux.UI/Components/Compo/OrderRowMan.razor.cs @@ -729,6 +729,8 @@ namespace Lux.UI.Components.Compo // creo registrazione richiesta... var ruid = await CRService.AddRequestAsync($"{CurrRecord.Envir}", $"{(int)cMode}-{(int)cSubMode}", WorkLoadRecord.UID); dictArgs.Add("UID", WorkLoadRecord.UID); + // hard coded a G04: da calcolare! + dictArgs.Add("Group", $"G04"); // aggiungo RUID effettivo dictArgs.Add("RUID", ruid); dictArgs.Add("OrderUID", CurrRecord.OrderCode); diff --git a/Lux.UI/Lux.UI.csproj b/Lux.UI/Lux.UI.csproj index c7f592d2..d5c68296 100644 --- a/Lux.UI/Lux.UI.csproj +++ b/Lux.UI/Lux.UI.csproj @@ -5,7 +5,7 @@ enable enable aspnet-Lux.UI-a758c101-a2f4-4e38-977d-1c4887dbbd50 - 0.9.2601.0915 + 0.9.2601.0916 diff --git a/Resources/ChangeLog.html b/Resources/ChangeLog.html index 83ed8d3a..38915865 100644 --- a/Resources/ChangeLog.html +++ b/Resources/ChangeLog.html @@ -1,6 +1,6 @@ LUX - Web Windows MES -

Versione: 0.9.2601.0915

+

Versione: 0.9.2601.0916


Note di rilascio:
  • diff --git a/Resources/VersNum.txt b/Resources/VersNum.txt index a4e06966..b5128580 100644 --- a/Resources/VersNum.txt +++ b/Resources/VersNum.txt @@ -1 +1 @@ -0.9.2601.0915 +0.9.2601.0916 diff --git a/Resources/manifest.xml b/Resources/manifest.xml index cba3fae8..a01cd97a 100644 --- a/Resources/manifest.xml +++ b/Resources/manifest.xml @@ -1,6 +1,6 @@ - 0.9.2601.0915 + 0.9.2601.0916 http://nexus.steamware.net/repository/SWS/GPW/stable/GPW.UI.zip http://nexus.steamware.net/repository/SWS/GPW/stable/ChangeLog.html false