From a286caf8f59f8acd7cb15ac703e709c8edccab09 Mon Sep 17 00:00:00 2001 From: Emmanuele Sassi Date: Thu, 16 Dec 2021 20:04:58 +0100 Subject: [PATCH] - Correzioni esportazione e importazione progetto - Correzione notifica tempi di lavorazione --- EgtBEAMWALL.Core/Constants/ConstBeam.vb | 2 +- .../MachGroupPanel/MyMachGroupPanelVM.vb | 6 +- .../BTLViewModel/BTLStructureVM.vb | 4 + .../ProjManager/ProjManagerVM.vb | 83 ++++++++++--------- .../SupervisorCommThread/SupervisorComm.vb | 1 + 5 files changed, 56 insertions(+), 40 deletions(-) diff --git a/EgtBEAMWALL.Core/Constants/ConstBeam.vb b/EgtBEAMWALL.Core/Constants/ConstBeam.vb index e865cdd8..24aa8f44 100644 --- a/EgtBEAMWALL.Core/Constants/ConstBeam.vb +++ b/EgtBEAMWALL.Core/Constants/ConstBeam.vb @@ -292,7 +292,7 @@ Public Const EXP_PROJ As String = "EXPORTPROJ" Public Const EXP_PROD As String = "EXPORTPROD" Public Const BTLFILENAME As String = "BTLFILENAME" - Public Const EXP_LAYER As String = "ImportExport" + Public Const EXP_PART As String = "ImportExport" Public Const EXP_MACHINE As String = "Machine" End Module diff --git a/EgtBEAMWALL.Core/MachGroupPanel/MyMachGroupPanelVM.vb b/EgtBEAMWALL.Core/MachGroupPanel/MyMachGroupPanelVM.vb index b525be15..c5fd5d16 100644 --- a/EgtBEAMWALL.Core/MachGroupPanel/MyMachGroupPanelVM.vb +++ b/EgtBEAMWALL.Core/MachGroupPanel/MyMachGroupPanelVM.vb @@ -147,6 +147,7 @@ Public MustInherit Class MyMachGroupPanelVM ' funzione che aggiorna totale tempi a fine calcolo Public Sub CalcGlobalTime() NotifyPropertyChanged(NameOf(sTotTime)) + NotifyPropertyChanged(NameOf(sRemainingTime)) End Sub ' funzione che aggiorna numero gruppi di lavorazione e volume totale @@ -154,6 +155,7 @@ Public MustInherit Class MyMachGroupPanelVM NotifyPropertyChanged(NameOf(sTotMachGroups)) NotifyPropertyChanged(NameOf(sTotVolume)) NotifyPropertyChanged(NameOf(sTotTime)) + NotifyPropertyChanged(NameOf(sRemainingTime)) End Sub Public Shared Sub DuploRemoveProjCalc(nPartDuploId As Integer) @@ -170,7 +172,9 @@ Public MustInherit Class MyMachGroupPanelVM Protected Overrides Sub OnMachGroupVMPropertyChanged(sender As Object, e As PropertyChangedEventArgs) Select Case e.PropertyName - 'Case nameof(sender.sMATERIAL) + Case NameOf(sender.nProduction_State) + NotifyPropertyChanged(NameOf(sTotTime)) + NotifyPropertyChanged(NameOf(sRemainingTime)) End Select End Sub diff --git a/EgtBEAMWALL.ViewerOptimizer/BTLViewModel/BTLStructureVM.vb b/EgtBEAMWALL.ViewerOptimizer/BTLViewModel/BTLStructureVM.vb index 3d90a5ba..ab187e1b 100644 --- a/EgtBEAMWALL.ViewerOptimizer/BTLViewModel/BTLStructureVM.vb +++ b/EgtBEAMWALL.ViewerOptimizer/BTLViewModel/BTLStructureVM.vb @@ -936,6 +936,7 @@ Public Class BTLStructureVM ' funzione che aggiorna totale tempi a fine calcolo Friend Sub CalcGlobalTime() NotifyPropertyChanged(NameOf(sBTLTotTime)) + NotifyPropertyChanged(NameOf(sBTLRemainingTime)) End Sub ' funzione che aggiorna numero pezzi, volume e tempo totali @@ -943,6 +944,7 @@ Public Class BTLStructureVM NotifyPropertyChanged(NameOf(sBTLTotParts)) NotifyPropertyChanged(NameOf(sBTLTotVolume)) NotifyPropertyChanged(NameOf(sBTLTotTime)) + NotifyPropertyChanged(NameOf(sBTLRemainingTime)) End Sub ' funzione utilizata per aggiornare rot e flip dopo calcolo @@ -995,6 +997,8 @@ Public Class BTLStructureVM 'End If 'Case NameOf(sender.sROTATED) ' UpdateSection(CType(sender, BTLPartVM).BTLPartM) + Case NameOf(sender.nDONE) + NotifyPropertyChanged(NameOf(sBTLRemainingTime)) End Select End Sub diff --git a/EgtBEAMWALL.ViewerOptimizer/ProjManager/ProjManagerVM.vb b/EgtBEAMWALL.ViewerOptimizer/ProjManager/ProjManagerVM.vb index 9f05fbe5..8f106e51 100644 --- a/EgtBEAMWALL.ViewerOptimizer/ProjManager/ProjManagerVM.vb +++ b/EgtBEAMWALL.ViewerOptimizer/ProjManager/ProjManagerVM.vb @@ -691,11 +691,11 @@ Public Class ProjManagerVM nBTLInfoLayerId = EgtGetNextName(nBTLInfoLayerId, BTLINFO) End While ' aggiungo layer per info di export - Dim nImpExpLayerId As Integer = EgtCreateGroup(GDB_ID.ROOT) - EgtSetName(nImpExpLayerId, EXP_LAYER) + Dim nImpExpPartId As Integer = EgtCreateGroup(GDB_ID.ROOT) + EgtSetName(nImpExpPartId, EXP_PART) ' ci scrivo nome macchina e tipo progetto - EgtSetInfo(nImpExpLayerId, EXP_MACHINE, CurrProj.sMachine) - EgtSetInfo(nImpExpLayerId, BTL_GEN_PROJTYPE, CurrProj.nType) + EgtSetInfo(nImpExpPartId, EXP_MACHINE, CurrProj.sMachine) + EgtSetInfo(nImpExpPartId, BTL_GEN_PROJTYPE, CurrProj.nType) '' se c'e' un prod collegato 'If Map.refProjManagerVM.CurrProj.nProdId > 0 Then ' ' scrivo quali sono i proj e prod in questo file @@ -729,7 +729,9 @@ Public Class ProjManagerVM MessageBox.Show("Error in export file creation!") End Try ' elimino layer di esportazione - EgtErase(nImpExpLayerId) + EgtErase(nImpExpPartId) + ' salvo eliminazione info inserite + Map.refSceneHostVM.SaveProject() End Sub #End Region ' ExportProject @@ -787,9 +789,9 @@ Public Class ProjManagerVM Return End If ' recupero e verifico se ho a disposizione la macchina con cui e' stato creato il progetto - Dim nImpExpLayerId = EgtGetFirstNameInGroup(GDB_ID.ROOT, EXP_LAYER) + Dim nImpExpPartId = EgtGetFirstNameInGroup(GDB_ID.ROOT, EXP_PART) Dim sMachine As String = "" - EgtGetInfo(nImpExpLayerId, EXP_MACHINE, sMachine) + EgtGetInfo(nImpExpPartId, EXP_MACHINE, sMachine) ' se la macchina del progetto in apertura non รจ tra le macchine disponibili lo segnalo e apro un progetto vuoto If IsNothing(Map.refMachinePanelVM.MachineList.FirstOrDefault(Function(x) x.Name = sMachine)) Then MessageBox.Show(EgtMsg(61885), EgtMsg(10001), MessageBoxButton.OK, MessageBoxImage.Error) 'Error @@ -797,13 +799,13 @@ Public Class ProjManagerVM End If Dim Machine As Machine = Map.refMachinePanelVM.MachineList.FirstOrDefault(Function(x) x.Name = sMachine) Dim nType As Integer = BWType.NULL - EgtGetInfo(nImpExpLayerId, BTL_GEN_PROJTYPE, nType) + EgtGetInfo(nImpExpPartId, BTL_GEN_PROJTYPE, nType) If IsNothing(Machine) OrElse nType = BWType.NULL Then MessageBox.Show(EgtMsg(61885), EgtMsg(10001), MessageBoxButton.OK, MessageBoxImage.Error) 'Error Return End If - ' elimino layer di esportazione - EgtErase(nImpExpLayerId) + ' elimino part di esportazione + EgtErase(nImpExpPartId) ' leggo proj e prod presenti dai layer BTLInfo Dim ImportProjIdList As New List(Of Integer) Dim NewProjIdList As New List(Of Integer) @@ -876,8 +878,8 @@ Public Class ProjManagerVM ' elimino da Db DbControllers.m_ProjController.DeleteProj(nNewProjId) End If - ' salvo il progetto PROJ - Map.refSceneHostVM.SaveProject() + '' salvo il progetto PROJ + ' Map.refSceneHostVM.SaveProject() ' aggiorno BTLParts su DB DbControllers.m_ProjController.UpdateBtlParts(nNewProjId, Map.refProjectVM.BTLStructureVM.BTLStructureM.BTLPartMList) ' resetto stato new @@ -950,32 +952,37 @@ Public Class ProjManagerVM DbControllers.m_ProdController.ResetController() End If ' imposto progetto corrente - If NewProjIdList.Count > 0 Then SetCurrProj(NewProjIdList(0)) - ' costruisco BTLStructure del proj - Map.refProjectVM.BTLStructureVM = New BTLStructureVM(BTLStructureM.CreateBTLStructure(NewProjIdList(0))) - ' mostro tutti i pezzi - Map.refShowBeamPanelVM.ShowAll() - EgtZoom(ZM.ALL, True) - ' aggiungo il file in apertura alla lista degli MRU - If Not IsNothing(CurrProj.ProjFileM) AndAlso Not IsNothing(CurrProj.sProjPath) Then Map.refProjManagerVM.m_MruFiles.Add(CurrProj.sProjPath) - ' imposto macchina del progetto - Map.refMachinePanelVM.SelectedMachine = Machine - ' aggiorno le colonne in base al tipo progetto - Map.refRawPartListVM.UpdateColumns(Map.refProjectVM.BTLStructureVM.BTLStructureM.nPROJTYPE) - Map.refPartInRawPartListVM.UpdateColumns(Map.refProjectVM.BTLStructureVM.BTLStructureM.nPROJTYPE) - DbControllers.m_ProjController.LockByProjId(Map.refProjManagerVM.CurrProj.nProjId, True) - ' carico lista macchine e macchina del progetto per il pulsante Reset Macchina del CALCPanel - Map.refCALCPanelVM.LoadMachineList() - SectionXMaterial.SetType(nType) - ManageView.UpdateBWType(nType) - Map.refPartManagerVM.LockVisibilityUpdate() - ' imposto flag secondo tipo di progetto (travi o pareti) - Dim sBTLFlag As String = If(nType = Core.ConstBeam.BWType.BEAM, K_BTLFLAG, K_WALLBTLFLAG) - Dim nFlag As Integer = GetMainPrivateProfileInt(S_IMPORT, sBTLFlag, EIB_FL.TS3_POS + EIB_FL.SORT + EIB_FL.USEUATTR) - EgtBeamSetFlag( nFlag) - Map.refProjectVM.SetOptimizePanel_Visibility(Map.refProjectVM.BTLStructureVM.nPROJTYPE = BWType.WALL) - ' aggiorno titolo - Map.refMainWindowVM.UpdateTitle() + If NewProjIdList.Count > 0 Then + SetCurrProj(NewProjIdList(0)) + OpenProject(CurrProj) + End If + ''' imposto progetto corrente + ''If NewProjIdList.Count > 0 Then SetCurrProj(NewProjIdList(0)) + ''' costruisco BTLStructure del proj + ''Map.refProjectVM.BTLStructureVM = New BTLStructureVM(BTLStructureM.CreateBTLStructure(NewProjIdList(0))) + ''' mostro tutti i pezzi + ''Map.refShowBeamPanelVM.ShowAll() + ''EgtZoom(ZM.ALL, True) + ''' aggiungo il file in apertura alla lista degli MRU + ''If Not IsNothing(CurrProj.ProjFileM) AndAlso Not IsNothing(CurrProj.sProjPath) Then Map.refProjManagerVM.m_MruFiles.Add(CurrProj.sProjPath) + ''' imposto macchina del progetto + ''Map.refMachinePanelVM.SelectedMachine = Machine + ''' aggiorno le colonne in base al tipo progetto + ''Map.refRawPartListVM.UpdateColumns(Map.refProjectVM.BTLStructureVM.BTLStructureM.nPROJTYPE) + ''Map.refPartInRawPartListVM.UpdateColumns(Map.refProjectVM.BTLStructureVM.BTLStructureM.nPROJTYPE) + ''DbControllers.m_ProjController.LockByProjId(Map.refProjManagerVM.CurrProj.nProjId, True) + ''' carico lista macchine e macchina del progetto per il pulsante Reset Macchina del CALCPanel + ''Map.refCALCPanelVM.LoadMachineList() + ''SectionXMaterial.SetType(nType) + ''ManageView.UpdateBWType(nType) + ''Map.refPartManagerVM.LockVisibilityUpdate() + ''' imposto flag secondo tipo di progetto (travi o pareti) + ''Dim sBTLFlag As String = If(nType = Core.ConstBeam.BWType.BEAM, K_BTLFLAG, K_WALLBTLFLAG) + ''Dim nFlag As Integer = GetMainPrivateProfileInt(S_IMPORT, sBTLFlag, EIB_FL.TS3_POS + EIB_FL.SORT + EIB_FL.USEUATTR) + ''EgtBeamSetFlag(nFlag) + ''Map.refProjectVM.SetOptimizePanel_Visibility(Map.refProjectVM.BTLStructureVM.nPROJTYPE = BWType.WALL) + ''' aggiorno titolo + ''Map.refMainWindowVM.UpdateTitle() End Sub #End Region ' ImportProject diff --git a/EgtBEAMWALL.ViewerOptimizer/SupervisorCommThread/SupervisorComm.vb b/EgtBEAMWALL.ViewerOptimizer/SupervisorCommThread/SupervisorComm.vb index 2eb171ad..c5cccf5d 100644 --- a/EgtBEAMWALL.ViewerOptimizer/SupervisorCommThread/SupervisorComm.vb +++ b/EgtBEAMWALL.ViewerOptimizer/SupervisorCommThread/SupervisorComm.vb @@ -83,6 +83,7 @@ Public Class SupervisorComm Case Core.StatusMapOpType.PartStart MachGroup.dtStartTime = MachGroupModification.DtEvent MachGroup.nProduction_State = ItemState.WIP + MachGroup.NotifyPropertyChanged(NameOf(MachGroup.nProduction_State)) MachGroup.NotifyPropertyChanged(NameOf(MachGroup.Background)) Case Core.StatusMapOpType.PartEnd MachGroup.dtEndTime = MachGroupModification.DtEvent