From afebca707f499109a858380794102926857daeb4 Mon Sep 17 00:00:00 2001 From: Samuele Locatelli Date: Tue, 7 Nov 2023 16:58:20 +0100 Subject: [PATCH] Avanzamento gestione ODL --- MP-TAB-SERV/Components/FixOdl.razor.cs | 2 +- MP-TAB-SERV/Components/OdlMan.razor | 16 +- MP-TAB-SERV/Components/OdlMan.razor.cs | 292 +++++++++++++++++++++++-- MP-TAB-SERV/MP-TAB-SERV.csproj | 2 +- MP-TAB-SERV/Resources/ChangeLog.html | 2 +- MP-TAB-SERV/Resources/VersNum.txt | 2 +- MP-TAB-SERV/Resources/manifest.xml | 2 +- MP.Data/Controllers/MpTabController.cs | 112 ++++++++-- MP.Data/Services/TabDataService.cs | 72 +++++- 9 files changed, 450 insertions(+), 52 deletions(-) diff --git a/MP-TAB-SERV/Components/FixOdl.razor.cs b/MP-TAB-SERV/Components/FixOdl.razor.cs index 1604446c..44cfe8eb 100644 --- a/MP-TAB-SERV/Components/FixOdl.razor.cs +++ b/MP-TAB-SERV/Components/FixOdl.razor.cs @@ -150,7 +150,7 @@ namespace MP_TAB_SERV.Components ListSelODL = await TabDServ.VSOdlGetUnused(IdxMaccCurr, ShowAll, numDayOdl); DateTime dateTo = DateTime.Today.AddDays(1); DateTime dateFrom = dateTo.AddMonths(-1); - ListComplete = await TabDServ.OdlListByMacc(IdxMaccCurr, dateFrom, dateTo); + ListComplete = await TabDServ.OdlListByMaccPeriodo(IdxMaccCurr, dateFrom, dateTo); TotalCount = ListComplete.Count; // esegue paginazione UpdateTable(); diff --git a/MP-TAB-SERV/Components/OdlMan.razor b/MP-TAB-SERV/Components/OdlMan.razor index a591e081..a9febe91 100644 --- a/MP-TAB-SERV/Components/OdlMan.razor +++ b/MP-TAB-SERV/Components/OdlMan.razor @@ -132,7 +132,7 @@
- @foreach (var item in ListODL) { @@ -147,23 +147,29 @@
- @if (idxOdlSel > 0) + @if (idxPOdlSel > 0) { - + } else { }
- @if (idxOdlSel > 0) + @if (idxPOdlSel > 0) {
- + +
} diff --git a/MP-TAB-SERV/Components/OdlMan.razor.cs b/MP-TAB-SERV/Components/OdlMan.razor.cs index c32076e9..f3b83f9d 100644 --- a/MP-TAB-SERV/Components/OdlMan.razor.cs +++ b/MP-TAB-SERV/Components/OdlMan.razor.cs @@ -2,6 +2,9 @@ using global::Microsoft.AspNetCore.Components; using MP.Data.DatabaseModels; using MP.Data.Services; using NLog; +using static MP.Data.Objects.Enums; +using static StackExchange.Redis.Role; +using System.Text; namespace MP_TAB_SERV.Components { @@ -30,14 +33,14 @@ namespace MP_TAB_SERV.Components #region Protected Properties - protected int IdxOdlSel + protected int IdxPOdlSel { - get => idxOdlSel; + get => idxPOdlSel; set { - if (idxOdlSel != value) + if (idxPOdlSel != value) { - idxOdlSel = value; + idxPOdlSel = value; showOdlDetail = value > 0; var pUpd = Task.Run(async () => { @@ -51,7 +54,9 @@ namespace MP_TAB_SERV.Components protected List ListODL { get; set; } = new List(); [Inject] - protected SharedMemService MServ { get; set; } = null!; + protected SharedMemService SMServ { get; set; } = null!; + [Inject] + protected MessageService MServ { get; set; } = null!; /// /// Verifica ODL OK (ovvero caricato x macchina...) @@ -78,9 +83,6 @@ namespace MP_TAB_SERV.Components } } - [Inject] - protected SharedMemService SMServ { get; set; } = null!; - [Inject] protected TabDataService TabDServ { get; set; } = null!; @@ -124,6 +126,9 @@ namespace MP_TAB_SERV.Components { baseLang = SMServ.GetConf("baseLang"); numDayOdl = SMServ.GetConfInt("numDaySelOdl"); + confRett = SMServ.GetConfBool("confRett"); + enableSplitODL = SMServ.GetConfBool("enableSplitODL"); + modoConfProd = SMServ.GetConfInt("modoConfProd"); if (RecMSE != null) { IdxMaccSel = RecMSE.IdxMacchina; @@ -132,13 +137,22 @@ namespace MP_TAB_SERV.Components } checkAll(); } + private bool enableSplitODL = false; + private int modoConfProd = 0; + private bool confRett = true; protected override async Task OnParametersSetAsync() { - isMulti = MServ.DictMacchMulti[RecMSE?.IdxMacchina] == 1; + isMulti = SMServ.DictMacchMulti[RecMSE?.IdxMacchina] == 1; + await ReloadData(false); } + protected void SaveTCRich(double newTCRich) + { + tcRichAttr = newTCRich; + } + protected async Task SetMacc(string selIdxMacc) { isProcessing = true; @@ -149,6 +163,246 @@ namespace MP_TAB_SERV.Components await Task.Delay(10); } + private int MatrOpr + { + get => MServ.MatrOpr; + } + /// + /// verifica se sia necessario confermare la prod dell'ODL precedente prima di chiudere e lo fa in automatico... + /// + /// boolean, true = deve confermare 0 pezzi (es. in setup) + private async Task confermaProdOdl(bool confZero) + { + // 2016.11.17 NOTA: introdotti scarti, li confermiamo SEMPRE a zero se in setup, però da valutare SE a FINE ATTREZZAGGIO chiedere num pezzi e num scarti (saldo zero buoni) da inserire... + bool fatto = false; + DateTime adesso = DateTime.Now; + if (confZero) + { + // confermo produzione ZERO pezzi (in setup) + if (confRett) + { + // confermo al netto dei pezzi lasciati... + fatto = TabDServ.ConfermaProdMacchinaFull(IdxMaccSel, modoConfProd, 0, 0, 0, adesso, MatrOpr); + } + else + { + fatto = TabDServ.ConfermaProdMacchina(IdxMaccSel, modoConfProd, 0, 0, adesso, MatrOpr); + } + } + else // se NON sono in setup verifico se ho pz da confermare + { + // recupero pz da confermare + var rawData = await TabDServ.PezziProdMacchina(IdxMaccSel); + prodMacchina = rawData.FirstOrDefault() ?? new PzProdModel(); + if (prodMacchina.pezziNonConfermati > 0) + { + // confermo produzione ZERO pezzi (in setup) + if (confRett) + { + // confermo al netto dei pezzi lasciati... + fatto = TabDServ.ConfermaProdMacchinaFull(IdxMaccSel, modoConfProd, prodMacchina.pezziNonConfermati, 0, 0, adesso, MatrOpr); + } + else + { + fatto = TabDServ.ConfermaProdMacchina(IdxMaccSel, modoConfProd, prodMacchina.pezziNonConfermati, 0, adesso, MatrOpr); + } + } + } + } + + protected int PzPallet = 1; + + /// + /// Dichiarazione inizio attrezzaggio PODL indicato + /// + /// + protected async Task StartSetup() + { + /*************************************************** + * comprende gestione machineSlave x fix ODL master --> slave + * + ***************************************************/ + + bool inAttr = false; + // se è multi mi chiedo se sia DAVVERO in attrezzaggio... + if (isMulti) + { + try + { + // controllo se NON SONO già in attrezzaggio... + var rigaStato = TabDServ.StatoMacchina(IdxMaccParent); + inAttr = (rigaStato.IdxStato == 2); + } + catch + { } + } + // proseguo + int idxODL_curr = 0; + await confermaProdOdl(false); + if (IdxPOdlSel > 0) + { + // se vedesse TCRich a zero lo reimposta a quello assegnato... + if (tcRichAttr == 0) + { + tcRichAttr = (double)currPodl.Tcassegnato; + } + if (enableSplitODL) + { + // splitto VECCHIO ODL (se è rimasto qualcosa da produrre e se ce ne è rimasto uno.......) + try + { + var currOdl = await TabDServ.OdlCurrByMacc(IdxMaccSel); + if (currOdl != null && currOdl.Count > 0) + { + int idxODLTemp = currOdl[0].IdxOdl; + decimal tcAss = currOdl[0].Tcassegnato; + await TabDServ.OdlSplit(idxODLTemp, MatrOpr, IdxMaccSel, tcAss, PzPallet, $"inizio attrezzaggio, Sospensione ODL {idxODLTemp}, generato residuo con pari TCiclo: {tcAss}", false, 0); + } + // se è multi processo ANCHE x altra tavola... + if (isMulti) + { +#if false + int _idxOdl = DataLayerObj.taODL.getByMacchina(idxMaccAltraTav)[0].IdxODL; + DataLayerObj.taODL.splitODL(_idxOdl, DataLayerObj.MatrOpr, idxMaccAltraTav, TCAssegnato(_idxOdl), PzPallet, string.Format("inizio attrezzaggio, Sospensione ODL {0}, generato residuo con pari TCiclo: {1}", _idxOdl, TCAssegnato(_idxOdl)), false, 0); +#endif + } + } + catch + { } + } +#if false + // 2018.07.24 verifico se devo lavorare come ODL classico o come RPO (Richiesta / Promessa / ODL) + if (enableRPO) + { + // creo nuovo ODL da promessa ed associo + DateTime adesso = DateTime.Now; + DataLayerObj.taODL.inizioSetupPromessa(idxODLSel, DataLayerObj.MatrOpr, idxMacchinaFix, TCRichAttr, PzPallet, txtNote.Text, adesso); + // salvo ODL attrezzato + idxODL_curr = DataLayerObj.taODL.getByMacchina(idxMacchinaFix)[0].IdxODL; + } + // ODL classico + else + { + // avvio NUOVO ODL + DataLayerObj.taODL.inizioSetup(idxODLSel, DataLayerObj.MatrOpr, idxMacchinaFix, TCRichAttr, PzPallet, txtNote.Text); + // salvo ODL Current + idxODL_curr = idxODLSel; + } + // process evento + int idxEvento = 2; // !!!HARD CODED + string evText = "Registrato inizio attrezzaggio per ODL {0}"; + StringBuilder sb = new StringBuilder(); + sb.AppendLine(String.Format(evText, idxODL_curr)); + processaEvento(idxMacchinaFix, idxEvento, sb.ToString(), idxODL_curr); + // indico INIZIO SETUP su REDIS come EXE della macchina... + string ts = string.Format("{0:yyMMdd}T{0:HHmmss.fff}Z", DateTime.Now); + string outData = $"TS:{ts}|MATR:{DataLayerObj.MatrOpr}|ODL:{idxODL_curr}"; + // aggiungo articolo, commessa, richiesta pezzi... + try + { + var datiODL = DataLayerObj.taODL.getByMacchina(idxMacchinaFix)[0]; + string setArtVal = $"{datiODL.CodArticolo}"; + string setPzCommVal = $"{datiODL.NumPezzi}"; + string setCommVal = $"ODL{datiODL.IdxODL:00000000}"; + // FIXME TODO: scrivere come sotto? testare valvital x linea LASCO + DataLayerObj.addTask4Machine(idxMacchinaFix, taskType.startSetup, outData); + DataLayerObj.addTask4Machine(idxMacchinaFix, taskType.setArt, setArtVal); + DataLayerObj.addTask4Machine(idxMacchinaFix, taskType.setComm, setCommVal); + DataLayerObj.addTask4Machine(idxMacchinaFix, taskType.setPzComm, setPzCommVal); + DataLayerObj.updateMachineParameter(idxMacchinaFix, "setArt", setArtVal); + DataLayerObj.updateMachineParameter(idxMacchinaFix, "setComm", setCommVal); + DataLayerObj.updateMachineParameter(idxMacchinaFix, "setPzComm", setPzCommVal); + DataLayerObj.addTask4Machine(idxMacchinaFix, taskType.setParameter, "ForceUpdate"); + // li aggiungo ANCHE sui PLC slave se ci sono... + if (isMaster) + { + // calcolo gli slave... + var slaveList = DataLayerObj.taM2S.getByMaster(idxMacchina); + foreach (var machine in slaveList) + { + outData = $"TS:{ts}|MATR:{DataLayerObj.MatrOpr}|Master Machine: {idxMacchinaFix}"; + // invio chiusura attrezzaggio + DataLayerObj.addTask4Machine(machine.IdxMacchinaSlave, taskType.startSetup, outData); + DataLayerObj.addTask4Machine(machine.IdxMacchinaSlave, taskType.setArt, setArtVal); + DataLayerObj.addTask4Machine(machine.IdxMacchinaSlave, taskType.setComm, setCommVal); + DataLayerObj.addTask4Machine(machine.IdxMacchinaSlave, taskType.setPzComm, setPzCommVal); + DataLayerObj.updateMachineParameter(machine.IdxMacchinaSlave, "setArt", setArtVal); + DataLayerObj.updateMachineParameter(machine.IdxMacchinaSlave, "setComm", setCommVal); + DataLayerObj.updateMachineParameter(machine.IdxMacchinaSlave, "setPzComm", setPzCommVal); + DataLayerObj.addTask4Machine(machine.IdxMacchinaSlave, taskType.setParameter, "ForceUpdate"); + } + } + } + catch + { } + + // se è multi CHIUDO ODL x altra tavola... + if (isMulti) + { + // se NON sono in attrezzaggio... + if (!inAttr) + { + int idxOdlAltra = 0; + try + { + var tabOdl = DataLayerObj.taODL.getByMacchina(idxMaccAltraTav); + if (tabOdl.Rows.Count > 0) + { + idxOdlAltra = DataLayerObj.taODL.getByMacchina(idxMaccAltraTav)[0].IdxODL; + } + } + catch (Exception exc) + { + logger.lg.scriviLog("Durante recupero idxOdlAltra " + exc.ToString(), tipoLog.EXCEPTION); + } + // procedo se ho ODL + if (idxOdlAltra > 0) + { + sb.AppendLine("---"); + DataLayerObj.taODL.fineProd(idxOdlAltra, idxMaccAltraTav); + evText = "Registrato inizio attrezzaggio per ODL {0} (setup seconda tavola)"; + sb.AppendLine(String.Format(evText, idxOdlAltra)); + processaEvento(idxMaccAltraTav, idxEvento, String.Format(evText, idxOdlAltra), idxOdlAltra); + } + lblOut.Text = sb.ToString().Replace("---", "
"); + } + // update buttons... + checkAll(); + } + // se è master --> chiamo update child! + if (isMaster) + { + DataLayerObj.taODL.fixMachineSlave(idxMacchina, 30, 1); + } + // resetto contapezzi redis... + DataLayerObj.saveCounter(idxMacchinaFix, "0"); + // imposto ODL su redis... + DataLayerObj.saveCurrODL(idxMacchinaFix, idxODL_curr.ToString()); + // salvo odl selezionato + idxOdl = idxODL_curr; +#endif + } + else + { +#if false + lblOut.Text = "Selezionare un ORDINE valido!"; +#endif + } + +#if false + // refresh finale + checkBtnStatus(); + fixSplitBtn(false); + // sollevo evento! + if (eh_reqUpdate != null) + { + eh_reqUpdate(this, new EventArgs()); + } +#endif + + await Task.Delay(1); + } + protected void togOdlDetail() { showOdlDetail = !showOdlDetail; @@ -171,6 +425,7 @@ namespace MP_TAB_SERV.Components private string IdxMaccSel = ""; + private int idxPOdlSel = 0; private bool isInAttr = false; private bool isInProd = false; @@ -181,13 +436,13 @@ namespace MP_TAB_SERV.Components private bool isSlave = false; + private int lastIdxPOdl = 0; + private string noteAttr = ""; private int numDayOdl = 5; private bool showAll = false; private bool showOdlDetail = false; - - private string noteAttr = ""; private double tcRichAttr = 1; #endregion Private Fields @@ -206,8 +461,6 @@ namespace MP_TAB_SERV.Components get => RecMSE != null ? RecMSE.IdxOdl ?? 0 : 0; } - private int idxOdlSel { get; set; } = 0; - private string lblWarnBody { get => odlOk ? Traduci("ConfProdBeforeContinueBody") : Traduci("setOdlBeforeContinueBody"); @@ -305,7 +558,7 @@ namespace MP_TAB_SERV.Components Log.Trace("OdlMan.ReloadData"); if (forceReload) { - isSlave = MServ.ListM2S + isSlave = SMServ.ListM2S .Where(x => x.IdxMacchinaSlave.Equals(RecMSE?.IdxMacchina, StringComparison.InvariantCultureIgnoreCase)) .ToList().Count > 0; } @@ -323,10 +576,15 @@ namespace MP_TAB_SERV.Components private async Task ReloadPOdlDetailData() { - if (IdxOdlSel > 0) + if (IdxPOdlSel > 0) { - currPodl = await TabDServ.PODLExp_getByKey(IdxOdlSel); - tcRichAttr = (double)currPodl.Tcassegnato; + currPodl = await TabDServ.PODLExp_getByKey(IdxPOdlSel); + // controllo se è cambiato PODL + if (IdxPOdlSel != lastIdxPOdl) + { + lastIdxPOdl = IdxPOdlSel; + tcRichAttr = (double)currPodl.Tcassegnato; + } } } diff --git a/MP-TAB-SERV/MP-TAB-SERV.csproj b/MP-TAB-SERV/MP-TAB-SERV.csproj index f13534b2..972a0e06 100644 --- a/MP-TAB-SERV/MP-TAB-SERV.csproj +++ b/MP-TAB-SERV/MP-TAB-SERV.csproj @@ -3,7 +3,7 @@ net6.0 enable - 6.16.2311.709 + 6.16.2311.716 enable MP_TAB_SERV diff --git a/MP-TAB-SERV/Resources/ChangeLog.html b/MP-TAB-SERV/Resources/ChangeLog.html index 23b7c068..8c31ce1a 100644 --- a/MP-TAB-SERV/Resources/ChangeLog.html +++ b/MP-TAB-SERV/Resources/ChangeLog.html @@ -1,6 +1,6 @@ Modulo MAPOSPEC -

Versione: 6.16.2311.709

+

Versione: 6.16.2311.716


Note di rilascio:
  • diff --git a/MP-TAB-SERV/Resources/VersNum.txt b/MP-TAB-SERV/Resources/VersNum.txt index 51da60c0..b980696d 100644 --- a/MP-TAB-SERV/Resources/VersNum.txt +++ b/MP-TAB-SERV/Resources/VersNum.txt @@ -1 +1 @@ -6.16.2311.709 +6.16.2311.716 diff --git a/MP-TAB-SERV/Resources/manifest.xml b/MP-TAB-SERV/Resources/manifest.xml index bd7451d8..b295e334 100644 --- a/MP-TAB-SERV/Resources/manifest.xml +++ b/MP-TAB-SERV/Resources/manifest.xml @@ -1,6 +1,6 @@ - 6.16.2311.709 + 6.16.2311.716 https://nexus.steamware.net/repository/SWS/MP-TAB-SERV/stable/LAST/MP-TAB-SERV.zip https://nexus.steamware.net/repository/SWS/MP-TAB-SERV/stable/LAST/ChangeLog.html false diff --git a/MP.Data/Controllers/MpTabController.cs b/MP.Data/Controllers/MpTabController.cs index 77965204..70fb9208 100644 --- a/MP.Data/Controllers/MpTabController.cs +++ b/MP.Data/Controllers/MpTabController.cs @@ -737,6 +737,33 @@ namespace MP.Data.Controllers return fatto; } + /// + /// ODL corrente macchina + /// + /// + /// + public List OdlCurrByMacc(string idxMacchina) + { + List dbResult = new List(); + using (var dbCtx = new MoonProContext(_configuration)) + { + try + { + var IdxMacchina = new SqlParameter("@IdxMacchina", idxMacchina); + dbResult = dbCtx + .DbSetODLExp + .FromSqlRaw("EXEC stp_ODL_getByMacchina @IdxMacchina", IdxMacchina) + .AsNoTracking() + .ToList(); + } + catch (Exception exc) + { + Log.Error($"Eccezione durante OdlCurrByMacc{Environment.NewLine}{exc}"); + } + } + return dbResult; + } + /// /// Elenco ODL data macchina e periodo /// @@ -744,7 +771,7 @@ namespace MP.Data.Controllers /// /// /// - public List OdlListByMacc(string idxMacchina, DateTime dtStart, DateTime dtEnd) + public List OdlListByMaccPeriodo(string idxMacchina, DateTime dtStart, DateTime dtEnd) { List dbResult = new List(); using (var dbCtx = new MoonProContext(_configuration)) @@ -762,7 +789,7 @@ namespace MP.Data.Controllers } catch (Exception exc) { - Log.Error($"Eccezione durante ListOdlAll{Environment.NewLine}{exc}"); + Log.Error($"Eccezione durante OdlListByMaccPeriodo{Environment.NewLine}{exc}"); } } return dbResult; @@ -825,6 +852,67 @@ namespace MP.Data.Controllers } return fatto; } + + /// + /// Split ODL + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + public bool OdlSplit(int idxODL, int matrOpr, string idxMacchina, decimal TCRich, int pzPallet, string note, bool startNewOdl, int qtyRich) + { + bool fatto = false; + using (var dbCtx = new MoonProContext(_configuration)) + { + try + { + var IdxODL = new SqlParameter("@idxODL", idxODL); + var MatrOpr = new SqlParameter("@MatrOpr", matrOpr); + var IdxMacc = new SqlParameter("@IdxMacchina", idxMacchina); + var TCRichAttr = new SqlParameter("@TCRichAttr", TCRich); + var PzPallet = new SqlParameter("@PzPallet", pzPallet); + var Note = new SqlParameter("@Note", note); + var StartNewOdl = new SqlParameter("@StartNewOdl", startNewOdl); + var QtyRich = new SqlParameter("@QtyRich", qtyRich); + var result = dbCtx + .Database + .ExecuteSqlRaw("EXEC stp_ODL_split @idxODL, @MatrOpr, @IdxMacchina, @TCRichAttr, @PzPallet, @Note, @StartNewOdl, @QtyRich", IdxODL, MatrOpr, IdxMacc, TCRichAttr, PzPallet, Note, StartNewOdl, QtyRich); + fatto = result != 0; + } + catch (Exception exc) + { + Log.Error($"Eccezione durante OdlSplit{Environment.NewLine}{exc}"); + } + } + return fatto; + } + + /// + /// Stato prod macchina + /// + /// + /// + public List PezziProdMacchina(string idxMacchina) + { + List dbResult = new List(); + using (var dbCtx = new MoonProContext(_configuration)) + { + var IdxMacchina = new SqlParameter("@IdxMacchina", idxMacchina); + dbResult = dbCtx + .DbSetPzProd + .FromSqlRaw("EXEC stp_PzProd_getByMacchina @IdxMacchina", IdxMacchina) + .AsNoTracking() + .ToList(); + } + return dbResult; + } + /// /// Recupero PODL da chiave /// @@ -856,26 +944,6 @@ namespace MP.Data.Controllers return dbResult; } - /// - /// Stato prod macchina - /// - /// - /// - public List PezziProdMacchina(string idxMacchina) - { - List dbResult = new List(); - using (var dbCtx = new MoonProContext(_configuration)) - { - var IdxMacchina = new SqlParameter("@IdxMacchina", idxMacchina); - dbResult = dbCtx - .DbSetPzProd - .FromSqlRaw("EXEC stp_PzProd_getByMacchina @IdxMacchina", IdxMacchina) - .AsNoTracking() - .ToList(); - } - return dbResult; - } - /// /// Restituisce elenco RC filtrato /// diff --git a/MP.Data/Services/TabDataService.cs b/MP.Data/Services/TabDataService.cs index 21232936..e67478e2 100644 --- a/MP.Data/Services/TabDataService.cs +++ b/MP.Data/Services/TabDataService.cs @@ -1033,6 +1033,43 @@ namespace MP.Data.Services return answ; } + /// + /// ODL corrente macchina + /// + /// + /// + public async Task> OdlCurrByMacc(string idxMacchina) + { + string source = "DB"; + Stopwatch sw = new Stopwatch(); + sw.Start(); + List? result = new List(); + // cerco in redis... + string currKey = $"{redisBaseKey}:ODL:{idxMacchina}:CURR"; + RedisValue rawData = await redisDb.StringGetAsync(currKey); + if (rawData.HasValue) + { + result = JsonConvert.DeserializeObject>($"{rawData}"); + source = "REDIS"; + } + else + { + result = await Task.FromResult(dbTabController.OdlCurrByMacc(idxMacchina)); + // riordino + result = result.OrderByDescending(x => x.DataInizio).ToList(); + // serializzp e salvo... + rawData = JsonConvert.SerializeObject(result); + await redisDb.StringSetAsync(currKey, rawData, FastCache); + } + if (result == null) + { + result = new List(); + } + sw.Stop(); + Log.Debug($"OdlCurrByMacc | {source} | {sw.Elapsed.TotalMilliseconds}ms"); + return result; + } + /// /// Elenco ODL data macchina e periodo /// @@ -1040,7 +1077,7 @@ namespace MP.Data.Services /// /// /// - public async Task> OdlListByMacc(string idxMacchina, DateTime dtStart, DateTime dtEnd) + public async Task> OdlListByMaccPeriodo(string idxMacchina, DateTime dtStart, DateTime dtEnd) { string source = "DB"; Stopwatch sw = new Stopwatch(); @@ -1056,7 +1093,7 @@ namespace MP.Data.Services } else { - result = await Task.FromResult(dbTabController.OdlListByMacc(idxMacchina, dtStart, dtEnd)); + result = await Task.FromResult(dbTabController.OdlListByMaccPeriodo(idxMacchina, dtStart, dtEnd)); // riordino result = result.OrderByDescending(x => x.DataInizio).ToList(); // serializzp e salvo... @@ -1068,7 +1105,7 @@ namespace MP.Data.Services result = new List(); } sw.Stop(); - Log.Debug($"OdlListByMacc | {source} | {sw.Elapsed.TotalMilliseconds}ms"); + Log.Debug($"OdlListByMaccPeriodo | {source} | {sw.Elapsed.TotalMilliseconds}ms"); return result; } @@ -1119,6 +1156,35 @@ namespace MP.Data.Services return answ; } + /// + /// Split ODL + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + public async Task OdlSplit(int idxODL, int matrOpr, string idxMacchina, decimal TCRich, int pzPallet, string note, bool startNewOdl, int qtyRich) + { + bool answ = false; + try + { + // inserisco evento + answ = dbTabController.OdlSplit(idxODL, matrOpr, idxMacchina, TCRich, pzPallet, note, startNewOdl, qtyRich); + await FlushCache("ODL"); + } + catch (Exception exc) + { + string logMsg = $"Eccezione in OdlSplit | macchina: {idxMacchina} | idxODL: {idxODL}{Environment.NewLine}{exc}"; + Log.Error(logMsg); + } + return answ; + } + /// /// Stato prod macchina ///