417 lines
12 KiB
VB.net
417 lines
12 KiB
VB.net
Imports System.Collections.ObjectModel
|
|
Imports System.IO
|
|
Imports EgtBEAMWALL.Core
|
|
Imports EgtUILib
|
|
Imports EgtWPFLib5
|
|
Imports MigraDoc.DocumentObjectModel
|
|
Imports MigraDoc.Rendering
|
|
|
|
Public Class StatisticsVM
|
|
Inherits VMBase
|
|
|
|
#Region "FIELDS & PROPERTIES"
|
|
|
|
Friend Event m_CloseWindow(bDialogResult As Boolean)
|
|
|
|
Public Enum StatisticsTab As Integer
|
|
OPTIMIZER = 0
|
|
RAWPART = 1
|
|
End Enum
|
|
|
|
Private m_SelStatisticsTab As StatisticsTab
|
|
Public Property SelStatisticsTab As Integer
|
|
Get
|
|
Return m_SelStatisticsTab
|
|
End Get
|
|
Set(value As Integer)
|
|
m_SelStatisticsTab = value
|
|
End Set
|
|
End Property
|
|
|
|
Private m_bRawPart_IsChecked As Boolean
|
|
Public Property bRawPart_IsChecked As Boolean
|
|
Get
|
|
Return m_bRawPart_IsChecked
|
|
End Get
|
|
Set(value As Boolean)
|
|
m_bRawPart_IsChecked = value
|
|
If value Then
|
|
m_SelStatisticsTab = StatisticsTab.RAWPART
|
|
Else
|
|
m_SelStatisticsTab = StatisticsTab.OPTIMIZER
|
|
End If
|
|
NotifyPropertyChanged(NameOf(SelStatisticsTab))
|
|
End Set
|
|
End Property
|
|
|
|
Private m_StatisticsColumns As New ObservableCollection(Of EgtDataGridColumn)
|
|
Public Property StatisticsColumns As ObservableCollection(Of EgtDataGridColumn)
|
|
Get
|
|
Return m_StatisticsColumns
|
|
End Get
|
|
Set(value As ObservableCollection(Of EgtDataGridColumn))
|
|
m_StatisticsColumns = value
|
|
End Set
|
|
End Property
|
|
|
|
Private m_OptimizerStatisticsColumns As New ObservableCollection(Of EgtDataGridColumn)
|
|
Public Property OptimizerStatisticsColumns As ObservableCollection(Of EgtDataGridColumn)
|
|
Get
|
|
Return m_OptimizerStatisticsColumns
|
|
End Get
|
|
Set(value As ObservableCollection(Of EgtDataGridColumn))
|
|
m_OptimizerStatisticsColumns = value
|
|
End Set
|
|
End Property
|
|
|
|
Private m_RawPartStatisticsColumns As New ObservableCollection(Of EgtDataGridColumn)
|
|
Public Property RawPartStatisticsColumns As ObservableCollection(Of EgtDataGridColumn)
|
|
Get
|
|
Return m_RawPartStatisticsColumns
|
|
End Get
|
|
Set(value As ObservableCollection(Of EgtDataGridColumn))
|
|
m_RawPartStatisticsColumns = value
|
|
End Set
|
|
End Property
|
|
|
|
Private m_RawPartList As New ObservableCollection(Of SParam)
|
|
Public ReadOnly Property RawPartList As ObservableCollection(Of SParam)
|
|
Get
|
|
Return m_RawPartList
|
|
End Get
|
|
End Property
|
|
|
|
' Definizione comandi
|
|
Private m_cmdPrintPDF As ICommand
|
|
Private m_cmdOk As ICommand
|
|
|
|
#Region "Messages"
|
|
|
|
Public ReadOnly Property PDN_Msg As String
|
|
Get
|
|
Return Statistic_Messages.PDN_Msg
|
|
End Get
|
|
End Property
|
|
|
|
Public ReadOnly Property ID_Msg As String
|
|
Get
|
|
Return Statistic_Messages.ID_Msg
|
|
End Get
|
|
End Property
|
|
|
|
Public ReadOnly Property DO_Msg As String
|
|
Get
|
|
Return Statistic_Messages.DO_Msg
|
|
End Get
|
|
End Property
|
|
|
|
Public ReadOnly Property W_Msg As String
|
|
Get
|
|
Return Statistic_Messages.W_Msg
|
|
End Get
|
|
End Property
|
|
|
|
Public ReadOnly Property H_Msg As String
|
|
Get
|
|
Return Statistic_Messages.H_Msg
|
|
End Get
|
|
End Property
|
|
|
|
Public ReadOnly Property L_Msg As String
|
|
Get
|
|
Return Statistic_Messages.L_Msg
|
|
End Get
|
|
End Property
|
|
|
|
Public ReadOnly Property NAM_Msg As String
|
|
Get
|
|
Return Statistic_Messages.NAM_Msg
|
|
End Get
|
|
End Property
|
|
|
|
Public ReadOnly Property MAT_Msg As String
|
|
Get
|
|
Return Statistic_Messages.MAT_Msg
|
|
End Get
|
|
End Property
|
|
|
|
Public ReadOnly Property CNT_Msg As String
|
|
Get
|
|
Return Statistic_Messages.CNT_Msg
|
|
End Get
|
|
End Property
|
|
|
|
Public ReadOnly Property ADDED_Msg As String
|
|
Get
|
|
Return Statistic_Messages.ADDED_Msg
|
|
End Get
|
|
End Property
|
|
|
|
Public ReadOnly Property INPROD_Msg As String
|
|
Get
|
|
Return Statistic_Messages.INPROD_Msg
|
|
End Get
|
|
End Property
|
|
|
|
Public ReadOnly Property DONE_Msg As String
|
|
Get
|
|
Return Statistic_Messages.DONE_Msg
|
|
End Get
|
|
End Property
|
|
|
|
Public ReadOnly Property GRP_Msg As String
|
|
Get
|
|
Return Statistic_Messages.GRP_Msg
|
|
End Get
|
|
End Property
|
|
|
|
Public ReadOnly Property UNIT_VOLUME_Msg As String
|
|
Get
|
|
Return Statistic_Messages.UNIT_VOLUME_Msg
|
|
End Get
|
|
End Property
|
|
|
|
Public ReadOnly Property TOT_VOLUME_Msg As String
|
|
Get
|
|
Return Statistic_Messages.TOT_VOLUME_Msg
|
|
End Get
|
|
End Property
|
|
|
|
Public ReadOnly Property UNIT_TIME_Msg As String
|
|
Get
|
|
Return Statistic_Messages.UNIT_TIME_Msg
|
|
End Get
|
|
End Property
|
|
|
|
Public ReadOnly Property TOT_TIME_Msg As String
|
|
Get
|
|
Return Statistic_Messages.TOT_TIME_Msg
|
|
End Get
|
|
End Property
|
|
|
|
Public ReadOnly Property BTLTotParts_Msg As String
|
|
Get
|
|
Return Statistic_Messages.BTLTotParts_Msg
|
|
End Get
|
|
End Property
|
|
|
|
Public ReadOnly Property BTLTotVolume_Msg As String
|
|
Get
|
|
Return Statistic_Messages.BTLTotVolume_Msg
|
|
End Get
|
|
End Property
|
|
|
|
Public ReadOnly Property BTLTotEstimatedTime_Msg As String
|
|
Get
|
|
Return Statistic_Messages.BTLTotEstimatedTime_Msg
|
|
End Get
|
|
End Property
|
|
|
|
Public ReadOnly Property BTLTotTime_Msg As String
|
|
Get
|
|
Return Statistic_Messages.BTLTotTime_Msg
|
|
End Get
|
|
End Property
|
|
|
|
Public ReadOnly Property BTLRemainingTime_Msg As String
|
|
Get
|
|
Return Statistic_Messages.BTLRemainingTime_Msg
|
|
End Get
|
|
End Property
|
|
|
|
Public ReadOnly Property TotMachGroups_Msg As String
|
|
Get
|
|
Return Statistic_Messages.TotMachGroups_Msg
|
|
End Get
|
|
End Property
|
|
|
|
Public ReadOnly Property TotCNTParts_Msg As String
|
|
Get
|
|
Return Statistic_Messages.TotCNTParts_Msg
|
|
End Get
|
|
End Property
|
|
|
|
Public ReadOnly Property TotADDEDParts_Msg As String
|
|
Get
|
|
Return Statistic_Messages.TotADDEDParts_Msg
|
|
End Get
|
|
End Property
|
|
|
|
Public ReadOnly Property TotINPRODParts_Msg As String
|
|
Get
|
|
Return Statistic_Messages.TotINPRODParts_Msg
|
|
End Get
|
|
End Property
|
|
|
|
Public ReadOnly Property TotDONEParts_Msg As String
|
|
Get
|
|
Return Statistic_Messages.TotDONEParts_Msg
|
|
End Get
|
|
End Property
|
|
|
|
Public ReadOnly Property Used_Msg As String
|
|
Get
|
|
Return Statistic_Messages.Used_Msg
|
|
End Get
|
|
End Property
|
|
|
|
Public ReadOnly Property Waste_Msg As String
|
|
Get
|
|
Return Statistic_Messages.Waste_Msg
|
|
End Get
|
|
End Property
|
|
|
|
Public ReadOnly Property QTY_Msg As String
|
|
Get
|
|
Return Statistic_Messages.QTY_Msg
|
|
End Get
|
|
End Property
|
|
|
|
Public ReadOnly Property CopyToClipboard_Msg As String
|
|
Get
|
|
Return EgtMsg(61841)
|
|
End Get
|
|
End Property
|
|
|
|
Public ReadOnly Property PrintPDF_Msg As String
|
|
Get
|
|
Return EgtMsg(61727)
|
|
End Get
|
|
End Property
|
|
|
|
#End Region ' Messages
|
|
|
|
#End Region ' FIELDS & PROPERTIES
|
|
|
|
#Region "CONSTRUCTOR"
|
|
|
|
Sub New()
|
|
' Aggiungo riferimento a Map
|
|
Map.SetRefStatisticsVM(Me)
|
|
' carico le colonne della datagrid
|
|
GetPrivateProfileColumns(S_STATISTICS, StatisticsColumns)
|
|
GetPrivateProfileColumns(S_OPTIMIZERSTATISTICS, OptimizerStatisticsColumns)
|
|
GetPrivateProfileColumns(S_RAWPARTSTATISTICS, RawPartStatisticsColumns)
|
|
End Sub
|
|
|
|
#End Region ' CONSTRUCTOR
|
|
|
|
#Region "METHODS"
|
|
|
|
Friend Sub LoadRawPart()
|
|
m_RawPartList.Clear()
|
|
Select Case ProjectManagerVM.CurrProd.nType
|
|
Case BWType.BEAM
|
|
For Each MachGroup As MyMachGroupVM In Map.refProjectVM.MachGroupPanelVM.MachGroupVMList
|
|
Dim RawPart As SParam = m_RawPartList.FirstOrDefault(Function(x) x.SectXMat.dW = MachGroup.dW AndAlso x.SectXMat.dH = MachGroup.dH AndAlso x.dL = MachGroup.dL AndAlso x.SectXMat.sMaterial.Any(Function(y) MachGroup.Section.sMaterial.Any(Function(z) z = y)))
|
|
If Not IsNothing(RawPart) Then
|
|
RawPart.nQuantity += 1
|
|
Else
|
|
m_RawPartList.Add(New SParam(MachGroup.Section, MachGroup.dL, 1, True))
|
|
End If
|
|
Next
|
|
Case BWType.WALL
|
|
For Each MachGroup As MyMachGroupVM In Map.refProjectVM.MachGroupPanelVM.MachGroupVMList
|
|
Dim RawPart As SParam = m_RawPartList.FirstOrDefault(Function(x) x.dW = MachGroup.dW AndAlso x.SectXMat.dH = MachGroup.dH AndAlso x.dL = MachGroup.dL AndAlso x.SectXMat.sMaterial.Any(Function(y) MachGroup.Section.sMaterial.Any(Function(z) z = y)))
|
|
If Not IsNothing(RawPart) Then
|
|
RawPart.nQuantity += 1
|
|
Else
|
|
m_RawPartList.Add(New SParam(MachGroup.Section, MachGroup.dW, MachGroup.dL, 1, True))
|
|
End If
|
|
Next
|
|
End Select
|
|
End Sub
|
|
|
|
Public Sub CreatePrintPDF(ActivePage As Integer, bPreview As Boolean)
|
|
LoadingWndHelper.OpenLoadingWnd(ActiveIds.CREATINGPDF, 1, "Creating PDF", "", 100)
|
|
Try
|
|
' creo documento MigraDoc
|
|
Dim document As Document = PDFHelper.CreateStatReport(ActivePage, bPreview)
|
|
Dim documentPath As String = Map.refMainWindowVM.MainWindowM.sTempDir & "\MigraDoc.mdddl"
|
|
MigraDoc.DocumentObjectModel.IO.DdlWriter.WriteToFile(document, documentPath)
|
|
Dim renderer As New PdfDocumentRenderer(True) With {
|
|
.Document = document
|
|
}
|
|
renderer.RenderDocument()
|
|
' salvo il documento
|
|
Dim sFileName As String = ""
|
|
|
|
If (ActivePage = Pages.VIEW AndAlso Not bPreview) OrElse (ActivePage = Pages.ONLYPRODPAGE AndAlso Not Map.refInstrumentPanelVM.bVisOtt_Selected AndAlso Not bPreview) Then
|
|
sFileName = ProjectManagerVM.CurrProj.sProjDirPath & "\" & "Statistics.pdf"
|
|
ElseIf ActivePage = Pages.VIEW OrElse Pages.ONLYPRODPAGE AndAlso bPreview Then
|
|
sFileName = Map.refMainWindowVM.MainWindowM.sTempDir & "\Statistics.pdf" ' Se la pagina e' 0 e' bPreview e' True creo PDF Visualization
|
|
ElseIf (ActivePage = Pages.MACHINING AndAlso Not bPreview) OrElse (ActivePage = Pages.ONLYPRODPAGE AndAlso Map.refInstrumentPanelVM.bVisOtt_Selected AndAlso Not bPreview) Then
|
|
sFileName = ProjectManagerVM.CurrProd.sProdDirPath & "\" & ProjectManagerVM.CurrProd.sProdId & " - " & "Statistics.pdf"
|
|
ElseIf ActivePage = Pages.MACHINING OrElse Pages.ONLYPRODPAGE AndAlso bPreview Then ' Se la pagina e' 1 e' bPreview e' True creo PDF Optimizer
|
|
sFileName = Map.refMainWindowVM.MainWindowM.sTempDir & "\Statistics.pdf"
|
|
If Not bOnlyProd Then PrevSelect()
|
|
End If
|
|
|
|
' avvio il visualizzatore
|
|
renderer.PdfDocument.Save(sFileName)
|
|
' cancello file MigraDoc
|
|
File.Delete(documentPath)
|
|
|
|
If bPreview Then
|
|
Else
|
|
Process.Start(sFileName)
|
|
End If
|
|
Catch ex As Exception
|
|
EgtOutLog("Error genereting pdf: " & ex.ToString())
|
|
End Try
|
|
LoadingWndHelper.CloseLoadingWnd(ActiveIds.CREATINGPDF)
|
|
|
|
End Sub
|
|
|
|
Private Shared Sub PrevSelect()
|
|
' ripristino selezione precedente
|
|
Dim nCurrMachGroupId As Integer = EgtGetCurrMachGroup()
|
|
If Not IsNothing(Map.refProjectVM.MachGroupPanelVM.SelectedMachGroup) AndAlso nCurrMachGroupId <> Map.refProjectVM.MachGroupPanelVM.SelectedMachGroup.Id Then
|
|
EgtSetCurrMachGroup(Map.refProjectVM.MachGroupPanelVM.SelectedMachGroup.Id)
|
|
End If
|
|
Core.ViewPanelVM.BWSetView(If(Core.ViewPanelVM.Type = BWType.BEAM, VT.ISO_SW, VT.TOP), False)
|
|
EgtZoom(ZM.ALL, True)
|
|
End Sub
|
|
|
|
#End Region ' PrintPDF
|
|
|
|
#Region "COMMANDS"
|
|
|
|
#Region "Ok"
|
|
|
|
Public ReadOnly Property Ok_Command As ICommand
|
|
Get
|
|
If m_cmdOk Is Nothing Then
|
|
m_cmdOk = New Command(AddressOf Ok)
|
|
End If
|
|
Return m_cmdOk
|
|
End Get
|
|
End Property
|
|
|
|
Public Sub Ok()
|
|
RaiseEvent m_CloseWindow(True)
|
|
End Sub
|
|
|
|
#End Region ' Ok
|
|
|
|
#Region "PrintPDF"
|
|
|
|
Public ReadOnly Property PrintPDF_Command As ICommand
|
|
Get
|
|
If m_cmdPrintPDF Is Nothing Then
|
|
m_cmdPrintPDF = New Command(AddressOf PrintPDF)
|
|
End If
|
|
Return m_cmdPrintPDF
|
|
End Get
|
|
End Property
|
|
|
|
Public Sub PrintPDF()
|
|
Configuration.CreatePrintPDF(Map.refMainMenuVM.SelPage, False)
|
|
End Sub
|
|
|
|
#End Region ' PrintPDF
|
|
|
|
#End Region ' COMMANDS
|
|
|
|
End Class
|