Ancora update x test KIT
This commit is contained in:
@@ -71,6 +71,7 @@ namespace MP.Core
|
||||
public const string redisXdlData = redisBaseAddr + "Cache:XDL:";
|
||||
|
||||
public const string redisKitInst = redisBaseAddr + "Cache:Kit:Inst";
|
||||
public const string redisKitScore = redisBaseAddr + "Cache:Kit:Score";
|
||||
public const string redisKitTempl = redisBaseAddr + "Cache:Kit:Templ";
|
||||
public const string redisKitWip = redisBaseAddr + "Cache:Kit:Wip";
|
||||
|
||||
|
||||
@@ -1790,6 +1790,32 @@ namespace MP.Data.Controllers
|
||||
return fatto;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Punteggio compatibilità KIT per KeyFilt indicato
|
||||
/// </summary>
|
||||
/// <param name="KeyFilt"></param>
|
||||
/// <param name="MaxResult"></param>
|
||||
/// <returns></returns>
|
||||
public List<TksScoreModel> TksScore(string KeyFilt, int MaxResult)
|
||||
{
|
||||
List<TksScoreModel> dbResult = new List<TksScoreModel>();
|
||||
if (!string.IsNullOrEmpty(KeyFilt))
|
||||
{
|
||||
using (var dbCtx = new MoonProContext(_configuration))
|
||||
{
|
||||
var pKeyFilt = new SqlParameter("@KeyFilt", KeyFilt);
|
||||
var pMaxRes = new SqlParameter("@maxResult", MaxResult);
|
||||
|
||||
dbResult = dbCtx
|
||||
.DbSetTksScore
|
||||
.FromSqlRaw("EXEC stp_TKS_Search @KeyFilt, @maxResult", pKeyFilt, pMaxRes)
|
||||
.AsNoTracking()
|
||||
.ToList();
|
||||
}
|
||||
}
|
||||
return dbResult;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Elenco Vocabolario (completo)
|
||||
/// </summary>
|
||||
|
||||
@@ -0,0 +1,45 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
// <Auto-Generated>
|
||||
// This is here so CodeMaid doesn't reorganize this document
|
||||
// </Auto-Generated>
|
||||
namespace MP.Data.DbModels
|
||||
{
|
||||
/// <summary>
|
||||
/// Classe gestione item risposta selezione stored ricerca compatibilità KIT
|
||||
/// </summary>
|
||||
public class TksScoreModel
|
||||
{
|
||||
#region Public Properties
|
||||
|
||||
/// <summary>
|
||||
/// Codice Articolo Parent
|
||||
/// </summary>
|
||||
[Key, MaxLength(50)]
|
||||
public string CodArtParent { get; set; } = "";
|
||||
|
||||
/// <summary>
|
||||
/// Numero Cicli Associati
|
||||
/// </summary>
|
||||
public int ChildFound { get; set; } = 0;
|
||||
|
||||
/// <summary>
|
||||
/// Score Cicli Associati
|
||||
/// </summary>
|
||||
public double ChildScore { get; set; } = 0;
|
||||
/// <summary>
|
||||
/// Score complessivo
|
||||
/// </summary>
|
||||
public double TotalScore { get; set; } = 0;
|
||||
|
||||
|
||||
|
||||
#endregion Public Properties
|
||||
}
|
||||
}
|
||||
@@ -102,6 +102,7 @@ namespace MP.Data
|
||||
public virtual DbSet<IstanzeKitModel> DbSetInstKit { get; set; }
|
||||
public virtual DbSet<TemplateKitModel> DbSetTempKit { get; set; }
|
||||
public virtual DbSet<WipSetupKitModel> DbSetWipKit { get; set; }
|
||||
public virtual DbSet<TksScoreModel> DbSetTksScore { get; set; }
|
||||
|
||||
#endregion Public Properties
|
||||
|
||||
|
||||
@@ -1,7 +0,0 @@
|
||||
namespace MP.SPEC.Components
|
||||
{
|
||||
public partial class GestKitPodl
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
@@ -1,7 +0,0 @@
|
||||
namespace MP.SPEC.Components
|
||||
{
|
||||
public partial class GestKitVerif
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
+2
-2
@@ -2,7 +2,7 @@
|
||||
<div class="card-header bg-primary text-light">
|
||||
<div class="d-flex justify-content-between">
|
||||
<div class="px-0">
|
||||
<h4>Composizione KIT</h4>
|
||||
<h4>Composizione KIT</h4>
|
||||
</div>
|
||||
<div class="px-0">
|
||||
<button @onclick="() => CleanupOld()" class="btn btn-danger btn-sm2"><i class="fa-solid fa-recycle"></i></button>
|
||||
@@ -59,7 +59,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-footer py-1 bg-primary text-light">
|
||||
Cod temp: <b>@KeyFilt</b>
|
||||
TempKey: <b>@KeyFilt</b>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
+7
-4
@@ -5,10 +5,13 @@ using MP.SPEC.Data;
|
||||
|
||||
namespace MP.SPEC.Components.ProdKit
|
||||
{
|
||||
public partial class Composer
|
||||
public partial class KitComposer
|
||||
{
|
||||
#region Public Properties
|
||||
|
||||
[Parameter]
|
||||
public string KeyFilt { get; set; } = "";
|
||||
|
||||
[Parameter]
|
||||
public PODLExpModel? Rec2Add
|
||||
{
|
||||
@@ -77,13 +80,14 @@ namespace MP.SPEC.Components.ProdKit
|
||||
// calcolo codice temporaneo utente...da apertura KIT
|
||||
if (string.IsNullOrEmpty(KeyFilt))
|
||||
{
|
||||
DateTime adesso = DateTime.Now;
|
||||
KeyFilt = $"KIT_{adesso:yyMMdd}_{adesso:HHmmss}";
|
||||
// elimino dati + vecchi di 2h...
|
||||
DateTime dtLimit = DateTime.Now.AddHours(-2);
|
||||
var done = MDService.WipKitDeleteOlder(dtLimit);
|
||||
}
|
||||
}
|
||||
|
||||
protected override void OnParametersSet()
|
||||
{
|
||||
ReloadData();
|
||||
}
|
||||
|
||||
@@ -92,7 +96,6 @@ namespace MP.SPEC.Components.ProdKit
|
||||
#region Private Fields
|
||||
|
||||
private PODLExpModel? currRec = null;
|
||||
private string KeyFilt = "";
|
||||
private List<WipSetupKitModel> ListRecords = new List<WipSetupKitModel>();
|
||||
|
||||
private List<WipSetupKitModel> SearchRecord = new List<WipSetupKitModel>();
|
||||
+1
-1
@@ -8,7 +8,7 @@ using NLog;
|
||||
|
||||
namespace MP.SPEC.Components.ProdKit
|
||||
{
|
||||
public partial class PodlMan : IDisposable
|
||||
public partial class KitPodlMan : IDisposable
|
||||
{
|
||||
#region Public Properties
|
||||
|
||||
+48
-15
@@ -1,11 +1,44 @@
|
||||
<div class="card">
|
||||
<div class="card-header bg-success text-light">
|
||||
<h4>Verifica KIT</h4>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="card">
|
||||
<div class="card-header bg-success text-light">
|
||||
<div class="d-flex justify-content-between">
|
||||
<div class="px-0">
|
||||
<h4>Verifica KIT</h4>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<b>Elenco KIT compatibili</b>
|
||||
<p>...tabella...</p>
|
||||
@* <asp:GridView runat="server" ID="grViewKitSel" DataSourceID="odsKitSel" AutoGenerateColumns="False" CssClass="table table-striped table-sm" DataKeyNames="CodArtParent" OnSelectedIndexChanged="grViewKitSel_SelectedIndexChanged">
|
||||
<table class="table table-sm table-striped">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Cod Kit</th>
|
||||
<th># OK</th>
|
||||
<th>Coerenza</th>
|
||||
<th>Azione</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach (var record in ListRecords)
|
||||
{
|
||||
<tr>
|
||||
<td>@record.CodArtParent</td>
|
||||
<td>@record.ChildFound</td>
|
||||
<td>@($"{record.TotalScore:P2}")</td>
|
||||
<td>
|
||||
@if (record.TotalScore == 1)
|
||||
{
|
||||
<button @onclick="() => DoCreatePOdl(record)" class="btn btn-success btn-sm"><i class="fa-solid fa-plus"></i> Prom ODL</button>
|
||||
}
|
||||
else
|
||||
{
|
||||
<button class="btn btn-secondary disabled btn-sm"><i class="fa-solid fa-plus"></i> Prom ODL</button>
|
||||
}
|
||||
</td>
|
||||
</tr>
|
||||
}
|
||||
</tbody>
|
||||
</table>
|
||||
@* <asp:GridView runat="server" ID="grViewKitSel" DataSourceID="odsKitSel" AutoGenerateColumns="False" CssClass="table table-striped table-sm" DataKeyNames="CodArtParent" OnSelectedIndexChanged="grViewKitSel_SelectedIndexChanged">
|
||||
<EmptyDataTemplate>
|
||||
Nessun KIT trovato
|
||||
</EmptyDataTemplate>
|
||||
@@ -27,10 +60,10 @@
|
||||
<asp:Parameter DefaultValue="2" Name="maxResult" Type="Int32" />
|
||||
</SelectParameters>
|
||||
</asp:ObjectDataSource> *@
|
||||
<div runat="server" id="divPODL">
|
||||
<div runat="server" id="divPODL">
|
||||
<b>Elenco promesse per KIT (100%)</b>
|
||||
<p>...tabella...</p>
|
||||
@* <asp:GridView runat="server" ID="grViewPODL" DataSourceID="odsPODL" CssClass="table table-sm table-striped" AutoGenerateColumns="False" DataKeyNames="idxPromessa">
|
||||
@* <asp:GridView runat="server" ID="grViewPODL" DataSourceID="odsPODL" CssClass="table table-sm table-striped" AutoGenerateColumns="False" DataKeyNames="idxPromessa">
|
||||
<Columns>
|
||||
<asp:BoundField DataField="idxPromessa" HeaderText="#" InsertVisible="False" ReadOnly="True" SortExpression="idxPromessa" />
|
||||
<asp:TemplateField HeaderText="Cod.KIT" SortExpression="KeyRichiesta">
|
||||
@@ -68,11 +101,11 @@
|
||||
</SelectParameters>
|
||||
</asp:ObjectDataSource>
|
||||
<asp:HiddenField runat="server" ID="hfCodArtKit" /> *@
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-footer py-1 bg-success text-light">
|
||||
Abilitato se = 100%
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-footer py-1 bg-success text-light">
|
||||
TempKey: <b>@KeyFilt</b> | Abilitato se = 100%
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -0,0 +1,41 @@
|
||||
using Microsoft.AspNetCore.Components;
|
||||
using Microsoft.JSInterop;
|
||||
using MP.Data.DbModels;
|
||||
using MP.SPEC.Data;
|
||||
|
||||
namespace MP.SPEC.Components.ProdKit
|
||||
{
|
||||
public partial class KitVerify
|
||||
{
|
||||
|
||||
[Parameter]
|
||||
public string KeyFilt { get; set; } = "";
|
||||
|
||||
|
||||
[Inject]
|
||||
protected IJSRuntime JSRuntime { get; set; } = null!;
|
||||
|
||||
[Inject]
|
||||
protected MpDataService MDService { get; set; } = null!;
|
||||
|
||||
protected override void OnParametersSet()
|
||||
{
|
||||
ReloadData();
|
||||
}
|
||||
|
||||
private List<TksScoreModel> ListRecords = new List<TksScoreModel>();
|
||||
|
||||
private List<TksScoreModel> SearchRecord = new List<TksScoreModel>();
|
||||
|
||||
private void ReloadData()
|
||||
{
|
||||
SearchRecord = MDService.TksScore(KeyFilt, 1000, true);
|
||||
ListRecords = SearchRecord.ToList();
|
||||
}
|
||||
|
||||
private void DoCreatePOdl(TksScoreModel currRec)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,12 +1,12 @@
|
||||
<div class="row">
|
||||
<div class="col-6">
|
||||
<PodlMan PadCodXdl="@padCodXdl" EC_RecordSel="SavePodl"></PodlMan>
|
||||
<KitPodlMan PadCodXdl="@padCodXdl" EC_RecordSel="SavePodl"></KitPodlMan>
|
||||
</div>
|
||||
<div class="col-6">
|
||||
<Composer Rec2Add="@currPodlRec"></Composer>
|
||||
<KitComposer Rec2Add="@currPodlRec" KeyFilt="@keyFilt"></KitComposer>
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<GestKitVerif></GestKitVerif>
|
||||
<KitVerify KeyFilt="@keyFilt"></KitVerify>
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<GestKitPodl></GestKitPodl>
|
||||
|
||||
@@ -22,8 +22,18 @@ namespace MP.SPEC.Components.ProdKit
|
||||
padCodXdl = MDService.ConfigTryGet("padCodXdl");
|
||||
}
|
||||
currPodlRec = null;
|
||||
|
||||
// Verifico chiave Kit o la rigenero
|
||||
if (string.IsNullOrEmpty(keyFilt))
|
||||
{
|
||||
DateTime adesso = DateTime.Now;
|
||||
keyFilt = $"KIT_{adesso:yyMMdd}_{adesso:HHmmss}";
|
||||
keyFiltSearch = keyFilt;
|
||||
}
|
||||
}
|
||||
|
||||
private string keyFilt = "";
|
||||
private string keyFiltSearch = "";
|
||||
#endregion Protected Methods
|
||||
|
||||
#region Private Fields
|
||||
@@ -36,7 +46,9 @@ namespace MP.SPEC.Components.ProdKit
|
||||
/// <param name="selRec"></param>
|
||||
protected void SavePodl(PODLExpModel selRec)
|
||||
{
|
||||
keyFiltSearch = "KIT#";
|
||||
currPodlRec = selRec;
|
||||
keyFiltSearch = keyFilt;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
@@ -2042,6 +2042,43 @@ namespace MP.SPEC.Data
|
||||
return fatto;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Punteggio compatibilità KIT per KeyFilt indicato
|
||||
/// </summary>
|
||||
/// <param name="KeyFilt"></param>
|
||||
/// <param name="MaxResult"></param>
|
||||
/// <param name="ForceDb"></param>
|
||||
/// <returns></returns>
|
||||
public List<TksScoreModel> TksScore(string KeyFilt, int MaxResult, bool ForceDb)
|
||||
{
|
||||
string source = "DB";
|
||||
Stopwatch sw = new Stopwatch();
|
||||
sw.Start();
|
||||
List<TksScoreModel>? result = new List<TksScoreModel>();
|
||||
// cerco in redis...
|
||||
string currKey = $"{Utils.redisKitScore}:{KeyFilt}:{MaxResult}";
|
||||
RedisValue rawData = redisDb.StringGet(currKey);
|
||||
if (rawData.HasValue && !ForceDb)
|
||||
{
|
||||
result = JsonConvert.DeserializeObject<List<TksScoreModel>>($"{rawData}");
|
||||
source = "REDIS";
|
||||
}
|
||||
else
|
||||
{
|
||||
result = dbController.TksScore(KeyFilt, MaxResult);
|
||||
// serializzo e salvo...
|
||||
rawData = JsonConvert.SerializeObject(result);
|
||||
redisDb.StringSet(currKey, rawData, TimeSpan.FromMinutes(redisLongTimeCache));
|
||||
}
|
||||
if (result == null)
|
||||
{
|
||||
result = new List<TksScoreModel>();
|
||||
}
|
||||
sw.Stop();
|
||||
Log.Debug($"TksScore | {source} | {sw.Elapsed.TotalMilliseconds}ms");
|
||||
return result;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Esegue traduzione dato vocabolario da Lingua + Lemma
|
||||
/// </summary>
|
||||
@@ -2155,7 +2192,7 @@ namespace MP.SPEC.Data
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Elimina i record associati al KeyFilt indicato
|
||||
/// Elimina i record associati al keyFilt indicato
|
||||
/// </summary>
|
||||
/// <param name="KeyFilt"></param>
|
||||
public bool WipKitDeleteGroup(string KeyFilt)
|
||||
|
||||
Reference in New Issue
Block a user