Fix selezione ODL quando disponibile....

This commit is contained in:
Samuele Locatelli
2023-11-06 19:57:46 +01:00
parent 705eeb56df
commit 6432bde3fa
8 changed files with 196 additions and 28 deletions
+97 -5
View File
@@ -31,13 +31,109 @@
</div>
}
@if (showOdlDetail)
{
<div class="col-12">
<div class="card">
<div class="card-header bg-warning text-light">
<h4>Verifica parametri attrezzaggio</h4>
</div>
<div class="card-body">
<div class="row">
<div class="col d-flex justify-content-between">
<div class="px-0 small">
P.ODL:
</div>
<div class="px-0 text-end fw-bold">
@currPodl.IdxPromessa.ToString("N0")
</div>
</div>
<div class="col d-flex justify-content-between">
<div class="px-0 small">
Rif:
</div>
<div class="px-0 text-end fw-bold">
@currPodl.KeyRichiesta
</div>
</div>
<div class="col d-flex justify-content-between">
<div class="px-0 small">
Cod:
</div>
<div class="px-0 text-end fw-bold">
@currPodl.CodArticolo
</div>
</div>
</div>
<div class="row border-top border-bottom border-secondary">
<div class="col d-flex justify-content-between">
<div class="px-0 small">
Articolo:
</div>
<div class="px-0 text-end fw-bold">
@currPodl.DescArticolo
</div>
</div>
</div>
<div class="row">
<div class="col d-flex justify-content-between">
<div class="px-0 small">
Pezzi:
</div>
<div class="px-0 text-end fw-bold">
@currPodl.NumPezzi.ToString("N0")
</div>
</div>
<div class="col d-flex justify-content-between">
<div class="px-0 small">
TCiclo:
</div>
<div class="px-0 text-end fw-bold">
@currPodl.Tcassegnato.ToString("N2")
</div>
</div>
<div class="col d-flex justify-content-between">
<div class="px-0 small">
Pz/pallet:
</div>
<div class="px-0 text-end fw-bold">
@currPodl.PzPallet
</div>
</div>
</div>
</div>
<div class="card-footer">
<div class="row">
<div class="col text-start fw-bold">
@currPodl.Nome
</div>
<div class="col d-flex justify-content-between">
<div class="px-0 small">
Priorita:
</div>
<div class="px-0 text-end fw-bold">
@currPodl.Priorita
</div>
</div>
<div class="col d-flex justify-content-between">
<div class="px-0 small">
Data:
</div>
<div class="px-0 text-end fw-bold">
@($"{currPodl.DueDate:yyyy.MM.dd}")
</div>
</div>
</div>
</div>
</div>
</div>
}
<div class="d-flex justify-content-between flex-wrap">
<div class="col-12 col-sm-12 col-md-6 p-2">
<div class="input-group input-group-lg">
<input type="text" class="form-control w-25" placeholder="Cerca" aria-label="Cerca">
<select class="form-select w-50" @bind="IdxOdlSel">
<option disabled>Selezionare P.ODL</option>
@foreach (var item in ListODL)
{
<option value="@item.value">@item.label</option>
@@ -59,10 +155,6 @@
}
</div>
</div>
@if (showOdlDetail)
{
<p>...dettaglio ODL...</p>
}
+30 -19
View File
@@ -30,6 +30,24 @@ namespace MP_TAB_SERV.Components
#region Protected Properties
protected int IdxOdlSel
{
get => idxOdlSel;
set
{
if (idxOdlSel != value)
{
idxOdlSel = value;
showOdlDetail = value > 0;
var pUpd = Task.Run(async () =>
{
await ReloadPOdlDetailData();
});
pUpd.Wait();
}
}
}
protected List<vSelOdlModel> ListODL { get; set; } = new List<vSelOdlModel>();
[Inject]
@@ -175,34 +193,20 @@ namespace MP_TAB_SERV.Components
#region Private Properties
private PODLExpModel currPodl { get; set; } = new PODLExpModel();
/// <summary>
/// Variabile idxMacc parent x selezione ODL
/// </summary>
private string IdxMaccParent { get; set; } = "";
protected int IdxOdlSel
{
get => idxOdlSel;
set
{
if (idxOdlSel != value)
{
idxOdlSel = value;
//var pUpd = Task.Run(async () =>
//{
// await ReloadData(true);
//});
//pUpd.Wait();
}
}
}
private int idxOdlSel { get; set; } = 0;
private int IdxOdl
{
get => RecMSE != null ? RecMSE.IdxOdl ?? 0 : 0;
}
private int idxOdlSel { get; set; } = 0;
private string lblWarnBody
{
get => odlOk ? Traduci("ConfProdBeforeContinueBody") : Traduci("setOdlBeforeContinueBody");
@@ -222,7 +226,6 @@ namespace MP_TAB_SERV.Components
{
answ = prodMacchina.pezziNonConfermati > 0 && !isSlave;
}
//(RecMSE != null && RecMSE.PezziProd > RecMSE.PezziConf);
return answ;
}
}
@@ -317,6 +320,14 @@ namespace MP_TAB_SERV.Components
}
}
private async Task ReloadPOdlDetailData()
{
if (IdxOdlSel > 0)
{
currPodl = await TabDServ.PODLExp_getByKey(IdxOdlSel);
}
}
#endregion Private Methods
}
}
+1 -1
View File
@@ -3,7 +3,7 @@
<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<Nullable>enable</Nullable>
<Version>6.16.2311.618</Version>
<Version>6.16.2311.619</Version>
<ImplicitUsings>enable</ImplicitUsings>
<RootNamespace>MP_TAB_SERV</RootNamespace>
</PropertyGroup>
+1 -1
View File
@@ -1,6 +1,6 @@
<body>
<i>Modulo MAPOSPEC </i>
<h4>Versione: 6.16.2311.618</h4>
<h4>Versione: 6.16.2311.619</h4>
<br /> Note di rilascio:
<ul>
<li>
+1 -1
View File
@@ -1 +1 @@
6.16.2311.618
6.16.2311.619
+1 -1
View File
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<item>
<version>6.16.2311.618</version>
<version>6.16.2311.619</version>
<url>https://nexus.steamware.net/repository/SWS/MP-TAB-SERV/stable/LAST/MP-TAB-SERV.zip</url>
<changelog>https://nexus.steamware.net/repository/SWS/MP-TAB-SERV/stable/LAST/ChangeLog.html</changelog>
<mandatory>false</mandatory>
+30
View File
@@ -825,6 +825,36 @@ namespace MP.Data.Controllers
}
return fatto;
}
/// <summary>
/// Recupero PODL da chiave
/// </summary>
/// <param name="idxPODL"></param>
/// <returns></returns>
public PODLExpModel PODLExp_getByKey(int idxPODL)
{
PODLExpModel dbResult = new PODLExpModel();
using (var dbCtx = new MoonProContext(_configuration))
{
try
{
var IdxPromessa = new SqlParameter("@IdxPromessa", idxPODL);
var rawResult = dbCtx
.DbSetPODLExp
.FromSqlRaw("EXEC stp_PODL_getByIdx @IdxPromessa", IdxPromessa)
.AsNoTracking()
.ToList();
if (rawResult != null && rawResult.Count > 0)
{
dbResult = rawResult.FirstOrDefault();
}
}
catch (Exception exc)
{
Log.Error($"Eccezione durante PODL_getByKey{Environment.NewLine}{exc}");
}
}
return dbResult;
}
/// <summary>
/// Stato prod macchina
+35
View File
@@ -1156,6 +1156,41 @@ namespace MP.Data.Services
return result;
}
/// <summary>
/// Recupero PODL da chiave
/// </summary>
/// <param name="idxPODL"></param>
/// <returns></returns>
public async Task<PODLExpModel> PODLExp_getByKey(int idxPODL)
{
string source = "DB";
Stopwatch sw = new Stopwatch();
sw.Start();
PODLExpModel result = new PODLExpModel();
// cerco in redis...
string currKey = $"{redisBaseKey}:PODL:{idxPODL}";
RedisValue rawData = await redisDb.StringGetAsync(currKey);
if (rawData.HasValue)
{
result = JsonConvert.DeserializeObject<PODLExpModel>($"{rawData}");
source = "REDIS";
}
else
{
result = await Task.FromResult(dbTabController.PODLExp_getByKey(idxPODL));
// serializzp e salvo...
rawData = JsonConvert.SerializeObject(result);
await redisDb.StringSetAsync(currKey, rawData, UltraLongCache);
}
if (result == null)
{
result = new PODLExpModel();
}
sw.Stop();
Log.Debug($"PODL_getByKey | {source} | {sw.Elapsed.TotalMilliseconds}ms");
return result;
}
/// <summary>
/// Restituisce elenco RC filtrato
/// </summary>