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