Modificata modale stima tempi

This commit is contained in:
Annamaria Sassi
2026-06-26 17:04:26 +02:00
parent 5735efcdef
commit f0fcf5cafe
6 changed files with 197 additions and 313 deletions
+1 -1
View File
@@ -4,7 +4,7 @@
<TargetFramework>net8.0</TargetFramework>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
<Version>1.1.2606.2615</Version>
<Version>1.1.2606.2617</Version>
</PropertyGroup>
<ItemGroup>
+192 -308
View File
@@ -19,154 +19,146 @@
<small class="small">@DetailRecord.ListMachinesJoin</small>
</div>
<div class="col-4 text-end fs-4">
<button class="btn btn-lg btn-primary" @onclick="() => ReRunJob()"><i class="fa-solid fa-share-from-square" title="Riesecuzione Estimate"></i> Re-Run</button>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close" @onclick="() => ClosePopup()">
</button>
</div>
</div>
</div>
<div class="modal-body">
<div class="row">
<div class="col">
@if (CurrMode == SetMode.Balance)
{
<div class="row">
<div class="col-4">
<div class="input-group">
<span class="input-group-text" id="inputGroup-sizing-default">Lungh.Barre</span>
<input type="number" class="form-control text-end" @bind="BarLenght">
<span class="input-group-text" id="inputGroup-sizing-default">mm</span>
</div>
</div>
<div class="col-6">
<div class="input-group">
@if (AllProdGroup != null && AllProdGroup.Count > 0)
{
foreach (var item in AllProdGroup)
{
if (false)
{
@* <span class="input-group-text" id="inputGroup-sizing-default">@item.ProdPlantCod</span>
<input type="number" class="form-control" @bind="@DictPercReq[item.ProdPlantCod]"> *@
}
else
{
<span class="input-group-text">@item.PlantListJoin</span>
<input type="number" class="form-control">
}
}
}
</div>
</div>
<div class="col-2">
@if (checkSend)
{
<button class="btn btn-success w-100" @onclick="ReqBalance">Bilancia <i class="fa-solid fa-scale-balanced"></i></button>
}
else
{
<button class="btn btn-secondary w-100 disabled">Bilancia <i class="fa-solid fa-scale-balanced"></i></button>
}
@if (CurrMode == SetMode.Balance)
{
<div class="d-grid">
<div class="row my-2">
<div class="col-4">
<div class="input-group">
<span class="input-group-text" id="inputGroup-sizing-default">Lungh.Barre</span>
<input type="number" class="form-control text-end" @bind="BarLenght">
<span class="input-group-text" id="inputGroup-sizing-default">mm</span>
</div>
</div>
}
else if (CurrMode == SetMode.AssignOk)
{
<div class="row">
<div class="col-4">
<div class="input-group">
<span class="input-group-text" id="inputGroup-sizing-default">Lungh.Barre</span>
<input type="number" class="form-control text-end" @bind="BarLenght">
<span class="input-group-text" id="inputGroup-sizing-default">mm</span>
</div>
</div>
<div class="col-6">
<div class="input-group">
@if (AllProdGroup != null && AllProdGroup.Count > 0)
</div>
<div class="row mb-2">
<div class="col-10">
@if (AllProdGroup != null && AllProdGroup.Count > 0)
{
<div class="row">
@foreach (var item in AllProdGroup)
{
foreach (var item in AllProdGroup)
{
if (false)
{
@* <span class="input-group-text" id="inputGroup-sizing-default">@item.ProdPlantCod</span>
<input type="number" class="form-control" @bind="@DictPercReq[item.ProdPlantCod]"> *@
}
else
{
<span class="input-group-text" id="inputGroup-sizing-default">@item.PlantListJoin</span>
<input type="number" class="form-control">
}
}
<div class="col input-group">
<span class="input-group-text">@item.PlantListJoin</span>
<input type="number" class="form-control">
</div>
}
</div>
</div>
<div class="col-2">
@if (checkSend)
{
<button class="btn btn-info w-100" @onclick="DirectAssign">Assegna <i class="fa-solid fa-plus"></i></button>
}
else
{
<button class="btn btn-secondary w-100 disabled">Assegna <i class="fa-solid fa-thumbtack"></i></button>
}
</div>
}
</div>
}
<div class="col-2">
@if (checkSend)
{
<button class="btn btn-success w-100" @onclick="ReqBalance">Bilancia <i class="fa-solid fa-scale-balanced"></i></button>
}
else
{
<button class="btn btn-secondary w-100 disabled">Bilancia <i class="fa-solid fa-scale-balanced"></i></button>
}
</div>
</div>
</div>
</div>
<div class="row gap-2">
<div class="col-12">
@if (DetailRecord.NumKo > 0)
{
<div class="card">
<div class="card-header d-flex align-items-center justify-content-between">
}
else if (CurrMode == SetMode.AssignOk)
{
<div class="d-grid">
<div class="row my-2">
<div class="col-4">
<div class="input-group">
<span class="input-group-text" id="inputGroup-sizing-default">Lungh.Barre</span>
<input type="number" class="form-control text-end" @bind="BarLenght">
<span class="input-group-text" id="inputGroup-sizing-default">mm</span>
</div>
</div>
</div>
<div class="row mb-2">
<div class="col-10">
@if (AllProdGroup != null && AllProdGroup.Count > 0)
{
<div class="row">
@foreach (var item in AllProdGroup)
{
<div class="col input-group">
<span class="input-group-text">@item.PlantListJoin</span>
<input type="number" class="form-control">
</div>
}
</div>
}
</div>
<div class="col-2">
@if (checkSend)
{
<button class="btn btn-info w-100" @onclick="DirectAssign">Assegna <i class="fa-solid fa-plus"></i></button>
}
else
{
<button class="btn btn-secondary w-100 disabled">Assegna <i class="fa-solid fa-thumbtack"></i></button>
}
</div>
</div>
</div>
}
<div class="row mt-2 mx-0">
@if (DetailRecord.NumKo > 0)
{
<div class="card px-0 mb-2">
<div class="card-header align-items-center justify-content-between">
<div class="row">
<div class="col-9">Non producibili: <span class="fw-bold px-1">@DetailRecord.NumKo</span></div>
<div class="col-3">
<button class="btn btn-sm btn-danger w-100" @onclick="() => ToggleAssignMode(DetailRecord.ListWorkable, SetMode.AssignUnwork)" title="Assegna per Esclusione / Manuale / Esterno">Escludi <i class="fa-solid fa-triangle-exclamation"></i></button>
</div>
</div>
</div>
}
@if (DetailRecord.NumOkVin > 0)
{
<div class="card mb-2">
<div class="card-header align-items-center justify-content-between">
<div class="row">
<div class="col-9">Vincolati: <span class="fw-bold px-1">@DetailRecord.NumOkVin</span></div>
<div class="col-3">
<button class="btn btn-sm btn-info w-100" @onclick="() => ToggleAssignMode(DetailRecord.ListWorkable, SetMode.AssignOk)">Assegna <i class="fa-solid fa-thumbtack"></i></button>
</div>
</div>
}
@if (DetailRecord.NumOkVin > 0)
{
<div class="card px-0 mb-2">
<div class="card-header align-items-center justify-content-between">
<div class="row">
<div class="col-9">Vincolati: <span class="fw-bold px-1">@DetailRecord.NumOkVin</span></div>
<div class="col-3">
<button class="btn btn-sm btn-info w-100" @onclick="() => ToggleAssignMode(DetailRecord.ListWorkable, SetMode.AssignOk)">Assegna <i class="fa-solid fa-thumbtack"></i></button>
</div>
</div>
<div class="card-body">
<table class="table table-sm table-striped">
<thead>
<tr>
<th class="col-1">
<button class="btn btn-sm btn-success" @onclick="() => ToggleAssignMode(DetailRecord.ListWorkable, SetMode.None)"><i class="fa-solid fa-rotate-right"></i></button>
</th>
<th class="col-6">
Impianti
</th>
<th class="col-2 text-end">
# Parts
</th>
<th class="col-3 text-end">
Time
</th>
</tr>
</thead>
<tbody>
@if (AllProdGroup != null && AllProdGroup.Count > 0)
</div>
<div class="card-body">
<table class="table table-sm table-striped">
<thead>
<tr>
<th class="col-1">
<button class="btn btn-sm btn-success" @onclick="() => ToggleAssignMode(DetailRecord.ListWorkable, SetMode.None)"><i class="fa-solid fa-rotate-right"></i></button>
</th>
<th class="col-6">
Impianti
</th>
<th class="col-2 text-end">
# Parts
</th>
<th class="col-3 text-end">
Time
</th>
</tr>
</thead>
<tbody>
@if (AllProdGroup != null && AllProdGroup.Count > 0)
{
@foreach (var item in AllProdGroup.Where(x => x.NumParts == DetailRecord.NumOkVin))
{
@foreach (var item in AllProdGroup.Where(x => x.NumParts == DetailRecord.NumOkVin))
foreach (var wld in item.WorkGroupList)
{
<tr>
<td></td>
<td>
<button class="btn btn-sm btn-danger" @onclick="() => SendUnworkExt(item.ProdGroupID)" title="Escludi in blocco"><i class="fa-solid fa-arrow-right-from-bracket"></i> <i class="fa-solid fa-triangle-exclamation"></i></button>
</td>
<td>
@item.PlantListJoin
@wld.Key
</td>
<td class="text-end">
@NumParts(item)
@@ -177,201 +169,93 @@
</tr>
}
}
else
{
<tr>
<td colspan="4" class="alert alert-warning">Nessun record trovato!</td>
</tr>
}
</tbody>
</table>
</div>
</div>
}
@if (DetailRecord.NumOk > 0)
{
<div class="card">
<div class="card-header d-flex align-items-center justify-content-between">
<div class="col-9">Producibili ovunque: <span class="fw-bold px-1">@DetailRecord.NumOk</span></div>
<div class="col-3">
<button class="btn btn-sm btn-success w-100" @onclick="() => ToggleAssignMode(DetailRecord.ListWorkable, SetMode.Balance)">Bilancia <i class="fa-solid fa-scale-unbalanced"></i></button>
</div>
</div>
<div class="card-body">
<table class="table table-sm table-striped">
<thead>
}
else
{
<tr>
<th class="col-1">
<button class="btn btn-sm btn-success" @onclick="() => ToggleAssignMode(DetailRecord.ListWorkable, SetMode.None)"><i class="fa-solid fa-rotate-right"></i></button>
</th>
<th class="col-4">
Impianti
</th>
<th class="col-2 text-end">
Time
</th>
<th class="col-2 text-end">
# Parts
</th>
<th class="col-3 text-end">
Max Time
</th>
<td colspan="12" class="alert alert-warning">Nessun record trovato!</td>
</tr>
</thead>
<tbody>
@if (AllProdGroup != null && AllProdGroup.Count > 0)
{
@foreach (var item in AllProdGroup.Where(x => x.NumParts == DetailRecord.NumOk))
{
foreach (var wld in item.WorkGroupList)
{
<tr>
<td>
<button class="btn btn-sm btn-danger" @onclick="() => SendUnworkExt(item.ProdGroupID)" title="Escludi in blocco"><i class="fa-solid fa-arrow-right-from-bracket"></i> <i class="fa-solid fa-triangle-exclamation"></i></button>
</td>
<td>
@* @item.PlantListJoin *@
@wld.Key
</td>
<td class="text-end">
<div>@DisplayDurata(wld.Value.Time)</div>
</td>
<td class="text-end text-secondary">
@NumParts(item)
</td>
<td class="text-end text-secondary">
@DisplayDurata(item)
</td>
</tr>
}
}
}
else
{
<tr>
<td colspan="4" class="alert alert-warning">Nessun record trovato!</td>
</tr>
}
</tbody>
</table>
</div>
}
</tbody>
</table>
</div>
}
</div>
</div>
<div class="row justify-content-end">
<div>
<button class="btn btn-warning" @onclick="ForceResetAssign">Reset Assegnazioni</button>
</div>
</div>
@* <div class="col-6">
<ul class="list-group">
@if (DetailRecord.NumKo > 0)
{
<li class="list-group-item d-flex align-items-center justify-content-between">
<div class="col-9">Non producibili: <span class="fw-bold px-1">@DetailRecord.NumKo</span></div>
<div class="col-3">
<button class="btn btn-sm btn-danger w-100" @onclick="() => ToggleAssignMode(DetailRecord.ListWorkable, SetMode.AssignUnwork)" title="Assegna per Esclusione / Manuale / Esterno">Escludi <i class="fa-solid fa-triangle-exclamation"></i></button>
</div>
</li>
}
@if (DetailRecord.NumOkVin > 0)
{
<li class="list-group-item d-flex align-items-center justify-content-between">
<div class="col-9">Vincolati: <span class="fw-bold px-1">@DetailRecord.NumOkVin</span></div>
<div class="col-3">
<button class="btn btn-sm btn-info w-100" @onclick="() => ToggleAssignMode(DetailRecord.ListWorkable, SetMode.AssignOk)">Assegna <i class="fa-solid fa-thumbtack"></i></button>
</div>
</li>
}
@if (DetailRecord.NumOk > 0)
{
<li class="list-group-item d-flex align-items-center justify-content-between">
</div>
}
@if (DetailRecord.NumOk > 0)
{
<div class="card px-0">
<div class="card-header align-items-center justify-content-between">
<div class="row">
<div class="col-9">Producibili ovunque: <span class="fw-bold px-1">@DetailRecord.NumOk</span></div>
<div class="col-3">
<button class="btn btn-sm btn-success w-100" @onclick="() => ToggleAssignMode(DetailRecord.ListWorkable, SetMode.Balance)">Bilancia <i class="fa-solid fa-scale-unbalanced"></i></button>
</div>
</li>
}
</ul>
</div>
<div class="col-6">
<table class="table table-sm table-striped">
<thead>
<tr>
<th>
<button class="btn btn-sm btn-success" @onclick="() => ToggleAssignMode(DetailRecord.ListWorkable, SetMode.None)"><i class="fa-solid fa-rotate-right"></i></button>
</th>
<th>
Impianti
</th>
<th class="text-end">
# Parts
</th>
<th class="text-end">
Time
</th>
</tr>
</thead>
<tbody>
@*
@if (AllProdAss != null && AllProdAss.Count > 0)
{
@foreach (var item in AllProdAss)
{
</div>
</div>
<div class="card-body">
<table class="table table-sm table-striped">
<thead>
<tr>
<td>
@if (CurrMode == SetMode.AssignUnwork && item.ProdPlantCod.Contains("EXT"))
<th class="col-1">
<button class="btn btn-sm btn-success" @onclick="() => ToggleAssignMode(DetailRecord.ListWorkable, SetMode.None)"><i class="fa-solid fa-rotate-right"></i></button>
</th>
<th class="col-4">
Impianti
</th>
<th class="col-2 text-end">
Time
</th>
<th class="col-2 text-end">
# Parts
</th>
<th class="col-3 text-end">
Max Time
</th>
</tr>
</thead>
<tbody>
@if (AllProdGroup != null && AllProdGroup.Count > 0)
{
@foreach (var item in AllProdGroup.Where(x => x.NumParts == DetailRecord.NumOk))
{
foreach (var wld in item.WorkGroupList)
{
<button class="btn btn-sm btn-danger" @onclick="() => SendUnworkExt(item.ProdAssignID)" title="Escludi in blocco"><i class="fa-solid fa-arrow-right-from-bracket"></i> <i class="fa-solid fa-triangle-exclamation"></i></button>
<tr>
<td></td>
<td>
@wld.Key
</td>
<td class="text-end">
<div>@DisplayDurata(wld.Value.Time)</div>
</td>
<td class="text-end text-secondary">
@NumParts(item)
</td>
<td class="text-end text-secondary">
@DisplayDurata(item)
</td>
</tr>
}
</td>
<td>
@item.ProdPlantCod
</td>
<td class="text-end">
@item.NumParts / @($"{NumPartRatio(item.NumParts):P1}")
</td>
<td class="text-end">
@item.TotalEstimTime / @($"{TotMaxTimeRatio(item.TotalEstimTime):P1}")
</td>
</tr>
}
}
@if (AllProdGroup != null && AllProdGroup.Count > 0)
{
@foreach (var item in AllProdGroup)
{
<tr>
<td>
@item.PlantListJoin
</td>
<td class="text-end">
@NumParts(item)
</td>
<td class="text-end">
@DisplayDurata(item)
</td>
</tr>
}
}
else
{
<tr>
<td colspan="4" class="alert alert-warning">Nessun record trovato!</td>
</tr>
}
</tbody>
<tfoot>
<tr>
<td colspan="4">
<button class="btn btn-warning" @onclick="ForceResetAssign">Reset Assegnazioni</button>
</td>
</tr>
</tfoot>
</table>
</div> *@
}
}
else
{
<tr>
<td colspan="12" class="alert alert-warning">Nessun record trovato!</td>
</tr>
}
</tbody>
</table>
</div>
</div>
}
</div>
<div class="d-grid gap-1 d-md-flex justify-content-md-end">
<button class="btn btn-primary mx-4" @onclick="() => ReRunJob()">
<i class="fa-solid fa-share-from-square mx-1" title="Riesecuzione Estimate"></i>Re-Run
</button>
<button class="btn btn-warning" @onclick="ForceResetAssign">Reset Assegnazioni</button>
</div>
</div>
</div>
</div>
+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>1.1.2606.2615</Version>
<Version>1.1.2606.2617</Version>
</PropertyGroup>
<ItemGroup>
+1 -1
View File
@@ -1,6 +1,6 @@
<body>
<i>LUX - Web Windows MES</i>
<h4>Versione: 1.1.2606.2615</h4>
<h4>Versione: 1.1.2606.2617</h4>
<br /> Note di rilascio:
<ul>
<li>
+1 -1
View File
@@ -1 +1 @@
1.1.2606.2615
1.1.2606.2617
+1 -1
View File
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<item>
<version>1.1.2606.2615</version>
<version>1.1.2606.2617</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>