280 lines
12 KiB
C#
280 lines
12 KiB
C#
using Microsoft.Data.SqlClient;
|
|
using Microsoft.EntityFrameworkCore;
|
|
using Microsoft.Extensions.Configuration;
|
|
using MP.Data.DatabaseModels;
|
|
using NLog;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace MP.Data.Controllers
|
|
{
|
|
public class MpTabController : IDisposable
|
|
{
|
|
#region Public Constructors
|
|
|
|
public MpTabController(IConfiguration configuration)
|
|
{
|
|
_configuration = configuration;
|
|
Log.Info("Avviato MpTabController");
|
|
}
|
|
|
|
#endregion Public Constructors
|
|
|
|
#region Public Methods
|
|
|
|
/// <summary>
|
|
/// Restituisce l'anagrafica eventi per intero
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
public List<AnagEventiModel> AnagEventiGetAll(string IdxMac)
|
|
{
|
|
List<AnagEventiModel> dbResult = new List<AnagEventiModel>();
|
|
using (var dbCtx = new MoonProContext(_configuration))
|
|
{
|
|
var IdxMacch = new SqlParameter("@idxMacchina", IdxMac);
|
|
|
|
dbResult = dbCtx
|
|
.DbSetAnagEventi
|
|
.FromSqlRaw("exec dbo.stp_vseb_getByIdxMacchinaFull @idxMacchina", IdxMacch)
|
|
.AsNoTracking()
|
|
.AsEnumerable()
|
|
.ToList();
|
|
}
|
|
return dbResult;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Elenco da tabella Config
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
public List<ConfigModel> ConfigGetAll()
|
|
{
|
|
List<ConfigModel> dbResult = new List<ConfigModel>();
|
|
using (var dbCtx = new MoonProContext(_configuration))
|
|
{
|
|
dbResult = dbCtx
|
|
.DbSetConfig
|
|
.AsNoTracking()
|
|
.OrderBy(x => x.Chiave)
|
|
.ToList();
|
|
}
|
|
return dbResult;
|
|
}
|
|
|
|
public void Dispose()
|
|
{
|
|
_configuration = null;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Recupero Righe (Actual) della scheda tecnica da GRUPPO + ODL
|
|
/// </summary>
|
|
/// <param name="codGruppo"></param>
|
|
/// <param name="idxODL"></param>
|
|
/// <returns></returns>
|
|
public List<ST_ActRow> STAR_byGrpOdl(string codGruppo, int idxODL)
|
|
{
|
|
List<ST_ActRow> dbResult = new List<ST_ActRow>();
|
|
using (var dbCtx = new MoonProContext(_configuration))
|
|
{
|
|
var CodGruppo = new SqlParameter("@CodGruppo", codGruppo);
|
|
var IdxODL = new SqlParameter("@IdxODL", idxODL);
|
|
|
|
dbResult = dbCtx
|
|
.DbSetStActRow
|
|
.FromSqlRaw("exec dbo.stp_ST_AR_getByGrpOdl @CodGruppo, @IdxODL", CodGruppo, IdxODL)
|
|
.AsNoTracking()
|
|
.AsEnumerable()
|
|
.ToList();
|
|
}
|
|
return dbResult;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Recupero Righe (Actual) della scheda tecnica da GRUPPO + ODL + label
|
|
/// </summary>
|
|
/// <param name="codGruppo"></param>
|
|
/// <param name="label"></param>
|
|
/// <param name="idxODL"></param>
|
|
/// <returns></returns>
|
|
public List<ST_ActRow> STAR_byGrpOdlLbl(string codGruppo, string label, int idxODL)
|
|
{
|
|
List<ST_ActRow> dbResult = new List<ST_ActRow>();
|
|
using (var dbCtx = new MoonProContext(_configuration))
|
|
{
|
|
var CodGruppo = new SqlParameter("@CodGruppo", codGruppo);
|
|
var Label = new SqlParameter("@Label", label);
|
|
var IdxODL = new SqlParameter("@IdxODL", idxODL);
|
|
|
|
dbResult = dbCtx
|
|
.DbSetStActRow
|
|
.FromSqlRaw("exec dbo.stp_ST_AR_getGrpOdlLabel @CodGruppo, @Label, @IdxODL", CodGruppo, Label, IdxODL)
|
|
.AsNoTracking()
|
|
.AsEnumerable()
|
|
.ToList();
|
|
}
|
|
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;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Effettua conferma prod macchina dell'intero periodo da confermare (ultima conferma
|
|
/// --> dtEvent)
|
|
/// </summary>
|
|
/// <param name="idxMacchina">idx macchina da confermare</param>
|
|
/// <param name="modoConfProd">0=periodo, 1 = giorno, 2 = turno</param>
|
|
/// <param name="numPzConfermati">qta pezzi BUONI da confermare</param>
|
|
/// <param name="numPzLasciati">
|
|
/// qta pezzi LASCIATI alla macchina da confermare (2 eventi 121 rettifica neg/pos)
|
|
/// </param>
|
|
/// <param name="numPzScarto">qta pezzi SCARTO da confermare</param>
|
|
/// <param name="DataOraApp">DataOra in cui registrare approvazione</param>
|
|
/// <param name="MatrOpr">Matricola operatore</param>
|
|
/// <returns></returns>
|
|
public bool ConfermaProdMacchinaFull(string idxMacchina, int modoConfProd, int numPzConfermati, int numPzLasciati, int numPzScarto, DateTime DataOraApp, int MatrOpr)
|
|
{
|
|
bool answ = false;
|
|
try
|
|
{
|
|
var rigaProd = StatoProdMacchina(idxMacchina, DateTime.Now);
|
|
using (var dbCtx = new MoonProContext(_configuration))
|
|
{
|
|
var IdxMacchina = new SqlParameter("@idxMacchina", idxMacchina);
|
|
var MatrApp = new SqlParameter("@MatrApp ", MatrOpr);
|
|
var DataFrom = new SqlParameter("@dataFrom ", rigaProd.DataFrom);
|
|
var DataTo = new SqlParameter("@dataTo", DataOraApp);
|
|
var PezziConf = new SqlParameter("@pezziConf", numPzConfermati);
|
|
var PezziLasc = new SqlParameter("@pezziLasciati", numPzLasciati);
|
|
var PezziScar = new SqlParameter("@pezziScar", numPzScarto);
|
|
var TipoConf = new SqlParameter("@TipoConf", modoConfProd);
|
|
var DtOraApp = new SqlParameter("@DataOraApp", DataOraApp);
|
|
var TestConferma = new SqlParameter("@TestConferma", true);
|
|
|
|
var result = dbCtx
|
|
.Database
|
|
.ExecuteSqlRaw("EXEC stp_ConfermaProduzCompletaFull @idxMacchina, @MatrApp, @dataFrom, @dataTo, @pezziConf, @pezziLasciati, @pezziScar, @TipoConf, @DataOraApp, @TestConferma ", IdxMacchina, MatrApp, DataFrom, DataTo, PezziConf, PezziLasc, PezziScar, TipoConf, DtOraApp, TestConferma);
|
|
|
|
// indico eseguito!
|
|
answ = result > 0;
|
|
}
|
|
}
|
|
catch (Exception exc)
|
|
{
|
|
Log.Error($"Eccezione in ConfermaProdMacchinaFull con rett ev121:{Environment.NewLine}{exc}");
|
|
}
|
|
return answ;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Effettua conferma prod macchina dell'intero periodo da confermare (ultima conferma
|
|
/// --> dtEvent)
|
|
/// </summary>
|
|
/// <param name="idxMacchina">idx macchina da confermare</param>
|
|
/// <param name="modoConfProd">0=periodo, 1 = giorno, 2 = turno</param>
|
|
/// <param name="numPzConfermati">qta pezzi BUONI da confermare</param>
|
|
/// <param name="numPzScarto">qta pezzi SCARTO da confermare</param>
|
|
/// <param name="DataOraApp">DataOra in cui registrare approvazione</param>
|
|
/// <param name="MatrOpr">Matricola operatore</param>
|
|
/// <returns></returns>
|
|
public bool ConfermaProdMacchina(string idxMacchina, int modoConfProd, int numPzConfermati, int numPzScarto, DateTime DataOraApp, int MatrOpr)
|
|
{
|
|
bool answ = false;
|
|
try
|
|
{
|
|
var rigaProd = StatoProdMacchina(idxMacchina, DateTime.Now);
|
|
using (var dbCtx = new MoonProContext(_configuration))
|
|
{
|
|
var IdxMacchina = new SqlParameter("@idxMacchina", idxMacchina);
|
|
var MatrApp = new SqlParameter("@MatrApp ", MatrOpr);
|
|
var DataFrom = new SqlParameter("@dataFrom ", rigaProd.DataFrom);
|
|
var DataTo = new SqlParameter("@dataTo", DataOraApp);
|
|
var PezziConf = new SqlParameter("@pezziConf", numPzConfermati);
|
|
var PezziScar = new SqlParameter("@pezziScar", numPzScarto);
|
|
var TipoConf = new SqlParameter("@TipoConf", modoConfProd);
|
|
var DtOraApp = new SqlParameter("@DataOraApp", DataOraApp);
|
|
var TestConferma = new SqlParameter("@TestConferma", true);
|
|
|
|
var result = dbCtx
|
|
.Database
|
|
.ExecuteSqlRaw("EXEC stp_ConfermaProduzCompleta @idxMacchina, @MatrApp, @dataFrom, @dataTo, @pezziConf, @pezziScar, @TipoConf, @DataOraApp, @TestConferma ", IdxMacchina, MatrApp, DataFrom, DataTo, PezziConf, PezziScar, TipoConf, DtOraApp, TestConferma);
|
|
|
|
// indico eseguito!
|
|
answ = result > 0;
|
|
}
|
|
}
|
|
catch (Exception exc)
|
|
{
|
|
Log.Error($"Eccezione in ConfermaProdMacchina:{Environment.NewLine}{exc}");
|
|
}
|
|
return answ;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Effettua ricalcolo MSE x macchina indicata
|
|
/// </summary>
|
|
/// <param name="idxMacchina">idx macchina da confermare</param>
|
|
/// <param name="maxAgeSec">Num massimo secondi di "vecchiaia" del dato</param>
|
|
/// <returns></returns>
|
|
public bool RicalcMse(string idxMacchina, int maxAgeSec)
|
|
{
|
|
bool answ = false;
|
|
try
|
|
{
|
|
var rigaProd = StatoProdMacchina(idxMacchina, DateTime.Now);
|
|
using (var dbCtx = new MoonProContext(_configuration))
|
|
{
|
|
var MaxAgeSec = new SqlParameter("@maxAgeSec ", maxAgeSec);
|
|
var IdxMacchina = new SqlParameter("@idxMacchina", idxMacchina);
|
|
|
|
var result = dbCtx
|
|
.Database
|
|
.ExecuteSqlRaw("EXEC stp_MSE_recalc @maxAgeSec, @idxMacchina ", MaxAgeSec, IdxMacchina);
|
|
|
|
// indico eseguito!
|
|
answ = result > 0;
|
|
}
|
|
}
|
|
catch (Exception exc)
|
|
{
|
|
Log.Error($"Eccezione in RicalcMse:{Environment.NewLine}{exc}");
|
|
}
|
|
return answ;
|
|
}
|
|
|
|
#endregion Public Methods
|
|
|
|
#region Private Fields
|
|
|
|
private static IConfiguration _configuration;
|
|
|
|
private static NLog.Logger Log = LogManager.GetCurrentClassLogger();
|
|
|
|
#endregion Private Fields
|
|
}
|
|
} |