Update gestione ritorno gruppi prod (group esplicito in args)

This commit is contained in:
Samuele Locatelli
2026-01-09 16:28:25 +01:00
parent 78356d1048
commit 0e4e4af9cc
10 changed files with 98 additions and 15 deletions
@@ -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;
}
/// <summary>
/// Upsert record di un singolo ProdGroup da fase Balance
/// </summary>
/// <param name="uID">UID dell'item offerta di cui si è ricevuto l'oggetto Balance'</param>
/// <param name="rGroup">Prod Group di riferimento</param>
/// <param name="rawBalance"></param>
internal async Task<bool> 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<string, ProdMachineDetailDto> 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;
}
/// <summary>
/// Upsert record
/// </summary>
@@ -38,6 +38,15 @@ namespace EgwCoreLib.Lux.Data.DbModel.Production
get => $"G{(int)GrpType:00}";
}
/// <summary>
/// Codice Gruppo calcolato dal tipo
/// </summary>
[NotMapped]
public string ReqUID
{
get => $"{OrderRowNav?.OrderRowUID ?? "NA"}:{GroupCode}";
}
/// <summary>
/// Valore effettivo serializzato dei WorkgroupList
/// </summary>
@@ -1900,20 +1900,18 @@ namespace EgwCoreLib.Lux.Data.Services
/// <summary>
/// Esegue salvataggio ProdBalance (di un gruppo lavorazioni per riga ordine) sul DB
/// </summary>
/// <param name="uID">UID dell'item offerta + group di cui si è ricevuto l'oggetto Balance'</param>
/// <param name="uID">UID dell'item offerta di cui si è ricevuto l'oggetto Balance'</param>
/// <param name="rGroup">Prod Group di riferimento</param>
/// <param name="execEnvironment">Environment dell'item</param>
/// <param name="balance">Stima Balance serializzata</param>
/// <returns></returns>
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);
}
}
+1 -1
View File
@@ -4,7 +4,7 @@
<TargetFramework>net8.0</TargetFramework>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
<Version>0.9.2601.0915</Version>
<Version>0.9.2601.0916</Version>
</PropertyGroup>
<ItemGroup>
+3 -2
View File
@@ -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<MachineCalcResultDTO>? machineEstimList = new List<MachineCalcResultDTO>();
// deserializzo
try
{
await dbService.SaveProdBalanceAsync(UID, retData.ExecEnvironment, rawBalance);
await dbService.SaveProdBalanceAsync(UID, refGroup, retData.ExecEnvironment, rawBalance);
}
catch (Exception exc)
{
@@ -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);
+1 -1
View File
@@ -5,7 +5,7 @@
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
<UserSecretsId>aspnet-Lux.UI-a758c101-a2f4-4e38-977d-1c4887dbbd50</UserSecretsId>
<Version>0.9.2601.0915</Version>
<Version>0.9.2601.0916</Version>
</PropertyGroup>
<ItemGroup>
+1 -1
View File
@@ -1,6 +1,6 @@
<body>
<i>LUX - Web Windows MES</i>
<h4>Versione: 0.9.2601.0915</h4>
<h4>Versione: 0.9.2601.0916</h4>
<br /> Note di rilascio:
<ul>
<li>
+1 -1
View File
@@ -1 +1 @@
0.9.2601.0915
0.9.2601.0916
+1 -1
View File
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<item>
<version>0.9.2601.0915</version>
<version>0.9.2601.0916</version>
<url>http://nexus.steamware.net/repository/SWS/GPW/stable/GPW.UI.zip</url>
<changelog>http://nexus.steamware.net/repository/SWS/GPW/stable/ChangeLog.html</changelog>
<mandatory>false</mandatory>