Merge branch 'feature/MaintenancesWP5' into develop
This commit is contained in:
@@ -7,10 +7,12 @@
|
||||
<lang langKey="it">Ita</lang>
|
||||
</localizedNames>
|
||||
<interval>10</interval>
|
||||
<deadline>15/02/2018 13:00</deadline>
|
||||
<type>exp_date</type>
|
||||
<deadline>15/07/2018 13:00</deadline>
|
||||
<type>EXP_DATE</type>
|
||||
<description>DescriptionUNO</description>
|
||||
<unitOfMeasure>D</unitOfMeasure>
|
||||
<counterId>2</counterId>
|
||||
</maintenance>
|
||||
</maintenance>
|
||||
<maintenance>
|
||||
<id>2</id>
|
||||
<localizedNames>
|
||||
@@ -18,8 +20,10 @@
|
||||
<lang langKey="it">Ita 2</lang>
|
||||
</localizedNames>
|
||||
<interval>1000</interval>
|
||||
<deadline>15/02/2018 13:00</deadline>
|
||||
<type>machine_interval</type>
|
||||
<deadline>15/07/2018 13:00</deadline>
|
||||
<type>MACHINE_INTERVAL</type>
|
||||
<description>Description</description>
|
||||
<unitOfMeasure>m</unitOfMeasure>
|
||||
<counterId>1</counterId>
|
||||
</maintenance>
|
||||
</maintenances>
|
||||
@@ -19,8 +19,10 @@
|
||||
</xs:element>
|
||||
<xs:element name="interval" type="xs:string" />
|
||||
<xs:element name="deadline" type="xs:string" />
|
||||
<xs:element name="type" type="xs:string" />
|
||||
<xs:element name="counterId" type="xs:unsignedInt" />
|
||||
<xs:element name="description" type="xs:string" />
|
||||
<xs:element name="unitOfMeasure" type="unitOfMeasureType" />
|
||||
<xs:element name="type" type="maintenanceType" />
|
||||
<xs:element name="counterId" type="xs:unsignedInt"/>
|
||||
</xs:all>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
@@ -48,6 +50,7 @@
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
|
||||
<!-- Maintenance Type -->
|
||||
<xs:simpleType name="maintenanceType" final="restriction">
|
||||
<xs:restriction base="xs:string">
|
||||
@@ -56,5 +59,15 @@
|
||||
<xs:enumeration value="EXP_DATE" />
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
|
||||
<!-- Unit of measure Type -->
|
||||
<xs:simpleType name="unitOfMeasureType" final="restriction">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="m" />
|
||||
<xs:enumeration value="H" />
|
||||
<xs:enumeration value="D" />
|
||||
<xs:enumeration value="M" />
|
||||
<xs:enumeration value="Y" />
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:schema>
|
||||
@@ -0,0 +1,13 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<toolTable>
|
||||
<options>
|
||||
<family>true</family>
|
||||
<multiTool>true</multiTool>
|
||||
<magazinePosition>false</magazinePosition>
|
||||
</options>
|
||||
<fields>
|
||||
<familyName>true</familyName>
|
||||
<childId>true</childId>
|
||||
<magazinePositionType>true</magazinePositionType>
|
||||
</fields>
|
||||
</toolTable>
|
||||
@@ -0,0 +1,27 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
|
||||
<xs:element name="toolTable">
|
||||
<xs:complexType>
|
||||
<xs:all>
|
||||
<xs:element name="options">
|
||||
<xs:complexType>
|
||||
<xs:all>
|
||||
<xs:element name="family" type="xs:boolean"></xs:element>
|
||||
<xs:element name="multiTool" type="xs:boolean"></xs:element>
|
||||
<xs:element name="magazinePosition" type="xs:boolean"></xs:element>
|
||||
</xs:all>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
<xs:element name="fields">
|
||||
<xs:complexType>
|
||||
<xs:all>
|
||||
<xs:element name="familyName" type="xs:boolean"></xs:element>
|
||||
<xs:element name="childId" type="xs:boolean"></xs:element>
|
||||
<xs:element name="magazinePositionType" type="xs:boolean"></xs:element>
|
||||
</xs:all>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:all>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:schema>
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -1,8 +1,10 @@
|
||||
using Step.Model.DatabaseModels;
|
||||
using Step.Model.DTOModels.MaintenanceModels;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using static Step.Config.ServerConfig;
|
||||
using static Step.Model.Constants;
|
||||
|
||||
namespace Step.Database.Controllers
|
||||
{
|
||||
@@ -22,7 +24,7 @@ namespace Step.Database.Controllers
|
||||
dbCtx.Dispose();
|
||||
}
|
||||
|
||||
public List<PerformedMaintenanceModel> FindLastMaintenance()
|
||||
public List<PerformedMaintenanceModel> FindLastPerformedMaintenances()
|
||||
{
|
||||
List<PerformedMaintenanceModel> lastMaintenances = new List<PerformedMaintenanceModel>();
|
||||
// Find last performed maintenance
|
||||
@@ -50,14 +52,38 @@ 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<MaintenanceModel> dbMaintenances = dbCtx
|
||||
.Maintenances
|
||||
.ToList();
|
||||
|
||||
// Find database rows that
|
||||
List<MaintenanceModel> toDeleteMaint = dbMaintenances.Where(x =>
|
||||
// Find database rows that has to be deleted
|
||||
List<MaintenanceModel> toDeleteMaint = dbMaintenances.Where(x => x.UserId == null &&
|
||||
!MaintenancesConfig.Select(y => y.Id).Contains(x.MaintenanceId)
|
||||
).ToList();
|
||||
|
||||
@@ -87,6 +113,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 +132,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();
|
||||
|
||||
@@ -26,8 +26,9 @@ namespace Step.Database
|
||||
public DbSet<MaintenanceModel> Maintenances { get; set; }
|
||||
public DbSet<PerformedMaintenanceModel> 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)
|
||||
|
||||
+1
-1
@@ -13,7 +13,7 @@ namespace Step.Database.Migrations
|
||||
|
||||
string IMigrationMetadata.Id
|
||||
{
|
||||
get { return "201802151533324_InitMigration"; }
|
||||
get { return "201806111536482_InitMigration"; }
|
||||
}
|
||||
|
||||
string IMigrationMetadata.Source
|
||||
+9
-1
@@ -81,10 +81,16 @@ 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),
|
||||
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 +123,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");
|
||||
+1
-1
@@ -118,7 +118,7 @@
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="Target" xml:space="preserve">
|
||||
<value>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</value>
|
||||
<value>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</value>
|
||||
</data>
|
||||
<data name="DefaultSchema" xml:space="preserve">
|
||||
<value>dbo</value>
|
||||
@@ -77,9 +77,9 @@
|
||||
<Compile Include="Controllers\UsersController.cs" />
|
||||
<Compile Include="Controllers\MachinesUsersController.cs" />
|
||||
<Compile Include="DatabaseContext.cs" />
|
||||
<Compile Include="Migrations\201802151533324_InitMigration.cs" />
|
||||
<Compile Include="Migrations\201802151533324_InitMigration.Designer.cs">
|
||||
<DependentUpon>201802151533324_InitMigration.cs</DependentUpon>
|
||||
<Compile Include="Migrations\201806111536482_InitMigration.cs" />
|
||||
<Compile Include="Migrations\201806111536482_InitMigration.Designer.cs">
|
||||
<DependentUpon>201806111536482_InitMigration.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Migrations\Configuration.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
@@ -115,8 +115,8 @@
|
||||
<None Include="App.config" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<EmbeddedResource Include="Migrations\201802151533324_InitMigration.resx">
|
||||
<DependentUpon>201802151533324_InitMigration.cs</DependentUpon>
|
||||
<EmbeddedResource Include="Migrations\201806111536482_InitMigration.resx">
|
||||
<DependentUpon>201806111536482_InitMigration.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
|
||||
@@ -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; }
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
+14
-3
@@ -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
|
||||
|
||||
@@ -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; }
|
||||
}
|
||||
}
|
||||
@@ -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; }
|
||||
}
|
||||
}
|
||||
@@ -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,25 @@ 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; }
|
||||
|
||||
[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; }
|
||||
}
|
||||
}
|
||||
@@ -84,7 +84,7 @@
|
||||
<Compile Include="DTOModels\DTOAxesModel.cs" />
|
||||
<Compile Include="DTOModels\DTOAxisNameModel.cs" />
|
||||
<Compile Include="DTOModels\DTOClientConfigurationModel.cs" />
|
||||
<Compile Include="DTOModels\DTOExpiredMaintenanceModel.cs" />
|
||||
<Compile Include="DTOModels\MaintenanceModels\DTOExpiredMaintenanceModel.cs" />
|
||||
<Compile Include="DTOModels\DTOHeadModel.cs" />
|
||||
<Compile Include="DTOModels\DTOHeadsConfigModel.cs" />
|
||||
<Compile Include="DTOModels\DTOLanguageModel.cs">
|
||||
@@ -100,6 +100,8 @@
|
||||
<Compile Include="DTOModels\DTOUserSoftKeyModel.cs" />
|
||||
<Compile Include="DTOModels\DTOStartupConfigurationModel.cs" />
|
||||
<Compile Include="DTOModels\DTOUserModel.cs" />
|
||||
<Compile Include="DTOModels\MaintenanceModels\DTOMaintenanceModel.cs" />
|
||||
<Compile Include="DTOModels\MaintenanceModels\DTONewMaintenanceModel.cs" />
|
||||
<Compile Include="DTOModels\ToolModels\DTOEdgeModel.cs" />
|
||||
<Compile Include="DTOModels\ToolModels\DTOMagazineStatusModel.cs" />
|
||||
<Compile Include="DTOModels\ToolModels\DTOShankModel.cs" />
|
||||
|
||||
+119
-15
@@ -6,7 +6,9 @@ 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;
|
||||
using System.Collections.Generic;
|
||||
using System.Globalization;
|
||||
@@ -150,6 +152,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;
|
||||
@@ -349,22 +354,122 @@ namespace Step.NC
|
||||
return cmsError;
|
||||
}
|
||||
|
||||
public CmsError GetExpiredMaintenances(out List<DTOExpiredMaintenanceModel> expiredMaintenance)
|
||||
public CmsError GetMainenancesCounter(out List<CounterModel> counters)
|
||||
{
|
||||
// Return value
|
||||
expiredMaintenance = new List<DTOExpiredMaintenanceModel>();
|
||||
|
||||
// List of PLC counters
|
||||
List<CounterModel> counters = new List<CounterModel>();
|
||||
counters = new List<CounterModel>();
|
||||
// Get counters values from PLC
|
||||
CmsError cmsError = numericalControl.PLC_RMachineCounters(ref counters);
|
||||
|
||||
return cmsError;
|
||||
}
|
||||
|
||||
public CmsError GetMaintenances(out List<DTOMaintenanceModel> dtoMaintenancesModel)
|
||||
{
|
||||
// Return value
|
||||
dtoMaintenancesModel = new List<DTOMaintenanceModel>();
|
||||
|
||||
// Get counters values from PLC
|
||||
CmsError cmsError = GetMainenancesCounter(out List<CounterModel> counters);
|
||||
if (cmsError.IsError())
|
||||
return cmsError;
|
||||
|
||||
using (MaintenancesController maintenancesController = new MaintenancesController())
|
||||
{
|
||||
// Get the last performed maintenance for each maintenance
|
||||
List<PerformedMaintenanceModel> performedMaintenance = maintenancesController.FindLastMaintenance();
|
||||
List<PerformedMaintenanceModel> performedMaintenances = maintenancesController.FindLastPerformedMaintenances();
|
||||
|
||||
// Get all the active maintenances
|
||||
List<MaintenanceModel> 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<DTOExpiredMaintenanceModel> expiredMaintenance)
|
||||
{
|
||||
// Return value
|
||||
expiredMaintenance = new List<DTOExpiredMaintenanceModel>();
|
||||
|
||||
// Get counters values from PLC
|
||||
CmsError cmsError = GetMainenancesCounter(out List<CounterModel> counters);
|
||||
if (cmsError.IsError())
|
||||
return cmsError;
|
||||
|
||||
using (MaintenancesController maintenancesController = new MaintenancesController())
|
||||
{
|
||||
// Get the last performed maintenance for each maintenance
|
||||
List<PerformedMaintenanceModel> performedMaintenances = maintenancesController.FindLastPerformedMaintenances();
|
||||
|
||||
// Get all the active maintenances
|
||||
List<MaintenanceModel> maintenances = maintenancesController.FindAll(); // TODO db or config file?
|
||||
@@ -372,11 +477,11 @@ 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)
|
||||
{
|
||||
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);
|
||||
@@ -386,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)
|
||||
@@ -405,7 +510,7 @@ namespace Step.NC
|
||||
}
|
||||
break;
|
||||
|
||||
case MAINT_EXPIRATION_DATE_TYPE:
|
||||
case MAINTENANCES_TYPE.MAINT_EXPIRATION_DATE_TYPE:
|
||||
{
|
||||
// Already performed
|
||||
if (performed != null)
|
||||
@@ -421,7 +526,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 +539,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 +858,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 +884,6 @@ namespace Step.NC
|
||||
return numericalControl.TOOLS_WAddShank(ref shank);
|
||||
}
|
||||
|
||||
|
||||
public CmsError UpdateShank(ref ShankModel shank)
|
||||
{
|
||||
return numericalControl.TOOLS_WUpdateShank(ref shank);
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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<DTOMaintenanceModel> maintenances);
|
||||
return Ok(maintenances);
|
||||
}
|
||||
}
|
||||
|
||||
[Route("maintenance"), HttpPost]
|
||||
public IHttpActionResult AddMaintenance([Required]DTONewMaintenanceModel newMaint)
|
||||
{
|
||||
using (MaintenancesController maintenancesController = new MaintenancesController())
|
||||
{
|
||||
return Ok(maintenancesController.Create(newMaint, 1));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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<SiemensToolModel> 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<FamilyModel> 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<PositionModel> 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<ShankModel> 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<MountedToolModel> 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<ShankModel> multiTools, out List<SiemensToolModel> 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();
|
||||
}
|
||||
|
||||
@@ -171,6 +171,7 @@
|
||||
<Compile Include="Controllers\WebApi\AuthorizationController.cs" />
|
||||
<Compile Include="Controllers\WebApi\ConfigurationController.cs" />
|
||||
<Compile Include="Controllers\WebApi\LanguageController.cs" />
|
||||
<Compile Include="Controllers\WebApi\MaintenanceController.cs" />
|
||||
<Compile Include="Controllers\WebApi\ToolTableController.cs" />
|
||||
<Compile Include="Controllers\WebApi\UserController.cs" />
|
||||
<Compile Include="Controllers\WebApi\NcApiController.cs" />
|
||||
|
||||
Reference in New Issue
Block a user