From 4accaacc06abc3e8d0bb9d5236917bf9951e1175 Mon Sep 17 00:00:00 2001 From: Lucio Maranta Date: Tue, 3 Jul 2018 17:22:32 +0200 Subject: [PATCH] Fix shanks query Added options config --- Step.Config/Config/toolManagerConfig.xml | 15 ++++ .../Config/toolManagerConfigValidator.xsd | 21 +++++ Step.Config/ServerConfig.cs | 1 + Step.Config/ServerConfigController.cs | 25 ++++++ Step.Config/Step.Config.csproj | 7 ++ .../Controllers/NcToolManagerController.cs | 77 ++++++++++++------- .../ConfigModels/ToolManagerConfigModel.cs | 24 ++++++ .../ConfigModels/ToolTableConfigModel.cs | 15 ---- Step.Model/Constants.cs | 3 + .../DTOModels/ToolModels/DTONcShankModel.cs | 20 ++++- .../DTOModels/ToolModels/DTONcToolModel.cs | 2 + Step.Model/Step.Model.csproj | 1 + .../WebApi/NcToolManagerController.cs | 9 +-- 13 files changed, 172 insertions(+), 48 deletions(-) create mode 100644 Step.Config/Config/toolManagerConfig.xml create mode 100644 Step.Config/Config/toolManagerConfigValidator.xsd create mode 100644 Step.Model/ConfigModels/ToolManagerConfigModel.cs delete mode 100644 Step.Model/ConfigModels/ToolTableConfigModel.cs diff --git a/Step.Config/Config/toolManagerConfig.xml b/Step.Config/Config/toolManagerConfig.xml new file mode 100644 index 00000000..6ffb67a7 --- /dev/null +++ b/Step.Config/Config/toolManagerConfig.xml @@ -0,0 +1,15 @@ + + + true + true + true + true + true + true + true + true + true + true + true + true + \ No newline at end of file diff --git a/Step.Config/Config/toolManagerConfigValidator.xsd b/Step.Config/Config/toolManagerConfigValidator.xsd new file mode 100644 index 00000000..eca1defd --- /dev/null +++ b/Step.Config/Config/toolManagerConfigValidator.xsd @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Step.Config/ServerConfig.cs b/Step.Config/ServerConfig.cs index 866f3fd4..59c1cc79 100644 --- a/Step.Config/ServerConfig.cs +++ b/Step.Config/ServerConfig.cs @@ -23,6 +23,7 @@ namespace Step.Config public static List NcSoftKeysConfig; public static List InitialAlarmsConfig; public static List HeadsConfig; + public static ToolManagerConfigModel ToolManagerConfig; public static AreasConfigModel ProductionConfig; public static AreasConfigModel ToolingConfig; diff --git a/Step.Config/ServerConfigController.cs b/Step.Config/ServerConfigController.cs index 42f0cddb..62d64571 100644 --- a/Step.Config/ServerConfigController.cs +++ b/Step.Config/ServerConfigController.cs @@ -24,6 +24,7 @@ namespace Step.Config ReadUserSoftKeysConfig(); ReadAlarmsConfig(); ReadHeadsConfig(); + ReadToolManagerConfig(); } catch (System.Xml.XmlException ex) { @@ -305,6 +306,30 @@ namespace Step.Config }) .ToList(); } + private static void ReadToolManagerConfig() + { + XDocument xmlConfigFile = GetXmlHandlerWithValidator(TOOL_MANAGER_CONFIG_SCHEMA_PATH, TOOL_MANAGER_CONFIG_PATH); + + // Read config from XML file + ToolManagerConfig = xmlConfigFile + .Elements() + .Select(x => new ToolManagerConfigModel() + { + FamilyOptIsActive = Convert.ToBoolean(x.Element("familyOptIsActive").Value), + ShankOptIsActive = Convert.ToBoolean(x.Element("shankOptIsActive").Value), + MagPositionIsActive = Convert.ToBoolean(x.Element("magPositionOptIsActive").Value), + OffsetOptIsActive = Convert.ToBoolean(x.Element("offsetOptIsActive").Value), + ReviveOptIsActive = Convert.ToBoolean(x.Element("reviveOptIsActive").Value), + GammaOptIsActive = Convert.ToBoolean(x.Element("gammaOptIsActive").Value), + LifeOptIsActive = Convert.ToBoolean(x.Element("lifeOptIsActive").Value), + TcpOptIsActive = Convert.ToBoolean(x.Element("tcpOptIsActive").Value), + CoolingOptIsActive = Convert.ToBoolean(x.Element("coolingOptIsActive").Value), + MultidimensionalShankOptIsActive = Convert.ToBoolean(x.Element("multidimensionalShankOptIsActive").Value), + SelfAdaptivePathOptIsActive = Convert.ToBoolean(x.Element("selfAdaptivePathOptIsActive").Value), + DynamicCompensationOptIsActive = Convert.ToBoolean(x.Element("dynamicCompensationOptIsActive").Value), + }) + .FirstOrDefault(); + } #endregion Read config from file from configuration } diff --git a/Step.Config/Step.Config.csproj b/Step.Config/Step.Config.csproj index 4c735507..f3fe896a 100644 --- a/Step.Config/Step.Config.csproj +++ b/Step.Config/Step.Config.csproj @@ -47,6 +47,9 @@ + + PreserveNewest + PreserveNewest Designer @@ -93,6 +96,10 @@ Designer Always + + Designer + Always + diff --git a/Step.Database/Controllers/NcToolManagerController.cs b/Step.Database/Controllers/NcToolManagerController.cs index 551a35d7..4139b3c7 100644 --- a/Step.Database/Controllers/NcToolManagerController.cs +++ b/Step.Database/Controllers/NcToolManagerController.cs @@ -58,7 +58,7 @@ namespace Step.Database.Controllers .FirstOrDefault(); } - public List GetTools() + public List GetToolsWithDependencies() { List tools = dbCtx .Tools @@ -69,13 +69,43 @@ namespace Step.Database.Controllers return tools; } - public List GetShanks() + public List FindTools() + { + List tools = dbCtx + .Tools + .ToList(); + + return tools; + } + + public List FindShanks() { List shanks = dbCtx.Shanks.Include("MagazinePosition").ToList(); return shanks; } + public List GetShanks() + { + // Get shank from database + List dbShanks = dbCtx + .Shanks + .Include("Tools") + .ToList(); + + // Populate db shanks + List dtoShanks = new List(); + foreach (var shank in dbShanks) + { + //dbCtx.Shanks.Attach(shank); + DTONcShankModel dtoShank = (DTONcShankModel)shank; + + dtoShanks.Add(dtoShank); + } + + return dtoShanks; + } + public List GetPositions() { List positions = dbCtx.MagazinePositions.ToList(); @@ -107,7 +137,25 @@ namespace Step.Database.Controllers return offsets; } - + + public List GetMountedShanks(int magazineId) + { + List dtoShanks = GetShanks() + .Where(x => x.MagazineId != null) + .ToList(); + + return dtoShanks; + } + + public List GetAvailableShanks() + { + List dtoShanks = GetShanks() + .Where(x => x.MagazineId == null && x.Tools.Count > 0) + .ToList(); + + return dtoShanks; + } + public NcToolModel AddTool(DTONcToolModel dtoTool) { NcToolModel tool = (NcToolModel)dtoTool; @@ -208,29 +256,6 @@ namespace Step.Database.Controllers dbCtx.SaveChanges(); } - public List GetMountedShanks(int magazineId) - { - return dbCtx - .Shanks - .Where(x => x.MagazineId == magazineId) - .Select(x => new DTONcShankModel() - { - Id = x.ShankId, - Balluf = x.Balluf, - MagazineId = x.MagazineId, - PositionId = x.PositionId, - MagazinePositionType = x.MagazinePositionType - }) - .ToList(); - } - - public List GetAvailableShanks() - { - return dbCtx - .Shanks - .Where(x => x.MagazineId == null) - .ToList(); - } public DTONcShankModel LoadShankInMagazine(byte magazineId, byte positionId, NcShankModel shank) { diff --git a/Step.Model/ConfigModels/ToolManagerConfigModel.cs b/Step.Model/ConfigModels/ToolManagerConfigModel.cs new file mode 100644 index 00000000..0279e931 --- /dev/null +++ b/Step.Model/ConfigModels/ToolManagerConfigModel.cs @@ -0,0 +1,24 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Step.Model.ConfigModels +{ + public class ToolManagerConfigModel + { + public bool FamilyOptIsActive { get; set; } + public bool ShankOptIsActive { get; set; } + public bool MagPositionIsActive { get; set; } + public bool OffsetOptIsActive { get; set; } + public bool ReviveOptIsActive { get; set; } + public bool GammaOptIsActive { get; set; } + public bool LifeOptIsActive { get; set; } + public bool TcpOptIsActive { get; set; } + public bool CoolingOptIsActive { get; set; } + public bool MultidimensionalShankOptIsActive { get; set; } + public bool SelfAdaptivePathOptIsActive { get; set; } + public bool DynamicCompensationOptIsActive { get; set; } + } +} diff --git a/Step.Model/ConfigModels/ToolTableConfigModel.cs b/Step.Model/ConfigModels/ToolTableConfigModel.cs deleted file mode 100644 index cfd1fa2c..00000000 --- a/Step.Model/ConfigModels/ToolTableConfigModel.cs +++ /dev/null @@ -1,15 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace Step.Model.ConfigModels -{ - public class ToolTableConfigModel - { - public bool FamilyOption; - public bool MultiToolOption; - public bool MagazinePosition; - } -} diff --git a/Step.Model/Constants.cs b/Step.Model/Constants.cs index 53218bf7..856275b5 100644 --- a/Step.Model/Constants.cs +++ b/Step.Model/Constants.cs @@ -126,6 +126,9 @@ namespace Step.Model public const string NC_SOFTKEYS_CONFIG_SCHEMA_PATH = CONFIG_DIRECTORY + "ncSoftKeyConfigValidator.xsd"; public const string NC_SOFTKEYS_CONFIG_PATH = CONFIG_DIRECTORY + "ncSoftKeyConfig.xml"; + public const string TOOL_MANAGER_CONFIG_SCHEMA_PATH = CONFIG_DIRECTORY + "toolManagerConfigValidator.xsd"; + public const string TOOL_MANAGER_CONFIG_PATH = CONFIG_DIRECTORY + "toolManagerConfig.xml"; + public static string WEBSITE_DIRECTORY = Path.Combine(BASE_PATH, "..", "wwwroot"); public static string LANGUAGE_PACK_DIRECTORY = BASE_PATH + "\\languages\\"; public static string LANGUAGE_SCHEMA_PATH = BASE_PATH + "\\LanguageValidator.xsd"; diff --git a/Step.Model/DTOModels/ToolModels/DTONcShankModel.cs b/Step.Model/DTOModels/ToolModels/DTONcShankModel.cs index 6f224e94..eaaeb46e 100644 --- a/Step.Model/DTOModels/ToolModels/DTONcShankModel.cs +++ b/Step.Model/DTOModels/ToolModels/DTONcShankModel.cs @@ -23,16 +23,32 @@ namespace Step.Model.DTOModels.ToolModels [Range(1, byte.MaxValue)] public byte? PositionId { get; set; } - + + public virtual List Tools { get; set; } + + + public DTONcShankModel() + { + Tools = new List(); + } + public static explicit operator DTONcShankModel(NcShankModel obj) { + List tools = new List(); + + foreach (var tool in obj.Tools) + { + tools.Add((DTONcToolModel)tool); + } + return new DTONcShankModel() { Id = obj.ShankId, Balluf = obj.Balluf, MagazinePositionType = obj.MagazinePositionType, MagazineId = obj.MagazineId, - PositionId = obj.PositionId + PositionId = obj.PositionId, + Tools = tools }; } diff --git a/Step.Model/DTOModels/ToolModels/DTONcToolModel.cs b/Step.Model/DTOModels/ToolModels/DTONcToolModel.cs index f8bab197..f8ffefeb 100644 --- a/Step.Model/DTOModels/ToolModels/DTONcToolModel.cs +++ b/Step.Model/DTOModels/ToolModels/DTONcToolModel.cs @@ -36,6 +36,7 @@ namespace Step.Model.DTOModels.ToolModels { return new DTONcToolModel() { + Id = obj.ToolId, FamilyId = obj.FamilyId, ShankId = obj.ShankId.Value, Type = obj.Type, @@ -49,6 +50,7 @@ namespace Step.Model.DTOModels.ToolModels { return new NcToolModel() { + ToolId = obj.Id, FamilyId = obj.FamilyId, ShankId = obj.ShankId, Type = obj.Type, diff --git a/Step.Model/Step.Model.csproj b/Step.Model/Step.Model.csproj index 7dac540f..9b8042c3 100644 --- a/Step.Model/Step.Model.csproj +++ b/Step.Model/Step.Model.csproj @@ -67,6 +67,7 @@ + diff --git a/Step/Controllers/WebApi/NcToolManagerController.cs b/Step/Controllers/WebApi/NcToolManagerController.cs index 972e9191..813019c3 100644 --- a/Step/Controllers/WebApi/NcToolManagerController.cs +++ b/Step/Controllers/WebApi/NcToolManagerController.cs @@ -5,6 +5,7 @@ using Step.NC; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Web.Http; +using static Step.Config.ServerConfig; namespace Step.Controllers.WebApi { @@ -18,7 +19,7 @@ namespace Step.Controllers.WebApi { using (NcToolManagerController toolsManager = new NcToolManagerController()) { - List tools = toolsManager.GetTools(); + List tools = toolsManager.GetToolsWithDependencies(); return Ok(tools); } @@ -101,9 +102,7 @@ namespace Step.Controllers.WebApi { using (NcToolManagerController toolsManager = new NcToolManagerController()) { - List shanks = toolsManager.GetShanks(); - - return Ok(shanks); + return Ok(toolsManager.GetShanks()); } } @@ -305,7 +304,7 @@ namespace Step.Controllers.WebApi { using (NcToolManagerController toolsManager = new NcToolManagerController()) { - List shanks = toolsManager.GetAvailableShanks(); + List shanks = toolsManager.GetAvailableShanks(); return Ok(shanks); }