Ancora update gestione conf prod

This commit is contained in:
Samuele Locatelli
2023-10-04 15:50:15 +02:00
parent 44a65629b0
commit 6855e0c58b
21 changed files with 396 additions and 195 deletions
+9 -4
View File
@@ -1,5 +1,10 @@
<h3>MachSel</h3>
@code {
@if (false)
{
<h3>MachSel</h3>
<asp:DropDownList runat="server" ID="ddlSubMacc" DataSourceID="ods" CssClass="form-control" DataTextField="CodMaccArticolo" DataValueField="IdxMacchina" AutoPostBack="True" OnSelectedIndexChanged="ddlSubMacc_SelectedIndexChanged" OnDataBound="ddlSubMacc_DataBound"></asp:DropDownList>
<asp:ObjectDataSource runat="server" ID="ods" OldValuesParameterFormatString="original_{0}" SelectMethod="getMulti" TypeName="MapoDb.DS_applicazioneTableAdapters.MSFDTableAdapter" FilterExpression="idxMacchina LIKE '%#%'">
<SelectParameters>
<asp:SessionParameter DefaultValue="0" Name="IdxMacchina" SessionField="IdxMacchina" Type="String" />
</SelectParameters>
</asp:ObjectDataSource>
}
+27
View File
@@ -0,0 +1,27 @@
using global::Microsoft.AspNetCore.Components;
using MP.Data.DatabaseModels;
namespace MP_TAB_SERV.Components
{
public partial class MachSel
{
#region Public Properties
[Parameter]
public MappaStatoExpl? RecMSE { get; set; } = null;
[Parameter]
public EventCallback<string> E_MachSel { get; set; }
protected override async Task OnInitializedAsync()
{
// inizilamente riporto machcina corrente da MSE
if (RecMSE != null)
{
await E_MachSel.InvokeAsync(RecMSE?.IdxMacchina);
}
}
#endregion Public Properties
}
}
+11 -10
View File
@@ -25,6 +25,17 @@ namespace MP_TAB_SERV.Components
protected NavigationManager NavMan { get; set; } = null!;
protected int QtaUdc { get; set; } = 0;
[Inject]
protected SharedMemService SMServ { get; set; } = null!;
[Inject]
protected TabDataService TabDServ { get; set; } = null!;
#endregion Protected Properties
#region Protected Methods
protected async Task FixQtyUdc()
{
int answ = 1;
@@ -44,16 +55,6 @@ namespace MP_TAB_SERV.Components
QtaUdc = answ;
}
[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 FixQtyUdc();
+91 -79
View File
@@ -1,93 +1,105 @@
<h3>ProdConfirm</h3>
<div class="card bg-secondary">
<div class="card-header p-0">
<div class="row">
<div class="col-12">
<asp:Label runat="server" ID="lblConfProd" CssClass="btn btn-secondary btn-lg w-100 disabled">
<i class="fa fa-check"></i> MOSTRA Conferma
</asp:Label>
<asp:Label runat="server" ID="lblMancaODL" Visible="false" ForeColor="Red">MANCA ODL: conferma NON permessa</asp:Label>
<asp:LinkButton runat="server" ID="lbtShowConfProd" OnClick="lbtShowConfProd_Click" CssClass="btn btn-success btn-lg w-100">
<i class="fa fa-check"></i>
<asp:Label runat="server" ID="lblShowConfProd" />
</asp:LinkButton>
<div class="card-header p-0 bg-success">
@if (odlOk)
{
<div class="row">
<div class="col-12">
<button class="btn btn-lg text-light w-100" @onclick="ToggleConfProd">
<i class="fa fa-check"></i> @ConfTitle
</button>
</div>
<MachSel RecMSE="RecMSE" E_MachSel="SetMacc"></MachSel>
</div>
<div class="col-12" runat="server" id="divSelMacc">
<asp:DropDownList runat="server" ID="ddlSubMacc" DataSourceID="ods" CssClass="form-control" DataTextField="CodMaccArticolo" DataValueField="IdxMacchina" AutoPostBack="True" OnSelectedIndexChanged="ddlSubMacc_SelectedIndexChanged" OnDataBound="ddlSubMacc_DataBound"></asp:DropDownList>
<asp:ObjectDataSource runat="server" ID="ods" OldValuesParameterFormatString="original_{0}" SelectMethod="getMulti" TypeName="MapoDb.DS_applicazioneTableAdapters.MSFDTableAdapter" FilterExpression="idxMacchina LIKE '%#%'">
<SelectParameters>
<asp:SessionParameter DefaultValue="0" Name="IdxMacchina" SessionField="IdxMacchina" Type="String" />
</SelectParameters>
</asp:ObjectDataSource>
}
else
{
<div class="alert alert-warning fs-3">MANCA ODL: conferma NON permessa</div>
}
</div>
<div class="card-body p-0 text-light">
@if (showInnov)
{
<div class="row textCondens text-end bg-dark m-1 p-1" runat="server" id="divInnovazioni" onloadeddata="showConfirmButton()">
<div class="col-6 py-1 text-start text-uppercase">
<b>Dati Incrementali</b>
</div>
<div class="col-6 text-end">
<sub>
ultima conferma --> @dtReqUpdate.ToString()
</sub>
</div>
<div class="col-6 col-sm-3 pr-1 align-self-end fw-bold">
<label>Pz Prodotti CONFERMATI</label>
<input class="form-control fs-2 text-end alert alert-warning py-0 mb-0" @bind="numPzProdotti2Rec" @onblur="() => setConfirmBtn(true)" @onfocus="() => setConfirmBtn(false)">
</div>
<div class="col-6 col-sm-3 px-1 align-self-end fw-bold">
<div class="d-flex justify-content-around">
<div>
<span class="text-danger">Pz Scarto</span>
+
<span class="text-success">Pz Buoni</span>
</div>
</div>
<div class="px-2" style="font-size: 2em;">
<div class="d-flex justify-content-around">
<div>
<span runat="server" class="text-danger py-0">@lblPz2RecScarto</span>
+
<span runat="server" class="text-success py-0">@lblPz2RecBuoni</span>
</div>
</div>
</div>
</div>
<div class="col-6 col-sm-3 pr-1 align-self-end fw-bold">
@if (enablePzProdLasciati)
{
<label ID="lblNumLasciati" class="mb-0">Pz Prodotti LASCIATI</label>
<input class="form-control fs-2 text-end alert alert-warning py-0 mb-0" @bind="numPzProdottiLasciati" @onblur="() => setConfirmBtn(true)" @onfocus="() => setConfirmBtn(false)">
}
else
{
<label class="btn btn-dark text-light btn-lg w-100" Visible="false">&nbsp;</label>
}
</div>
<div class="col-6 col-sm-3 pl-1 align-self-end fw-bold">
@if (showConfirm)
{
<button class="btn btn-success text-light btn-lg w-100" @onclick="SalvaConfPz"><i class="fa-regular fa-floppy-disk"></i> CONFERMA</button>
}
</div>
</div>
}
</div>
</div>
@if (isProcessing)
{
<div class="row textCondens">
<div class="col-12">
<div class="text-center text-warning align-middle">
<i class="fa fa-spinner fa-pulse"></i>&nbsp;
<b>ELABORAZIONE IN CORSO</b>
<i class="fa fa-spinner fa-pulse"></i>&nbsp;
<div class="progress">
<div class="progress-bar progress-bar-striped bg-success progress-bar-animated" role="progressbar" aria-valuenow="75" aria-valuemin="0" aria-valuemax="100" style="width: 75%"></div>
</div>
</div>
</div>
</div>
<div class="card-body p-0">
<div class="row textCondens text-end bg-dark m-1 p-1" runat="server" id="divInnovazioni" onloadeddata="showConfirmButton()">
<div class="col-6 py-1 text-start text-uppercase">
<b>Dati Incrementali</b>
</div>
<div class="col-6 text-end">
<sub>ultima conferma -->
<asp:Label runat="server" ID="lblDtRec"></asp:Label></sub>
</div>
<div class="col-6 col-sm-3 pr-1 align-self-end fw-bold">
<asp:Label runat="server" ID="lblNumPezzi" CssClass="mb-0" AssociatedControlID="txtNumPezzi" Text="Pz Prodotti CONFERMATI" />
<asp:TextBox runat="server" ID="txtNumPezzi" Font-Size="XX-Large" TextMode="Number" CssClass="form-control text-end alert alert-warning py-0 mb-0" Enabled="true" AutoPostBack="True" OnTextChanged="txtNumPezzi_TextChanged" onfocus="hideConfirmButton()" onblur="showConfirmButton()" />
</div>
<div class="col-6 col-sm-3 px-1 align-self-end fw-bold">
<div class="px-2">
<asp:Label runat="server" ID="lblPzSca2Rec" CssClass="text-danger" Text="Pz Scarto" />
+
<asp:Label runat="server" ID="lblPzBuo2Rec" CssClass="text-success" Text="Pz Buoni" />
</div>
<div class="px-2" style="font-size: 2em;">
<asp:Label runat="server" ID="lblPz2RecScarto" CssClass="text-danger py-0">[B2]</asp:Label>
+
<asp:Label runat="server" ID="lblPz2RecBuoni" CssClass="text-success py-0">[C2]</asp:Label>
</div>
</div>
<div class="col-6 col-sm-3 pr-1 align-self-end fw-bold">
<asp:Label runat="server" ID="lblNumLasciati" CssClass="mb-0" AssociatedControlID="txtNumPezzi" Text="Pz Prodotti LASCIATI" />
<asp:TextBox runat="server" ID="txtNumLasciati" Font-Size="XX-Large" TextMode="Number" CssClass="form-control text-end alert alert-secondary py-0 mb-0" Enabled="true" AutoPostBack="True" OnTextChanged="txtNumLasciati_TextChanged" onfocus="hideConfirmButton()" onblur="showConfirmButton()" />
<asp:Label runat="server" ID="lblEmptyNumLasciati" CssClass="btn btn-dark text-light btn-lg w-100" Visible="false">&nbsp;</asp:Label>
</div>
<div class="col-6 col-sm-3 pl-1 align-self-end fw-bold">
<asp:LinkButton runat="server" ID="lbtSalva" CssClass="btn btn-success text-light btn-lg w-100" OnClick="lbtSalva_Click"><i class="fa fa-floppy-o"></i> CONFERMA</asp:LinkButton>
<asp:Label runat="server" ID="lblUpdating" CssClass="btn btn-dark text-light btn-lg w-100" Visible="false"><i class="fa fa-circle-o-notch fa-spin"></i> USER INPUT</asp:Label>
</div>
</div>
</div>
</div>
<div class="row textCondens">
<div class="col-12">
<asp:UpdateProgress ID="updtRicerca" runat="server" DisplayAfter="10" DynamicLayout="true">
<ProgressTemplate>
<div id="progress_back">
</div>
<div id="progress_top" class="text-center text-warning align-middle">
<i class="fa fa-spinner fa-pulse"></i>&nbsp;
<b>ELABORAZIONE IN CORSO</b>
<i class="fa fa-spinner fa-pulse"></i>&nbsp;
<div class="progress">
<div class="progress-bar progress-bar-striped bg-success progress-bar-animated" role="progressbar" aria-valuenow="75" aria-valuemin="0" aria-valuemax="100" style="width: 75%"></div>
</div>
</div>
</ProgressTemplate>
</asp:UpdateProgress>
</div>
</div>
}
<div class="row textCondens">
<div class="col-6 py-1 text-start text-uppercase">
<b>Dati Globali ODL</b>
</div>
<div class="col-6 text-end" id="divPeriodo">
<sub>Periodo ODL calcolato:
<asp:Label runat="server" ID="lblInizio">[dtInizio]</asp:Label>
<sub>
Periodo ODL calcolato:
<asp:Label runat="server" ID="lblInizio">[dtInizio]</asp:Label>
-
<asp:Label runat="server" ID="lblFine">[dtFine]</asp:Label></sub>
<asp:Label runat="server" ID="lblFine">[dtFine]</asp:Label>
</sub>
</div>
<div class="col-6 col-sm-3 pr-1 py-0 text-end">
<div class="alert alert-warning py-1">
+126 -83
View File
@@ -1,5 +1,6 @@
using global::Microsoft.AspNetCore.Components;
using MP.Data.DatabaseModels;
using MP.Data.Services;
namespace MP_TAB_SERV.Components
{
@@ -7,26 +8,146 @@ namespace MP_TAB_SERV.Components
{
#region Public Properties
/// <summary>
/// Verifica ODL OK (ovvero caricato x macchina...)
/// </summary>
public bool odlOk
{
get => (RecMSE != null && RecMSE.IdxOdl > 0);
}
[Parameter]
public MappaStatoExpl? RecMSE { get; set; } = null;
#endregion Public Properties
#region Public Methods
/// <summary>
/// Aggiorno valori produzione alla data richiesta...
/// </summary>
/// <param name="newDate"></param>
public async Task doUpdate()
{
datiProdAct = await TabDServ.StatoProdMacchina(IdxMaccSel, dtReqUpdate);
// aggiorno visualizzazione...
numPzProdotti = datiProdAct.PzTotODL;
numPz2Rec = datiProdAct.Pz2RecTot;
numPzScaConf = datiProdAct.PzConfScarto;
numPzBuoniConf = datiProdAct.PzConfBuoni;
numPzProdotti2Rec = datiProdAct.Pz2RecTot;
numPzScarto2Rec = datiProdAct.Pz2RecScarto;
dtInizio = RecMSE?.DataInizioOdl ?? DateTime.Today.AddMonths(-2); ;
dtFine = dtReqUpdate;
//reportUpdate();
}
#endregion Public Methods
#if false
#region Protected Properties
#region Public Fields
protected string ConfTitle
{
get => showInnov ? "Nascondi Conferma" : "Mostra Conferma";
}
/// <summary>
/// Dati produzioen rilevati
/// </summary>
public DS_ProdTempi.StatoProdRow datiProdAct;
protected StatoProdModel? datiProdAct { get; set; } = null;
#endregion Public Fields
protected DateTime dtFine { get; set; } = DateTime.Today.AddMonths(-1);
#region Public Events
protected DateTime dtInizio { get; set; } = DateTime.Today.AddMonths(-2);
protected int lblPz2RecBuoni
{
get => numPzProdotti2Rec - numPzScarto2Rec - numPzProdottiLasciati;
}
//protected int lblPzBuo2Rec { get; set; } = 0;
protected int lblPz2RecScarto
{
get => numPzScarto2Rec;
}
protected int numPz2Rec { get; set; } = 0;
protected int numPzBuoniConf { get; set; } = 0;
protected int numPzProdotti { get; set; } = 0;
protected int numPzProdotti2Rec { get; set; } = 0;
protected int numPzProdottiLasciati { get; set; } = 0;
protected int numPzScaConf { get; set; } = 0;
protected int numPzScarto2Rec { get; set; } = 0;
[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()
{
if (RecMSE != null)
{
IdxMaccSel = RecMSE.IdxMacchina;
enablePzProdLasciati = SMServ.GetConfBool("enablePzProdLasciati");
await doUpdate();
}
}
protected async Task SalvaConfPz()
{
await Task.Delay(1);
}
protected void setConfirmBtn(bool newVal)
{
showConfirm = newVal;
}
protected void SetMacc(string selIdxMacc)
{
IdxMaccSel = selIdxMacc;
}
/// <summary>
/// Cambio stato visibilità pannello e testo button
/// </summary>
protected void ToggleConfProd()
{
showInnov = !showInnov;
dtReqUpdate = DateTime.Now;
}
#endregion Protected Methods
#region Private Fields
private bool enablePzProdLasciati = false;
#endregion Private Fields
#region Private Properties
private DateTime dtReqUpdate { get; set; } = DateTime.Now;
private string IdxMaccSel { get; set; } = "";
private bool isProcessing { get; set; } = false;
private bool showConfirm { get; set; } = true;
private bool showInnov { get; set; } = false;
#endregion Private Properties
#if false
/// <summary>
/// registrato nuovo valore
@@ -43,10 +164,6 @@ namespace MP_TAB_SERV.Components
/// </summary>
public event EventHandler eh_reset;
#endregion Public Events
#region Public Properties
/// <summary>
/// restituisce css disabled SE odl NON OK...
/// </summary>
@@ -75,47 +192,6 @@ namespace MP_TAB_SERV.Components
}
}
/// <summary>
/// Verifica ODL OK (ovvero caricato x macchina...)
/// </summary>
public bool odlOk
{
get
{
bool answ = true;
// se ODL > 0 è ok!!!
answ = (idxOdl > 0);
return answ;
}
}
#endregion Public Properties
#region Public Methods
/// <summary>
/// Aggiorno valori produzione alla data richiesta...
/// </summary>
/// <param name="newDate"></param>
public void doUpdate()
{
datiProdAct = DataLayerObj.taStatoProd.GetData(idxMacchinaSel, dtReqUpdate)[0];
// aggiorno visualizzazione...
numPzProdotti = datiProdAct.PzTotODL;
numPz2Rec = datiProdAct.Pz2RecTot;
numPzScaConf = datiProdAct.PzConfScarto;
numPzBuoniConf = datiProdAct.PzConfBuoni;
numPzProdotti2Rec = datiProdAct.Pz2RecTot;
numPzScarto2Rec = datiProdAct.Pz2RecScarto;
dtInizio = inizioOdl;
dtFine = dtReqUpdate;
reportUpdate();
}
#endregion Public Methods
#region Protected Properties
protected DateTime dtFine
{
set
@@ -258,22 +334,6 @@ namespace MP_TAB_SERV.Components
}
}
protected bool showInnov
{
get
{
return divInnovazioni.Visible;
}
set
{
divInnovazioni.Visible = value;
}
}
#endregion Protected Properties
#region Protected Methods
protected void ddlSubMacc_DataBound(object sender, EventArgs e)
{
// se ho in memoria un valore LO REIMPOSTO...
@@ -331,17 +391,6 @@ namespace MP_TAB_SERV.Components
doUpdate();
}
/// <summary>
/// cambio stato visibilità pannello e testo button
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void lbtShowConfProd_Click(object sender, EventArgs e)
{
showInnov = !showInnov;
switchBtnConferma(showInnov);
}
/// <summary>
/// caricamento pagina
/// </summary>
@@ -400,10 +449,6 @@ namespace MP_TAB_SERV.Components
idxOdl = answ;
}
#endregion Protected Methods
#region Private Methods
private void checkAll()
{
updateOdl();
@@ -556,8 +601,6 @@ namespace MP_TAB_SERV.Components
lblDtRec.Text = dtReqUpdate.ToString();
}
#endregion Private Methods
#endif
}
}
+13 -4
View File
@@ -1,6 +1,7 @@
using Microsoft.AspNetCore.Components;
using MP.Data.DatabaseModels;
using MP.Data.Services;
using NLog;
namespace MP_TAB_SERV.Pages
{
@@ -36,6 +37,7 @@ namespace MP_TAB_SERV.Pages
#region Private Fields
private static Logger Log = LogManager.GetCurrentClassLogger();
private List<ConfigModel>? CurrConfig = null;
private bool enableSchedaTecnica = false;
@@ -72,11 +74,18 @@ namespace MP_TAB_SERV.Pages
{
if (string.IsNullOrEmpty(IdxMacc))
{
IdxMacc = await MsgServ.IdxMaccGet();
// recupero MSE macchina....
if (!string.IsNullOrEmpty(IdxMacc))
try
{
CurrMSE = await MsgServ.GetMachineMse(IdxMacc);
IdxMacc = await MsgServ.IdxMaccGet();
// recupero MSE macchina....
if (!string.IsNullOrEmpty(IdxMacc))
{
CurrMSE = await MsgServ.GetMachineMse(IdxMacc);
}
}
catch (Exception exc)
{
Log.Error($"Eccezione in ReloadData{Environment.NewLine}{exc}");
}
}
// recupero parametri configurazione...
+3 -3
View File
@@ -324,14 +324,14 @@ namespace MP.Data.Controllers
/// </summary>
/// <param name="idxMacchina"></param>
/// <returns></returns>
public StatoProdModel StatoProdMacchina(string idxMacchina)
public PzProdModel PezziProdMacchina(string idxMacchina)
{
StatoProdModel dbResult = new StatoProdModel();
PzProdModel dbResult = new PzProdModel();
using (var dbCtx = new MoonProContext(_configuration))
{
var IdxMacchina = new SqlParameter("@IdxMacchina", idxMacchina);
dbResult = dbCtx
.DbSetStatoProd
.DbSetPzProd
.FromSqlRaw("EXEC stp_PzProd_getByMacchina @IdxMacchina", IdxMacchina)
.AsNoTracking()
.FirstOrDefault();
+3 -3
View File
@@ -1349,14 +1349,14 @@ namespace MP.Data.Controllers
/// </summary>
/// <param name="idxMacchina"></param>
/// <returns></returns>
public StatoProdModel StatoProdMacchina(string idxMacchina)
public PzProdModel PezziProdMacchina(string idxMacchina)
{
StatoProdModel dbResult = new StatoProdModel();
PzProdModel dbResult = new PzProdModel();
using (var dbCtx = new MoonProContext(_configuration))
{
var IdxMacchina = new SqlParameter("@IdxMacchina", idxMacchina);
dbResult = dbCtx
.DbSetStatoProd
.DbSetPzProd
.FromSqlRaw("EXEC stp_PzProd_getByMacchina @IdxMacchina", IdxMacchina)
.AsNoTracking()
.FirstOrDefault();
+25
View File
@@ -113,6 +113,31 @@ namespace MP.Data.Controllers
return dbResult;
}
/// <summary>
/// Stato prod macchina (completo)
/// </summary>
/// <param name="idxMacchina"></param>
/// <param name="dtReq"></param>
/// <returns></returns>
public StatoProdModel StatoProdMacchina(string idxMacchina, DateTime dtReq)
{
StatoProdModel dbResult = new StatoProdModel();
using (var dbCtx = new MoonProContext(_configuration))
{
var IdxMacchina = new SqlParameter("@IdxMacchina", idxMacchina);
var DataOra = new SqlParameter("@DataOra ", dtReq);
var rawData = dbCtx
.DbSetStatoProd
.FromSqlRaw("EXEC stp_StatoProd_getByMacchina @IdxMacchina, @DataOra ", IdxMacchina, DataOra)
.AsNoTracking()
.AsEnumerable()
.ToList();
dbResult = rawData
.FirstOrDefault();
}
return dbResult;
}
#endregion Public Methods
#region Private Fields
+20
View File
@@ -0,0 +1,20 @@
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.DatabaseModels
{
public partial class PzProdModel
{
[Key]
public string idxMacchina { get; set; } = "NA";
public int pezziNonConfermati { get; set; } = 0;
public DateTime DataFrom { get; set; } = DateTime.Now;
public DateTime DataTo { get; set; } = DateTime.Now;
}
}
+7 -1
View File
@@ -13,7 +13,13 @@ namespace MP.Data.DatabaseModels
{
[Key]
public string idxMacchina { get; set; } = "NA";
public int pezziNonConfermati { get; set; } = 0;
public int IdxOdl { get; set; } = 0;
public int PzTotODL { get; set; } = 0;
public int PzConfScarto { get; set; } = 0;
public int PzConfBuoni { get; set; } = 0;
public int PzRichODL { get; set; } = 0;
public int Pz2RecTot { get; set; } = 0;
public int Pz2RecScarto { get; set; } = 0;
public DateTime DataFrom { get; set; } = DateTime.Now;
public DateTime DataTo { get; set; } = DateTime.Now;
}
+4 -1
View File
@@ -52,7 +52,7 @@ namespace MP.Data
public virtual DbSet<FluxLog> DbSetFluxLog { get; set; }
public virtual DbSet<DossierModel> DbSetDossiers { get; set; }
public virtual DbSet<StatODLModel> DbSetStatOdl { get; set; }
public virtual DbSet<StatoProdModel> DbSetStatoProd { get; set; }
public virtual DbSet<PzProdModel> DbSetPzProd { get; set; }
public virtual DbSet<EventListModel> DbSetEvList { get; set; }
public virtual DbSet<VocabolarioModel> DbSetVocabolario { get; set; }
public virtual DbSet<AnagOperatoriModel> DbOperatori { get; set; }
@@ -63,6 +63,7 @@ namespace MP.Data
public virtual DbSet<Macchine2SlaveModel> DbSetM2S { get; set; }
public virtual DbSet<TransizioneIngressiModel> DbSetSMI { get; set; }
public virtual DbSet<KeepAliveModel> DbSetKeepAlive { get; set; }
public virtual DbSet<StatoProdModel> DbSetStatoProd { get; set; }
public virtual DbSet<ST_Act> DbSetStAct { get; set; }
public virtual DbSet<ST_ActRow> DbSetStActRow { get; set; }
@@ -72,6 +73,8 @@ namespace MP.Data
public virtual DbSet<ST_Template> DbSetStTemplate { get; set; }
public virtual DbSet<ST_TemplateRows> DbSetStTemplateRows { get; set; }
#endregion Public Properties
#region Private Methods
+12
View File
@@ -122,6 +122,18 @@ namespace MP.Data.Services
}
return answ;
}
public int GetConfInt(string chiave)
{
int answ = 0;
int.TryParse(GetConf(chiave), out answ);
return answ;
}
public bool GetConfBool(string chiave)
{
bool answ = false;
bool.TryParse(GetConf(chiave), out answ);
return answ;
}
+38
View File
@@ -195,6 +195,44 @@ namespace MP.Data.Services
return result;
}
/// <summary>
/// Stato prod macchina (completo)
/// </summary>
/// <param name="idxMacchina"></param>
/// <param name="dtReq"></param>
/// <returns></returns>
public async Task<StatoProdModel> StatoProdMacchina(string idxMacchina, DateTime dtReq)
{
// setup parametri costanti
string source = "DB";
Stopwatch sw = new Stopwatch();
sw.Start();
StatoProdModel? result = new StatoProdModel();
// cerco in redis...
string currKey = $"{redisBaseKey}:StatoProd:{idxMacchina}:{dtReq:HHmmss}";
RedisValue rawData = await redisDb.StringGetAsync(currKey);
if (!string.IsNullOrEmpty($"{rawData}"))
{
result = JsonConvert.DeserializeObject<StatoProdModel>($"{rawData}");
source = "REDIS";
}
else
{
result = dbController.StatoProdMacchina(idxMacchina, dtReq);
// serializzp e salvo...
rawData = JsonConvert.SerializeObject(result);
await redisDb.StringSetAsync(currKey, rawData, UltraFastCache);
}
if (result == null)
{
result = new StatoProdModel();
}
sw.Stop();
Log.Debug($"StatoProdMacchina | {source} | {sw.Elapsed.TotalMilliseconds}ms");
return result;
}
#endregion Public Methods
#region Protected Fields
+1 -1
View File
@@ -1,6 +1,6 @@
<body>
<i>Modulo MP-IOC </i>
<h4>Versione: 6.16.2306.915</h4>
<h4>Versione: 6.16.2310.411</h4>
<br /> Note di rilascio:
<ul>
<li>
+1 -1
View File
@@ -1 +1 @@
6.16.2306.915
6.16.2310.411
+1 -1
View File
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<item>
<version>6.16.2306.915</version>
<version>6.16.2310.411</version>
<url>https://nexus.steamware.net/repository/SWS/MP-IOC/stable/LAST/MP.IOC.zip</url>
<changelog>https://nexus.steamware.net/repository/SWS/MP-IOC/stable/LAST/ChangeLog.html</changelog>
<mandatory>false</mandatory>
+1 -1
View File
@@ -5,7 +5,7 @@
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
<RootNamespace>MP.SPEC</RootNamespace>
<Version>6.16.2310.308</Version>
<Version>6.16.2310.411</Version>
</PropertyGroup>
<ItemGroup>
+1 -1
View File
@@ -1,6 +1,6 @@
<body>
<i>Modulo MAPOSPEC </i>
<h4>Versione: 6.16.2310.308</h4>
<h4>Versione: 6.16.2310.411</h4>
<br /> Note di rilascio:
<ul>
<li>
+1 -1
View File
@@ -1 +1 @@
6.16.2310.308
6.16.2310.411
+1 -1
View File
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<item>
<version>6.16.2310.308</version>
<version>6.16.2310.411</version>
<url>https://nexus.steamware.net/repository/SWS/MP-SPEC/stable/LAST/MP.SPEC.zip</url>
<changelog>https://nexus.steamware.net/repository/SWS/MP-SPEC/stable/LAST/ChangeLog.html</changelog>
<mandatory>false</mandatory>