From ce6357271cd0ac31ed62729751d4d4b3bce54b4e Mon Sep 17 00:00:00 2001 From: "zaccaria.majid" Date: Mon, 12 Dec 2022 10:25:33 +0100 Subject: [PATCH] aggiunti metodo e controller x db arca --- MP.Data/Controllers/MpInveController.cs | 37 ++++++++++++++++++++-- MP.Data/MoonPro_InveContext.cs | 1 + MP.INVE/Data/MiDataService.cs | 41 +++++++++++++++++++++++-- 3 files changed, 74 insertions(+), 5 deletions(-) diff --git a/MP.Data/Controllers/MpInveController.cs b/MP.Data/Controllers/MpInveController.cs index 919aeecf..de0f324c 100644 --- a/MP.Data/Controllers/MpInveController.cs +++ b/MP.Data/Controllers/MpInveController.cs @@ -1,4 +1,5 @@ -using Microsoft.EntityFrameworkCore; +using Microsoft.Data.SqlClient; +using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Configuration; using MP.Data.DatabaseModels; using NLog; @@ -27,12 +28,44 @@ namespace MP.Data.Controllers { _configuration = null; } + + #region gestione lotti esterni + /// + /// Elenco lotti esterni presenti sul db di ARCA + /// + /// Codice articolo + /// Codice lotto + /// Codice magazzino + /// proprietà per definire scopo stored + /// + public List ListLottiEsterni(string codArt, string codLotto, string codMagazzino, bool onlyTest) + { + List dbResult = new List(); + using (var dbCtx = new MoonPro_InveContext(_configuration)) + { + var DataGiac = new SqlParameter("@DataGiac", null); + var CodArt = new SqlParameter("@CodArt", codArt); + var CodLotto = new SqlParameter("@CodLotto", codLotto); + var CodMagaz = new SqlParameter("@CodMagaz", codMagazzino); + var OnlyTest = new SqlParameter("@OnlyTest", onlyTest); + + dbResult = dbCtx + .DbLottoArca + .FromSqlRaw("exec dbo.stp_GIAC_getByDate @DataGiac,@CodArt,@CodLotto,@CodMagaz,@OnlyTest", DataGiac, CodArt, CodLotto, CodMagaz, OnlyTest) + .AsNoTracking() + //.AsEnumerable() + .ToList(); + } + return dbResult; + } + #endregion gestione lotti esterni + #region gestione articoli /// /// articolo MAG corrispondente all' articolo selezionato /// - /// + /// /// public AnagArticoli_MAG artBySearch(string artSearch) { diff --git a/MP.Data/MoonPro_InveContext.cs b/MP.Data/MoonPro_InveContext.cs index 323c5fa6..a6cec875 100644 --- a/MP.Data/MoonPro_InveContext.cs +++ b/MP.Data/MoonPro_InveContext.cs @@ -53,6 +53,7 @@ namespace MP.Data public virtual DbSet DbUdcData { get; set; } public virtual DbSet DbLottoData { get; set; } public virtual DbSet DbArtMag { get; set; } + public virtual DbSet DbLottoArca { get; set; } #endregion PER INVE #region PER SPEC diff --git a/MP.INVE/Data/MiDataService.cs b/MP.INVE/Data/MiDataService.cs index 023cb27c..59b837be 100644 --- a/MP.INVE/Data/MiDataService.cs +++ b/MP.INVE/Data/MiDataService.cs @@ -297,6 +297,39 @@ namespace MP.INVE.Data return result; } + + public List ListLottiEsterni() + { + string source = ""; + Stopwatch stopWatch = new Stopwatch(); + stopWatch.Start(); + List? result = new List(); + // cerco in redis... + RedisValue rawData = redisDb.StringGet(redisLottiEsterni); + if (!string.IsNullOrEmpty($"{rawData}")) + { + result = JsonConvert.DeserializeObject>($"{rawData}"); + + source = "REDIS"; + } + else + { + result = dbController.ListLottiEsterni(); + // serializzo e salvo... + rawData = JsonConvert.SerializeObject(result); + redisDb.StringSetAsync(redisLottiEsterni, rawData, getRandTOut(redisLongTimeCache)); + source = "DB"; + } + if (result == null) + { + result = new List(); + } + stopWatch.Stop(); + TimeSpan ts = stopWatch.Elapsed; + Log.Debug($"ListLottiEsterni Read from {source}: {ts.TotalMilliseconds}ms"); + return result; + } + public List ScanList() { string source = ""; @@ -413,7 +446,7 @@ namespace MP.INVE.Data stopWatch.Start(); List? result = new List(); // cerco in redis... - RedisValue rawData = redisDb.StringGet(redisLottiBaseAddr); + RedisValue rawData = redisDb.StringGet(redisLottiInterni); if (!string.IsNullOrEmpty($"{rawData}")) { result = JsonConvert.DeserializeObject>($"{rawData}"); @@ -425,7 +458,7 @@ namespace MP.INVE.Data result = dbController.ElencoLotti(); // serializzo e salvo... rawData = JsonConvert.SerializeObject(result); - redisDb.StringSetAsync(redisLottiBaseAddr, rawData, getRandTOut(redisLongTimeCache)); + redisDb.StringSetAsync(redisLottiInterni, rawData, getRandTOut(redisLongTimeCache)); source = "DB"; } if (result == null) @@ -599,8 +632,10 @@ namespace MP.INVE.Data private const string redisBaseAddr = "MP:INVE"; private const string redisSessionBaseAddr = ":Session"; private const string redisOperatoriBaseAddr = ":Operatore"; - private const string redisUdcBaseAddr = ":UDC"; private const string redisLottiBaseAddr = ":Lotti"; + private const string redisUdcBaseAddr = ":UDC"; + private const string redisLottiInterni = redisLottiBaseAddr + ":LottiInterni"; + private const string redisLottiEsterni = redisLottiBaseAddr + ":LottiEsterni"; private const string redisConfigBaseAddr = ":Config"; private const string redisScanBaseAddr = redisBaseAddr + ":Scan"; private const string redisElencoOperatori = redisBaseAddr + redisOperatoriBaseAddr + ":ListOperatori";