Update display workable

This commit is contained in:
Samuele Locatelli
2025-12-06 11:31:29 +01:00
parent 6393a8668b
commit 136b25fd77
8 changed files with 127 additions and 33 deletions
@@ -31,10 +31,13 @@ namespace EgwCoreLib.Lux.Core.RestPayload
if (!workable)
{
var listKo = new List<PartCalcDTO>();
// cerco l'insieme dei pezzi DAVVERO non lavorabili
// pezzi lavorabili
listWorkable = MachineCalc.Utils.IntersectTags(machineCalcResults, p => p.CalcResult == Enums.PartVerificationResult.MACHINABLE).ToList();
// cerco l'insieme dei pezzi NON lavorabili
listUnWorkable = MachineCalc.Utils.IntersectTags(machineCalcResults, p => p.CalcResult != Enums.PartVerificationResult.MACHINABLE).ToList();
workable = !listUnWorkable.Any();
numKo = listUnWorkable.Count();
numOk = listWorkable.Count();
}
LoadDetail = MachineCalc.Utils.CalculateIntersections(machineCalcResults);
@@ -51,13 +54,6 @@ namespace EgwCoreLib.Lux.Core.RestPayload
{
get => string.Join(", ", machineCalcResults.Select(x => x.Name).OrderBy(x => x).ToList());
}
/// <summary>
/// Num Macchine
/// </summary>
public int NumMachines
{
get => machineCalcResults.Count();
}
/// <summary>
/// Elenco delle etichette parts non OK
@@ -67,6 +63,14 @@ namespace EgwCoreLib.Lux.Core.RestPayload
get => listUnWorkable ?? new List<string>();
}
/// <summary>
/// Elenco etichette parts OK
/// </summary>
public List<string> ListWorkable
{
get => listWorkable ?? new List<string>();
}
/// <summary>
/// Dettaglio combinazioni carico di lavoro
/// </summary>
@@ -77,11 +81,30 @@ namespace EgwCoreLib.Lux.Core.RestPayload
get => machineCalcResults;
}
/// <summary>
/// Numero di parts non lavorabili
/// </summary>
public int NumKo
{
get => numKo;
}
/// <summary>
/// Num Macchine
/// </summary>
public int NumMachines
{
get => machineCalcResults.Count();
}
/// <summary>
/// Numero di parts lavorabili
/// </summary>
public int NumOk
{
get => numOk;
}
/// <summary>
/// Tempo massimo complessivo in ORE
/// </summary>
@@ -113,8 +136,10 @@ namespace EgwCoreLib.Lux.Core.RestPayload
#region Private Fields
private List<string>? listUnWorkable = null;
private List<string>? listWorkable = null;
private List<MachineCalcResultDTO> machineCalcResults = new List<MachineCalcResultDTO>();
private int numKo = 0;
private int numOk = 0;
private string uID = "";
private bool workable = false;
+1 -1
View File
@@ -4,7 +4,7 @@
<TargetFramework>net8.0</TargetFramework>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
<Version>0.9.2512.0610</Version>
<Version>0.9.2512.0611</Version>
</PropertyGroup>
<ItemGroup>
+60 -19
View File
@@ -94,6 +94,7 @@ else
}
@* <th class="text-end">Totale</th>
<th class="text-end">Marg.</th> *@
<th class="text-center" title="# Prodotti producibili"># OK</th>
<th class="text-center" title="# Prodotti non validi/producibili"># KO</th>
<th class="text-end" title="Range tempi prod. previsti">Timing</th>
@if (DisplayMode == EgwCoreLib.Lux.Core.Enums.DisplayMode.Edit)
@@ -234,11 +235,8 @@ else
<div class="small text-secondary" title="RockBottom Price">(@item.Original.UnitCost.ToString("C2"))</div>
</td> *@
<td class="text-center fs-4" title="@item.WorkLoad.ListMachines">@item.WorkLoad.NumMachines</td>
<td class="text-center text-nowrap">
<div class="fw-bold" title="# Totale Prodotti">
@($"{item.Original.ProdItemQtyTot:N0}")
</div>
<td class="text-center fs-4" title="@item.WorkLoad.ListMachines">
<span class="px-2">@item.WorkLoad.NumMachines</span>
@if (@item.WorkLoad.Workable)
{
<i class="fa-solid fa-thumbs-up text-success"></i>
@@ -248,6 +246,18 @@ else
<i class="fa-solid fa-thumbs-down text-danger"></i>
}
</td>
<td class="text-center text-nowrap">
<div class="fw-bold" title="# Totale Prodotti">
@($"{item.Original.ProdItemQtyTot:N0}")
</div>
</td>
<td class="text-center text-nowrap">
<button class="btn btn-sm btn-success" @onclick="() => ShowDetailOk(item.WorkLoad)">
<div class="fw-bold" title="# Pezzi OK">
@($"{item.WorkLoad.NumOk:N0}")
</div>
</button>
</td>
@if (DisplayMode == EgwCoreLib.Lux.Core.Enums.DisplayMode.Edit)
{
<td class="text-center">
@@ -348,9 +358,8 @@ else
<td colspan="1"></td>
}
<td class="text-center">@($"{GrandTotNumItems:N0}")</td>
<th class="text-center text-danger">
@GrandTotNumKo
</th>
<th class="text-center text-success">@GrandTotNumOk</th>
<th class="text-center text-danger">@GrandTotNumKo</th>
<th class="text-end">
@if ((GrandTotMaxTime - GrandTotMinTime) > 1)
{
@@ -444,8 +453,8 @@ else if (WorkLoadRecord != null)
Dettaglio Carico
</div>
<div class="col-4 text-center border border-2 rounded">
<div class="fw-bold">@EditRecord.Note</div>
<small class="small">@EditRecord.OrderRowUID</small>
<div class="fw-bold">Workable Parts: @WorkLoadRecord.NumOk</div>
<small class="small">@WorkLoadRecord.ListMachines</small>
</div>
<div class="col-4 text-end fs-4">
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close" @onclick="ClosePopup">
@@ -453,7 +462,45 @@ else if (WorkLoadRecord != null)
</div>
</div>
<div class="modal-body">
<p>ToDO: mostrare dettaglio carico macchine</p>
@* @foreach (var item in WorkLoadRecord.ListWorkable)
{
<div class="col-3">
<div class="alert alert-danger p-1 mb-2 text-center align-content-center">@item</div>
</div>
} *@
<p>indicazione dei tempo</p>
</div>
</div>
</div>
</div>
}
else if (CurrEditMode == EditMode.DetailOK)
{
<div class="modal" tabindex="-1" style="display:block; background-color: rgba(10,10,10,.6);" role="dialog">
<div class="modal-dialog modal-xl">
<div class="modal-content">
<div class="modal-header row modal-title">
<div class="col-4 fs-3">
Dettaglio Carico
</div>
<div class="col-4 text-center border border-2 rounded">
<div class="fw-bold">Workable Parts: @WorkLoadRecord.NumOk</div>
<small class="small">@WorkLoadRecord.ListMachines</small>
</div>
<div class="col-4 text-end fs-4">
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close" @onclick="ClosePopup">
</button>
</div>
</div>
<div class="modal-body">
<div class="row gx-2">
@foreach (var item in WorkLoadRecord.ListWorkable)
{
<div class="col-2">
<div class="alert alert-success p-1 mb-2 text-center align-content-center">@item</div>
</div>
}
</div>
</div>
</div>
</div>
@@ -469,7 +516,7 @@ else if (WorkLoadRecord != null)
Elenco Pezzi KO
</div>
<div class="col-4 text-center border border-2 rounded">
<div class="fw-bold">UnworkableParts: @WorkLoadRecord.NumKo</div>
<div class="fw-bold">Unworkable Parts: @WorkLoadRecord.NumKo</div>
<small class="small">@WorkLoadRecord.ListMachines</small>
</div>
<div class="col-4 text-end fs-4">
@@ -481,17 +528,11 @@ else if (WorkLoadRecord != null)
<div class="row gx-2">
@foreach (var item in WorkLoadRecord.ListUnWorkable)
{
<div class="col-3">
<div class="col-2">
<div class="alert alert-danger p-1 mb-2 text-center align-content-center">@item</div>
</div>
}
</div>
@* <ul class="list-group list-group-sm">
@foreach (var item in WorkLoadRecord.ListUnWorkable)
{
<li class="list-group-item">@item</li>
}
</ul> *@
</div>
</div>
</div>
+29 -1
View File
@@ -60,7 +60,12 @@ namespace Lux.UI.Components.Compo
/// <summary>
/// Dettaglio pezzi KO
/// </summary>
DetailKO
DetailKO,
/// <summary>
/// Dettaglio pezzi OK
/// </summary>
DetailOK
}
#endregion Public Enums
@@ -223,6 +228,18 @@ namespace Lux.UI.Components.Compo
return answ;
}
}
protected int GrandTotNumOk
{
get
{
int answ = 0;
if (ListRecords != null && ListRecords.Count > 0)
{
answ = ListRecords.Sum(x => x.WorkLoad.NumOk);
}
return answ;
}
}
/// <summary>
/// Importo totale calcolato x offerta
@@ -695,6 +712,17 @@ namespace Lux.UI.Components.Compo
WorkLoadRecord = detailRec;
}
/// <summary>
/// salva dettaglio workload x mostrare elenco valori OK
/// </summary>
/// <param name="detailRec"></param>
protected void ShowDetailOk(WorkLoadDetailDTO detailRec)
{
CurrEditMode = EditMode.DetailOK;
EditRecord = null;
WorkLoadRecord = detailRec;
}
/// <summary>
/// Restituisce struttura dettaglio WorkLoad x item
/// </summary>
+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.2512.0610</Version>
<Version>0.9.2512.0611</Version>
</PropertyGroup>
<ItemGroup>
+1 -1
View File
@@ -1,6 +1,6 @@
<body>
<i>LUX - Web Windows MES</i>
<h4>Versione: 0.9.2512.0610</h4>
<h4>Versione: 0.9.2512.0611</h4>
<br /> Note di rilascio:
<ul>
<li>
+1 -1
View File
@@ -1 +1 @@
0.9.2512.0610
0.9.2512.0611
+1 -1
View File
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<item>
<version>0.9.2512.0610</version>
<version>0.9.2512.0611</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>