From b4e8d68c62f599ba346697bb5a589d360c8518bf Mon Sep 17 00:00:00 2001 From: Emmanuele Sassi Date: Thu, 29 Jul 2021 16:17:37 +0200 Subject: [PATCH] Modifiche per comunicazione tra ViewerOptimizer e Supervisor Correzioni e migliorie --- EgtBEAMWALL.Core/Enum.vb | 3 + .../MachGroup Model/MyMachGroupM.vb | 6 +- .../MachGroupPanel/MyMachGroupVM.vb | 37 +++++- EgtBEAMWALL.Core/ProjectManager/ProdFileVM.vb | 10 -- .../ProjectManager/ProjectFileVM.vb | 14 ++- .../LeftPanel/LeftPanelVM.vb | 3 +- .../LeftPanel/RawPartListV.xaml | 10 +- .../MachGroupPanel/MyMachGroupPanelVM.vb | 21 ++++ .../MachManagingThread/MachManaging.vb | 4 +- .../ZebraPrinter/LabelPrinter.vb | 1 + .../BTLParam/BTLStructureVM.vb | 19 ++-- .../BTLParam/RawPartListV.xaml | 8 +- .../BTLParam/RawPartListV.xaml.vb | 24 +++- .../CALCPanel/CALCPanelVM.vb | 3 + .../CALCPanel/CalcPanelV.xaml | 36 ++++++ .../CALCPanel/CalcPanelV.xaml.vb | 3 + .../EgtBEAMWALL.ViewerOptimizer.vbproj | 9 +- .../MachGroupPanel/BeamMachGroupVM.vb | 9 +- .../OpenProjectFileDialogV.xaml.vb | 1 + .../ProjManager/ProjManagerVM.vb | 2 + .../ProjectManager/ProdFileVM.vb | 87 +------------- .../ProjectManager/ProjFileVM.vb | 107 +----------------- .../SceneHost/MySceneHostVM.vb | 2 - .../SupervisorCommThread/SupervisorComm.vb | 66 ++++++++--- .../TopPanel/TopPanelVM.vb | 23 ++-- 25 files changed, 263 insertions(+), 245 deletions(-) create mode 100644 EgtBEAMWALL.ViewerOptimizer/CALCPanel/CALCPanelVM.vb create mode 100644 EgtBEAMWALL.ViewerOptimizer/CALCPanel/CalcPanelV.xaml create mode 100644 EgtBEAMWALL.ViewerOptimizer/CALCPanel/CalcPanelV.xaml.vb diff --git a/EgtBEAMWALL.Core/Enum.vb b/EgtBEAMWALL.Core/Enum.vb index 4d04b96e..f52db19a 100644 --- a/EgtBEAMWALL.Core/Enum.vb +++ b/EgtBEAMWALL.Core/Enum.vb @@ -51,4 +51,7 @@ Public Enum StatusMapOpType MachGroupNeedRedo = 6 MachGroupAssignedToSupervisor = 7 MachGroupRemovedFromSupervisor = 8 + SupervisorStopRequest = 9 + ViewOptimStoped = 10 + SupervisorReleaseStop = 11 End Enum \ No newline at end of file diff --git a/EgtBEAMWALL.Core/MachGroup Model/MyMachGroupM.vb b/EgtBEAMWALL.Core/MachGroup Model/MyMachGroupM.vb index 545d54fb..daef3981 100644 --- a/EgtBEAMWALL.Core/MachGroup Model/MyMachGroupM.vb +++ b/EgtBEAMWALL.Core/MachGroup Model/MyMachGroupM.vb @@ -220,13 +220,13 @@ Public MustInherit Class MyMachGroupM End Set End Property - Protected m_nProductionState As Integer = 0 - Public ReadOnly Property nProductionState As Integer + Protected m_nProductionState As ItemState = 0 + Public ReadOnly Property nProductionState As ItemState Get Return m_nProductionState End Get End Property - Public Sub SetState(nState As CalcStates) + Public Sub SetProductionState(nState As ItemState) m_nProductionState = nState End Sub diff --git a/EgtBEAMWALL.Core/MachGroupPanel/MyMachGroupVM.vb b/EgtBEAMWALL.Core/MachGroupPanel/MyMachGroupVM.vb index 38ab925a..e346d4ee 100644 --- a/EgtBEAMWALL.Core/MachGroupPanel/MyMachGroupVM.vb +++ b/EgtBEAMWALL.Core/MachGroupPanel/MyMachGroupVM.vb @@ -22,6 +22,13 @@ Public MustInherit Class MyMachGroupVM End Get End Property + Public ReadOnly Property nName As Integer + Get + Dim nIntName As Integer = 0 + Integer.TryParse(MyMachGroupM.Name, nIntName) + Return nIntName + End Get + End Property Public Property dL As Double Get Return MyMachGroupM.dL @@ -271,6 +278,12 @@ Public MustInherit Class MyMachGroupVM Public Sub SetSupervisorId(SupervisorId As String) m_SupervisorId = SupervisorId End Sub + Public Sub ResetSupervisorId() + m_SupervisorId = "" + NotifyPropertyChanged(NameOf(IsReadOnly)) + End Sub + + Private m_cc As StateChangeEventArgs Public ReadOnly Property IsReadOnly As Boolean Get @@ -280,7 +293,7 @@ Public MustInherit Class MyMachGroupVM #Region "Supervisor" - Public ReadOnly Property nProduction_State As Integer + Public ReadOnly Property nProduction_State As ItemState Get Return MyMachGroupM.nProductionState End Get @@ -338,6 +351,24 @@ Public MustInherit Class MyMachGroupVM m_bResetWhileCutting = value End Sub + Public ReadOnly Property Background As SolidColorBrush + Get + Select Case nProduction_State + Case ItemState.ND + Return Brushes.White + Case ItemState.Assigned + Return Brushes.LightGray + Case ItemState.Confirmed + Return Brushes.LightGray + Case ItemState.WIP + Return Brushes.Green + Case ItemState.Produced + Return Brushes.Yellow + Case Else ' ItemState.Scrapped + Return Brushes.LightBlue + End Select + End Get + End Property #End Region ' definizione comandi @@ -455,6 +486,10 @@ Public MustInherit Class MyMachGroupVM NotifyPropertyChanged(NameOf(sUnitTime)) End Sub + Public Sub SentToSupervisor() + MyMachGroupM.SetProductionState(ItemState.Assigned) + End Sub + Public Overridable Function CnFilePath() As String Return Nothing End Function diff --git a/EgtBEAMWALL.Core/ProjectManager/ProdFileVM.vb b/EgtBEAMWALL.Core/ProjectManager/ProdFileVM.vb index c26926ed..76fc130d 100644 --- a/EgtBEAMWALL.Core/ProjectManager/ProdFileVM.vb +++ b/EgtBEAMWALL.Core/ProjectManager/ProdFileVM.vb @@ -63,16 +63,6 @@ Public Class ProdFileVM m_sBTLFileName = value End Sub - Private m_nModificationIndex As Integer = Integer.MaxValue - Public ReadOnly Property nModificationIndex As Integer - Get - Return m_nModificationIndex - End Get - End Property - Public Sub SetModificationIndex(value As String) - m_nModificationIndex = value - End Sub - #Region "CONSTRUCTORS" Sub New(ProdFileM As ProdFileM) diff --git a/EgtBEAMWALL.Core/ProjectManager/ProjectFileVM.vb b/EgtBEAMWALL.Core/ProjectManager/ProjectFileVM.vb index e28fc002..5c3d7af8 100644 --- a/EgtBEAMWALL.Core/ProjectManager/ProjectFileVM.vb +++ b/EgtBEAMWALL.Core/ProjectManager/ProjectFileVM.vb @@ -87,13 +87,23 @@ Public Class ProjectFileVM End Property ' variabile che indica se ricaricare il progetto - Private m_bReloadProject As Boolean = True - Friend ReadOnly Property bReloadProject As Boolean + Protected m_bReloadProject As Boolean = True + Public ReadOnly Property bReloadProject As Boolean Get Return m_bReloadProject End Get End Property + Protected m_nModificationIndex As Integer = Integer.MaxValue - 1000 + Public ReadOnly Property nModificationIndex As Integer + Get + Return m_nModificationIndex + End Get + End Property + Public Sub SetModificationIndex(value As String) + m_nModificationIndex = value + End Sub + #Region "Messages" Public ReadOnly Property Id_Msg As String diff --git a/EgtBEAMWALL.Supervisor/LeftPanel/LeftPanelVM.vb b/EgtBEAMWALL.Supervisor/LeftPanel/LeftPanelVM.vb index 457b149a..402e8f0d 100644 --- a/EgtBEAMWALL.Supervisor/LeftPanel/LeftPanelVM.vb +++ b/EgtBEAMWALL.Supervisor/LeftPanel/LeftPanelVM.vb @@ -123,9 +123,8 @@ Public Class LeftPanelVM MessageBox.Show("Impossibile cancellare il grezzo") Return End If - If DbControllers.m_MachGroupController.UpdateStatus(Map.refSupervisorManagerVM.CurrProd.nProdId, Map.refProjectVM.SupervisorMachGroupPanelVM.SelectedMachGroup.Id, ItemState.ND) Then + If DbControllers.m_MachGroupController.RemoveFromSupervisor(Map.refSupervisorManagerVM.CurrProd.nProdId, Map.refProjectVM.SupervisorMachGroupPanelVM.SelectedMachGroup.Id) Then ' se rimozione da Db ok, lo rimuovo da lista - DbControllers.m_MachGroupController.UpdateSupervisor(Map.refSupervisorManagerVM.CurrProd.nProdId, Map.refProjectVM.SupervisorMachGroupPanelVM.SelectedMachGroup.Id, "") Map.refProjectVM.SupervisorMachGroupPanelVM.MachGroupVMList.Remove(SelMachGroup) End If End Sub diff --git a/EgtBEAMWALL.Supervisor/LeftPanel/RawPartListV.xaml b/EgtBEAMWALL.Supervisor/LeftPanel/RawPartListV.xaml index 476a7be8..14c367ea 100644 --- a/EgtBEAMWALL.Supervisor/LeftPanel/RawPartListV.xaml +++ b/EgtBEAMWALL.Supervisor/LeftPanel/RawPartListV.xaml @@ -33,7 +33,7 @@ - + @@ -41,6 +41,14 @@ + + + + + + + + diff --git a/EgtBEAMWALL.Supervisor/MachGroupPanel/MyMachGroupPanelVM.vb b/EgtBEAMWALL.Supervisor/MachGroupPanel/MyMachGroupPanelVM.vb index e9b8f4dc..aa696e92 100644 --- a/EgtBEAMWALL.Supervisor/MachGroupPanel/MyMachGroupPanelVM.vb +++ b/EgtBEAMWALL.Supervisor/MachGroupPanel/MyMachGroupPanelVM.vb @@ -57,6 +57,27 @@ Public Class MyMachGroupPanelVM NotifyPropertyChanged(NameOf(MachGroupVMList)) End Sub + Public Overrides Function OnPostSetCurrMachGroup() As Boolean + ' resetto eventuale selezione pezzo + DirectCast(SelectedMachGroup, MyMachGroupVM).SelPart = Nothing + ' Imposto vista solo tavola + EgtSetMachineLook(MCH_LOOK.TAB) + Dim View As VT + For Each Mach As MyMachine In CoreMap.refMachinePanelVM.MachineList + If Mach.Name = SelectedMachGroup.Machine Then + If Mach.nType = Core.ConstBeam.MachineType.BEAM Then + View = VT.ISO_SW + Else + View = VT.TOP + End If + Exit For + End If + Next + EgtSetView(View, False) + EgtZoom(ZM.ALL) + Return True + End Function + Public Function FirstNotToBeProducedIndex() As Integer Return MachGroupVMList.IndexOf(MachGroupVMList.FirstOrDefault(Function(x) DirectCast(x, MyMachGroupVM).bToBeProduced = False)) End Function diff --git a/EgtBEAMWALL.Supervisor/MachManagingThread/MachManaging.vb b/EgtBEAMWALL.Supervisor/MachManagingThread/MachManaging.vb index 511cc12e..b6df1629 100644 --- a/EgtBEAMWALL.Supervisor/MachManagingThread/MachManaging.vb +++ b/EgtBEAMWALL.Supervisor/MachManagingThread/MachManaging.vb @@ -132,7 +132,7 @@ Class MachManaging ' scrivo data start su Db barra DbControllers.m_MachGroupController.UpdateStart(nP_Prod, nP_Machgroup, dtStart) ' scrivo stato start - MachGroup.MyMachGroupM.SetState(1) + MachGroup.MyMachGroupM.SetProductionState(1) MachGroup.dtStartTime = dtStart MachGroup.NotifyPropertyChanged(NameOf(MachGroup.nCALC_State)) End If @@ -157,7 +157,7 @@ Class MachManaging ' scrivo data end su Db barra DbControllers.m_MachGroupController.UpdateEnd(nP_Prod, nP_Machgroup, dtEnd) ' scrivo stato end - MachGroup.MyMachGroupM.SetState(2) + MachGroup.MyMachGroupM.SetProductionState(2) MachGroup.dtEndTime = dtEnd MachGroup.NotifyPropertyChanged(NameOf(MachGroup.nCALC_State)) ' azzero tutte le variabilli per iniziare barra successiva diff --git a/EgtBEAMWALL.Supervisor/ZebraPrinter/LabelPrinter.vb b/EgtBEAMWALL.Supervisor/ZebraPrinter/LabelPrinter.vb index 5414f9c8..9312ea71 100644 --- a/EgtBEAMWALL.Supervisor/ZebraPrinter/LabelPrinter.vb +++ b/EgtBEAMWALL.Supervisor/ZebraPrinter/LabelPrinter.vb @@ -14,6 +14,7 @@ Module LabelPrinter Sub New() End Sub + Public Sub SetPrintVariables(PrintVariables As Dictionary(Of String, String)) m_PrintVariables = PrintVariables End Sub diff --git a/EgtBEAMWALL.ViewerOptimizer/BTLParam/BTLStructureVM.vb b/EgtBEAMWALL.ViewerOptimizer/BTLParam/BTLStructureVM.vb index 9fa1b8a6..72a534fb 100644 --- a/EgtBEAMWALL.ViewerOptimizer/BTLParam/BTLStructureVM.vb +++ b/EgtBEAMWALL.ViewerOptimizer/BTLParam/BTLStructureVM.vb @@ -680,13 +680,18 @@ Public Class BTLStructureVM ' disabilito impostazione modificato Dim DisableMgr As New DisableModifiedMgr ' recupero progetto del primo pezzo - Dim nFirstPartId As Integer = EgtGetFirstPart(True) + 'Dim nFirstPartId As Integer = EgtGetFirstPart(True) + 'Dim nCurrProjId As Integer + 'If nFirstPartId = GDB_ID.NULL Then + ' DisableMgr.ReEnable() + ' Return + 'End If + 'If Not EgtGetInfo(nFirstPartId, BTL_PRT_PROJ, nCurrProjId) Then + ' DisableMgr.ReEnable() + ' Return + 'End If Dim nCurrProjId As Integer - If nFirstPartId = GDB_ID.NULL Then - DisableMgr.ReEnable() - Return - End If - If Not EgtGetInfo(nFirstPartId, BTL_PRT_PROJ, nCurrProjId) Then + If IsNothing(Map.refProjManagerVM) OrElse IsNothing(Map.refProjManagerVM.CurrProj) Then DisableMgr.ReEnable() Return End If @@ -695,7 +700,7 @@ Public Class BTLStructureVM While AsseBaseId <> GDB_ID.NULL Dim nProj As Integer = 0 EgtGetInfo(AsseBaseId, BTL_PRT_PROJ, nProj) - If nProj = nCurrProjId Then Exit While + If nProj = Map.refProjManagerVM.CurrProj.nProjId Then Exit While AsseBaseId = EgtGetNextName(AsseBaseId, ASSEBASE) End While If AsseBaseId = GDB_ID.NULL Then diff --git a/EgtBEAMWALL.ViewerOptimizer/BTLParam/RawPartListV.xaml b/EgtBEAMWALL.ViewerOptimizer/BTLParam/RawPartListV.xaml index a0346870..a948193b 100644 --- a/EgtBEAMWALL.ViewerOptimizer/BTLParam/RawPartListV.xaml +++ b/EgtBEAMWALL.ViewerOptimizer/BTLParam/RawPartListV.xaml @@ -15,10 +15,12 @@ ScrollViewer.VerticalScrollBarVisibility="Auto" ScrollViewer.HorizontalScrollBarVisibility="Hidden" Margin="0,0,0,5" - BindingColumns="{Binding RawPartColumns}"> + BindingColumns="{Binding RawPartColumns}" + BeginningEdit="RawPartList_BeginningEdit"> - + @@ -124,7 +126,7 @@ diff --git a/EgtBEAMWALL.ViewerOptimizer/BTLParam/RawPartListV.xaml.vb b/EgtBEAMWALL.ViewerOptimizer/BTLParam/RawPartListV.xaml.vb index 3d854ee9..4772514f 100644 --- a/EgtBEAMWALL.ViewerOptimizer/BTLParam/RawPartListV.xaml.vb +++ b/EgtBEAMWALL.ViewerOptimizer/BTLParam/RawPartListV.xaml.vb @@ -1,11 +1,33 @@ -Public Class RawPartListV +Imports EgtBEAMWALL.Core + +Public Class RawPartListV Private Sub RawPartList_PreviewMouseDown(sender As Object, e As MouseButtonEventArgs) If TypeOf sender Is DataGridRow Then Dim Row As DataGridRow = DirectCast(sender, DataGridRow) + Dim RowVM As MyMachGroupVM = DirectCast(Row.DataContext, MyMachGroupVM) + ' se gia' selezionato rifaccio selezione perche' potrbbe essere selezionato un BTLPart If Not IsNothing(Row) AndAlso Row.IsSelected Then Map.refProjectVM.MachGroupPanelVM.SelectedMachGroup = Map.refProjectVM.MachGroupPanelVM.SelectedMachGroup End If + '' se in produzione impedisco modifica dei parametri + 'If RowVM.nProduction_State > ItemState.ND Then + ' e.Handled = True + 'End If + End If + End Sub + + Private Sub RawPartList_BeginningEdit(sender As Object, e As DataGridBeginningEditEventArgs) + If IsNothing(e.Row) Then Return + Dim RowVM As MyMachGroupVM = DirectCast(e.Row.DataContext, MyMachGroupVM) + '' se gia' selezionato rifaccio selezione perche' potrbbe essere selezionato un BTLPart + 'If Not IsNothing(Row) AndAlso Row.IsSelected Then + ' Map.refProjectVM.MachGroupPanelVM.SelectedMachGroup = Map.refProjectVM.MachGroupPanelVM.SelectedMachGroup + 'End If + ' se in produzione impedisco modifica dei parametri + If RowVM.nProduction_State > ItemState.ND Then + 'For Each cell In Row.Item + e.Cancel = True End If End Sub diff --git a/EgtBEAMWALL.ViewerOptimizer/CALCPanel/CALCPanelVM.vb b/EgtBEAMWALL.ViewerOptimizer/CALCPanel/CALCPanelVM.vb new file mode 100644 index 00000000..cd42b7a2 --- /dev/null +++ b/EgtBEAMWALL.ViewerOptimizer/CALCPanel/CALCPanelVM.vb @@ -0,0 +1,3 @@ +Public Class CALCPanelVM + +End Class diff --git a/EgtBEAMWALL.ViewerOptimizer/CALCPanel/CalcPanelV.xaml b/EgtBEAMWALL.ViewerOptimizer/CALCPanel/CalcPanelV.xaml new file mode 100644 index 00000000..076cc2fa --- /dev/null +++ b/EgtBEAMWALL.ViewerOptimizer/CALCPanel/CalcPanelV.xaml @@ -0,0 +1,36 @@ + + + + + + + diff --git a/EgtBEAMWALL.ViewerOptimizer/CALCPanel/CalcPanelV.xaml.vb b/EgtBEAMWALL.ViewerOptimizer/CALCPanel/CalcPanelV.xaml.vb new file mode 100644 index 00000000..d2b5fc77 --- /dev/null +++ b/EgtBEAMWALL.ViewerOptimizer/CALCPanel/CalcPanelV.xaml.vb @@ -0,0 +1,3 @@ +Public Class CalcPanelV + +End Class diff --git a/EgtBEAMWALL.ViewerOptimizer/EgtBEAMWALL.ViewerOptimizer.vbproj b/EgtBEAMWALL.ViewerOptimizer/EgtBEAMWALL.ViewerOptimizer.vbproj index f0f23da9..7dd8707f 100644 --- a/EgtBEAMWALL.ViewerOptimizer/EgtBEAMWALL.ViewerOptimizer.vbproj +++ b/EgtBEAMWALL.ViewerOptimizer/EgtBEAMWALL.ViewerOptimizer.vbproj @@ -174,6 +174,10 @@ + + CalcPanelV.xaml + + @@ -194,7 +198,6 @@ - SetUpV.xaml @@ -354,6 +357,10 @@ MSBuild:Compile Designer + + Designer + MSBuild:Compile + Designer MSBuild:Compile diff --git a/EgtBEAMWALL.ViewerOptimizer/MachGroupPanel/BeamMachGroupVM.vb b/EgtBEAMWALL.ViewerOptimizer/MachGroupPanel/BeamMachGroupVM.vb index c3ed9bfe..6127dc94 100644 --- a/EgtBEAMWALL.ViewerOptimizer/MachGroupPanel/BeamMachGroupVM.vb +++ b/EgtBEAMWALL.ViewerOptimizer/MachGroupPanel/BeamMachGroupVM.vb @@ -69,8 +69,11 @@ Public Class BeamMachGroupVM Private Sub ReadProductionState() Dim MachGroupModel As MachGroupModel = DbControllers.m_MachGroupController.FindByMachGroupId(Map.refProdManagerVM.CurrProd.nProdId, Id) - If Not String.IsNullOrEmpty(MachGroupModel.SupervisorId) Then - SetSupervisorId(MachGroupModel.SupervisorId) + If Not IsNothing(MachGroupModel) Then + If Not String.IsNullOrEmpty(MachGroupModel.SupervisorId) Then + SetSupervisorId(MachGroupModel.SupervisorId) + End If + MyMachGroupM.SetProductionState(MachGroupModel.State) End If End Sub @@ -137,10 +140,10 @@ Public Class BeamMachGroupVM ' elimino vecchio grezzo ed eseguo script creazione nuovo Dim nRawId As Integer = EgtGetFirstRawPart() While nRawId <> GDB_ID.NULL + EgtRemovePartFromRawPart(EgtGetFirstPartInRawPart(nRawId)) EgtRemoveRawPart(nRawId) nRawId = EgtGetFirstRawPart() End While - If Not ExecBeam(Map.refMainWindowVM.MainWindowM.sTempDir, Map.refMachinePanelVM.SelectedMachine.Name, CalcIntegration.CmdType.RAWPART, False) Then Return False Return True diff --git a/EgtBEAMWALL.ViewerOptimizer/OpenProjectFileDialog/OpenProjectFileDialogV.xaml.vb b/EgtBEAMWALL.ViewerOptimizer/OpenProjectFileDialog/OpenProjectFileDialogV.xaml.vb index 4e815f22..05d4a74c 100644 --- a/EgtBEAMWALL.ViewerOptimizer/OpenProjectFileDialog/OpenProjectFileDialogV.xaml.vb +++ b/EgtBEAMWALL.ViewerOptimizer/OpenProjectFileDialog/OpenProjectFileDialogV.xaml.vb @@ -1,5 +1,6 @@ Imports System.ComponentModel Imports System.IO +Imports EgtBEAMWALL.Core Imports EgtBEAMWALL.Core.ConstBeam Imports EgtUILib diff --git a/EgtBEAMWALL.ViewerOptimizer/ProjManager/ProjManagerVM.vb b/EgtBEAMWALL.ViewerOptimizer/ProjManager/ProjManagerVM.vb index 825b1061..a90568cb 100644 --- a/EgtBEAMWALL.ViewerOptimizer/ProjManager/ProjManagerVM.vb +++ b/EgtBEAMWALL.ViewerOptimizer/ProjManager/ProjManagerVM.vb @@ -589,6 +589,8 @@ Public Class ProjManagerVM DbControllers.m_ProjController.UpdateInfo(nProjId, sBTLFileName, Map.refProjectVM.BTLStructureVM.sLISTNAME, ExportDate, m_nProjType) SetCurrProj(nProjId) Map.refMainWindowVM.UpdateTitle() + ' mostro tutti i pezzi + Map.refShowBeamPanelVM.ShowAll() Else ' elimino da Db DbControllers.m_ProjController.DeleteProj(nProjId) diff --git a/EgtBEAMWALL.ViewerOptimizer/ProjectManager/ProdFileVM.vb b/EgtBEAMWALL.ViewerOptimizer/ProjectManager/ProdFileVM.vb index 8cd02f01..291df180 100644 --- a/EgtBEAMWALL.ViewerOptimizer/ProjectManager/ProdFileVM.vb +++ b/EgtBEAMWALL.ViewerOptimizer/ProjectManager/ProdFileVM.vb @@ -3,98 +3,21 @@ Imports EgtBEAMWALL.Core Imports EgtUILib Public Class ProdFileVM - Inherits ProjectFileVM - - Public ReadOnly Property ProdFileM As ProdFileM - Get - Return m_ProjectFileM - End Get - End Property - - Public ReadOnly Property nProjIdList As List(Of Integer) - Get - Return ProdFileM.nProjIdList - End Get - End Property - - Public Overrides ReadOnly Property nProdId As Integer - Get - Return ProdFileM.nProdId - End Get - End Property - - Friend Overrides ReadOnly Property sProdDirPath As String - Get - Dim sPath As String = String.Empty - If IsNothing(ProdFileM.nProdId) OrElse ProdFileM.nProdId = 0 Then Return String.Empty - Return refMainWindowVM.MainWindowM.sProdsDir & "\" & nProdId.ToString("0000") - End Get - End Property - Friend Overrides ReadOnly Property sProdPath As String - Get - Dim sPath As String = String.Empty - If IsNothing(ProdFileM.nProdId) OrElse ProdFileM.nProdId = 0 Then Return String.Empty - Return refMainWindowVM.MainWindowM.sProdsDir & "\" & nProdId.ToString("0000") & "\" & nProdId.ToString("0000") & ".nge" - End Get - End Property - - Public Overrides Property bIsNew As Boolean - Get - Return ProdFileM.bIsNew - End Get - Set(value As Boolean) - ProdFileM.bIsNew = value - End Set - End Property - - Public ReadOnly Property sName As String - Get - Return ProdFileM.sName - End Get - End Property - - Private m_sBTLFileName As String - Public ReadOnly Property sBTLFileName As String - Get - Return m_sBTLFileName - End Get - End Property + Inherits Core.ProdFileVM #Region "CONSTRUCTORS" Sub New(ProdFileM As ProdFileM) - m_ProjectFileM = ProdFileM + MyBase.New(ProdFileM) ' aggiungo nome btl + Dim sBTLFileName As String = "" For Each CurrProj In nProjIdList Dim TempProj As ProjFileM = DbControllers.m_ProjController.FindByProjIdConv(CurrProj) - If Not IsNothing(TempProj) Then m_sBTLFileName& = TempProj.sListName + If Not IsNothing(TempProj) Then sBTLFileName &= TempProj.sListName Next + SetBTLFileName(sBTLFileName) End Sub - 'Sub New(nProjectType As ProjectType, ProjectFileName As String) - ' m_nProjectType = nProjectType - ' If m_nProjectType = ProjectType.PROJ Then - ' Dim DataFromFileName As String() = ProjectFileName.Split(FILENAMESEPARATOR) - ' If Not String.IsNullOrEmpty(DataFromFileName(0)) Then - ' Integer.TryParse(DataFromFileName(0), m_nProjId) - ' End If - ' If Not String.IsNullOrEmpty(DataFromFileName(1)) Then - ' Integer.TryParse(DataFromFileName(1), m_nProdId) - ' Else - ' m_nProdId = 0 - ' End If - ' If Not String.IsNullOrEmpty(DataFromFileName(2)) Then - ' m_BTLFileName = DataFromFileName(2) - ' End If - ' ElseIf m_nProjectType = ProjectType.PROD Then - ' Integer.TryParse(ProjectFileName, m_nProdId) - ' End If - 'End Sub - - 'Sub New(nProjectType As ProjectType, nProjId As Integer, nProdId As Integer, sBTLFileName As String) - ' MyBase.New(nProjectType, nProjId, nProdId, sBTLFileName) - 'End Sub - #End Region ' CONSTRUCTORS Friend Function GetProjPath(nProjId As Integer) diff --git a/EgtBEAMWALL.ViewerOptimizer/ProjectManager/ProjFileVM.vb b/EgtBEAMWALL.ViewerOptimizer/ProjectManager/ProjFileVM.vb index 32798f73..6881e91e 100644 --- a/EgtBEAMWALL.ViewerOptimizer/ProjectManager/ProjFileVM.vb +++ b/EgtBEAMWALL.ViewerOptimizer/ProjectManager/ProjFileVM.vb @@ -3,121 +3,18 @@ Imports EgtBEAMWALL.Core Imports EgtUILib Public Class ProjFileVM - Inherits ProjectFileVM - - Public ReadOnly Property ProjFileM As ProjFileM - Get - Return m_ProjectFileM - End Get - End Property - - Public Overrides ReadOnly Property nProjId As Integer - Get - Return ProjFileM.nProjId - End Get - End Property - - Public Overrides ReadOnly Property nProdId As Integer - Get - Return ProjFileM.nProdId - End Get - End Property - - Friend Overrides ReadOnly Property sProjDirPath As String - Get - If IsNothing(ProjFileM.nProjId) OrElse ProjFileM.nProjId = 0 Then Return String.Empty - Return refMainWindowVM.MainWindowM.sProjsDir & "\" & nProjId.ToString("0000") - End Get - End Property - Friend Overrides ReadOnly Property sProjPath As String - Get - Dim sPath As String = String.Empty - If IsNothing(ProjFileM.nProjId) OrElse ProjFileM.nProjId = 0 Then Return String.Empty - sPath = refMainWindowVM.MainWindowM.sProjsDir & "\" & nProjId.ToString("0000") & "\" & nProjId.ToString("0000") & ".nge" - Return sPath - End Get - End Property - - Friend Overrides ReadOnly Property sProdDirPath As String - Get - Dim sPath As String = String.Empty - If IsNothing(ProjFileM.nProdId) OrElse ProjFileM.nProdId = 0 Then Return String.Empty - Return refMainWindowVM.MainWindowM.sProdsDir & "\" & nProdId.ToString("0000") - End Get - End Property - Friend Overrides ReadOnly Property sProdPath As String - Get - Dim sPath As String = String.Empty - If IsNothing(ProjFileM.nProdId) OrElse ProjFileM.nProdId = 0 Then Return String.Empty - Return refMainWindowVM.MainWindowM.sProdsDir & "\" & nProdId.ToString("0000") & "\" & nProdId.ToString("0000") & ".nge" - End Get - End Property - - Public Overrides Property bIsNew As Boolean - Get - Return ProjFileM.bIsNew - End Get - Set(value As Boolean) - ProjFileM.bIsNew = value - End Set - End Property - - Public ReadOnly Property sBTLFileName As String - Get - Return ProjFileM.sBTLFileName - End Get - End Property - - Public ReadOnly Property sListName As String - Get - Return ProjFileM.sListName - End Get - End Property - - Public ReadOnly Property dtExportDate As DateTime - Get - Return ProjFileM.dtExportDate - End Get - End Property + Inherits Core.ProjFileVM #Region "CONSTRUCTORS" Sub New(ProjectFileM As ProjFileM) - m_ProjectFileM = ProjectFileM + MyBase.New(ProjectFileM) End Sub - 'Sub New(nProjectType As ProjectType, ProjectFileName As String) - ' m_nProjectType = nProjectType - ' If m_nProjectType = ProjectType.PROJ Then - ' Dim DataFromFileName As String() = ProjectFileName.Split(FILENAMESEPARATOR) - ' If Not String.IsNullOrEmpty(DataFromFileName(0)) Then - ' Integer.TryParse(DataFromFileName(0), m_nProjId) - ' End If - ' If Not String.IsNullOrEmpty(DataFromFileName(1)) Then - ' Integer.TryParse(DataFromFileName(1), m_nProdId) - ' Else - ' m_nProdId = 0 - ' End If - ' If Not String.IsNullOrEmpty(DataFromFileName(2)) Then - ' m_BTLFileName = DataFromFileName(2) - ' End If - ' ElseIf m_nProjectType = ProjectType.PROD Then - ' Integer.TryParse(ProjectFileName, m_nProdId) - ' End If - 'End Sub - - 'Sub New(nProjectType As ProjectType, nProjId As Integer, nProdId As Integer, sBTLFileName As String) - ' MyBase.New(nProjectType, nProjId, nProdId, sBTLFileName) - 'End Sub - #End Region ' CONSTRUCTORS #Region "METHODS" - Public Sub SetBTLFileName(BTLFileName As String) - ProjFileM.sBTLFileName = BTLFileName - End Sub - ' funzione che restituisce le parti di nome file Friend Shared Function VerifyProjectFile(nProjectType As ProjectType, ProjectFileName As String, ByRef nProjId As Integer, ByRef nProdId As Integer, ByRef sBTLFileName As String) As Boolean If nProjectType = ProjectType.PROJ Then diff --git a/EgtBEAMWALL.ViewerOptimizer/SceneHost/MySceneHostVM.vb b/EgtBEAMWALL.ViewerOptimizer/SceneHost/MySceneHostVM.vb index 77a904ee..bfeb13c7 100644 --- a/EgtBEAMWALL.ViewerOptimizer/SceneHost/MySceneHostVM.vb +++ b/EgtBEAMWALL.ViewerOptimizer/SceneHost/MySceneHostVM.vb @@ -601,8 +601,6 @@ Public Class MySceneHostVM ' scrivo info proj su layer AsseBase Dim nAsseBaseLayer As Integer = EgtGetFirstNameInGroup(GDB_ID.ROOT, ASSEBASE) EgtSetInfo(nAsseBaseLayer, BTL_PRT_PROJ, Map.refProjManagerVM.nLoadingProjId) - ' mostro tutti i pezzi - Map.refShowBeamPanelVM.ShowAll() Else Dim sMsg As String = EgtMsg(10006) & " '" & sFile & "'" 'Error importing file MessageBox.Show(Application.Current.MainWindow, sMsg, EgtMsg(10001), MessageBoxButton.OK, MessageBoxImage.Error) ' Error diff --git a/EgtBEAMWALL.ViewerOptimizer/SupervisorCommThread/SupervisorComm.vb b/EgtBEAMWALL.ViewerOptimizer/SupervisorCommThread/SupervisorComm.vb index 5e2a9788..a34f7ecd 100644 --- a/EgtBEAMWALL.ViewerOptimizer/SupervisorCommThread/SupervisorComm.vb +++ b/EgtBEAMWALL.ViewerOptimizer/SupervisorCommThread/SupervisorComm.vb @@ -1,4 +1,5 @@ -Imports EgtBEAMWALL.DataLayer.DatabaseModels +Imports EgtBEAMWALL.Core +Imports EgtBEAMWALL.DataLayer.DatabaseModels Public Class SupervisorComm @@ -10,6 +11,8 @@ Public Class SupervisorComm Friend Sub Timer_Tick() ' se sono in pagina vista If Map.refMainMenuVM.SelPage = Pages.VIEW Then + ' se non c'e' un progetto attivo, esco + If IsNothing(Map.refProjManagerVM.CurrProj) Then Return ' verifico se c'e' un progetto aperto o in caricamento 'If IsNothing(Map.refProjManagerVM.CurrProj) OrElse Map.refProjManagerVM.bLoadingProj Then Return ' verifico se c'e' una sessione aperta sul progetto corrente @@ -22,18 +25,39 @@ Public Class SupervisorComm Next If nModificationIndex = -1 Then Return ' verifico se ci sono modifiche - 'If nModificationIndex <> Map.refProjManagerVM.CurrProj.nModificationIndex Then - ' ' aggiorno stati dei pezzi e colore di visualizzazione + If nModificationIndex <> Map.refProjManagerVM.CurrProj.nModificationIndex Then + ' recupero elementi modificati + Dim MachGroupList As List(Of StatusMapModel) = DbControllers.m_StatusMapController.GetFrom(Map.refProjManagerVM.CurrProj.nModificationIndex + 1) + Dim bReloadFile As Boolean = False + For Each MachGroupModification In MachGroupList + Select Case MachGroupModification.Operation + Case Core.StatusMapOpType.PartStart + ' aggiorno stati dei pezzi e colore di visualizzazione - 'End If + + Case Core.StatusMapOpType.PartEnd + + + Case Core.StatusMapOpType.MachGroupRemovedFromSupervisor + Dim Machgroup As MyMachGroupVM = Map.refProjectVM.MachGroupPanelVM.MachGroupVMList.FirstOrDefault(Function(x) x.Id = MachGroupModification.ItemId) + Machgroup.ResetSupervisorId() + End Select + Next + + + End If ' se arriva richiesta da supervisore di blocco e salvataggio + ' verifico se ho aperto lo stesso progetto + ' chiedo se salvare ' blocco interfaccia fino a notifica di sblocco ' se sono in pagina ottimizzatore ElseIf Map.refMainMenuVM.SelPage = Pages.MACHINING Then + ' se non c'e' un progetto attivo, esco + If IsNothing(Map.refProdManagerVM.CurrProd) Then Return ' verifico se c'e' un progetto aperto o in caricamento 'If IsNothing(Map.refProdManagerVM.CurrProd) OrElse Map.refProdManagerVM.bLoadingProd Then Return ' verifico se c'e' una sessione aperta sul progetto corrente @@ -46,17 +70,33 @@ Public Class SupervisorComm Next If nModificationIndex = -1 Then Return ' verifico se ci sono modifiche - 'If nModificationIndex <> Map.refProjManagerVM.CurrProj.nModificationIndex Then - ' ' aggiorno stati dei pezzi e colore di visualizzazione - - 'End If - ' se arriva richiesta da supervisore di blocco e salvataggio - - ' chiedo se salvare - - ' blocco interfaccia fino a notifica di sblocco + If nModificationIndex <> Map.refProdManagerVM.CurrProd.nModificationIndex Then + ' recupero elementi modificati + Dim MachGroupList As List(Of StatusMapModel) = DbControllers.m_StatusMapController.GetFrom(Map.refProdManagerVM.CurrProd.nModificationIndex + 1) + Dim bReloadFile As Boolean = False + For Each MachGroupModification In MachGroupList + Select Case MachGroupModification.Operation + Case Core.StatusMapOpType.PartStart + Case Core.StatusMapOpType.PartEnd + + + Case Core.StatusMapOpType.MachGroupRemovedFromSupervisor + Dim Machgroup As MyMachGroupVM = Map.refProjectVM.MachGroupPanelVM.MachGroupVMList.FirstOrDefault(Function(x) x.Id = MachGroupModification.ItemId) + Machgroup.ResetSupervisorId() + End Select + Next + ' se arriva richiesta da supervisore di blocco e salvataggio + + ' verifico se ho aperto lo stesso progetto + + ' se si, chiedo se salvare + + ' blocco interfaccia fino a notifica di sblocco + + + End If End If ' se c'e' un progetto aperto o in caricamento 'If IsNothing(Map.refProdManagerVM.CurrProd) OrElse Map.refProdManagerVM.bLoadingProd Then Return diff --git a/EgtBEAMWALL.ViewerOptimizer/TopPanel/TopPanelVM.vb b/EgtBEAMWALL.ViewerOptimizer/TopPanel/TopPanelVM.vb index 61e7fa3a..661f0c17 100644 --- a/EgtBEAMWALL.ViewerOptimizer/TopPanel/TopPanelVM.vb +++ b/EgtBEAMWALL.ViewerOptimizer/TopPanel/TopPanelVM.vb @@ -48,7 +48,7 @@ Public Class TopPanelVM Public ReadOnly Property MovePart_Visibility As Visibility Get - If Not IsNothing(Map.refProjectVM.BTLStructureVM) Then + If Not IsNothing(Map.refProjectVM) AndAlso Not IsNothing(Map.refProjectVM.BTLStructureVM) Then Return If(Map.refProjectVM.BTLStructureVM.nPROJTYPE = BWType.BEAM, Visibility.Visible, Visibility.Collapsed) End If Return Visibility.Collapsed @@ -150,11 +150,20 @@ Public Class TopPanelVM ''' Public Sub ProduceRawPart() If IsNothing(Map.refProdManagerVM.CurrProd) Then Return - Dim SelMachGroup As MyMachGroupVM = Map.refMachGroupPanelVM.SelectedMachGroup - If IsNothing(SelMachGroup) Then Return - If SelMachGroup.nGlobalState = CalcStates.OK Or SelMachGroup.nGlobalState = CalcStates.INFO Then - DbControllers.m_MachGroupController.UpdateSupervisor(Map.refProdManagerVM.CurrProd.nProdId, SelMachGroup.Id, DbControllers.m_SupervisorId) - DbControllers.m_MachGroupController.UpdateOrder(Map.refProdManagerVM.CurrProd.nProdId, SelMachGroup.Id, 10000) + Produce(Map.refMachGroupPanelVM.SelectedMachGroup) + End Sub + + Private Sub Produce(MachGroup As MyMachGroupVM) + If IsNothing(MachGroup) Then Return + If MachGroup.nGlobalState = CalcStates.OK Or MachGroup.nGlobalState = CalcStates.INFO Then + ' se ci sono modifiche, salvo il pogetto + If EgtGetModified() Then + Map.refProdManagerVM.Save() + End If + ' mando al supervisore + DbControllers.m_MachGroupController.UpdateSupervisor(Map.refProdManagerVM.CurrProd.nProdId, MachGroup.Id, DbControllers.m_SupervisorId) + DbControllers.m_MachGroupController.UpdateOrder(Map.refProdManagerVM.CurrProd.nProdId, MachGroup.Id, 10000) + MachGroup.SentToSupervisor() Else MessageBox.Show("Impossibile mandarlo in produzione perche' non lavorabile!") End If @@ -183,7 +192,7 @@ Public Class TopPanelVM If IsNothing(Map.refProdManagerVM.CurrProd) Then Return If Map.refMachGroupPanelVM.MachGroupVMList.Count > 0 Then For Each Machgroup In Map.refMachGroupPanelVM.MachGroupVMList - DbControllers.m_MachGroupController.UpdateSupervisor(Map.refProdManagerVM.CurrProd.nProdId, Machgroup.Id, DbControllers.m_SupervisorId) + Produce(Machgroup) Next End If End Sub