From fa335443f3788345a1db34e1855e404d6bf9f4a0 Mon Sep 17 00:00:00 2001 From: Lucio Maranta Date: Wed, 4 Jul 2018 17:27:22 +0200 Subject: [PATCH] FIx query and returned data First shank option management --- Step.Config/Config/toolManagerConfig.xml | 2 +- Step.Config/ServerConfigController.cs | 1 + .../Controllers/NcToolManagerController.cs | 78 ++++++++++++------- .../DTOModels/ToolModels/DTONcFamilyModel.cs | 11 +++ .../DTOModels/ToolModels/DTONcShankModel.cs | 9 ++- .../DTOModels/ToolModels/DTONcToolModel.cs | 35 +++++++-- .../ToolModels/DTOSiemensToolModel.cs | 2 + Step.Model/DatabaseModels/NcFamilyModel.cs | 2 +- Step.NC/NcHandler.cs | 16 ++-- .../WebApi/NcToolManagerController.cs | 65 ++++++++++++---- 10 files changed, 159 insertions(+), 62 deletions(-) diff --git a/Step.Config/Config/toolManagerConfig.xml b/Step.Config/Config/toolManagerConfig.xml index 6ffb67a7..76097b1b 100644 --- a/Step.Config/Config/toolManagerConfig.xml +++ b/Step.Config/Config/toolManagerConfig.xml @@ -1,7 +1,7 @@  true - true + false true true true diff --git a/Step.Config/ServerConfigController.cs b/Step.Config/ServerConfigController.cs index 62d64571..84af20fb 100644 --- a/Step.Config/ServerConfigController.cs +++ b/Step.Config/ServerConfigController.cs @@ -306,6 +306,7 @@ namespace Step.Config }) .ToList(); } + private static void ReadToolManagerConfig() { XDocument xmlConfigFile = GetXmlHandlerWithValidator(TOOL_MANAGER_CONFIG_SCHEMA_PATH, TOOL_MANAGER_CONFIG_PATH); diff --git a/Step.Database/Controllers/NcToolManagerController.cs b/Step.Database/Controllers/NcToolManagerController.cs index 4139b3c7..8774ea71 100644 --- a/Step.Database/Controllers/NcToolManagerController.cs +++ b/Step.Database/Controllers/NcToolManagerController.cs @@ -23,19 +23,25 @@ namespace Step.Database.Controllers dbCtx.Dispose(); } - public List GetFamilies() + public List FindFamilies() { - List families = dbCtx.Families.ToList(); - - List tools = dbCtx.Tools.ToList(); - //foreach (NcFamilyModel family in families) - //{ - // family.Tools = tools.Where(x => x.FamilyId == family.FamilyId).ToList(); - //} + List families = dbCtx + .Families + .Include("Tools") + .ToList(); return families; } + public List GetFamilies() + { + List dbFamilies = FindFamilies(); + + return dbFamilies + .Select(x => (DTONcFamilyModel)x) + .ToList(); + } + public NcToolModel FindTool(int toolId) { return dbCtx.Tools @@ -58,7 +64,7 @@ namespace Step.Database.Controllers .FirstOrDefault(); } - public List GetToolsWithDependencies() + public List FindToolsWithDependencies() { List tools = dbCtx .Tools @@ -78,9 +84,21 @@ namespace Step.Database.Controllers return tools; } + public List GetTools() + { + List dbTools = FindToolsWithDependencies(); + + return dbTools + .Select(x => (DTONcToolModel)x) + .ToList(); + } + public List FindShanks() { - List shanks = dbCtx.Shanks.Include("MagazinePosition").ToList(); + List shanks = dbCtx + .Shanks + .Include("MagazinePosition") + .ToList(); return shanks; } @@ -94,26 +112,32 @@ namespace Step.Database.Controllers .ToList(); // Populate db shanks - List dtoShanks = new List(); - foreach (var shank in dbShanks) - { - //dbCtx.Shanks.Attach(shank); - DTONcShankModel dtoShank = (DTONcShankModel)shank; + List dtoShanks = dbShanks + .Select(x => (DTONcShankModel)x) + .ToList(); + // new List(); + //foreach (var shank in dbShanks) + //{ + // //dbCtx.Shanks.Attach(shank); + // DTONcShankModel dtoShank = (DTONcShankModel)shank; - dtoShanks.Add(dtoShank); - } + // dtoShanks.Add(dtoShank); + //} return dtoShanks; } - public List GetPositions() + public List FindPositions() { - List positions = dbCtx.MagazinePositions.ToList(); + List positions = dbCtx + .MagazinePositions + .Include("Shank") + .ToList(); return positions; } - public List GetMagazinePositions(byte magId) + public List FindMagazinePositions(byte magId) { return dbCtx .MagazinePositions @@ -121,7 +145,7 @@ namespace Step.Database.Controllers .ToList(); } - public NcMagazinePositionModel GetMagazinePosition(byte magId, byte posId) + public NcMagazinePositionModel FindMagazinePosition(byte magId, byte posId) { NcMagazinePositionModel positions = dbCtx .MagazinePositions @@ -197,12 +221,13 @@ namespace Step.Database.Controllers public NcFamilyModel AddFamily(DTONcFamilyModel family) { - NcFamilyModel familyModel = (NcFamilyModel)family; - dbCtx.Families.Add(familyModel); + NcFamilyModel dbFamily = (NcFamilyModel)family; + dbCtx.Families.Add(dbFamily); dbCtx.SaveChanges(); + dbCtx.Families.Attach(dbFamily); - return familyModel; + return dbFamily; } public NcShankModel AddShank(DTONcShankModel shank) @@ -212,6 +237,7 @@ namespace Step.Database.Controllers dbCtx.SaveChanges(); + dbCtx.Shanks.Attach(dbShank); return dbShank; } @@ -257,7 +283,7 @@ namespace Step.Database.Controllers } - public DTONcShankModel LoadShankInMagazine(byte magazineId, byte positionId, NcShankModel shank) + public NcMagazinePositionModel LoadShankInMagazine(byte magazineId, byte positionId, NcShankModel shank) { dbCtx.Shanks.Attach(shank); @@ -266,7 +292,7 @@ namespace Step.Database.Controllers dbCtx.SaveChanges(); - return (DTONcShankModel)shank; + return FindMagazinePosition(magazineId, positionId); } public DTONcShankModel UnloadShankInMagazine(byte magazineId, byte positionId, NcShankModel shank) diff --git a/Step.Model/DTOModels/ToolModels/DTONcFamilyModel.cs b/Step.Model/DTOModels/ToolModels/DTONcFamilyModel.cs index 617d5e90..2513b38c 100644 --- a/Step.Model/DTOModels/ToolModels/DTONcFamilyModel.cs +++ b/Step.Model/DTOModels/ToolModels/DTONcFamilyModel.cs @@ -66,8 +66,18 @@ namespace Step.Model.DTOModels.ToolModels [Required] public short ReviveDelta { get; set; } + public List Tools { get; set; } + public static explicit operator DTONcFamilyModel(NcFamilyModel obj) { + List tools = new List(); + + if(obj.Tools != null) + foreach (var tool in obj.Tools) + { + tools.Add((DTONcToolModel)tool); + } + return new DTONcFamilyModel() { Id = obj.FamilyId, @@ -89,6 +99,7 @@ namespace Step.Model.DTOModels.ToolModels LifeType = obj.LifeType, NominalLife = obj.NominalLife, ReviveDelta = obj.ReviveDelta, + Tools = tools }; } diff --git a/Step.Model/DTOModels/ToolModels/DTONcShankModel.cs b/Step.Model/DTOModels/ToolModels/DTONcShankModel.cs index eaaeb46e..519d1813 100644 --- a/Step.Model/DTOModels/ToolModels/DTONcShankModel.cs +++ b/Step.Model/DTOModels/ToolModels/DTONcShankModel.cs @@ -36,10 +36,11 @@ namespace Step.Model.DTOModels.ToolModels { List tools = new List(); - foreach (var tool in obj.Tools) - { - tools.Add((DTONcToolModel)tool); - } + if (obj.Tools != null) + foreach (var tool in obj.Tools) + { + tools.Add((DTONcToolModel)tool); + } return new DTONcShankModel() { diff --git a/Step.Model/DTOModels/ToolModels/DTONcToolModel.cs b/Step.Model/DTOModels/ToolModels/DTONcToolModel.cs index f8ffefeb..700b1d3b 100644 --- a/Step.Model/DTOModels/ToolModels/DTONcToolModel.cs +++ b/Step.Model/DTOModels/ToolModels/DTONcToolModel.cs @@ -24,13 +24,13 @@ namespace Step.Model.DTOModels.ToolModels public int FamilyId { get; set; } [Required] - public int ShankId { get; set; } + public int? ShankId { get; set; } - public int? Offset1 { get; set; } + public int Offset1 { get; set; } - public int? Offset2 { get; set; } + public int Offset2 { get; set; } - public int? Offset3 { get; set; } + public int Offset3 { get; set; } public static explicit operator DTONcToolModel(NcToolModel obj) { @@ -42,7 +42,10 @@ namespace Step.Model.DTOModels.ToolModels Type = obj.Type, OffsetLength = obj.OffsetLength, ResidualLife = obj.ResidualLife, - ResidualRevive = obj.ResidualRevive + ResidualRevive = obj.ResidualRevive, + Offset1 = obj.OffsetId1, + Offset2 = obj.OffsetId2, + Offset3 = obj.OffsetId3 }; } @@ -56,17 +59,37 @@ namespace Step.Model.DTOModels.ToolModels Type = obj.Type, OffsetLength = obj.OffsetLength, ResidualLife = obj.ResidualLife, - ResidualRevive = obj.ResidualRevive + ResidualRevive = obj.ResidualRevive, + OffsetId1 = obj.Offset1, + OffsetId2 = obj.Offset2, + OffsetId3 = obj.Offset3 }; } } public class DTONcMagazinesPositionsModel { + public byte MagazineId { get; set; } + + public byte PositionId { get; set; } + [Required] public bool Disabled { get; set; } [Required] public byte Type { get; set; } + + public int? ShankId { get; set; } + + public static explicit operator DTONcMagazinesPositionsModel(NcMagazinePositionModel obj) + { + return new DTONcMagazinesPositionsModel() + { + MagazineId = obj.MagazineId, + PositionId = obj.PositionId, + Disabled = obj.Disabled, + Type = obj.Type + }; + } } } \ No newline at end of file diff --git a/Step.Model/DTOModels/ToolModels/DTOSiemensToolModel.cs b/Step.Model/DTOModels/ToolModels/DTOSiemensToolModel.cs index 616ce89f..cec33a4d 100644 --- a/Step.Model/DTOModels/ToolModels/DTOSiemensToolModel.cs +++ b/Step.Model/DTOModels/ToolModels/DTOSiemensToolModel.cs @@ -61,6 +61,8 @@ namespace Step.Model.DTOModels.ToolModels [Required] public bool PreAlarm { get; set; } + public DTONcShankModel Shank { get; set; } + public static explicit operator SiemensToolModel(DTOSiemensToolModel dtoModel) { return new SiemensToolModel() diff --git a/Step.Model/DatabaseModels/NcFamilyModel.cs b/Step.Model/DatabaseModels/NcFamilyModel.cs index 1d559982..529abfda 100644 --- a/Step.Model/DatabaseModels/NcFamilyModel.cs +++ b/Step.Model/DatabaseModels/NcFamilyModel.cs @@ -65,6 +65,6 @@ namespace Step.Model.DatabaseModels [Column("revive_delta")] public short ReviveDelta { get; set; } - public ICollection Tools; + public List Tools { get; set; } } } \ No newline at end of file diff --git a/Step.NC/NcHandler.cs b/Step.NC/NcHandler.cs index 935bc4b0..2e489fe6 100644 --- a/Step.NC/NcHandler.cs +++ b/Step.NC/NcHandler.cs @@ -1064,11 +1064,11 @@ namespace Step.NC #region Osai/Fanuc Tools - public NcToolModel AddTool(DTONcToolModel tool) + public DTONcToolModel AddTool(DTONcToolModel tool) { using (NcToolManagerController toolsManager = new NcToolManagerController()) { - return toolsManager.AddTool(tool); + return (DTONcToolModel)toolsManager.AddTool(tool); } } @@ -1080,19 +1080,19 @@ namespace Step.NC } } - public NcFamilyModel AddFamily(DTONcFamilyModel family) + public DTONcFamilyModel AddFamily(DTONcFamilyModel family) { using (NcToolManagerController toolsManager = new NcToolManagerController()) { - return toolsManager.AddFamily(family); + return (DTONcFamilyModel)toolsManager.AddFamily(family); } } - public NcShankModel AddShank(DTONcShankModel shank) + public DTONcShankModel AddShank(DTONcShankModel shank) { using (NcToolManagerController toolsManager = new NcToolManagerController()) { - return toolsManager.AddShank(shank); + return (DTONcShankModel)toolsManager.AddShank(shank); } } @@ -1136,11 +1136,11 @@ namespace Step.NC } } - public DTONcShankModel LoadToolInMagazine(byte magazineId, byte positionId, NcShankModel shank) + public DTONcMagazinesPositionsModel LoadToolInMagazine(byte magazineId, byte positionId, NcShankModel shank) { using (NcToolManagerController toolsManager = new NcToolManagerController()) { - return toolsManager.LoadShankInMagazine(magazineId, positionId, shank); + return (DTONcMagazinesPositionsModel)toolsManager.LoadShankInMagazine(magazineId, positionId, shank); } } diff --git a/Step/Controllers/WebApi/NcToolManagerController.cs b/Step/Controllers/WebApi/NcToolManagerController.cs index 813019c3..137de1e5 100644 --- a/Step/Controllers/WebApi/NcToolManagerController.cs +++ b/Step/Controllers/WebApi/NcToolManagerController.cs @@ -19,7 +19,7 @@ namespace Step.Controllers.WebApi { using (NcToolManagerController toolsManager = new NcToolManagerController()) { - List tools = toolsManager.GetToolsWithDependencies(); + List tools = toolsManager.GetTools(); return Ok(tools); } @@ -33,19 +33,39 @@ namespace Step.Controllers.WebApi using (NcToolManagerController toolsManager = new NcToolManagerController()) { + // Check if family exists NcFamilyModel fam = toolsManager.FindFamily(dtoTool.FamilyId); if (fam == null) return BadRequest("error_incorrect_parameters"); - NcShankModel shank = toolsManager.FindShank(dtoTool.ShankId); - if (shank == null) - return BadRequest("error_incorrect_parameters"); + // If option is active check if shank exists + if (ToolManagerConfig.ShankOptIsActive) + { + NcShankModel shank = toolsManager.FindShank(dtoTool.ShankId.Value); + if (shank == null) + return BadRequest("error_incorrect_parameters"); + } } using (NcHandler ncHandler = new NcHandler()) { ncHandler.Connect(); - NcToolModel newTool = ncHandler.AddTool(dtoTool); + // Check option + if (!ToolManagerConfig.ShankOptIsActive) + { + // if option is not active create a shank + DTONcShankModel newShank = new DTONcShankModel() + { + Balluf = 0, + MagazinePositionType = 0 + }; + // Add new shank + DTONcShankModel ncShank = ncHandler.AddShank(newShank); + // Set tool shank id + dtoTool.ShankId = ncShank.Id; + } + // Add tool + DTONcToolModel newTool = ncHandler.AddTool(dtoTool); return Ok(newTool); } @@ -59,6 +79,7 @@ namespace Step.Controllers.WebApi using (NcToolManagerController toolsManager = new NcToolManagerController()) { + // Check if tool exists NcToolModel tool = toolsManager.FindTool(toolId); if (tool == null) return NotFound(); @@ -66,6 +87,7 @@ namespace Step.Controllers.WebApi using (NcHandler ncHandler = new NcHandler()) { ncHandler.Connect(); + // Update NcToolModel newTool = ncHandler.UpdateTool(tool, dtoTool); return Ok(newTool); @@ -86,6 +108,14 @@ namespace Step.Controllers.WebApi { ncHandler.Connect(); + if (!ToolManagerConfig.ShankOptIsActive && tool.ShankId != null) + { + // If option is active find & delete tool shank + NcShankModel shank = toolsManager.FindShank(tool.ShankId.Value); + + ncHandler.DeleteNcShank(shank); + } + ncHandler.DeleteNcTool(tool); return Ok(); @@ -112,10 +142,13 @@ namespace Step.Controllers.WebApi if (!ModelState.IsValid) return BadRequest(ModelState); + if (!ToolManagerConfig.ShankOptIsActive) + return BadRequest(); + using (NcHandler ncHandler = new NcHandler()) { ncHandler.Connect(); - NcShankModel shank = ncHandler.AddShank(dtoShank); + DTONcShankModel shank = ncHandler.AddShank(dtoShank); return Ok(shank); } } @@ -175,7 +208,7 @@ namespace Step.Controllers.WebApi using (NcHandler ncHandler = new NcHandler()) { ncHandler.Connect(); - NcFamilyModel newFamily = ncHandler.AddFamily(dtoFamily); + DTONcFamilyModel newFamily = ncHandler.AddFamily(dtoFamily); return Ok(newFamily); } @@ -186,7 +219,7 @@ namespace Step.Controllers.WebApi { using (NcToolManagerController toolsManager = new NcToolManagerController()) { - List families = toolsManager.GetFamilies(); + List families = toolsManager.GetFamilies(); return Ok(families); } @@ -243,7 +276,7 @@ namespace Step.Controllers.WebApi { using (NcToolManagerController toolsManager = new NcToolManagerController()) { - List magazines = toolsManager.GetPositions(); + List magazines = toolsManager.FindPositions(); return Ok(magazines); } @@ -254,7 +287,7 @@ namespace Step.Controllers.WebApi { using (NcToolManagerController toolsManager = new NcToolManagerController()) { - List magazine = toolsManager.GetMagazinePositions(magazineId); + List magazine = toolsManager.FindMagazinePositions(magazineId); return Ok(magazine); } @@ -269,7 +302,7 @@ namespace Step.Controllers.WebApi using (NcToolManagerController toolsManager = new NcToolManagerController()) { // Check if magazine&position exists - NcMagazinePositionModel pos = toolsManager.GetMagazinePosition(magazineId, positionId); + NcMagazinePositionModel pos = toolsManager.FindMagazinePosition(magazineId, positionId); if (pos == null) return NotFound(); @@ -283,13 +316,13 @@ namespace Step.Controllers.WebApi #endregion Magazine positions - [Route("magazine/{magazineId:int}/mounted_tools"), HttpGet] + [Route("magazine/{magazineId:int}/mounted_shanks"), HttpGet] public IHttpActionResult GetMagazineTools(byte magazineId) { using (NcToolManagerController toolsManager = new NcToolManagerController()) { // Check if magazine exists - List pos = toolsManager.GetMagazinePositions(magazineId); + List pos = toolsManager.FindMagazinePositions(magazineId); if (pos.Count <= 0) return NotFound(); @@ -299,7 +332,7 @@ namespace Step.Controllers.WebApi } } - [Route("magazine/available_tools"), HttpGet] + [Route("magazine/available_shanks"), HttpGet] public IHttpActionResult GetAvailableTools() { using (NcToolManagerController toolsManager = new NcToolManagerController()) @@ -327,9 +360,9 @@ namespace Step.Controllers.WebApi using (NcHandler ncHandler = new NcHandler()) { ncHandler.Connect(); - DTONcShankModel responseShank = ncHandler.LoadToolInMagazine(magazineId, positionId, shank); + DTONcMagazinesPositionsModel magPos = ncHandler.LoadToolInMagazine(magazineId, positionId, shank); - return Ok(responseShank); + return Ok(magPos); } } }