From 83cf50ecab54eb51a64d8e789475a428796ba33d Mon Sep 17 00:00:00 2001 From: Lucio Maranta Date: Tue, 5 Jun 2018 16:26:08 +0200 Subject: [PATCH 1/2] Added fields to maintenances model and config --- Step.Config/Config/maintenancesConfig.xml | 10 ++++--- .../Config/maintenancesConfigValidator.xsd | 18 ++++++++++--- Step.Config/Config/serverConfig.xml | 2 +- Step.Config/Config/toolTableConfig.xml | 13 +++++++++ .../Config/toolTableConfigValidator.xsd | 27 +++++++++++++++++++ Step.Config/ServerConfigController.cs | 4 ++- .../Controllers/MaintenancesController.cs | 8 +++++- Step.Database/DatabaseContext.cs | 5 ++-- ...201806051413536_InitMigration.Designer.cs} | 2 +- ...on.cs => 201806051413536_InitMigration.cs} | 9 ++++++- ...esx => 201806051413536_InitMigration.resx} | 2 +- Step.Database/Step.Database.csproj | 10 +++---- .../ConfigModels/MaintenanceConfigModel.cs | 3 +++ .../ConfigModels/ToolTableConfigModel.cs | 15 +++++++++++ Step.Model/Constants.cs | 17 +++++++++--- Step.Model/DatabaseModels/MaintenanceModel.cs | 13 +++++++++ Step.NC/NcHandler.cs | 17 +++++++----- Step.Utils/supportFunctions.cs | 17 ++++++++++++ 18 files changed, 163 insertions(+), 29 deletions(-) create mode 100644 Step.Config/Config/toolTableConfig.xml create mode 100644 Step.Config/Config/toolTableConfigValidator.xsd rename Step.Database/Migrations/{201802151533324_InitMigration.Designer.cs => 201806051413536_InitMigration.Designer.cs} (92%) rename Step.Database/Migrations/{201802151533324_InitMigration.cs => 201806051413536_InitMigration.cs} (93%) rename Step.Database/Migrations/{201802151533324_InitMigration.resx => 201806051413536_InitMigration.resx} (56%) create mode 100644 Step.Model/ConfigModels/ToolTableConfigModel.cs diff --git a/Step.Config/Config/maintenancesConfig.xml b/Step.Config/Config/maintenancesConfig.xml index 1d6f8277..2185610d 100644 --- a/Step.Config/Config/maintenancesConfig.xml +++ b/Step.Config/Config/maintenancesConfig.xml @@ -8,9 +8,11 @@ 10 15/02/2018 13:00 - exp_date + EXP_DATE + DescriptionUNO + D 2 - + 2 @@ -19,7 +21,9 @@ 1000 15/02/2018 13:00 - machine_interval + MACHINE_INTERVAL + Description + M 1 \ No newline at end of file diff --git a/Step.Config/Config/maintenancesConfigValidator.xsd b/Step.Config/Config/maintenancesConfigValidator.xsd index acc70b41..e7d0892a 100644 --- a/Step.Config/Config/maintenancesConfigValidator.xsd +++ b/Step.Config/Config/maintenancesConfigValidator.xsd @@ -19,8 +19,10 @@ - - + + + + @@ -48,6 +50,7 @@ + @@ -56,5 +59,14 @@ - + + + + + + + + + + \ No newline at end of file diff --git a/Step.Config/Config/serverConfig.xml b/Step.Config/Config/serverConfig.xml index 1f8b8d8a..ad660972 100644 --- a/Step.Config/Config/serverConfig.xml +++ b/Step.Config/Config/serverConfig.xml @@ -1,7 +1,7 @@ - DEMO + SIEMENS true 127.0.0.1 8080 diff --git a/Step.Config/Config/toolTableConfig.xml b/Step.Config/Config/toolTableConfig.xml new file mode 100644 index 00000000..0e9bccf4 --- /dev/null +++ b/Step.Config/Config/toolTableConfig.xml @@ -0,0 +1,13 @@ + + + + true + true + false + + + true + true + true + + \ No newline at end of file diff --git a/Step.Config/Config/toolTableConfigValidator.xsd b/Step.Config/Config/toolTableConfigValidator.xsd new file mode 100644 index 00000000..2ebc5afc --- /dev/null +++ b/Step.Config/Config/toolTableConfigValidator.xsd @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Step.Config/ServerConfigController.cs b/Step.Config/ServerConfigController.cs index 79aa36d8..42f0cddb 100644 --- a/Step.Config/ServerConfigController.cs +++ b/Step.Config/ServerConfigController.cs @@ -212,7 +212,9 @@ namespace Step.Config Intervall = TimeSpan.FromMinutes(Convert.ToDouble(x.Element("interval").Value)), Deadline = DateTime.Parse(x.Element("deadline").Value), Type = x.Element("type").Value, - CouterId = Convert.ToInt32(x.Element("counterId").Value) + CouterId = Convert.ToInt32(x.Element("counterId").Value), + Description = x.Element("description").Value, + UnitOfMeasure = x.Element("unitOfMeasure").Value }) .ToList(); } diff --git a/Step.Database/Controllers/MaintenancesController.cs b/Step.Database/Controllers/MaintenancesController.cs index 8f3db2ae..c325938d 100644 --- a/Step.Database/Controllers/MaintenancesController.cs +++ b/Step.Database/Controllers/MaintenancesController.cs @@ -3,6 +3,7 @@ using System; using System.Collections.Generic; using System.Linq; using static Step.Config.ServerConfig; +using static Step.Model.Constants; namespace Step.Database.Controllers { @@ -56,7 +57,7 @@ namespace Step.Database.Controllers .Maintenances .ToList(); - // Find database rows that + // Find database rows that has to be deleted List toDeleteMaint = dbMaintenances.Where(x => !MaintenancesConfig.Select(y => y.Id).Contains(x.MaintenanceId) ).ToList(); @@ -87,6 +88,8 @@ namespace Step.Database.Controllers old.Interval = x.Intervall.TotalMinutes; old.Type = x.Type; old.CounterId = x.CouterId; + old.Description = x.Description; + old.UnitOfMeasure = (MAINTENANCE_UNIT_OF_MEASURE)Enum.Parse(typeof(MAINTENANCE_UNIT_OF_MEASURE), x.UnitOfMeasure); return old; }).FirstOrDefault(); } @@ -104,6 +107,9 @@ namespace Step.Database.Controllers Type = x.Type, CounterId = x.CouterId, CreationDate = DateTime.Now, + Description = x.Description, + UnitOfMeasure = (MAINTENANCE_UNIT_OF_MEASURE) Enum.Parse(typeof(MAINTENANCE_UNIT_OF_MEASURE),x.UnitOfMeasure), + UserId = null, LastExpirationDate = null }) .ToList(); diff --git a/Step.Database/DatabaseContext.cs b/Step.Database/DatabaseContext.cs index e629d0eb..ebe2168c 100644 --- a/Step.Database/DatabaseContext.cs +++ b/Step.Database/DatabaseContext.cs @@ -26,8 +26,9 @@ namespace Step.Database public DbSet Maintenances { get; set; } public DbSet PerformedMaintenances { get; set; } - - public static string CONNECTION_STRING = "Server = " + ServerStartupConfig.DatabaseAddress + "; Database=" + DATABASE_NAME +";Uid="+ DATABASE_USER +";Pwd="+ DATABASE_PWD +";"; + // Create migration string + public static string CONNECTION_STRING = "Server = " + "localhost" + "; Database=" + DATABASE_NAME +";Uid="+ DATABASE_USER +";Pwd="+ DATABASE_PWD +";"; + // public static string CONNECTION_STRING = "Server = " + ServerStartupConfig.DatabaseAddress + "; Database=" + DATABASE_NAME +";Uid="+ DATABASE_USER +";Pwd="+ DATABASE_PWD +";"; public DatabaseContext() : base(CONNECTION_STRING) diff --git a/Step.Database/Migrations/201802151533324_InitMigration.Designer.cs b/Step.Database/Migrations/201806051413536_InitMigration.Designer.cs similarity index 92% rename from Step.Database/Migrations/201802151533324_InitMigration.Designer.cs rename to Step.Database/Migrations/201806051413536_InitMigration.Designer.cs index 721d8ca4..b5f970fd 100644 --- a/Step.Database/Migrations/201802151533324_InitMigration.Designer.cs +++ b/Step.Database/Migrations/201806051413536_InitMigration.Designer.cs @@ -13,7 +13,7 @@ namespace Step.Database.Migrations string IMigrationMetadata.Id { - get { return "201802151533324_InitMigration"; } + get { return "201806051413536_InitMigration"; } } string IMigrationMetadata.Source diff --git a/Step.Database/Migrations/201802151533324_InitMigration.cs b/Step.Database/Migrations/201806051413536_InitMigration.cs similarity index 93% rename from Step.Database/Migrations/201802151533324_InitMigration.cs rename to Step.Database/Migrations/201806051413536_InitMigration.cs index 112d029f..200ba236 100644 --- a/Step.Database/Migrations/201802151533324_InitMigration.cs +++ b/Step.Database/Migrations/201806051413536_InitMigration.cs @@ -81,10 +81,15 @@ namespace Step.Database.Migrations deadline = c.DateTime(nullable: false, precision: 0), type = c.String(unicode: false), counter_id = c.Int(nullable: false), + description = c.String(unicode: false), + unit_of_measure = c.Int(nullable: false), creation_date = c.DateTime(nullable: false, precision: 0), last_expiration_date = c.DateTime(precision: 0), + user_id = c.Int(), }) - .PrimaryKey(t => t.id); + .PrimaryKey(t => t.id) + .ForeignKey("dbo.user", t => t.user_id) + .Index(t => t.user_id); CreateTable( "dbo.performed_maintenance", @@ -117,11 +122,13 @@ namespace Step.Database.Migrations { DropForeignKey("dbo.session", "machine_user_id", "dbo.machine_user"); DropForeignKey("dbo.performed_maintenance", "maintenance", "dbo.maintenance"); + DropForeignKey("dbo.maintenance", "user_id", "dbo.user"); DropForeignKey("dbo.machine_user", "user_id", "dbo.user"); DropForeignKey("dbo.machine_user", "role_id", "dbo.role"); DropForeignKey("dbo.machine_user", "machine_id", "dbo.machine"); DropIndex("dbo.session", new[] { "machine_user_id" }); DropIndex("dbo.performed_maintenance", new[] { "maintenance" }); + DropIndex("dbo.maintenance", new[] { "user_id" }); DropIndex("dbo.machine_user", new[] { "role_id" }); DropIndex("dbo.machine_user", "unique_machine_user"); DropTable("dbo.session"); diff --git a/Step.Database/Migrations/201802151533324_InitMigration.resx b/Step.Database/Migrations/201806051413536_InitMigration.resx similarity index 56% rename from Step.Database/Migrations/201802151533324_InitMigration.resx rename to Step.Database/Migrations/201806051413536_InitMigration.resx index 217abc14..6b224312 100644 --- a/Step.Database/Migrations/201802151533324_InitMigration.resx +++ b/Step.Database/Migrations/201806051413536_InitMigration.resx @@ -118,7 +118,7 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - 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 dbo diff --git a/Step.Database/Step.Database.csproj b/Step.Database/Step.Database.csproj index 29c24281..03f72069 100644 --- a/Step.Database/Step.Database.csproj +++ b/Step.Database/Step.Database.csproj @@ -77,9 +77,9 @@ - - - 201802151533324_InitMigration.cs + + + 201806051413536_InitMigration.cs @@ -115,8 +115,8 @@ - - 201802151533324_InitMigration.cs + + 201806051413536_InitMigration.cs diff --git a/Step.Model/ConfigModels/MaintenanceConfigModel.cs b/Step.Model/ConfigModels/MaintenanceConfigModel.cs index c2f06671..2c5191c8 100644 --- a/Step.Model/ConfigModels/MaintenanceConfigModel.cs +++ b/Step.Model/ConfigModels/MaintenanceConfigModel.cs @@ -11,5 +11,8 @@ namespace Step.Model.ConfigModels public DateTime Deadline { get; set; } public string Type { get; set; } public int CouterId { get; set; } + public string Title { get; set; } + public string Description { get; set; } + public string UnitOfMeasure { get; set; } } } \ No newline at end of file diff --git a/Step.Model/ConfigModels/ToolTableConfigModel.cs b/Step.Model/ConfigModels/ToolTableConfigModel.cs new file mode 100644 index 00000000..cfd1fa2c --- /dev/null +++ b/Step.Model/ConfigModels/ToolTableConfigModel.cs @@ -0,0 +1,15 @@ +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 bc060ecc..759899ca 100644 --- a/Step.Model/Constants.cs +++ b/Step.Model/Constants.cs @@ -35,6 +35,14 @@ namespace Step.Model LASER = 3 } + public enum MAINTENANCE_UNIT_OF_MEASURE + { + m = 0, + M = 1, + D = 2, + H = 3 + } + public static class NC_VENDOR { public const string DEMO = "DEMO"; @@ -134,9 +142,12 @@ namespace Step.Model public const string ALARM_PREFIX = "alarm_"; // Maintenances types - public const string MAINT_MACHINE_INTERVAL_TYPE = "machine_interval"; - public const string MAINT_TIME_INTERVAL_TYPE = "time_interval"; - public const string MAINT_EXPIRATION_DATE_TYPE = "exp_date"; + public static class MAINTENANCES_TYPE + { + public const string MAINT_MACHINE_INTERVAL_TYPE = "MACHINE_INTERVAL"; + public const string MAINT_TIME_INTERVAL_TYPE = "TIME_INTERVAL"; + public const string MAINT_EXPIRATION_DATE_TYPE = "EXP_DATE"; + } public static class FUNCTIONALITY_NAMES diff --git a/Step.Model/DatabaseModels/MaintenanceModel.cs b/Step.Model/DatabaseModels/MaintenanceModel.cs index 0805786b..0167c16f 100644 --- a/Step.Model/DatabaseModels/MaintenanceModel.cs +++ b/Step.Model/DatabaseModels/MaintenanceModel.cs @@ -2,6 +2,7 @@ using System.ComponentModel; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; +using static Step.Model.Constants; namespace Step.Model.DatabaseModels { @@ -25,10 +26,22 @@ namespace Step.Model.DatabaseModels [Column("counter_id")] public int CounterId { get; set; } + [Column("description")] + public string Description { get; set; } + + [Column("unit_of_measure")] + public MAINTENANCE_UNIT_OF_MEASURE UnitOfMeasure { get; set; } + [Column("creation_date")] public DateTime CreationDate { get; set; } [Column("last_expiration_date")] public DateTime? LastExpirationDate { get; set; } + + [Column("user_id")] + public int? UserId { get; set; } + + [ForeignKey("UserId")] + public UserModel User { get; set; } } } \ No newline at end of file diff --git a/Step.NC/NcHandler.cs b/Step.NC/NcHandler.cs index f233d3e9..43547826 100644 --- a/Step.NC/NcHandler.cs +++ b/Step.NC/NcHandler.cs @@ -7,6 +7,7 @@ using Step.Database.Controllers; using Step.Model.DatabaseModels; using Step.Model.DTOModels; using Step.Model.DTOModels.ToolModels; +using Step.Utils; using System; using System.Collections.Generic; using System.Globalization; @@ -150,6 +151,9 @@ namespace Step.NC RestorationIsEnabled = false }); } + // Select distints + //alarms.NcAlarms = alarms.NcAlarms?.GroupBy(x => x.Id).Select(x => x.First()).ToList(); + // Get NC max process number ushort maxProcNumber = 0; @@ -376,7 +380,7 @@ namespace Step.NC switch (currMaintenance.Type) { - case MAINT_MACHINE_INTERVAL_TYPE: + case MAINTENANCES_TYPE.MAINT_MACHINE_INTERVAL_TYPE: { // Get matching counter for the current maintenance var counter = counters.Find(x => x.Id == currMaintenance.CounterId); @@ -405,7 +409,7 @@ namespace Step.NC } break; - case MAINT_EXPIRATION_DATE_TYPE: + case MAINTENANCES_TYPE.MAINT_EXPIRATION_DATE_TYPE: { // Already performed if (performed != null) @@ -421,7 +425,7 @@ namespace Step.NC } break; - case MAINT_TIME_INTERVAL_TYPE: + case MAINTENANCES_TYPE.MAINT_TIME_INTERVAL_TYPE: { // Get last performed, default value is maintenance creation date DateTime perfDate = currMaintenance.CreationDate; @@ -434,7 +438,7 @@ namespace Step.NC double minutesPassedFromLastMaint = timePassedFromLastMaint.TotalMinutes; // Interval - passed minutes since last maintenance - if (currMaintenance.Interval <= minutesPassedFromLastMaint) + if (SupportFunctions.ConvertInMinutes(currMaintenance.Interval, currMaintenance.UnitOfMeasure) <= minutesPassedFromLastMaint) { // Update last expiration date if (currMaintenance.LastExpirationDate == null) @@ -753,12 +757,12 @@ namespace Step.NC } #region Tools - - + public CmsError AddTool(ref SiemensToolModel tool) { return numericalControl.TOOLS_WAddTool(ref tool); } + public CmsError UpdateTool(ref SiemensToolModel tool) { return numericalControl.TOOLS_WUpdateTool(ref tool); @@ -779,7 +783,6 @@ namespace Step.NC return numericalControl.TOOLS_WAddShank(ref shank); } - public CmsError UpdateShank(ref ShankModel shank) { return numericalControl.TOOLS_WUpdateShank(ref shank); diff --git a/Step.Utils/supportFunctions.cs b/Step.Utils/supportFunctions.cs index 6695ebe6..2164e01c 100644 --- a/Step.Utils/supportFunctions.cs +++ b/Step.Utils/supportFunctions.cs @@ -60,5 +60,22 @@ namespace Step.Utils default: return -1; } } + + public static double ConvertInMinutes(double number, MAINTENANCE_UNIT_OF_MEASURE unit) + { + switch (unit) + { + case MAINTENANCE_UNIT_OF_MEASURE.m: + return number; + case MAINTENANCE_UNIT_OF_MEASURE.H: + return number * 60; + case MAINTENANCE_UNIT_OF_MEASURE.D: + return number * (24 * 60); + case MAINTENANCE_UNIT_OF_MEASURE.M: + return (30 * number) * (24 * 60); + default: + return number; + } + } } } From 2b403685b17b527ce4ae43d8373ac6a3430e2b5a Mon Sep 17 00:00:00 2001 From: Lucio Maranta Date: Mon, 11 Jun 2018 17:46:55 +0200 Subject: [PATCH 2/2] Added list of maintenances api Create maintenance api --- Step.Config/Config/maintenancesConfig.xml | 6 +- .../Config/maintenancesConfigValidator.xsd | 3 +- Step.Config/Config/serverConfig.xml | 2 +- .../Controllers/MaintenancesController.cs | 29 ++++- ...201806111536482_InitMigration.Designer.cs} | 2 +- ...on.cs => 201806111536482_InitMigration.cs} | 1 + ...esx => 201806111536482_InitMigration.resx} | 2 +- Step.Database/Step.Database.csproj | 10 +- .../DTOExpiredMaintenanceModel.cs | 0 .../MaintenanceModels/DTOMaintenanceModel.cs | 32 +++++ .../DTONewMaintenanceModel.cs | 24 ++++ Step.Model/DatabaseModels/MaintenanceModel.cs | 3 + Step.Model/Step.Model.csproj | 4 +- Step.NC/NcHandler.cs | 117 ++++++++++++++++-- .../WebApi/MaintenanceController.cs | 33 +++++ .../Controllers/WebApi/ToolTableController.cs | 67 +++++----- Step/Step.csproj | 1 + 17 files changed, 279 insertions(+), 57 deletions(-) rename Step.Database/Migrations/{201806051413536_InitMigration.Designer.cs => 201806111536482_InitMigration.Designer.cs} (92%) rename Step.Database/Migrations/{201806051413536_InitMigration.cs => 201806111536482_InitMigration.cs} (99%) rename Step.Database/Migrations/{201806051413536_InitMigration.resx => 201806111536482_InitMigration.resx} (67%) rename Step.Model/DTOModels/{ => MaintenanceModels}/DTOExpiredMaintenanceModel.cs (100%) create mode 100644 Step.Model/DTOModels/MaintenanceModels/DTOMaintenanceModel.cs create mode 100644 Step.Model/DTOModels/MaintenanceModels/DTONewMaintenanceModel.cs create mode 100644 Step/Controllers/WebApi/MaintenanceController.cs diff --git a/Step.Config/Config/maintenancesConfig.xml b/Step.Config/Config/maintenancesConfig.xml index 2185610d..a8b15265 100644 --- a/Step.Config/Config/maintenancesConfig.xml +++ b/Step.Config/Config/maintenancesConfig.xml @@ -7,7 +7,7 @@ Ita 10 - 15/02/2018 13:00 + 15/07/2018 13:00 EXP_DATE DescriptionUNO D @@ -20,10 +20,10 @@ Ita 2 1000 - 15/02/2018 13:00 + 15/07/2018 13:00 MACHINE_INTERVAL Description - M + m 1 \ No newline at end of file diff --git a/Step.Config/Config/maintenancesConfigValidator.xsd b/Step.Config/Config/maintenancesConfigValidator.xsd index e7d0892a..111b6bb7 100644 --- a/Step.Config/Config/maintenancesConfigValidator.xsd +++ b/Step.Config/Config/maintenancesConfigValidator.xsd @@ -63,7 +63,8 @@ - + + diff --git a/Step.Config/Config/serverConfig.xml b/Step.Config/Config/serverConfig.xml index ad660972..1f8b8d8a 100644 --- a/Step.Config/Config/serverConfig.xml +++ b/Step.Config/Config/serverConfig.xml @@ -1,7 +1,7 @@ - SIEMENS + DEMO true 127.0.0.1 8080 diff --git a/Step.Database/Controllers/MaintenancesController.cs b/Step.Database/Controllers/MaintenancesController.cs index c325938d..f672a22e 100644 --- a/Step.Database/Controllers/MaintenancesController.cs +++ b/Step.Database/Controllers/MaintenancesController.cs @@ -1,4 +1,5 @@ using Step.Model.DatabaseModels; +using Step.Model.DTOModels.MaintenanceModels; using System; using System.Collections.Generic; using System.Linq; @@ -23,7 +24,7 @@ namespace Step.Database.Controllers dbCtx.Dispose(); } - public List FindLastMaintenance() + public List FindLastPerformedMaintenances() { List lastMaintenances = new List(); // Find last performed maintenance @@ -51,6 +52,30 @@ namespace Step.Database.Controllers .ToList(); } + public MaintenanceModel Create(DTONewMaintenanceModel newMaint, int userId) + { + MaintenanceModel dbMaint = new MaintenanceModel() + { + CreationDate = DateTime.Now, + CounterId = 0, + Interval = newMaint.Interval != null ? (double)newMaint.Interval : 0, + Deadline = newMaint.Deadline, + Description = newMaint.Description, + Title = newMaint.Title, + Type = newMaint.Type, + UnitOfMeasure = newMaint.UnitOfMeasure, + UserId = userId, + LastExpirationDate = null + }; + + // Add to database + dbCtx.Maintenances.Add(dbMaint); + // Commit changes + dbCtx.SaveChanges(); + + return dbMaint; + } + public void CheckDifferencesFromDbAndXml() { List dbMaintenances = dbCtx @@ -58,7 +83,7 @@ namespace Step.Database.Controllers .ToList(); // Find database rows that has to be deleted - List toDeleteMaint = dbMaintenances.Where(x => + List toDeleteMaint = dbMaintenances.Where(x => x.UserId == null && !MaintenancesConfig.Select(y => y.Id).Contains(x.MaintenanceId) ).ToList(); diff --git a/Step.Database/Migrations/201806051413536_InitMigration.Designer.cs b/Step.Database/Migrations/201806111536482_InitMigration.Designer.cs similarity index 92% rename from Step.Database/Migrations/201806051413536_InitMigration.Designer.cs rename to Step.Database/Migrations/201806111536482_InitMigration.Designer.cs index b5f970fd..6483a4fb 100644 --- a/Step.Database/Migrations/201806051413536_InitMigration.Designer.cs +++ b/Step.Database/Migrations/201806111536482_InitMigration.Designer.cs @@ -13,7 +13,7 @@ namespace Step.Database.Migrations string IMigrationMetadata.Id { - get { return "201806051413536_InitMigration"; } + get { return "201806111536482_InitMigration"; } } string IMigrationMetadata.Source diff --git a/Step.Database/Migrations/201806051413536_InitMigration.cs b/Step.Database/Migrations/201806111536482_InitMigration.cs similarity index 99% rename from Step.Database/Migrations/201806051413536_InitMigration.cs rename to Step.Database/Migrations/201806111536482_InitMigration.cs index 200ba236..353d40b9 100644 --- a/Step.Database/Migrations/201806051413536_InitMigration.cs +++ b/Step.Database/Migrations/201806111536482_InitMigration.cs @@ -81,6 +81,7 @@ namespace Step.Database.Migrations deadline = c.DateTime(nullable: false, precision: 0), type = c.String(unicode: false), counter_id = c.Int(nullable: false), + title = c.String(unicode: false), description = c.String(unicode: false), unit_of_measure = c.Int(nullable: false), creation_date = c.DateTime(nullable: false, precision: 0), diff --git a/Step.Database/Migrations/201806051413536_InitMigration.resx b/Step.Database/Migrations/201806111536482_InitMigration.resx similarity index 67% rename from Step.Database/Migrations/201806051413536_InitMigration.resx rename to Step.Database/Migrations/201806111536482_InitMigration.resx index 6b224312..30f35672 100644 --- a/Step.Database/Migrations/201806051413536_InitMigration.resx +++ b/Step.Database/Migrations/201806111536482_InitMigration.resx @@ -118,7 +118,7 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - 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 dbo diff --git a/Step.Database/Step.Database.csproj b/Step.Database/Step.Database.csproj index 03f72069..a80b46f3 100644 --- a/Step.Database/Step.Database.csproj +++ b/Step.Database/Step.Database.csproj @@ -77,9 +77,9 @@ - - - 201806051413536_InitMigration.cs + + + 201806111536482_InitMigration.cs @@ -115,8 +115,8 @@ - - 201806051413536_InitMigration.cs + + 201806111536482_InitMigration.cs diff --git a/Step.Model/DTOModels/DTOExpiredMaintenanceModel.cs b/Step.Model/DTOModels/MaintenanceModels/DTOExpiredMaintenanceModel.cs similarity index 100% rename from Step.Model/DTOModels/DTOExpiredMaintenanceModel.cs rename to Step.Model/DTOModels/MaintenanceModels/DTOExpiredMaintenanceModel.cs diff --git a/Step.Model/DTOModels/MaintenanceModels/DTOMaintenanceModel.cs b/Step.Model/DTOModels/MaintenanceModels/DTOMaintenanceModel.cs new file mode 100644 index 00000000..e5b9369a --- /dev/null +++ b/Step.Model/DTOModels/MaintenanceModels/DTOMaintenanceModel.cs @@ -0,0 +1,32 @@ +using Step.Model.DatabaseModels; +using System; + +namespace Step.Model.DTOModels.MaintenanceModels +{ + public class DTOMaintenanceModel + { + public int Id { get; set; } + + public double Interval { get; set; } + + public DateTime Deadline { get; set; } + + public string Type { get; set; } + + public string Title { get; set; } + + public string Description { get; set; } + + public string UnitOfMeasure { get; set; } + + public DateTime CreationDate { get; set; } + + public DateTime? LastExpirationDate { get; set; } + + public int PercentageOfCompletion { get; set; } + + public TimeSpan MissingDays { get; set; } + + public bool CreatedByCms { get; set; } + } +} \ No newline at end of file diff --git a/Step.Model/DTOModels/MaintenanceModels/DTONewMaintenanceModel.cs b/Step.Model/DTOModels/MaintenanceModels/DTONewMaintenanceModel.cs new file mode 100644 index 00000000..59d046fc --- /dev/null +++ b/Step.Model/DTOModels/MaintenanceModels/DTONewMaintenanceModel.cs @@ -0,0 +1,24 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using static Step.Model.Constants; + +namespace Step.Model.DTOModels.MaintenanceModels +{ + public class DTONewMaintenanceModel + { + public string Title { get; set; } + + public string Description { get; set; } + + public double? Interval { get; set; } + + public DateTime Deadline { get; set; } + + public string Type { get; set; } + + public MAINTENANCE_UNIT_OF_MEASURE UnitOfMeasure { get; set; } + } +} diff --git a/Step.Model/DatabaseModels/MaintenanceModel.cs b/Step.Model/DatabaseModels/MaintenanceModel.cs index 0167c16f..ead8d2a9 100644 --- a/Step.Model/DatabaseModels/MaintenanceModel.cs +++ b/Step.Model/DatabaseModels/MaintenanceModel.cs @@ -26,6 +26,9 @@ namespace Step.Model.DatabaseModels [Column("counter_id")] public int CounterId { get; set; } + [Column("title")] + public string Title { get; set; } + [Column("description")] public string Description { get; set; } diff --git a/Step.Model/Step.Model.csproj b/Step.Model/Step.Model.csproj index 30ff70fa..79553062 100644 --- a/Step.Model/Step.Model.csproj +++ b/Step.Model/Step.Model.csproj @@ -84,7 +84,7 @@ - + @@ -100,6 +100,8 @@ + + diff --git a/Step.NC/NcHandler.cs b/Step.NC/NcHandler.cs index 43547826..be4b3139 100644 --- a/Step.NC/NcHandler.cs +++ b/Step.NC/NcHandler.cs @@ -6,6 +6,7 @@ using CMS_CORE.Siemens; using Step.Database.Controllers; using Step.Model.DatabaseModels; using Step.Model.DTOModels; +using Step.Model.DTOModels.MaintenanceModels; using Step.Model.DTOModels.ToolModels; using Step.Utils; using System; @@ -353,22 +354,122 @@ namespace Step.NC return cmsError; } - public CmsError GetExpiredMaintenances(out List expiredMaintenance) + public CmsError GetMainenancesCounter(out List counters) { - // Return value - expiredMaintenance = new List(); - // List of PLC counters - List counters = new List(); + counters = new List(); // Get counters values from PLC CmsError cmsError = numericalControl.PLC_RMachineCounters(ref counters); + + return cmsError; + } + + public CmsError GetMaintenances(out List dtoMaintenancesModel) + { + // Return value + dtoMaintenancesModel = new List(); + + // Get counters values from PLC + CmsError cmsError = GetMainenancesCounter(out List counters); if (cmsError.IsError()) return cmsError; using (MaintenancesController maintenancesController = new MaintenancesController()) { // Get the last performed maintenance for each maintenance - List performedMaintenance = maintenancesController.FindLastMaintenance(); + List performedMaintenances = maintenancesController.FindLastPerformedMaintenances(); + + // Get all the active maintenances + List maintenances = maintenancesController.FindAll(); // TODO db or config file? + + double percentage = 0; + + foreach (var currMaintenance in maintenances) + { + // Get matching last performed maintenance for current maintenance + var performed = performedMaintenances.Find(x => x.MaintenanceId == currMaintenance.MaintenanceId); + TimeSpan missingDays = new TimeSpan(); + switch (currMaintenance.Type) + { + case MAINTENANCES_TYPE.MAINT_MACHINE_INTERVAL_TYPE: + { + // Get matching counter for the current maintenance + var counter = counters.Find(x => x.Id == currMaintenance.CounterId); + + int perfVal = 0; + if (performed != null) + perfVal = performed.CounterValue; + // Calc percentage = PLC - PERFORMED VALUE * 100 / interval + percentage = (counter.Value - perfVal * 100) / SupportFunctions.ConvertInMinutes(currMaintenance.Interval, currMaintenance.UnitOfMeasure); + missingDays = TimeSpan.FromMinutes(counter.Value - perfVal - SupportFunctions.ConvertInMinutes(currMaintenance.Interval, currMaintenance.UnitOfMeasure)); + } + break; + case MAINTENANCES_TYPE.MAINT_EXPIRATION_DATE_TYPE: + { + // Already performed + if (performed != null) + percentage = 0; + else + { + percentage = ((DateTime.Now - currMaintenance.CreationDate).TotalMinutes * 100) / (currMaintenance.Deadline - currMaintenance.CreationDate).TotalMinutes; // TimeSpan.FromTicks((currMaintenance.Deadline.Ticks)).TotalMinutes + missingDays = currMaintenance.Deadline - DateTime.Now; + } + } + break; + case MAINTENANCES_TYPE.MAINT_TIME_INTERVAL_TYPE: + { + // Get last performed, default value is maintenance creation date + DateTime perfDate = currMaintenance.CreationDate; + if (performed != null) + perfDate = performed.Date; + + // Now - last performed = elapsed interval since last maintenance + TimeSpan timePassedFromLastMaint = DateTime.Now.Subtract(perfDate); + // Convert in minutes + double minutesPassedFromLastMaint = timePassedFromLastMaint.TotalMinutes; + + // percentage = Passed minutes since last maintenance * 100 / Interval + percentage = (minutesPassedFromLastMaint * 100) / SupportFunctions.ConvertInMinutes(currMaintenance.Interval, currMaintenance.UnitOfMeasure); + missingDays = TimeSpan.FromMinutes(minutesPassedFromLastMaint - SupportFunctions.ConvertInMinutes(currMaintenance.Interval, currMaintenance.UnitOfMeasure)); + } + break; + } + + dtoMaintenancesModel.Add(new DTOMaintenanceModel() + { + Id = currMaintenance.MaintenanceId, + Title = currMaintenance.UserId == null ? "" : currMaintenance.Title, + CreationDate = currMaintenance.CreationDate, + Deadline = currMaintenance.Deadline, + Description = currMaintenance.Description, + Interval = currMaintenance.Interval, + LastExpirationDate = currMaintenance.LastExpirationDate, + Type = currMaintenance.Type, + UnitOfMeasure = currMaintenance.UnitOfMeasure.ToString(), + PercentageOfCompletion = (int)percentage, + MissingDays = missingDays, + CreatedByCms = currMaintenance.UserId == null + }); + } + } + + return cmsError; + } + + public CmsError GetExpiredMaintenances(out List expiredMaintenance) + { + // Return value + expiredMaintenance = new List(); + + // Get counters values from PLC + CmsError cmsError = GetMainenancesCounter(out List counters); + if (cmsError.IsError()) + return cmsError; + + using (MaintenancesController maintenancesController = new MaintenancesController()) + { + // Get the last performed maintenance for each maintenance + List performedMaintenances = maintenancesController.FindLastPerformedMaintenances(); // Get all the active maintenances List maintenances = maintenancesController.FindAll(); // TODO db or config file? @@ -376,7 +477,7 @@ namespace Step.NC foreach (var currMaintenance in maintenances) { // Get matching last performed maintenance for current maintenance - var performed = performedMaintenance.Find(x => x.MaintenanceId == currMaintenance.MaintenanceId); + var performed = performedMaintenances.Find(x => x.MaintenanceId == currMaintenance.MaintenanceId); switch (currMaintenance.Type) { @@ -390,7 +491,7 @@ namespace Step.NC perfVal = performed.CounterValue; // MAINTENANCE_INTERVAL <= PLC - LASTPERFORMED - if (currMaintenance.Interval <= counter.Value - perfVal) + if (SupportFunctions.ConvertInMinutes(currMaintenance.Interval, currMaintenance.UnitOfMeasure) <= counter.Value - perfVal) { // Update last expiration date if null if (currMaintenance.LastExpirationDate == null) diff --git a/Step/Controllers/WebApi/MaintenanceController.cs b/Step/Controllers/WebApi/MaintenanceController.cs new file mode 100644 index 00000000..a180a186 --- /dev/null +++ b/Step/Controllers/WebApi/MaintenanceController.cs @@ -0,0 +1,33 @@ +using Step.Database.Controllers; +using Step.Model.DTOModels.MaintenanceModels; +using Step.NC; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.Web.Http; + +namespace Step.Controllers.WebApi +{ + [RoutePrefix("api/maintenance_manager")] + public class MaintenanceController : ApiController + { + [Route("maintenances"), HttpGet] + public IHttpActionResult GetMaintenances() + { + using (NcHandler ncHandler = new NcHandler()) + { + ncHandler.Connect(); + ncHandler.GetMaintenances(out List maintenances); + return Ok(maintenances); + } + } + + [Route("maintenance"), HttpPost] + public IHttpActionResult AddMaintenance([Required]DTONewMaintenanceModel newMaint) + { + using (MaintenancesController maintenancesController = new MaintenancesController()) + { + return Ok(maintenancesController.Create(newMaint, 1)); + } + } + } +} \ No newline at end of file diff --git a/Step/Controllers/WebApi/ToolTableController.cs b/Step/Controllers/WebApi/ToolTableController.cs index 19c53b40..26b84755 100644 --- a/Step/Controllers/WebApi/ToolTableController.cs +++ b/Step/Controllers/WebApi/ToolTableController.cs @@ -3,7 +3,6 @@ using Step.NC; using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; -using System.Diagnostics; using System.Linq; using System.Web.Http; using static CMS_CORE_Library.DataStructures; @@ -21,8 +20,8 @@ namespace Step.Controllers.WebApi ncHandler.Connect(); CmsError libraryError = ncHandler.GetToolTableData(out List tools); if (libraryError.IsError()) - return BadRequest(libraryError.localizationKey); - + return BadRequest(libraryError.localizationKey); + return Ok(tools); } } @@ -41,7 +40,7 @@ namespace Step.Controllers.WebApi ncHandler.Connect(); CmsError libraryError = ncHandler.AddTool(ref siemensModel); if (libraryError.IsError()) - return BadRequest(libraryError.localizationKey); + return BadRequest(libraryError.localizationKey); return Ok(siemensModel); } @@ -63,7 +62,7 @@ namespace Step.Controllers.WebApi CmsError libraryError = ncHandler.UpdateTool(ref siemensModel); if (libraryError.IsError()) - return BadRequest(libraryError.localizationKey); + return BadRequest(libraryError.localizationKey); return Ok(siemensModel); } @@ -78,7 +77,7 @@ namespace Step.Controllers.WebApi // Call delete library function CmsError libraryError = ncHandler.DeleteTool(id); if (libraryError.IsError()) - return BadRequest(libraryError.localizationKey); + return BadRequest(libraryError.localizationKey); return Ok(); } @@ -92,7 +91,7 @@ namespace Step.Controllers.WebApi ncHandler.Connect(); CmsError libraryError = ncHandler.GetFamiliesData(out List families); if (libraryError.IsError()) - return BadRequest(libraryError.localizationKey); + return BadRequest(libraryError.localizationKey); return Ok(families); } @@ -109,7 +108,7 @@ namespace Step.Controllers.WebApi ncHandler.Connect(); CmsError libraryError = ncHandler.AddFamily(family.Name, out FamilyModel newFamily); if (libraryError.IsError()) - return BadRequest(libraryError.localizationKey); + return BadRequest(libraryError.localizationKey); return Ok(newFamily); } @@ -127,7 +126,7 @@ namespace Step.Controllers.WebApi CmsError libraryError = ncHandler.UpdateFamilyName(oldName, family.Name); if (libraryError.IsError()) - return BadRequest(libraryError.localizationKey); + return BadRequest(libraryError.localizationKey); return Ok(family); } @@ -142,7 +141,7 @@ namespace Step.Controllers.WebApi // Call delete library function CmsError libraryError = ncHandler.DeleteFamily(name); if (libraryError.IsError()) - return BadRequest(libraryError.localizationKey); + return BadRequest(libraryError.localizationKey); return Ok(); } @@ -156,13 +155,12 @@ namespace Step.Controllers.WebApi ncHandler.Connect(); CmsError libraryError = ncHandler.GetMagazinesPositionsData(out List magazines); if (libraryError.IsError()) - return BadRequest(libraryError.localizationKey); + return BadRequest(libraryError.localizationKey); return Ok(magazines); } } - [Route("magazine/{magazineId:int}/positions"), HttpGet] public IHttpActionResult GetMagazinePositions(int magazineId) { @@ -199,7 +197,7 @@ namespace Step.Controllers.WebApi // Update CmsError libraryError = ncHandler.UpdateMagazinePosition(pos); if (libraryError.IsError()) - return BadRequest(libraryError.localizationKey); + return BadRequest(libraryError.localizationKey); return Ok(); } @@ -213,7 +211,7 @@ namespace Step.Controllers.WebApi ncHandler.Connect(); CmsError libraryError = ncHandler.GetShanksData(out List shanks); if (libraryError.IsError()) - return BadRequest(libraryError.localizationKey); + return BadRequest(libraryError.localizationKey); return Ok(shanks); } @@ -232,7 +230,7 @@ namespace Step.Controllers.WebApi ncHandler.Connect(); CmsError libraryError = ncHandler.AddShank(ref shank); if (libraryError.IsError()) - return BadRequest(libraryError.localizationKey); + return BadRequest(libraryError.localizationKey); return Ok(shank); } @@ -252,7 +250,7 @@ namespace Step.Controllers.WebApi ncHandler.Connect(); CmsError libraryError = ncHandler.UpdateShank(ref shank); if (libraryError.IsError()) - return BadRequest(libraryError.localizationKey); + return BadRequest(libraryError.localizationKey); return Ok(shank); } @@ -267,7 +265,7 @@ namespace Step.Controllers.WebApi // Call delete library function CmsError libraryError = ncHandler.DeleteShank(id); if (libraryError.IsError()) - return BadRequest(libraryError.localizationKey); + return BadRequest(libraryError.localizationKey); return Ok(); } @@ -288,7 +286,7 @@ namespace Step.Controllers.WebApi // Call library add methods CmsError libraryError = ncHandler.AddEdge(toolId, ref edge); if (libraryError.IsError()) - return BadRequest(libraryError.localizationKey); + return BadRequest(libraryError.localizationKey); return Ok(edge); } @@ -310,7 +308,7 @@ namespace Step.Controllers.WebApi // Call library add methods CmsError libraryError = ncHandler.UpdateEdge(toolId, ref edge); if (libraryError.IsError()) - return BadRequest(libraryError.localizationKey); + return BadRequest(libraryError.localizationKey); return Ok(edge); } @@ -325,7 +323,7 @@ namespace Step.Controllers.WebApi // Call delete library function CmsError libraryError = ncHandler.DeleteEdge(toolId, edgeId); if (libraryError.IsError()) - return BadRequest(libraryError.localizationKey); + return BadRequest(libraryError.localizationKey); return Ok(); } @@ -340,7 +338,7 @@ namespace Step.Controllers.WebApi // Call delete library function CmsError libraryError = ncHandler.GetMagazinePositionsAndTools(magazineId, out List magazinePos); if (libraryError.IsError()) - return BadRequest(libraryError.localizationKey); + return BadRequest(libraryError.localizationKey); return Ok(magazinePos); } @@ -355,7 +353,7 @@ namespace Step.Controllers.WebApi // Call delete library function CmsError libraryError = ncHandler.GetNotInMagazinesTools(out List multiTools, out List tools); if (libraryError.IsError()) - return BadRequest(libraryError.localizationKey); + return BadRequest(libraryError.localizationKey); return Ok(new { @@ -375,18 +373,19 @@ namespace Step.Controllers.WebApi { ncHandler.Connect(); - NewToolInMagazineModel libraryMag = new NewToolInMagazineModel { PositionId = positionId, ToolId = toolId.ToolId }; + NewToolInMagazineModel libraryMag = new NewToolInMagazineModel { PositionId = positionId, ToolId = toolId.ToolId }; // Call delete library function CmsError libraryError = ncHandler.LoadToolInMagazine(magazineId, libraryMag); if (libraryError.IsError()) - return BadRequest(libraryError.localizationKey); + return BadRequest(libraryError.localizationKey); return Ok( - new { - magazineId, - positionId, - toolId = toolId.ToolId - }); + new + { + magazineId, + positionId, + toolId = toolId.ToolId + }); } } @@ -403,7 +402,7 @@ namespace Step.Controllers.WebApi // Call delete library function CmsError libraryError = ncHandler.UnloadToolInMagazine(magazineId, positionId); if (libraryError.IsError()) - return BadRequest(libraryError.localizationKey); + return BadRequest(libraryError.localizationKey); return Ok(new { @@ -423,10 +422,10 @@ namespace Step.Controllers.WebApi using (NcHandler ncHandler = new NcHandler()) { ncHandler.Connect(); - + CmsError libraryError = ncHandler.LoadTooolIntoShank(shankId, positionId, toolId); if (libraryError.IsError()) - return BadRequest(libraryError.localizationKey); + return BadRequest(libraryError.localizationKey); return Ok(); } @@ -441,10 +440,10 @@ namespace Step.Controllers.WebApi using (NcHandler ncHandler = new NcHandler()) { ncHandler.Connect(); - + CmsError libraryError = ncHandler.UnloadTooolFromShank(shankId, positionId); if (libraryError.IsError()) - return BadRequest(libraryError.localizationKey); + return BadRequest(libraryError.localizationKey); return Ok(); } diff --git a/Step/Step.csproj b/Step/Step.csproj index 5ff0ae9b..4a02a4fb 100644 --- a/Step/Step.csproj +++ b/Step/Step.csproj @@ -171,6 +171,7 @@ +