Compare commits
17 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 855762095f | |||
| 733fd4dc09 | |||
| 71a4985392 | |||
| 0d4d9a4520 | |||
| 622439de62 | |||
| 618d02d7c6 | |||
| d37df9d0f4 | |||
| 011673510d | |||
| ff52b9a79b | |||
| 85a5200e6b | |||
| 0e665ef1b0 | |||
| 2b99df6238 | |||
| 39ea11a8c4 | |||
| 79c7e3e536 | |||
| e4eb264abb | |||
| 500aa2eacf | |||
| b55810f235 |
@@ -44,6 +44,7 @@ Public Module ConstIni
|
||||
Public Const K_DATADIR As String = "DataDir"
|
||||
Public Const K_ENABLEEDIT As String = "EnableEdit"
|
||||
Public Const K_FASTPRODUCE As String = "FastProduce"
|
||||
Public Const K_ADDPROJ As String = "AddProj"
|
||||
|
||||
'Public Const S_LANGUAGES As String = "Languages"
|
||||
'Public Const K_LANGUAGE As String = "Language"
|
||||
|
||||
@@ -35,5 +35,5 @@ Imports System.Runtime.InteropServices
|
||||
' by using the '*' as shown below:
|
||||
' <Assembly: AssemblyVersion("1.0.*")>
|
||||
|
||||
<Assembly: AssemblyVersion("2.5.4.1")>
|
||||
<Assembly: AssemblyFileVersion("2.5.4.1")>
|
||||
<Assembly: AssemblyVersion("2.5.5.2")>
|
||||
<Assembly: AssemblyFileVersion("2.5.5.2")>
|
||||
|
||||
@@ -10,6 +10,9 @@ Public Class ProdFileM
|
||||
Return m_nProjIdList
|
||||
End Get
|
||||
End Property
|
||||
Public Sub SetProjIdList(value As List(Of Integer))
|
||||
m_nProjIdList = value
|
||||
End Sub
|
||||
|
||||
Protected m_sName As String
|
||||
Public ReadOnly Property sName As String
|
||||
|
||||
@@ -24,7 +24,7 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
||||
/// <param name="corePart"></param>
|
||||
/// <param name="currProjDbId"></param>
|
||||
/// <returns></returns>
|
||||
public static BTLPartModel ConvertFromCore(Core.BTLPartM corePart, int currProjDbId)
|
||||
public BTLPartModel ConvertFromCore(Core.BTLPartM corePart, int currProjDbId)
|
||||
{
|
||||
BTLPartModel answ = new BTLPartModel();
|
||||
if (corePart != null)
|
||||
|
||||
@@ -23,7 +23,7 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
||||
/// </summary>
|
||||
/// <param name="coreMacLog"></param>
|
||||
/// <returns></returns>
|
||||
public static LogMachineModel ConvertFromCore(Core.MachLog coreMacLog)
|
||||
public LogMachineModel ConvertFromCore(Core.MachLog coreMacLog)
|
||||
{
|
||||
LogMachineModel answ = new LogMachineModel();
|
||||
if (coreMacLog != null)
|
||||
@@ -53,7 +53,7 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
||||
/// </summary>
|
||||
/// <param name="dbLog"></param>
|
||||
/// <returns></returns>
|
||||
public static Core.MachLog ConvertToCore(LogMachineModel dbLog)
|
||||
public Core.MachLog ConvertToCore(LogMachineModel dbLog)
|
||||
{
|
||||
var newRecord = Core.MachLog.CreateMachLog(dbLog.AlarmCode, dbLog.AlarmDatetime, dbLog.AlarmMessage, dbLog.AlarmOperation, dbLog.AlarmType, dbLog.CommandExecutedCorrectly, dbLog.CommandState, dbLog.CommandType, dbLog.Description, dbLog.NewOpState, dbLog.ResultType, dbLog.VarAddress, dbLog.VarValue);
|
||||
return newRecord;
|
||||
|
||||
@@ -8,12 +8,6 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
||||
{
|
||||
public class MachGroupController : IDisposable
|
||||
{
|
||||
#region Public Fields
|
||||
|
||||
public static MachGroupController man = new MachGroupController();
|
||||
|
||||
#endregion Public Fields
|
||||
|
||||
#region Public Constructors
|
||||
|
||||
public MachGroupController()
|
||||
@@ -30,7 +24,7 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
||||
/// <param name="coreMachGroup"></param>
|
||||
/// <param name="currProdDbId"></param>
|
||||
/// <returns></returns>
|
||||
public static MachGroupModel ConvertFromCore(Core.MyMachGroupM coreMachGroup, int currProdDbId)
|
||||
public MachGroupModel ConvertFromCore(Core.MyMachGroupM coreMachGroup, int currProdDbId)
|
||||
{
|
||||
MachGroupModel answ = new MachGroupModel();
|
||||
if (coreMachGroup != null)
|
||||
@@ -63,6 +57,8 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
||||
{
|
||||
ProdModel currData = new ProdModel();
|
||||
List<PartModel> PartList2Add = new List<PartModel>();
|
||||
var myPartCtrl = new PartController();
|
||||
var myStatusMapCtrl = new StatusMapController();
|
||||
using (DatabaseContext localDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
|
||||
{
|
||||
// Recupero il PROD nel contesto
|
||||
@@ -72,7 +68,8 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
||||
.SingleOrDefault();
|
||||
try
|
||||
{
|
||||
var convCurrMG = MachGroupController.ConvertFromCore(newMachGroup, currData.ProdDbId);
|
||||
var locMGCtrl = new MachGroupController();
|
||||
var convCurrMG = locMGCtrl.ConvertFromCore(newMachGroup, currData.ProdDbId);
|
||||
|
||||
convCurrMG.ProdIndex = 1;
|
||||
|
||||
@@ -81,15 +78,25 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
||||
// Commit changes
|
||||
localDbCtx.SaveChanges();
|
||||
|
||||
int MachGroupDbId = MachGroupController.man.FindByMachGroupId(ProdId, newMachGroup.Id).MachGroupDbId;
|
||||
int MachGroupDbId = FindByMachGroupId(ProdId, newMachGroup.Id).MachGroupDbId;
|
||||
// 2023.05.10 leggo elenco part in una sola volta
|
||||
|
||||
var currMgPartList = localDbCtx
|
||||
.PartList
|
||||
.Where(x => x.MachGroup.Prod.ProdId == ProdId && x.MachGroup.MachGroupId == newMachGroup.Id)
|
||||
.ToList();
|
||||
// verifico se uguali o meno...
|
||||
foreach (var currPartM in newMachGroup.PartMList)
|
||||
{
|
||||
var currPart = localDbCtx
|
||||
.PartList
|
||||
.Where(x => x.MachGroup.Prod.ProdId == ProdId && x.MachGroup.MachGroupId == newMachGroup.Id && x.PartId == currPartM.nPartId)
|
||||
//var currPart = localDbCtx
|
||||
// .PartList
|
||||
// .Where(x => x.MachGroup.Prod.ProdId == ProdId && x.MachGroup.MachGroupId == newMachGroup.Id && x.PartId == currPartM.nPartId)
|
||||
// .SingleOrDefault();
|
||||
var currPart = currMgPartList
|
||||
.Where(x => x.PartId == currPartM.nPartId)
|
||||
.SingleOrDefault();
|
||||
var convCurrPartM = PartController.ConvertFromCore(currPartM, MachGroupDbId);
|
||||
|
||||
var convCurrPartM = myPartCtrl.ConvertFromCore(currPartM, MachGroupDbId);
|
||||
if (currPart != null)
|
||||
{
|
||||
// se non identico x equality limitata a ViewOptim...
|
||||
@@ -125,7 +132,7 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
||||
// Commit changes
|
||||
localDbCtx.SaveChanges();
|
||||
// aggiorno info sullo status
|
||||
StatusMapController.man.UpdateAction("", ProdId, newMachGroup.Id, Core.StatusMapItemType.MachGroup, Core.StatusMapOpType.MachGroupAdd, "");
|
||||
myStatusMapCtrl.UpdateAction("", ProdId, newMachGroup.Id, Core.StatusMapItemType.MachGroup, Core.StatusMapOpType.MachGroupAdd, "");
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
@@ -177,6 +184,7 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
||||
bool done = false;
|
||||
using (DatabaseContext localDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
|
||||
{
|
||||
var myStatusMapCtrl = new StatusMapController();
|
||||
// inizio eliminando le part
|
||||
var parts2del = localDbCtx
|
||||
.PartList
|
||||
@@ -197,7 +205,7 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
||||
localDbCtx.SaveChanges();
|
||||
|
||||
// registro modifica StatusMap
|
||||
StatusMapController.man.UpdateAction(MG2Del.SupervisorId, ProdId, MG2Del.MachGroupId, Core.StatusMapItemType.MachGroup, Core.StatusMapOpType.MachGroupRem, "");
|
||||
myStatusMapCtrl.UpdateAction(MG2Del.SupervisorId, ProdId, MG2Del.MachGroupId, Core.StatusMapItemType.MachGroup, Core.StatusMapOpType.MachGroupRem, "");
|
||||
|
||||
done = true;
|
||||
}
|
||||
@@ -209,7 +217,7 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
||||
}
|
||||
|
||||
// se fatto aggiorno info sullo status
|
||||
StatusMapController.man.UpdateAction("", ProdId, MachGroupId, Core.StatusMapItemType.MachGroup, Core.StatusMapOpType.MachGroupRem, "");
|
||||
myStatusMapCtrl.UpdateAction("", ProdId, MachGroupId, Core.StatusMapItemType.MachGroup, Core.StatusMapOpType.MachGroupRem, "");
|
||||
}
|
||||
return done;
|
||||
}
|
||||
@@ -393,6 +401,7 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
||||
bool done = false;
|
||||
using (DatabaseContext localDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
|
||||
{
|
||||
var myStatusMapCtrl = new StatusMapController();
|
||||
try
|
||||
{
|
||||
// aggiorno
|
||||
@@ -408,7 +417,7 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
||||
// Commit changes
|
||||
localDbCtx.SaveChanges();
|
||||
// aggiorno info sullo status
|
||||
StatusMapController.man.UpdateAction("", ProdId, MachGroupId, Core.StatusMapItemType.MachGroup, Core.StatusMapOpType.MachGroupRemovedFromSupervisor, "");
|
||||
myStatusMapCtrl.UpdateAction("", ProdId, MachGroupId, Core.StatusMapItemType.MachGroup, Core.StatusMapOpType.MachGroupRemovedFromSupervisor, "");
|
||||
|
||||
done = true;
|
||||
}
|
||||
@@ -441,6 +450,7 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
||||
bool done = false;
|
||||
using (DatabaseContext localDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
|
||||
{
|
||||
var myStatusMapCtrl = new StatusMapController();
|
||||
try
|
||||
{
|
||||
// aggiorno
|
||||
@@ -455,7 +465,7 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
||||
localDbCtx.SaveChanges();
|
||||
done = true;
|
||||
// aggiorno info sullo status
|
||||
StatusMapController.man.UpdateAction("", ProdId, MachGroupId, Core.StatusMapItemType.MachGroup, Core.StatusMapOpType.MachGroupNeedRedo, Value);
|
||||
myStatusMapCtrl.UpdateAction("", ProdId, MachGroupId, Core.StatusMapItemType.MachGroup, Core.StatusMapOpType.MachGroupNeedRedo, Value);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -484,6 +494,7 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
||||
bool done = false;
|
||||
using (DatabaseContext localDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
|
||||
{
|
||||
var myStatusMapCtrl = new StatusMapController();
|
||||
try
|
||||
{
|
||||
var item2update = localDbCtx
|
||||
@@ -499,7 +510,7 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
||||
localDbCtx.SaveChanges();
|
||||
done = true;
|
||||
// aggiorno info sullo status
|
||||
StatusMapController.man.UpdateAction("", updItem.Prod.ProdId, updItem.MachGroupId, Core.StatusMapItemType.MachGroup, Core.StatusMapOpType.MachGroupMod, "");
|
||||
myStatusMapCtrl.UpdateAction("", updItem.Prod.ProdId, updItem.MachGroupId, Core.StatusMapItemType.MachGroup, Core.StatusMapOpType.MachGroupMod, "");
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -530,6 +541,7 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
||||
bool done = false;
|
||||
using (DatabaseContext localDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
|
||||
{
|
||||
var myStatusMapCtrl = new StatusMapController();
|
||||
try
|
||||
{
|
||||
// aggiorno
|
||||
@@ -544,7 +556,7 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
||||
localDbCtx.SaveChanges();
|
||||
done = true;
|
||||
// aggiorno info sullo status
|
||||
StatusMapController.man.UpdateAction("", ProdId, MachGroupId, Core.StatusMapItemType.MachGroup, DtEnd == DateTime.MinValue ? Core.StatusMapOpType.ResetPartEnd : Core.StatusMapOpType.PartEnd, "");
|
||||
myStatusMapCtrl.UpdateAction("", ProdId, MachGroupId, Core.StatusMapItemType.MachGroup, DtEnd == DateTime.MinValue ? Core.StatusMapOpType.ResetPartEnd : Core.StatusMapOpType.PartEnd, "");
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -619,6 +631,7 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
||||
bool done = false;
|
||||
using (DatabaseContext localDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
|
||||
{
|
||||
var myStatusMapCtrl = new StatusMapController();
|
||||
try
|
||||
{
|
||||
// aggiorno
|
||||
@@ -633,7 +646,7 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
||||
localDbCtx.SaveChanges();
|
||||
done = true;
|
||||
// aggiorno info sullo status
|
||||
StatusMapController.man.UpdateAction("", ProdId, MachGroupId, Core.StatusMapItemType.MachGroup, DtStart == DateTime.MinValue ? Core.StatusMapOpType.ResetPartStart : Core.StatusMapOpType.PartStart, "");
|
||||
myStatusMapCtrl.UpdateAction("", ProdId, MachGroupId, Core.StatusMapItemType.MachGroup, DtStart == DateTime.MinValue ? Core.StatusMapOpType.ResetPartStart : Core.StatusMapOpType.PartStart, "");
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -665,6 +678,7 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
||||
bool done = false;
|
||||
using (DatabaseContext localDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
|
||||
{
|
||||
var myStatusMapCtrl = new StatusMapController();
|
||||
try
|
||||
{
|
||||
// aggiorno
|
||||
@@ -680,7 +694,7 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
||||
localDbCtx.SaveChanges();
|
||||
done = true;
|
||||
// aggiorno info sullo status
|
||||
StatusMapController.man.UpdateAction("", ProdId, MachGroupId, Core.StatusMapItemType.MachGroup, Core.StatusMapOpType.MachGroupMod, "");
|
||||
myStatusMapCtrl.UpdateAction("", ProdId, MachGroupId, Core.StatusMapItemType.MachGroup, Core.StatusMapOpType.MachGroupMod, "");
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -710,6 +724,7 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
||||
bool done = false;
|
||||
using (DatabaseContext localDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
|
||||
{
|
||||
var myStatusMapCtrl = new StatusMapController();
|
||||
try
|
||||
{
|
||||
// aggiorno
|
||||
@@ -724,7 +739,7 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
||||
localDbCtx.SaveChanges();
|
||||
done = true;
|
||||
// aggiorno info sullo status
|
||||
StatusMapController.man.UpdateAction("", ProdId, MachGroupId, Core.StatusMapItemType.MachGroup, Core.StatusMapOpType.MachGroupMod, "");
|
||||
myStatusMapCtrl.UpdateAction("", ProdId, MachGroupId, Core.StatusMapItemType.MachGroup, Core.StatusMapOpType.MachGroupMod, "");
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -750,6 +765,7 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
||||
bool done = false;
|
||||
using (DatabaseContext localDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
|
||||
{
|
||||
var myStatusMapCtrl = new StatusMapController();
|
||||
try
|
||||
{
|
||||
// aggiorno
|
||||
@@ -767,7 +783,7 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
||||
done = true;
|
||||
|
||||
// aggiorno info sullo status
|
||||
StatusMapController.man.UpdateAction("", ProdId, MachGroupId, Core.StatusMapItemType.MachGroup, Core.StatusMapOpType.MachGroupAssignedToSupervisor, "");
|
||||
myStatusMapCtrl.UpdateAction("", ProdId, MachGroupId, Core.StatusMapItemType.MachGroup, Core.StatusMapOpType.MachGroupAssignedToSupervisor, "");
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -7,17 +7,10 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
||||
{
|
||||
public class PartController : IDisposable
|
||||
{
|
||||
#region Public Fields
|
||||
|
||||
public static PartController man = new PartController();
|
||||
|
||||
#endregion Public Fields
|
||||
|
||||
#region Public Constructors
|
||||
|
||||
public PartController()
|
||||
{
|
||||
}
|
||||
{ }
|
||||
|
||||
#endregion Public Constructors
|
||||
|
||||
@@ -29,12 +22,12 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
||||
/// <param name="corePart"></param>
|
||||
/// <param name="currMachGroupDbId"></param>
|
||||
/// <returns></returns>
|
||||
public static PartModel ConvertFromCore(Core.PartM corePart, int currMachGroupDbId)
|
||||
public PartModel ConvertFromCore(Core.PartM corePart, int currMachGroupDbId)
|
||||
{
|
||||
PartModel answ = new PartModel();
|
||||
if (corePart != null)
|
||||
{
|
||||
int BTLPartId = man.FindBtlPartByBPI(corePart.nProjId, corePart.nBTLPartId);
|
||||
int BTLPartId = FindBtlPartByBPI(corePart.nProjId, corePart.nBTLPartId);
|
||||
answ = new PartModel()
|
||||
{
|
||||
PartId = corePart.nPartId,
|
||||
@@ -74,6 +67,7 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
||||
bool done = false;
|
||||
using (DatabaseContext localDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
|
||||
{
|
||||
var myStatusMapCtrl = new StatusMapController();
|
||||
var item2del = localDbCtx
|
||||
.PartList
|
||||
.Where(x => x.MachGroup.Prod.ProdId == ProdId && x.MachGroup.MachGroupId == MachGroupId && x.PartId == PartId)
|
||||
@@ -89,7 +83,7 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
||||
localDbCtx.SaveChanges();
|
||||
done = true;
|
||||
// aggiorno info sullo status
|
||||
StatusMapController.man.UpdateAction("", ProdId, MachGroupId, Core.StatusMapItemType.MachGroup, Core.StatusMapOpType.MachGroupMod, "");
|
||||
myStatusMapCtrl.UpdateAction("", ProdId, MachGroupId, Core.StatusMapItemType.MachGroup, Core.StatusMapOpType.MachGroupMod, "");
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
@@ -229,6 +223,7 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
||||
bool done = false;
|
||||
using (DatabaseContext locallocalDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
|
||||
{
|
||||
var myStatusMapCtrl = new StatusMapController();
|
||||
var item2upd = locallocalDbCtx
|
||||
.PartList
|
||||
.Where(x => x.PartDbId == updItem.PartDbId)
|
||||
@@ -248,7 +243,7 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
||||
locallocalDbCtx.SaveChanges();
|
||||
done = true;
|
||||
// aggiorno info sullo status
|
||||
StatusMapController.man.UpdateAction("", updItem.MachGroup.Prod.ProdId, updItem.PartId, Core.StatusMapItemType.Part, Core.StatusMapOpType.MachGroupMod, "");
|
||||
myStatusMapCtrl.UpdateAction("", updItem.MachGroup.Prod.ProdId, updItem.PartId, Core.StatusMapItemType.Part, Core.StatusMapOpType.MachGroupMod, "");
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
@@ -278,6 +273,7 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
||||
bool done = false;
|
||||
using (DatabaseContext locallocalDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
|
||||
{
|
||||
var myStatusMapCtrl = new StatusMapController();
|
||||
try
|
||||
{
|
||||
// aggiorno
|
||||
@@ -293,7 +289,7 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
||||
locallocalDbCtx.SaveChanges();
|
||||
done = true;
|
||||
// aggiorno info sullo status
|
||||
StatusMapController.man.UpdateAction("", ProdId, PartId, Core.StatusMapItemType.Part, DtEnd == DateTime.MinValue ? Core.StatusMapOpType.ResetPartEnd : Core.StatusMapOpType.PartEnd, "");
|
||||
myStatusMapCtrl.UpdateAction("", ProdId, PartId, Core.StatusMapItemType.Part, DtEnd == DateTime.MinValue ? Core.StatusMapOpType.ResetPartEnd : Core.StatusMapOpType.PartEnd, "");
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -323,6 +319,7 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
||||
bool done = false;
|
||||
using (DatabaseContext locallocalDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
|
||||
{
|
||||
var myStatusMapCtrl = new StatusMapController();
|
||||
try
|
||||
{
|
||||
// aggiorno
|
||||
@@ -337,7 +334,7 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
||||
locallocalDbCtx.SaveChanges();
|
||||
done = true;
|
||||
// aggiorno info sullo status
|
||||
StatusMapController.man.UpdateAction("", ProdId, PartId, Core.StatusMapItemType.Part, DtStart == DateTime.MinValue ? Core.StatusMapOpType.ResetPartStart : Core.StatusMapOpType.PartStart, "");
|
||||
myStatusMapCtrl.UpdateAction("", ProdId, PartId, Core.StatusMapItemType.Part, DtStart == DateTime.MinValue ? Core.StatusMapOpType.ResetPartStart : Core.StatusMapOpType.PartStart, "");
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -368,6 +365,7 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
||||
bool done = false;
|
||||
using (DatabaseContext locallocalDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
|
||||
{
|
||||
var myStatusMapCtrl = new StatusMapController();
|
||||
try
|
||||
{
|
||||
// aggiorno
|
||||
@@ -382,7 +380,7 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
||||
locallocalDbCtx.SaveChanges();
|
||||
done = true;
|
||||
// aggiorno info sullo status
|
||||
StatusMapController.man.UpdateAction("", ProdId, PartId, Core.StatusMapItemType.Part, newState == Core.ItemState.Scrapped ? Core.StatusMapOpType.SetPartScrapped : Core.StatusMapOpType.MachGroupMod, "");
|
||||
myStatusMapCtrl.UpdateAction("", ProdId, PartId, Core.StatusMapItemType.Part, newState == Core.ItemState.Scrapped ? Core.StatusMapOpType.SetPartScrapped : Core.StatusMapOpType.MachGroupMod, "");
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
using EgtBEAMWALL.DataLayer.DatabaseModels;
|
||||
using NLog;
|
||||
using NLog.LayoutRenderers;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
@@ -9,12 +10,6 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
||||
{
|
||||
public class ProdController : IDisposable
|
||||
{
|
||||
#region Public Fields
|
||||
|
||||
public static ProdController man = new ProdController();
|
||||
|
||||
#endregion Public Fields
|
||||
|
||||
#region Public Constructors
|
||||
|
||||
public ProdController()
|
||||
@@ -420,6 +415,7 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
||||
ProdModel currData = new ProdModel();
|
||||
using (DatabaseContext localDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
|
||||
{
|
||||
var myStatusMapCtrl = new StatusMapController();
|
||||
try
|
||||
{
|
||||
// Recupero il PROD nel contesto DB attuale
|
||||
@@ -435,11 +431,13 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
||||
|
||||
List<Core.MyMachGroupM> MachGroupList2Add = new List<Core.MyMachGroupM>();
|
||||
List<PartModel> PartList2Add = new List<PartModel>();
|
||||
List<PartModel> PartList2Rem = new List<PartModel>();
|
||||
var logMGCtrl = new MachGroupController();
|
||||
// cerco le MG esistenti --> aggiorno
|
||||
foreach (var item in MachGroupList)
|
||||
{
|
||||
var currMG = MachGroupController.man.FindByMachGroupId(ProdId, item.Id);
|
||||
var convCurrMG = MachGroupController.ConvertFromCore(item, currData.ProdDbId);
|
||||
var currMG = logMGCtrl.FindByMachGroupId(ProdId, item.Id);
|
||||
var convCurrMG = logMGCtrl.ConvertFromCore(item, currData.ProdDbId);
|
||||
if (currMG != null)
|
||||
{
|
||||
// se non identico x equality limitata a ViewOptim...
|
||||
@@ -454,14 +452,14 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
||||
// salvo
|
||||
localDbCtx.SaveChanges();
|
||||
// registro modifica StatusMap
|
||||
StatusMapController.man.UpdateAction(currMG.SupervisorId, ProdId, currMG.MachGroupId, Core.StatusMapItemType.MachGroup, Core.StatusMapOpType.MachGroupMod, "");
|
||||
myStatusMapCtrl.UpdateAction(currMG.SupervisorId, ProdId, currMG.MachGroupId, Core.StatusMapItemType.MachGroup, Core.StatusMapOpType.MachGroupMod, "");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
itemsMG2Add.Add(convCurrMG);
|
||||
// registro modifica StatusMap
|
||||
StatusMapController.man.UpdateAction("", ProdId, item.Id, Core.StatusMapItemType.MachGroup, Core.StatusMapOpType.MachGroupAdd, "");
|
||||
myStatusMapCtrl.UpdateAction("", ProdId, item.Id, Core.StatusMapItemType.MachGroup, Core.StatusMapOpType.MachGroupAdd, "");
|
||||
}
|
||||
}
|
||||
// aggiungo MachGroup
|
||||
@@ -472,17 +470,25 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
||||
// verifico di nuovo l'elenco delle MG x le relative PART...
|
||||
foreach (var item in MachGroupList)
|
||||
{
|
||||
var currMG = MachGroupController.man.FindByMachGroupId(ProdId, item.Id);
|
||||
var currMG = logMGCtrl.FindByMachGroupId(ProdId, item.Id);
|
||||
int MachGroupDbId = currMG.MachGroupDbId;
|
||||
bool modMg = false;
|
||||
// 2023.05.10: recupero TUTTE le part del MachGroup e poi lavoro...
|
||||
var currMgPartList = localDbCtx
|
||||
.PartList
|
||||
.Where(x => x.MachGroup.Prod.ProdId == ProdId && x.MachGroup.MachGroupId == item.Id)
|
||||
.ToList();
|
||||
// preparo elenco PartList x eventuale rimozione
|
||||
var currPartList2Rem = new List<PartModel>();
|
||||
currPartList2Rem.AddRange(currMgPartList);
|
||||
// verifico se uguali o meno...
|
||||
foreach (var currPartM in item.PartMList)
|
||||
{
|
||||
var currPart = localDbCtx
|
||||
.PartList
|
||||
.Where(x => x.MachGroup.Prod.ProdId == ProdId && x.MachGroup.MachGroupId == item.Id && x.PartId == currPartM.nPartId)
|
||||
.SingleOrDefault();
|
||||
var convCurrPartM = PartController.ConvertFromCore(currPartM, MachGroupDbId);
|
||||
var myPartCtrl = new PartController();
|
||||
var currPart = currMgPartList
|
||||
.Where(x => x.PartId == currPartM.nPartId)
|
||||
.SingleOrDefault();
|
||||
var convCurrPartM = myPartCtrl.ConvertFromCore(currPartM, MachGroupDbId);
|
||||
if (currPart != null)
|
||||
{
|
||||
// se non identico x equality limitata a ViewOptim...
|
||||
@@ -497,10 +503,14 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
||||
currPart.ROT = convCurrPartM.ROT;
|
||||
currPart.PDN = convCurrPartM.PDN;
|
||||
currPart.NAM = convCurrPartM.NAM;
|
||||
// aggiorno anche il BtlPartId
|
||||
currPart.BTLPartDbId = convCurrPartM.BTLPartDbId;
|
||||
// salvo
|
||||
localDbCtx.SaveChanges();
|
||||
modMg = true;
|
||||
}
|
||||
// tolgo da elenco di rimozione...
|
||||
currPartList2Rem.Remove(currPart);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -511,10 +521,14 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
||||
// verifico se salvare...
|
||||
if (modMg)
|
||||
{
|
||||
StatusMapController.man.UpdateAction(currMG.SupervisorId, ProdId, currMG.MachGroupId, Core.StatusMapItemType.MachGroup, Core.StatusMapOpType.MachGroupMod, "");
|
||||
myStatusMapCtrl.UpdateAction(currMG.SupervisorId, ProdId, currMG.MachGroupId, Core.StatusMapItemType.MachGroup, Core.StatusMapOpType.MachGroupMod, "");
|
||||
}
|
||||
}
|
||||
|
||||
// aggiungo le part esistenti nel MG non ricevute...
|
||||
PartList2Rem.AddRange(currPartList2Rem);
|
||||
}
|
||||
// elimino parti da rimuovere..
|
||||
localDbCtx.PartList.RemoveRange(PartList2Rem);
|
||||
// aggiungo PartList
|
||||
localDbCtx.PartList.AddRange(PartList2Add);
|
||||
// Commit changes
|
||||
@@ -530,7 +544,7 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
||||
// processo i MachGroup eliminati
|
||||
foreach (var item in MgId2rem)
|
||||
{
|
||||
MachGroupController.man.Delete(ProdId, item);
|
||||
logMGCtrl.Delete(ProdId, item);
|
||||
}
|
||||
|
||||
// aggiorno valore isNew a false x PROD
|
||||
@@ -727,7 +741,9 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
||||
|
||||
protected List<int> ProjIdByProd(int ProdId)
|
||||
{
|
||||
return DbManager.obj.ProjCtr.GetByProdAsc(ProdId).Select(y => y.nProjId).ToList();
|
||||
var ProjCtr = new ProjController();
|
||||
return ProjCtr.GetByProdAsc(ProdId).Select(y => y.nProjId).ToList();
|
||||
//return DbManager.obj.ProjCtr.GetByProdAsc(ProdId).Select(y => y.nProjId).ToList();
|
||||
}
|
||||
|
||||
#endregion Protected Methods
|
||||
|
||||
@@ -508,8 +508,9 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
||||
.ToList();
|
||||
if (oldBtlParts != null)
|
||||
{
|
||||
var locBtlCtrl = new BTLPartController();
|
||||
// converto le BtlParts da core --> DB
|
||||
List<BTLPartModel> newBtlParts = BtlPartList.Select(x => BTLPartController.ConvertFromCore(x, currData.ProjDbId)).ToList();
|
||||
List<BTLPartModel> newBtlParts = BtlPartList.Select(x => locBtlCtrl.ConvertFromCore(x, currData.ProjDbId)).ToList();
|
||||
|
||||
try
|
||||
{
|
||||
|
||||
@@ -8,15 +8,6 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
||||
{
|
||||
public class StatusMapController : IDisposable
|
||||
{
|
||||
#region Public Fields
|
||||
|
||||
/// <summary>
|
||||
/// Oggetto statico per gestione chiamate da altre classi
|
||||
/// </summary>
|
||||
public static StatusMapController man = new StatusMapController();
|
||||
|
||||
#endregion Public Fields
|
||||
|
||||
#region Public Constructors
|
||||
|
||||
public StatusMapController()
|
||||
|
||||
@@ -97,6 +97,8 @@ namespace EgtBEAMWALL.DataLayer.DatabaseModels
|
||||
if (!(obj is PartModel item))
|
||||
return false;
|
||||
|
||||
if (BTLPartDbId != item.BTLPartDbId)
|
||||
return false;
|
||||
if (H != item.H)
|
||||
return false;
|
||||
if (L != item.L)
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
using System.IO;
|
||||
using System.Diagnostics;
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Reflection;
|
||||
|
||||
namespace EgtBEAMWALL.DataLayer
|
||||
@@ -70,6 +72,68 @@ namespace EgtBEAMWALL.DataLayer
|
||||
// esecuzione script di install locale
|
||||
return Controllers.DbController.man.refreshViews(DATABASE_NAME);
|
||||
}
|
||||
/// <summary>
|
||||
/// Effettua DUMP del DB dato utente admin + percorso salvataggio
|
||||
/// </summary>
|
||||
/// <param name="outFilePath">Percorso di salvataggio del dump (*.sql)</param>
|
||||
/// <returns></returns>
|
||||
public static bool DumpDB(string mysqlDumpPath, string outFilePath)
|
||||
{
|
||||
bool fatto = false;
|
||||
// aggiungo sql finale
|
||||
if (!outFilePath.EndsWith(".sql"))
|
||||
{
|
||||
outFilePath = $"{outFilePath}.sql";
|
||||
}
|
||||
// esecuzione script x dump del DB
|
||||
string dirPath = Path.GetDirectoryName(outFilePath);
|
||||
if (!Directory.Exists(dirPath))
|
||||
{
|
||||
Directory.CreateDirectory(dirPath);
|
||||
}
|
||||
// se ci fosse già file elimino...
|
||||
if (File.Exists(outFilePath))
|
||||
{
|
||||
File.Delete(outFilePath);
|
||||
}
|
||||
// chiamo script esterno...
|
||||
string callScript = $"\"{mysqlDumpPath}\" -u{DATABASE_USER} -p{DATABASE_PWD} {DATABASE_NAME} > {outFilePath}";
|
||||
ExecuteCommand(callScript);
|
||||
return fatto;
|
||||
}
|
||||
/// <summary>
|
||||
/// Esecuzione di un comando esterno
|
||||
/// </summary>
|
||||
/// <param name="command"></param>
|
||||
public static void ExecuteCommand(string command)
|
||||
{
|
||||
int exitCode;
|
||||
ProcessStartInfo processInfo;
|
||||
Process process;
|
||||
|
||||
processInfo = new ProcessStartInfo("cmd.exe", "/c " + command);
|
||||
processInfo.CreateNoWindow = true;
|
||||
processInfo.UseShellExecute = false;
|
||||
// *** Redirect the output ***
|
||||
processInfo.RedirectStandardError = true;
|
||||
processInfo.RedirectStandardOutput = true;
|
||||
|
||||
process = Process.Start(processInfo);
|
||||
process.WaitForExit();
|
||||
|
||||
// *** Read the streams ***
|
||||
// Warning: This approach can lead to deadlocks, see Edit #2
|
||||
string output = process.StandardOutput.ReadToEnd();
|
||||
string error = process.StandardError.ReadToEnd();
|
||||
|
||||
exitCode = process.ExitCode;
|
||||
|
||||
Console.WriteLine("output>>" + (String.IsNullOrEmpty(output) ? "(none)" : output));
|
||||
Console.WriteLine("error>>" + (String.IsNullOrEmpty(error) ? "(none)" : error));
|
||||
Console.WriteLine("ExitCode: " + exitCode.ToString(), "ExecuteCommand");
|
||||
process.Close();
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Metodo di init standard per DB in rete con Master_Key
|
||||
|
||||
@@ -9,7 +9,6 @@ namespace EgtBEAMWALL.DataLayer
|
||||
{
|
||||
#region Public Fields
|
||||
|
||||
public static DbManager obj = new DbManager();
|
||||
public Controllers.BTLPartController BtlPartCtr = new Controllers.BTLPartController();
|
||||
public Controllers.LogMachineController LogMacCtr = new Controllers.LogMachineController();
|
||||
public Controllers.LogSupportController LogSupCtr = new Controllers.LogSupportController();
|
||||
|
||||
@@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
|
||||
// You can specify all the values or you can default the Build and Revision Numbers
|
||||
// by using the '*' as shown below:
|
||||
// [assembly: AssemblyVersion("1.0.*")]
|
||||
[assembly: AssemblyVersion("2.5.4.1")]
|
||||
[assembly: AssemblyFileVersion("2.5.4.1")]
|
||||
[assembly: AssemblyVersion("2.5.5.2")]
|
||||
[assembly: AssemblyFileVersion("2.5.5.2")]
|
||||
|
||||
@@ -240,8 +240,8 @@ Public Class MainWindowM
|
||||
' Verifico abilitazione nesting automatico
|
||||
m_bAutoNestOption = Not String.IsNullOrWhiteSpace(sNestKey)
|
||||
' Recupero livello e opzioni della chiave
|
||||
Dim bKey As Boolean = EgtGetKeyLevel(5327, 2504, 1, m_nKeyLevel) And
|
||||
EgtGetKeyOptions(5327, 2504, 1, m_nKeyOptions)
|
||||
Dim bKey As Boolean = EgtGetKeyLevel(5327, 2505, 1, m_nKeyLevel) And
|
||||
EgtGetKeyOptions(5327, 2505, 1, m_nKeyOptions)
|
||||
' Inizializzazione generale di EgtInterface
|
||||
m_nDebug = GetMainPrivateProfileInt(S_GENERAL, K_DEBUG, 0)
|
||||
m_sLogFile = m_sTempDir & "\" & SUPGENLOG_FILE_NAME.Replace("#", m_nInstance.ToString())
|
||||
|
||||
@@ -70,5 +70,5 @@ Imports System.Windows
|
||||
' by using the '*' as shown below:
|
||||
' <Assembly: AssemblyVersion("1.0.*")>
|
||||
|
||||
<Assembly: AssemblyVersion("2.5.4.1")>
|
||||
<Assembly: AssemblyFileVersion("2.5.4.1")>
|
||||
<Assembly: AssemblyVersion("2.5.5.2")>
|
||||
<Assembly: AssemblyFileVersion("2.5.5.2")>
|
||||
|
||||
@@ -178,13 +178,14 @@ Public Class MySceneHostVM
|
||||
|
||||
#Region "ProjectManager"
|
||||
|
||||
Public Overrides Sub NewProject()
|
||||
Public Overrides Function NewProject() As Boolean
|
||||
EgtSetCurrentContext(MainScene.GetCtx())
|
||||
Dim bOk As Boolean = MainController.NewProject()
|
||||
MainScene.SetStatusNull()
|
||||
End Sub
|
||||
Return bOk
|
||||
End Function
|
||||
|
||||
Public Overrides Sub OpenProject(sFilePath As String)
|
||||
Public Overrides Function OpenProject(sFilePath As String) As Boolean
|
||||
EgtSetCurrentContext(MainScene.GetCtx())
|
||||
Dim bOk As Boolean = False
|
||||
If String.IsNullOrEmpty(sFilePath) Then
|
||||
@@ -201,29 +202,32 @@ Public Class MySceneHostVM
|
||||
bOk = MainController.OpenProject(sFilePath, False)
|
||||
End If
|
||||
MainScene.SetStatusNull()
|
||||
End Sub
|
||||
Return bOk
|
||||
End Function
|
||||
|
||||
Public Overrides Sub SaveProject()
|
||||
MyBase.SaveProject()
|
||||
Public Overrides Function SaveProject() As Boolean
|
||||
Dim bOk As Boolean = MyBase.SaveProject()
|
||||
' Imposto stato gestione mouse diretto della scena a nessuno
|
||||
MainScene.SetStatusNull()
|
||||
End Sub
|
||||
Return bOk
|
||||
End Function
|
||||
|
||||
Public Overrides Sub SaveAsProject()
|
||||
MyBase.SaveAsProject()
|
||||
Public Overrides Function SaveAsProject() As Boolean
|
||||
Dim bOk As Boolean = MyBase.SaveAsProject()
|
||||
' Imposto stato gestione mouse diretto della scena a nessuno
|
||||
MainScene.SetStatusNull()
|
||||
End Sub
|
||||
Return bOk
|
||||
End Function
|
||||
|
||||
Public Overrides Sub ImportProject()
|
||||
Public Overrides Function ImportProject() As Boolean
|
||||
Dim sDir As String = String.Empty
|
||||
GetMainPrivateProfileString(S_MRUIMPORT, K_FILE & "1", "", sDir)
|
||||
If Not String.IsNullOrWhiteSpace(sDir) Then
|
||||
sDir = Path.GetDirectoryName(sDir)
|
||||
End If
|
||||
sDir.TrimEnd("\"c)
|
||||
MainController.ImportProject(sDir)
|
||||
End Sub
|
||||
Return MainController.ImportProject(sDir)
|
||||
End Function
|
||||
|
||||
#End Region ' ProjectManager
|
||||
|
||||
|
||||
@@ -955,6 +955,9 @@
|
||||
<ItemGroup>
|
||||
<Resource Include="Resources\TopPanel\RemoveAllRawPart.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Resource Include="Resources\ProjectManager\AddProj.png" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.VisualBasic.targets" />
|
||||
<PropertyGroup>
|
||||
<PostBuildEvent>IF "$(PlatformName)"=="x86" IF "$(ConfigurationName)" == "Release" copy $(TargetPath) c:\EgtProg\EgtBEAMWALL\EgtBEAMWALL.ViewerOptimizerR32.exe
|
||||
|
||||
@@ -373,6 +373,12 @@ Public Class MainMenuVM
|
||||
Map.refProdManagerVM.CurrProd.SetReloadProject(True)
|
||||
End If
|
||||
'DbControllers.m_ProdController.ResetController()
|
||||
' se Warehouse di tipo Medium e piu' di un progetto collegato
|
||||
Dim nDefault As Integer = 2
|
||||
If GetMainPrivateProfileInt(S_WAREHOUSE, EgtBEAMWALL.Core.ConstIni.K_TYPE, nDefault) = WarehouseType.MEDIUM AndAlso Map.refProdManagerVM.CurrProd.nProjIdList.Count > 1 Then
|
||||
' confronto le Sezioni del BTL importato con quelle in Warehouse
|
||||
WarehouseWndVM.UpdateSectionXMaterial()
|
||||
End If
|
||||
' aggiorno titolo
|
||||
Map.refMainWindowVM.UpdateTitle()
|
||||
DbControllers.m_ProdController.LockByProdId(Map.refProdManagerVM.CurrProd.nProdId, True, Map.refMainWindowVM.MainWindowM.GetKeyNumber())
|
||||
|
||||
@@ -227,8 +227,8 @@ Public Class MainWindowM
|
||||
' Verifico abilitazione nesting automatico
|
||||
m_bAutoNestOption = Not String.IsNullOrWhiteSpace(sNestKey)
|
||||
' Recupero livello e opzioni della chiave
|
||||
Dim bKey As Boolean = EgtGetKeyLevel(5327, 2504, 1, m_nKeyLevel) And
|
||||
EgtGetKeyOptions(5327, 2504, 1, m_nKeyOptions)
|
||||
Dim bKey As Boolean = EgtGetKeyLevel(5327, 2505, 1, m_nKeyLevel) And
|
||||
EgtGetKeyOptions(5327, 2505, 1, m_nKeyOptions)
|
||||
' Inizializzazione generale di EgtInterface
|
||||
m_nDebug = GetMainPrivateProfileInt(S_GENERAL, K_DEBUG, 0)
|
||||
m_sLogFile = m_sTempDir & "\" & VWOPTGENLOG_FILE_NAME.Replace("#", m_nInstance.ToString())
|
||||
|
||||
@@ -70,5 +70,5 @@ Imports System.Windows
|
||||
' by using the '*' as shown below:
|
||||
' <Assembly: AssemblyVersion("1.0.*")>
|
||||
|
||||
<Assembly: AssemblyVersion("2.5.4.1")>
|
||||
<Assembly: AssemblyFileVersion("2.5.4.1")>
|
||||
<Assembly: AssemblyVersion("2.5.5.2")>
|
||||
<Assembly: AssemblyFileVersion("2.5.5.2")>
|
||||
|
||||
@@ -126,28 +126,40 @@ Public Class OpenProjectFileDialogVM
|
||||
If nTempCtx <> 0 Then
|
||||
' inizializzo gestore lavorazioni
|
||||
EgtInitMachMgr(Map.refMainWindowVM.MainWindowM.sMachinesRoot, Map.refMainWindowVM.MainWindowM.sToolMakersDir)
|
||||
EgtOpenFile(SelProject.sProdPath)
|
||||
' cancello tutti i gruppi di lavorazione
|
||||
Dim nMachGroupId As Integer = EgtGetFirstMachGroup()
|
||||
While nMachGroupId <> GDB_ID.NULL
|
||||
EgtSetCurrMachGroup(nMachGroupId)
|
||||
Dim nRawPartId As Integer = EgtGetFirstRawPart()
|
||||
While nRawPartId <> GDB_ID.NULL
|
||||
Dim nPartId As Integer = EgtGetFirstPartInRawPart(nRawPartId)
|
||||
While nPartId <> GDB_ID.NULL
|
||||
EgtRemovePartFromRawPart(nPartId)
|
||||
' elimino pezzo copia
|
||||
EgtErase(nPartId)
|
||||
nPartId = EgtGetFirstPartInRawPart(nRawPartId)
|
||||
End While
|
||||
nRawPartId = EgtGetNextRawPart(nRawPartId)
|
||||
End While
|
||||
EgtRemoveMachGroup(nMachGroupId)
|
||||
nMachGroupId = EgtGetFirstMachGroup()
|
||||
End While
|
||||
' lo salvo in tutti i proj correlati
|
||||
' apro, ripulisco e salvo il progetto in tutti i proj correlati
|
||||
Dim ProdFile As ProdFileVM = DirectCast(SelProject, ProdFileVM)
|
||||
For Each nProjId In ProdFile.nProjIdList
|
||||
EgtOpenFile(SelProject.sProdPath)
|
||||
' cancello tutti i gruppi di lavorazione
|
||||
Dim nMachGroupId As Integer = EgtGetFirstMachGroup()
|
||||
While nMachGroupId <> GDB_ID.NULL
|
||||
EgtSetCurrMachGroup(nMachGroupId)
|
||||
Dim nRawPartId As Integer = EgtGetFirstRawPart()
|
||||
While nRawPartId <> GDB_ID.NULL
|
||||
Dim nPartId As Integer = EgtGetFirstPartInRawPart(nRawPartId)
|
||||
While nPartId <> GDB_ID.NULL
|
||||
EgtRemovePartFromRawPart(nPartId)
|
||||
' elimino pezzo copia
|
||||
EgtErase(nPartId)
|
||||
nPartId = EgtGetFirstPartInRawPart(nRawPartId)
|
||||
End While
|
||||
nRawPartId = EgtGetNextRawPart(nRawPartId)
|
||||
End While
|
||||
EgtRemoveMachGroup(nMachGroupId)
|
||||
nMachGroupId = EgtGetFirstMachGroup()
|
||||
End While
|
||||
' cancello tutti i gruppi che sono di un progetto diverso da questo
|
||||
Dim nGroupId As Integer = EgtGetFirstInGroup(GDB_ID.ROOT)
|
||||
While nGroupId <> GDB_ID.NULL
|
||||
Dim nGroupProjId As Integer = GDB_ID.NULL
|
||||
Dim nNextGroupId As Integer = EgtGetNext(nGroupId)
|
||||
If EgtGetInfo(nGroupId, BTL_PRT_PROJ, nGroupProjId) Then
|
||||
If nGroupProjId <> nProjId Then
|
||||
EgtErase(nGroupId)
|
||||
End If
|
||||
End If
|
||||
nGroupId = nNextGroupId
|
||||
End While
|
||||
EgtSaveFile(ProdFile.GetProjPath(nProjId), NGE.CMPTEXT)
|
||||
Next
|
||||
' torno sul contesto corrente
|
||||
|
||||
@@ -39,9 +39,9 @@
|
||||
</Button>-->
|
||||
<Button Command="{Binding AddProj_Command}"
|
||||
ToolTip="{Binding AddProj_ToolTip}"
|
||||
Visibility="Collapsed"
|
||||
Visibility="{Binding AddProj_Visibility}"
|
||||
Style="{StaticResource ToolBar_Button}">
|
||||
<Image Source="/Resources/ProjectManager/Import.png" Stretch="Uniform"/>
|
||||
<Image Source="/Resources/ProjectManager/AddProj.png" Stretch="Uniform"/>
|
||||
</Button>
|
||||
<Button Command="{Binding GoToProj_Command}"
|
||||
ToolTip="{Binding GoToProj_ToolTip}"
|
||||
|
||||
@@ -84,10 +84,18 @@ Public Class ProdManagerVM
|
||||
End Get
|
||||
End Property
|
||||
|
||||
Private m_AddProj_Visibility As Visibility
|
||||
Public ReadOnly Property AddProj_Visibility As Visibility
|
||||
Get
|
||||
Return m_AddProj_Visibility
|
||||
End Get
|
||||
End Property
|
||||
|
||||
' Definizione comandi
|
||||
Private m_cmdOpen As ICommand
|
||||
Private m_cmdOpenMruFile As ICommand
|
||||
Private m_cmdSave As ICommand
|
||||
Private m_cmdAddProj As ICommand
|
||||
Private m_cmdGoToProj As ICommand
|
||||
Private m_cmdGoToSupervisor As ICommand
|
||||
|
||||
@@ -135,6 +143,12 @@ Public Class ProdManagerVM
|
||||
Else
|
||||
m_GoToSupervisor_Visibility = Visibility.Collapsed
|
||||
End If
|
||||
' attivo bottone AddProj
|
||||
If GetMainPrivateProfileInt(S_GENERAL, K_ADDPROJ, 0) = 1 Then
|
||||
m_AddProj_Visibility = Visibility.Visible
|
||||
Else
|
||||
m_AddProj_Visibility = Visibility.Collapsed
|
||||
End If
|
||||
' Leggo ultimo indice di progetto
|
||||
m_nLastProdId = GetMainPrivateProfileInt(S_GENERAL, K_PRODSINDEX, 1)
|
||||
' Impostazioni MruLists
|
||||
@@ -372,10 +386,10 @@ Public Class ProdManagerVM
|
||||
Save(True)
|
||||
End Sub
|
||||
|
||||
Public Sub Save(Optional bShowLoading As Boolean = False)
|
||||
If IsNothing(m_CurrProd) Then Return
|
||||
Public Function Save(Optional bShowLoading As Boolean = False) As Boolean
|
||||
If IsNothing(m_CurrProd) Then Return False
|
||||
If bShowLoading Then LoadingWndHelper.OpenLoadingWnd(ActiveIds.SAVEPROD, 2, EgtMsg(63007), EgtMsg(63012), 70) ' Project saving ' Saving geometry
|
||||
Map.refSceneHostVM.SaveProject()
|
||||
Dim bOk As Boolean = Map.refSceneHostVM.SaveProject()
|
||||
If bShowLoading Then LoadingWndHelper.UpdateLoadingWnd(ActiveIds.SAVEPROD, 2, EgtMsg(63013), 70, 100) ' Saving data on Db
|
||||
Dim MyMachGroupList As New List(Of MyMachGroupM)
|
||||
If Not IsNothing(Map.refProjectVM.MachGroupPanelVM) Then
|
||||
@@ -386,7 +400,7 @@ Public Class ProdManagerVM
|
||||
' aggiorno pezzi su Db
|
||||
If Not DbControllers.m_ProdController.UpdateMachGroup(CurrProd.nProdId, MyMachGroupList) And bShowLoading Then
|
||||
LoadingWndHelper.CloseLoadingWnd(ActiveIds.SAVEPROD)
|
||||
Return
|
||||
Return False
|
||||
End If
|
||||
' verifico se Reset Macchina modificato e nel caso aggiorno DB e CurrProj
|
||||
If Map.refCALCPanelVM.IsMachineModified() Then
|
||||
@@ -411,10 +425,103 @@ Public Class ProdManagerVM
|
||||
Map.refMainWindowVM.UpdateTitle()
|
||||
NotifyPropertyChanged(NameOf(MruFileNames))
|
||||
If bShowLoading Then LoadingWndHelper.CloseLoadingWnd(ActiveIds.SAVEPROD)
|
||||
End Sub
|
||||
Return bOk
|
||||
End Function
|
||||
|
||||
#End Region ' SaveCommand
|
||||
|
||||
#Region "AddProj"
|
||||
|
||||
''' <summary>
|
||||
''' Returns a command that do Save.
|
||||
''' </summary>
|
||||
Public ReadOnly Property AddProj_Command As ICommand
|
||||
Get
|
||||
If m_cmdAddProj Is Nothing Then
|
||||
m_cmdAddProj = New Command(AddressOf AddProj)
|
||||
End If
|
||||
Return m_cmdAddProj
|
||||
End Get
|
||||
End Property
|
||||
|
||||
''' <summary>
|
||||
''' Execute the Save. This method is invoked by the SaveCommand.
|
||||
''' </summary>
|
||||
Public Sub AddProj()
|
||||
' verifico se progetto modificato, e chiedo se salvare
|
||||
If IsNothing(CurrProd) Then Return
|
||||
Dim bNewProject As Boolean = False
|
||||
Dim sProjectDirPath As String = ""
|
||||
sProjectDirPath = CurrProd.sProdDirPath
|
||||
Dim VerifyResult As MessageBoxResult = MessageBoxResult.None
|
||||
' verifico se progetto modificato, e chiedo se salvare
|
||||
If EgtGetModified() OrElse CurrProd.bIsNew OrElse Map.refCALCPanelVM.IsMachineModified() Then
|
||||
VerifyResult = MessageBox.Show(EgtMsg(61875), "", If(CurrProd.bIsNew, MessageBoxButton.OKCancel, MessageBoxButton.YesNoCancel), MessageBoxImage.Question)
|
||||
Select Case VerifyResult
|
||||
Case MessageBoxResult.Yes, MessageBoxResult.OK
|
||||
' salvo proj
|
||||
Map.refProdManagerVM.Save()
|
||||
Case MessageBoxResult.Cancel
|
||||
Return
|
||||
Case Else ' No
|
||||
EgtResetModified()
|
||||
OpenProject(CurrProd)
|
||||
End Select
|
||||
Else
|
||||
EgtResetModified()
|
||||
End If
|
||||
' faccio scegliere proj da aggiungere
|
||||
Dim OpenProjectFileDialogVM As New OpenProjectFileDialogVM
|
||||
Dim ChooseProdFileDialog As New OpenProjectFileDialogV(Application.Current.MainWindow, OpenProjectFileDialogVM)
|
||||
Dim DialogResult As Boolean? = ChooseProdFileDialog.EgtShowDialog(ProjectType.PROJ, True)
|
||||
If IsNothing(DialogResult) OrElse Not DialogResult Then Return
|
||||
If IsNothing(OpenProjectFileDialogVM.SelProject.nProjId) OrElse OpenProjectFileDialogVM.SelProject.nProjId <= 0 Then Return
|
||||
' verifico che il proj selezionato non abbia prod
|
||||
If Not IsNothing(OpenProjectFileDialogVM.SelProject.nProdId) AndAlso OpenProjectFileDialogVM.SelProject.nProdId > 0 Then
|
||||
' verifico che non sia uno di quelli gia' collegati a questo Prod
|
||||
Dim bFound As Boolean = False
|
||||
For Each nProjId As Integer In CurrProd.nProjIdList
|
||||
If nProjId = OpenProjectFileDialogVM.SelProject.nProjId Then
|
||||
bFound = True
|
||||
Exit For
|
||||
End If
|
||||
Next
|
||||
If bFound Then
|
||||
MessageBox.Show("Selezionato progetto che fa gia' parte di questa produzione!", "Errore", MessageBoxButton.OK, MessageBoxImage.Error)
|
||||
Else
|
||||
MessageBox.Show("Progetto gia' collegato ad una produzione!", "Errore", MessageBoxButton.OK, MessageBoxImage.Error)
|
||||
End If
|
||||
Return
|
||||
End If
|
||||
' verifico che sia associato alla stessa macchina
|
||||
If OpenProjectFileDialogVM.SelProject.sMachine <> CurrProd.sMachine Then
|
||||
MessageBox.Show("Progetto per una macchina diversa da quella del progetto corrente!", "Errore", MessageBoxButton.OK, MessageBoxImage.Error)
|
||||
Return
|
||||
End If
|
||||
' inserisco proj nel prod corrente
|
||||
Dim bOk As Boolean = EgtInsertFile(OpenProjectFileDialogVM.SelProject.sProjPath)
|
||||
' lo salvo
|
||||
bOk = bOk AndAlso Save(False)
|
||||
If bOk Then
|
||||
' riporto aggiunta proj a prod su Db
|
||||
DbControllers.m_ProdController.AddProj(CurrProd.nProdId, OpenProjectFileDialogVM.SelProject.nProjId)
|
||||
End If
|
||||
' Ricavo il tipo di Warehouse settato nell'INI
|
||||
Dim nDefault As Integer = 2
|
||||
If GetMainPrivateProfileInt(S_WAREHOUSE, EgtBEAMWALL.Core.ConstIni.K_TYPE, nDefault) = WarehouseType.MEDIUM Then
|
||||
' Se di tipo Medium confronto le Sezioni del BTL importato con quelle in Warehouse
|
||||
WarehouseWndVM.UpdateSectionXMaterial()
|
||||
End If
|
||||
' aggiorno CurrProd
|
||||
Dim PdFileM = DbControllers.m_ProdController.FindCoreByProdId(CurrProd.nProdId)
|
||||
CurrProd.ProdFileM.SetProjIdList(PdFileM.nProjIdList)
|
||||
' ricarico BTLPartList
|
||||
OpenProject(CurrProd)
|
||||
End Sub
|
||||
|
||||
|
||||
#End Region ' AddProj
|
||||
|
||||
#Region "GoToProj"
|
||||
|
||||
''' <summary>
|
||||
|
||||
@@ -1039,7 +1039,7 @@ Public Class ProjManagerVM
|
||||
Dim b3Part As New BBox3d
|
||||
EgtGetBBoxGlob(nAddedPartId, 1, b3Part)
|
||||
' sposto il pezzo per distanziarlo dall'ultimo di un offset pari a 500
|
||||
bOk = bOk AndAlso EgtMove(nAddedPartId, New Vector3d(0, If(bFirstLoop, b3Parts.DimY(), LastPartMaxY - b3Part.Min.y) + 500, 0))
|
||||
bOk = bOk AndAlso EgtMove(nAddedPartId, New Vector3d(0, If(bFirstLoop, b3Parts.Max.y, LastPartMaxY - b3Part.Min.y) + 500, 0))
|
||||
bFirstLoop = False
|
||||
' ricaviamo il box globale del part appena spostato, salviamo la sua Y massima e lo aggiungiamo al box globale di tutti i part
|
||||
EgtGetBBoxGlob(nAddedPartId, 1, b3Part)
|
||||
|
||||
@@ -139,7 +139,10 @@ Public Class ProdFileVM
|
||||
Map.refCALCPanelVM.RevertToOriginalMachine()
|
||||
If CurrProject.bIsNew Then
|
||||
' lo elimino
|
||||
Directory.Delete(sProjectDirPath, True)
|
||||
Try
|
||||
Directory.Delete(sProjectDirPath, True)
|
||||
Catch ex As Exception
|
||||
End Try
|
||||
Map.refProdManagerVM.m_MruFiles.Remove(CurrProject.sProdPath)
|
||||
Map.refProdManagerVM.NotifyPropertyChanged(NameOf(Map.refProdManagerVM.MruFileNames))
|
||||
DbControllers.m_ProdController.DeleteProd(CurrProject.nProdId)
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 976 B |
@@ -202,13 +202,14 @@ Public Class MySceneHostVM
|
||||
|
||||
#Region "ProjectManager"
|
||||
|
||||
Public Overrides Sub NewProject()
|
||||
Public Overrides Function NewProject() As Boolean
|
||||
EgtSetCurrentContext(MainScene.GetCtx())
|
||||
Dim bOk As Boolean = MainController.NewProject()
|
||||
MainScene.SetStatusNull()
|
||||
End Sub
|
||||
Return bOk
|
||||
End Function
|
||||
|
||||
Public Overrides Sub OpenProject(sFilePath As String)
|
||||
Public Overrides Function OpenProject(sFilePath As String) As Boolean
|
||||
EgtSetCurrentContext(MainScene.GetCtx())
|
||||
Dim bOk As Boolean = False
|
||||
If String.IsNullOrEmpty(sFilePath) Then
|
||||
@@ -225,29 +226,32 @@ Public Class MySceneHostVM
|
||||
bOk = MainController.OpenProject(sFilePath, False)
|
||||
End If
|
||||
MainScene.SetStatusNull()
|
||||
End Sub
|
||||
Return bOk
|
||||
End Function
|
||||
|
||||
Public Overrides Sub SaveProject()
|
||||
MyBase.SaveProject()
|
||||
Public Overrides Function SaveProject() As Boolean
|
||||
Dim bOk As Boolean = MyBase.SaveProject()
|
||||
' Imposto stato gestione mouse diretto della scena a nessuno
|
||||
MainScene.SetStatusNull()
|
||||
End Sub
|
||||
Return bOk
|
||||
End Function
|
||||
|
||||
Public Overrides Sub SaveAsProject()
|
||||
MyBase.SaveAsProject()
|
||||
Public Overrides Function SaveAsProject() As Boolean
|
||||
Dim bOk As Boolean = MyBase.SaveAsProject()
|
||||
' Imposto stato gestione mouse diretto della scena a nessuno
|
||||
MainScene.SetStatusNull()
|
||||
End Sub
|
||||
Return bOk
|
||||
End Function
|
||||
|
||||
Public Overrides Sub ImportProject()
|
||||
Public Overrides Function ImportProject() As Boolean
|
||||
Dim sDir As String = String.Empty
|
||||
GetMainPrivateProfileString(S_MRUIMPORT, K_FILE & "1", "", sDir)
|
||||
If Not String.IsNullOrWhiteSpace(sDir) Then
|
||||
sDir = Path.GetDirectoryName(sDir)
|
||||
End If
|
||||
sDir.TrimEnd("\"c)
|
||||
MainController.ImportProject(sDir)
|
||||
End Sub
|
||||
Return MainController.ImportProject(sDir)
|
||||
End Function
|
||||
|
||||
#End Region ' ProjectManager
|
||||
|
||||
|
||||
@@ -68,6 +68,8 @@ Public Module DbControllers
|
||||
DataLayer.DbConfig.CheckMigrateDb()
|
||||
DataLayer.DbConfig.CheckUser(sUser, sPwd, m_bNetwork AndAlso Map.refMainWindowVM.MainWindowM.GetKeyOption(KEY_OPT.NETWORK))
|
||||
DataLayer.DbConfig.CheckViews(sUser, sPwd)
|
||||
' riattivare il dump per il backup
|
||||
'DataLayer.DbConfig.DumpDB("C:\Program Files\MariaDB 10.5\bin\mysqldump", "c:\Temp\Pippo.sql")
|
||||
If m_bNetwork AndAlso Map.refMainWindowVM.MainWindowM.GetKeyOption(KEY_OPT.NETWORK) Then
|
||||
' imposto cartella condivisa
|
||||
GetMainPrivateProfileString(S_GENERAL, K_SHAREDFOLDER, Map.refMainWindowVM.MainWindowM.sDataDir, sSharedFolder)
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Reference in New Issue
Block a user