diff --git a/MP-IO/Controllers/IOBController.cs b/MP-IO/Controllers/IOBController.cs index d7bb788a..23ffec6e 100644 --- a/MP-IO/Controllers/IOBController.cs +++ b/MP-IO/Controllers/IOBController.cs @@ -110,6 +110,7 @@ namespace MP_IO.Controllers return answ; } +#if false /// /// Chiude ODL x macchina: /// @@ -133,6 +134,39 @@ namespace MP_IO.Controllers catch { } return answ; + } +#endif + + /// + /// Chiude ODL x macchina: + /// + /// GET: IOB/closeODL/SIMUL_03?idxOdl=123&dtEve=20230323151100000&dtCurr=20230323221100000 + /// + /// id macchina + /// idx dell'ODL da chiudere + /// DataOra evento + /// DataOra corrente x fix + /// bool esecuzione + public bool closeODL(string id, int idxOdl, string dtEve = "", string dtCurr = "") + { + bool answ = false; + // init obj DataLayer + DataLayer DataLayerObj = new DataLayer(); + try + {// chiamata diretta sul DB... + DateTime dtEvento = DateTime.Now; + //se ho una data-ora chiusura la calcolo... + bool rtimeProc = string.IsNullOrEmpty(dtEve); + if (!rtimeProc) + { + dtEvento = DataLayerObj.GetSrvDtEvent(dtEve, dtCurr); + } + DataLayerObj.taODL.forceClose(idxOdl, id, dtEvento); + answ = true; + } + catch + { } + return answ; } /// @@ -141,7 +175,9 @@ namespace MP_IO.Controllers /// GET: IOB/closePODL/SIMUL_03?idxPOdl=123&dtEve=20230323151100000&dtCurr=20230323221100000 /// /// id macchina - /// idx dell'ODL da chiudere + /// idx del POdl da chiudere + /// DataOra evento + /// DataOra corrente x fix /// bool esecuzione public bool closePODL(string id, int idxPOdl, string dtEve = "", string dtCurr = "") { @@ -570,15 +606,19 @@ namespace MP_IO.Controllers return DataLayerObj.AutoStartOdl(id, doConfirm, qtyFromLast, (int)roundStep, keyRichiesta); } - /// Avvia PODL indicato + /// + /// Avvia PODL indicato /// - se esistesse un ODL da altro PODL --> chiude /// - se fosse già in essere ODL collegato --> lascia aperto /// - se fosse chiuso ODL collegato --> duplica PODL e poi avvia nuovo ODL. /// /// GET: IOB/forceStartPOdl/SIMUL_03?idxPODL=123&dtEve=20230323151100000&dtCurr=20230323221100000 - /// idx del PDL da - /// avviare data-ora di avvio (opzionale) data-ora attuale (opzionale) Esito chiamata (OK/vuoto) + /// + /// + /// idx del PDL da avviare + /// data-ora di avvio (opzionale) + /// data-ora attuale (opzionale) + /// Esito chiamata (OK/vuoto) public string forceStartPOdl(string id, int idxPODL, string dtEve = "", string dtCurr = "") { // attenzione! poiché nell'URL il carattere "#" viene filtrato ci aspettiamo il @@ -589,6 +629,26 @@ namespace MP_IO.Controllers return answ; } + /// + /// Creazione nuovo ODL dato CodArt + numPz + /// GET: IOB/forceCreatePOdl/SIMUL_03?CodArt=ABCD_1234&numPz=5 + /// + /// + /// + /// + /// + /// IdxODL creato + public int forceCreatePOdl(string id, string CodArt, string CodGruppo, int numPz) + { + int answ = 0; + // attenzione! poiché nell'URL il carattere "#" viene filtrato ci aspettiamo il + // carattere "|" che poi trasformiamo ora in "#" + id = id.Replace("|", "#"); + DataLayer DataLayerObj = new DataLayer(); + answ = DataLayerObj.ForceCreatePOdl(id, CodArt, numPz, CodGruppo); + return answ; + } + /// /// Recupera elenco articoli dei PODL correnti: /// @@ -604,8 +664,7 @@ namespace MP_IO.Controllers try { // recupero dati macchina... - var elencoArt = DataLayerObj.taAnagArt.getByCurrPODL(); - + DS_ProdTempi.AnagArticoliDataTable elencoArt = DataLayerObj.taAnagArt.getByCurrPODL(); answ = JsonConvert.SerializeObject(elencoArt); } catch diff --git a/MapoDb/DataLayer.cs b/MapoDb/DataLayer.cs index 0556d106..babd9822 100644 --- a/MapoDb/DataLayer.cs +++ b/MapoDb/DataLayer.cs @@ -1643,6 +1643,38 @@ namespace MapoDb return resultList; } + /// + /// Effettua force Start PODL [CurrProdStatus = 1] se fosse già in essere ODL collegato + /// --> lascia aperto [CurrProdStatus = 2] se esistesse un ODL da altro PODL x diverso + /// articolo/fase --> chiude vecchio x poi far partire nuovo [CurrProdStatus = 3] se + /// fosse chiuso ODL collegato --> duplica PODL e poi avvia nuovo ODL [CurrProdStatus = + /// 4] se fosse già in essere ODL non collegato --> lascia aperto e collego + /// + /// macchina + /// Codice articolo x PODL da creare + /// Qty assegnata + /// Codice Gruppo + /// opzionale, default = ND-00 + /// TCiclo assegnato + /// opzionale, default = 1 + /// + public int ForceCreatePOdl(string idxMacchina, string CodArt, int NumPz, string CodGruppo = "ND-00", decimal TCiclo = 1) + { + int answ = 0; + DateTime adesso = DateTime.Now; + // creazione record articolo SE non ci fosse... + string keyRich = $"IOB-{adesso:yyyyMMdd-HHmmss}"; + taPODL.insertQuery(keyRich, keyRich, true, CodArt, CodGruppo, idxMacchina, NumPz, TCiclo, adesso, 1, 1, ""); + // cerco PODL da chiave... + var listPOdl = taPODL.getByCodArt(CodArt, true); + var thisPodl = listPOdl.Where(x => x.KeyRichiesta == keyRich).FirstOrDefault(); + if (thisPodl != null) + { + answ = thisPodl.idxPromessa; + } + return answ; + } + /// /// Effettua force Start PODL [CurrProdStatus = 1] se fosse già in essere ODL collegato /// --> lascia aperto [CurrProdStatus = 2] se esistesse un ODL da altro PODL x diverso