diff --git a/Libs/CMS_CORE_Library.dll b/Libs/CMS_CORE_Library.dll index c12dbad5..7ff00b43 100644 Binary files a/Libs/CMS_CORE_Library.dll and b/Libs/CMS_CORE_Library.dll differ diff --git a/Step.Core/ThreadsFunctions.cs b/Step.Core/ThreadsFunctions.cs index 061f300a..5a479276 100644 --- a/Step.Core/ThreadsFunctions.cs +++ b/Step.Core/ThreadsFunctions.cs @@ -960,11 +960,11 @@ public static class ThreadsFunctions NcHandler ncHandler = new NcHandler(); CmsError cmsError = NO_ERROR; // Run loop until NC is connected - while (!ncHandler.numericalControl.NC_IsConnected()) + while (!ncHandler.numericalControl.NC_IsConnected()) { // Try reconnection cmsError = ncHandler.Connect(); - if (cmsError.errorCode == CMS_ERROR_CODES.SIEMENS_ENVIRONMENT_NOT_FOUND || cmsError.errorCode == CMS_ERROR_CODES.SIEMENS_HMI_NOT_RUNNING) + if (cmsError.errorCode == CMS_ERROR_CODES.SIEMENS_ENVIRONMENT_NOT_FOUND || cmsError.errorCode == CMS_ERROR_CODES.SIEMENS_HMI_NOT_RUNNING) ManageLibraryError(cmsError); else if (cmsError.errorCode != CMS_ERROR_CODES.OK) ncHandler.Dispose(); @@ -974,13 +974,22 @@ public static class ThreadsFunctions Thread.Sleep(1000); } - if (ServerConfig.ServerStartupConfig.AutoOpenCmsClient) + if (ServerStartupConfig.AutoOpenCmsClient) StartCMSClient(null); - NcToolTableHandler toolTable = new NcToolTableHandler(); + + if(NcConfig.NcVendor == NC_VENDOR.FANUC || NcConfig.NcVendor == NC_VENDOR.DEMO) + { + using (NcToolTableHandler toolTable = new NcToolTableHandler()) + { + toolTable.Connect(); + // After reconecction write option + cmsError = toolTable.WriteOption(); + // Check if there are blocked magazines + cmsError = toolTable.RestoreTableLock(); + } + } - // After reconecction write option - toolTable.WriteOption(); // Start/Restart NC threads ThreadsHandler.StartWorkers(); @@ -1031,6 +1040,7 @@ public static class ThreadsFunctions case CMS_ERROR_CODES.INTERNAL_ERROR: Manage(ERROR_LEVEL.FATAL, cmsError.localizationKey); break; + case CMS_ERROR_CODES.SELECTED_PROCESS: Manage(ERROR_LEVEL.WARNING, cmsError.localizationKey); break; diff --git a/Step.Database/Controllers/NcToolManagerController.cs b/Step.Database/Controllers/NcToolManagerController.cs index 390d0e30..6819b161 100644 --- a/Step.Database/Controllers/NcToolManagerController.cs +++ b/Step.Database/Controllers/NcToolManagerController.cs @@ -571,8 +571,10 @@ namespace Step.Database.Controllers }; } - public void ImportData(DTOExportToolTableModel data) + public List ImportData(DTOExportToolTableModel data) { + List importStatus = new List(); + List tools = FindTools(); List families = FindFamilies(); List shanks = FindShanks(); @@ -583,7 +585,24 @@ namespace Step.Database.Controllers { // Check if not exist if (families.FirstOrDefault(x => x.FamilyId == family.FamilyId) == null) + { dbCtx.Families.Add(family); + importStatus.Add(new DTOImportStatusModel() + { + Id = family.FamilyId, + Status = IMPORT_STATUS.OK.ToString(), + Type = "FAMILY" + }); + } + else + { + importStatus.Add(new DTOImportStatusModel() + { + Id = family.FamilyId, + Status = IMPORT_STATUS.EXIST.ToString(), + Type = "FAMILY" + }); + } } if(data.Shanks != null) @@ -592,7 +611,24 @@ namespace Step.Database.Controllers { // Check if not exist if (shanks.FirstOrDefault(x => x.ShankId == shank.ShankId) == null) + { dbCtx.Shanks.Add(shank); + importStatus.Add(new DTOImportStatusModel() + { + Id = shank.ShankId, + Status = IMPORT_STATUS.OK.ToString(), + Type = "SHANK" + }); + } + else + { + importStatus.Add(new DTOImportStatusModel() + { + Id = shank.ShankId, + Status = IMPORT_STATUS.EXIST.ToString(), + Type = "SHANK" + }); + } } if(data.Tools != null) @@ -601,11 +637,30 @@ namespace Step.Database.Controllers { // Check if not exist if (tools.FirstOrDefault(x => x.ToolId == tool.ToolId) == null) + { dbCtx.Tools.Add(tool); + importStatus.Add(new DTOImportStatusModel() + { + Id = tool.ToolId, + Status = IMPORT_STATUS.EXIST.ToString(), + Type = "TOOL" + }); + } + else + { + importStatus.Add(new DTOImportStatusModel() + { + Id = tool.ToolId, + Status = IMPORT_STATUS.EXIST.ToString(), + Type = "TOOL" + }); + } } // Save dbCtx.SaveChanges(); + + return importStatus; } } } \ No newline at end of file diff --git a/Step.Model/DTOModels/ToolModels/DTOExportToolTableModel.cs b/Step.Model/DTOModels/ToolModels/DTOExportToolTableModel.cs index 19b7f1e0..7ec85f5b 100644 --- a/Step.Model/DTOModels/ToolModels/DTOExportToolTableModel.cs +++ b/Step.Model/DTOModels/ToolModels/DTOExportToolTableModel.cs @@ -13,4 +13,19 @@ namespace Step.Model.DTOModels.ToolModels public List Families { get; set; } public List Shanks { get; set; } } + + public class DTOImportStatusModel + { + public int Id { get; set; } + + public string Status { get; set; } + + public string Type { get; set; } + } + + public enum IMPORT_STATUS + { + OK = 0, + EXIST = 1 + } } diff --git a/Step.NC/NcToolTableHandler.cs b/Step.NC/NcToolTableHandler.cs index dc4ff19f..da93acde 100644 --- a/Step.NC/NcToolTableHandler.cs +++ b/Step.NC/NcToolTableHandler.cs @@ -822,7 +822,28 @@ namespace Step.NC step.Step = 0; //Set the value - return numericalControl.TOOLS_WAdatpivePathStep(step.Step); + return numericalControl.TOOLS_WAdatpivePathStep(step.Step); + } + + public CmsError RestoreTableLock() + { + List ids = new List(); + // check if there are magazines blocked by Active previously + CmsError cmsError = numericalControl.TOOLS_RMagazineBlock(ref ids); + if (cmsError.IsError()) + return cmsError; + + if(ids.Count() > 0) + { + // Update tables + cmsError = StopEditTooling(ids.FirstOrDefault()); + if (cmsError.IsError()) + return cmsError; + // Free magazines + return numericalControl.TOOLS_WFreeMagazines(); + } + + return NO_ERROR; } } } \ No newline at end of file diff --git a/Step/Controllers/WebApi/NcToolManagerController.cs b/Step/Controllers/WebApi/NcToolManagerController.cs index 2a6fc85b..5d34bcdf 100644 --- a/Step/Controllers/WebApi/NcToolManagerController.cs +++ b/Step/Controllers/WebApi/NcToolManagerController.cs @@ -824,14 +824,12 @@ namespace Step.Controllers.WebApi using ( NcToolManagerController toolsManager = new NcToolManagerController()) { - Stopwatch st = new Stopwatch(); - st.Start(); // Import data in the database - toolsManager.ImportData(importData); - Console.WriteLine(st.ElapsedMilliseconds); + List importStatus = toolsManager.ImportData(importData); + + return Ok(importStatus); } - return Ok(); } [Route("selfadaptivepathstep"), HttpGet] diff --git a/Step/wwwroot/src/services/depotService.ts b/Step/wwwroot/src/services/depotService.ts index 31af7f5d..79f8872e 100644 --- a/Step/wwwroot/src/services/depotService.ts +++ b/Step/wwwroot/src/services/depotService.ts @@ -97,14 +97,14 @@ export class DepotService extends baseRestService { const url = window.URL.createObjectURL(new Blob([JSON.stringify(result, null, 4)])); const link = document.createElement('a'); link.href = url; - link.setAttribute('download', 'AlarmExport.json'); + link.setAttribute('download', 'toolTableExport.json'); document.body.appendChild(link); link.click(); } async sendImportFile(file) { let result = await this.upload(this.BASE_URL + "nc/import", file, file.name, {}); - + console.log(result) return result; } }