TAB3:
- aggiunta pagina elenco conferme prod
This commit is contained in:
@@ -33,7 +33,7 @@ namespace MP_TAB3.Components
|
||||
await Task.Delay(1);
|
||||
if (!string.IsNullOrEmpty(IdxMaccSel))
|
||||
{
|
||||
ListComplete = await TabDServ.RegControlliFilt(IdxMaccSel, IdxOdl, CurrPeriodo.Inizio, CurrPeriodo.Fine, false);
|
||||
ListComplete = await TabDServ.RegControlliFiltAsync(IdxMaccSel, IdxOdl, CurrPeriodo.Inizio, CurrPeriodo.Fine, false);
|
||||
TotalCount = ListComplete.Count;
|
||||
// esegue paginazione
|
||||
UpdateTable();
|
||||
|
||||
@@ -0,0 +1,77 @@
|
||||
<MachSel RecMSE="RecMSE" E_MachSel="SetMacc"></MachSel>
|
||||
|
||||
<ShowProcessing Message="Caricamento" IsProcessing="@isProcessing"></ShowProcessing>
|
||||
|
||||
<div class="cardObj p-2 mt-2">
|
||||
<div class="mb-1 fs-6">
|
||||
<div class="row">
|
||||
<div class="col-6">
|
||||
<h2>Tipo Selezione</h2>
|
||||
</div>
|
||||
<div class="col-6">
|
||||
<div class="form-check form-switch fs-3">
|
||||
<input class="form-check-input" type="checkbox" @bind="@UseOdl">
|
||||
<label class="form-check-label">@selMessage</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@if (useOdl)
|
||||
{
|
||||
<MachineSelOdl IdxMacchina="@IdxMaccSel" E_OdlSel="SetOdl"></MachineSelOdl>
|
||||
}
|
||||
else
|
||||
{
|
||||
<EgwCoreLib.Razor.PeriodoSel CurrPeriodo="CurrPeriodo" E_PeriodoSel="SetPeriodo"></EgwCoreLib.Razor.PeriodoSel>
|
||||
}
|
||||
</div>
|
||||
<div class="bg-secondary p-1 mb-1">
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
<table class="table table-dark table-sm table-striped">
|
||||
<thead>
|
||||
<tr class="text-start1">
|
||||
<th>DataOra</th>
|
||||
<th>ODL/Comm</th>
|
||||
<th>Articolo</th>
|
||||
<th class="text-end"># Pz Conf</th>
|
||||
<th class="text-end"># Pz Scarto</th>
|
||||
@if (ShowRilav)
|
||||
{
|
||||
<th class="text-end"># Pz Rilav</th>
|
||||
}
|
||||
<th class="text-end">Operatore</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach (var item in ListPaged)
|
||||
{
|
||||
var actOdl = ActiveOdl(item.DataTo);
|
||||
<tr>
|
||||
<td class="text-nowrap">
|
||||
<div>@($"{item.DataOraConf:yyyy-MM-dd}")</div>
|
||||
<div>@($"{item.DataOraConf:ddd, HH:mm:ss}")</div>
|
||||
</td>
|
||||
|
||||
<td class="text-nowrap">
|
||||
<div>@($"ODL{actOdl.IdxOdl:00000000}")</div>
|
||||
<div>@item.CommessaEsterna</div>
|
||||
</td>
|
||||
<td class="fs-4 fw-bold">@actOdl.CodArticolo</td>
|
||||
<td class="fs-4 fw-bold text-end">@item.PezziConf</td>
|
||||
<td class="fs-4 fw-bold text-end text-danger">@item.PezziScar</td>
|
||||
@if (ShowRilav)
|
||||
{
|
||||
<td class="text-end">@item.PezziDaRilav</td>
|
||||
}
|
||||
<td class="text-end">@OperDto(item.MatrApp)</td>
|
||||
</tr>
|
||||
}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="cad-footer">
|
||||
<EgwCoreLib.Razor.DataPager currPage="@PageNum" PageSize="@NumRecPage" totalCount="@TotalCount" numPageChanged="SetPage" numRecordChanged="SetNumRec"></EgwCoreLib.Razor.DataPager>
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,312 @@
|
||||
using Microsoft.AspNetCore.Components;
|
||||
using MP.Data.DbModels;
|
||||
using MP.Data.Services;
|
||||
using NLog;
|
||||
using static EgwCoreLib.Utils.DtUtils;
|
||||
|
||||
namespace MP_TAB3.Components
|
||||
{
|
||||
public partial class ProdConfMan
|
||||
{
|
||||
#region Public Properties
|
||||
|
||||
[Parameter]
|
||||
public EventCallback<string> E_MachSel { get; set; }
|
||||
|
||||
[Parameter]
|
||||
public EventCallback<bool> E_Updated { get; set; }
|
||||
|
||||
[Parameter]
|
||||
public string IdxMacchSub { get; set; } = "";
|
||||
|
||||
[Parameter]
|
||||
public bool ShowRilav { get; set; } = false;
|
||||
|
||||
[Parameter]
|
||||
public MappaStatoExplModel? RecMSE { get; set; } = null;
|
||||
|
||||
#endregion Public Properties
|
||||
|
||||
#region Protected Properties
|
||||
|
||||
protected List<ElencoConfermeProdModel> ListComplete { get; set; } = new List<ElencoConfermeProdModel>();
|
||||
|
||||
protected List<ElencoConfermeProdModel> ListPaged { get; set; } = new List<ElencoConfermeProdModel>();
|
||||
|
||||
[Inject]
|
||||
protected MessageService MServ { get; set; } = null!;
|
||||
|
||||
[Inject]
|
||||
protected SharedMemService SMServ { get; set; } = null!;
|
||||
|
||||
[Inject]
|
||||
protected TabDataService TabDServ { get; set; } = null!;
|
||||
|
||||
#endregion Protected Properties
|
||||
|
||||
#region Protected Methods
|
||||
|
||||
protected override async Task OnInitializedAsync()
|
||||
{
|
||||
await Task.Delay(1);
|
||||
await ReloadBaseList();
|
||||
if (RecMSE != null)
|
||||
{
|
||||
IdxMaccSel = RecMSE.IdxMacchina;
|
||||
isMulti = SMServ.DictMacchMulti[IdxMaccSel] == 1;
|
||||
if (isMulti)
|
||||
{
|
||||
var idxMSel = MServ.UserPrefGet(IdxMaccSel);
|
||||
if (!string.IsNullOrEmpty(idxMSel))
|
||||
{
|
||||
IdxMaccSel = idxMSel;
|
||||
}
|
||||
}
|
||||
setupPeriodo();
|
||||
await ReloadData();
|
||||
}
|
||||
}
|
||||
|
||||
private void setupPeriodo()
|
||||
{
|
||||
DateTime fine = DateTime.Today.AddDays(1);
|
||||
DateTime inizio = fine.AddDays(-7);
|
||||
CurrPeriodo = new Periodo(inizio, fine);
|
||||
}
|
||||
|
||||
protected async Task SetMacc(string selIdxMacc)
|
||||
{
|
||||
isProcessing = true;
|
||||
await Task.Delay(1);
|
||||
IdxMaccSel = selIdxMacc;
|
||||
await ReloadData();
|
||||
await Task.Delay(1);
|
||||
isProcessing = false;
|
||||
await E_MachSel.InvokeAsync(selIdxMacc);
|
||||
}
|
||||
|
||||
protected void SetNumRec(int newNum)
|
||||
{
|
||||
NumRecPage = newNum;
|
||||
UpdateTable();
|
||||
}
|
||||
|
||||
protected async Task SetOdl(int selIdxOdl)
|
||||
{
|
||||
isProcessing = true;
|
||||
IdxOdl = selIdxOdl;
|
||||
// se ho odl --> imposto periodo
|
||||
if (IdxOdl > 0)
|
||||
{
|
||||
var recOdl = GetOdl(IdxOdl);
|
||||
if (recOdl != null && recOdl.IdxOdl == IdxOdl)
|
||||
{
|
||||
DateTime fine = DateTime.Today.AddDays(1);
|
||||
DateTime inizio = fine.AddDays(-7);
|
||||
CurrPeriodo = new Periodo(recOdl.DataInizio ?? inizio, recOdl.DataFine ?? fine);
|
||||
}
|
||||
}
|
||||
// altrimenti reset..
|
||||
else
|
||||
{
|
||||
setupPeriodo();
|
||||
}
|
||||
await ReloadData();
|
||||
isProcessing = false;
|
||||
//await Task.Delay(1);
|
||||
}
|
||||
|
||||
protected void SetPage(int newNum)
|
||||
{
|
||||
PageNum = newNum;
|
||||
UpdateTable();
|
||||
}
|
||||
|
||||
protected async Task SetPeriodo(Periodo newPeriodo)
|
||||
{
|
||||
CurrPeriodo = newPeriodo;
|
||||
await ReloadData();
|
||||
}
|
||||
|
||||
protected void UpdateTable()
|
||||
{
|
||||
// esegue paginazione
|
||||
if (TotalCount > NumRecPage)
|
||||
{
|
||||
ListPaged = ListComplete
|
||||
.OrderByDescending(x => x.DataTo)
|
||||
.Skip((PageNum - 1) * NumRecPage)
|
||||
.Take(NumRecPage)
|
||||
.ToList();
|
||||
}
|
||||
else
|
||||
{
|
||||
ListPaged = ListComplete;
|
||||
}
|
||||
}
|
||||
|
||||
#endregion Protected Methods
|
||||
|
||||
#region Private Fields
|
||||
|
||||
private static Logger Log = LogManager.GetCurrentClassLogger();
|
||||
|
||||
private Dictionary<int, string> DictOpr = new Dictionary<int, string>();
|
||||
|
||||
private bool isMulti = false;
|
||||
|
||||
private bool isProcessing = false;
|
||||
|
||||
private List<ODLModel> ListaOdl = new List<ODLModel>();
|
||||
|
||||
private List<AnagOperatoriModel> ListaOper = new List<AnagOperatoriModel>();
|
||||
|
||||
private int NumRecPage = 10;
|
||||
|
||||
private int PageNum = 1;
|
||||
|
||||
private int TotalCount = 0;
|
||||
|
||||
private bool useOdl = false;
|
||||
|
||||
#endregion Private Fields
|
||||
|
||||
#region Private Properties
|
||||
|
||||
private Periodo CurrPeriodo { get; set; } = new Periodo();
|
||||
|
||||
private string IdxMaccAltra { get; set; } = "";
|
||||
|
||||
/// <summary>
|
||||
/// Restituisce il codice IdxMacchina dell'altra tavola (se multi) altrimenti la stessa macchina...
|
||||
/// </summary>
|
||||
private string idxMaccAltraTav
|
||||
{
|
||||
get
|
||||
{
|
||||
string answ = "";
|
||||
if (RecMSE != null)
|
||||
{
|
||||
try
|
||||
{
|
||||
// verifico se SIA una tavola (ha char "#")
|
||||
int iSharp = IdxMaccMain.IndexOf('#');
|
||||
if (iSharp > 0)
|
||||
{
|
||||
// ora verifico SE ALTRA TAVOLA ha ODL...
|
||||
string nomeTav = IdxMaccMain.Substring(iSharp);
|
||||
string altraTav = nomeTav.Substring(0, nomeTav.Length - 1);
|
||||
altraTav += nomeTav.EndsWith("1") ? "2" : "1";
|
||||
// sistemo nome
|
||||
answ = IdxMaccMain.Replace(nomeTav, altraTav);
|
||||
}
|
||||
}
|
||||
catch
|
||||
{ }
|
||||
}
|
||||
return answ;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Macchina selezionata MAIN
|
||||
/// </summary>
|
||||
private string IdxMaccMain
|
||||
{
|
||||
get => RecMSE != null ? RecMSE.IdxMacchina : "";
|
||||
}
|
||||
|
||||
private string IdxMaccSel { get; set; } = "";
|
||||
|
||||
private int IdxOdl { get; set; } = 0;
|
||||
|
||||
private string selMessage
|
||||
{
|
||||
get => useOdl ? "Periodo da ODL" : "Periodo Libero";
|
||||
}
|
||||
|
||||
private bool UseOdl
|
||||
{
|
||||
get => useOdl;
|
||||
set
|
||||
{
|
||||
useOdl = value;
|
||||
if (!value)
|
||||
{
|
||||
IdxOdl = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#endregion Private Properties
|
||||
|
||||
#region Private Methods
|
||||
|
||||
private MarkupString OperDto(int matr)
|
||||
{
|
||||
string answ = $"[{matr}]";
|
||||
// cerco in dizionario
|
||||
if (DictOpr.ContainsKey(matr))
|
||||
{
|
||||
answ = DictOpr[matr];
|
||||
}
|
||||
else
|
||||
{
|
||||
// altrimenti cerco da lista e inserisco in dizionario
|
||||
var recOpr = ListaOper.Where(x => x.MatrOpr == matr).FirstOrDefault();
|
||||
if (recOpr != null)
|
||||
{
|
||||
answ = $"{recOpr.Cognome} {recOpr.Nome}<br/>[{matr}]";
|
||||
}
|
||||
DictOpr.Add(matr, answ);
|
||||
}
|
||||
return (MarkupString)answ;
|
||||
}
|
||||
|
||||
private ODLModel ActiveOdl(DateTime dtRif)
|
||||
{
|
||||
var recOdl = ListaOdl
|
||||
.Where(x => x.DataInizio <= dtRif && (x.DataFine >= dtRif || x.DataFine == null))
|
||||
.FirstOrDefault();
|
||||
return recOdl ?? new ODLModel();
|
||||
}
|
||||
|
||||
private ODLModel GetOdl(int idxOdl)
|
||||
{
|
||||
var recOdl = ListaOdl
|
||||
.Where(x => x.IdxOdl == idxOdl)
|
||||
.FirstOrDefault();
|
||||
return recOdl ?? new ODLModel();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Rileggo anagrafiche di base
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
private async Task ReloadBaseList()
|
||||
{
|
||||
ListaOper = await TabDServ.ElencoOperatori();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Aggiorno valori produzione alla data richiesta...
|
||||
/// </summary>
|
||||
/// <param name="newDate"></param>
|
||||
private async Task ReloadData()
|
||||
{
|
||||
isProcessing = true;
|
||||
await Task.Delay(1);
|
||||
if (!string.IsNullOrEmpty(IdxMaccSel))
|
||||
{
|
||||
ListaOdl = await TabDServ.OdlListByMaccPeriodo(IdxMaccSel, CurrPeriodo.Inizio, CurrPeriodo.Fine);
|
||||
ListComplete = await TabDServ.ElencoConfProdFiltAsync(IdxMaccSel, CurrPeriodo.Inizio, CurrPeriodo.Fine);
|
||||
TotalCount = ListComplete.Count;
|
||||
// esegue paginazione
|
||||
UpdateTable();
|
||||
}
|
||||
isProcessing = false;
|
||||
}
|
||||
|
||||
#endregion Private Methods
|
||||
}
|
||||
}
|
||||
@@ -3,7 +3,7 @@
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net6.0</TargetFramework>
|
||||
<Nullable>enable</Nullable>
|
||||
<Version>6.16.2507.1117</Version>
|
||||
<Version>6.16.2507.2319</Version>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<RootNamespace>MP_TAB3</RootNamespace>
|
||||
</PropertyGroup>
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
@page "/ProdConf"
|
||||
@page "/prod-conf"
|
||||
@inherits BasePage
|
||||
|
||||
@if (string.IsNullOrEmpty(IdxMacc) || CurrMSE == null || IsLoading)
|
||||
{
|
||||
<EgwCoreLib.Razor.LoadingData></EgwCoreLib.Razor.LoadingData>
|
||||
}
|
||||
else
|
||||
{
|
||||
<CheckControls RecMSE="CurrMSE"></CheckControls>
|
||||
<MachineBlock RecMSE="CurrMSE" FullMode="false" IdxMacchSub="@IdxMaccSubSel"></MachineBlock>
|
||||
<ProdConfMan RecMSE="CurrMSE" IdxMacchSub="@IdxMaccSubSel"></ProdConfMan>
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
namespace MP_TAB3.Pages
|
||||
{
|
||||
public partial class ProdConf
|
||||
{
|
||||
#region Protected Methods
|
||||
|
||||
protected async Task ForceReload()
|
||||
{
|
||||
IsLoading = true;
|
||||
await Task.Delay(5);
|
||||
IsLoading = false;
|
||||
}
|
||||
|
||||
protected override async Task OnInitializedAsync()
|
||||
{
|
||||
await base.OnInitializedAsync();
|
||||
await ReloadData();
|
||||
}
|
||||
|
||||
protected void SetMacc(string selIdxMacc)
|
||||
{
|
||||
IdxMaccSubSel = selIdxMacc;
|
||||
}
|
||||
|
||||
#endregion Protected Methods
|
||||
|
||||
#region Private Fields
|
||||
|
||||
private string IdxMaccSubSel = "";
|
||||
|
||||
private bool IsLoading = false;
|
||||
|
||||
#endregion Private Fields
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
<body>
|
||||
<i>Modulo MAPOSPEC </i>
|
||||
<h4>Versione: 6.16.2507.1117</h4>
|
||||
<h4>Versione: 6.16.2507.2319</h4>
|
||||
<br /> Note di rilascio:
|
||||
<ul>
|
||||
<li>
|
||||
|
||||
@@ -1 +1 @@
|
||||
6.16.2507.1117
|
||||
6.16.2507.2319
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<item>
|
||||
<version>6.16.2507.1117</version>
|
||||
<version>6.16.2507.2319</version>
|
||||
<url>https://nexus.steamware.net/repository/SWS/MP-TAB3/stable/LAST/MP-TAB3.zip</url>
|
||||
<changelog>https://nexus.steamware.net/repository/SWS/MP-TAB3/stable/LAST/ChangeLog.html</changelog>
|
||||
<mandatory>false</mandatory>
|
||||
|
||||
@@ -1717,6 +1717,29 @@ namespace MP.Data.Controllers
|
||||
return dbResult;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Restituisce elenco RC filtrato
|
||||
/// </summary>
|
||||
/// <param name="idxMacchina"></param>
|
||||
/// <param name="dataFrom"></param>
|
||||
/// <param name="dataTo"></param>
|
||||
/// <returns></returns>
|
||||
public List<ElencoConfermeProdModel> ElencoConfProdFilt(string idxMacchina, DateTime dataFrom, DateTime dataTo)
|
||||
{
|
||||
List<ElencoConfermeProdModel> dbResult = new List<ElencoConfermeProdModel>();
|
||||
using (var dbCtx = new MoonProContext(_configuration))
|
||||
{
|
||||
dbResult = dbCtx
|
||||
.DbSetElConfProd
|
||||
.Where (x => x.IdxMacchina== idxMacchina && (dataFrom <= x.DataOraConf && x.DataOraConf <= dataTo))
|
||||
.AsNoTracking()
|
||||
.ToList();
|
||||
}
|
||||
return dbResult;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Registra controllo
|
||||
/// </summary>
|
||||
|
||||
@@ -0,0 +1,39 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
|
||||
|
||||
#nullable disable
|
||||
// <Auto-Generated>
|
||||
// This is here so CodeMaid doesn't reorganize this document
|
||||
// </Auto-Generated>
|
||||
namespace MP.Data.DbModels
|
||||
{
|
||||
[Table("ElencoConfermeProd")]
|
||||
public partial class ElencoConfermeProdModel
|
||||
{
|
||||
#region Public Properties
|
||||
|
||||
public DateTime DataOraConf { get; set; } = DateTime.Now;
|
||||
[MaxLength(50), Column("idxMacchina")]
|
||||
public string IdxMacchina { get; set; } = "";
|
||||
|
||||
public int MatrApp { get; set; } = 0;
|
||||
[Column("dataFrom")]
|
||||
public DateTime DataFrom { get; set; } = DateTime.Now;
|
||||
[Column("dataTo")]
|
||||
public DateTime DataTo { get; set; } = DateTime.Now;
|
||||
[Column("pezziConf")]
|
||||
public int PezziConf { get; set; } = 0;
|
||||
[Column("pezziScar")]
|
||||
public int PezziScar { get; set; } = 0;
|
||||
[Column("pezziDaRilav")]
|
||||
public int PezziDaRilav { get; set; } = 0;
|
||||
[MaxLength(50)]
|
||||
public string CommessaEsterna { get; set; } = "";
|
||||
public int TipoConf { get; set; } = 1;
|
||||
|
||||
#endregion Public Properties
|
||||
}
|
||||
}
|
||||
@@ -49,6 +49,7 @@ namespace MP.Data
|
||||
public virtual DbSet<AnagTagsModel> DbSetAnagTags { get; set; }
|
||||
public virtual DbSet<AnagArticoliModel> DbSetArticoli { get; set; }
|
||||
public virtual DbSet<ConfigModel> DbSetConfig { get; set; }
|
||||
public virtual DbSet<ElencoConfermeProdModel> DbSetElConfProd { get; set; }
|
||||
public virtual DbSet<LinkMenuModel> DbSetLinkMenu { get; set; }
|
||||
public virtual DbSet<ListValuesModel> DbSetListValues { get; set; }
|
||||
public virtual DbSet<MacchineModel> DbSetMacchine { get; set; }
|
||||
@@ -196,6 +197,11 @@ namespace MP.Data
|
||||
.IsRequired()
|
||||
.HasMaxLength(50);
|
||||
});
|
||||
|
||||
modelBuilder.Entity<ElencoConfermeProdModel>(entity =>
|
||||
{
|
||||
entity.HasKey(e => new { e.DataOraConf, e.IdxMacchina });
|
||||
});
|
||||
|
||||
modelBuilder.Entity<MacchineModel>(entity =>
|
||||
{
|
||||
|
||||
@@ -2644,7 +2644,7 @@ namespace MP.Data.Services
|
||||
/// <param name="dataFrom"></param>
|
||||
/// <param name="dataTo"></param>
|
||||
/// <returns></returns>
|
||||
public async Task<List<RegistroControlliModel>> RegControlliFilt(string idxMacchina, int idxODL, DateTime dataFrom, DateTime dataTo, bool showMulti)
|
||||
public async Task<List<RegistroControlliModel>> RegControlliFiltAsync(string idxMacchina, int idxODL, DateTime dataFrom, DateTime dataTo, bool showMulti)
|
||||
{
|
||||
int rndWait = rnd.Next(0, 2);
|
||||
await Task.Delay(rndWait);
|
||||
@@ -2655,10 +2655,10 @@ namespace MP.Data.Services
|
||||
List<RegistroControlliModel>? result = new List<RegistroControlliModel>();
|
||||
// cerco in redis...
|
||||
string currKey = $"{redisBaseKey}:RecContr:{idxMacchina}:{idxODL}:{dataFrom:yyyyyMMdd-HHmm}:{dataFrom:yyyyyMMdd-HHmm}:{showMulti}";
|
||||
RedisValue rawData = redisDb.StringGet(currKey);
|
||||
#if false
|
||||
RedisValue rawData = await redisDb.StringGetAsync(currKey);
|
||||
RedisValue rawData = redisDb.StringGet(currKey);
|
||||
#endif
|
||||
RedisValue rawData = await redisDb.StringGetAsync(currKey);
|
||||
if (rawData.HasValue)
|
||||
{
|
||||
result = JsonConvert.DeserializeObject<List<RegistroControlliModel>>($"{rawData}");
|
||||
@@ -2669,10 +2669,10 @@ namespace MP.Data.Services
|
||||
result = dbTabController.RegControlliFilt(idxMacchina, idxODL, dataFrom, dataTo, showMulti);
|
||||
// serializzo e salvo...
|
||||
rawData = JsonConvert.SerializeObject(result);
|
||||
redisDb.StringSet(currKey, rawData, UltraLongCache);
|
||||
#if false
|
||||
await redisDb.StringSetAsync(currKey, rawData, UltraLongCache);
|
||||
redisDb.StringSet(currKey, rawData, UltraLongCache);
|
||||
#endif
|
||||
await redisDb.StringSetAsync(currKey, rawData, UltraLongCache);
|
||||
}
|
||||
if (result == null)
|
||||
{
|
||||
@@ -2680,9 +2680,49 @@ namespace MP.Data.Services
|
||||
}
|
||||
sw.Stop();
|
||||
#if false
|
||||
Log.Debug($"RegControlliFilt | {source} | {sw.Elapsed.TotalMilliseconds}ms");
|
||||
Log.Debug($"RegControlliFiltAsync | {source} | {sw.Elapsed.TotalMilliseconds}ms");
|
||||
#endif
|
||||
string callName = $"RegControlliFilt.{source}";
|
||||
string callName = $"RegControlliFiltAsync.{source}";
|
||||
int numRec = esCollect.RecordCall(callName, sw.Elapsed.TotalMilliseconds);
|
||||
if (numRec >= nRecLog)
|
||||
{
|
||||
Log.Debug(esCollect.GetCallSum(callName, true));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Restituisce elenco ElencoConfermeProd filtrato e async
|
||||
/// </summary>
|
||||
/// <param name="idxMacchina"></param>
|
||||
/// <param name="dataFrom"></param>
|
||||
/// <param name="dataTo"></param>
|
||||
/// <returns></returns>
|
||||
public async Task<List<ElencoConfermeProdModel>> ElencoConfProdFiltAsync(string idxMacchina, DateTime dataFrom, DateTime dataTo)
|
||||
{
|
||||
// setup parametri costanti
|
||||
string source = "DB";
|
||||
Stopwatch sw = new Stopwatch();
|
||||
sw.Start();
|
||||
List<ElencoConfermeProdModel> result = new List<ElencoConfermeProdModel>();
|
||||
// cerco in redis...
|
||||
string currKey = $"{redisBaseKey}:ElConfProd:{idxMacchina}:{dataFrom:yyyyyMMdd-HHmm}:{dataFrom:yyyyyMMdd-HHmm}";
|
||||
RedisValue rawData = await redisDb.StringGetAsync(currKey);
|
||||
if (rawData.HasValue)
|
||||
{
|
||||
result = JsonConvert.DeserializeObject<List<ElencoConfermeProdModel>>($"{rawData}")?? new List<ElencoConfermeProdModel>();
|
||||
source = "REDIS";
|
||||
}
|
||||
else
|
||||
{
|
||||
result = dbTabController.ElencoConfProdFilt(idxMacchina, dataFrom, dataTo);
|
||||
// serializzo e salvo...
|
||||
rawData = JsonConvert.SerializeObject(result);
|
||||
await redisDb.StringSetAsync(currKey, rawData, UltraLongCache);
|
||||
}
|
||||
sw.Stop();
|
||||
string callName = $"ElencoConfProdFiltAsync.{source}";
|
||||
int numRec = esCollect.RecordCall(callName, sw.Elapsed.TotalMilliseconds);
|
||||
if (numRec >= nRecLog)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user