diff --git a/Step.Database/Controllers/MaintenancesController.cs b/Step.Database/Controllers/MaintenancesController.cs index 0f2ebc96..a765b4e2 100644 --- a/Step.Database/Controllers/MaintenancesController.cs +++ b/Step.Database/Controllers/MaintenancesController.cs @@ -1,6 +1,7 @@ using Step.Model.DatabaseModels; using Step.Model.DTOModels; using Step.Model.DTOModels.MaintenanceModels; +using Step.Utils; using System; using System.Collections; using System.Collections.Generic; @@ -38,13 +39,14 @@ namespace Step.Database.Controllers .Include("Maintainer").OrderByDescending(x => x.Date) .ToList(); + foreach (PerformedMaintenanceModel maintenance in maintList) { if(maintenance.ControlWord != -2) valRet.Add(new DTOPerformModel() { Date = maintenance.Date, - Countervalue = maintenance.CounterValue, + Countervalue = (uint)Math.Ceiling(SupportFunctions.ConvertInUmeas(maintenance.CounterValue, maintenance.Maintenance.UnitOfMeasure.Value)), ControlWord = maintenance.ControlWord, User = maintenance.Maintainer != null ? maintenance.Maintainer.Username : null }); @@ -108,7 +110,7 @@ namespace Step.Database.Controllers //fix the maintenance number to 1 (machine Counter) if (newMaint.Type == MAINTENANCE_TYPE.MACHINE_INTERVAL) - counter = 1; + counter = 0; MaintenanceModel dbMaint = new MaintenanceModel() { diff --git a/Step.Model/DTOModels/MaintenanceModels/DTOMaintenanceModel.cs b/Step.Model/DTOModels/MaintenanceModels/DTOMaintenanceModel.cs index d7a47c8a..6ffd3a1a 100644 --- a/Step.Model/DTOModels/MaintenanceModels/DTOMaintenanceModel.cs +++ b/Step.Model/DTOModels/MaintenanceModels/DTOMaintenanceModel.cs @@ -32,6 +32,8 @@ namespace Step.Model.DTOModels.MaintenanceModels public uint PlcCounter { get; set; } + public uint OriginalPlcCounter { get; set; } + public bool CreatedByCms { get; set; } public bool CanEdit { get; set; } diff --git a/Step.Model/DTOModels/MaintenanceModels/DTONewMaintenanceModel.cs b/Step.Model/DTOModels/MaintenanceModels/DTONewMaintenanceModel.cs index 4ab8922a..8a4dac32 100644 --- a/Step.Model/DTOModels/MaintenanceModels/DTONewMaintenanceModel.cs +++ b/Step.Model/DTOModels/MaintenanceModels/DTONewMaintenanceModel.cs @@ -48,7 +48,7 @@ namespace Step.Model.DTOModels.MaintenanceModels { public DateTime Date { get; set; } - public int Countervalue { get; set; } + public uint Countervalue { get; set; } public int ControlWord { get; set; } diff --git a/Step.NC/NcAdapter.cs b/Step.NC/NcAdapter.cs index 29248367..998068d1 100644 --- a/Step.NC/NcAdapter.cs +++ b/Step.NC/NcAdapter.cs @@ -514,6 +514,7 @@ namespace Step.NC double percentage = 0; TimeSpan missingDays = new TimeSpan(); CounterModel counter = new CounterModel(); + uint counterValue = 0; bool canEdit = false; bool canPerform = false; @@ -535,6 +536,9 @@ namespace Step.NC int perfVal = 0; if (performed != null) perfVal = performed.CounterValue; + + counterValue = (uint) Math.Ceiling(SupportFunctions.ConvertInUmeas(counterVal, currMaintenance.UnitOfMeasure.Value)); + // Calc percentage = PLC - PERFORMED VALUE * 100 / interval percentage = ((counterVal - perfVal) * 100) / SupportFunctions.ConvertInMinutes(currMaintenance.Interval.Value, currMaintenance.UnitOfMeasure.Value); missingDays = TimeSpan.FromMinutes(-1 * (counterVal - perfVal - SupportFunctions.ConvertInMinutes(currMaintenance.Interval.Value, currMaintenance.UnitOfMeasure.Value))); @@ -614,7 +618,8 @@ namespace Step.NC UnitOfMeasure = currMaintenance.UnitOfMeasure.ToString(), PercentageOfCompletion = percentage >= 0 && percentage < 100 ? Convert.ToInt32(percentage) : 100, MissingDays = missingDays, - PlcCounter = counter.Value, + PlcCounter = counterValue, + OriginalPlcCounter = counter.Value, CreatedByCms = currMaintenance.UserId == null, CanEdit = canEdit, CanPerform = canPerform, diff --git a/Step.Utils/supportFunctions.cs b/Step.Utils/supportFunctions.cs index 2ad16536..f2a2e9a6 100644 --- a/Step.Utils/supportFunctions.cs +++ b/Step.Utils/supportFunctions.cs @@ -98,6 +98,27 @@ namespace Step.Utils } } + public static double ConvertInUmeas(double number, MAINTENANCE_UNIT_OF_MEASURE unit) + { + switch (unit) + { + case MAINTENANCE_UNIT_OF_MEASURE.mm: + 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; + } + } + public static void CopyProperties(TParent parent, TChild child) where TParent : class where TChild : class { var parentProperties = parent.GetType().GetProperties(); diff --git a/Step/Controllers/WebApi/ApiMaintenanceController.cs b/Step/Controllers/WebApi/ApiMaintenanceController.cs index b19e4637..e4627fd6 100644 --- a/Step/Controllers/WebApi/ApiMaintenanceController.cs +++ b/Step/Controllers/WebApi/ApiMaintenanceController.cs @@ -6,6 +6,7 @@ using Step.Model.DTOModels; using Step.Model.DTOModels.MaintenanceModels; using Step.NC; using Step.Provider; +using Step.Utils; using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; @@ -73,14 +74,18 @@ namespace Step.Controllers.WebApi return BadRequest(cmsError.localizationKey); } - PerformedMaintenanceModel performed = maintenancesController.PerformeMaintenance(maintenance.PlcCounter / 60, dbMaint.MaintenanceId, Convert.ToInt32(userId.Value), -2); + PerformedMaintenanceModel performed = maintenancesController.PerformeMaintenance(maintenance.OriginalPlcCounter / 60, dbMaint.MaintenanceId, Convert.ToInt32(userId.Value), -2); if (performed == null) { maintenancesController.Delete(dbMaint); return NotFound(); } - return Ok(maintenance); + cmsError = ncAdapter.GetMaintenanceDataById(dbMaint.MaintenanceId, Convert.ToInt32(userId.Value), out DTOMaintenanceModel endMaintenance); + if (cmsError.IsError()) + return BadRequest(cmsError.localizationKey); + + return Ok(endMaintenance); } } @@ -209,14 +214,14 @@ namespace Step.Controllers.WebApi int controlWord = -1; if (maintData.CreatedByCms) { - bool passwordIsValid = maintenancesController.CheckPassword(password.Password, data.CmsMachineIdNumber, maintData.PlcCounter, out controlWord); + bool passwordIsValid = maintenancesController.CheckPassword(password.Password, data.CmsMachineIdNumber, maintData.OriginalPlcCounter, out controlWord); if (!passwordIsValid) return BadRequest(API_ERROR_KEYS.PASSWORD_IS_INVALID); } // Check if maintenance id - PerformedMaintenanceModel performed = maintenancesController.PerformeMaintenance(maintData.PlcCounter/60, maintenanceId, Convert.ToInt32(userId.Value), controlWord); + PerformedMaintenanceModel performed = maintenancesController.PerformeMaintenance(maintData.OriginalPlcCounter / 60, maintenanceId, Convert.ToInt32(userId.Value), controlWord); if (performed == null) return NotFound(); diff --git a/Step/wwwroot/assets/icons/_png/circle-info-blue.png b/Step/wwwroot/assets/icons/_png/circle-info-blue.png new file mode 100644 index 00000000..63cfb340 Binary files /dev/null and b/Step/wwwroot/assets/icons/_png/circle-info-blue.png differ diff --git a/Step/wwwroot/assets/styles/base/maintenance-card.less b/Step/wwwroot/assets/styles/base/maintenance-card.less index 5bd410a9..ea55ead8 100644 --- a/Step/wwwroot/assets/styles/base/maintenance-card.less +++ b/Step/wwwroot/assets/styles/base/maintenance-card.less @@ -154,7 +154,7 @@ width: 696px; .text{ - width: 400px; + width: 100%; margin-left: 2px; margin-bottom: 1px; height: 64px; @@ -182,6 +182,7 @@ font-size: 18px; font-weight: 600; line-height: 18px; + margin-right: 10px; } } .btn{ diff --git a/Step/wwwroot/assets/styles/base/maintenance.less b/Step/wwwroot/assets/styles/base/maintenance.less index 68655c64..b95ba339 100644 --- a/Step/wwwroot/assets/styles/base/maintenance.less +++ b/Step/wwwroot/assets/styles/base/maintenance.less @@ -216,6 +216,9 @@ &.selected{ background-color: rgba(23, 145, 255, 0.75); color: @color-white; + td .machine-img{ + filter: invert(1); + } td div.maintenance-progress.selected{ label{ color: @color-white; diff --git a/Step/wwwroot/assets/styles/base/modals.less b/Step/wwwroot/assets/styles/base/modals.less index 28c987eb..e00327ff 100644 --- a/Step/wwwroot/assets/styles/base/modals.less +++ b/Step/wwwroot/assets/styles/base/modals.less @@ -1111,6 +1111,9 @@ label { width: 220px; } + .machineimage{ + width: 19px; + } [type="radio"]:checked, [type="radio"]:not(:checked) { visibility: hidden; diff --git a/Step/wwwroot/assets/styles/style.css b/Step/wwwroot/assets/styles/style.css index 75e3aae8..291a792b 100644 --- a/Step/wwwroot/assets/styles/style.css +++ b/Step/wwwroot/assets/styles/style.css @@ -991,6 +991,9 @@ .modal.create-maintenance .typology .radiobutton label { width: 220px; } +.modal.create-maintenance .typology .radiobutton .machineimage { + width: 19px; +} .modal.create-maintenance .typology .radiobutton [type="radio"]:checked, .modal.create-maintenance .typology .radiobutton [type="radio"]:not(:checked) { visibility: hidden; @@ -17937,6 +17940,9 @@ footer .container button.big:before { background-color: rgba(23, 145, 255, 0.75); color: #fff; } +.maintenance-container .maintenance-box .maintenance-body .maintenance-box-left .maintenance-box-left-body table tbody tr.selected td .machine-img { + filter: invert(1); +} .maintenance-container .maintenance-box .maintenance-body .maintenance-box-left .maintenance-box-left-body table tbody tr.selected td div.maintenance-progress.selected label { color: #fff; } @@ -18231,7 +18237,6 @@ footer .container button.big:before { width: 696px; } .maintenance-card .body .box .lastmaintenance .text { - width: 400px; margin-left: 2px; margin-bottom: 1px; height: 64px; @@ -18260,6 +18265,7 @@ footer .container button.big:before { font-size: 18px; font-weight: 600; line-height: 18px; + margin-right: 10px; } .maintenance-card .body .box .lastmaintenance .btn { height: 64px; diff --git a/Step/wwwroot/src/app_modules/maintenance/components/maintenance-card.ts b/Step/wwwroot/src/app_modules/maintenance/components/maintenance-card.ts index a8206114..12eb6895 100644 --- a/Step/wwwroot/src/app_modules/maintenance/components/maintenance-card.ts +++ b/Step/wwwroot/src/app_modules/maintenance/components/maintenance-card.ts @@ -227,6 +227,7 @@ export default class MaintenanceCard extends Vue { // Reload Maintenances new MaintenanceService().GetMaintenances(); + new MaintenanceService().GetPerformsMaintenance(performedMaint); } }); } diff --git a/Step/wwwroot/src/app_modules/maintenance/components/maintenance.ts b/Step/wwwroot/src/app_modules/maintenance/components/maintenance.ts index 172dc4cf..8ee1f9e7 100644 --- a/Step/wwwroot/src/app_modules/maintenance/components/maintenance.ts +++ b/Step/wwwroot/src/app_modules/maintenance/components/maintenance.ts @@ -130,8 +130,11 @@ export default class Maintenance extends Vue { } } - public getPlcValue(seconds) { - return Math.floor(seconds/60) + "h"; + public getPlcValue(seconds,umeasure):String { + if(umeasure) + return Math.floor(seconds) + umeasure.toLowerCase(); + else + return Math.floor(seconds) + ""; } public expirationDate(type, missingDays) { @@ -165,8 +168,11 @@ export default class Maintenance extends Vue { } else { let hour = moment.duration(missingDays).asHours(); - var expirationDate = Math.floor(hour) + "h"; - return expirationDate; + let minutes = moment.duration(missingDays).asMinutes(); + if(Math.floor(hour) == 0) + return Math.floor(minutes) + "m"; + else + return Math.floor(hour) + "h"; } } diff --git a/Step/wwwroot/src/app_modules/maintenance/components/maintenance.vue b/Step/wwwroot/src/app_modules/maintenance/components/maintenance.vue index 45a4f3ea..8183baf7 100644 --- a/Step/wwwroot/src/app_modules/maintenance/components/maintenance.vue +++ b/Step/wwwroot/src/app_modules/maintenance/components/maintenance.vue @@ -117,7 +117,7 @@ 'border-yellow' : selectedMaintenance != null ? setBorderYellowCard(selectedMaintenance.percentageOfCompletion): false}" :can-perform="selectedMaintenance != null ? canPerform(selectedMaintenance.canPerform,selectedMaintenance.type,selectedMaintenance.lastPerformedDate) : false" :expiration="selectedMaintenance != null ? expirationDate(selectedMaintenance.type, selectedMaintenance.missingDays) : ''" - :plcCounter="(selectedMaintenance && selectedMaintenance.plcCounter) ? getPlcValue(selectedMaintenance.plcCounter): getPlcValue(0) " + :plcCounter="(selectedMaintenance && selectedMaintenance.plcCounter) ? getPlcValue(selectedMaintenance.plcCounter, selectedMaintenance.unitOfMeasure): getPlcValue(0) " :selectedMaintenance="selectedMaintenance ? selectedMaintenance : {}" :note-maintenance="selectedMaintenance ? noteMaintenance : []" :performs-maintenance="selectedMaintenance ? performsMaintenance : []" diff --git a/Step/wwwroot/src/modules/create-maintenance.vue b/Step/wwwroot/src/modules/create-maintenance.vue index 56e0f729..3421b1d5 100644 --- a/Step/wwwroot/src/modules/create-maintenance.vue +++ b/Step/wwwroot/src/modules/create-maintenance.vue @@ -6,7 +6,7 @@
- +
diff --git a/Step/wwwroot/src/modules/history-maintenance.vue b/Step/wwwroot/src/modules/history-maintenance.vue index 2fa87320..a977339e 100644 --- a/Step/wwwroot/src/modules/history-maintenance.vue +++ b/Step/wwwroot/src/modules/history-maintenance.vue @@ -13,7 +13,7 @@
{{convertDate(m.date)}} - {{convertDateToTime(m.date)}}
{{m.user}}
-
{{m.countervalue}}
+
{{plcValue(m.countervalue,currMain.unitOfMeasure)}}
@@ -48,6 +48,12 @@ export default { }, convertDateToTime: function(date) { return moment(date).format('LT'); + }, + plcValue: function(seconds,umeasure){ + if(umeasure) + return Math.floor(seconds) + umeasure.toLowerCase(); + else + return Math.floor(seconds) + ""; } }, props:{