Fix osai file writing

Testing transaction
This commit is contained in:
Lucio Maranta
2018-07-17 14:36:53 +02:00
parent 5e81d377fd
commit a2f7a97485
6 changed files with 219 additions and 64 deletions
Binary file not shown.
@@ -9,7 +9,7 @@ namespace Step.Database.Controllers
{
public class NcToolManagerController : IDisposable
{
private DatabaseContext dbCtx;
public DatabaseContext dbCtx;
public NcToolManagerController()
{
@@ -319,7 +319,6 @@ namespace Step.Database.Controllers
public void DeleteShank(DbNcShankModel shank)
{
dbCtx.Shanks.Attach(shank);
dbCtx.Shanks.Remove(shank);
dbCtx.SaveChanges();
+1 -13
View File
@@ -28,10 +28,9 @@ namespace Step.Database
public DbSet<PerformedMaintenanceModel> PerformedMaintenances { get; set; }
public DbSet<MaintenanceNoteModel> MaintenancesNotes { get; set; }
public DbSet<MaintenanceFileModel> MaintenanceFiles { get; set; }
// Tool manager
public DbSet<DbNcFamilyModel> Families { get; set; }
public DbSet<DbNcShankModel> Shanks { get; set; }
// public DbSet<NcOffsetModel> Offsets { get; set; }
public DbSet<DbNcToolModel> Tools { get; set; }
public DbSet<DbNcMagazinePositionModel> MagazinePositions { get; set; }
@@ -40,17 +39,6 @@ namespace Step.Database
// public static string CONNECTION_STRING = "Server = " + ServerStartupConfig.DatabaseAddress + "; Database=" + DATABASE_NAME +";Uid="+ DATABASE_USER +";Pwd="+ DATABASE_PWD +";";
//protected override void OnModelCreating(DbModelBuilder modelBuilder)
//{
// modelBuilder.Entity<NcToolModel>()
// .HasOptional(e => e.Shank)
// .WithMany()
// .HasForeignKey(e => e.ShankId)
// .WillCascadeOnDelete(false);
// base.OnModelCreating(modelBuilder);
//}
public DatabaseContext()
: base(CONNECTION_STRING)
{
+193 -40
View File
@@ -861,9 +861,9 @@ namespace Step.NC
using (NcToolManagerController toolsManager = new NcToolManagerController())
{
List<DbNcToolModel> tools = toolsManager.FindToolsWithDependencies();
List<DbNcToolModel> tools = toolsManager.FindToolsWithDependencies();
foreach(DbNcToolModel tool in tools)
foreach (DbNcToolModel tool in tools)
{
DTONcToolModel dtoTool = (DTONcToolModel)tool;
@@ -1131,21 +1131,89 @@ namespace Step.NC
}
}
public DTONcToolModel UpdateTool(int toolId, DTONewNcToolModel dtoTool)
public DTONcToolModel UpdateTool(int toolId, DTONewNcToolModel newTool)
{
using (NcToolManagerController toolsManager = new NcToolManagerController())
{
// Update Tool
DbNcToolModel ncTool = toolsManager.UpdateTool(toolId, dtoTool);
DbNcToolModel dbTool = toolsManager.UpdateTool(toolId, newTool);
DTONcToolModel toolWithOffsets = new DTONcToolModel();
DTONcToolModel toolWithOffset = new DTONcToolModel();
// Populate tool offset
GetToolData(ncTool, ref toolWithOffset);
GetToolData(dbTool, ref toolWithOffsets);
return toolWithOffset;
if (dbTool.ShankId != null)
{
DbNcShankModel shank = toolsManager.FindShank(dbTool.ShankId.Value);
if (shank.MagazineId != null)
{
//CmsError cmsError = StopEditData();
//if(cmsError.IsError())
//{
// Console.WriteLine("Ripristino");
//}
// Get mounted shanks
CmsError cmsError = UpdateNcTools(toolsManager);
if (cmsError.IsError())
Console.WriteLine("Ripristino");
else
numericalControl.TOOLS_WStopEditData();
}
}
return toolWithOffsets;
}
}
public void DeleteNcTool(DbNcToolModel tool)
{
using (NcToolManagerController toolsManager = new NcToolManagerController())
{
using (var dbContextTransaction = toolsManager.dbCtx.Database.BeginTransaction())
{
toolsManager.DeleteTool(tool.ToolId);
if (tool.ShankId != null)
{
DbNcShankModel shank = toolsManager.FindShank(tool.ShankId.Value);
if (shank.MagazineId != null)
{
// Get mounted shanks
CmsError cmsError = UpdateNcTools(toolsManager);
if (cmsError.IsError())
Console.WriteLine("Ripristino");
else
numericalControl.TOOLS_WStopEditData();
}
}
dbContextTransaction.Rollback();
}
}
}
private CmsError UpdateNcTools(NcToolManagerController toolsManager)
{
List<NcShankModel> shanks = toolsManager
.FindShanks()
.Where(x => x.MagazineId != null)
.Select(x => (NcShankModel)x)
.ToList();
// Get tools
List<NcToolModel> tools = toolsManager
.FindTools()
.Select(x => (NcToolModel)x)
.Where(x => shanks.Any(y => y.Id == x.ShankId)) // Find only mounted tools
.ToList();
// Update tools
return numericalControl.TOOLS_WUpdateTools(tools);
}
public DTONcFamilyModel AddFamily(DTONewNcFamilyModel family)
{
using (NcToolManagerController toolsManager = new NcToolManagerController())
@@ -1158,10 +1226,59 @@ namespace Step.NC
{
using (NcToolManagerController toolsManager = new NcToolManagerController())
{
return (DTONcFamilyModel)toolsManager.UpdateFamily(familyId, family);
// Update db family
DTONcFamilyModel newFamily = (DTONcFamilyModel)toolsManager.UpdateFamily(familyId, family);
// Update nc families
CmsError cmsError = UpdateNcFamily(toolsManager);
if (cmsError.IsError())
Console.WriteLine("Ripristino");
else
numericalControl.TOOLS_WStopEditData();
return newFamily;
}
}
public void DeleteNcFamily(DbNcFamilyModel family)
{
using (NcToolManagerController toolsManager = new NcToolManagerController())
{
toolsManager.DeleteFamily(family);
// Update nc families
CmsError cmsError = UpdateNcFamily(toolsManager);
if (cmsError.IsError())
Console.WriteLine("Ripristino");
else
numericalControl.TOOLS_WStopEditData();
}
}
private CmsError UpdateNcFamily(NcToolManagerController toolsManager)
{
// Get mounted shanks
List<NcShankModel> shanks = toolsManager
.FindShanks()
.Where(x => x.MagazineId != null)
.Select(x => (NcShankModel)x)
.ToList();
// Get tools
List<NcToolModel> tools = toolsManager
.FindTools()
.Select(x => (NcToolModel)x)
.Where(x => shanks.Any(y => y.Id == x.ShankId)) // Find only mounted tools
.ToList();
List<NcFamilyModel> families = toolsManager
.FindFamilies()
.Select(x => (NcFamilyModel)x)
.Where(x => tools.Any(y => y.FamilyId == x.Id)) // Find only families of mounted tools
.ToList();
// Update nc families
return numericalControl.TOOLS_WUpdateFamilies(families);
}
public DTONcShankModel AddShank(DTONewNcShankModel shank)
{
using (NcToolManagerController toolsManager = new NcToolManagerController())
@@ -1174,39 +1291,70 @@ namespace Step.NC
{
using (NcToolManagerController toolsManager = new NcToolManagerController())
{
return (DTONcShankModel)toolsManager.UpdateShank(shankId, dtoShank);
// Update db data
DTONcShankModel shank = (DTONcShankModel)toolsManager.UpdateShank(shankId, dtoShank);
if (shank.MagazineId != null)
{
// Update nc data
CmsError cmsError = UpdateNcShank(toolsManager);
if (cmsError.IsError())
Console.WriteLine("Ripristino");
else
numericalControl.TOOLS_WStopEditData();
}
return shank;
}
}
public void DeleteNcShank(int shankId)
{
using (NcToolManagerController toolsManager = new NcToolManagerController())
{
// Delete database shank
toolsManager.DeleteShank(shankId);
// Update nc data
CmsError cmsError = UpdateNcShank(toolsManager);
if (cmsError.IsError())
Console.WriteLine("Ripristino");
else
numericalControl.TOOLS_WStopEditData();
}
}
private CmsError UpdateNcShank(NcToolManagerController toolsManager)
{
// Get mounted shanks
List<NcShankModel> shanks = toolsManager
.FindShanks()
.Where(x => x.MagazineId != null)
.Select(x => (NcShankModel)x)
.ToList();
// Update nc data
return numericalControl.TOOLS_WUpdateShanks(shanks);
}
public DTONcMagazinePositionModel UpdateMagazinePosition(DbNcMagazinePositionModel dbPos, DTONcMagazinePositionModel dtoPos)
{
using (NcToolManagerController toolsManager = new NcToolManagerController())
{
return (DTONcMagazinePositionModel)toolsManager.UpdatePosition(dbPos, dtoPos);
}
}
public void DeleteNcTool(DbNcToolModel tool)
{
using (NcToolManagerController toolsManager = new NcToolManagerController())
{
toolsManager.DeleteTool(tool);
}
}
DTONcMagazinePositionModel magPos = (DTONcMagazinePositionModel)toolsManager.UpdatePosition(dbPos, dtoPos);
public void DeleteNcShank(DbNcShankModel shank)
{
using (NcToolManagerController toolsManager = new NcToolManagerController())
{
toolsManager.DeleteShank(shank);
}
}
// Get magazine positions
List<NcMagazinePositionModel> positions = toolsManager.FindPositions()
.Select(x => (NcMagazinePositionModel)x)
.ToList();
public void DeleteNcFamily(DbNcFamilyModel family)
{
using (NcToolManagerController toolsManager = new NcToolManagerController())
{
toolsManager.DeleteFamily(family);
// Update nc data
CmsError cmsError = numericalControl.TOOLS_WUpdateMagazinePositions(positions);
if (cmsError.IsError())
Console.WriteLine("Ripristino");
else
numericalControl.TOOLS_WStopEditData();
return magPos;
}
}
@@ -1247,12 +1395,17 @@ namespace Step.NC
}
}
public CmsError StartEdit()
public CmsError StartEditData()
{
return numericalControl.TOOLS_WStartEdit();
return numericalControl.TOOLS_WStartEditData();
}
public CmsError StopEdit()
public CmsError StartEditTooling(int magazineId)
{
return numericalControl.TOOLS_WStartEditTooling(magazineId);
}
public CmsError StopEditTooling()
{
using (NcToolManagerController toolsManager = new NcToolManagerController())
{
@@ -1264,7 +1417,7 @@ namespace Step.NC
.Where(x => x.MagazineId != null)
.Select(x => (NcShankModel)x)
.ToList();
CmsError cmsError = numericalControl.TOOLS_WUpdateShanks(shanks);
if (cmsError.IsError())
return cmsError;
@@ -1277,12 +1430,12 @@ namespace Step.NC
if (cmsError.IsError())
return cmsError;
// Get tools
// Get tools
List<NcToolModel> tools = toolsManager
.FindTools()
.Select(x => (NcToolModel)x)
.Where(x => shanks.Any(y => y.Id == x.ShankId)) // Find only mounted tools
.ToList();
.Where(x => shanks.Any(y => y.Id == x.ShankId)) // Find only mounted tools
.ToList();
// Update tools
cmsError = numericalControl.TOOLS_WUpdateTools(tools);
@@ -1302,7 +1455,7 @@ namespace Step.NC
Console.WriteLine(sw.ElapsedMilliseconds);
}
return numericalControl.TOOLS_WStopEdit();
return numericalControl.TOOLS_WStopEditData();
}
#endregion Osai/Fanuc Tools
+1
View File
@@ -36,6 +36,7 @@
<SpecificVersion>False</SpecificVersion>
<HintPath>..\Libs\CMS_CORE_Library.dll</HintPath>
</Reference>
<Reference Include="EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
@@ -128,7 +128,7 @@ namespace Step.Controllers.WebApi
// If option is active find & delete tool shank
DbNcShankModel shank = toolsManager.FindShank(tool.ShankId.Value);
ncHandler.DeleteNcShank(shank);
ncHandler.DeleteNcShank(shank.ShankId);
}
ncHandler.DeleteNcTool(tool);
@@ -206,7 +206,7 @@ namespace Step.Controllers.WebApi
{
ncHandler.Connect();
ncHandler.DeleteNcShank(shank);
ncHandler.DeleteNcShank(shank.ShankId);
return Ok();
}
@@ -471,14 +471,14 @@ namespace Step.Controllers.WebApi
}
}
[Route("start_edit"), HttpPut]
public IHttpActionResult StartEdit()
[Route("start_edit_data"), HttpPut]
public IHttpActionResult StartEditData()
{
using (NcHandler ncHandler = new NcHandler())
{
ncHandler.Connect();
CmsError cmsError = ncHandler.StartEdit();
CmsError cmsError = ncHandler.StartEditData();
if (cmsError.IsError())
return BadRequest(cmsError.localizationKey);
@@ -487,19 +487,33 @@ namespace Step.Controllers.WebApi
}
}
[Route("stop_edit"), HttpPut]
[Route("start_edit_tooling/{magazineId:int}"), HttpPut]
public IHttpActionResult StartEditTooling(int magazineId)
{
using (NcHandler ncHandler = new NcHandler())
{
ncHandler.Connect();
CmsError cmsError = ncHandler.StartEditTooling(magazineId);
if (cmsError.IsError())
return BadRequest(cmsError.localizationKey);
return Ok();
}
}
[Route("stop_edit_data"), HttpPut]
public IHttpActionResult StopEdit()
{
using (NcHandler ncHandler = new NcHandler())
{
ncHandler.Connect();
CmsError cmsError = ncHandler.StopEdit();
CmsError cmsError = ncHandler.StopEditTooling();
if (cmsError.IsError())
return BadRequest(cmsError.localizationKey);
return Ok();
}
}