diff --git a/Thermo.Active.Database/Controllers/ProdInfoController.cs b/Thermo.Active.Database/Controllers/ProdInfoController.cs index 9e9c3a5f..c1b691d4 100644 --- a/Thermo.Active.Database/Controllers/ProdInfoController.cs +++ b/Thermo.Active.Database/Controllers/ProdInfoController.cs @@ -67,8 +67,9 @@ namespace Thermo.Active.Database.Controllers /// /// /// + /// /// - public ProdInfoModel Create(short NumTarget, short NumDone, int TimeWarm, int TimeVent, int TimeVacuum, int TimeCycleGross, int TimeCycleNet, double MaterialTempEndWarm, double MaterialTempEndVent, double MoldTemp, double VacuumReadVal, double MouldEnergyOUT, double MouldEnergyIN) + public ProdInfoModel Create(short NumTarget, short NumDone, int TimeWarm, int TimeVent, int TimeVacuum, int TimeCycleGross, int TimeCycleNet, double MaterialTempEndWarm, double MaterialTempEndVent, double MoldTemp, double VacuumReadVal, double MouldEnergyOUT, double MouldEnergyIN, bool IsScrap) { // Create database machine model ProdInfoModel prodData = new ProdInfoModel() @@ -86,7 +87,8 @@ namespace Thermo.Active.Database.Controllers MoldTemp = MoldTemp, VacuumReadVal = VacuumReadVal, MouldEnergyOUT = MouldEnergyOUT, - MouldEnergyIN = MouldEnergyIN + MouldEnergyIN = MouldEnergyIN, + IsScrap = IsScrap }; try { @@ -100,6 +102,33 @@ namespace Thermo.Active.Database.Controllers return prodData; } + /// + /// Process table and set as scrap by num value + /// + /// + /// + public bool SetScrap(int num, bool isScrap) + { + bool answ = false; + + var currRecord = dbCtx + .ProdInfo + .Where(x => x.NumDone == num) + .SingleOrDefault(); + try + { + if (currRecord != null) + { + currRecord.IsScrap = isScrap; + } + // save! + dbCtx.SaveChanges(); + answ = true; + } + catch + { } + return answ; + } /// /// Process table and keep only maxKeep most recent ones diff --git a/Thermo.Active.Database/Thermo.Active.Database.csproj b/Thermo.Active.Database/Thermo.Active.Database.csproj index d10b5d81..478bde16 100644 --- a/Thermo.Active.Database/Thermo.Active.Database.csproj +++ b/Thermo.Active.Database/Thermo.Active.Database.csproj @@ -131,6 +131,10 @@ 202006170558519_AddedProdInfoModel.cs + + + 202009021558544_AddedScrapPartMgmt.cs + @@ -173,6 +177,9 @@ 202006170558519_AddedProdInfoModel.cs + + 202009021558544_AddedScrapPartMgmt.cs + \ No newline at end of file diff --git a/Thermo.Active.Model/DTOModels/ThProd/DTOProdInfo.cs b/Thermo.Active.Model/DTOModels/ThProd/DTOProdInfo.cs index a8ac886a..ffe5cf0c 100644 --- a/Thermo.Active.Model/DTOModels/ThProd/DTOProdInfo.cs +++ b/Thermo.Active.Model/DTOModels/ThProd/DTOProdInfo.cs @@ -25,6 +25,7 @@ namespace Thermo.Active.Model.DTOModels.ThProd public double VacuumReadVal { get; set; } = 0; public double MouldEnergyOUT { get; set; } = 0; public double MouldEnergyIN { get; set; } = 0; + public bool IsScrap { get; set; } = false; public override bool Equals(object obj) { @@ -60,6 +61,8 @@ namespace Thermo.Active.Model.DTOModels.ThProd return false; if (MouldEnergyIN != item.MouldEnergyIN) return false; + if (IsScrap != item.IsScrap) + return false; return true; } @@ -88,6 +91,7 @@ namespace Thermo.Active.Model.DTOModels.ThProd this.VacuumReadVal = pimRawData.VacuumReadVal; this.MouldEnergyIN = pimRawData.MouldEnergyIN; this.MouldEnergyOUT = pimRawData.MouldEnergyOUT; + this.IsScrap = pimRawData.IsScrap; } } } diff --git a/Thermo.Active.NC/NcAdapter.cs b/Thermo.Active.NC/NcAdapter.cs index bb27cc8b..2e1eb859 100644 --- a/Thermo.Active.NC/NcAdapter.cs +++ b/Thermo.Active.NC/NcAdapter.cs @@ -1504,7 +1504,7 @@ namespace Thermo.Active.NC // save on DB! attenzione: num pezzi -1 perché salvo pezzo PRECEDENTE... using (ProdInfoController prodInfoController = new ProdInfoController()) { - prodInfoController.Create(prodInfoRawData.NumTarget, prodInfoRawData.NumDone, prodInfoRawData.TimeWarm, prodInfoRawData.TimeVent, prodInfoRawData.TimeVacuum, prodInfoRawData.TimeCycleGross, prodInfoRawData.TimeCycleNet, prodInfoRawData.MaterialTempEndWarm, prodInfoRawData.MaterialTempEndVent, prodInfoRawData.MoldTemp, prodInfoRawData.VacuumReadVal, prodInfoRawData.MouldEnergyOUT, prodInfoRawData.MouldEnergyIN); + prodInfoController.Create(prodInfoRawData.NumTarget, prodInfoRawData.NumDone, prodInfoRawData.TimeWarm, prodInfoRawData.TimeVent, prodInfoRawData.TimeVacuum, prodInfoRawData.TimeCycleGross, prodInfoRawData.TimeCycleNet, prodInfoRawData.MaterialTempEndWarm, prodInfoRawData.MaterialTempEndVent, prodInfoRawData.MoldTemp, prodInfoRawData.VacuumReadVal, prodInfoRawData.MouldEnergyOUT, prodInfoRawData.MouldEnergyIN, false); } // update last info data lastProdInfoData = prodInfoRawData; @@ -1588,13 +1588,31 @@ namespace Thermo.Active.NC MoldTemp = x.MoldTemp, VacuumReadVal = x.VacuumReadVal, MouldEnergyOUT = x.MouldEnergyOUT, - MouldEnergyIN = x.MouldEnergyIN + MouldEnergyIN = x.MouldEnergyIN, + IsScrap = x.IsScrap }).ToList(); } return libraryError; } /// + /// Get historical prodinfo data from DB + /// + /// + /// + /// + public CmsError SetScrap(int num, bool isScrap) + { + CmsError libraryError = NO_ERROR; + + using (ProdInfoController prodInfoController = new ProdInfoController()) + { + prodInfoController.SetScrap(num, isScrap); + } + + return libraryError; + } + /// /// Update requested prod quantity /// /// diff --git a/Thermo.Active/Controllers/WebApi/ProdController.cs b/Thermo.Active/Controllers/WebApi/ProdController.cs index 4cf7f097..104f6894 100644 --- a/Thermo.Active/Controllers/WebApi/ProdController.cs +++ b/Thermo.Active/Controllers/WebApi/ProdController.cs @@ -100,9 +100,42 @@ namespace Thermo.Active.Controllers.WebApi return Ok(); } + + /// + /// Set item as scrap + /// + /// item NUM + /// scrap flag (true/false) + /// + [Route("setScrap"), HttpPut] + [WebApiAuthorize(FunctionAccess = FUNCTIONALITY_NAMES.RECIPE_MANAGER, Action = ACTIONS.READ)] + public IHttpActionResult SetScrap(int num, bool isScrap) + { + // Try connection + CmsError libraryError = ncAdapter.Connect(); + if (libraryError.IsError()) + { + ThermoActiveLogger.LogError($"NC Not connected! | SetScrap | {libraryError.exception}"); + return BadRequest(libraryError.localizationKey); + } + + // scrivo sul DB che il pezzo è SCRAPPED + libraryError = ncAdapter.SetScrap(num, isScrap); + if (libraryError.IsError()) + { + ThermoActiveLogger.LogError($"SetScrap error | {libraryError.exception}"); + return BadRequest(libraryError.localizationKey); + } + + // ritorno solo fatto! + return Ok(); + } + /// /// Request start production /// + /// item NUM + /// scrap flag (true/false) /// [Route("start"), HttpPut] [WebApiAuthorize(FunctionAccess = FUNCTIONALITY_NAMES.RECIPE_MANAGER, Action = ACTIONS.READ)]