Compare commits
141 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 2b8342111a | |||
| d57dd30fa0 | |||
| 06d3c53122 | |||
| 5a20897641 | |||
| ae65d448a9 | |||
| df9395e808 | |||
| 3d867dfa3a | |||
| 03a6936f8a | |||
| a4a48f3c3b | |||
| 1d7c390180 | |||
| adb4636513 | |||
| fb0c02e790 | |||
| b5ef4567b6 | |||
| 1a6c2fa340 | |||
| 21784ab491 | |||
| d5147e3dd1 | |||
| bfb1dea84b | |||
| e927a5334a | |||
| 3310eb039c | |||
| 946b4e0e42 | |||
| ff7661f1e0 | |||
| f4eaaf2d59 | |||
| b5fef75133 | |||
| 09035439bd | |||
| 22ed5c599c | |||
| 8822da5d09 | |||
| c4d01b7aff | |||
| c8e962d709 | |||
| cb7819c687 | |||
| ebd9092565 | |||
| 167c6bf39d | |||
| def20a48a3 | |||
| 0945aaf9d0 | |||
| 07dbd89849 | |||
| fa511c5c2c | |||
| 6c065fedfc | |||
| 7858480cde | |||
| c388cb7b21 | |||
| 4d11248b0e | |||
| e2040f2153 | |||
| b19b44f86d | |||
| eb37f8bb8f | |||
| b83a03e36a | |||
| 6d11f6345f | |||
| 32e8cf7923 | |||
| ac2167f5ea | |||
| 8236b0ff96 | |||
| 78cde47c01 | |||
| 2d51bbaeb5 | |||
| 620a87105a | |||
| ab40ad056c | |||
| 62f85d6f92 | |||
| 01ac9d36da | |||
| a466e85b70 | |||
| 5c9fd216bc | |||
| 4685717a8a | |||
| 145b3ccbe8 | |||
| 4cea9959c9 | |||
| 7118efbc2d | |||
| 4a4613454d | |||
| 45464ab85d | |||
| 22539226e6 | |||
| e9eaff2685 | |||
| 66567d8ec6 | |||
| 1715b5c5b1 | |||
| 2ad4c5af21 | |||
| 27a1618265 | |||
| a3c9d256b4 | |||
| 5c6febf055 | |||
| feecab95ab | |||
| d5a338a902 | |||
| 8763400f06 | |||
| 34ddc826f8 | |||
| 1b3c46fbae | |||
| b05fbac9fe | |||
| 42353d4b04 | |||
| 52ce04727a | |||
| 87b4ebca64 | |||
| c7a50d88b7 | |||
| fef7112f46 | |||
| 98025f02a4 | |||
| f4b4d5ee90 | |||
| 6337113437 | |||
| b7b2606c84 | |||
| c79a584ab7 | |||
| f7435ab895 | |||
| ccd9a70c0c | |||
| 04c8f8eba2 | |||
| e8870ca050 | |||
| 6900eedd63 | |||
| 5848bc2b0c | |||
| 795f202b0c | |||
| e41cb24fc9 | |||
| ed72c7a4e1 | |||
| 8c3ff80547 | |||
| 28de1c6791 | |||
| 4e814d73c6 | |||
| 402015af8a | |||
| e4d1514047 | |||
| 33da807eb5 | |||
| 43a755febd | |||
| 24ed23f161 | |||
| ba6a718119 | |||
| 9a7db0207d | |||
| e35f51e0c8 | |||
| 4502f1162c | |||
| 70f26de43f | |||
| ef626eaaf9 | |||
| 2ebbfd5662 | |||
| 5244caf8e2 | |||
| 89ab7bf961 | |||
| 331b9341be | |||
| fe5d09a8bd | |||
| 312722d3c3 | |||
| 5f37a796e6 | |||
| 0a9fe6f8b6 | |||
| 8f12378299 | |||
| affd519bc8 | |||
| 9434211413 | |||
| 01959dde1f | |||
| fc6c07c613 | |||
| c6e59dd6bb | |||
| fc1f07a01b | |||
| 11d6425de3 | |||
| da79e8b833 | |||
| 4a1bdf2397 | |||
| 40bcfde47c | |||
| 08db55b69f | |||
| 914b7317e8 | |||
| be2c5e1774 | |||
| dcdc612569 | |||
| 6798c0faa5 | |||
| 3758957946 | |||
| cb755b8869 | |||
| ffedabc0f3 | |||
| 557f53bc66 | |||
| 24770cc9f4 | |||
| d07d441e5d | |||
| 457da42970 | |||
| e6047e51c6 | |||
| 456a4e6fb0 |
+121
@@ -0,0 +1,121 @@
|
|||||||
|
variables:
|
||||||
|
NUGET_PATH: 'C:\Tools\nuget.exe'
|
||||||
|
MSBUILD_PATH: 'C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\MSBuild\Current\Bin\MSBuild.exe'
|
||||||
|
ASPNET_MERGE_PATH: 'C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.8 Tools'
|
||||||
|
EXE_RELEASE_FOLDER: 'c:\Projetcs\Compiled\GPW\Release'
|
||||||
|
DEPLOY_FOLDER: 'c:\Projects\Deploy\GPW\Builds'
|
||||||
|
APP_NAME: 'EgtBEAMWALL'
|
||||||
|
APP_NAMEG: 'EgtBEAMWALL'
|
||||||
|
NEW_REL: ''
|
||||||
|
VERS_RD: 'Release'
|
||||||
|
ARCH: 'x86'
|
||||||
|
ARCH64: 'x64'
|
||||||
|
OUTPUT_DIR: ''
|
||||||
|
NET_SHARE: '\\10.74.82.201\Artifacts\EgtProg\EgtBEAMWALL'
|
||||||
|
NET_USER: 'steamw\steamware'
|
||||||
|
|
||||||
|
# helper x mount cartella Artifacts su truenas
|
||||||
|
.ReplicaCompiled: &ReplicaCompiled
|
||||||
|
- |
|
||||||
|
rm -Recurse Z:\$CI_COMMIT_BRANCH\$env:ARCH\*.*
|
||||||
|
rm -Recurse Z:\$CI_COMMIT_BRANCH\$env:ARCH\*.*
|
||||||
|
ROBOCOPY /E $env:APP_NAME\bin\$env:ARCH\$env:VERS_RD Z:\$CI_COMMIT_BRANCH\$env:ARCH /XF *.xml /XF *.pdb
|
||||||
|
ROBOCOPY /E $env:APP_NAME2\bin\$env:ARCH\$env:VERS_RD Z:\$CI_COMMIT_BRANCH\$env:ARCH /XF *.xml /XF *.pdb
|
||||||
|
SLEEP 2
|
||||||
|
net use Z: /delete
|
||||||
|
|
||||||
|
.ReplicaCompileds2: &ReplicaCompileds2
|
||||||
|
- |
|
||||||
|
ROBOCOPY /E $env:APP_NAME\bin\$env:ARCH64\$env:VERS_RD Z:\$CI_COMMIT_BRANCH\$env:ARCH64 /XF *.xml /XF *.pdb
|
||||||
|
ROBOCOPY /E $env:APP_NAME2\bin\$env:ARCH64\$env:VERS_RD Z:\$CI_COMMIT_BRANCH\$env:ARCH64 /XF *.xml /XF *.pdb
|
||||||
|
SLEEP 2
|
||||||
|
net use Z: /delete
|
||||||
|
|
||||||
|
.MakeFolderM: &MakeFolderM
|
||||||
|
- |
|
||||||
|
net use Z: /delete
|
||||||
|
new-item c:\EgtProg\EgtBEAMWALL -itemtype directory
|
||||||
|
net use Z: $env:NET_SHARE
|
||||||
|
|
||||||
|
.nuget-fix: &nuget-fix
|
||||||
|
- |
|
||||||
|
$hasSource = C:\Tools\nuget.exe sources list | find "`"Steamware Nexus`"" /C
|
||||||
|
if ($hasSource -eq 0) {
|
||||||
|
C:\Tools\nuget.exe sources Add -Name "`"Steamware Nexus`"" -Source https://nexus.steamware.net/repository/nuget-group -username "`"nugetUser`"" -password "`"$NEXUS_PASSWD`""
|
||||||
|
} else {
|
||||||
|
C:\Tools\nuget.exe sources Update -Name "`"Steamware Nexus`"" -Source https://nexus.steamware.net/repository/nuget-group -username "`"nugetUser`"" -password "`"$NEXUS_PASSWD`""
|
||||||
|
}
|
||||||
|
echo $hasSource
|
||||||
|
|
||||||
|
|
||||||
|
# helper creazione hash files
|
||||||
|
.hashBuild: &hashBuild
|
||||||
|
- |
|
||||||
|
$Target = "Releases\" + $CI_COMMIT_BRANCH + "\" + $env:APP_NAME + ".zip"
|
||||||
|
$MD5 = Get-FileHash $Target -Algorithm MD5
|
||||||
|
$SHA1 = Get-FileHash $Target -Algorithm SHA1
|
||||||
|
New-Item $Target".md5"
|
||||||
|
New-Item $Target".sha1"
|
||||||
|
$MD5.Hash | Set-Content -Path $Target".md5"
|
||||||
|
$SHA1.Hash | Set-Content -Path $Target".sha1"
|
||||||
|
|
||||||
|
echo "Created HASH files for $Target"
|
||||||
|
|
||||||
|
.cleanup-dir: &cleanup-dir
|
||||||
|
- |
|
||||||
|
rm $env:APP_NAME\bin\$env:ARCH\$env:VERS_RD\*.xml
|
||||||
|
rm $env:APP_NAME\bin\$env:ARCH\$env:VERS_RD\*.pdb
|
||||||
|
rm $env:APP_NAME\bin\$env:ARCH64\$env:VERS_RD\*.xml
|
||||||
|
rm $env:APP_NAME\bin\$env:ARCH64\$env:VERS_RD\*.pdb
|
||||||
|
|
||||||
|
stages:
|
||||||
|
- build
|
||||||
|
- deploy
|
||||||
|
|
||||||
|
X86:build:
|
||||||
|
stage: build
|
||||||
|
tags:
|
||||||
|
- win
|
||||||
|
only:
|
||||||
|
- main
|
||||||
|
- master
|
||||||
|
- develop
|
||||||
|
variables:
|
||||||
|
APP_NAME: EgtBEAMWALL.Supervisor
|
||||||
|
APP_NAME2: EgtBEAMWALL.ViewerOptimizer
|
||||||
|
VERS_RD: 'Release'
|
||||||
|
ARCH: 'x86'
|
||||||
|
ARCH64: 'x64'
|
||||||
|
before_script:
|
||||||
|
- *nuget-fix
|
||||||
|
- '& "$env:NUGET_PATH" restore EgtBEAMWALL.sln -verbosity quiet'
|
||||||
|
- *MakeFolderM
|
||||||
|
script:
|
||||||
|
- '& "$env:MSBUILD_PATH" "$env:APP_NAME\$env:APP_NAME.vbproj" -target:Build /p:Configuration=$env:VERS_RD /p:Platform="$env:ARCH" /p:OutputPath=bin/$env:ARCH/$env:VERS_RD/ /verbosity:minimal /m'
|
||||||
|
- '& "$env:MSBUILD_PATH" "$env:APP_NAME2\$env:APP_NAME2.vbproj" -target:Build /p:Configuration=$env:VERS_RD /p:Platform="$env:ARCH" /p:OutputPath=bin/$env:ARCH/$env:VERS_RD/ /verbosity:minimal /m'
|
||||||
|
- *ReplicaCompiled
|
||||||
|
|
||||||
|
|
||||||
|
X64:build:
|
||||||
|
stage: build
|
||||||
|
tags:
|
||||||
|
- win
|
||||||
|
only:
|
||||||
|
- main
|
||||||
|
- master
|
||||||
|
- develop
|
||||||
|
variables:
|
||||||
|
APP_NAME: EgtBEAMWALL.Supervisor
|
||||||
|
APP_NAME2: EgtBEAMWALL.ViewerOptimizer
|
||||||
|
VERS_RD: 'Release'
|
||||||
|
ARCH: 'x86'
|
||||||
|
ARCH64: 'x64'
|
||||||
|
before_script:
|
||||||
|
- *nuget-fix
|
||||||
|
- '& "$env:NUGET_PATH" restore EgtBEAMWALL.sln -verbosity quiet'
|
||||||
|
- *MakeFolderM
|
||||||
|
script:
|
||||||
|
- '& "$env:MSBUILD_PATH" "$env:APP_NAME\$env:APP_NAME.vbproj" -target:Build /p:Configuration=$env:VERS_RD /p:Platform="$env:ARCH64" /p:OutputPath=bin/$env:ARCH64/$env:VERS_RD/ /verbosity:minimal /m'
|
||||||
|
- '& "$env:MSBUILD_PATH" "$env:APP_NAME2\$env:APP_NAME2.vbproj" -target:Build /p:Configuration=$env:VERS_RD /p:Platform="$env:ARCH64" /p:OutputPath=bin/$env:ARCH64/$env:VERS_RD/ /verbosity:minimal /m'
|
||||||
|
- *ReplicaCompileds2
|
||||||
|
|
||||||
@@ -813,8 +813,8 @@ Public Class BTLPartM
|
|||||||
ind = ind + 1
|
ind = ind + 1
|
||||||
End While
|
End While
|
||||||
EgtGetInfo(nPartId, BTL_PRT_CAMBER, sValue)
|
EgtGetInfo(nPartId, BTL_PRT_CAMBER, sValue)
|
||||||
sValArray = sValue.Split(New String() {": ", " P"}, StringSplitOptions.RemoveEmptyEntries)
|
sValArray = sValue.Split(New String() {":", "P"}, StringSplitOptions.RemoveEmptyEntries)
|
||||||
If sValArray.Count() >= 5 Then
|
If sValArray.Count() >= 10 Then
|
||||||
StringToLen(sValArray(3), NewBTLPart.m_dCamberLen1)
|
StringToLen(sValArray(3), NewBTLPart.m_dCamberLen1)
|
||||||
StringToLen(sValArray(5), NewBTLPart.m_dCamberLen2)
|
StringToLen(sValArray(5), NewBTLPart.m_dCamberLen2)
|
||||||
StringToLen(sValArray(7), NewBTLPart.m_dCamberLen3)
|
StringToLen(sValArray(7), NewBTLPart.m_dCamberLen3)
|
||||||
@@ -828,8 +828,8 @@ Public Class BTLPartM
|
|||||||
End If
|
End If
|
||||||
|
|
||||||
EgtGetInfo(nPartId, BTL_PRT_PARTOFFSET, sValue)
|
EgtGetInfo(nPartId, BTL_PRT_PARTOFFSET, sValue)
|
||||||
sValArray = sValue.Split(New String() {": ", " P"}, StringSplitOptions.RemoveEmptyEntries)
|
sValArray = sValue.Split(New String() {":", "P"}, StringSplitOptions.RemoveEmptyEntries)
|
||||||
If sValArray.Count() >= 5 Then
|
If sValArray.Count() >= 10 Then
|
||||||
StringToLen(sValArray(3), NewBTLPart.m_dPartOffsetSide1)
|
StringToLen(sValArray(3), NewBTLPart.m_dPartOffsetSide1)
|
||||||
StringToLen(sValArray(5), NewBTLPart.m_dPartOffsetSide2)
|
StringToLen(sValArray(5), NewBTLPart.m_dPartOffsetSide2)
|
||||||
StringToLen(sValArray(7), NewBTLPart.m_dPartOffsetSide3)
|
StringToLen(sValArray(7), NewBTLPart.m_dPartOffsetSide3)
|
||||||
|
|||||||
@@ -14,6 +14,8 @@ Public Module CalcIntegration
|
|||||||
Public Event Calc_ProcessResult As EventHandler(Of CalcResultEventArgs)
|
Public Event Calc_ProcessResult As EventHandler(Of CalcResultEventArgs)
|
||||||
Public Event Calc_ProcessEnd As EventHandler(Of CalcProcessEndEventArgs)
|
Public Event Calc_ProcessEnd As EventHandler(Of CalcProcessEndEventArgs)
|
||||||
|
|
||||||
|
Private m_bIsSupervisor As Boolean = False
|
||||||
|
|
||||||
Public Enum CmdTypes As Integer
|
Public Enum CmdTypes As Integer
|
||||||
GENERATE = 0
|
GENERATE = 0
|
||||||
MODIFY = 1
|
MODIFY = 1
|
||||||
@@ -38,8 +40,9 @@ Public Module CalcIntegration
|
|||||||
|
|
||||||
Delegate Sub CallbackDlg(dProgress As Double, sProgress As String, ByRef bCancel As Boolean)
|
Delegate Sub CallbackDlg(dProgress As Double, sProgress As String, ByRef bCancel As Boolean)
|
||||||
|
|
||||||
Public Sub Run(vBar As Bar(), sProjDirPath As String, callback As CallbackDlg)
|
Public Sub Run(vBar As Bar(), sProjDirPath As String, callback As CallbackDlg, Optional bIsSupervisor As Boolean = False)
|
||||||
_thread = New Thread(Sub()
|
_thread = New Thread(Sub()
|
||||||
|
m_bIsSupervisor = bIsSupervisor
|
||||||
DoJob(vBar, sProjDirPath, callback)
|
DoJob(vBar, sProjDirPath, callback)
|
||||||
End Sub)
|
End Sub)
|
||||||
_thread.Start()
|
_thread.Start()
|
||||||
@@ -353,26 +356,27 @@ Public Module CalcIntegration
|
|||||||
End Function
|
End Function
|
||||||
|
|
||||||
Private Function CreateNewProjectFromMachGroup(nMachGroupId As Integer, sProjDirPath As String) As String
|
Private Function CreateNewProjectFromMachGroup(nMachGroupId As Integer, sProjDirPath As String) As String
|
||||||
|
If Not m_bIsSupervisor Then
|
||||||
' Aggiorno identificativi per segnalazione errori
|
' Aggiorno identificativi per segnalazione errori
|
||||||
Dim nOldMachGroup As Integer = EgtGetCurrMachGroup()
|
Dim nOldMachGroup As Integer = EgtGetCurrMachGroup()
|
||||||
If nMachGroupId <> nOldMachGroup Then EgtSetCurrMachGroup(nMachGroupId)
|
If nMachGroupId <> nOldMachGroup Then EgtSetCurrMachGroup(nMachGroupId)
|
||||||
Dim nRawId As Integer = EgtGetFirstRawPart()
|
Dim nRawId As Integer = EgtGetFirstRawPart()
|
||||||
While nRawId <> GDB_ID.NULL
|
While nRawId <> GDB_ID.NULL
|
||||||
If EgtVerifyRawPartPhase(nRawId, 1) Then
|
If EgtVerifyRawPartPhase(nRawId, 1) Then
|
||||||
Dim nPartId As Integer = EgtGetFirstPartInRawPart(nRawId)
|
Dim nPartId As Integer = EgtGetFirstPartInRawPart(nRawId)
|
||||||
While nPartId <> GDB_ID.NULL
|
While nPartId <> GDB_ID.NULL
|
||||||
UpdateCutIdAndTaskId(nPartId)
|
UpdateCutIdAndTaskId(nPartId)
|
||||||
nPartId = EgtGetNextPartInRawPart(nPartId)
|
nPartId = EgtGetNextPartInRawPart(nPartId)
|
||||||
End While
|
End While
|
||||||
End If
|
End If
|
||||||
nRawId = EgtGetNextRawPart(nRawId)
|
nRawId = EgtGetNextRawPart(nRawId)
|
||||||
End While
|
End While
|
||||||
If nMachGroupId <> nOldMachGroup Then
|
If nMachGroupId <> nOldMachGroup Then
|
||||||
If nOldMachGroup <> GDB_ID.NULL Then
|
If nOldMachGroup <> GDB_ID.NULL Then
|
||||||
EgtSetCurrMachGroup(nOldMachGroup)
|
EgtSetCurrMachGroup(nOldMachGroup)
|
||||||
Else
|
Else
|
||||||
EgtResetCurrMachGroup()
|
EgtResetCurrMachGroup()
|
||||||
|
End If
|
||||||
End If
|
End If
|
||||||
End If
|
End If
|
||||||
|
|
||||||
|
|||||||
@@ -299,4 +299,7 @@
|
|||||||
Public Const EXP_PART As String = "ImportExport"
|
Public Const EXP_PART As String = "ImportExport"
|
||||||
Public Const EXP_MACHINE As String = "Machine"
|
Public Const EXP_MACHINE As String = "Machine"
|
||||||
|
|
||||||
|
' parametri modifica percorsi free contour
|
||||||
|
Public Const PATH_SIDEANGLAYER As String = "SideAngLayer"
|
||||||
|
|
||||||
End Module
|
End Module
|
||||||
|
|||||||
@@ -12,5 +12,8 @@
|
|||||||
Public Const COL_POSY As String = "colPOSY"
|
Public Const COL_POSY As String = "colPOSY"
|
||||||
Public Const COL_OFFSET As String = "colOFFSET"
|
Public Const COL_OFFSET As String = "colOFFSET"
|
||||||
Public Const COL_REDO As String = "colREDO"
|
Public Const COL_REDO As String = "colREDO"
|
||||||
|
Public Const COL_TYPE As String = "colTYPE"
|
||||||
|
Public Const COL_DESCRIPTION As String = "colDESCRIPTION"
|
||||||
|
Public Const COL_SUPERVISORID As String = "colSUPERVISORID"
|
||||||
|
|
||||||
End Module
|
End Module
|
||||||
|
|||||||
@@ -27,6 +27,7 @@
|
|||||||
Public Const S_SECTXMATLIST_WALL As String = "DG_SectXMatList_WALL"
|
Public Const S_SECTXMATLIST_WALL As String = "DG_SectXMatList_WALL"
|
||||||
Public Const S_VARIABLESLIST As String = "DG_VariablesList"
|
Public Const S_VARIABLESLIST As String = "DG_VariablesList"
|
||||||
Public Const S_MDICOMMANDS As String = "DG_MDICommands"
|
Public Const S_MDICOMMANDS As String = "DG_MDICommands"
|
||||||
|
Public Const S_MACHINELOG As String = "DG_MachineLog"
|
||||||
Public Const S_UPDATEBTLPARTLIST As String = "DG_UpdateBTLPartList"
|
Public Const S_UPDATEBTLPARTLIST As String = "DG_UpdateBTLPartList"
|
||||||
|
|
||||||
Public Const K_LOCKTABLE As String = "LockTable"
|
Public Const K_LOCKTABLE As String = "LockTable"
|
||||||
|
|||||||
@@ -41,6 +41,7 @@ Public Module ConstGen
|
|||||||
NESTING_AUTO = 4
|
NESTING_AUTO = 4
|
||||||
SUPERVISOR = 8
|
SUPERVISOR = 8
|
||||||
NETWORK = 16
|
NETWORK = 16
|
||||||
|
ANY_DB = 32
|
||||||
End Enum
|
End Enum
|
||||||
|
|
||||||
' File di log generale
|
' File di log generale
|
||||||
|
|||||||
@@ -27,6 +27,8 @@ Public Module ConstIni
|
|||||||
'Public Const K_MESSAGESDIR As String = "MessagesDir"
|
'Public Const K_MESSAGESDIR As String = "MessagesDir"
|
||||||
'Public Const K_MESSAGES As String = "Messages"
|
'Public Const K_MESSAGES As String = "Messages"
|
||||||
'Public Const K_WINPLACE As String = "WinPlace"
|
'Public Const K_WINPLACE As String = "WinPlace"
|
||||||
|
Public Const K_VIEWOPTIMWINPLACE As String = "ViewOptimWinPlace"
|
||||||
|
Public Const K_SUPERVISORWINPLACE As String = "SupervisorWinPlace"
|
||||||
'Public Const K_LASTPROJ As String = "LastProj"
|
'Public Const K_LASTPROJ As String = "LastProj"
|
||||||
'Public Const K_AUTOLOADLASTPROJ As String = "AutoLoadLastProj"
|
'Public Const K_AUTOLOADLASTPROJ As String = "AutoLoadLastProj"
|
||||||
Public Const K_LASTIMPDIR As String = "LastImpDir"
|
Public Const K_LASTIMPDIR As String = "LastImpDir"
|
||||||
@@ -35,11 +37,13 @@ Public Module ConstIni
|
|||||||
Public Const K_PROJSINDEX As String = "ProjsIndex"
|
Public Const K_PROJSINDEX As String = "ProjsIndex"
|
||||||
Public Const K_PRODSINDEX As String = "ProdsIndex"
|
Public Const K_PRODSINDEX As String = "ProdsIndex"
|
||||||
'Public Const K_SUPPORT As String = "Support"
|
'Public Const K_SUPPORT As String = "Support"
|
||||||
Public Const K_WAREHOUSE As String = "Warehouse"
|
|
||||||
Public Const K_DBADDRESS As String = "DbAddress"
|
Public Const K_DBADDRESS As String = "DbAddress"
|
||||||
Public Const K_DBMASTERKEY As String = "DbMasterKey"
|
Public Const K_DBMASTERKEY As String = "DbMasterKey"
|
||||||
|
Public Const K_SHAREDFOLDER As String = "SharedFolder"
|
||||||
Public Const K_UPDATEBTL As String = "UpdateBtl"
|
Public Const K_UPDATEBTL As String = "UpdateBtl"
|
||||||
Public Const K_DATADIR As String = "DataDir"
|
Public Const K_DATADIR As String = "DataDir"
|
||||||
|
Public Const K_ENABLEEDIT As String = "EnableEdit"
|
||||||
|
Public Const K_FASTPRODUCE As String = "FastProduce"
|
||||||
|
|
||||||
'Public Const S_LANGUAGES As String = "Languages"
|
'Public Const S_LANGUAGES As String = "Languages"
|
||||||
'Public Const K_LANGUAGE As String = "Language"
|
'Public Const K_LANGUAGE As String = "Language"
|
||||||
@@ -97,6 +101,7 @@ Public Module ConstIni
|
|||||||
'Public Const K_CURRMACH As String = "CurrMach"
|
'Public Const K_CURRMACH As String = "CurrMach"
|
||||||
Public Const K_SUPERVISORMACH As String = "SupervisorMach"
|
Public Const K_SUPERVISORMACH As String = "SupervisorMach"
|
||||||
Public Const K_PASSWORD As String = "Password"
|
Public Const K_PASSWORD As String = "Password"
|
||||||
|
Public Const K_CHANGEMACH As String = "ChangeMach"
|
||||||
|
|
||||||
'Public Const S_SIMUL As String = "Simul"
|
'Public Const S_SIMUL As String = "Simul"
|
||||||
'Public Const K_SLIDERX As String = "SliderX"
|
'Public Const K_SLIDERX As String = "SliderX"
|
||||||
@@ -139,4 +144,8 @@ Public Module ConstIni
|
|||||||
Public Const S_BEAM_LIST As String = "Beam_List"
|
Public Const S_BEAM_LIST As String = "Beam_List"
|
||||||
Public Const S_WALL_LIST As String = "Wall_List"
|
Public Const S_WALL_LIST As String = "Wall_List"
|
||||||
|
|
||||||
|
Public Const S_WAREHOUSE As String = "Warehouse"
|
||||||
|
Public Const K_TYPE As String = "Type"
|
||||||
|
Public Const K_DEFAULTQUANTITY As String = "DefaultQuantity"
|
||||||
|
|
||||||
End Module
|
End Module
|
||||||
|
|||||||
@@ -1,9 +1,12 @@
|
|||||||
Public Module ConstMachIni
|
Public Module ConstMachIni
|
||||||
|
|
||||||
Public Const MACH_INI_FILE_NAME As String = "MachData.ini"
|
Public Const MACH_INI_FILE_NAME As String = "MachData.ini"
|
||||||
|
Public Const GETBEAMDATA_FILE_NAME As String = "GetBeamData.lua"
|
||||||
Public Const GETWALLDATA_FILE_NAME As String = "GetWallData.lua"
|
Public Const GETWALLDATA_FILE_NAME As String = "GetWallData.lua"
|
||||||
|
Public Const GETTS3DATA_FILE_NAME As String = "GetTs3Data.lua"
|
||||||
|
|
||||||
Public Const K_NCTYPE As String = "NCType"
|
Public Const K_NCTYPE As String = "NCType"
|
||||||
|
Public Const K_CONNECTIONSTRING As String = "ConnectionString"
|
||||||
|
|
||||||
Public Const S_CHANNELS As String = "Channels"
|
Public Const S_CHANNELS As String = "Channels"
|
||||||
|
|
||||||
|
|||||||
@@ -47,13 +47,11 @@
|
|||||||
<OptionInfer>On</OptionInfer>
|
<OptionInfer>On</OptionInfer>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Reference Include="EgtUILib, Version=2.3.7.1, Culture=neutral, processorArchitecture=MSIL">
|
<Reference Include="EgtUILib">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<HintPath>..\ExtLibs\EgtUILib.dll</HintPath>
|
||||||
<HintPath>..\..\..\..\..\..\EgtProg\Dll32\EgtUILib.dll</HintPath>
|
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="EgtWPFLib5, Version=2.3.4.3, Culture=neutral, processorArchitecture=MSIL">
|
<Reference Include="EgtWPFLib5">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<HintPath>..\ExtLibs\EgtWPFLib5.dll</HintPath>
|
||||||
<HintPath>..\..\..\..\..\..\EgtProg\Dll32\EgtWPFLib5.dll</HintPath>
|
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="PresentationCore" />
|
<Reference Include="PresentationCore" />
|
||||||
<Reference Include="PresentationFramework" />
|
<Reference Include="PresentationFramework" />
|
||||||
|
|||||||
@@ -94,8 +94,6 @@ Public Class NewMachGroupPanelVM
|
|||||||
AddHandler m_MachGroupPanelM.MachGroupAdded, AddressOf OnMachGroupAdded
|
AddHandler m_MachGroupPanelM.MachGroupAdded, AddressOf OnMachGroupAdded
|
||||||
If Not MachGroupPanelM.IsMultiMachGroup Then SetMachGroupPanelVisibility(False)
|
If Not MachGroupPanelM.IsMultiMachGroup Then SetMachGroupPanelVisibility(False)
|
||||||
CreateMachGroupVMList()
|
CreateMachGroupVMList()
|
||||||
' Creo riferimento a questa classe in LibMap
|
|
||||||
'''LibMap.SetRefMachGroupPanelVM(Me)
|
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
#End Region ' CONSTRUCTOR
|
#End Region ' CONSTRUCTOR
|
||||||
|
|||||||
@@ -19,14 +19,14 @@ Public Module LoadingWndHelper
|
|||||||
End Enum
|
End Enum
|
||||||
|
|
||||||
Dim m_MainWindow As Windows.Window
|
Dim m_MainWindow As Windows.Window
|
||||||
Public Function SetMainWindow(MainWindow As Windows.Window)
|
Public Sub SetMainWindow(MainWindow As Windows.Window)
|
||||||
m_MainWindow = MainWindow
|
m_MainWindow = MainWindow
|
||||||
End Function
|
End Sub
|
||||||
|
|
||||||
Private m_bMainWindow_IsActive As Boolean = True
|
Private m_bMainWindow_IsActive As Boolean = True
|
||||||
Public Function SetMainWindowIsActive(IsActive As Boolean)
|
Public Sub SetMainWindowIsActive(IsActive As Boolean)
|
||||||
m_bMainWindow_IsActive = IsActive
|
m_bMainWindow_IsActive = IsActive
|
||||||
End Function
|
End Sub
|
||||||
|
|
||||||
Delegate Sub CallbackLoadingDlg(ByRef CurrStep As Integer, ByRef StepText As String, ByRef nProgress As Integer, ByRef nNextProgress As Integer, ByRef MainWindow_IsActive As Boolean, ByRef bClose As Boolean)
|
Delegate Sub CallbackLoadingDlg(ByRef CurrStep As Integer, ByRef StepText As String, ByRef nProgress As Integer, ByRef nNextProgress As Integer, ByRef MainWindow_IsActive As Boolean, ByRef bClose As Boolean)
|
||||||
|
|
||||||
@@ -52,7 +52,7 @@ Public Module LoadingWndHelper
|
|||||||
Dim Left As Double = m_MainWindow.Left + (m_MainWindow.Width / 2) - 150
|
Dim Left As Double = m_MainWindow.Left + (m_MainWindow.Width / 2) - 150
|
||||||
Dim WindowStartupLocation As Windows.WindowStartupLocation = Windows.WindowStartupLocation.Manual
|
Dim WindowStartupLocation As Windows.WindowStartupLocation = Windows.WindowStartupLocation.Manual
|
||||||
If m_MainWindow.WindowState = Windows.WindowState.Maximized Then
|
If m_MainWindow.WindowState = Windows.WindowState.Maximized Then
|
||||||
WindowStartupLocation = Windows.WindowStartupLocation.CenterScreen
|
WindowStartupLocation = Windows.WindowStartupLocation.CenterOwner
|
||||||
End If
|
End If
|
||||||
m_thread = New Thread(Sub()
|
m_thread = New Thread(Sub()
|
||||||
m_LoadingWndVM = New Core.LoadingWndVM(nSteps, TotText, AddressOf LoadingCallback)
|
m_LoadingWndVM = New Core.LoadingWndVM(nSteps, TotText, AddressOf LoadingCallback)
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
Imports System.Windows
|
Imports System.Windows
|
||||||
|
Imports System.Windows.Input
|
||||||
|
|
||||||
Public Class LoadingWndV
|
Public Class LoadingWndV
|
||||||
|
|
||||||
@@ -25,4 +26,11 @@ Public Class LoadingWndV
|
|||||||
m_LoadingWndVM.StartFunction()
|
m_LoadingWndVM.StartFunction()
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
|
Private Sub ToolsDbView_Closing(sender As Object, e As ComponentModel.CancelEventArgs) Handles Me.Closing
|
||||||
|
If (Keyboard.Modifiers And ModifierKeys.Alt) = ModifierKeys.Alt OrElse Keyboard.IsKeyDown(Key.F4) Then
|
||||||
|
e.Cancel = True
|
||||||
|
Return
|
||||||
|
End If
|
||||||
|
End Sub
|
||||||
|
|
||||||
End Class
|
End Class
|
||||||
|
|||||||
@@ -300,11 +300,11 @@ Public Class MyMachGroupM
|
|||||||
EgtGetInfo(NewMachGroupM.m_Id, MGR_RPT_BARLEN, NewMachGroupM.m_dL)
|
EgtGetInfo(NewMachGroupM.m_Id, MGR_RPT_BARLEN, NewMachGroupM.m_dL)
|
||||||
EgtGetInfo(NewMachGroupM.m_Id, MGR_RPT_BARHEIGHT, NewMachGroupM.m_dH)
|
EgtGetInfo(NewMachGroupM.m_Id, MGR_RPT_BARHEIGHT, NewMachGroupM.m_dH)
|
||||||
EgtGetInfo(NewMachGroupM.m_Id, MGR_RPT_BARWIDTH, NewMachGroupM.m_dW)
|
EgtGetInfo(NewMachGroupM.m_Id, MGR_RPT_BARWIDTH, NewMachGroupM.m_dW)
|
||||||
NewMachGroupM.m_dTotMat = NewMachGroupM.m_dL * NewMachGroupM.m_dW * NewMachGroupM.m_dH
|
|
||||||
NewMachGroupM.m_PartMList = LoadParts(NewMachGroupM)
|
NewMachGroupM.m_PartMList = LoadParts(NewMachGroupM)
|
||||||
For Each Part In NewMachGroupM.m_PartMList
|
For Each Part In NewMachGroupM.m_PartMList
|
||||||
Part.UpdateOffset()
|
Part.UpdateOffset()
|
||||||
NewMachGroupM.m_dMatForPart += Part.dVolume
|
NewMachGroupM.m_dTotMat += Part.dL + Part.dOffset
|
||||||
|
NewMachGroupM.m_dMatForPart += Part.dL
|
||||||
Next
|
Next
|
||||||
Else
|
Else
|
||||||
NewMachGroupM.m_nRawPartId = EgtGetFirstRawPart()
|
NewMachGroupM.m_nRawPartId = EgtGetFirstRawPart()
|
||||||
@@ -336,7 +336,7 @@ Public Class MyMachGroupM
|
|||||||
NewMachGroupM.m_PartMList = LoadParts(NewMachGroupM)
|
NewMachGroupM.m_PartMList = LoadParts(NewMachGroupM)
|
||||||
For Each Part In NewMachGroupM.m_PartMList
|
For Each Part In NewMachGroupM.m_PartMList
|
||||||
Part.UpdateOffset()
|
Part.UpdateOffset()
|
||||||
NewMachGroupM.m_dMatForPart += Part.dVolume
|
NewMachGroupM.m_dMatForPart += Part.dL + Part.dOffset
|
||||||
Next
|
Next
|
||||||
Else
|
Else
|
||||||
NewMachGroupM.m_nRawPartId = EgtGetFirstRawPart()
|
NewMachGroupM.m_nRawPartId = EgtGetFirstRawPart()
|
||||||
|
|||||||
@@ -338,7 +338,8 @@ Public Class MyMachGroupPanelM
|
|||||||
End Class
|
End Class
|
||||||
|
|
||||||
' funzione che cancella tutti i pezzi segnati da eliminare
|
' funzione che cancella tutti i pezzi segnati da eliminare
|
||||||
Public Shared Sub DeleteDuplo()
|
Public Shared Function DeleteDuplo() As List(Of Integer)
|
||||||
|
Dim ToRedrawMachGroupList As New List(Of Integer)
|
||||||
' reset necessario per poter accedere direttamente al grezzo dalle info pezzo e al MachGroup tramite la gerarchia Db geometrico
|
' reset necessario per poter accedere direttamente al grezzo dalle info pezzo e al MachGroup tramite la gerarchia Db geometrico
|
||||||
EgtResetCurrMachGroup()
|
EgtResetCurrMachGroup()
|
||||||
Dim nPartId As Integer = EgtGetFirstPart()
|
Dim nPartId As Integer = EgtGetFirstPart()
|
||||||
@@ -356,16 +357,37 @@ Public Class MyMachGroupPanelM
|
|||||||
Dim nRawPartId As Integer = DuploGetRawPart(nDuploId)
|
Dim nRawPartId As Integer = DuploGetRawPart(nDuploId)
|
||||||
' recupero gruppo di lavorazione
|
' recupero gruppo di lavorazione
|
||||||
Dim nMachGroupId As Integer = EgtGetParent(EgtGetParent(EgtGetParent(nRawPartId)))
|
Dim nMachGroupId As Integer = EgtGetParent(EgtGetParent(EgtGetParent(nRawPartId)))
|
||||||
|
|
||||||
|
' elimino eventuali successive info pezzi di troppo
|
||||||
|
Dim nIndex As Integer = 0
|
||||||
|
Dim sTemp As String = ""
|
||||||
|
While EgtGetInfo(nMachGroupId, MGR_RPT_PART & nIndex, sTemp)
|
||||||
|
Dim PartData() As String = sTemp.Split(","c)
|
||||||
|
If PartData(0) <> nDuploId Then
|
||||||
|
EgtSetInfo(nMachGroupId, MGR_RPT_PART & nIndex, sTemp)
|
||||||
|
nIndex += 1
|
||||||
|
End If
|
||||||
|
End While
|
||||||
|
ToRedrawMachGroupList.Add(nMachGroupId)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
'' 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.CmdTypes.RAWPART, False) Then Return False
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
' lo setto come corrente
|
' lo setto come corrente
|
||||||
EgtSetCurrMachGroup(nMachGroupId)
|
EgtSetCurrMachGroup(nMachGroupId)
|
||||||
' elimino pezzo copia
|
' elimino pezzo copia
|
||||||
EgtRemovePartFromRawPart(nDuploId)
|
EgtRemovePartFromRawPart(nDuploId)
|
||||||
EgtErase(nDuploId)
|
EgtErase(nDuploId)
|
||||||
'' recupero gruppo di lavorazione e trave dell'interfaccia
|
|
||||||
'Dim BeamMachGroup As BeamMachGroupM = MachGroupMList.FirstOrDefault(Function(x) x.Id = nMachGroupId)
|
|
||||||
'Dim Beam As BeamM = BeamMachGroup.PartMList.FirstOrDefault(Function(x) x.nPartId = nDuploId)
|
|
||||||
'EgtSetCurrMachGroup(BeamMachGroup.Id)
|
|
||||||
'''Beam.DeletePart()
|
|
||||||
Next
|
Next
|
||||||
End If
|
End If
|
||||||
DuploResetToDelete(nPartId)
|
DuploResetToDelete(nPartId)
|
||||||
@@ -373,7 +395,7 @@ Public Class MyMachGroupPanelM
|
|||||||
nPartId = EgtGetNextPart(nPartId)
|
nPartId = EgtGetNextPart(nPartId)
|
||||||
End While
|
End While
|
||||||
EgtResetCurrMachGroup()
|
EgtResetCurrMachGroup()
|
||||||
End Sub
|
End Function
|
||||||
|
|
||||||
Friend Shared Function DuploGetToDelete(nSouId As Integer, ByRef bToDelete As Boolean) As Boolean
|
Friend Shared Function DuploGetToDelete(nSouId As Integer, ByRef bToDelete As Boolean) As Boolean
|
||||||
If IsNothing(nSouId) Then Return False
|
If IsNothing(nSouId) Then Return False
|
||||||
@@ -402,12 +424,23 @@ Public Class MyMachGroupPanelM
|
|||||||
End Function
|
End Function
|
||||||
|
|
||||||
Public Shared Function DuploGetRawPart(nDuploId As Integer) As Integer
|
Public Shared Function DuploGetRawPart(nDuploId As Integer) As Integer
|
||||||
Dim nRawId As Integer = GDB_ID.NULL
|
Dim nSwapItem As Integer = GDB_ID.NULL
|
||||||
If EgtGetInfo(nDuploId, GDB_SI_LIST, nRawId) AndAlso nRawId > 0 Then
|
Dim sSwapItem As String = String.Empty
|
||||||
Return nRawId
|
EgtGetInfo(nDuploId, "!LST", sSwapItem)
|
||||||
Else
|
Dim LSTValues() As String = sSwapItem.Split(","c)
|
||||||
Return GDB_ID.NULL
|
If Not IsNothing(LSTValues(LSTValues.Count - 1)) AndAlso Integer.TryParse(LSTValues(LSTValues.Count - 1), nSwapItem) AndAlso nSwapItem > 0 Then
|
||||||
|
Return EgtGetParent(nSwapItem)
|
||||||
End If
|
End If
|
||||||
|
Return GDB_ID.NULL
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
'Dim nRawId As Integer = GDB_ID.NULL
|
||||||
|
'If EgtGetInfo(nDuploId, GDB_SI_LIST, nRawId) AndAlso nRawId > 0 Then
|
||||||
|
' Return nRawId
|
||||||
|
'Else
|
||||||
|
' Return GDB_ID.NULL
|
||||||
|
'End If
|
||||||
End Function
|
End Function
|
||||||
|
|
||||||
#End Region ' METHODS
|
#End Region ' METHODS
|
||||||
|
|||||||
@@ -47,6 +47,18 @@ Public MustInherit Class MyMachGroupPanelVM
|
|||||||
End Get
|
End Get
|
||||||
End Property
|
End Property
|
||||||
|
|
||||||
|
Public ReadOnly Property dDoneTime As String
|
||||||
|
Get
|
||||||
|
Return m_MachGroupVMList.Sum(CType(Function(x As MyMachGroupVM) If(x.nProduction_State >= ItemState.Produced AndAlso Not IsNothing(x.dtEndTime) AndAlso x.dtEndTime <> DateTime.MinValue, (x.dtEndTime - x.dtStartTime).TotalSeconds(), 0), Func(Of MachGroupVM, Double)))
|
||||||
|
End Get
|
||||||
|
End Property
|
||||||
|
|
||||||
|
Public ReadOnly Property sDoneTime As String
|
||||||
|
Get
|
||||||
|
Return TimeSpan.FromSeconds(dDoneTime).ToString()
|
||||||
|
End Get
|
||||||
|
End Property
|
||||||
|
|
||||||
Public ReadOnly Property dRemainingTime As String
|
Public ReadOnly Property dRemainingTime As String
|
||||||
Get
|
Get
|
||||||
Return m_MachGroupVMList.Sum(CType(Function(x As MyMachGroupVM) If(x.nProduction_State < ItemState.Produced, x.nCALC_TIME, 0), Func(Of MachGroupVM, Double)))
|
Return m_MachGroupVMList.Sum(CType(Function(x As MyMachGroupVM) If(x.nProduction_State < ItemState.Produced, x.nCALC_TIME, 0), Func(Of MachGroupVM, Double)))
|
||||||
@@ -96,6 +108,21 @@ Public MustInherit Class MyMachGroupPanelVM
|
|||||||
Return True
|
Return True
|
||||||
End Function
|
End Function
|
||||||
|
|
||||||
|
Private Sub RedrawModifiedMachGroup(RedrawList As List(Of Integer))
|
||||||
|
For Each nMachGroupId In RedrawList
|
||||||
|
EgtSetCurrMachGroup(nMachGroupId)
|
||||||
|
' 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.CmdTypes.RAWPART, False) Then Return False
|
||||||
|
|
||||||
|
Next
|
||||||
|
End Sub
|
||||||
|
|
||||||
'Public Overrides Sub AddMachGroup()
|
'Public Overrides Sub AddMachGroup()
|
||||||
' Dim MyMachGroupM As MyMachGroupM = m_MyMachGroupPanelM.NewMyMachGroup(CurrentMachine.sMachineName, Map.refProjectVM.BTLStructureVM.nPROJTYPE)
|
' Dim MyMachGroupM As MyMachGroupM = m_MyMachGroupPanelM.NewMyMachGroup(CurrentMachine.sMachineName, Map.refProjectVM.BTLStructureVM.nPROJTYPE)
|
||||||
' ' e lo seleziono
|
' ' e lo seleziono
|
||||||
|
|||||||
@@ -85,13 +85,13 @@ Public MustInherit Class MyMachGroupVM
|
|||||||
|
|
||||||
Public ReadOnly Property dUsage As Double
|
Public ReadOnly Property dUsage As Double
|
||||||
Get
|
Get
|
||||||
Return If(MyMachGroupM.dMatForPart > 0 AndAlso MyMachGroupM.dTotMat > 0, MyMachGroupM.dMatForPart / MyMachGroupM.dTotMat * 100, 0)
|
Return If(MyMachGroupM.dMatForPart > 0 AndAlso MyMachGroupM.dTotMat > 0, If(nType = BWType.WALL, MyMachGroupM.dMatForPart / MyMachGroupM.dTotMat * 100, MyMachGroupM.dMatForPart / MyMachGroupM.dL * 100), 0)
|
||||||
End Get
|
End Get
|
||||||
End Property
|
End Property
|
||||||
|
|
||||||
Public ReadOnly Property dWaste As Double
|
Public ReadOnly Property dWaste As Double
|
||||||
Get
|
Get
|
||||||
Return If(MyMachGroupM.dMatForPart > 0 AndAlso MyMachGroupM.dTotMat > 0, (MyMachGroupM.dTotMat - MyMachGroupM.dMatForPart) / MyMachGroupM.dTotMat * 100, 0)
|
Return If(MyMachGroupM.dMatForPart > 0 AndAlso MyMachGroupM.dTotMat > 0, If(nType = BWType.WALL, (MyMachGroupM.dTotMat - MyMachGroupM.dMatForPart) / 1000000000, MyMachGroupM.dL - MyMachGroupM.dTotMat), 0)
|
||||||
End Get
|
End Get
|
||||||
End Property
|
End Property
|
||||||
|
|
||||||
@@ -103,7 +103,7 @@ Public MustInherit Class MyMachGroupVM
|
|||||||
|
|
||||||
Public ReadOnly Property sWaste As String
|
Public ReadOnly Property sWaste As String
|
||||||
Get
|
Get
|
||||||
Return DoubleToString(dWaste, 3)
|
Return LenToString(dWaste, 3)
|
||||||
End Get
|
End Get
|
||||||
End Property
|
End Property
|
||||||
|
|
||||||
@@ -481,13 +481,25 @@ Public MustInherit Class MyMachGroupVM
|
|||||||
End Function
|
End Function
|
||||||
|
|
||||||
Public Sub UpdateUsage()
|
Public Sub UpdateUsage()
|
||||||
MyMachGroupM.SetTotMat(dL * dH * dW)
|
If nType = BWType.BEAM Then
|
||||||
MyMachGroupM.SetMatForPart(0)
|
MyMachGroupM.SetMatForPart(0)
|
||||||
Dim dPartVolume As Double
|
Dim dPartLength As Double
|
||||||
For Each Part In PartVMList
|
Dim dPartOffsetLength As Double
|
||||||
dPartVolume += Part.dVolume
|
For Each Part In PartVMList
|
||||||
Next
|
dPartOffsetLength += Part.dL + Part.dOffset
|
||||||
MyMachGroupM.SetMatForPart(dPartVolume)
|
dPartLength += Part.dL
|
||||||
|
Next
|
||||||
|
MyMachGroupM.SetTotMat(dPartOffsetLength)
|
||||||
|
MyMachGroupM.SetMatForPart(dPartLength)
|
||||||
|
Else
|
||||||
|
MyMachGroupM.SetTotMat(dL * dH * dW)
|
||||||
|
MyMachGroupM.SetMatForPart(0)
|
||||||
|
Dim dPartVolume As Double
|
||||||
|
For Each Part In PartVMList
|
||||||
|
dPartVolume += Part.dVolume
|
||||||
|
Next
|
||||||
|
MyMachGroupM.SetMatForPart(dPartVolume)
|
||||||
|
End If
|
||||||
NotifyPropertyChanged(NameOf(sUsage))
|
NotifyPropertyChanged(NameOf(sUsage))
|
||||||
NotifyPropertyChanged(NameOf(sWaste))
|
NotifyPropertyChanged(NameOf(sWaste))
|
||||||
End Sub
|
End Sub
|
||||||
|
|||||||
@@ -35,5 +35,5 @@ Imports System.Runtime.InteropServices
|
|||||||
' by using the '*' as shown below:
|
' by using the '*' as shown below:
|
||||||
' <Assembly: AssemblyVersion("1.0.*")>
|
' <Assembly: AssemblyVersion("1.0.*")>
|
||||||
|
|
||||||
<Assembly: AssemblyVersion("2.4.3.2")>
|
<Assembly: AssemblyVersion("2.4.7.1")>
|
||||||
<Assembly: AssemblyFileVersion("2.4.3.2")>
|
<Assembly: AssemblyFileVersion("2.4.7.1")>
|
||||||
|
|||||||
@@ -154,6 +154,7 @@
|
|||||||
</ListBox.ItemTemplate>-->
|
</ListBox.ItemTemplate>-->
|
||||||
<DataGrid.RowStyle>
|
<DataGrid.RowStyle>
|
||||||
<Style TargetType="DataGridRow">
|
<Style TargetType="DataGridRow">
|
||||||
|
<Setter Property="IsEnabled" Value="{Binding bIsEnabled}"/>
|
||||||
<EventSetter Event="MouseDoubleClick" Handler="ProjectList_MouseDoubleClick"/>
|
<EventSetter Event="MouseDoubleClick" Handler="ProjectList_MouseDoubleClick"/>
|
||||||
</Style>
|
</Style>
|
||||||
</DataGrid.RowStyle>
|
</DataGrid.RowStyle>
|
||||||
|
|||||||
@@ -278,12 +278,16 @@ Public MustInherit Class OpenProjectFileDialogVM
|
|||||||
|
|
||||||
Friend Function VerifySelected() As Boolean
|
Friend Function VerifySelected() As Boolean
|
||||||
If IsNothing(SelProject) Then Return False
|
If IsNothing(SelProject) Then Return False
|
||||||
Dim AllFilesInDir As IEnumerable(Of String)
|
Dim AllFilesInDir As IEnumerable(Of String) = Nothing
|
||||||
If m_ProjectType = Core.ConstBeam.ProjectType.PROJ Then
|
If m_ProjectType = Core.ConstBeam.ProjectType.PROJ Then
|
||||||
|
If String.IsNullOrWhiteSpace(SelProject.sProjDirPath) OrElse Not Directory.Exists(SelProject.sProjDirPath) Then Return False
|
||||||
' verifico se esiste ProdId
|
' verifico se esiste ProdId
|
||||||
AllFilesInDir = IO.Directory.EnumerateFiles(SelProject.sProjDirPath)
|
AllFilesInDir = Directory.EnumerateFiles(SelProject.sProjDirPath)
|
||||||
ElseIf m_ProjectType = Core.ConstBeam.ProjectType.PROD Then
|
ElseIf m_ProjectType = Core.ConstBeam.ProjectType.PROD Then
|
||||||
AllFilesInDir = IO.Directory.EnumerateFiles(SelProject.sProdDirPath)
|
If String.IsNullOrWhiteSpace(SelProject.sProdDirPath) OrElse Not Directory.Exists(SelProject.sProdDirPath) Then Return False
|
||||||
|
AllFilesInDir = Directory.EnumerateFiles(SelProject.sProdDirPath)
|
||||||
|
Else
|
||||||
|
Return False
|
||||||
End If
|
End If
|
||||||
For Each File In AllFilesInDir
|
For Each File In AllFilesInDir
|
||||||
If Path.GetExtension(File).ToLower() = ".nge" Then
|
If Path.GetExtension(File).ToLower() = ".nge" Then
|
||||||
|
|||||||
@@ -27,7 +27,8 @@ Public Class ProdFileM
|
|||||||
Return New ProdFileM
|
Return New ProdFileM
|
||||||
End Function
|
End Function
|
||||||
|
|
||||||
Public Shared Function CreateProdFileM(nProdId As Integer, nProjIdList As List(Of Integer), dtCreateProjDate As DateTime, sName As String, nType As BWType, sMachine As String) As ProdFileM
|
Public Shared Function CreateProdFileM(nProdId As Integer, nProjIdList As List(Of Integer), dtCreateProjDate As DateTime, sName As String, nType As BWType,
|
||||||
|
sMachine As String, sLockedBy As String, dtLock As DateTime) As ProdFileM
|
||||||
Dim NewProjectFileM As New ProdFileM
|
Dim NewProjectFileM As New ProdFileM
|
||||||
NewProjectFileM.m_nProdId = nProdId
|
NewProjectFileM.m_nProdId = nProdId
|
||||||
NewProjectFileM.m_nProjIdList = nProjIdList
|
NewProjectFileM.m_nProjIdList = nProjIdList
|
||||||
@@ -35,6 +36,8 @@ Public Class ProdFileM
|
|||||||
NewProjectFileM.m_sName = sName
|
NewProjectFileM.m_sName = sName
|
||||||
NewProjectFileM.m_nType = nType
|
NewProjectFileM.m_nType = nType
|
||||||
NewProjectFileM.m_sMachine = sMachine
|
NewProjectFileM.m_sMachine = sMachine
|
||||||
|
NewProjectFileM.m_sLockedBy = sLockedBy
|
||||||
|
NewProjectFileM.m_dtLock = dtLock
|
||||||
Return NewProjectFileM
|
Return NewProjectFileM
|
||||||
End Function
|
End Function
|
||||||
|
|
||||||
|
|||||||
@@ -74,6 +74,26 @@ Public Class ProjectFileM
|
|||||||
End Set
|
End Set
|
||||||
End Property
|
End Property
|
||||||
|
|
||||||
|
Protected m_sLockedBy As String
|
||||||
|
Public Property sLockedBy As String
|
||||||
|
Get
|
||||||
|
Return m_sLockedBy
|
||||||
|
End Get
|
||||||
|
Set(value As String)
|
||||||
|
m_sLockedBy = value
|
||||||
|
End Set
|
||||||
|
End Property
|
||||||
|
|
||||||
|
Protected m_dtLock As DateTime
|
||||||
|
Public Property dtLock As DateTime
|
||||||
|
Get
|
||||||
|
Return m_dtLock
|
||||||
|
End Get
|
||||||
|
Set(value As DateTime)
|
||||||
|
m_dtLock = value
|
||||||
|
End Set
|
||||||
|
End Property
|
||||||
|
|
||||||
#Region "CONSTRUCTORS"
|
#Region "CONSTRUCTORS"
|
||||||
|
|
||||||
#End Region ' CONSTRUCTORS
|
#End Region ' CONSTRUCTORS
|
||||||
|
|||||||
@@ -58,9 +58,11 @@ Public Enum StatusMapOpType
|
|||||||
SupervisorReleaseStop = 11
|
SupervisorReleaseStop = 11
|
||||||
ResetPartStart = 12
|
ResetPartStart = 12
|
||||||
ResetPartEnd = 13
|
ResetPartEnd = 13
|
||||||
ChangeProdInSupervisorRequest = 14
|
SetPartScrapped = 14
|
||||||
ChangeProdInProdRequest = 15
|
ChangeProdInSupervisorRequest = 15
|
||||||
OpenPageInViewOptimRequest = 16
|
ChangeProdInProdRequest = 16
|
||||||
|
OpenPageInViewOptimRequest = 17
|
||||||
|
MachGroupValidationUpdate = 18
|
||||||
End Enum
|
End Enum
|
||||||
|
|
||||||
Public Enum DimensionType
|
Public Enum DimensionType
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ Public Module LuaMsgManager
|
|||||||
If Not String.IsNullOrWhiteSpace(sMsg) Then
|
If Not String.IsNullOrWhiteSpace(sMsg) Then
|
||||||
Return sMsg
|
Return sMsg
|
||||||
Else
|
Else
|
||||||
EgtMsg(65000 + nMsg)
|
Return EgtMsg(65000 + nMsg)
|
||||||
End If
|
End If
|
||||||
Else
|
Else
|
||||||
Return EgtMsg(65000 + nMsg)
|
Return EgtMsg(65000 + nMsg)
|
||||||
@@ -25,6 +25,7 @@ Public Module LuaMsgManager
|
|||||||
Else
|
Else
|
||||||
Return LuaMsg
|
Return LuaMsg
|
||||||
End If
|
End If
|
||||||
|
Return ""
|
||||||
End Function
|
End Function
|
||||||
|
|
||||||
End Module
|
End Module
|
||||||
|
|||||||
@@ -2,6 +2,19 @@
|
|||||||
|
|
||||||
#Region "Private Fields"
|
#Region "Private Fields"
|
||||||
|
|
||||||
|
Public Enum MachLogTypes
|
||||||
|
PART_STATUS = 1
|
||||||
|
MACHGROUP_STATUS = 2
|
||||||
|
MACHINE_MODE = 3
|
||||||
|
MACHINE_STATUS = 4
|
||||||
|
MACHINE_COMMAND = 5
|
||||||
|
READ_VAR = 6
|
||||||
|
WRITE_VAR = 7
|
||||||
|
ALARM = 8
|
||||||
|
OPERATOR_MSG = 9
|
||||||
|
PROGRAM_SEND = 10
|
||||||
|
End Enum
|
||||||
|
|
||||||
Private m_AlarmCode As String
|
Private m_AlarmCode As String
|
||||||
Private m_AlarmDateTime As DateTime
|
Private m_AlarmDateTime As DateTime
|
||||||
Private m_AlarmMessage As String
|
Private m_AlarmMessage As String
|
||||||
@@ -11,15 +24,74 @@
|
|||||||
Private m_CommandState As CommandStates
|
Private m_CommandState As CommandStates
|
||||||
Private m_CommandType As LogCommandTypes
|
Private m_CommandType As LogCommandTypes
|
||||||
Private m_Description As String
|
Private m_Description As String
|
||||||
|
|
||||||
Private m_newOpState As Integer
|
Private m_newOpState As Integer
|
||||||
|
|
||||||
Private m_ResultType As ResultTypes
|
Private m_ResultType As ResultTypes
|
||||||
|
|
||||||
Private m_VarAddress As String
|
Private m_VarAddress As String
|
||||||
|
|
||||||
Private m_VarValue As String
|
Private m_VarValue As String
|
||||||
|
|
||||||
|
' variabili del log macchina
|
||||||
|
Public ReadOnly Property EventType As MachLogTypes
|
||||||
|
Get
|
||||||
|
Return m_ResultType
|
||||||
|
End Get
|
||||||
|
End Property
|
||||||
|
Public ReadOnly Property EventDateTime As DateTime
|
||||||
|
Get
|
||||||
|
Return m_AlarmDateTime
|
||||||
|
End Get
|
||||||
|
End Property
|
||||||
|
Public ReadOnly Property EventValue As String
|
||||||
|
Get
|
||||||
|
Return m_VarValue
|
||||||
|
End Get
|
||||||
|
End Property
|
||||||
|
|
||||||
|
Public ReadOnly Property sEventType As String
|
||||||
|
Get
|
||||||
|
Select Case m_ResultType
|
||||||
|
Case MachLogTypes.PART_STATUS
|
||||||
|
Return String.Format("({0}) Stato pezzo", 1)
|
||||||
|
Case MachLogTypes.MACHGROUP_STATUS
|
||||||
|
Return String.Format("({0}) Stato barra", 2)
|
||||||
|
Case MachLogTypes.MACHINE_MODE = 3
|
||||||
|
Return String.Format("({0}) Modalità macchina", 3)
|
||||||
|
Case MachLogTypes.MACHINE_STATUS = 4
|
||||||
|
Return String.Format("({0}) Stato macchina", 4)
|
||||||
|
Case MachLogTypes.MACHINE_COMMAND = 5
|
||||||
|
Return String.Format("({0}) Comando macchina", 5)
|
||||||
|
Case MachLogTypes.READ_VAR = 6
|
||||||
|
Return String.Format("({0}) Lettura variabile", 6)
|
||||||
|
Case MachLogTypes.WRITE_VAR = 7
|
||||||
|
Return String.Format("({0}) Scrittura variabile", 7)
|
||||||
|
Case MachLogTypes.ALARM = 8
|
||||||
|
Return String.Format("({0}) Allarme", 8)
|
||||||
|
Case MachLogTypes.OPERATOR_MSG = 9
|
||||||
|
Return String.Format("({0}) Messaggio opertore", 9)
|
||||||
|
Case MachLogTypes.PROGRAM_SEND = 10
|
||||||
|
Return String.Format("({0}) Invio programma", 10)
|
||||||
|
Case Else
|
||||||
|
Return "Altro"
|
||||||
|
End Select
|
||||||
|
End Get
|
||||||
|
End Property
|
||||||
|
Public ReadOnly Property sEventDateTime As String
|
||||||
|
Get
|
||||||
|
Return m_AlarmDateTime
|
||||||
|
End Get
|
||||||
|
End Property
|
||||||
|
Public ReadOnly Property sEventValue As String
|
||||||
|
Get
|
||||||
|
Return m_VarValue
|
||||||
|
End Get
|
||||||
|
End Property
|
||||||
|
|
||||||
|
Public ReadOnly Property sPROD As String
|
||||||
|
Get
|
||||||
|
|
||||||
|
Return m_VarValue
|
||||||
|
End Get
|
||||||
|
End Property
|
||||||
|
|
||||||
#End Region
|
#End Region
|
||||||
|
|
||||||
#Region "Protected Constructors"
|
#Region "Protected Constructors"
|
||||||
@@ -165,11 +237,20 @@
|
|||||||
Return NewMachLog
|
Return NewMachLog
|
||||||
End Function
|
End Function
|
||||||
|
|
||||||
|
Public Shared Function CreateMachLog(EventType As MachLogTypes, EventDateTime As DateTime, Value As String, SupervisorID As String)
|
||||||
|
Dim NewMachEvent As New MachLog
|
||||||
|
NewMachEvent.m_ResultType = EventType
|
||||||
|
NewMachEvent.m_AlarmDateTime = EventDateTime
|
||||||
|
NewMachEvent.m_VarValue = Value
|
||||||
|
NewMachEvent.m_VarAddress = SupervisorID
|
||||||
|
Return NewMachEvent
|
||||||
|
End Function
|
||||||
|
|
||||||
#End Region
|
#End Region
|
||||||
|
|
||||||
#Region "Public Methods"
|
#Region "Public Methods"
|
||||||
|
|
||||||
Public Shared Function CreateMacLog(AlarmCode As String, AlarmDateTime As Date, AlarmMessage As String, AlarmOperation As Integer, AlarmType As Integer, CommandExecutedCorrectly As Boolean, CommandState As CommandStates, CommandType As LogCommandTypes, Description As String, newOpState As Integer, ResultType As ResultTypes, VarAddress As String, VarValue As String) As MachLog
|
Public Shared Function CreateMachLog(AlarmCode As String, AlarmDateTime As Date, AlarmMessage As String, AlarmOperation As Integer, AlarmType As Integer, CommandExecutedCorrectly As Boolean, CommandState As CommandStates, CommandType As LogCommandTypes, Description As String, newOpState As Integer, ResultType As ResultTypes, VarAddress As String, VarValue As String) As MachLog
|
||||||
|
|
||||||
Dim NewMachLog As New MachLog
|
Dim NewMachLog As New MachLog
|
||||||
NewMachLog.m_AlarmCode = AlarmCode
|
NewMachLog.m_AlarmCode = AlarmCode
|
||||||
|
|||||||
@@ -15,80 +15,80 @@ Public Class ViewPanelVM
|
|||||||
' Posizione vista
|
' Posizione vista
|
||||||
Private Shared m_nViewDir As VT = VT.ISO_SW
|
Private Shared m_nViewDir As VT = VT.ISO_SW
|
||||||
|
|
||||||
Public Shared Function BWSetView(nView As VT, Optional bRedraw As Boolean = True)
|
Public Shared Sub BWSetView(nView As VT, Optional bRedraw As Boolean = True)
|
||||||
' condizioni che cambiano la vista del progetto
|
' condizioni che cambiano la vista del progetto
|
||||||
Select Case m_Type
|
'Select Case m_Type
|
||||||
Case BWType.BEAM
|
' Case BWType.BEAM
|
||||||
Select Case nView
|
' Select Case nView
|
||||||
Case VT.TOP
|
' Case VT.TOP
|
||||||
EgtSetView(VT.TOP, bRedraw)
|
' EgtSetView(VT.TOP, bRedraw)
|
||||||
Case VT.FRONT
|
' Case VT.FRONT
|
||||||
EgtSetView(VT.FRONT, bRedraw)
|
' EgtSetView(VT.FRONT, bRedraw)
|
||||||
Case VT.BACK
|
' Case VT.BACK
|
||||||
EgtSetView(VT.BACK, bRedraw)
|
' EgtSetView(VT.BACK, bRedraw)
|
||||||
Case VT.RIGHT
|
' Case VT.RIGHT
|
||||||
EgtSetView(VT.RIGHT, bRedraw)
|
' EgtSetView(VT.RIGHT, bRedraw)
|
||||||
Case VT.LEFT
|
' Case VT.LEFT
|
||||||
EgtSetView(VT.LEFT, bRedraw)
|
' EgtSetView(VT.LEFT, bRedraw)
|
||||||
Case VT.ISO_SW
|
' Case VT.ISO_SW
|
||||||
EgtSetView(VT.ISO_SW, bRedraw)
|
' EgtSetView(VT.ISO_SW, bRedraw)
|
||||||
Case Else ' VT.ISO_SW
|
' Case Else ' VT.ISO_SW
|
||||||
EgtSetView(VT.ISO_SW, bRedraw)
|
' EgtSetView(VT.ISO_SW, bRedraw)
|
||||||
|
' End Select
|
||||||
|
' Case BWType.WALL
|
||||||
|
Select Case nView
|
||||||
|
Case VT.TOP
|
||||||
|
Select Case m_nViewDir
|
||||||
|
Case VT.ISO_SW, VT.ISO_SE
|
||||||
|
EgtSetGenericView(0, -90, bRedraw) ' equivalente a vista TOP
|
||||||
|
Case VT.ISO_NW, VT.ISO_NE
|
||||||
|
EgtSetGenericView(0, 90, bRedraw) ' equivalente a vista TOP ruotata di 180 su Z
|
||||||
End Select
|
End Select
|
||||||
Case BWType.WALL
|
Case VT.FRONT
|
||||||
Select Case nView
|
Select Case m_nViewDir
|
||||||
Case VT.TOP
|
Case VT.ISO_SW, VT.ISO_SE
|
||||||
Select Case m_nViewDir
|
EgtSetGenericView(90, -90, bRedraw) ' equivalente a vista FRONT
|
||||||
Case VT.ISO_SW, VT.ISO_SE
|
Case VT.ISO_NW, VT.ISO_NE
|
||||||
EgtSetGenericView(0, -90, bRedraw) ' equivalente a vista TOP
|
EgtSetGenericView(90, 90, bRedraw) ' equivalente a vista FRONT ruotata di 180 su Z
|
||||||
Case VT.ISO_NW, VT.ISO_NE
|
End Select
|
||||||
EgtSetGenericView(0, 90, bRedraw) ' equivalente a vista TOP ruotata di 180 su Z
|
Case VT.BACK
|
||||||
End Select
|
Select Case m_nViewDir
|
||||||
Case VT.FRONT
|
Case VT.ISO_SW, VT.ISO_SE
|
||||||
Select Case m_nViewDir
|
EgtSetGenericView(-90, -90, bRedraw) ' equivalente a vista BACK
|
||||||
Case VT.ISO_SW, VT.ISO_SE
|
Case VT.ISO_NW, VT.ISO_NE
|
||||||
EgtSetGenericView(90, -90, bRedraw) ' equivalente a vista FRONT
|
EgtSetGenericView(-90, 90, bRedraw) ' equivalente a vista BACK ruotata di 180 su Z
|
||||||
Case VT.ISO_NW, VT.ISO_NE
|
End Select
|
||||||
EgtSetGenericView(90, 90, bRedraw) ' equivalente a vista FRONT ruotata di 180 su Z
|
Case VT.RIGHT
|
||||||
End Select
|
Select Case m_nViewDir
|
||||||
Case VT.BACK
|
Case VT.ISO_SW, VT.ISO_SE
|
||||||
Select Case m_nViewDir
|
EgtSetGenericView(90, 0, bRedraw) ' equivalente a vista RIGHT
|
||||||
Case VT.ISO_SW, VT.ISO_SE
|
Case VT.ISO_NW, VT.ISO_NE
|
||||||
EgtSetGenericView(-90, -90, bRedraw) ' equivalente a vista BACK
|
EgtSetGenericView(-90, 0, bRedraw) ' equivalente a vista RIGHT ruotata di 180 su Z
|
||||||
Case VT.ISO_NW, VT.ISO_NE
|
End Select
|
||||||
EgtSetGenericView(-90, 90, bRedraw) ' equivalente a vista BACK ruotata di 180 su Z
|
Case VT.LEFT
|
||||||
End Select
|
Select Case m_nViewDir
|
||||||
Case VT.RIGHT
|
Case VT.ISO_SW, VT.ISO_SE
|
||||||
Select Case m_nViewDir
|
EgtSetGenericView(-90, 0, bRedraw) ' equivalente a vista LEFT
|
||||||
Case VT.ISO_SW, VT.ISO_SE
|
Case VT.ISO_NW, VT.ISO_NE
|
||||||
EgtSetGenericView(90, 0, bRedraw) ' equivalente a vista RIGHT
|
EgtSetGenericView(90, 0, bRedraw) ' equivalente a vista LEFT ruotata di 180 su Z
|
||||||
Case VT.ISO_NW, VT.ISO_NE
|
End Select
|
||||||
EgtSetGenericView(-90, 0, bRedraw) ' equivalente a vista RIGHT ruotata di 180 su Z
|
Case VT.ISO_SW
|
||||||
End Select
|
Select Case m_nViewDir
|
||||||
Case VT.LEFT
|
Case VT.ISO_SW, VT.ISO_SE
|
||||||
Select Case m_nViewDir
|
EgtSetGenericView(60, 225, bRedraw) ' equivalente a vista ISO_SW
|
||||||
Case VT.ISO_SW, VT.ISO_SE
|
Case VT.ISO_NW, VT.ISO_NE
|
||||||
EgtSetGenericView(-90, 0, bRedraw) ' equivalente a vista LEFT
|
EgtSetGenericView(60, 45, bRedraw) ' equivalente a vista ISO_SW ruotata di 180 su Z
|
||||||
Case VT.ISO_NW, VT.ISO_NE
|
End Select
|
||||||
EgtSetGenericView(90, 0, bRedraw) ' equivalente a vista LEFT ruotata di 180 su Z
|
Case Else ' VT.ISO_SW
|
||||||
End Select
|
Select Case m_nViewDir
|
||||||
Case VT.ISO_SW
|
Case VT.ISO_SW, VT.ISO_SE
|
||||||
Select Case m_nViewDir
|
EgtSetGenericView(60, 225, bRedraw) ' equivalente a vista ISO_SW
|
||||||
Case VT.ISO_SW, VT.ISO_SE
|
Case VT.ISO_NW, VT.ISO_NE
|
||||||
EgtSetGenericView(60, 225, bRedraw) ' equivalente a vista ISO_SW
|
EgtSetGenericView(60, 45, bRedraw) ' equivalente a vista ISO_SW ruotata di 180 su Z
|
||||||
Case VT.ISO_NW, VT.ISO_NE
|
|
||||||
EgtSetGenericView(60, 45, bRedraw) ' equivalente a vista ISO_SW ruotata di 180 su Z
|
|
||||||
End Select
|
|
||||||
Case Else ' VT.ISO_SW
|
|
||||||
Select Case m_nViewDir
|
|
||||||
Case VT.ISO_SW, VT.ISO_SE
|
|
||||||
EgtSetGenericView(60, 225, bRedraw) ' equivalente a vista ISO_SW
|
|
||||||
Case VT.ISO_NW, VT.ISO_NE
|
|
||||||
EgtSetGenericView(60, 45, bRedraw) ' equivalente a vista ISO_SW ruotata di 180 su Z
|
|
||||||
End Select
|
|
||||||
End Select
|
End Select
|
||||||
End Select
|
End Select
|
||||||
End Function
|
'End Select
|
||||||
|
End Sub
|
||||||
|
|
||||||
Public Shared Sub UpdateMachParam(ViewDir As VT)
|
Public Shared Sub UpdateMachParam(ViewDir As VT)
|
||||||
m_nViewDir = ViewDir
|
m_nViewDir = ViewDir
|
||||||
|
|||||||
@@ -1,26 +1,21 @@
|
|||||||
using System;
|
using EgtBEAMWALL.DataLayer.DatabaseModels;
|
||||||
using System.Collections.Generic;
|
using EgtBEAMWALL.DataLayer.Migrations;
|
||||||
|
using MySql.Data.EntityFramework;
|
||||||
|
using System;
|
||||||
using System.Data.Entity;
|
using System.Data.Entity;
|
||||||
using System.Data.Entity.Migrations;
|
using System.Data.Entity.Migrations;
|
||||||
using MySql.Data.Entity;
|
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text;
|
|
||||||
using EgtBEAMWALL.DataLayer.DatabaseModels;
|
|
||||||
using EgtBEAMWALL.DataLayer.Migrations;
|
|
||||||
using System.ServiceProcess;
|
using System.ServiceProcess;
|
||||||
using System.IO;
|
|
||||||
using System.Data.Entity.Infrastructure;
|
|
||||||
|
|
||||||
namespace EgtBEAMWALL.DataLayer
|
namespace EgtBEAMWALL.DataLayer
|
||||||
{
|
{
|
||||||
[DbConfigurationType(typeof(MySqlEFConfiguration))]
|
[DbConfigurationType(typeof(MySqlEFConfiguration))]
|
||||||
//[DbConfigurationType(typeof(aMySqlConfiguration))]
|
|
||||||
public class AdminContext : DbContext
|
public class AdminContext : DbContext
|
||||||
{
|
{
|
||||||
#region Public Constructors
|
#region Public Constructors
|
||||||
|
|
||||||
[Obsolete("This constructor should never be used directly, and is only needed to generate entityframework stuff. Connection string can be adapted as pleased.")]
|
[Obsolete("This constructor should never be used directly, and is only needed to generate entityframework stuff. Connection string can be adapted as pleased.")]
|
||||||
public AdminContext() : base("DefaultConnection")
|
public AdminContext() : base(DbConfig.ADMIN_CONNECTION_STRING)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -38,5 +33,67 @@ namespace EgtBEAMWALL.DataLayer
|
|||||||
public DbSet<UserPriv> UserList { get; set; }
|
public DbSet<UserPriv> UserList { get; set; }
|
||||||
|
|
||||||
#endregion Public Properties
|
#endregion Public Properties
|
||||||
|
|
||||||
|
#region Public Methods
|
||||||
|
|
||||||
|
public bool SetUpDbConnectionAndDbConfig()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
String serviceName = getDbServiceName();
|
||||||
|
if (serviceName.Equals(""))
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
ServiceController service = new ServiceController(serviceName);
|
||||||
|
try
|
||||||
|
{
|
||||||
|
TimeSpan timeout = TimeSpan.FromSeconds(DbConfig.DATABASE_PROCESS_TIMEOUT);
|
||||||
|
service.WaitForStatus(ServiceControllerStatus.Running, timeout);
|
||||||
|
}
|
||||||
|
catch (Exception)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
//Database.SetInitializer<DatabaseContext>(null);
|
||||||
|
Database.SetInitializer(new MigrateDatabaseToLatestVersion<DatabaseContext, Configuration>());
|
||||||
|
var migrator = new DbMigrator(new Configuration());
|
||||||
|
|
||||||
|
if (migrator.GetPendingMigrations().Any())
|
||||||
|
{
|
||||||
|
// Run migrations and seed.
|
||||||
|
migrator.Update();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception exc)
|
||||||
|
{
|
||||||
|
Console.WriteLine(exc.ToString());
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion Public Methods
|
||||||
|
|
||||||
|
#region Private Methods
|
||||||
|
|
||||||
|
private static string getDbServiceName()
|
||||||
|
{
|
||||||
|
ServiceController[] services = ServiceController.GetServices();
|
||||||
|
var service = services.FirstOrDefault(s => s.ServiceName == "MariaDB");
|
||||||
|
if (service != null)
|
||||||
|
return service.DisplayName;
|
||||||
|
|
||||||
|
service = services.FirstOrDefault(s => s.ServiceName == "MySQL");
|
||||||
|
if (service != null)
|
||||||
|
return service.DisplayName;
|
||||||
|
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion Private Methods
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<configuration>
|
<configuration>
|
||||||
<configSections>
|
<configSections>
|
||||||
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
|
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
|
||||||
@@ -8,21 +8,37 @@
|
|||||||
<defaultConnectionFactory type="MySql.Data.Entity.MySqlConnectionFactory, MySql.Data.Entity.EF6" />
|
<defaultConnectionFactory type="MySql.Data.Entity.MySqlConnectionFactory, MySql.Data.Entity.EF6" />
|
||||||
<providers>
|
<providers>
|
||||||
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
|
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
|
||||||
<provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6, Version=6.10.9.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
|
|
||||||
</providers>
|
<provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.EntityFramework, Version=8.0.21.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d">
|
||||||
|
</provider></providers>
|
||||||
</entityFramework>
|
</entityFramework>
|
||||||
<connectionStrings>
|
<connectionStrings>
|
||||||
<add name="DefaultConnection" connectionString="server=localhost;port=3306;User Id=EgtUser;password=viacremasca;Persist Security Info=True;database=EgtBwDb;SslMode=none" providerName="MySql.Data.MySqlClient" />
|
<add name="DefaultConnection" connectionString="server=localhost;port=3306;User Id=steamware;password=Egalware_24068!;Persist Security Info=True;database=EgtBwDb_000470;SslMode=none" providerName="MySql.Data.MySqlClient" />
|
||||||
</connectionStrings>
|
</connectionStrings>
|
||||||
<runtime>
|
<runtime>
|
||||||
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
|
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
|
||||||
<dependentAssembly>
|
<dependentAssembly>
|
||||||
<assemblyIdentity name="MySql.Data" publicKeyToken="c5687fc88969c44d" culture="neutral" />
|
<assemblyIdentity name="MySql.Data" publicKeyToken="c5687fc88969c44d" culture="neutral" />
|
||||||
<bindingRedirect oldVersion="0.0.0.0-6.10.9.0" newVersion="6.10.9.0" />
|
<bindingRedirect oldVersion="0.0.0.0-8.0.29.0" newVersion="8.0.29.0" />
|
||||||
|
</dependentAssembly>
|
||||||
|
<dependentAssembly>
|
||||||
|
<assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||||
|
<bindingRedirect oldVersion="0.0.0.0-5.0.0.0" newVersion="5.0.0.0" />
|
||||||
|
</dependentAssembly>
|
||||||
|
<dependentAssembly>
|
||||||
|
<assemblyIdentity name="Google.Protobuf" publicKeyToken="a7d26565bac4d604" culture="neutral" />
|
||||||
|
<bindingRedirect oldVersion="0.0.0.0-3.19.4.0" newVersion="3.19.4.0" />
|
||||||
|
</dependentAssembly>
|
||||||
|
<dependentAssembly>
|
||||||
|
<assemblyIdentity name="K4os.Compression.LZ4.Streams" publicKeyToken="2186fa9121ef231d" culture="neutral" />
|
||||||
|
<bindingRedirect oldVersion="0.0.0.0-1.2.6.0" newVersion="1.2.6.0" />
|
||||||
|
</dependentAssembly>
|
||||||
|
<dependentAssembly>
|
||||||
|
<assemblyIdentity name="BouncyCastle.Crypto" publicKeyToken="0e99375e54769942" culture="neutral" />
|
||||||
|
<bindingRedirect oldVersion="0.0.0.0-1.8.5.0" newVersion="1.8.5.0" />
|
||||||
</dependentAssembly>
|
</dependentAssembly>
|
||||||
</assemblyBinding>
|
</assemblyBinding>
|
||||||
</runtime>
|
</runtime>
|
||||||
|
|
||||||
<startup>
|
<startup>
|
||||||
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
|
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
|
||||||
</startup>
|
</startup>
|
||||||
|
|||||||
@@ -1,25 +1,17 @@
|
|||||||
using System;
|
using EgtBEAMWALL.DataLayer.DatabaseModels;
|
||||||
|
using NLog;
|
||||||
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text;
|
|
||||||
using EgtBEAMWALL.DataLayer.DatabaseModels;
|
|
||||||
|
|
||||||
namespace EgtBEAMWALL.DataLayer.Controllers
|
namespace EgtBEAMWALL.DataLayer.Controllers
|
||||||
{
|
{
|
||||||
public class BTLPartController : IDisposable
|
public class BTLPartController : IDisposable
|
||||||
{
|
{
|
||||||
#region Private Fields
|
|
||||||
|
|
||||||
private DatabaseContext dbCtx;
|
|
||||||
|
|
||||||
#endregion Private Fields
|
|
||||||
|
|
||||||
#region Public Constructors
|
#region Public Constructors
|
||||||
|
|
||||||
public BTLPartController()
|
public BTLPartController()
|
||||||
{
|
{
|
||||||
// Initialize database context
|
|
||||||
dbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion Public Constructors
|
#endregion Public Constructors
|
||||||
@@ -105,15 +97,19 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
// Add to database
|
using (DatabaseContext localDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
|
||||||
dbCtx.BTLPartList.AddRange(partData);
|
{
|
||||||
// Commit changes
|
// Add to database
|
||||||
dbCtx.SaveChanges();
|
localDbCtx.BTLPartList.AddRange(partData);
|
||||||
ResetController();
|
// Commit changes
|
||||||
|
localDbCtx.SaveChanges();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
catch (Exception exc)
|
catch (Exception exc)
|
||||||
{
|
{
|
||||||
Console.WriteLine($"EXCEPTION on Create: {exc}");
|
string errMessage = $"EXCEPTION on BTLPart.Create: {Environment.NewLine}{exc}";
|
||||||
|
Console.WriteLine(errMessage);
|
||||||
|
Log.Error(errMessage);
|
||||||
}
|
}
|
||||||
return partData;
|
return partData;
|
||||||
}
|
}
|
||||||
@@ -147,15 +143,19 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
|||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
// Add to database
|
using (DatabaseContext localDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
|
||||||
dbCtx.BTLPartList.AddRange(partData);
|
{
|
||||||
// Commit changes
|
// Add to database
|
||||||
dbCtx.SaveChanges();
|
localDbCtx.BTLPartList.AddRange(partData);
|
||||||
ResetController();
|
// Commit changes
|
||||||
|
localDbCtx.SaveChanges();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
catch (Exception exc)
|
catch (Exception exc)
|
||||||
{
|
{
|
||||||
Console.WriteLine($"EXCEPTION on CreateBaseObj: {exc}");
|
string errMessage = $"EXCEPTION on BTLPart.CreateBaseObj: {Environment.NewLine}{exc}";
|
||||||
|
Console.WriteLine(errMessage);
|
||||||
|
Log.Error(errMessage);
|
||||||
}
|
}
|
||||||
|
|
||||||
return partData;
|
return partData;
|
||||||
@@ -169,22 +169,26 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
|||||||
public bool Delete(int PartDbId)
|
public bool Delete(int PartDbId)
|
||||||
{
|
{
|
||||||
bool done = false;
|
bool done = false;
|
||||||
var item2del = dbCtx
|
using (DatabaseContext localDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
|
||||||
|
{
|
||||||
|
var item2del = localDbCtx
|
||||||
.BTLPartList
|
.BTLPartList
|
||||||
.Where(x => x.BTLPartDbId == PartDbId)
|
.Where(x => x.BTLPartDbId == PartDbId)
|
||||||
.SingleOrDefault();
|
.SingleOrDefault();
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
// Add to database
|
// Add to database
|
||||||
dbCtx.BTLPartList.Remove(item2del);
|
localDbCtx.BTLPartList.Remove(item2del);
|
||||||
// Commit changes
|
// Commit changes
|
||||||
dbCtx.SaveChanges();
|
localDbCtx.SaveChanges();
|
||||||
ResetController();
|
done = true;
|
||||||
done = true;
|
}
|
||||||
}
|
catch (Exception exc)
|
||||||
catch (Exception exc)
|
{
|
||||||
{
|
string errMessage = $"EXCEPTION on BTLPart.Delete: {Environment.NewLine}{exc}";
|
||||||
Console.WriteLine($"EXCEPTION on Delete: {exc}");
|
Console.WriteLine(errMessage);
|
||||||
|
Log.Error(errMessage);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return done;
|
return done;
|
||||||
}
|
}
|
||||||
@@ -197,29 +201,31 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
|||||||
public bool DeleteByProject(int ProjDbId)
|
public bool DeleteByProject(int ProjDbId)
|
||||||
{
|
{
|
||||||
bool done = false;
|
bool done = false;
|
||||||
var items2del = dbCtx
|
using (DatabaseContext localDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
|
||||||
|
{
|
||||||
|
var items2del = localDbCtx
|
||||||
.BTLPartList
|
.BTLPartList
|
||||||
.Where(x => x.ProjDbId == ProjDbId);
|
.Where(x => x.ProjDbId == ProjDbId);
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
// Add to database
|
// Add to database
|
||||||
dbCtx.BTLPartList.RemoveRange(items2del);
|
localDbCtx.BTLPartList.RemoveRange(items2del);
|
||||||
// Commit changes
|
// Commit changes
|
||||||
dbCtx.SaveChanges();
|
localDbCtx.SaveChanges();
|
||||||
ResetController();
|
done = true;
|
||||||
done = true;
|
}
|
||||||
}
|
catch (Exception exc)
|
||||||
catch (Exception exc)
|
{
|
||||||
{
|
string errMessage = $"EXCEPTION on BTLPart.DeleteByProject: {Environment.NewLine}{exc}";
|
||||||
Console.WriteLine($"EXCEPTION on DeleteByProject: {exc}");
|
Console.WriteLine(errMessage);
|
||||||
|
Log.Error(errMessage);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return done;
|
return done;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Dispose()
|
public void Dispose()
|
||||||
{
|
{
|
||||||
// Clear database context
|
|
||||||
dbCtx.Dispose();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -229,10 +235,13 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
|||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public BTLPartModel FindByDbId(int PartDbId)
|
public BTLPartModel FindByDbId(int PartDbId)
|
||||||
{
|
{
|
||||||
return dbCtx
|
using (DatabaseContext localDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
|
||||||
|
{
|
||||||
|
return localDbCtx
|
||||||
.BTLPartList
|
.BTLPartList
|
||||||
.Where(x => x.BTLPartDbId == PartDbId)
|
.Where(x => x.BTLPartDbId == PartDbId)
|
||||||
.SingleOrDefault();
|
.SingleOrDefault();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -242,10 +251,13 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
|||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public BTLPartModel FindByPartId(int PartId)
|
public BTLPartModel FindByPartId(int PartId)
|
||||||
{
|
{
|
||||||
return dbCtx
|
using (DatabaseContext localDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
|
||||||
|
{
|
||||||
|
return localDbCtx
|
||||||
.BTLPartList
|
.BTLPartList
|
||||||
.Where(x => x.PartId == PartId)
|
.Where(x => x.PartId == PartId)
|
||||||
.SingleOrDefault();
|
.SingleOrDefault();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -256,10 +268,13 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
|||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public BTLPartModel FindByPartIdProjDbId(int PartId, int ProjDbId)
|
public BTLPartModel FindByPartIdProjDbId(int PartId, int ProjDbId)
|
||||||
{
|
{
|
||||||
return dbCtx
|
using (DatabaseContext localDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
|
||||||
|
{
|
||||||
|
return localDbCtx
|
||||||
.BTLPartList
|
.BTLPartList
|
||||||
.Where(x => x.PartId == PartId && x.ProjDbId == ProjDbId)
|
.Where(x => x.PartId == PartId && x.ProjDbId == ProjDbId)
|
||||||
.FirstOrDefault();
|
.FirstOrDefault();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -269,12 +284,15 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
|||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public List<BTLPartModel> GetByProjectAsc(int ProjDbId)
|
public List<BTLPartModel> GetByProjectAsc(int ProjDbId)
|
||||||
{
|
{
|
||||||
// retrieve
|
using (DatabaseContext localDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
|
||||||
return dbCtx
|
{
|
||||||
|
// retrieve
|
||||||
|
return localDbCtx
|
||||||
.BTLPartList
|
.BTLPartList
|
||||||
.Where(x => x.ProjDbId == ProjDbId)
|
.Where(x => x.ProjDbId == ProjDbId)
|
||||||
.OrderBy(x => x.BTLPartDbId)
|
.OrderBy(x => x.BTLPartDbId)
|
||||||
.ToList();
|
.ToList();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -284,12 +302,15 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
|||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public List<BTLPartModel> GetByProjectDesc(int ProjDbId)
|
public List<BTLPartModel> GetByProjectDesc(int ProjDbId)
|
||||||
{
|
{
|
||||||
// retrieve
|
using (DatabaseContext localDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
|
||||||
return dbCtx
|
{
|
||||||
|
// retrieve
|
||||||
|
return localDbCtx
|
||||||
.BTLPartList
|
.BTLPartList
|
||||||
.Where(x => x.ProjDbId == ProjDbId)
|
.Where(x => x.ProjDbId == ProjDbId)
|
||||||
.OrderByDescending(x => x.BTLPartDbId)
|
.OrderByDescending(x => x.BTLPartDbId)
|
||||||
.ToList();
|
.ToList();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -300,17 +321,22 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
|||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public List<BTLPartModel> GetPaginatedAsc(int PartDbIdStart, int numRecord)
|
public List<BTLPartModel> GetPaginatedAsc(int PartDbIdStart, int numRecord)
|
||||||
{
|
{
|
||||||
|
List<BTLPartModel> answ = new List<BTLPartModel>();
|
||||||
int numEnd = PartDbIdStart - numRecord;
|
int numEnd = PartDbIdStart - numRecord;
|
||||||
// check numEnd
|
// check numEnd
|
||||||
if (numEnd < 0)
|
if (numEnd < 0)
|
||||||
numEnd = 0;
|
numEnd = 0;
|
||||||
// retrieve
|
using (DatabaseContext localDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
|
||||||
return dbCtx
|
{
|
||||||
.BTLPartList
|
// retrieve
|
||||||
.Where(x => x.BTLPartDbId <= PartDbIdStart)
|
answ = localDbCtx
|
||||||
.OrderBy(x => x.BTLPartDbId)
|
.BTLPartList
|
||||||
.Take(numRecord)
|
.Where(x => x.BTLPartDbId <= PartDbIdStart)
|
||||||
.ToList();
|
.OrderBy(x => x.BTLPartDbId)
|
||||||
|
.Take(numRecord)
|
||||||
|
.ToList();
|
||||||
|
}
|
||||||
|
return answ;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -321,26 +347,22 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
|||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public List<BTLPartModel> GetPaginatedDesc(int PartDbIdStart, int numRecord)
|
public List<BTLPartModel> GetPaginatedDesc(int PartDbIdStart, int numRecord)
|
||||||
{
|
{
|
||||||
|
List<BTLPartModel> answ = new List<BTLPartModel>();
|
||||||
int numEnd = PartDbIdStart - numRecord;
|
int numEnd = PartDbIdStart - numRecord;
|
||||||
// check numEnd
|
// check numEnd
|
||||||
if (numEnd < 0)
|
if (numEnd < 0)
|
||||||
numEnd = 0;
|
numEnd = 0;
|
||||||
// retrieve
|
using (DatabaseContext localDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
|
||||||
return dbCtx
|
{
|
||||||
.BTLPartList
|
// retrieve
|
||||||
.Where(x => x.BTLPartDbId <= PartDbIdStart)
|
answ = localDbCtx
|
||||||
.OrderByDescending(x => x.BTLPartDbId)
|
.BTLPartList
|
||||||
.Take(numRecord)
|
.Where(x => x.BTLPartDbId <= PartDbIdStart)
|
||||||
.ToList();
|
.OrderByDescending(x => x.BTLPartDbId)
|
||||||
}
|
.Take(numRecord)
|
||||||
|
.ToList();
|
||||||
/// <summary>
|
}
|
||||||
/// Reinizializzaizone del controller
|
return answ;
|
||||||
/// </summary>
|
|
||||||
public void ResetController()
|
|
||||||
{
|
|
||||||
// Re-Initialize database context
|
|
||||||
dbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -351,32 +373,44 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
|||||||
public bool Update(BTLPartModel updItem)
|
public bool Update(BTLPartModel updItem)
|
||||||
{
|
{
|
||||||
bool done = false;
|
bool done = false;
|
||||||
var item2update = dbCtx
|
using (DatabaseContext localDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
|
||||||
|
{
|
||||||
|
var item2update = localDbCtx
|
||||||
.BTLPartList
|
.BTLPartList
|
||||||
.Where(x => x.BTLPartDbId == updItem.BTLPartDbId)
|
.Where(x => x.BTLPartDbId == updItem.BTLPartDbId)
|
||||||
.SingleOrDefault();
|
.SingleOrDefault();
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
// update, vers 1...
|
// update, vers 1...
|
||||||
dbCtx.Entry(item2update).CurrentValues.SetValues(updItem);
|
localDbCtx.Entry(item2update).CurrentValues.SetValues(updItem);
|
||||||
|
|
||||||
//// update, vers 2
|
//// update, vers 2
|
||||||
//dbCtx.BTLPartList.Remove(item2del);
|
//localDbCtx.BTLPartList.Remove(item2del);
|
||||||
//dbCtx.BTLPartList.Add(updItem);
|
//localDbCtx.BTLPartList.Add(updItem);
|
||||||
|
|
||||||
// Commit changes
|
// Commit changes
|
||||||
dbCtx.SaveChanges();
|
localDbCtx.SaveChanges();
|
||||||
done = true;
|
done = true;
|
||||||
|
}
|
||||||
|
catch (Exception exc)
|
||||||
|
{
|
||||||
|
string errMessage = $"EXCEPTION on BTLPart.Update: {Environment.NewLine}{exc}";
|
||||||
|
Console.WriteLine(errMessage);
|
||||||
|
Log.Error(errMessage);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
catch (Exception exc)
|
|
||||||
{
|
|
||||||
Console.WriteLine($"EXCEPTION on Update: {exc}");
|
|
||||||
}
|
|
||||||
// reset...
|
|
||||||
ResetController();
|
|
||||||
return done;
|
return done;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion Public Methods
|
#endregion Public Methods
|
||||||
|
|
||||||
|
#region Private Fields
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Istanza logger
|
||||||
|
/// </summary>
|
||||||
|
private NLog.Logger Log = LogManager.GetCurrentClassLogger();
|
||||||
|
|
||||||
|
#endregion Private Fields
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,19 +1,12 @@
|
|||||||
using System;
|
using NLog;
|
||||||
using System.Collections.Generic;
|
using System;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text;
|
using System.Threading;
|
||||||
using EgtBEAMWALL.DataLayer.DatabaseModels;
|
|
||||||
|
|
||||||
namespace EgtBEAMWALL.DataLayer.Controllers
|
namespace EgtBEAMWALL.DataLayer.Controllers
|
||||||
{
|
{
|
||||||
public class DbController : IDisposable
|
public class DbController : IDisposable
|
||||||
{
|
{
|
||||||
#region Private Fields
|
|
||||||
|
|
||||||
private AdminContext adbCtx;
|
|
||||||
|
|
||||||
#endregion Private Fields
|
|
||||||
|
|
||||||
#region Public Fields
|
#region Public Fields
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -63,22 +56,39 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
|||||||
//string sqlCommand = $"CREATE USER '{username}'@'{domain}' IDENTIFIED BY '{pwd}'; GRANT ALL ON *.* TO '{username}'@'localhost'; FLUSH PRIVILEGES;";
|
//string sqlCommand = $"CREATE USER '{username}'@'{domain}' IDENTIFIED BY '{pwd}'; GRANT ALL ON *.* TO '{username}'@'localhost'; FLUSH PRIVILEGES;";
|
||||||
//string sqlCommand = $"CREATE USER '{username}'@'{domain}' IDENTIFIED BY '{pwd}'; GRANT ALL ON *.* TO '{username}'@'localhost'; FLUSH PRIVILEGES;";
|
//string sqlCommand = $"CREATE USER '{username}'@'{domain}' IDENTIFIED BY '{pwd}'; GRANT ALL ON *.* TO '{username}'@'localhost'; FLUSH PRIVILEGES;";
|
||||||
adbCtx.Database.ExecuteSqlCommand(System.Data.Entity.TransactionalBehavior.DoNotEnsureTransaction, sqlCommand);
|
adbCtx.Database.ExecuteSqlCommand(System.Data.Entity.TransactionalBehavior.DoNotEnsureTransaction, sqlCommand);
|
||||||
|
Thread.Sleep(100);
|
||||||
sqlCommand = $"CREATE USER '{username}'@'{domain}' IDENTIFIED BY '{pwd}';";
|
sqlCommand = $"CREATE USER '{username}'@'{domain}' IDENTIFIED BY '{pwd}';";
|
||||||
adbCtx.Database.ExecuteSqlCommand(System.Data.Entity.TransactionalBehavior.DoNotEnsureTransaction, sqlCommand);
|
adbCtx.Database.ExecuteSqlCommand(System.Data.Entity.TransactionalBehavior.DoNotEnsureTransaction, sqlCommand);
|
||||||
|
Thread.Sleep(100);
|
||||||
sqlCommand = $"GRANT ALL ON *.* TO '{username}'@'{domain}';";
|
sqlCommand = $"GRANT ALL ON *.* TO '{username}'@'{domain}';";
|
||||||
adbCtx.Database.ExecuteSqlCommand(System.Data.Entity.TransactionalBehavior.DoNotEnsureTransaction, sqlCommand);
|
adbCtx.Database.ExecuteSqlCommand(System.Data.Entity.TransactionalBehavior.DoNotEnsureTransaction, sqlCommand);
|
||||||
|
Thread.Sleep(100);
|
||||||
sqlCommand = "FLUSH PRIVILEGES;";
|
sqlCommand = "FLUSH PRIVILEGES;";
|
||||||
adbCtx.Database.ExecuteSqlCommand(System.Data.Entity.TransactionalBehavior.DoNotEnsureTransaction, sqlCommand);
|
adbCtx.Database.ExecuteSqlCommand(System.Data.Entity.TransactionalBehavior.DoNotEnsureTransaction, sqlCommand);
|
||||||
|
Thread.Sleep(100);
|
||||||
}
|
}
|
||||||
return answ;
|
return answ;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Migrazione esplicita del DB da parte dell'admin controller
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
public bool checkMigrateDb()
|
||||||
|
{
|
||||||
|
return adbCtx.SetUpDbConnectionAndDbConfig();
|
||||||
|
}
|
||||||
|
|
||||||
public void Dispose()
|
public void Dispose()
|
||||||
{
|
{
|
||||||
// Clear database context
|
// Clear database context
|
||||||
adbCtx.Dispose();
|
adbCtx.Dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// ATTENZIONE!!!! Procedura di Reset del DB
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
public bool ResetDb()
|
public bool ResetDb()
|
||||||
{
|
{
|
||||||
bool answ = false;
|
bool answ = false;
|
||||||
@@ -94,12 +104,25 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
|||||||
}
|
}
|
||||||
catch (Exception exc)
|
catch (Exception exc)
|
||||||
{
|
{
|
||||||
Console.WriteLine($"EXCEPTION on ResetDb: {exc}");
|
string errMessage = $"EXCEPTION on DbController.ResetDb: {Environment.NewLine}{exc}";
|
||||||
|
Console.WriteLine(errMessage);
|
||||||
|
Log.Error(errMessage);
|
||||||
}
|
}
|
||||||
|
|
||||||
return answ;
|
return answ;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion Public Methods
|
#endregion Public Methods
|
||||||
|
|
||||||
|
#region Private Fields
|
||||||
|
|
||||||
|
private AdminContext adbCtx;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Istanza logger
|
||||||
|
/// </summary>
|
||||||
|
private NLog.Logger Log = LogManager.GetCurrentClassLogger();
|
||||||
|
|
||||||
|
#endregion Private Fields
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,25 +1,17 @@
|
|||||||
using System;
|
using EgtBEAMWALL.DataLayer.DatabaseModels;
|
||||||
|
using NLog;
|
||||||
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text;
|
|
||||||
using EgtBEAMWALL.DataLayer.DatabaseModels;
|
|
||||||
|
|
||||||
namespace EgtBEAMWALL.DataLayer.Controllers
|
namespace EgtBEAMWALL.DataLayer.Controllers
|
||||||
{
|
{
|
||||||
public class LogMachineController : IDisposable
|
public class LogMachineController : IDisposable
|
||||||
{
|
{
|
||||||
#region Private Fields
|
|
||||||
|
|
||||||
private DatabaseContext dbCtx;
|
|
||||||
|
|
||||||
#endregion Private Fields
|
|
||||||
|
|
||||||
#region Public Constructors
|
#region Public Constructors
|
||||||
|
|
||||||
public LogMachineController()
|
public LogMachineController()
|
||||||
{
|
{
|
||||||
// Initialize database context
|
|
||||||
dbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion Public Constructors
|
#endregion Public Constructors
|
||||||
@@ -63,7 +55,7 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
|||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public static Core.MachLog ConvertToCore(LogMachineModel dbLog)
|
public static Core.MachLog ConvertToCore(LogMachineModel dbLog)
|
||||||
{
|
{
|
||||||
var newRecord = Core.MachLog.CreateMacLog(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);
|
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;
|
return newRecord;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -79,18 +71,19 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
using (var currDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
|
using (var locallocalDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
|
||||||
{
|
{
|
||||||
// Add to database
|
// Add to database
|
||||||
currDbCtx.LogMachineList.Add(newLogMac);
|
locallocalDbCtx.LogMachineList.Add(newLogMac);
|
||||||
// Commit changes
|
// Commit changes
|
||||||
currDbCtx.SaveChanges();
|
locallocalDbCtx.SaveChanges();
|
||||||
ResetController();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception exc)
|
catch (Exception exc)
|
||||||
{
|
{
|
||||||
Console.WriteLine($"EXCEPTION on Create LogMachine: {exc}");
|
string errMessage = $"EXCEPTION on LogMachine.Create: {Environment.NewLine}{exc}";
|
||||||
|
Console.WriteLine(errMessage);
|
||||||
|
Log.Error(errMessage);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch
|
catch
|
||||||
@@ -117,29 +110,31 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
|||||||
public bool DeleteByKey(int LogDbId)
|
public bool DeleteByKey(int LogDbId)
|
||||||
{
|
{
|
||||||
bool done = false;
|
bool done = false;
|
||||||
var items2del = dbCtx
|
using (DatabaseContext localDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
|
||||||
|
{
|
||||||
|
var items2del = localDbCtx
|
||||||
.LogMachineList
|
.LogMachineList
|
||||||
.Where(x => x.LogDbId == LogDbId);
|
.Where(x => x.LogDbId == LogDbId);
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
// Add to database
|
// Add to database
|
||||||
dbCtx.LogMachineList.RemoveRange(items2del);
|
localDbCtx.LogMachineList.RemoveRange(items2del);
|
||||||
// Commit changes
|
// Commit changes
|
||||||
dbCtx.SaveChanges();
|
localDbCtx.SaveChanges();
|
||||||
ResetController();
|
done = true;
|
||||||
done = true;
|
}
|
||||||
}
|
catch (Exception exc)
|
||||||
catch (Exception exc)
|
{
|
||||||
{
|
string errMessage = $"EXCEPTION on LogMachine.DeleteByKey: {Environment.NewLine}{exc}";
|
||||||
Console.WriteLine($"EXCEPTION on DeleteByKey: {exc}");
|
Console.WriteLine(errMessage);
|
||||||
|
Log.Error(errMessage);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return done;
|
return done;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Dispose()
|
public void Dispose()
|
||||||
{
|
{
|
||||||
// Clear database context
|
|
||||||
dbCtx.Dispose();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -149,10 +144,13 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
|||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public LogMachineModel FindByDbId(int LogDbId)
|
public LogMachineModel FindByDbId(int LogDbId)
|
||||||
{
|
{
|
||||||
return dbCtx
|
using (DatabaseContext localDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
|
||||||
|
{
|
||||||
|
return localDbCtx
|
||||||
.LogMachineList
|
.LogMachineList
|
||||||
.Where(x => x.LogDbId == LogDbId)
|
.Where(x => x.LogDbId == LogDbId)
|
||||||
.SingleOrDefault();
|
.SingleOrDefault();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -163,12 +161,41 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
|||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public List<LogMachineModel> GetAsc(DateTime dtStart, DateTime dtEnd)
|
public List<LogMachineModel> GetAsc(DateTime dtStart, DateTime dtEnd)
|
||||||
{
|
{
|
||||||
// retrieve
|
using (DatabaseContext localDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
|
||||||
return dbCtx
|
{
|
||||||
|
// retrieve
|
||||||
|
return localDbCtx
|
||||||
.LogMachineList
|
.LogMachineList
|
||||||
.Where(x => x.AlarmDatetime >= dtStart && x.AlarmDatetime <= dtEnd)
|
.Where(x => x.AlarmDatetime >= dtStart && x.AlarmDatetime <= dtEnd)
|
||||||
.OrderBy(x => x.AlarmDatetime)
|
.OrderBy(x => x.AlarmDatetime)
|
||||||
.ToList();
|
.ToList();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Get paginated data from DB (ASC ordered) in "core format"
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="dtStart"></param>
|
||||||
|
/// <param name="dtEnd"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public List<Core.MachLog> GetCoreAsc(DateTime dtStart, DateTime dtEnd)
|
||||||
|
{
|
||||||
|
var rawData = GetAsc(dtStart, dtEnd);
|
||||||
|
var coreData = rawData.Select(x => ConvertToCore(x)).ToList();
|
||||||
|
return coreData;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Get paginated data from DB (DESC ordered) in "core format"
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="dtStart"></param>
|
||||||
|
/// <param name="dtEnd"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public List<Core.MachLog> GetCoreDesc(DateTime dtStart, DateTime dtEnd)
|
||||||
|
{
|
||||||
|
var rawData = GetDesc(dtStart, dtEnd);
|
||||||
|
var coreData = rawData.Select(x => ConvertToCore(x)).ToList();
|
||||||
|
return coreData;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -179,21 +206,15 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
|||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public List<LogMachineModel> GetDesc(DateTime dtStart, DateTime dtEnd)
|
public List<LogMachineModel> GetDesc(DateTime dtStart, DateTime dtEnd)
|
||||||
{
|
{
|
||||||
// retrieve
|
using (DatabaseContext localDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
|
||||||
return dbCtx
|
{
|
||||||
|
// retrieve
|
||||||
|
return localDbCtx
|
||||||
.LogMachineList
|
.LogMachineList
|
||||||
.Where(x => x.AlarmDatetime >= dtStart && x.AlarmDatetime <= dtEnd)
|
.Where(x => x.AlarmDatetime >= dtStart && x.AlarmDatetime <= dtEnd)
|
||||||
.OrderByDescending(x => x.AlarmDatetime)
|
.OrderByDescending(x => x.AlarmDatetime)
|
||||||
.ToList();
|
.ToList();
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Reinizializzaizone del controller
|
|
||||||
/// </summary>
|
|
||||||
public void ResetController()
|
|
||||||
{
|
|
||||||
// Re-Initialize database context
|
|
||||||
dbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -204,27 +225,40 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
|||||||
public bool Update(LogMachineModel updItem)
|
public bool Update(LogMachineModel updItem)
|
||||||
{
|
{
|
||||||
bool done = false;
|
bool done = false;
|
||||||
var item2update = dbCtx
|
using (DatabaseContext localDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
|
||||||
|
{
|
||||||
|
var item2update = localDbCtx
|
||||||
.LogMachineList
|
.LogMachineList
|
||||||
.Where(x => x.LogDbId == updItem.LogDbId)
|
.Where(x => x.LogDbId == updItem.LogDbId)
|
||||||
.SingleOrDefault();
|
.SingleOrDefault();
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
// update, vers 1...
|
// update, vers 1...
|
||||||
dbCtx.Entry(item2update).CurrentValues.SetValues(updItem);
|
localDbCtx.Entry(item2update).CurrentValues.SetValues(updItem);
|
||||||
|
|
||||||
// Commit changes
|
// Commit changes
|
||||||
dbCtx.SaveChanges();
|
localDbCtx.SaveChanges();
|
||||||
ResetController();
|
done = true;
|
||||||
done = true;
|
}
|
||||||
}
|
catch (Exception exc)
|
||||||
catch (Exception exc)
|
{
|
||||||
{
|
string errMessage = $"EXCEPTION on LogMachine.Update: {Environment.NewLine}{exc}";
|
||||||
Console.WriteLine($"EXCEPTION on Update: {exc}");
|
Console.WriteLine(errMessage);
|
||||||
|
Log.Error(errMessage);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return done;
|
return done;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion Public Methods
|
#endregion Public Methods
|
||||||
|
|
||||||
|
#region Private Fields
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Istanza logger
|
||||||
|
/// </summary>
|
||||||
|
private NLog.Logger Log = LogManager.GetCurrentClassLogger();
|
||||||
|
|
||||||
|
#endregion Private Fields
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,25 +1,17 @@
|
|||||||
using System;
|
using EgtBEAMWALL.DataLayer.DatabaseModels;
|
||||||
|
using NLog;
|
||||||
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text;
|
|
||||||
using EgtBEAMWALL.DataLayer.DatabaseModels;
|
|
||||||
|
|
||||||
namespace EgtBEAMWALL.DataLayer.Controllers
|
namespace EgtBEAMWALL.DataLayer.Controllers
|
||||||
{
|
{
|
||||||
public class LogSupportController : IDisposable
|
public class LogSupportController : IDisposable
|
||||||
{
|
{
|
||||||
#region Private Fields
|
|
||||||
|
|
||||||
private DatabaseContext dbCtx;
|
|
||||||
|
|
||||||
#endregion Private Fields
|
|
||||||
|
|
||||||
#region Public Constructors
|
#region Public Constructors
|
||||||
|
|
||||||
public LogSupportController()
|
public LogSupportController()
|
||||||
{
|
{
|
||||||
// Initialize database context
|
|
||||||
dbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion Public Constructors
|
#endregion Public Constructors
|
||||||
@@ -41,24 +33,28 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
|||||||
public bool Create(DateTime dtCreated, Core.LogSupportLevel level, Core.LogSupportTarget target, string message)
|
public bool Create(DateTime dtCreated, Core.LogSupportLevel level, Core.LogSupportTarget target, string message)
|
||||||
{
|
{
|
||||||
bool fatto = false;
|
bool fatto = false;
|
||||||
try
|
using (DatabaseContext localDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
LogSupportModel newItem = new LogSupportModel() { DtEvent = dtCreated, Level = level, Target = target, Message = message };
|
try
|
||||||
// Add to database
|
{
|
||||||
dbCtx.LogSupportList.Add(newItem);
|
LogSupportModel newItem = new LogSupportModel() { DtEvent = dtCreated, Level = level, Target = target, Message = message };
|
||||||
// Commit changes
|
// Add to database
|
||||||
dbCtx.SaveChanges();
|
localDbCtx.LogSupportList.Add(newItem);
|
||||||
ResetController();
|
// Commit changes
|
||||||
}
|
localDbCtx.SaveChanges();
|
||||||
catch (Exception exc)
|
}
|
||||||
{
|
catch (Exception exc)
|
||||||
Console.WriteLine($"EXCEPTION on Create LogSupport: {exc}");
|
{
|
||||||
|
string errMessage = $"EXCEPTION on LogSupport.Create: {Environment.NewLine}{exc}";
|
||||||
|
Console.WriteLine(errMessage);
|
||||||
|
Log.Error(errMessage);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
catch
|
||||||
|
{ }
|
||||||
}
|
}
|
||||||
catch
|
|
||||||
{ }
|
|
||||||
return fatto;
|
return fatto;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -70,29 +66,31 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
|||||||
public bool DeleteByKey(int LogDbId)
|
public bool DeleteByKey(int LogDbId)
|
||||||
{
|
{
|
||||||
bool done = false;
|
bool done = false;
|
||||||
var items2del = dbCtx
|
using (DatabaseContext localDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
|
||||||
.LogSupportList
|
|
||||||
.Where(x => x.LogDbId == LogDbId);
|
|
||||||
try
|
|
||||||
{
|
{
|
||||||
// Add to database
|
var items2del = localDbCtx
|
||||||
dbCtx.LogSupportList.RemoveRange(items2del);
|
.LogSupportList
|
||||||
// Commit changes
|
.Where(x => x.LogDbId == LogDbId);
|
||||||
dbCtx.SaveChanges();
|
try
|
||||||
ResetController();
|
{
|
||||||
done = true;
|
// Add to database
|
||||||
}
|
localDbCtx.LogSupportList.RemoveRange(items2del);
|
||||||
catch (Exception exc)
|
// Commit changes
|
||||||
{
|
localDbCtx.SaveChanges();
|
||||||
Console.WriteLine($"EXCEPTION on DeleteByKey: {exc}");
|
done = true;
|
||||||
|
}
|
||||||
|
catch (Exception exc)
|
||||||
|
{
|
||||||
|
string errMessage = $"EXCEPTION on LogSupport.DeleteByKey: {Environment.NewLine}{exc}";
|
||||||
|
Console.WriteLine(errMessage);
|
||||||
|
Log.Error(errMessage);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return done;
|
return done;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Dispose()
|
public void Dispose()
|
||||||
{
|
{
|
||||||
// Clear database context
|
|
||||||
dbCtx.Dispose();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -102,10 +100,13 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
|||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public LogSupportModel FindByDbId(int LogDbId)
|
public LogSupportModel FindByDbId(int LogDbId)
|
||||||
{
|
{
|
||||||
return dbCtx
|
using (DatabaseContext localDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
|
||||||
.LogSupportList
|
{
|
||||||
.Where(x => x.LogDbId == LogDbId)
|
return localDbCtx
|
||||||
.SingleOrDefault();
|
.LogSupportList
|
||||||
|
.Where(x => x.LogDbId == LogDbId)
|
||||||
|
.SingleOrDefault();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -117,11 +118,14 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
|||||||
public List<LogSupportModel> GetPaginatedAsc(DateTime dtStart, DateTime dtEnd)
|
public List<LogSupportModel> GetPaginatedAsc(DateTime dtStart, DateTime dtEnd)
|
||||||
{
|
{
|
||||||
// retrieve
|
// retrieve
|
||||||
return dbCtx
|
using (DatabaseContext localDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
|
||||||
|
{
|
||||||
|
return localDbCtx
|
||||||
.LogSupportList
|
.LogSupportList
|
||||||
.Where(x => x.DtEvent >= dtStart && x.DtEvent <= dtEnd)
|
.Where(x => x.DtEvent >= dtStart && x.DtEvent <= dtEnd)
|
||||||
.OrderBy(x => x.DtEvent)
|
.OrderBy(x => x.DtEvent)
|
||||||
.ToList();
|
.ToList();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -133,20 +137,14 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
|||||||
public List<LogSupportModel> GetPaginatedDesc(DateTime dtStart, DateTime dtEnd)
|
public List<LogSupportModel> GetPaginatedDesc(DateTime dtStart, DateTime dtEnd)
|
||||||
{
|
{
|
||||||
// retrieve
|
// retrieve
|
||||||
return dbCtx
|
using (DatabaseContext localDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
|
||||||
|
{
|
||||||
|
return localDbCtx
|
||||||
.LogSupportList
|
.LogSupportList
|
||||||
.Where(x => x.DtEvent >= dtStart && x.DtEvent <= dtEnd)
|
.Where(x => x.DtEvent >= dtStart && x.DtEvent <= dtEnd)
|
||||||
.OrderByDescending(x => x.DtEvent)
|
.OrderByDescending(x => x.DtEvent)
|
||||||
.ToList();
|
.ToList();
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Reinizializzaizone del controller
|
|
||||||
/// </summary>
|
|
||||||
public void ResetController()
|
|
||||||
{
|
|
||||||
// Re-Initialize database context
|
|
||||||
dbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -157,27 +155,40 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
|||||||
public bool Update(LogSupportModel updItem)
|
public bool Update(LogSupportModel updItem)
|
||||||
{
|
{
|
||||||
bool done = false;
|
bool done = false;
|
||||||
var item2update = dbCtx
|
using (DatabaseContext localDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
|
||||||
|
{
|
||||||
|
var item2update = localDbCtx
|
||||||
.LogSupportList
|
.LogSupportList
|
||||||
.Where(x => x.LogDbId == updItem.LogDbId)
|
.Where(x => x.LogDbId == updItem.LogDbId)
|
||||||
.SingleOrDefault();
|
.SingleOrDefault();
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
// update, vers 1...
|
// update, vers 1...
|
||||||
dbCtx.Entry(item2update).CurrentValues.SetValues(updItem);
|
localDbCtx.Entry(item2update).CurrentValues.SetValues(updItem);
|
||||||
|
|
||||||
// Commit changes
|
// Commit changes
|
||||||
dbCtx.SaveChanges();
|
localDbCtx.SaveChanges();
|
||||||
ResetController();
|
done = true;
|
||||||
done = true;
|
}
|
||||||
}
|
catch (Exception exc)
|
||||||
catch (Exception exc)
|
{
|
||||||
{
|
string errMessage = $"EXCEPTION on LogSupport.Update: {Environment.NewLine}{exc}";
|
||||||
Console.WriteLine($"EXCEPTION on Update: {exc}");
|
Console.WriteLine(errMessage);
|
||||||
|
Log.Error(errMessage);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return done;
|
return done;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion Public Methods
|
#endregion Public Methods
|
||||||
|
|
||||||
|
#region Private Fields
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Istanza logger
|
||||||
|
/// </summary>
|
||||||
|
private NLog.Logger Log = LogManager.GetCurrentClassLogger();
|
||||||
|
|
||||||
|
#endregion Private Fields
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,4 +1,5 @@
|
|||||||
using EgtBEAMWALL.DataLayer.DatabaseModels;
|
using EgtBEAMWALL.DataLayer.DatabaseModels;
|
||||||
|
using NLog;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
@@ -7,12 +8,6 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
|||||||
{
|
{
|
||||||
public class MachGroupController : IDisposable
|
public class MachGroupController : IDisposable
|
||||||
{
|
{
|
||||||
#region Private Fields
|
|
||||||
|
|
||||||
private DatabaseContext dbCtx;
|
|
||||||
|
|
||||||
#endregion Private Fields
|
|
||||||
|
|
||||||
#region Public Fields
|
#region Public Fields
|
||||||
|
|
||||||
public static MachGroupController man = new MachGroupController();
|
public static MachGroupController man = new MachGroupController();
|
||||||
@@ -23,8 +18,6 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
|||||||
|
|
||||||
public MachGroupController()
|
public MachGroupController()
|
||||||
{
|
{
|
||||||
// Initialize database context
|
|
||||||
dbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion Public Constructors
|
#endregion Public Constructors
|
||||||
@@ -63,18 +56,20 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
|||||||
return answ;
|
return answ;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary> Add MachGroup as rebuilt from NeedRedo (on top of order priority) <param
|
||||||
/// Add MachGroup as rebuilt from NeedRedo (on top of order priority)
|
/// name="ProdId">Id del Prod</param> <param name="newMachGroup">Nuovo MachGroup da
|
||||||
/// <param name="ProdId">Id del Prod</param>
|
/// associare</param> <returns></returns>
|
||||||
/// <param name="newMachGroup">Nuovo MachGroup da associare</param>
|
|
||||||
/// <returns></returns>
|
|
||||||
public ProdModel AddMachGroupRedo(int ProdId, Core.MyMachGroupM newMachGroup)
|
public ProdModel AddMachGroupRedo(int ProdId, Core.MyMachGroupM newMachGroup)
|
||||||
{
|
{
|
||||||
// Recupero il PROD
|
ProdModel currData = new ProdModel();
|
||||||
ProdModel currData = ProdController.man.FindByProdId(ProdId);
|
|
||||||
List<PartModel> PartList2Add = new List<PartModel>();
|
List<PartModel> PartList2Add = new List<PartModel>();
|
||||||
using (DatabaseContext localDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
|
using (DatabaseContext localDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
|
||||||
{
|
{
|
||||||
|
// Recupero il PROD nel contesto
|
||||||
|
currData = localDbCtx
|
||||||
|
.ProdList
|
||||||
|
.Where(x => x.ProdId == ProdId)
|
||||||
|
.SingleOrDefault();
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var convCurrMG = MachGroupController.ConvertFromCore(newMachGroup, currData.ProdDbId);
|
var convCurrMG = MachGroupController.ConvertFromCore(newMachGroup, currData.ProdDbId);
|
||||||
@@ -134,7 +129,9 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
|||||||
}
|
}
|
||||||
catch (Exception exc)
|
catch (Exception exc)
|
||||||
{
|
{
|
||||||
Console.WriteLine($"EXCEPTION on UpdateMachGroup: {exc}");
|
string errMessage = $"EXCEPTION on MachGroup.UpdateMachGroup: {Environment.NewLine}{exc}";
|
||||||
|
Console.WriteLine(errMessage);
|
||||||
|
Log.Error(errMessage);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return currData;
|
return currData;
|
||||||
@@ -161,7 +158,9 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
|||||||
}
|
}
|
||||||
catch (Exception exc)
|
catch (Exception exc)
|
||||||
{
|
{
|
||||||
Console.WriteLine($"EXCEPTION on Create: {exc}");
|
string errMessage = $"EXCEPTION on MachGroup.Create: {Environment.NewLine}{exc}";
|
||||||
|
Console.WriteLine(errMessage);
|
||||||
|
Log.Error(errMessage);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return newMachGroup;
|
return newMachGroup;
|
||||||
@@ -204,7 +203,9 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
|||||||
}
|
}
|
||||||
catch (Exception exc)
|
catch (Exception exc)
|
||||||
{
|
{
|
||||||
Console.WriteLine($"EXCEPTION on Delete: ProdId: {ProdId} | MachGroupId: {MachGroupId}{Environment.NewLine}{exc}");
|
string errMessage = $"EXCEPTION on MachGroup.Delete: ProdId: {ProdId} | MachGroupId: {MachGroupId}{Environment.NewLine}{exc}";
|
||||||
|
Console.WriteLine(errMessage);
|
||||||
|
Log.Error(errMessage);
|
||||||
}
|
}
|
||||||
|
|
||||||
// se fatto aggiorno info sullo status
|
// se fatto aggiorno info sullo status
|
||||||
@@ -215,8 +216,6 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
|||||||
|
|
||||||
public void Dispose()
|
public void Dispose()
|
||||||
{
|
{
|
||||||
// Clear database context
|
|
||||||
dbCtx.Dispose();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -226,10 +225,13 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
|||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public MachGroupModel FindByMachGroupDbId(int MachGroupDbId)
|
public MachGroupModel FindByMachGroupDbId(int MachGroupDbId)
|
||||||
{
|
{
|
||||||
return dbCtx
|
using (DatabaseContext localDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
|
||||||
.MachGroupList
|
{
|
||||||
.Where(x => x.MachGroupDbId == MachGroupDbId)
|
return localDbCtx
|
||||||
.SingleOrDefault();
|
.MachGroupList
|
||||||
|
.Where(x => x.MachGroupDbId == MachGroupDbId)
|
||||||
|
.SingleOrDefault();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -239,7 +241,6 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
|||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public MachGroupModel FindByMachGroupId(int ProdId, int MachGroupId)
|
public MachGroupModel FindByMachGroupId(int ProdId, int MachGroupId)
|
||||||
{
|
{
|
||||||
|
|
||||||
using (DatabaseContext localDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
|
using (DatabaseContext localDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
|
||||||
{
|
{
|
||||||
return localDbCtx
|
return localDbCtx
|
||||||
@@ -258,27 +259,34 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
|||||||
{
|
{
|
||||||
// verificare fattibilità in 1 solo passo
|
// verificare fattibilità in 1 solo passo
|
||||||
int ProdDbId = 0;
|
int ProdDbId = 0;
|
||||||
try
|
List<MachGroupModel> answ = new List<MachGroupModel>();
|
||||||
|
using (DatabaseContext localDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
|
||||||
{
|
{
|
||||||
var currProd = dbCtx
|
try
|
||||||
.ProdList
|
|
||||||
.Where(x => x.ProdId == ProdId)
|
|
||||||
.FirstOrDefault();
|
|
||||||
if (currProd != null)
|
|
||||||
{
|
{
|
||||||
ProdDbId = currProd.ProdDbId;
|
var currProd = localDbCtx
|
||||||
|
.ProdList
|
||||||
|
.Where(x => x.ProdId == ProdId)
|
||||||
|
.FirstOrDefault();
|
||||||
|
if (currProd != null)
|
||||||
|
{
|
||||||
|
ProdDbId = currProd.ProdDbId;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
catch (Exception exc)
|
||||||
|
{
|
||||||
|
string errMessage = $"EXCEPTION on MachGroup.GetByProdAsc: {Environment.NewLine}{exc}";
|
||||||
|
Console.WriteLine(errMessage);
|
||||||
|
Log.Error(errMessage);
|
||||||
|
}
|
||||||
|
answ = localDbCtx
|
||||||
|
.MachGroupList
|
||||||
|
.Where(x => x.ProdDbId == ProdDbId)
|
||||||
|
.OrderBy(x => x.ProdIndex)
|
||||||
|
.ThenBy(x => x.MachGroupId)
|
||||||
|
.ToList();
|
||||||
}
|
}
|
||||||
catch (Exception exc)
|
return answ;
|
||||||
{
|
|
||||||
Console.WriteLine($"EXCEPTION on GetByProdAsc: {exc}");
|
|
||||||
}
|
|
||||||
return dbCtx
|
|
||||||
.MachGroupList
|
|
||||||
.Where(x => x.ProdDbId == ProdDbId)
|
|
||||||
.OrderBy(x => x.ProdIndex)
|
|
||||||
.ThenBy(x => x.MachGroupId)
|
|
||||||
.ToList();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -290,29 +298,35 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
|||||||
{
|
{
|
||||||
// recupero
|
// recupero
|
||||||
int ProdDbId = 0;
|
int ProdDbId = 0;
|
||||||
|
List<MachGroupModel> answ = new List<MachGroupModel>();
|
||||||
// verificare fattibilità in 1 solo passo
|
using (DatabaseContext localDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
|
||||||
try
|
|
||||||
{
|
{
|
||||||
var currProd = dbCtx
|
// verificare fattibilità in 1 solo passo
|
||||||
.ProdList
|
try
|
||||||
.Where(x => x.ProdId == ProdId)
|
|
||||||
.FirstOrDefault();
|
|
||||||
if (currProd != null)
|
|
||||||
{
|
{
|
||||||
ProdDbId = currProd.ProdDbId;
|
var currProd = localDbCtx
|
||||||
|
.ProdList
|
||||||
|
.Where(x => x.ProdId == ProdId)
|
||||||
|
.FirstOrDefault();
|
||||||
|
if (currProd != null)
|
||||||
|
{
|
||||||
|
ProdDbId = currProd.ProdDbId;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
catch (Exception exc)
|
||||||
|
{
|
||||||
|
string errMessage = $"EXCEPTION on MachGroup.GetByProdDesc: {Environment.NewLine}{exc}";
|
||||||
|
Console.WriteLine(errMessage);
|
||||||
|
Log.Error(errMessage);
|
||||||
|
}
|
||||||
|
answ = localDbCtx
|
||||||
|
.MachGroupList
|
||||||
|
.Where(x => x.ProdDbId == ProdDbId)
|
||||||
|
.OrderByDescending(x => x.ProdIndex)
|
||||||
|
.ThenByDescending(x => x.MachGroupId)
|
||||||
|
.ToList();
|
||||||
}
|
}
|
||||||
catch (Exception exc)
|
return answ;
|
||||||
{
|
|
||||||
Console.WriteLine($"EXCEPTION on GetByProdDesc: {exc}");
|
|
||||||
}
|
|
||||||
return dbCtx
|
|
||||||
.MachGroupList
|
|
||||||
.Where(x => x.ProdDbId == ProdDbId)
|
|
||||||
.OrderByDescending(x => x.ProdIndex)
|
|
||||||
.ThenByDescending(x => x.MachGroupId)
|
|
||||||
.ToList();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -323,12 +337,15 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
|||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public List<MachGroupModel> GetByProdSupervisor(int ProdId, string SupervisorId)
|
public List<MachGroupModel> GetByProdSupervisor(int ProdId, string SupervisorId)
|
||||||
{
|
{
|
||||||
return dbCtx
|
using (DatabaseContext localDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
|
||||||
.MachGroupList
|
{
|
||||||
.Where(x => x.Prod.ProdId == ProdId && x.SupervisorId == SupervisorId)
|
return localDbCtx
|
||||||
.OrderBy(x => x.ProdIndex)
|
.MachGroupList
|
||||||
.ThenBy(x => x.MachGroupId)
|
.Where(x => x.Prod.ProdId == ProdId && x.SupervisorId == SupervisorId)
|
||||||
.ToList();
|
.OrderBy(x => x.ProdIndex)
|
||||||
|
.ThenBy(x => x.MachGroupId)
|
||||||
|
.ToList();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -356,7 +373,9 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
|||||||
}
|
}
|
||||||
catch (Exception exc)
|
catch (Exception exc)
|
||||||
{
|
{
|
||||||
Console.WriteLine($"EXCEPTION on UpdateOrder: {exc}");
|
string errMessage = $"EXCEPTION on MachGroup.UpdateOrder: {Environment.NewLine}{exc}";
|
||||||
|
Console.WriteLine(errMessage);
|
||||||
|
Log.Error(errMessage);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -396,21 +415,14 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
|||||||
}
|
}
|
||||||
catch (Exception exc)
|
catch (Exception exc)
|
||||||
{
|
{
|
||||||
Console.WriteLine($"EXCEPTION on RemoveFromSupervisor: {exc}");
|
string errMessage = $"EXCEPTION on MachGroup.RemoveFromSupervisor: {Environment.NewLine}{exc}";
|
||||||
|
Console.WriteLine(errMessage);
|
||||||
|
Log.Error(errMessage);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return done;
|
return done;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Reinizializzaizone del controller
|
|
||||||
/// </summary>
|
|
||||||
public void ResetController()
|
|
||||||
{
|
|
||||||
// Re-Initialize database context
|
|
||||||
dbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING);
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Set MachGroup as NeedRedo (ripresa = da rigenerare)
|
/// Set MachGroup as NeedRedo (ripresa = da rigenerare)
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -439,7 +451,9 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
|||||||
}
|
}
|
||||||
catch (Exception exc)
|
catch (Exception exc)
|
||||||
{
|
{
|
||||||
Console.WriteLine($"EXCEPTION on UpdateStatus: {exc}");
|
string errMessage = $"EXCEPTION on MachGroup.UpdateStatus: {Environment.NewLine}{exc}";
|
||||||
|
Console.WriteLine(errMessage);
|
||||||
|
Log.Error(errMessage);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return done;
|
return done;
|
||||||
@@ -472,7 +486,9 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
|||||||
}
|
}
|
||||||
catch (Exception exc)
|
catch (Exception exc)
|
||||||
{
|
{
|
||||||
Console.WriteLine($"EXCEPTION on Update: {exc}");
|
string errMessage = $"EXCEPTION on MachGroup.Update: {Environment.NewLine}{exc}";
|
||||||
|
Console.WriteLine(errMessage);
|
||||||
|
Log.Error(errMessage);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return done;
|
return done;
|
||||||
@@ -509,7 +525,9 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
|||||||
}
|
}
|
||||||
catch (Exception exc)
|
catch (Exception exc)
|
||||||
{
|
{
|
||||||
Console.WriteLine($"EXCEPTION on UpdateStartEnd: {exc}");
|
string errMessage = $"EXCEPTION on MachGroup.UpdateEnd: {Environment.NewLine}{exc}";
|
||||||
|
Console.WriteLine(errMessage);
|
||||||
|
Log.Error(errMessage);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return done;
|
return done;
|
||||||
@@ -542,7 +560,9 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
|||||||
}
|
}
|
||||||
catch (Exception exc)
|
catch (Exception exc)
|
||||||
{
|
{
|
||||||
Console.WriteLine($"EXCEPTION on UpdateOrder: {exc}");
|
string errMessage = $"EXCEPTION on MachGroup.UpdateOrder: {Environment.NewLine}{exc}";
|
||||||
|
Console.WriteLine(errMessage);
|
||||||
|
Log.Error(errMessage);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return done;
|
return done;
|
||||||
@@ -580,7 +600,9 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
|||||||
}
|
}
|
||||||
catch (Exception exc)
|
catch (Exception exc)
|
||||||
{
|
{
|
||||||
Console.WriteLine($"EXCEPTION on UpdateStartEnd: {exc}");
|
string errMessage = $"EXCEPTION on MachGroup.UpdateStart: {Environment.NewLine}{exc}";
|
||||||
|
Console.WriteLine(errMessage);
|
||||||
|
Log.Error(errMessage);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return done;
|
return done;
|
||||||
@@ -618,7 +640,9 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
|||||||
}
|
}
|
||||||
catch (Exception exc)
|
catch (Exception exc)
|
||||||
{
|
{
|
||||||
Console.WriteLine($"EXCEPTION on UpdateStartEnd: {exc}");
|
string errMessage = $"EXCEPTION on MachGroup.UpdateStartEnd: {Environment.NewLine}{exc}";
|
||||||
|
Console.WriteLine(errMessage);
|
||||||
|
Log.Error(errMessage);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return done;
|
return done;
|
||||||
@@ -652,19 +676,16 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
|||||||
}
|
}
|
||||||
catch (Exception exc)
|
catch (Exception exc)
|
||||||
{
|
{
|
||||||
Console.WriteLine($"EXCEPTION on UpdateStatus: {exc}");
|
string errMessage = $"EXCEPTION on MachGroup.UpdateStatus: {Environment.NewLine}{exc}";
|
||||||
|
Console.WriteLine(errMessage);
|
||||||
|
Log.Error(errMessage);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return done;
|
return done;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary> Set Supervisor & state for MachGroup </summary> <param name="ProdId"></param>
|
||||||
/// Set Supervisor & state for MachGroup
|
/// <param name="MachGroupId"></param> <param name="SupervisorId"></param> <returns></returns>
|
||||||
/// </summary>
|
|
||||||
/// <param name="ProdId"></param>
|
|
||||||
/// <param name="MachGroupId"></param>
|
|
||||||
/// <param name="SupervisorId"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
public bool UpdateSupervisor(int ProdId, int MachGroupId, string SupervisorId)
|
public bool UpdateSupervisor(int ProdId, int MachGroupId, string SupervisorId)
|
||||||
{
|
{
|
||||||
bool done = false;
|
bool done = false;
|
||||||
@@ -690,12 +711,23 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
|||||||
}
|
}
|
||||||
catch (Exception exc)
|
catch (Exception exc)
|
||||||
{
|
{
|
||||||
Console.WriteLine($"EXCEPTION on UpdateSupervisor: {exc}");
|
string errMessage = $"EXCEPTION on MachGroup.UpdateSupervisor: {Environment.NewLine}{exc}";
|
||||||
|
Console.WriteLine(errMessage);
|
||||||
|
Log.Error(errMessage);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return done;
|
return done;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion Public Methods
|
#endregion Public Methods
|
||||||
|
|
||||||
|
#region Private Fields
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Istanza logger
|
||||||
|
/// </summary>
|
||||||
|
private NLog.Logger Log = LogManager.GetCurrentClassLogger();
|
||||||
|
|
||||||
|
#endregion Private Fields
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,19 +1,12 @@
|
|||||||
using System;
|
using EgtBEAMWALL.DataLayer.DatabaseModels;
|
||||||
using System.Collections.Generic;
|
using NLog;
|
||||||
|
using System;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text;
|
|
||||||
using EgtBEAMWALL.DataLayer.DatabaseModels;
|
|
||||||
|
|
||||||
namespace EgtBEAMWALL.DataLayer.Controllers
|
namespace EgtBEAMWALL.DataLayer.Controllers
|
||||||
{
|
{
|
||||||
public class PartController : IDisposable
|
public class PartController : IDisposable
|
||||||
{
|
{
|
||||||
#region Private Fields
|
|
||||||
|
|
||||||
private DatabaseContext dbCtx;
|
|
||||||
|
|
||||||
#endregion Private Fields
|
|
||||||
|
|
||||||
#region Public Fields
|
#region Public Fields
|
||||||
|
|
||||||
public static PartController man = new PartController();
|
public static PartController man = new PartController();
|
||||||
@@ -24,82 +17,10 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
|||||||
|
|
||||||
public PartController()
|
public PartController()
|
||||||
{
|
{
|
||||||
// Initialize database context
|
|
||||||
dbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion Public Constructors
|
#endregion Public Constructors
|
||||||
|
|
||||||
#region Protected Methods
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Get BtlPartDBId by ProjId + PDN
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="ProjId"></param>
|
|
||||||
/// <param name="PDN"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
protected int FindBtlPart(int ProjId, int PDN)
|
|
||||||
{
|
|
||||||
int BtlPartDbId = 0;
|
|
||||||
|
|
||||||
#if false
|
|
||||||
var currProj = dbCtx
|
|
||||||
.ProjList
|
|
||||||
.Where(x => x.ProjId == ProjId)
|
|
||||||
.FirstOrDefault();
|
|
||||||
|
|
||||||
if (currProj != null)
|
|
||||||
{
|
|
||||||
var btlPart = dbCtx
|
|
||||||
.BTLPartList
|
|
||||||
.Where(x => x.ProjDbId == currProj.ProjDbId && x.PDN == PDN)
|
|
||||||
.SingleOrDefault();
|
|
||||||
|
|
||||||
if (btlPart != null)
|
|
||||||
{
|
|
||||||
BtlPartDbId = btlPart.BTLPartDbId;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
var btlPart = dbCtx
|
|
||||||
.BTLPartList
|
|
||||||
.Where(x => x.Project.ProjId == ProjId && x.PDN == PDN)
|
|
||||||
.SingleOrDefault();
|
|
||||||
|
|
||||||
if (btlPart != null)
|
|
||||||
{
|
|
||||||
BtlPartDbId = btlPart.BTLPartDbId;
|
|
||||||
}
|
|
||||||
|
|
||||||
return BtlPartDbId;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Get BtlPartDBId by ProjId + BtlPartId
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="ProjId"></param>
|
|
||||||
/// <param name="BtlPartId"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
protected int FindBtlPartByBPI(int ProjId, int BtlPartId)
|
|
||||||
{
|
|
||||||
int BtlPartDbId = 0;
|
|
||||||
|
|
||||||
var btlPart = dbCtx
|
|
||||||
.BTLPartList
|
|
||||||
.Where(x => x.Project.ProjId == ProjId && x.PartId == BtlPartId)
|
|
||||||
.SingleOrDefault();
|
|
||||||
|
|
||||||
if (btlPart != null)
|
|
||||||
{
|
|
||||||
BtlPartDbId = btlPart.BTLPartDbId;
|
|
||||||
}
|
|
||||||
|
|
||||||
return BtlPartDbId;
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion Protected Methods
|
|
||||||
|
|
||||||
#region Public Methods
|
#region Public Methods
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -151,24 +72,28 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
|||||||
public bool Delete(int ProdId, int MachGroupId, int PartId)
|
public bool Delete(int ProdId, int MachGroupId, int PartId)
|
||||||
{
|
{
|
||||||
bool done = false;
|
bool done = false;
|
||||||
var item2del = dbCtx
|
using (DatabaseContext localDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
|
||||||
.PartList
|
|
||||||
.Where(x => x.MachGroup.Prod.ProdId == ProdId && x.MachGroup.MachGroupId == MachGroupId && x.PartId == PartId)
|
|
||||||
.SingleOrDefault();
|
|
||||||
try
|
|
||||||
{
|
{
|
||||||
// Remove from database
|
var item2del = localDbCtx
|
||||||
dbCtx.PartList.Remove(item2del);
|
.PartList
|
||||||
// Commit changes
|
.Where(x => x.MachGroup.Prod.ProdId == ProdId && x.MachGroup.MachGroupId == MachGroupId && x.PartId == PartId)
|
||||||
dbCtx.SaveChanges();
|
.SingleOrDefault();
|
||||||
ResetController();
|
try
|
||||||
done = true;
|
{
|
||||||
// aggiorno info sullo status
|
// Remove from database
|
||||||
StatusMapController.man.UpdateAction("", ProdId, MachGroupId, Core.StatusMapItemType.MachGroup, Core.StatusMapOpType.MachGroupMod, "");
|
localDbCtx.PartList.Remove(item2del);
|
||||||
}
|
// Commit changes
|
||||||
catch (Exception exc)
|
localDbCtx.SaveChanges();
|
||||||
{
|
done = true;
|
||||||
Console.WriteLine($"EXCEPTION on Delete: ProdId: {ProdId} | MachGroupId: {MachGroupId} | PartId: {PartId}{Environment.NewLine}{exc}");
|
// aggiorno info sullo status
|
||||||
|
StatusMapController.man.UpdateAction("", ProdId, MachGroupId, Core.StatusMapItemType.MachGroup, Core.StatusMapOpType.MachGroupMod, "");
|
||||||
|
}
|
||||||
|
catch (Exception exc)
|
||||||
|
{
|
||||||
|
string errMessage = $"EXCEPTION on Part.Delete: ProdId: {ProdId} | MachGroupId: {MachGroupId} | PartId: {PartId}{Environment.NewLine}{exc}";
|
||||||
|
Console.WriteLine(errMessage);
|
||||||
|
Log.Error(errMessage);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return done;
|
return done;
|
||||||
}
|
}
|
||||||
@@ -181,22 +106,26 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
|||||||
public bool Delete(int PartDbId)
|
public bool Delete(int PartDbId)
|
||||||
{
|
{
|
||||||
bool done = false;
|
bool done = false;
|
||||||
var item2del = dbCtx
|
using (DatabaseContext localDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
|
||||||
.PartList
|
|
||||||
.Where(x => x.PartDbId == PartDbId)
|
|
||||||
.SingleOrDefault();
|
|
||||||
try
|
|
||||||
{
|
{
|
||||||
// Add to database
|
var item2del = localDbCtx
|
||||||
dbCtx.PartList.Remove(item2del);
|
.PartList
|
||||||
// Commit changes
|
.Where(x => x.PartDbId == PartDbId)
|
||||||
dbCtx.SaveChanges();
|
.SingleOrDefault();
|
||||||
ResetController();
|
try
|
||||||
done = true;
|
{
|
||||||
}
|
// Add to database
|
||||||
catch (Exception exc)
|
localDbCtx.PartList.Remove(item2del);
|
||||||
{
|
// Commit changes
|
||||||
Console.WriteLine($"EXCEPTION on Delete: {exc}");
|
localDbCtx.SaveChanges();
|
||||||
|
done = true;
|
||||||
|
}
|
||||||
|
catch (Exception exc)
|
||||||
|
{
|
||||||
|
string errMessage = $"EXCEPTION on Part.Delete: {Environment.NewLine}{exc}";
|
||||||
|
Console.WriteLine(errMessage);
|
||||||
|
Log.Error(errMessage);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return done;
|
return done;
|
||||||
}
|
}
|
||||||
@@ -209,29 +138,31 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
|||||||
public bool DeleteByMachGroup(int MachGroupDbId)
|
public bool DeleteByMachGroup(int MachGroupDbId)
|
||||||
{
|
{
|
||||||
bool done = false;
|
bool done = false;
|
||||||
var items2del = dbCtx
|
using (DatabaseContext localDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
|
||||||
.PartList
|
|
||||||
.Where(x => x.MachGroupDbId == MachGroupDbId);
|
|
||||||
try
|
|
||||||
{
|
{
|
||||||
// Add to database
|
var items2del = localDbCtx
|
||||||
dbCtx.PartList.RemoveRange(items2del);
|
.PartList
|
||||||
// Commit changes
|
.Where(x => x.MachGroupDbId == MachGroupDbId);
|
||||||
dbCtx.SaveChanges();
|
try
|
||||||
ResetController();
|
{
|
||||||
done = true;
|
// Add to database
|
||||||
}
|
localDbCtx.PartList.RemoveRange(items2del);
|
||||||
catch (Exception exc)
|
// Commit changes
|
||||||
{
|
localDbCtx.SaveChanges();
|
||||||
Console.WriteLine($"EXCEPTION on DeleteByMachGroup: {exc}");
|
done = true;
|
||||||
|
}
|
||||||
|
catch (Exception exc)
|
||||||
|
{
|
||||||
|
string errMessage = $"EXCEPTION on Part.DeleteByMachGroup: {Environment.NewLine}{exc}";
|
||||||
|
Console.WriteLine(errMessage);
|
||||||
|
Log.Error(errMessage);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return done;
|
return done;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Dispose()
|
public void Dispose()
|
||||||
{
|
{
|
||||||
// Clear database context
|
|
||||||
dbCtx.Dispose();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -241,10 +172,13 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
|||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public PartModel FindByDbId(int PartDbId)
|
public PartModel FindByDbId(int PartDbId)
|
||||||
{
|
{
|
||||||
return dbCtx
|
using (DatabaseContext localDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
|
||||||
.PartList
|
{
|
||||||
.Where(x => x.PartDbId == PartDbId)
|
return localDbCtx
|
||||||
.SingleOrDefault();
|
.PartList
|
||||||
|
.Where(x => x.PartDbId == PartDbId)
|
||||||
|
.SingleOrDefault();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -255,9 +189,9 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
|||||||
public PartModel FindByPartId(int ProdId, int PartId)
|
public PartModel FindByPartId(int ProdId, int PartId)
|
||||||
{
|
{
|
||||||
PartModel answ = null;
|
PartModel answ = null;
|
||||||
using (DatabaseContext localDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
|
using (DatabaseContext locallocalDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
|
||||||
{
|
{
|
||||||
answ = localDbCtx
|
answ = locallocalDbCtx
|
||||||
.PartList
|
.PartList
|
||||||
.Where(x => x.MachGroup.Prod.ProdId == ProdId && x.PartId == PartId)
|
.Where(x => x.MachGroup.Prod.ProdId == ProdId && x.PartId == PartId)
|
||||||
.FirstOrDefault();
|
.FirstOrDefault();
|
||||||
@@ -265,15 +199,6 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
|||||||
return answ;
|
return answ;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Reinizializzaizone del controller
|
|
||||||
/// </summary>
|
|
||||||
public void ResetController()
|
|
||||||
{
|
|
||||||
// Re-Initialize database context
|
|
||||||
dbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING);
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Update single Part
|
/// Update single Part
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -282,29 +207,33 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
|||||||
public bool Update(PartModel updItem)
|
public bool Update(PartModel updItem)
|
||||||
{
|
{
|
||||||
bool done = false;
|
bool done = false;
|
||||||
using (DatabaseContext localDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
|
using (DatabaseContext locallocalDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
|
||||||
{
|
{
|
||||||
var item2update = localDbCtx
|
var item2update = locallocalDbCtx
|
||||||
.PartList
|
.PartList
|
||||||
.Where(x => x.PartDbId == updItem.PartDbId)
|
.Where(x => x.PartDbId == updItem.PartDbId)
|
||||||
.SingleOrDefault();
|
.SingleOrDefault();
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
// update, vers 1...
|
// update, vers 1...
|
||||||
localDbCtx.Entry(item2update).CurrentValues.SetValues(updItem);
|
locallocalDbCtx.Entry(item2update).CurrentValues.SetValues(updItem);
|
||||||
|
|
||||||
//// update, vers 2
|
//// update, vers 2
|
||||||
//dbCtx.PartList.Remove(item2del);
|
//localDbCtx.PartList.Remove(item2del);
|
||||||
//dbCtx.PartList.Add(updItem);
|
//localDbCtx.PartList.Add(updItem);
|
||||||
|
|
||||||
// Commit changes
|
// Commit changes
|
||||||
localDbCtx.SaveChanges();
|
locallocalDbCtx.SaveChanges();
|
||||||
done = true;
|
done = true;
|
||||||
// aggiorno info sullo status
|
// aggiorno info sullo status
|
||||||
StatusMapController.man.UpdateAction("", updItem.MachGroup.Prod.ProdId, updItem.PartId, Core.StatusMapItemType.Part, Core.StatusMapOpType.MachGroupMod, "");
|
StatusMapController.man.UpdateAction("", updItem.MachGroup.Prod.ProdId, updItem.PartId, Core.StatusMapItemType.Part, Core.StatusMapOpType.MachGroupMod, "");
|
||||||
}
|
}
|
||||||
catch
|
catch (Exception exc)
|
||||||
{ }
|
{
|
||||||
|
string errMessage = $"EXCEPTION on Part.Update: {Environment.NewLine}{exc}";
|
||||||
|
Console.WriteLine(errMessage);
|
||||||
|
Log.Error(errMessage);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return done;
|
return done;
|
||||||
}
|
}
|
||||||
@@ -318,25 +247,27 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
|||||||
public bool UpdateEnd(int ProdId, int MachGroupId, int PartId, DateTime DtEnd)
|
public bool UpdateEnd(int ProdId, int MachGroupId, int PartId, DateTime DtEnd)
|
||||||
{
|
{
|
||||||
bool done = false;
|
bool done = false;
|
||||||
using (DatabaseContext localDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
|
using (DatabaseContext locallocalDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
// aggiorno
|
// aggiorno
|
||||||
localDbCtx
|
locallocalDbCtx
|
||||||
.PartList
|
.PartList
|
||||||
.Where(x => x.MachGroup.Prod.ProdId == ProdId && x.MachGroup.MachGroupId == MachGroupId && x.PartId == PartId)
|
.Where(x => x.MachGroup.Prod.ProdId == ProdId && x.MachGroup.MachGroupId == MachGroupId && x.PartId == PartId)
|
||||||
.FirstOrDefault()
|
.FirstOrDefault()
|
||||||
.DtEnd = DtEnd;
|
.DtEnd = DtEnd;
|
||||||
// Commit changes
|
// Commit changes
|
||||||
localDbCtx.SaveChanges();
|
locallocalDbCtx.SaveChanges();
|
||||||
done = true;
|
done = true;
|
||||||
// aggiorno info sullo status
|
// aggiorno info sullo status
|
||||||
StatusMapController.man.UpdateAction("", ProdId, PartId, Core.StatusMapItemType.Part, DtEnd == DateTime.MinValue ? Core.StatusMapOpType.ResetPartEnd : Core.StatusMapOpType.PartEnd, "");
|
StatusMapController.man.UpdateAction("", ProdId, PartId, Core.StatusMapItemType.Part, DtEnd == DateTime.MinValue ? Core.StatusMapOpType.ResetPartEnd : Core.StatusMapOpType.PartEnd, "");
|
||||||
}
|
}
|
||||||
catch (Exception exc)
|
catch (Exception exc)
|
||||||
{
|
{
|
||||||
Console.WriteLine($"EXCEPTION on UpdateStatus: {exc}");
|
string errMessage = $"EXCEPTION on Part.UpdateEnd: {Environment.NewLine}{exc}";
|
||||||
|
Console.WriteLine(errMessage);
|
||||||
|
Log.Error(errMessage);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return done;
|
return done;
|
||||||
@@ -351,25 +282,27 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
|||||||
public bool UpdateStart(int ProdId, int MachGroupId, int PartId, DateTime DtStart)
|
public bool UpdateStart(int ProdId, int MachGroupId, int PartId, DateTime DtStart)
|
||||||
{
|
{
|
||||||
bool done = false;
|
bool done = false;
|
||||||
using (DatabaseContext localDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
|
using (DatabaseContext locallocalDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
// aggiorno
|
// aggiorno
|
||||||
localDbCtx
|
locallocalDbCtx
|
||||||
.PartList
|
.PartList
|
||||||
.Where(x => x.MachGroup.Prod.ProdId == ProdId && x.MachGroup.MachGroupId == MachGroupId && x.PartId == PartId)
|
.Where(x => x.MachGroup.Prod.ProdId == ProdId && x.MachGroup.MachGroupId == MachGroupId && x.PartId == PartId)
|
||||||
.FirstOrDefault()
|
.FirstOrDefault()
|
||||||
.DtStart = DtStart;
|
.DtStart = DtStart;
|
||||||
// Commit changes
|
// Commit changes
|
||||||
localDbCtx.SaveChanges();
|
locallocalDbCtx.SaveChanges();
|
||||||
done = true;
|
done = true;
|
||||||
// aggiorno info sullo status
|
// aggiorno info sullo status
|
||||||
StatusMapController.man.UpdateAction("", ProdId, PartId, Core.StatusMapItemType.Part, DtStart == DateTime.MinValue ? Core.StatusMapOpType.ResetPartStart : Core.StatusMapOpType.PartStart, "");
|
StatusMapController.man.UpdateAction("", ProdId, PartId, Core.StatusMapItemType.Part, DtStart == DateTime.MinValue ? Core.StatusMapOpType.ResetPartStart : Core.StatusMapOpType.PartStart, "");
|
||||||
}
|
}
|
||||||
catch (Exception exc)
|
catch (Exception exc)
|
||||||
{
|
{
|
||||||
Console.WriteLine($"EXCEPTION on UpdateStatus: {exc}");
|
string errMessage = $"EXCEPTION on Part.UpdateStart: {Environment.NewLine}{exc}";
|
||||||
|
Console.WriteLine(errMessage);
|
||||||
|
Log.Error(errMessage);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -385,25 +318,27 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
|||||||
public bool UpdateStatus(int ProdId, int MachGroupId, int PartId, Core.ItemState newState)
|
public bool UpdateStatus(int ProdId, int MachGroupId, int PartId, Core.ItemState newState)
|
||||||
{
|
{
|
||||||
bool done = false;
|
bool done = false;
|
||||||
using (DatabaseContext localDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
|
using (DatabaseContext locallocalDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
// aggiorno
|
// aggiorno
|
||||||
localDbCtx
|
locallocalDbCtx
|
||||||
.PartList
|
.PartList
|
||||||
.Where(x => x.MachGroup.Prod.ProdId == ProdId && x.MachGroup.MachGroupId == MachGroupId && x.PartId == PartId)
|
.Where(x => x.MachGroup.Prod.ProdId == ProdId && x.MachGroup.MachGroupId == MachGroupId && x.PartId == PartId)
|
||||||
.FirstOrDefault()
|
.FirstOrDefault()
|
||||||
.State = newState;
|
.State = newState;
|
||||||
// Commit changes
|
// Commit changes
|
||||||
localDbCtx.SaveChanges();
|
locallocalDbCtx.SaveChanges();
|
||||||
done = true;
|
done = true;
|
||||||
// aggiorno info sullo status
|
// aggiorno info sullo status
|
||||||
StatusMapController.man.UpdateAction("", ProdId, PartId, Core.StatusMapItemType.Part, Core.StatusMapOpType.MachGroupMod, "");
|
StatusMapController.man.UpdateAction("", ProdId, PartId, Core.StatusMapItemType.Part, newState == Core.ItemState.Scrapped ? Core.StatusMapOpType.SetPartScrapped : Core.StatusMapOpType.MachGroupMod, "");
|
||||||
}
|
}
|
||||||
catch (Exception exc)
|
catch (Exception exc)
|
||||||
{
|
{
|
||||||
Console.WriteLine($"EXCEPTION on UpdateStatus: {exc}");
|
string errMessage = $"EXCEPTION on Part.UpdateStatus: {Environment.NewLine}{exc}";
|
||||||
|
Console.WriteLine(errMessage);
|
||||||
|
Log.Error(errMessage);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -411,5 +346,68 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
|||||||
}
|
}
|
||||||
|
|
||||||
#endregion Public Methods
|
#endregion Public Methods
|
||||||
|
|
||||||
|
#region Protected Methods
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Get BtlPartDBId by ProjId + PDN
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="ProjId"></param>
|
||||||
|
/// <param name="PDN"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
protected int FindBtlPart(int ProjId, int PDN)
|
||||||
|
{
|
||||||
|
int BtlPartDbId = 0;
|
||||||
|
|
||||||
|
using (DatabaseContext locallocalDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
|
||||||
|
{
|
||||||
|
var btlPart = locallocalDbCtx
|
||||||
|
.BTLPartList
|
||||||
|
.Where(x => x.Project.ProjId == ProjId && x.PDN == PDN)
|
||||||
|
.SingleOrDefault();
|
||||||
|
|
||||||
|
if (btlPart != null)
|
||||||
|
{
|
||||||
|
BtlPartDbId = btlPart.BTLPartDbId;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return BtlPartDbId;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Get BtlPartDBId by ProjId + BtlPartId
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="ProjId"></param>
|
||||||
|
/// <param name="BtlPartId"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
protected int FindBtlPartByBPI(int ProjId, int BtlPartId)
|
||||||
|
{
|
||||||
|
int BtlPartDbId = 0;
|
||||||
|
|
||||||
|
using (DatabaseContext localDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
|
||||||
|
{
|
||||||
|
var btlPart = localDbCtx
|
||||||
|
.BTLPartList
|
||||||
|
.Where(x => x.Project.ProjId == ProjId && x.PartId == BtlPartId)
|
||||||
|
.SingleOrDefault();
|
||||||
|
|
||||||
|
if (btlPart != null)
|
||||||
|
{
|
||||||
|
BtlPartDbId = btlPart.BTLPartDbId;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return BtlPartDbId;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion Protected Methods
|
||||||
|
|
||||||
|
#region Private Fields
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Istanza logger
|
||||||
|
/// </summary>
|
||||||
|
private NLog.Logger Log = LogManager.GetCurrentClassLogger();
|
||||||
|
|
||||||
|
#endregion Private Fields
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,20 +1,14 @@
|
|||||||
using System;
|
using EgtBEAMWALL.DataLayer.DatabaseModels;
|
||||||
|
using NLog;
|
||||||
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text;
|
|
||||||
using EgtBEAMWALL.DataLayer.DatabaseModels;
|
|
||||||
using static EgtBEAMWALL.Core.ConstBeam;
|
using static EgtBEAMWALL.Core.ConstBeam;
|
||||||
|
|
||||||
namespace EgtBEAMWALL.DataLayer.Controllers
|
namespace EgtBEAMWALL.DataLayer.Controllers
|
||||||
{
|
{
|
||||||
public class ProdController : IDisposable
|
public class ProdController : IDisposable
|
||||||
{
|
{
|
||||||
#region Private Fields
|
|
||||||
|
|
||||||
private DatabaseContext dbCtx;
|
|
||||||
|
|
||||||
#endregion Private Fields
|
|
||||||
|
|
||||||
#region Public Fields
|
#region Public Fields
|
||||||
|
|
||||||
public static ProdController man = new ProdController();
|
public static ProdController man = new ProdController();
|
||||||
@@ -25,84 +19,47 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
|||||||
|
|
||||||
public ProdController()
|
public ProdController()
|
||||||
{
|
{
|
||||||
// Initialize database context
|
Log.Info("ProdController istance Started");
|
||||||
dbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion Public Constructors
|
#endregion Public Constructors
|
||||||
|
|
||||||
#region Protected Methods
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Helper conversione modelli
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="currProd"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
protected Core.ProdFileM coreConv(ProdModel currProd)
|
|
||||||
{
|
|
||||||
Core.ProdFileM answ = Core.ProdFileM.CreateProdFileM(currProd.ProdId, ProjIdByProd(currProd.ProdId), currProd.DtCreated, currProd.Description, currProd.PType, currProd.Machine);
|
|
||||||
return answ;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Get LAST paginated data from DB (DESC ordered)
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="numRecord"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
protected List<ProdModel> GetLastDbModelDesc(int numRecord)
|
|
||||||
{
|
|
||||||
// se numRecord = 0 --> passo tutti
|
|
||||||
if (numRecord == 0)
|
|
||||||
{
|
|
||||||
numRecord = dbCtx.ProdList.Count();
|
|
||||||
}
|
|
||||||
// retrieve
|
|
||||||
return dbCtx
|
|
||||||
.ProdList
|
|
||||||
.OrderByDescending(x => x.ProdId)
|
|
||||||
.Take(numRecord)
|
|
||||||
.ToList();
|
|
||||||
}
|
|
||||||
|
|
||||||
protected List<int> ProjIdByProd(int ProdId)
|
|
||||||
{
|
|
||||||
return DbManager.obj.ProjCtr.GetByProdAsc(ProdId).Select(y => y.nProjId).ToList();
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion Protected Methods
|
|
||||||
|
|
||||||
#region Public Methods
|
#region Public Methods
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Aggiunta di un PROJ ad un PROD
|
/// Aggiunta di un PROJ ad un PROD
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="ProdId"></param>
|
/// <param name="ProdId">ID Prod</param>
|
||||||
/// <param name="ProjId"></param>
|
/// <param name="ProjId">ID Proj</param>
|
||||||
|
/// <param name="UserKey">User ID / Key number</param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public bool AddProj(int ProdId, int ProjId)
|
public bool AddProj(int ProdId, int ProjId, string UserKey = "USER01")
|
||||||
{
|
{
|
||||||
bool done = false;
|
bool done = false;
|
||||||
|
|
||||||
// cerco Prod
|
using (DatabaseContext localDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
|
||||||
var currProd = dbCtx
|
{
|
||||||
.ProdList
|
// cerco Prod
|
||||||
.Where(x => x.ProdId == ProdId)
|
var currProd = localDbCtx
|
||||||
.FirstOrDefault();
|
.ProdList
|
||||||
|
.Where(x => x.ProdId == ProdId)
|
||||||
|
.FirstOrDefault();
|
||||||
|
|
||||||
// cerco Proj
|
// cerco Proj
|
||||||
var currProj = dbCtx
|
var currProj = localDbCtx
|
||||||
.ProjList
|
.ProjList
|
||||||
.Where(x => x.ProjId == ProjId)
|
.Where(x => x.ProjId == ProjId)
|
||||||
.FirstOrDefault();
|
.FirstOrDefault();
|
||||||
|
|
||||||
// lo aggiorno
|
// lo aggiorno
|
||||||
currProj.ProdDbId = currProd.ProdDbId;
|
currProj.ProdDbId = currProd.ProdDbId;
|
||||||
currProj.Locked = true;
|
currProj.Locked = true;
|
||||||
|
currProj.LockDate = DateTime.Now;
|
||||||
// salvo
|
currProj.LockedBy = UserKey;
|
||||||
dbCtx.SaveChanges();
|
|
||||||
ResetController();
|
|
||||||
|
|
||||||
|
// salvo
|
||||||
|
localDbCtx.SaveChanges();
|
||||||
|
}
|
||||||
return done;
|
return done;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -110,59 +67,64 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
|||||||
{
|
{
|
||||||
bool done = false;
|
bool done = false;
|
||||||
|
|
||||||
var currProd = FindByProdId(ProdId);
|
using (DatabaseContext localDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
|
||||||
|
|
||||||
// sel dei proj da aggiornare...
|
|
||||||
var proj2update = dbCtx
|
|
||||||
.ProjList
|
|
||||||
.Where(x => x.ProdDbId == currProd.ProdDbId)
|
|
||||||
.ToList();
|
|
||||||
|
|
||||||
// sel dei MachGroup da prod
|
|
||||||
var machGroup2del = dbCtx
|
|
||||||
.MachGroupList
|
|
||||||
.Where(x => x.ProdDbId == currProd.ProdDbId)
|
|
||||||
.ToList();
|
|
||||||
|
|
||||||
// selezione dei part da machgroup
|
|
||||||
var part2del = dbCtx
|
|
||||||
.PartList
|
|
||||||
.Where(x => x.MachGroup.ProdDbId == currProd.ProdDbId)
|
|
||||||
.ToList();
|
|
||||||
|
|
||||||
try
|
|
||||||
{
|
{
|
||||||
// update proj...
|
var currProd = localDbCtx
|
||||||
foreach (var item in proj2update)
|
.ProdList
|
||||||
|
.Where(x => x.ProdId == ProdId)
|
||||||
|
.SingleOrDefault();
|
||||||
|
|
||||||
|
// sel dei proj da aggiornare...
|
||||||
|
var proj2update = localDbCtx
|
||||||
|
.ProjList
|
||||||
|
.Where(x => x.ProdDbId == currProd.ProdDbId)
|
||||||
|
.ToList();
|
||||||
|
|
||||||
|
// sel dei MachGroup da prod
|
||||||
|
var machGroup2del = localDbCtx
|
||||||
|
.MachGroupList
|
||||||
|
.Where(x => x.ProdDbId == currProd.ProdDbId)
|
||||||
|
.ToList();
|
||||||
|
|
||||||
|
// selezione dei part da machgroup
|
||||||
|
var part2del = localDbCtx
|
||||||
|
.PartList
|
||||||
|
.Where(x => x.MachGroup.ProdDbId == currProd.ProdDbId)
|
||||||
|
.ToList();
|
||||||
|
|
||||||
|
try
|
||||||
{
|
{
|
||||||
item.ProdDbId = null;
|
// update proj...
|
||||||
|
foreach (var item in proj2update)
|
||||||
|
{
|
||||||
|
item.ProdDbId = null;
|
||||||
|
}
|
||||||
|
//// salvo
|
||||||
|
//localDbCtx.SaveChanges();
|
||||||
|
// remove from database
|
||||||
|
localDbCtx.PartList.RemoveRange(part2del);
|
||||||
|
//// salvo
|
||||||
|
//localDbCtx.SaveChanges();
|
||||||
|
localDbCtx.MachGroupList.RemoveRange(machGroup2del);
|
||||||
|
//// salvo
|
||||||
|
//localDbCtx.SaveChanges();
|
||||||
|
localDbCtx.ProdList.Remove(currProd);
|
||||||
|
// salvo
|
||||||
|
localDbCtx.SaveChanges();
|
||||||
|
done = true;
|
||||||
|
}
|
||||||
|
catch (Exception exc)
|
||||||
|
{
|
||||||
|
string errMessage = $"EXCEPTION on Prod.DeleteProd: {Environment.NewLine}{exc}";
|
||||||
|
Console.WriteLine(errMessage);
|
||||||
|
Log.Error(errMessage);
|
||||||
}
|
}
|
||||||
//// salvo
|
|
||||||
//dbCtx.SaveChanges();
|
|
||||||
// remove from database
|
|
||||||
dbCtx.PartList.RemoveRange(part2del);
|
|
||||||
//// salvo
|
|
||||||
//dbCtx.SaveChanges();
|
|
||||||
dbCtx.MachGroupList.RemoveRange(machGroup2del);
|
|
||||||
//// salvo
|
|
||||||
//dbCtx.SaveChanges();
|
|
||||||
dbCtx.ProdList.Remove(currProd);
|
|
||||||
// salvo
|
|
||||||
dbCtx.SaveChanges();
|
|
||||||
ResetController();
|
|
||||||
done = true;
|
|
||||||
}
|
|
||||||
catch (Exception exc)
|
|
||||||
{
|
|
||||||
Console.WriteLine($"EXCEPTION on DeleteProd: {exc}");
|
|
||||||
}
|
}
|
||||||
return done;
|
return done;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Dispose()
|
public void Dispose()
|
||||||
{
|
{
|
||||||
// Clear database context
|
|
||||||
dbCtx.Dispose();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -172,14 +134,13 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
|||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public ProdModel FindByProdDbId(int ProdDbId)
|
public ProdModel FindByProdDbId(int ProdDbId)
|
||||||
{
|
{
|
||||||
var answ = dbCtx
|
ProdModel answ;
|
||||||
|
using (DatabaseContext localDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
|
||||||
|
{
|
||||||
|
answ = localDbCtx
|
||||||
.ProdList
|
.ProdList
|
||||||
.Where(x => x.ProdDbId == ProdDbId)
|
.Where(x => x.ProdDbId == ProdDbId)
|
||||||
.SingleOrDefault();
|
.SingleOrDefault();
|
||||||
// forzo rilettura
|
|
||||||
if (answ != null)
|
|
||||||
{
|
|
||||||
dbCtx.Entry(answ).Reload();
|
|
||||||
}
|
}
|
||||||
return answ;
|
return answ;
|
||||||
}
|
}
|
||||||
@@ -191,14 +152,13 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
|||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public ProdModel FindByProdId(int ProdId)
|
public ProdModel FindByProdId(int ProdId)
|
||||||
{
|
{
|
||||||
var answ = dbCtx
|
ProdModel answ;
|
||||||
|
using (DatabaseContext localDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
|
||||||
|
{
|
||||||
|
answ = localDbCtx
|
||||||
.ProdList
|
.ProdList
|
||||||
.Where(x => x.ProdId == ProdId)
|
.Where(x => x.ProdId == ProdId)
|
||||||
.SingleOrDefault();
|
.SingleOrDefault();
|
||||||
// forzo rilettura
|
|
||||||
if (answ != null)
|
|
||||||
{
|
|
||||||
dbCtx.Entry(answ).Reload();
|
|
||||||
}
|
}
|
||||||
return answ;
|
return answ;
|
||||||
}
|
}
|
||||||
@@ -215,7 +175,7 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
|||||||
{
|
{
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
return Core.ProdFileM.CreateProdFileM(currProd.ProdId, ProjIdByProd(ProdId), currProd.DtCreated, currProd.Description, currProd.PType, currProd.Machine);
|
return Core.ProdFileM.CreateProdFileM(currProd.ProdId, ProjIdByProd(ProdId), currProd.DtCreated, currProd.Description, currProd.PType, currProd.Machine, currProd.LockedBy, currProd.LockDate);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -228,152 +188,159 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
|||||||
List<Core.ProdFileM> result = new List<Core.ProdFileM>();
|
List<Core.ProdFileM> result = new List<Core.ProdFileM>();
|
||||||
var dbResult = GetLastDbModelDesc(numRecord);
|
var dbResult = GetLastDbModelDesc(numRecord);
|
||||||
// conversione
|
// conversione
|
||||||
result = dbResult.Select(x => Core.ProdFileM.CreateProdFileM(x.ProdId, ProjIdByProd(x.ProdId), x.DtCreated, x.Description, x.PType, x.Machine)).ToList();
|
result = dbResult.Select(x => Core.ProdFileM.CreateProdFileM(x.ProdId, ProjIdByProd(x.ProdId), x.DtCreated, x.Description, x.PType, x.Machine, x.LockedBy, x.LockDate)).ToList();
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Fornisce nuovo indice VUOTO da usare (allocando sul DB)
|
/// Fornisce nuovo indice VUOTO da usare (allocando sul DB)
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="ProjId"></param>
|
/// <param name="ProjId">ID Proj</param>
|
||||||
|
/// <param name="UserKey">User ID / Key number</param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public int GetNextIndex(int ProjId)
|
public int GetNextIndex(int ProjId, string UserKey = "USER01")
|
||||||
{
|
{
|
||||||
int nextId = 0;
|
int nextId = 0;
|
||||||
|
|
||||||
// cerco se ne ho ALMENO 1....
|
using (DatabaseContext localDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
|
||||||
var numRec = dbCtx.ProdList.Count();
|
|
||||||
if (numRec == 0)
|
|
||||||
{
|
{
|
||||||
nextId = 1;
|
// cerco se ne ho ALMENO 1....
|
||||||
}
|
var numRec = localDbCtx.ProdList.Count();
|
||||||
else
|
if (numRec == 0)
|
||||||
{
|
{
|
||||||
// retrieve ultimo...
|
nextId = 1;
|
||||||
var maxRecord = dbCtx
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// retrieve ultimo...
|
||||||
|
var maxRecord = localDbCtx
|
||||||
|
.ProdList
|
||||||
|
.OrderByDescending(x => x.ProdId)
|
||||||
|
.Take(1)
|
||||||
|
.FirstOrDefault();
|
||||||
|
// incremento
|
||||||
|
nextId = maxRecord.ProdId + 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
// creo nuovo PROD...
|
||||||
|
var newProd = localDbCtx
|
||||||
.ProdList
|
.ProdList
|
||||||
.OrderByDescending(x => x.ProdId)
|
.Add(new ProdModel() { ProdId = nextId, Locked = true, DtCreated = DateTime.Now });
|
||||||
.Take(1)
|
|
||||||
|
// cerco Proj
|
||||||
|
var currProj = localDbCtx
|
||||||
|
.ProjList
|
||||||
|
.Where(x => x.ProjId == ProjId)
|
||||||
.FirstOrDefault();
|
.FirstOrDefault();
|
||||||
// incremento
|
|
||||||
nextId = maxRecord.ProdId + 1;
|
// aggiungo proj-prod
|
||||||
|
currProj.ProdDbId = newProd.ProdDbId;
|
||||||
|
currProj.Locked = true;
|
||||||
|
currProj.LockDate = DateTime.Now;
|
||||||
|
currProj.LockedBy = UserKey;
|
||||||
|
|
||||||
|
// Commit changes
|
||||||
|
localDbCtx.SaveChanges();
|
||||||
}
|
}
|
||||||
|
|
||||||
// creo nuovo PROD...
|
|
||||||
var newProd = dbCtx
|
|
||||||
.ProdList
|
|
||||||
.Add(new ProdModel() { ProdId = nextId, Locked = true, DtCreated = DateTime.Now });
|
|
||||||
|
|
||||||
// cerco Proj
|
|
||||||
var currProj = dbCtx
|
|
||||||
.ProjList
|
|
||||||
.Where(x => x.ProjId == ProjId)
|
|
||||||
.FirstOrDefault();
|
|
||||||
|
|
||||||
// aggiungo proj-prod
|
|
||||||
currProj.ProdDbId = newProd.ProdDbId;
|
|
||||||
currProj.Locked = true;
|
|
||||||
|
|
||||||
// Commit changes
|
|
||||||
dbCtx.SaveChanges();
|
|
||||||
|
|
||||||
return nextId;
|
return nextId;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Verifica prod assegnato a supervisor:
|
/// Verifica prod assegnato a supervisor: ...se c'e' anche un solo machgroup del prod
|
||||||
/// ...se c'e' anche un solo machgroup del prod assegnato ad un supervisor o in stato 0 (dovrebbe essere la stessa cosa?)
|
/// assegnato ad un supervisor o in stato 0 (dovrebbe essere la stessa cosa?)
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="ProdId"></param>
|
/// <param name="ProdId"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public bool IsAnyInSupervisor(int ProdId)
|
public bool IsAnyInSupervisor(int ProdId)
|
||||||
{
|
{
|
||||||
// cerco se ci siano assegnati a supervisor
|
int numAssigned = 0;
|
||||||
var numAssigned = dbCtx
|
using (DatabaseContext localDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
|
||||||
.MachGroupList
|
{
|
||||||
.Where(x => x.Prod.ProdId == ProdId && (!string.IsNullOrEmpty(x.SupervisorId) || x.State >= 0))
|
// cerco se ci siano assegnati a supervisor
|
||||||
.Count();
|
numAssigned = localDbCtx
|
||||||
|
.MachGroupList
|
||||||
|
.Where(x => x.Prod.ProdId == ProdId && (!string.IsNullOrEmpty(x.SupervisorId) || x.State >= 0))
|
||||||
|
.Count();
|
||||||
|
}
|
||||||
return numAssigned > 0;
|
return numAssigned > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary> Return Lock by ProdId (proj & prod) </summary> <param name="ProdId"></param> <returns></returns>
|
||||||
/// Manage Lock by ProdId (proj & prod)
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="ProdId">ProjID</param>
|
|
||||||
/// <param name="Locked">Stato Lock da impostare</param>
|
|
||||||
/// <returns></returns>
|
|
||||||
public ProdModel LockByProdId(int ProdId, bool Locked)
|
|
||||||
{
|
|
||||||
// seleziono il prod...
|
|
||||||
var currProd = dbCtx
|
|
||||||
.ProdList
|
|
||||||
.Where(x => x.ProdId == ProdId)
|
|
||||||
.SingleOrDefault();
|
|
||||||
|
|
||||||
if (currProd != null)
|
|
||||||
{
|
|
||||||
currProd.Locked = Locked;
|
|
||||||
dbCtx.Entry(currProd).State = System.Data.Entity.EntityState.Modified;
|
|
||||||
|
|
||||||
var currProj = dbCtx
|
|
||||||
.ProjList
|
|
||||||
.Where(x => x.ProdDbId == currProd.ProdDbId)
|
|
||||||
.ToList();
|
|
||||||
|
|
||||||
//currProj.ForEach(x => x.Locked = Locked);
|
|
||||||
foreach (var item in currProj)
|
|
||||||
{
|
|
||||||
item.Locked = Locked;
|
|
||||||
dbCtx.Entry(item).State = System.Data.Entity.EntityState.Modified;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
dbCtx.SaveChanges();
|
|
||||||
ResetController();
|
|
||||||
|
|
||||||
return currProd;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Return Lock by ProdId (proj & prod)
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="ProdId">ProjID</param>
|
|
||||||
/// <returns></returns>
|
|
||||||
public bool IsLockByProdId(int ProdId)
|
public bool IsLockByProdId(int ProdId)
|
||||||
{
|
{
|
||||||
// seleziono il prod...
|
bool bIsLock = false;
|
||||||
var currProd = dbCtx
|
using (DatabaseContext localDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
|
||||||
.ProdList
|
|
||||||
.Where(x => x.ProdId == ProdId)
|
|
||||||
.FirstOrDefault();
|
|
||||||
|
|
||||||
var bIsLock = false;
|
|
||||||
if (currProd != null)
|
|
||||||
{
|
{
|
||||||
bIsLock = currProd.Locked;
|
// seleziono il prod...
|
||||||
|
var currProd = localDbCtx
|
||||||
|
.ProdList
|
||||||
|
.Where(x => x.ProdId == ProdId)
|
||||||
|
.FirstOrDefault();
|
||||||
|
|
||||||
var currProj = dbCtx
|
if (currProd != null)
|
||||||
.ProjList
|
|
||||||
.Where(x => x.ProdDbId == currProd.ProdDbId)
|
|
||||||
.ToList();
|
|
||||||
|
|
||||||
if (currProj != null && !bIsLock)
|
|
||||||
{
|
{
|
||||||
bIsLock = currProj.Any(x => x.Locked);
|
bIsLock = currProd.Locked;
|
||||||
|
|
||||||
|
var currProj = localDbCtx
|
||||||
|
.ProjList
|
||||||
|
.Where(x => x.ProdDbId == currProd.ProdDbId)
|
||||||
|
.ToList();
|
||||||
|
|
||||||
|
if (currProj != null && !bIsLock)
|
||||||
|
{
|
||||||
|
bIsLock = currProj.Any(x => x.Locked);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return bIsLock;
|
return bIsLock;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary> Manage Lock by ProdId (proj & prod) </summary> <param name="ProdId"></param>
|
||||||
|
/// <param name="Locked">Stato Lock da impostare</param> <param name="UserKey">User ID / Key
|
||||||
|
/// number</param> <returns></returns>
|
||||||
|
public ProdModel LockByProdId(int ProdId, bool Locked, string UserKey = "USER01")
|
||||||
|
{
|
||||||
|
ProdModel currProd;
|
||||||
|
// seleziono il prod...
|
||||||
|
using (DatabaseContext localDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
|
||||||
|
{
|
||||||
|
currProd = localDbCtx
|
||||||
|
.ProdList
|
||||||
|
.Where(x => x.ProdId == ProdId)
|
||||||
|
.SingleOrDefault();
|
||||||
|
|
||||||
|
if (currProd != null)
|
||||||
|
{
|
||||||
|
currProd.Locked = Locked;
|
||||||
|
currProd.LockDate = DateTime.Now;
|
||||||
|
currProd.LockedBy = Locked ? UserKey : "";
|
||||||
|
localDbCtx.Entry(currProd).State = System.Data.Entity.EntityState.Modified;
|
||||||
|
|
||||||
|
var currProj = localDbCtx
|
||||||
|
.ProjList
|
||||||
|
.Where(x => x.ProdDbId == currProd.ProdDbId)
|
||||||
|
.ToList();
|
||||||
|
|
||||||
|
//currProj.ForEach(x => x.Locked = Locked);
|
||||||
|
foreach (var item in currProj)
|
||||||
|
{
|
||||||
|
item.Locked = Locked;
|
||||||
|
item.LockDate = DateTime.Now;
|
||||||
|
item.LockedBy = Locked ? UserKey : "";
|
||||||
|
localDbCtx.Entry(item).State = System.Data.Entity.EntityState.Modified;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
localDbCtx.SaveChanges();
|
||||||
|
}
|
||||||
|
return currProd;
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Reinizializzaizone del controller
|
/// Reinizializzaizone del controller
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public void ResetController()
|
public void ResetController()
|
||||||
{
|
{
|
||||||
// Re-Initialize database context
|
|
||||||
dbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -384,26 +351,28 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
|||||||
public bool Update(ProdModel updItem)
|
public bool Update(ProdModel updItem)
|
||||||
{
|
{
|
||||||
bool done = false;
|
bool done = false;
|
||||||
var item2update = dbCtx
|
using (DatabaseContext localDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
|
||||||
.ProdList
|
|
||||||
.Where(x => x.ProdDbId == updItem.ProdDbId)
|
|
||||||
.SingleOrDefault();
|
|
||||||
try
|
|
||||||
{
|
{
|
||||||
// update, vers 1...
|
var item2update = localDbCtx
|
||||||
dbCtx.Entry(item2update).CurrentValues.SetValues(updItem);
|
.ProdList
|
||||||
|
.Where(x => x.ProdDbId == updItem.ProdDbId)
|
||||||
|
.SingleOrDefault();
|
||||||
|
try
|
||||||
|
{
|
||||||
|
// update, vers 1...
|
||||||
|
localDbCtx.Entry(item2update).CurrentValues.SetValues(updItem);
|
||||||
|
|
||||||
//// update, vers 2
|
//// update, vers 2
|
||||||
//dbCtx.PartList.Remove(item2del);
|
//localDbCtx.PartList.Remove(item2del);
|
||||||
//dbCtx.PartList.Add(updItem);
|
//localDbCtx.PartList.Add(updItem);
|
||||||
|
|
||||||
// Commit changes
|
// Commit changes
|
||||||
dbCtx.SaveChanges();
|
localDbCtx.SaveChanges();
|
||||||
ResetController();
|
done = true;
|
||||||
done = true;
|
}
|
||||||
|
catch
|
||||||
|
{ }
|
||||||
}
|
}
|
||||||
catch
|
|
||||||
{ }
|
|
||||||
return done;
|
return done;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -418,173 +387,267 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
|||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public ProdModel UpdateMachGroup(int ProdId, List<Core.MyMachGroupM> MachGroupList)
|
public ProdModel UpdateMachGroup(int ProdId, List<Core.MyMachGroupM> MachGroupList)
|
||||||
{
|
{
|
||||||
// Recupero il PROD
|
ProdModel currData = new ProdModel();
|
||||||
ProdModel currData = FindByProdId(ProdId);
|
using (DatabaseContext localDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
|
||||||
|
|
||||||
try
|
|
||||||
{
|
{
|
||||||
// preparo elenco
|
// Recupero il PROD nel contesto DB attuale
|
||||||
List<MachGroupModel> itemsMG2Add = new List<MachGroupModel>();
|
currData = localDbCtx
|
||||||
|
.ProdList
|
||||||
|
.Where(x => x.ProdId == ProdId)
|
||||||
|
.SingleOrDefault();
|
||||||
|
|
||||||
List<Core.MyMachGroupM> MachGroupList2Add = new List<Core.MyMachGroupM>();
|
try
|
||||||
List<PartModel> PartList2Add = new List<PartModel>();
|
|
||||||
// cerco le MG esistenti --> aggiorno
|
|
||||||
foreach (var item in MachGroupList)
|
|
||||||
{
|
{
|
||||||
#if false
|
// preparo elenco
|
||||||
var currMG = dbCtx
|
List<MachGroupModel> itemsMG2Add = new List<MachGroupModel>();
|
||||||
.MachGroupList
|
|
||||||
.Where(x => x.Prod.ProdId == ProdId && x.MachGroupId == item.Id)
|
|
||||||
.SingleOrDefault();
|
|
||||||
#endif
|
|
||||||
var currMG = MachGroupController.man.FindByMachGroupId(ProdId, item.Id);
|
|
||||||
var convCurrMG = MachGroupController.ConvertFromCore(item, currData.ProdDbId);
|
|
||||||
if (currMG != null)
|
|
||||||
{
|
|
||||||
// se non identico x equality limitata a ViewOptim...
|
|
||||||
if (!currMG.ViewOptimEquals(convCurrMG))
|
|
||||||
{
|
|
||||||
// aggiorno con nuovi valori ricevuti
|
|
||||||
currMG.H = convCurrMG.H;
|
|
||||||
currMG.L = convCurrMG.L;
|
|
||||||
currMG.W = convCurrMG.W;
|
|
||||||
currMG.Material = convCurrMG.Material;
|
|
||||||
currMG.Name = convCurrMG.Name;
|
|
||||||
// salvo
|
|
||||||
dbCtx.SaveChanges();
|
|
||||||
// registro modifica StatusMap
|
|
||||||
StatusMapController.man.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, "");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// aggiungo MachGroup
|
|
||||||
dbCtx.MachGroupList.AddRange(itemsMG2Add);
|
|
||||||
// Commit changes
|
|
||||||
dbCtx.SaveChanges();
|
|
||||||
|
|
||||||
// verifico di nuovo l'elenco delle MG x le relative PART...
|
List<Core.MyMachGroupM> MachGroupList2Add = new List<Core.MyMachGroupM>();
|
||||||
foreach (var item in MachGroupList)
|
List<PartModel> PartList2Add = new List<PartModel>();
|
||||||
{
|
// cerco le MG esistenti --> aggiorno
|
||||||
var currMG = MachGroupController.man.FindByMachGroupId(ProdId, item.Id);
|
foreach (var item in MachGroupList)
|
||||||
int MachGroupDbId = currMG.MachGroupDbId;
|
|
||||||
bool modMg = false;
|
|
||||||
// verifico se uguali o meno...
|
|
||||||
foreach (var currPartM in item.PartMList)
|
|
||||||
{
|
{
|
||||||
var currPart = dbCtx
|
var currMG = MachGroupController.man.FindByMachGroupId(ProdId, item.Id);
|
||||||
.PartList
|
var convCurrMG = MachGroupController.ConvertFromCore(item, currData.ProdDbId);
|
||||||
.Where(x => x.MachGroup.Prod.ProdId == ProdId && x.MachGroup.MachGroupId == item.Id && x.PartId == currPartM.nPartId)
|
if (currMG != null)
|
||||||
.SingleOrDefault();
|
|
||||||
var convCurrPartM = PartController.ConvertFromCore(currPartM, MachGroupDbId);
|
|
||||||
if (currPart != null)
|
|
||||||
{
|
{
|
||||||
// se non identico x equality limitata a ViewOptim...
|
// se non identico x equality limitata a ViewOptim...
|
||||||
if (!currPart.ViewOptimEquals(convCurrPartM))
|
if (!currMG.ViewOptimEquals(convCurrMG))
|
||||||
{
|
{
|
||||||
// aggiorno con nuovi valori ricevuti
|
// aggiorno con nuovi valori ricevuti
|
||||||
currPart.H = convCurrPartM.H;
|
currMG.H = convCurrMG.H;
|
||||||
currPart.L = convCurrPartM.L;
|
currMG.L = convCurrMG.L;
|
||||||
currPart.W = convCurrPartM.W;
|
currMG.W = convCurrMG.W;
|
||||||
currPart.Material = convCurrPartM.Material;
|
currMG.Material = convCurrMG.Material;
|
||||||
currPart.CALC_State = convCurrPartM.CALC_State;
|
currMG.Name = convCurrMG.Name;
|
||||||
currPart.ROT = convCurrPartM.ROT;
|
|
||||||
currPart.PDN = convCurrPartM.PDN;
|
|
||||||
currPart.NAM = convCurrPartM.NAM;
|
|
||||||
// salvo
|
// salvo
|
||||||
dbCtx.SaveChanges();
|
localDbCtx.SaveChanges();
|
||||||
modMg = true;
|
// registro modifica StatusMap
|
||||||
|
StatusMapController.man.UpdateAction(currMG.SupervisorId, ProdId, currMG.MachGroupId, Core.StatusMapItemType.MachGroup, Core.StatusMapOpType.MachGroupMod, "");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
PartList2Add.Add(convCurrPartM);
|
itemsMG2Add.Add(convCurrMG);
|
||||||
modMg = true;
|
// registro modifica StatusMap
|
||||||
|
StatusMapController.man.UpdateAction("", ProdId, item.Id, Core.StatusMapItemType.MachGroup, Core.StatusMapOpType.MachGroupAdd, "");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// verifico se salvare...
|
// aggiungo MachGroup
|
||||||
if (modMg)
|
localDbCtx.MachGroupList.AddRange(itemsMG2Add);
|
||||||
|
// Commit changes
|
||||||
|
localDbCtx.SaveChanges();
|
||||||
|
|
||||||
|
// verifico di nuovo l'elenco delle MG x le relative PART...
|
||||||
|
foreach (var item in MachGroupList)
|
||||||
{
|
{
|
||||||
StatusMapController.man.UpdateAction(currMG.SupervisorId, ProdId, currMG.MachGroupId, Core.StatusMapItemType.MachGroup, Core.StatusMapOpType.MachGroupMod, "");
|
var currMG = MachGroupController.man.FindByMachGroupId(ProdId, item.Id);
|
||||||
|
int MachGroupDbId = currMG.MachGroupDbId;
|
||||||
|
bool modMg = false;
|
||||||
|
// 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);
|
||||||
|
if (currPart != null)
|
||||||
|
{
|
||||||
|
// se non identico x equality limitata a ViewOptim...
|
||||||
|
if (!currPart.ViewOptimEquals(convCurrPartM))
|
||||||
|
{
|
||||||
|
// aggiorno con nuovi valori ricevuti
|
||||||
|
currPart.H = convCurrPartM.H;
|
||||||
|
currPart.L = convCurrPartM.L;
|
||||||
|
currPart.W = convCurrPartM.W;
|
||||||
|
currPart.Material = convCurrPartM.Material;
|
||||||
|
currPart.CALC_State = convCurrPartM.CALC_State;
|
||||||
|
currPart.ROT = convCurrPartM.ROT;
|
||||||
|
currPart.PDN = convCurrPartM.PDN;
|
||||||
|
currPart.NAM = convCurrPartM.NAM;
|
||||||
|
// salvo
|
||||||
|
localDbCtx.SaveChanges();
|
||||||
|
modMg = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
PartList2Add.Add(convCurrPartM);
|
||||||
|
modMg = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// verifico se salvare...
|
||||||
|
if (modMg)
|
||||||
|
{
|
||||||
|
StatusMapController.man.UpdateAction(currMG.SupervisorId, ProdId, currMG.MachGroupId, Core.StatusMapItemType.MachGroup, Core.StatusMapOpType.MachGroupMod, "");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// aggiungo PartList
|
||||||
|
localDbCtx.PartList.AddRange(PartList2Add);
|
||||||
|
// Commit changes
|
||||||
|
localDbCtx.SaveChanges();
|
||||||
|
|
||||||
|
// sel dei MachGroup da prod OLD
|
||||||
|
List<MachGroupModel> itemsMGOld = localDbCtx
|
||||||
|
.MachGroupList
|
||||||
|
.Where(x => x.Prod.ProdId == ProdId)
|
||||||
|
.ToList();
|
||||||
|
// elenco degli ID del MachGroup NON trovati
|
||||||
|
List<int> MgId2rem = itemsMGOld.Select(x => x.MachGroupId).Except(MachGroupList.Select(y => y.Id)).ToList();
|
||||||
|
// processo i MachGroup eliminati
|
||||||
|
foreach (var item in MgId2rem)
|
||||||
|
{
|
||||||
|
MachGroupController.man.Delete(ProdId, item);
|
||||||
|
}
|
||||||
|
|
||||||
|
// aggiorno valore isNew a false x PROD
|
||||||
|
currData.IsNew = false;
|
||||||
|
|
||||||
|
// Commit changes
|
||||||
|
localDbCtx.SaveChanges();
|
||||||
}
|
}
|
||||||
|
catch (Exception exc)
|
||||||
// aggiungo PartList
|
|
||||||
dbCtx.PartList.AddRange(PartList2Add);
|
|
||||||
// Commit changes
|
|
||||||
dbCtx.SaveChanges();
|
|
||||||
|
|
||||||
// sel dei MachGroup da prod OLD
|
|
||||||
List<MachGroupModel> itemsMGOld = dbCtx
|
|
||||||
.MachGroupList
|
|
||||||
.Where(x => x.Prod.ProdId == ProdId)
|
|
||||||
.ToList();
|
|
||||||
// elenco degli ID del MachGroup NON trovati
|
|
||||||
List<int> MgId2rem = itemsMGOld.Select(x => x.MachGroupId).Except(MachGroupList.Select(y => y.Id)).ToList();
|
|
||||||
// processo i MachGroup eliminati
|
|
||||||
foreach (var item in MgId2rem)
|
|
||||||
{
|
{
|
||||||
MachGroupController.man.Delete(ProdId, item);
|
string errMessage = $"EXCEPTION on Prod.UpdateMachGroup: {Environment.NewLine}{exc}";
|
||||||
|
Console.WriteLine(errMessage);
|
||||||
|
Log.Error(errMessage);
|
||||||
}
|
}
|
||||||
|
|
||||||
// aggiorno valore isNew a false x PROD
|
|
||||||
currData.IsNew = false;
|
|
||||||
|
|
||||||
// Commit changes
|
|
||||||
dbCtx.SaveChanges();
|
|
||||||
ResetController();
|
|
||||||
}
|
}
|
||||||
catch (Exception exc)
|
|
||||||
{
|
|
||||||
Console.WriteLine($"EXCEPTION on UpdateMachGroup: {exc}");
|
|
||||||
}
|
|
||||||
|
|
||||||
return currData;
|
return currData;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Update record su DB x PType
|
/// Update record su DB x PType
|
||||||
/// </summary>
|
|
||||||
/// <param name="ProdId"></param>
|
|
||||||
/// <param name="PType"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
public Core.ProdFileM UpdatePType(int ProdId, BWType PType)
|
|
||||||
{
|
|
||||||
var currData = FindByProdId(ProdId);
|
|
||||||
// aggiorno valore BTL
|
|
||||||
currData.PType = PType;
|
|
||||||
|
|
||||||
// Commit changes
|
|
||||||
dbCtx.SaveChanges();
|
|
||||||
ResetController();
|
|
||||||
|
|
||||||
return coreConv(currData);
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Update record su DB x PType
|
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="ProdId"></param>
|
/// <param name="ProdId"></param>
|
||||||
/// <param name="Machine"></param>
|
/// <param name="Machine"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public Core.ProdFileM UpdateMachine(int ProdId, String Machine)
|
public Core.ProdFileM UpdateMachine(int ProdId, String Machine)
|
||||||
{
|
{
|
||||||
var currData = FindByProdId(ProdId);
|
ProdModel currData;
|
||||||
// aggiorno valore BTL
|
using (DatabaseContext localDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
|
||||||
currData.Machine = Machine;
|
{
|
||||||
|
currData = localDbCtx
|
||||||
// Commit changes
|
.ProdList
|
||||||
dbCtx.SaveChanges();
|
.Where(x => x.ProdId == ProdId)
|
||||||
ResetController();
|
.SingleOrDefault();
|
||||||
|
// aggiorno valore BTL
|
||||||
|
currData.Machine = Machine;
|
||||||
|
|
||||||
|
// Commit changes
|
||||||
|
localDbCtx.SaveChanges();
|
||||||
|
}
|
||||||
return coreConv(currData);
|
return coreConv(currData);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Update record su DB x PType
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="ProdId"></param>
|
||||||
|
/// <param name="PType"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public Core.ProdFileM UpdatePType(int ProdId, BWType PType)
|
||||||
|
{
|
||||||
|
ProdModel currData;
|
||||||
|
using (DatabaseContext localDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
|
||||||
|
{
|
||||||
|
currData = localDbCtx
|
||||||
|
.ProdList
|
||||||
|
.Where(x => x.ProdId == ProdId)
|
||||||
|
.SingleOrDefault();
|
||||||
|
// aggiorno valore BTL
|
||||||
|
currData.PType = PType;
|
||||||
|
|
||||||
|
// Commit changes
|
||||||
|
localDbCtx.SaveChanges();
|
||||||
|
}
|
||||||
|
return coreConv(currData);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary> Return User Code/Key that Locks by ProdId (proj & prod) </summary> <param
|
||||||
|
/// name="ProdId"></param> <returns></returns>
|
||||||
|
public string UserLockByProdId(int ProdId)
|
||||||
|
{
|
||||||
|
string LockBy = "";
|
||||||
|
using (DatabaseContext localDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
|
||||||
|
{
|
||||||
|
// seleziono il prod...
|
||||||
|
var currProd = localDbCtx
|
||||||
|
.ProdList
|
||||||
|
.Where(x => x.ProdId == ProdId)
|
||||||
|
.FirstOrDefault();
|
||||||
|
|
||||||
|
if (currProd != null)
|
||||||
|
{
|
||||||
|
LockBy = currProd.LockedBy;
|
||||||
|
|
||||||
|
var currProj = localDbCtx
|
||||||
|
.ProjList
|
||||||
|
.Where(x => x.ProdDbId == currProd.ProdDbId)
|
||||||
|
.ToList();
|
||||||
|
|
||||||
|
if (currProj != null && string.IsNullOrEmpty(LockBy))
|
||||||
|
{
|
||||||
|
LockBy = currProj.FirstOrDefault(x => !string.IsNullOrEmpty(x.LockedBy)).LockedBy;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return LockBy;
|
||||||
|
}
|
||||||
|
|
||||||
#endregion Public Methods
|
#endregion Public Methods
|
||||||
|
|
||||||
|
#region Protected Methods
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Helper conversione modelli
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="currProd"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
protected Core.ProdFileM coreConv(ProdModel currProd)
|
||||||
|
{
|
||||||
|
Core.ProdFileM answ = Core.ProdFileM.CreateProdFileM(currProd.ProdId, ProjIdByProd(currProd.ProdId), currProd.DtCreated, currProd.Description, currProd.PType, currProd.Machine, currProd.LockedBy, currProd.LockDate);
|
||||||
|
return answ;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Get LAST paginated data from DB (DESC ordered)
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="numRecord"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
protected List<ProdModel> GetLastDbModelDesc(int numRecord)
|
||||||
|
{
|
||||||
|
using (DatabaseContext localDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
|
||||||
|
{
|
||||||
|
// se numRecord = 0 --> passo tutti
|
||||||
|
if (numRecord == 0)
|
||||||
|
{
|
||||||
|
numRecord = localDbCtx.ProdList.Count();
|
||||||
|
}
|
||||||
|
// retrieve
|
||||||
|
return localDbCtx
|
||||||
|
.ProdList
|
||||||
|
.OrderByDescending(x => x.ProdId)
|
||||||
|
.Take(numRecord)
|
||||||
|
.ToList();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected List<int> ProjIdByProd(int ProdId)
|
||||||
|
{
|
||||||
|
return DbManager.obj.ProjCtr.GetByProdAsc(ProdId).Select(y => y.nProjId).ToList();
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion Protected Methods
|
||||||
|
|
||||||
|
#region Private Fields
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Istanza logger
|
||||||
|
/// </summary>
|
||||||
|
private NLog.Logger Log = LogManager.GetCurrentClassLogger();
|
||||||
|
|
||||||
|
#endregion Private Fields
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,99 +1,27 @@
|
|||||||
using EgtBEAMWALL.DataLayer.DatabaseModels;
|
using EgtBEAMWALL.DataLayer.DatabaseModels;
|
||||||
|
using NLog;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text;
|
|
||||||
using static EgtBEAMWALL.Core.ConstBeam;
|
using static EgtBEAMWALL.Core.ConstBeam;
|
||||||
|
|
||||||
namespace EgtBEAMWALL.DataLayer.Controllers
|
namespace EgtBEAMWALL.DataLayer.Controllers
|
||||||
{
|
{
|
||||||
public class ProjController : IDisposable
|
public class ProjController : IDisposable
|
||||||
{
|
{
|
||||||
#region Private Fields
|
|
||||||
|
|
||||||
private DatabaseContext dbCtx;
|
|
||||||
|
|
||||||
#endregion Private Fields
|
|
||||||
|
|
||||||
#region Public Constructors
|
#region Public Constructors
|
||||||
|
|
||||||
public ProjController()
|
public ProjController()
|
||||||
{
|
{
|
||||||
// Initialize database context
|
|
||||||
dbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion Public Constructors
|
#endregion Public Constructors
|
||||||
|
|
||||||
#region Protected Methods
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Helper conversione modelli
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="currProj"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
protected Core.ProjFileM coreConv(ProjModel currProj)
|
|
||||||
{
|
|
||||||
Core.ProjFileM answ = null;
|
|
||||||
if (currProj != null)
|
|
||||||
{
|
|
||||||
answ = Core.ProjFileM.CreateProjFileM(currProj.ProjId, ProdIdByProdDbId(currProj.ProdDbId), currProj.DtCreated, currProj.DtExported, currProj.ListName, currProj.BTLFileName, currProj.IsNew, currProj.Locked, currProj.PType, currProj.Machine);
|
|
||||||
}
|
|
||||||
return answ;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Get LAST paginated data from DB (DESC ordered)
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="numRecord"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
protected List<ProjModel> GetLastDbModelDesc(int numRecord)
|
|
||||||
{
|
|
||||||
// se numRecord = 0 --> passo tutti
|
|
||||||
if (numRecord == 0)
|
|
||||||
{
|
|
||||||
numRecord = dbCtx.ProjList.Count();
|
|
||||||
}
|
|
||||||
// retrieve
|
|
||||||
return dbCtx
|
|
||||||
.ProjList
|
|
||||||
.OrderByDescending(x => x.ProjId)
|
|
||||||
.Take(numRecord)
|
|
||||||
.ToList();
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Get ProdId by ProdDbId, 0 se non trovato
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="ProdDbId"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
protected int ProdIdByProdDbId(int? ProdDbId)
|
|
||||||
{
|
|
||||||
int answ = 0;
|
|
||||||
|
|
||||||
if (ProdDbId != null)
|
|
||||||
{
|
|
||||||
var prodRecord = dbCtx
|
|
||||||
.ProdList
|
|
||||||
.Where(x => x.ProdDbId == ProdDbId)
|
|
||||||
.SingleOrDefault();
|
|
||||||
|
|
||||||
if (prodRecord != null)
|
|
||||||
{
|
|
||||||
answ = prodRecord.ProdId;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return answ;
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion Protected Methods
|
|
||||||
|
|
||||||
#region Public Methods
|
#region Public Methods
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Search for already imported BTL from FileName (only)
|
/// Search for already imported BTL from FileName (only)
|
||||||
/// =0 : NOT found
|
/// =0 : NOT found >0 : ProjId (already present) for overwrite
|
||||||
/// >0 : ProjId (already rpesent) for overwrite
|
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="BTLFileName"></param>
|
/// <param name="BTLFileName"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
@@ -116,44 +44,53 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
|||||||
return answ;
|
return answ;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Delete Proj on DB by ProjId
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="ProjId"></param>
|
||||||
|
/// <returns></returns>
|
||||||
public bool DeleteProj(int ProjId)
|
public bool DeleteProj(int ProjId)
|
||||||
{
|
{
|
||||||
bool done = false;
|
bool done = false;
|
||||||
|
|
||||||
var currProj = FindByProjId(ProjId);
|
using (DatabaseContext localDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
|
||||||
|
|
||||||
// sel delle BTLParts da proj
|
|
||||||
var parts2del = dbCtx
|
|
||||||
.BTLPartList
|
|
||||||
.Where(x => x.ProjDbId == currProj.ProjDbId);
|
|
||||||
|
|
||||||
try
|
|
||||||
{
|
{
|
||||||
// remove from database
|
var currProj = localDbCtx
|
||||||
dbCtx.BTLPartList.RemoveRange(parts2del);
|
.ProjList
|
||||||
dbCtx.ProjList.Remove(currProj);
|
.Where(x => x.ProjId == ProjId)
|
||||||
// Commit changes
|
.SingleOrDefault();
|
||||||
dbCtx.SaveChanges();
|
// sel delle BTLParts da proj
|
||||||
ResetController();
|
var parts2del = localDbCtx
|
||||||
done = true;
|
.BTLPartList
|
||||||
}
|
.Where(x => x.ProjDbId == currProj.ProjDbId);
|
||||||
catch (Exception exc)
|
|
||||||
{
|
try
|
||||||
Console.WriteLine($"EXCEPTION on DeleteProj: {exc}");
|
{
|
||||||
|
// remove from database
|
||||||
|
localDbCtx.BTLPartList.RemoveRange(parts2del);
|
||||||
|
localDbCtx.ProjList.Remove(currProj);
|
||||||
|
// Commit changes
|
||||||
|
localDbCtx.SaveChanges();
|
||||||
|
done = true;
|
||||||
|
}
|
||||||
|
catch (Exception exc)
|
||||||
|
{
|
||||||
|
string errMessage = $"EXCEPTION on Proj.DeleteProj: {Environment.NewLine}{exc}";
|
||||||
|
Console.WriteLine(errMessage);
|
||||||
|
Log.Error(errMessage);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return done;
|
return done;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Dispose()
|
public void Dispose()
|
||||||
{
|
{
|
||||||
// Clear database context
|
|
||||||
dbCtx.Dispose();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Get records filtered by BtlPartName matching regexp BtlFileName[_number]
|
/// Get records filtered by BtlPartName matching regexp BtlFileName[_number]
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="BtlFileName">Base name to search for (=starts by BtlFileName%)</param>
|
/// <param name="BtlFileName">Base name to search for (=starts by BtlFileName%)</param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public List<ProjModel> FindByBtlFileName(string BtlFileName)
|
public List<ProjModel> FindByBtlFileName(string BtlFileName)
|
||||||
{
|
{
|
||||||
@@ -172,7 +109,7 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
|||||||
// cerco eventuali dati "child" puliti
|
// cerco eventuali dati "child" puliti
|
||||||
var childRec = localDbCtx
|
var childRec = localDbCtx
|
||||||
.ProjList
|
.ProjList
|
||||||
.Where(x => x.BTLFileName.StartsWith(BtlFileName+"_"))
|
.Where(x => x.BTLFileName.StartsWith(BtlFileName + "_"))
|
||||||
.ToList();
|
.ToList();
|
||||||
// faccio filtro con ricerca regexp x scartare "falsi positivi" come BtlFileName_nonNumero...
|
// faccio filtro con ricerca regexp x scartare "falsi positivi" come BtlFileName_nonNumero...
|
||||||
if (childRec.Count > 0)
|
if (childRec.Count > 0)
|
||||||
@@ -189,7 +126,6 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return searchResult;
|
return searchResult;
|
||||||
@@ -202,14 +138,13 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
|||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public ProjModel FindByProjDbId(int ProjDbId)
|
public ProjModel FindByProjDbId(int ProjDbId)
|
||||||
{
|
{
|
||||||
ProjModel answ = dbCtx
|
ProjModel answ;
|
||||||
.ProjList
|
using (DatabaseContext localDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
|
||||||
.Where(x => x.ProjDbId == ProjDbId)
|
|
||||||
.SingleOrDefault();
|
|
||||||
// forzo rilettura
|
|
||||||
if (answ != null)
|
|
||||||
{
|
{
|
||||||
dbCtx.Entry(answ).Reload();
|
answ = localDbCtx
|
||||||
|
.ProjList
|
||||||
|
.Where(x => x.ProjDbId == ProjDbId)
|
||||||
|
.SingleOrDefault();
|
||||||
}
|
}
|
||||||
return answ;
|
return answ;
|
||||||
}
|
}
|
||||||
@@ -221,14 +156,13 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
|||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public ProjModel FindByProjId(int ProjId)
|
public ProjModel FindByProjId(int ProjId)
|
||||||
{
|
{
|
||||||
var answ = dbCtx
|
ProjModel answ;
|
||||||
|
using (DatabaseContext localDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
|
||||||
|
{
|
||||||
|
answ = localDbCtx
|
||||||
.ProjList
|
.ProjList
|
||||||
.Where(x => x.ProjId == ProjId)
|
.Where(x => x.ProjId == ProjId)
|
||||||
.SingleOrDefault();
|
.SingleOrDefault();
|
||||||
// forzo rilettura
|
|
||||||
if (answ != null)
|
|
||||||
{
|
|
||||||
dbCtx.Entry(answ).Reload();
|
|
||||||
}
|
}
|
||||||
return answ;
|
return answ;
|
||||||
}
|
}
|
||||||
@@ -252,29 +186,34 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
|||||||
{
|
{
|
||||||
List<Core.ProjFileM> answ = new List<Core.ProjFileM>();
|
List<Core.ProjFileM> answ = new List<Core.ProjFileM>();
|
||||||
int ProdDbId = 0;
|
int ProdDbId = 0;
|
||||||
try
|
using (DatabaseContext localDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
|
||||||
{
|
{
|
||||||
var currProd = dbCtx
|
try
|
||||||
.ProdList
|
|
||||||
.Where(x => x.ProdId == ProdId)
|
|
||||||
.FirstOrDefault();
|
|
||||||
if (currProd != null)
|
|
||||||
{
|
{
|
||||||
ProdDbId = currProd.ProdDbId;
|
var currProd = localDbCtx
|
||||||
|
.ProdList
|
||||||
|
.Where(x => x.ProdId == ProdId)
|
||||||
|
.FirstOrDefault();
|
||||||
|
if (currProd != null)
|
||||||
|
{
|
||||||
|
ProdDbId = currProd.ProdDbId;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
catch (Exception exc)
|
||||||
|
{
|
||||||
|
string errMessage = $"EXCEPTION on Proj.GetByProdAsc: {Environment.NewLine}{exc}";
|
||||||
|
Console.WriteLine(errMessage);
|
||||||
|
Log.Error(errMessage);
|
||||||
|
}
|
||||||
|
// retrieve
|
||||||
|
var dbRes = localDbCtx
|
||||||
|
.ProjList
|
||||||
|
.Where(x => x.ProdDbId == ProdDbId)
|
||||||
|
.OrderBy(x => x.ProdDbId)
|
||||||
|
.ToList();
|
||||||
|
// conversione
|
||||||
|
answ = dbRes.Select(x => coreConv(x)).ToList();
|
||||||
}
|
}
|
||||||
catch (Exception exc)
|
|
||||||
{
|
|
||||||
Console.WriteLine($"EXCEPTION on GetByProdAsc: {exc}");
|
|
||||||
}
|
|
||||||
// retrieve
|
|
||||||
var dbRes = dbCtx
|
|
||||||
.ProjList
|
|
||||||
.Where(x => x.ProdDbId == ProdDbId)
|
|
||||||
.OrderBy(x => x.ProdDbId)
|
|
||||||
.ToList();
|
|
||||||
// conversione
|
|
||||||
answ = dbRes.Select(x => coreConv(x)).ToList();
|
|
||||||
return answ;
|
return answ;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -287,29 +226,34 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
|||||||
{
|
{
|
||||||
List<Core.ProjFileM> answ = new List<Core.ProjFileM>();
|
List<Core.ProjFileM> answ = new List<Core.ProjFileM>();
|
||||||
int ProdDbId = 0;
|
int ProdDbId = 0;
|
||||||
try
|
using (DatabaseContext localDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
|
||||||
{
|
{
|
||||||
var currProd = dbCtx
|
try
|
||||||
.ProdList
|
|
||||||
.Where(x => x.ProdId == ProdId)
|
|
||||||
.FirstOrDefault();
|
|
||||||
if (currProd != null)
|
|
||||||
{
|
{
|
||||||
ProdDbId = currProd.ProdDbId;
|
var currProd = localDbCtx
|
||||||
|
.ProdList
|
||||||
|
.Where(x => x.ProdId == ProdId)
|
||||||
|
.FirstOrDefault();
|
||||||
|
if (currProd != null)
|
||||||
|
{
|
||||||
|
ProdDbId = currProd.ProdDbId;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
catch (Exception exc)
|
||||||
|
{
|
||||||
|
string errMessage = $"EXCEPTION on Proj.GetByProdDesc: {Environment.NewLine}{exc}";
|
||||||
|
Console.WriteLine(errMessage);
|
||||||
|
Log.Error(errMessage);
|
||||||
|
}
|
||||||
|
// retrieve
|
||||||
|
var dbRes = localDbCtx
|
||||||
|
.ProjList
|
||||||
|
.Where(x => x.ProdDbId == ProdDbId)
|
||||||
|
.OrderByDescending(x => x.ProdDbId)
|
||||||
|
.ToList();
|
||||||
|
// conversione
|
||||||
|
answ = dbRes.Select(x => coreConv(x)).ToList();
|
||||||
}
|
}
|
||||||
catch (Exception exc)
|
|
||||||
{
|
|
||||||
Console.WriteLine($"EXCEPTION on GetByProdAsc: {exc}");
|
|
||||||
}
|
|
||||||
// retrieve
|
|
||||||
var dbRes = dbCtx
|
|
||||||
.ProjList
|
|
||||||
.Where(x => x.ProdDbId == ProdDbId)
|
|
||||||
.OrderByDescending(x => x.ProdDbId)
|
|
||||||
.ToList();
|
|
||||||
// conversione
|
|
||||||
answ = dbRes.Select(x => coreConv(x)).ToList();
|
|
||||||
return answ;
|
return answ;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -342,105 +286,125 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
|||||||
{
|
{
|
||||||
List<Core.ProjFileM> answ = new List<Core.ProjFileM>();
|
List<Core.ProjFileM> answ = new List<Core.ProjFileM>();
|
||||||
|
|
||||||
// se numRecord = 0 --> passo tutti
|
using (DatabaseContext localDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
|
||||||
if (numRecord == 0)
|
|
||||||
{
|
{
|
||||||
numRecord = dbCtx.ProjList.Count();
|
// se numRecord = 0 --> passo tutti
|
||||||
|
if (numRecord == 0)
|
||||||
|
{
|
||||||
|
numRecord = localDbCtx.ProjList.Count();
|
||||||
|
}
|
||||||
|
// retrieve
|
||||||
|
var dbRes = localDbCtx
|
||||||
|
.ProjList
|
||||||
|
.OrderByDescending(x => x.ProjId)
|
||||||
|
.Take(numRecord)
|
||||||
|
.ToList();
|
||||||
|
// conversione
|
||||||
|
answ = dbRes.Select(x => coreConv(x)).ToList();
|
||||||
}
|
}
|
||||||
// retrieve
|
|
||||||
var dbRes = dbCtx
|
|
||||||
.ProjList
|
|
||||||
.OrderByDescending(x => x.ProjId)
|
|
||||||
.Take(numRecord)
|
|
||||||
.ToList();
|
|
||||||
// conversione
|
|
||||||
answ = dbRes.Select(x => coreConv(x)).ToList();
|
|
||||||
return answ;
|
return answ;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Fornisce nuovo indice VUOTO da usare (allocando sul DB)
|
/// Fornisce nuovo indice VUOTO da usare (allocando sul DB)
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
/// <param name="UserKey">User ID / Key number</param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public int GetNextIndex()
|
public int GetNextIndex(string UserKey = "USER01")
|
||||||
{
|
{
|
||||||
int nextId = 0;
|
int nextId = 0;
|
||||||
|
|
||||||
// cerco se ne ho ALMENO 1....
|
using (DatabaseContext localDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
|
||||||
var numRec = dbCtx.ProjList.Count();
|
|
||||||
if (numRec == 0)
|
|
||||||
{
|
{
|
||||||
nextId = 1;
|
// cerco se ne ho ALMENO 1....
|
||||||
}
|
var numRec = localDbCtx.ProjList.Count();
|
||||||
else
|
if (numRec == 0)
|
||||||
{
|
{
|
||||||
// retrieve ultimo...
|
nextId = 1;
|
||||||
var maxRecord = dbCtx
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// retrieve ultimo...
|
||||||
|
var maxRecord = localDbCtx
|
||||||
|
.ProjList
|
||||||
|
.OrderByDescending(x => x.ProjId)
|
||||||
|
.Take(1)
|
||||||
|
.FirstOrDefault();
|
||||||
|
// incremento
|
||||||
|
nextId = maxRecord.ProjId + 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
// creo nuovo...
|
||||||
|
var newRec = localDbCtx
|
||||||
.ProjList
|
.ProjList
|
||||||
.OrderByDescending(x => x.ProjId)
|
.Add(new ProjModel()
|
||||||
.Take(1)
|
{
|
||||||
.FirstOrDefault();
|
ProjId = nextId,
|
||||||
// incremento
|
BTLFileName = "",
|
||||||
nextId = maxRecord.ProjId + 1;
|
IsNew = true,
|
||||||
|
Locked = true,
|
||||||
|
LockedBy = UserKey,
|
||||||
|
LockDate = DateTime.Now,
|
||||||
|
DtCreated = DateTime.Now
|
||||||
|
});
|
||||||
|
|
||||||
|
// Commit changes
|
||||||
|
localDbCtx.SaveChanges();
|
||||||
}
|
}
|
||||||
|
|
||||||
// creo nuovo...
|
|
||||||
var newRec = dbCtx
|
|
||||||
.ProjList
|
|
||||||
.Add(new ProjModel() { ProjId = nextId, BTLFileName = "", IsNew = true, Locked = true, DtCreated = DateTime.Now });
|
|
||||||
|
|
||||||
// Commit changes
|
|
||||||
dbCtx.SaveChanges();
|
|
||||||
|
|
||||||
return nextId;
|
return nextId;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary> Manage Lock by ProjId (proj & prod) </summary> <param name="ProjId">ID
|
||||||
/// Manage Lock by ProjId (proj & prod)
|
/// Proj</param> <param name="Locked">Stato Lock da impostare</param> <param
|
||||||
/// </summary>
|
/// name="UserKey">User ID / Key number</param> <returns></returns>
|
||||||
/// <param name="ProjId">ProjID</param>
|
public Core.ProjFileM LockByProjId(int ProjId, bool Locked, string UserKey = "USER01")
|
||||||
/// <param name="Locked">Stato Lock da impostare</param>
|
|
||||||
/// <returns></returns>
|
|
||||||
public Core.ProjFileM LockByProjId(int ProjId, bool Locked)
|
|
||||||
{
|
{
|
||||||
var currProj = dbCtx
|
ProjModel currProj;
|
||||||
.ProjList
|
using (DatabaseContext localDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
|
||||||
.Where(x => x.ProjId == ProjId)
|
|
||||||
.SingleOrDefault();
|
|
||||||
// aggiorno stato del proj
|
|
||||||
currProj.Locked = Locked;
|
|
||||||
dbCtx.Entry(currProj).State = System.Data.Entity.EntityState.Modified;
|
|
||||||
|
|
||||||
// seleziono il prod e lo blocco...
|
|
||||||
var currProd = dbCtx
|
|
||||||
.ProdList
|
|
||||||
.Where(x => x.ProdDbId == currProj.ProdDbId)
|
|
||||||
.SingleOrDefault();
|
|
||||||
|
|
||||||
if (currProd != null)
|
|
||||||
{
|
{
|
||||||
// blocco prod corrente
|
currProj = localDbCtx
|
||||||
currProd.Locked = Locked;
|
.ProjList
|
||||||
dbCtx.Entry(currProd).State = System.Data.Entity.EntityState.Modified;
|
.Where(x => x.ProjId == ProjId)
|
||||||
|
.SingleOrDefault();
|
||||||
|
// aggiorno stato del proj
|
||||||
|
currProj.Locked = Locked;
|
||||||
|
currProj.LockDate = DateTime.Now;
|
||||||
|
currProj.LockedBy = Locked ? UserKey : "";
|
||||||
|
localDbCtx.Entry(currProj).State = System.Data.Entity.EntityState.Modified;
|
||||||
|
|
||||||
// ora blocco altri proj del prod...
|
// seleziono il prod e lo blocco...
|
||||||
var currProjs = dbCtx
|
var currProd = localDbCtx
|
||||||
.ProjList
|
.ProdList
|
||||||
.Where(x => x.ProdDbId == currProd.ProdDbId && x.ProjId != ProjId)
|
.Where(x => x.ProdDbId == currProj.ProdDbId)
|
||||||
.ToList();
|
.SingleOrDefault();
|
||||||
|
|
||||||
//currProjs.ForEach(x => x.Locked = Locked);
|
if (currProd != null)
|
||||||
foreach (var item in currProjs)
|
|
||||||
{
|
{
|
||||||
//item.ProdDbId = currProd.ProdDbId;
|
// blocco prod corrente
|
||||||
item.Locked = Locked;
|
currProd.Locked = Locked;
|
||||||
dbCtx.Entry(item).State = System.Data.Entity.EntityState.Modified;
|
currProd.LockDate = DateTime.Now;
|
||||||
}
|
currProd.LockedBy = Locked ? UserKey : "";
|
||||||
}
|
localDbCtx.Entry(currProd).State = System.Data.Entity.EntityState.Modified;
|
||||||
// salvataggio
|
|
||||||
dbCtx.SaveChanges();
|
|
||||||
ResetController();
|
|
||||||
|
|
||||||
|
// ora blocco altri proj del prod...
|
||||||
|
var currProjs = localDbCtx
|
||||||
|
.ProjList
|
||||||
|
.Where(x => x.ProdDbId == currProd.ProdDbId && x.ProjId != ProjId)
|
||||||
|
.ToList();
|
||||||
|
|
||||||
|
//currProjs.ForEach(x => x.Locked = Locked);
|
||||||
|
foreach (var item in currProjs)
|
||||||
|
{
|
||||||
|
//item.ProdDbId = currProd.ProdDbId;
|
||||||
|
item.Locked = Locked;
|
||||||
|
item.LockDate = DateTime.Now;
|
||||||
|
item.LockedBy = Locked ? UserKey : "";
|
||||||
|
localDbCtx.Entry(item).State = System.Data.Entity.EntityState.Modified;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// salvataggio
|
||||||
|
localDbCtx.SaveChanges();
|
||||||
|
}
|
||||||
return coreConv(currProj);
|
return coreConv(currProj);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -449,8 +413,6 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public void ResetController()
|
public void ResetController()
|
||||||
{
|
{
|
||||||
// Re-Initialize database context
|
|
||||||
dbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -461,16 +423,18 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
|||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public Core.ProjFileM ResetNew(int ProjId)
|
public Core.ProjFileM ResetNew(int ProjId)
|
||||||
{
|
{
|
||||||
var currProj = dbCtx
|
ProjModel currProj;
|
||||||
.ProjList
|
using (DatabaseContext localDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
|
||||||
.Where(x => x.ProjId == ProjId)
|
{
|
||||||
.SingleOrDefault();
|
currProj = localDbCtx
|
||||||
|
.ProjList
|
||||||
// aggiorno stato
|
.Where(x => x.ProjId == ProjId)
|
||||||
currProj.IsNew = false;
|
.SingleOrDefault();
|
||||||
dbCtx.SaveChanges();
|
|
||||||
ResetController();
|
|
||||||
|
|
||||||
|
// aggiorno stato
|
||||||
|
currProj.IsNew = false;
|
||||||
|
localDbCtx.SaveChanges();
|
||||||
|
}
|
||||||
return coreConv(currProj);
|
return coreConv(currProj);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -482,27 +446,29 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
|||||||
public bool Update(ProjModel updItem)
|
public bool Update(ProjModel updItem)
|
||||||
{
|
{
|
||||||
bool done = false;
|
bool done = false;
|
||||||
var item2update = dbCtx
|
using (DatabaseContext localDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
|
||||||
.ProjList
|
|
||||||
.Where(x => x.ProjId == updItem.ProjId)
|
|
||||||
.SingleOrDefault();
|
|
||||||
try
|
|
||||||
{
|
{
|
||||||
updItem.ProjDbId = item2update.ProjDbId;
|
var item2update = localDbCtx
|
||||||
// update, vers 1...
|
.ProjList
|
||||||
dbCtx.Entry(item2update).CurrentValues.SetValues(updItem);
|
.Where(x => x.ProjId == updItem.ProjId)
|
||||||
|
.SingleOrDefault();
|
||||||
|
try
|
||||||
|
{
|
||||||
|
updItem.ProjDbId = item2update.ProjDbId;
|
||||||
|
// update, vers 1...
|
||||||
|
localDbCtx.Entry(item2update).CurrentValues.SetValues(updItem);
|
||||||
|
|
||||||
//// update, vers 2
|
//// update, vers 2
|
||||||
//dbCtx.PartList.Remove(item2del);
|
//dbCtx.PartList.Remove(item2del);
|
||||||
//dbCtx.PartList.Add(updItem);
|
//dbCtx.PartList.Add(updItem);
|
||||||
|
|
||||||
// Commit changes
|
// Commit changes
|
||||||
dbCtx.SaveChanges();
|
localDbCtx.SaveChanges();
|
||||||
ResetController();
|
done = true;
|
||||||
done = true;
|
}
|
||||||
|
catch (Exception)
|
||||||
|
{ }
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
|
||||||
{ }
|
|
||||||
return done;
|
return done;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -517,78 +483,80 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
|||||||
// record del proj corrente
|
// record del proj corrente
|
||||||
var currData = FindByProjId(ProjId);
|
var currData = FindByProjId(ProjId);
|
||||||
|
|
||||||
// 2021.05.03 modifica update: esistenti le MODIFICO, nuove aggiungo, inesistenti elimino in cascata con Part
|
using (DatabaseContext localDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
|
||||||
|
|
||||||
// sel delle BTLParts del proj
|
|
||||||
List<BTLPartModel> oldBtlParts = dbCtx
|
|
||||||
.BTLPartList
|
|
||||||
.Where(x => x.ProjDbId == currData.ProjDbId)
|
|
||||||
.ToList();
|
|
||||||
|
|
||||||
// converto le BtlParts da core --> DB
|
|
||||||
List<BTLPartModel> newBtlParts = BtlPartList.Select(x => BTLPartController.ConvertFromCore(x, currData.ProjDbId)).ToList();
|
|
||||||
|
|
||||||
try
|
|
||||||
{
|
{
|
||||||
// elementi BtlPartId NON + presenti da eliminare
|
// 2021.05.03 modifica update: esistenti le MODIFICO, nuove aggiungo, inesistenti
|
||||||
List<int> bpi2rem = oldBtlParts.Select(x => x.PartId).Except(newBtlParts.Select(y => y.PartId)).ToList();
|
// elimino in cascata con Part
|
||||||
List<int> bpi2add = newBtlParts.Select(x => x.PartId).Except(oldBtlParts.Select(y => y.PartId)).ToList();
|
|
||||||
List<int> bpiExis = newBtlParts.Select(x => x.PartId).Intersect(oldBtlParts.Select(y => y.PartId)).ToList();
|
|
||||||
|
|
||||||
// aggiorno existing...
|
// sel delle BTLParts del proj
|
||||||
foreach (var currPartId in bpiExis)
|
List<BTLPartModel> oldBtlParts = localDbCtx
|
||||||
|
.BTLPartList
|
||||||
|
.Where(x => x.ProjDbId == currData.ProjDbId)
|
||||||
|
.ToList();
|
||||||
|
|
||||||
|
// converto le BtlParts da core --> DB
|
||||||
|
List<BTLPartModel> newBtlParts = BtlPartList.Select(x => BTLPartController.ConvertFromCore(x, currData.ProjDbId)).ToList();
|
||||||
|
|
||||||
|
try
|
||||||
{
|
{
|
||||||
// recupero item da aggiornare...
|
// elementi BtlPartId NON + presenti da eliminare
|
||||||
var oldItem = oldBtlParts.Where(x => x.PartId == currPartId).FirstOrDefault();
|
List<int> bpi2rem = oldBtlParts.Select(x => x.PartId).Except(newBtlParts.Select(y => y.PartId)).ToList();
|
||||||
// dati nuovo item
|
List<int> bpi2add = newBtlParts.Select(x => x.PartId).Except(oldBtlParts.Select(y => y.PartId)).ToList();
|
||||||
var newItem = newBtlParts.Where(x => x.PartId == currPartId).FirstOrDefault();
|
List<int> bpiExis = newBtlParts.Select(x => x.PartId).Intersect(oldBtlParts.Select(y => y.PartId)).ToList();
|
||||||
if (newItem != null && oldItem != null)
|
|
||||||
|
// aggiorno existing...
|
||||||
|
foreach (var currPartId in bpiExis)
|
||||||
{
|
{
|
||||||
oldItem.CALC_State = newItem.CALC_State;
|
// recupero item da aggiornare...
|
||||||
oldItem.CNT = newItem.CNT;
|
var oldItem = oldBtlParts.Where(x => x.PartId == currPartId).FirstOrDefault();
|
||||||
oldItem.DO = newItem.DO;
|
// dati nuovo item
|
||||||
oldItem.H = newItem.H;
|
var newItem = newBtlParts.Where(x => x.PartId == currPartId).FirstOrDefault();
|
||||||
oldItem.L = newItem.L;
|
if (newItem != null && oldItem != null)
|
||||||
oldItem.W = newItem.W;
|
{
|
||||||
oldItem.Material = newItem.Material;
|
oldItem.CALC_State = newItem.CALC_State;
|
||||||
oldItem.NAM = newItem.NAM;
|
oldItem.CNT = newItem.CNT;
|
||||||
oldItem.PDN = newItem.PDN;
|
oldItem.DO = newItem.DO;
|
||||||
|
oldItem.H = newItem.H;
|
||||||
|
oldItem.L = newItem.L;
|
||||||
|
oldItem.W = newItem.W;
|
||||||
|
oldItem.Material = newItem.Material;
|
||||||
|
oldItem.NAM = newItem.NAM;
|
||||||
|
oldItem.PDN = newItem.PDN;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// aggiungo le nuove part
|
||||||
|
foreach (var newPartId in bpi2add)
|
||||||
|
{
|
||||||
|
var newItem = newBtlParts.Where(x => x.PartId == newPartId).FirstOrDefault();
|
||||||
|
localDbCtx.BTLPartList.Add(newItem);
|
||||||
|
}
|
||||||
|
|
||||||
|
// elimino dal DB i non + esistenti
|
||||||
|
foreach (var oldPartId in bpi2rem)
|
||||||
|
{
|
||||||
|
// elimino parts nei MachGroup
|
||||||
|
var oldIstPartList = localDbCtx.PartList.Where(x => x.BTLPart.PartId == oldPartId).ToList();
|
||||||
|
localDbCtx.PartList.RemoveRange(oldIstPartList);
|
||||||
|
// elimino BtlParts
|
||||||
|
var oldItem = oldBtlParts.Where(x => x.PartId == oldPartId).FirstOrDefault();
|
||||||
|
localDbCtx.BTLPartList.Remove(oldItem);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
catch
|
||||||
|
{ }
|
||||||
|
|
||||||
// aggiungo le nuove part
|
// aggiorno valore isNew a false
|
||||||
foreach (var newPartId in bpi2add)
|
currData.IsNew = false;
|
||||||
{
|
|
||||||
var newItem = newBtlParts.Where(x => x.PartId == newPartId).FirstOrDefault();
|
|
||||||
dbCtx.BTLPartList.Add(newItem);
|
|
||||||
}
|
|
||||||
|
|
||||||
// elimino dal DB i non + esistenti
|
// Commit changes
|
||||||
foreach (var oldPartId in bpi2rem)
|
localDbCtx.SaveChanges();
|
||||||
{
|
|
||||||
// elimino parts nei MachGroup
|
|
||||||
var oldIstPartList = dbCtx.PartList.Where(x => x.BTLPart.PartId == oldPartId).ToList();
|
|
||||||
dbCtx.PartList.RemoveRange(oldIstPartList);
|
|
||||||
// elimino BtlParts
|
|
||||||
var oldItem = oldBtlParts.Where(x => x.PartId == oldPartId).FirstOrDefault();
|
|
||||||
dbCtx.BTLPartList.Remove(oldItem);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
catch
|
|
||||||
{ }
|
|
||||||
|
|
||||||
// aggiorno valore isNew a false
|
|
||||||
currData.IsNew = false;
|
|
||||||
|
|
||||||
// Commit changes
|
|
||||||
dbCtx.SaveChanges();
|
|
||||||
ResetController();
|
|
||||||
|
|
||||||
return currData;
|
return currData;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Update record su DB x nomeBTL, ListName, ExportDate
|
/// Update record su DB x nomeBTL, ListName, ExportDate
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="ProjId"></param>
|
/// <param name="ProjId"></param>
|
||||||
/// <param name="BTLFileName"></param>
|
/// <param name="BTLFileName"></param>
|
||||||
@@ -598,92 +566,188 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
|||||||
public Core.ProjFileM UpdateInfo(int ProjId, string BTLFileName, string ListName, DateTime DtExported, BWType PType, string Machine)
|
public Core.ProjFileM UpdateInfo(int ProjId, string BTLFileName, string ListName, DateTime DtExported, BWType PType, string Machine)
|
||||||
{
|
{
|
||||||
// cerco specifico Proj
|
// cerco specifico Proj
|
||||||
var currData = FindByProjId(ProjId);
|
ProjModel currData;
|
||||||
|
using (DatabaseContext localDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
|
||||||
// 2022.01.24: verifico UNIVOCITA' nel nome del file: SE fosse duplicato --> nuovo nome, nel formato nomeOriginale_idx, dove idx è il contatore libero successivo
|
|
||||||
var duplicateList = FindByBtlFileName(BTLFileName);
|
|
||||||
// devo verificare SOLO SE la lista non è vuota
|
|
||||||
if (duplicateList != null && duplicateList.Count > 0)
|
|
||||||
{
|
{
|
||||||
// se ne ho esattamente 1 nel DB allora DEVE essere il record Parent
|
currData = localDbCtx
|
||||||
if (duplicateList.Count == 1)
|
.ProjList
|
||||||
|
.Where(x => x.ProjId == ProjId)
|
||||||
|
.SingleOrDefault();
|
||||||
|
|
||||||
|
// 2022.01.24: verifico UNIVOCITA' nel nome del file: SE fosse duplicato --> nuovo
|
||||||
|
// nome, nel formato nomeOriginale_idx, dove idx è il contatore libero successivo
|
||||||
|
var duplicateList = FindByBtlFileName(BTLFileName);
|
||||||
|
// devo verificare SOLO SE la lista non è vuota
|
||||||
|
if (duplicateList != null && duplicateList.Count > 0)
|
||||||
{
|
{
|
||||||
// verifico se ProjId variato
|
// se ne ho esattamente 1 nel DB allora DEVE essere il record Parent
|
||||||
if (!duplicateList[0].ProjId.Equals(currData.ProjId))
|
if (duplicateList.Count == 1)
|
||||||
{
|
{
|
||||||
// in questo caso ho il PRIMO duplicato
|
// verifico se ProjId variato
|
||||||
BTLFileName = $"{BTLFileName}_1";
|
if (!duplicateList[0].ProjId.Equals(currData.ProjId))
|
||||||
}
|
{
|
||||||
}
|
// in questo caso ho il PRIMO duplicato
|
||||||
// se ne ho + di 1 --> so che il maxId interno avrò il valore ULTIMO x prendere il successivo
|
BTLFileName = $"{BTLFileName}_1";
|
||||||
else
|
}
|
||||||
{
|
}
|
||||||
var lastRec = duplicateList.OrderByDescending(x => x.ProjDbId).FirstOrDefault();
|
// se ne ho + di 1 --> so che il maxId interno avrò il valore ULTIMO x prendere
|
||||||
// cerco indice
|
// il successivo
|
||||||
string maybeNumber = lastRec.BTLFileName.Replace($"{BTLFileName}_", "");
|
else
|
||||||
int index = 0;
|
{
|
||||||
bool isNumber = int.TryParse(maybeNumber, out index);
|
var lastRec = duplicateList.OrderByDescending(x => x.ProjDbId).FirstOrDefault();
|
||||||
// fasccio comunque verifica sia numerico
|
// cerco indice
|
||||||
if (isNumber)
|
string maybeNumber = lastRec.BTLFileName.Replace($"{BTLFileName}_", "");
|
||||||
{
|
int index = 0;
|
||||||
// in questo caso ho il l'ULTIMO duplicato e faccio +1
|
bool isNumber = int.TryParse(maybeNumber, out index);
|
||||||
BTLFileName = $"{BTLFileName}_{index + 1}";
|
// fasccio comunque verifica sia numerico
|
||||||
|
if (isNumber)
|
||||||
|
{
|
||||||
|
// in questo caso ho il l'ULTIMO duplicato e faccio +1
|
||||||
|
BTLFileName = $"{BTLFileName}_{index + 1}";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// aggiorno valore BTL
|
||||||
|
currData.BTLFileName = BTLFileName;
|
||||||
|
currData.DtExported = DtExported;
|
||||||
|
currData.ListName = ListName;
|
||||||
|
currData.PType = PType;
|
||||||
|
currData.Machine = Machine;
|
||||||
|
|
||||||
|
// Commit changes
|
||||||
|
localDbCtx.SaveChanges();
|
||||||
}
|
}
|
||||||
|
|
||||||
// aggiorno valore BTL
|
|
||||||
currData.BTLFileName = BTLFileName;
|
|
||||||
currData.DtExported = DtExported;
|
|
||||||
currData.ListName = ListName;
|
|
||||||
currData.PType = PType;
|
|
||||||
currData.Machine = Machine;
|
|
||||||
|
|
||||||
// Commit changes
|
|
||||||
dbCtx.SaveChanges();
|
|
||||||
ResetController();
|
|
||||||
|
|
||||||
return coreConv(currData);
|
return coreConv(currData);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Update record su DB x nomeBTL, ListName, ExportDate
|
/// Update record su DB x nomeBTL, ListName, ExportDate
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="ProjId"></param>
|
/// <param name="ProjId"></param>
|
||||||
/// <param name="ListName"></param>
|
/// <param name="ListName"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public Core.ProjFileM UpdateListName(int ProjId, string ListName)
|
public Core.ProjFileM UpdateListName(int ProjId, string ListName)
|
||||||
{
|
{
|
||||||
var currData = FindByProjId(ProjId);
|
ProjModel currData;
|
||||||
// aggiorno valore BTL
|
using (DatabaseContext localDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
|
||||||
currData.ListName = ListName;
|
{
|
||||||
|
currData = localDbCtx
|
||||||
// Commit changes
|
.ProjList
|
||||||
dbCtx.SaveChanges();
|
.Where(x => x.ProjId == ProjId)
|
||||||
ResetController();
|
.SingleOrDefault();
|
||||||
|
// aggiorno valore BTL
|
||||||
|
currData.ListName = ListName;
|
||||||
|
|
||||||
|
// Commit changes
|
||||||
|
localDbCtx.SaveChanges();
|
||||||
|
}
|
||||||
return coreConv(currData);
|
return coreConv(currData);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Update record su DB x PType
|
/// Update record su DB x PType
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="ProjId"></param>
|
/// <param name="ProjId"></param>
|
||||||
/// <param name="Machine"></param>
|
/// <param name="Machine"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public Core.ProjFileM UpdateMachine(int ProjId, String Machine)
|
public Core.ProjFileM UpdateMachine(int ProjId, String Machine)
|
||||||
{
|
{
|
||||||
var currData = FindByProjId(ProjId);
|
ProjModel currData;
|
||||||
// aggiorno valore BTL
|
using (DatabaseContext localDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
|
||||||
currData.Machine = Machine;
|
{
|
||||||
|
currData = localDbCtx
|
||||||
// Commit changes
|
.ProjList
|
||||||
dbCtx.SaveChanges();
|
.Where(x => x.ProjId == ProjId)
|
||||||
ResetController();
|
.SingleOrDefault();
|
||||||
|
// aggiorno valore BTL
|
||||||
|
currData.Machine = Machine;
|
||||||
|
|
||||||
|
// Commit changes
|
||||||
|
localDbCtx.SaveChanges();
|
||||||
|
}
|
||||||
return coreConv(currData);
|
return coreConv(currData);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion Public Methods
|
#endregion Public Methods
|
||||||
|
|
||||||
|
#region Protected Methods
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Helper conversione modelli
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="currProj"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
protected Core.ProjFileM coreConv(ProjModel currProj)
|
||||||
|
{
|
||||||
|
Core.ProjFileM answ = null;
|
||||||
|
if (currProj != null)
|
||||||
|
{
|
||||||
|
answ = Core.ProjFileM.CreateProjFileM(currProj.ProjId, ProdIdByProdDbId(currProj.ProdDbId), currProj.DtCreated, currProj.DtExported, currProj.ListName, currProj.BTLFileName, currProj.IsNew, currProj.Locked, currProj.PType, currProj.Machine);
|
||||||
|
}
|
||||||
|
return answ;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Get LAST paginated data from DB (DESC ordered)
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="numRecord"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
protected List<ProjModel> GetLastDbModelDesc(int numRecord)
|
||||||
|
{
|
||||||
|
// se numRecord = 0 --> passo tutti
|
||||||
|
using (DatabaseContext localDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
|
||||||
|
{
|
||||||
|
if (numRecord == 0)
|
||||||
|
{
|
||||||
|
numRecord = localDbCtx.ProjList.Count();
|
||||||
|
}
|
||||||
|
// retrieve
|
||||||
|
return localDbCtx
|
||||||
|
.ProjList
|
||||||
|
.OrderByDescending(x => x.ProjId)
|
||||||
|
.Take(numRecord)
|
||||||
|
.ToList();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Get ProdId by ProdDbId, 0 se non trovato
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="ProdDbId"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
protected int ProdIdByProdDbId(int? ProdDbId)
|
||||||
|
{
|
||||||
|
int answ = 0;
|
||||||
|
|
||||||
|
using (DatabaseContext localDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
|
||||||
|
{
|
||||||
|
if (ProdDbId != null)
|
||||||
|
{
|
||||||
|
var prodRecord = localDbCtx
|
||||||
|
.ProdList
|
||||||
|
.Where(x => x.ProdDbId == ProdDbId)
|
||||||
|
.SingleOrDefault();
|
||||||
|
|
||||||
|
if (prodRecord != null)
|
||||||
|
{
|
||||||
|
answ = prodRecord.ProdId;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return answ;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion Protected Methods
|
||||||
|
|
||||||
|
#region Private Fields
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Istanza logger
|
||||||
|
/// </summary>
|
||||||
|
private NLog.Logger Log = LogManager.GetCurrentClassLogger();
|
||||||
|
|
||||||
|
#endregion Private Fields
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,4 +1,5 @@
|
|||||||
using EgtBEAMWALL.DataLayer.DatabaseModels;
|
using EgtBEAMWALL.DataLayer.DatabaseModels;
|
||||||
|
using NLog;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
@@ -7,12 +8,6 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
|||||||
{
|
{
|
||||||
public class StatusMapController : IDisposable
|
public class StatusMapController : IDisposable
|
||||||
{
|
{
|
||||||
#region Private Fields
|
|
||||||
|
|
||||||
private DatabaseContext dbCtx;
|
|
||||||
|
|
||||||
#endregion Private Fields
|
|
||||||
|
|
||||||
#region Public Fields
|
#region Public Fields
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -26,8 +21,6 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
|||||||
|
|
||||||
public StatusMapController()
|
public StatusMapController()
|
||||||
{
|
{
|
||||||
// Initialize database context
|
|
||||||
dbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion Public Constructors
|
#endregion Public Constructors
|
||||||
@@ -37,7 +30,7 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Elimina i dati di una sessione (SupervisorId) precedente
|
/// Elimina i dati di una sessione (SupervisorId) precedente
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="Session">Se vuoto --> tutti</param>
|
/// <param name="Session">Se vuoto --> tutti</param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public bool DeleteSession(string Session)
|
public bool DeleteSession(string Session)
|
||||||
{
|
{
|
||||||
@@ -45,41 +38,42 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
|||||||
DateTime adesso = DateTime.Now;
|
DateTime adesso = DateTime.Now;
|
||||||
List<StatusMapModel> SM2Del = new List<StatusMapModel>();
|
List<StatusMapModel> SM2Del = new List<StatusMapModel>();
|
||||||
|
|
||||||
// svuoto la tab mappa precedente (da rivalutare in futuro)
|
using (DatabaseContext localDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
|
||||||
if (string.IsNullOrEmpty(Session))
|
|
||||||
{
|
{
|
||||||
SM2Del = dbCtx
|
// svuoto la tab mappa precedente (da rivalutare in futuro)
|
||||||
.StatusMapList
|
if (string.IsNullOrEmpty(Session))
|
||||||
.ToList();
|
{
|
||||||
|
SM2Del = localDbCtx
|
||||||
|
.StatusMapList
|
||||||
|
.ToList();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
SM2Del = localDbCtx
|
||||||
|
.StatusMapList
|
||||||
|
.Where(x => x.Session == Session)
|
||||||
|
.ToList();
|
||||||
|
}
|
||||||
|
try
|
||||||
|
{
|
||||||
|
// Remove to database
|
||||||
|
localDbCtx.StatusMapList.RemoveRange(SM2Del);
|
||||||
|
// Commit changes
|
||||||
|
localDbCtx.SaveChanges();
|
||||||
|
done = true;
|
||||||
|
}
|
||||||
|
catch (Exception exc)
|
||||||
|
{
|
||||||
|
string errMessage = $"EXCEPTION on StatusMap.DeleteSession: {Environment.NewLine}{exc}";
|
||||||
|
Console.WriteLine(errMessage);
|
||||||
|
Log.Error(errMessage);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
SM2Del = dbCtx
|
|
||||||
.StatusMapList
|
|
||||||
.Where(x => x.Session == Session)
|
|
||||||
.ToList();
|
|
||||||
}
|
|
||||||
try
|
|
||||||
{
|
|
||||||
// Remove to database
|
|
||||||
dbCtx.StatusMapList.RemoveRange(SM2Del);
|
|
||||||
// Commit changes
|
|
||||||
dbCtx.SaveChanges();
|
|
||||||
ResetController();
|
|
||||||
done = true;
|
|
||||||
}
|
|
||||||
catch (Exception exc)
|
|
||||||
{
|
|
||||||
Console.WriteLine($"EXCEPTION on DeleteSession: {exc}");
|
|
||||||
}
|
|
||||||
|
|
||||||
return done;
|
return done;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Dispose()
|
public void Dispose()
|
||||||
{
|
{
|
||||||
// Clear database context
|
|
||||||
dbCtx.Dispose();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -87,44 +81,51 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="Session"></param>
|
/// <param name="Session"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public List<StatusMapModel> GetBySession(string Session = "")
|
public List<StatusMapModel> GetBySession(string Session)
|
||||||
{
|
{
|
||||||
// retrieve
|
using (DatabaseContext localDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
|
||||||
return dbCtx
|
{
|
||||||
|
// retrieve
|
||||||
|
return localDbCtx
|
||||||
.StatusMapList
|
.StatusMapList
|
||||||
.Where(x => x.Session == Session)
|
.Where(x => x.Session == Session)
|
||||||
.OrderByDescending(x => x.Index)
|
.OrderByDescending(x => x.Index)
|
||||||
.ToList();
|
.ToList();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Get data for session where Index > minIndex ordered by index DESC
|
/// Get data for session where Index > minIndex ordered by index DESC
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
/// <param name="Session"></param>
|
||||||
/// <param name="minIndex"></param>
|
/// <param name="minIndex"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public List<StatusMapModel> GetFrom(int minIndex = 0)
|
public List<StatusMapModel> GetFrom(string Session, int minIndex = 0)
|
||||||
{
|
{
|
||||||
ResetController();
|
using (DatabaseContext localDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
|
||||||
// retrieve
|
{
|
||||||
return dbCtx
|
// retrieve
|
||||||
|
return localDbCtx
|
||||||
.StatusMapList
|
.StatusMapList
|
||||||
.Where(x => x.Index >= minIndex)
|
.Where(x => x.Session == Session && x.Index >= minIndex)
|
||||||
.OrderBy(x => x.Index)
|
.OrderBy(x => x.Index)
|
||||||
.ToList();
|
.ToList();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Get PROD data for session
|
/// Get PROD (all)
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
/// <param name="Session"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public List<StatusMapModel> GetProd()
|
public List<StatusMapModel> GetProd()
|
||||||
{
|
{
|
||||||
List<StatusMapModel> answ = new List<StatusMapModel>();
|
List<StatusMapModel> answ = new List<StatusMapModel>();
|
||||||
// Initialize database context
|
// Initialize database context
|
||||||
using (DatabaseContext myDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
|
using (DatabaseContext localDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
|
||||||
{
|
{
|
||||||
// retrieve
|
// retrieve
|
||||||
answ = myDbCtx
|
answ = localDbCtx
|
||||||
.StatusMapList
|
.StatusMapList
|
||||||
.Where(x => x.ItemType == Core.StatusMapItemType.Prod)
|
.Where(x => x.ItemType == Core.StatusMapItemType.Prod)
|
||||||
.OrderByDescending(x => x.Index)
|
.OrderByDescending(x => x.Index)
|
||||||
@@ -134,12 +135,24 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Reinizializzaizone del controller
|
/// Get PROD for session
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public void ResetController()
|
/// <param name="Session"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public List<StatusMapModel> GetProd(string Session)
|
||||||
{
|
{
|
||||||
// Re-Initialize database context
|
List<StatusMapModel> answ = new List<StatusMapModel>();
|
||||||
dbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING);
|
// Initialize database context
|
||||||
|
using (DatabaseContext localDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
|
||||||
|
{
|
||||||
|
// retrieve
|
||||||
|
answ = localDbCtx
|
||||||
|
.StatusMapList
|
||||||
|
.Where(x => x.Session == Session && x.ItemType == Core.StatusMapItemType.Prod)
|
||||||
|
.OrderByDescending(x => x.Index)
|
||||||
|
.ToList();
|
||||||
|
}
|
||||||
|
return answ;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -163,22 +176,25 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
|||||||
done = false;
|
done = false;
|
||||||
// inserisco dato prod
|
// inserisco dato prod
|
||||||
StatusMapModel prodSMRecord = new StatusMapModel() { Session = SupervisorId, Index = 0, ItemId = ProdId, ItemType = Core.StatusMapItemType.Prod, Operation = Core.StatusMapOpType.Startup, DtEvent = adesso, Val = "" };
|
StatusMapModel prodSMRecord = new StatusMapModel() { Session = SupervisorId, Index = 0, ItemId = ProdId, ItemType = Core.StatusMapItemType.Prod, Operation = Core.StatusMapOpType.Startup, DtEvent = adesso, Val = "" };
|
||||||
// aggiungo
|
// Initialize database context
|
||||||
dbCtx.StatusMapList.Add(prodSMRecord);
|
using (DatabaseContext localDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
|
||||||
|
{
|
||||||
|
// aggiungo
|
||||||
|
localDbCtx.StatusMapList.Add(prodSMRecord);
|
||||||
|
|
||||||
// recupero MachGroup da PROD
|
// recupero MachGroup da PROD
|
||||||
var MGList = dbCtx
|
var MGList = localDbCtx
|
||||||
.MachGroupList
|
.MachGroupList
|
||||||
.Where(x => x.Prod.ProdId == ProdId)
|
.Where(x => x.Prod.ProdId == ProdId)
|
||||||
.ToList();
|
.ToList();
|
||||||
|
|
||||||
var mgSMRecords = MGList.Select(x => new StatusMapModel() { Session = SupervisorId, Index = 0, ItemId = x.MachGroupId, ItemType = Core.StatusMapItemType.MachGroup, Operation = Core.StatusMapOpType.Startup, DtEvent = adesso, Val = "" }).ToList();
|
var mgSMRecords = MGList.Select(x => new StatusMapModel() { Session = SupervisorId, Index = 0, ItemId = x.MachGroupId, ItemType = Core.StatusMapItemType.MachGroup, Operation = Core.StatusMapOpType.Startup, DtEvent = adesso, Val = "" }).ToList();
|
||||||
// aggiungo
|
// aggiungo
|
||||||
dbCtx.StatusMapList.AddRange(mgSMRecords);
|
localDbCtx.StatusMapList.AddRange(mgSMRecords);
|
||||||
|
|
||||||
// salvo
|
// salvo
|
||||||
dbCtx.SaveChanges();
|
localDbCtx.SaveChanges();
|
||||||
ResetController();
|
}
|
||||||
done = true;
|
done = true;
|
||||||
}
|
}
|
||||||
return done;
|
return done;
|
||||||
@@ -194,56 +210,70 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
|||||||
/// <param name="Operation"></param>
|
/// <param name="Operation"></param>
|
||||||
/// <param name="Value"></param>
|
/// <param name="Value"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public bool UpdateAction(String Session, int ProdId, int ItemId, Core.StatusMapItemType ItemType, Core.StatusMapOpType Operation, string Value)
|
public bool UpdateAction(string Session, int ProdId, int ItemId, Core.StatusMapItemType ItemType, Core.StatusMapOpType Operation, string Value)
|
||||||
{
|
{
|
||||||
bool fatto = false;
|
bool fatto = false;
|
||||||
// Recupero il record PROD (che è ultimo indice)
|
// Recupero il record PROD (che è ultimo indice)
|
||||||
StatusMapModel prodData = new StatusMapModel();
|
StatusMapModel prodData = new StatusMapModel();
|
||||||
// se è un prod --> vado x ID
|
// Initialize database context
|
||||||
if (Session == "")
|
using (DatabaseContext localDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
|
||||||
{
|
{
|
||||||
prodData = dbCtx
|
// se è un prod --> vado x ID
|
||||||
.StatusMapList
|
if (Session == "")
|
||||||
.Where(x => x.ItemType == Core.StatusMapItemType.Prod && x.ItemId == ProdId)
|
|
||||||
.FirstOrDefault();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
prodData = dbCtx
|
|
||||||
.StatusMapList
|
|
||||||
.Where(x => x.ItemType == Core.StatusMapItemType.Prod && x.Session == Session)
|
|
||||||
.FirstOrDefault();
|
|
||||||
}
|
|
||||||
// se ho trovato
|
|
||||||
if (prodData != null)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
{
|
||||||
// aggiorno indice PROD
|
prodData = localDbCtx
|
||||||
prodData.Index++;
|
.StatusMapList
|
||||||
// se session è nulla ma ho un PROD --> calcolo da li la sessione
|
.Where(x => x.ItemType == Core.StatusMapItemType.Prod && x.ItemId == ProdId)
|
||||||
if (string.IsNullOrEmpty(Session))
|
.FirstOrDefault();
|
||||||
{
|
|
||||||
Session = prodData.Session;
|
|
||||||
}
|
|
||||||
// creo un nuovo record
|
|
||||||
DateTime adesso = DateTime.Now;
|
|
||||||
var newRec = new StatusMapModel() { Session = Session, Index = prodData.Index, ItemId = ItemId, ItemType = ItemType, Operation = Operation, DtEvent = adesso, Val = Value };
|
|
||||||
dbCtx.StatusMapList.Add(newRec);
|
|
||||||
|
|
||||||
// Commit changes
|
|
||||||
dbCtx.SaveChanges();
|
|
||||||
ResetController();
|
|
||||||
fatto = true;
|
|
||||||
}
|
}
|
||||||
catch (Exception exc)
|
else
|
||||||
{
|
{
|
||||||
Console.WriteLine($"EXCEPTION on UpdateAction: {exc}");
|
prodData = localDbCtx
|
||||||
|
.StatusMapList
|
||||||
|
.Where(x => x.ItemType == Core.StatusMapItemType.Prod && x.Session == Session)
|
||||||
|
.FirstOrDefault();
|
||||||
|
}
|
||||||
|
// se ho trovato
|
||||||
|
if (prodData != null)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
// aggiorno indice PROD
|
||||||
|
prodData.Index++;
|
||||||
|
// se session è nulla ma ho un PROD --> calcolo da li la sessione
|
||||||
|
if (string.IsNullOrEmpty(Session))
|
||||||
|
{
|
||||||
|
Session = prodData.Session;
|
||||||
|
}
|
||||||
|
// creo un nuovo record
|
||||||
|
DateTime adesso = DateTime.Now;
|
||||||
|
var newRec = new StatusMapModel() { Session = Session, Index = prodData.Index, ItemId = ItemId, ItemType = ItemType, Operation = Operation, DtEvent = adesso, Val = Value };
|
||||||
|
localDbCtx.StatusMapList.Add(newRec);
|
||||||
|
|
||||||
|
// Commit changes
|
||||||
|
localDbCtx.SaveChanges();
|
||||||
|
fatto = true;
|
||||||
|
}
|
||||||
|
catch (Exception exc)
|
||||||
|
{
|
||||||
|
string errMessage = $"EXCEPTION on StatusMap.UpdateAction: {Environment.NewLine}{exc}";
|
||||||
|
Console.WriteLine(errMessage);
|
||||||
|
Log.Error(errMessage);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return fatto;
|
return fatto;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion Public Methods
|
#endregion Public Methods
|
||||||
|
|
||||||
|
#region Private Fields
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Istanza logger
|
||||||
|
/// </summary>
|
||||||
|
private NLog.Logger Log = LogManager.GetCurrentClassLogger();
|
||||||
|
|
||||||
|
#endregion Private Fields
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,15 +1,9 @@
|
|||||||
using System;
|
using EgtBEAMWALL.DataLayer.DatabaseModels;
|
||||||
using System.Collections.Generic;
|
using MySql.Data.EntityFramework;
|
||||||
|
using System;
|
||||||
using System.Data.Entity;
|
using System.Data.Entity;
|
||||||
using System.Data.Entity.Migrations;
|
|
||||||
using MySql.Data.Entity;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using EgtBEAMWALL.DataLayer.DatabaseModels;
|
|
||||||
using EgtBEAMWALL.DataLayer.Migrations;
|
|
||||||
using System.ServiceProcess;
|
|
||||||
using System.IO;
|
|
||||||
using System.Data.Entity.Infrastructure;
|
using System.Data.Entity.Infrastructure;
|
||||||
|
using System.IO;
|
||||||
|
|
||||||
namespace EgtBEAMWALL.DataLayer
|
namespace EgtBEAMWALL.DataLayer
|
||||||
{
|
{
|
||||||
@@ -33,15 +27,13 @@ namespace EgtBEAMWALL.DataLayer
|
|||||||
#region Public Constructors
|
#region Public Constructors
|
||||||
|
|
||||||
[Obsolete("This constructor should never be used directly, and is only needed to generate entityframework stuff. Connection string can be adapted as pleased.")]
|
[Obsolete("This constructor should never be used directly, and is only needed to generate entityframework stuff. Connection string can be adapted as pleased.")]
|
||||||
public DatabaseContext() : base("DefaultConnection")
|
public DatabaseContext() : base(DbConfig.CONNECTION_STRING)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
public DatabaseContext(string connectionString) : base(connectionString)
|
public DatabaseContext(string connectionString) : base(connectionString)
|
||||||
{
|
{
|
||||||
//Database.CreateIfNotExists();
|
Database.CreateIfNotExists();
|
||||||
////Database.SetInitializer(new MigrateDatabaseToLatestVersion<StratonLocalizerDatabase, Migrations.Configuration>());
|
|
||||||
//Database.Initialize(false);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion Public Constructors
|
#endregion Public Constructors
|
||||||
@@ -90,24 +82,6 @@ namespace EgtBEAMWALL.DataLayer
|
|||||||
|
|
||||||
#endregion Public Properties
|
#endregion Public Properties
|
||||||
|
|
||||||
#region Private Methods
|
|
||||||
|
|
||||||
private static string getDbServiceName()
|
|
||||||
{
|
|
||||||
ServiceController[] services = ServiceController.GetServices();
|
|
||||||
var service = services.FirstOrDefault(s => s.ServiceName == "MariaDB");
|
|
||||||
if (service != null)
|
|
||||||
return service.DisplayName;
|
|
||||||
|
|
||||||
service = services.FirstOrDefault(s => s.ServiceName == "MySQL");
|
|
||||||
if (service != null)
|
|
||||||
return service.DisplayName;
|
|
||||||
|
|
||||||
return "";
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion Private Methods
|
|
||||||
|
|
||||||
#region Public Methods
|
#region Public Methods
|
||||||
|
|
||||||
public static DatabaseContext Create()
|
public static DatabaseContext Create()
|
||||||
@@ -115,44 +89,6 @@ namespace EgtBEAMWALL.DataLayer
|
|||||||
return new DatabaseContext(DbConfig.CONNECTION_STRING);
|
return new DatabaseContext(DbConfig.CONNECTION_STRING);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static bool SetUpDbConnectionAndDbConfig()
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
String serviceName = getDbServiceName();
|
|
||||||
if (serviceName.Equals(""))
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
ServiceController service = new ServiceController(serviceName);
|
|
||||||
try
|
|
||||||
{
|
|
||||||
TimeSpan timeout = TimeSpan.FromSeconds(DbConfig.DATABASE_PROCESS_TIMEOUT);
|
|
||||||
service.WaitForStatus(ServiceControllerStatus.Running, timeout);
|
|
||||||
}
|
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
System.Data.Entity.Database.SetInitializer<DatabaseContext>(null);
|
|
||||||
var migrator = new DbMigrator(new Configuration());
|
|
||||||
|
|
||||||
if (migrator.GetPendingMigrations().Any())
|
|
||||||
{
|
|
||||||
// Run migrations and seed.
|
|
||||||
migrator.Update();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion Public Methods
|
#endregion Public Methods
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -98,12 +98,5 @@ namespace EgtBEAMWALL.DataLayer.DatabaseModels
|
|||||||
|
|
||||||
#endregion Public Properties
|
#endregion Public Properties
|
||||||
|
|
||||||
#if false
|
|
||||||
/// <summary>
|
|
||||||
/// MachineId del BTL
|
|
||||||
/// </summary>
|
|
||||||
[Column("MachineId")]
|
|
||||||
public string MachineId { get; set; } = "";
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -32,11 +32,23 @@ namespace EgtBEAMWALL.DataLayer.DatabaseModels
|
|||||||
public bool IsNew { get; set; } = true;
|
public bool IsNew { get; set; } = true;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Stato locked (quando aperto da un dispositivo in rete)
|
/// Stato locked, quando aperto da un dispositivo in rete
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Column("Lock")]
|
[Column("Lock")]
|
||||||
public bool Locked { get; set; } = false;
|
public bool Locked { get; set; } = false;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// ID utente che ha bloccato (NumKey), quando aperto da un dispositivo in rete
|
||||||
|
/// </summary>
|
||||||
|
[Column("LockedBy")]
|
||||||
|
public string LockedBy { get; set; } = "";
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// DataOra ultima operazione di Lock (o di rimozione di lock), quando aperto da un dispositivo in rete
|
||||||
|
/// </summary>
|
||||||
|
[Column("LockDate")]
|
||||||
|
public DateTime LockDate { get; set; } = DateTime.MinValue;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Macchina
|
/// Macchina
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -49,6 +49,18 @@ namespace EgtBEAMWALL.DataLayer.DatabaseModels
|
|||||||
[Column("Lock")]
|
[Column("Lock")]
|
||||||
public bool Locked { get; set; } = false;
|
public bool Locked { get; set; } = false;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// ID utente che ha bloccato (NumKey), quando aperto da un dispositivo in rete
|
||||||
|
/// </summary>
|
||||||
|
[Column("LockedBy")]
|
||||||
|
public string LockedBy { get; set; } = "";
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// DataOra ultima operazione di Lock (o di rimozione di lock), quando aperto da un dispositivo in rete
|
||||||
|
/// </summary>
|
||||||
|
[Column("LockDate")]
|
||||||
|
public DateTime LockDate { get; set; } = DateTime.MinValue;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Macchina
|
/// Macchina
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -1,7 +1,5 @@
|
|||||||
using System;
|
using System.IO;
|
||||||
using System.Collections.Generic;
|
using System.Reflection;
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
|
|
||||||
namespace EgtBEAMWALL.DataLayer
|
namespace EgtBEAMWALL.DataLayer
|
||||||
{
|
{
|
||||||
@@ -37,24 +35,28 @@ namespace EgtBEAMWALL.DataLayer
|
|||||||
|
|
||||||
#region Public Methods
|
#region Public Methods
|
||||||
|
|
||||||
#if false
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Metodo di init standard per DB locale
|
/// Effettua migrazione esplicita del DB
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="server">Indirizzo del server (tipicamente localhost/127.0.0.1)</param>
|
/// <returns></returns>
|
||||||
/// <param name="nKey">Numero chiave</param>
|
public static bool CheckMigrateDb()
|
||||||
/// <param name="sKey">Codice/pwd associato a chaive</param>
|
|
||||||
public static void InitDb(string server, string nKey, string sKey)
|
|
||||||
{
|
{
|
||||||
DATABASE_SERV = server;
|
// esecuzione script di migrations del DB
|
||||||
DATABASE_NAME = $"EgtBwDb_{nKey}";
|
return Controllers.DbController.man.checkMigrateDb();
|
||||||
DATABASE_USER = $"user_{nKey}";
|
}
|
||||||
DATABASE_PWD = $"pwd_{sKey}";
|
|
||||||
CONNECTION_STRING = $"server={DATABASE_SERV};port=3306;database={DATABASE_NAME};uid={DATABASE_USER};pwd={DATABASE_PWD};sslmode=None";
|
/// <summary>
|
||||||
// stringa admin con utente root egalware...
|
/// Effettua verifica presenza utente
|
||||||
ADMIN_CONNECTION_STRING = $"server={DATABASE_SERV};port=3306;database=mysql;uid=root;pwd=Egalware_24068!;sslmode=None;CHARSET=utf8";
|
/// </summary>
|
||||||
|
/// <param name="nKey"></param>
|
||||||
|
/// <param name="sKey"></param>
|
||||||
|
/// <param name="isNetwork"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public static bool CheckUser(string nKey, string sKey, bool isNetwork)
|
||||||
|
{
|
||||||
|
// esecuzione script di install locale
|
||||||
|
return Controllers.DbController.man.checkCreateUser(DATABASE_USER, DATABASE_PWD, isNetwork);
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Metodo di init standard per DB in rete con Master_Key
|
/// Metodo di init standard per DB in rete con Master_Key
|
||||||
@@ -71,15 +73,27 @@ namespace EgtBEAMWALL.DataLayer
|
|||||||
DATABASE_NAME = $"EgtBwDb_{masterKey}";
|
DATABASE_NAME = $"EgtBwDb_{masterKey}";
|
||||||
DATABASE_USER = $"user_{nKey}";
|
DATABASE_USER = $"user_{nKey}";
|
||||||
DATABASE_PWD = $"pwd_{sKey}";
|
DATABASE_PWD = $"pwd_{sKey}";
|
||||||
CONNECTION_STRING = $"server={DATABASE_SERV};port=3306;database={DATABASE_NAME};uid={DATABASE_USER};pwd={DATABASE_PWD};sslmode=None";
|
CONNECTION_STRING = $"server={DATABASE_SERV};port=3306;database={DATABASE_NAME};uid={DATABASE_USER};pwd={DATABASE_PWD};SslMode=None";
|
||||||
// stringa admin con utente root egalware...
|
// stringa admin con utente root egalware...
|
||||||
ADMIN_CONNECTION_STRING = $"server={DATABASE_SERV};port=3306;database=mysql;uid=root;pwd=Egalware_24068!;sslmode=None;CHARSET=utf8";
|
ADMIN_CONNECTION_STRING = $"server={DATABASE_SERV};port=3306;database=mysql;uid=root;pwd=Egalware_24068!;SslMode=none;CHARSET=utf8";
|
||||||
}
|
}
|
||||||
|
|
||||||
public static bool CheckUser(string nKey, string sKey, bool isNetwork)
|
/// <summary>
|
||||||
|
/// Aggiorna conf NLog x target DIR
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="logDir"></param>
|
||||||
|
public static void SetupLogDir(string logDir)
|
||||||
{
|
{
|
||||||
// esecuzione script di install locale
|
string appDir = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
|
||||||
return Controllers.DbController.man.checkCreateUser(DATABASE_USER, DATABASE_PWD, isNetwork);
|
string filePath = Path.Combine(appDir, "NLog.config");
|
||||||
|
// leggo il file NLog
|
||||||
|
string rawData = File.ReadAllText(filePath);
|
||||||
|
|
||||||
|
// sostituzione livello minimo da selezione
|
||||||
|
rawData = rawData.Replace("${basedir}", logDir);
|
||||||
|
|
||||||
|
// ri-scrivo file NLog
|
||||||
|
File.WriteAllText(filePath, rawData);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion Public Methods
|
#endregion Public Methods
|
||||||
|
|||||||
@@ -37,8 +37,11 @@
|
|||||||
<Prefer32Bit>false</Prefer32Bit>
|
<Prefer32Bit>false</Prefer32Bit>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
<Reference Include="BouncyCastle.Crypto, Version=1.8.5.0, Culture=neutral, PublicKeyToken=0e99375e54769942">
|
||||||
|
<HintPath>..\packages\BouncyCastle.1.8.5\lib\BouncyCastle.Crypto.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
<Reference Include="EgtWPFLib5">
|
<Reference Include="EgtWPFLib5">
|
||||||
<HintPath>..\..\..\EgtProg\DllD32\EgtWPFLib5.dll</HintPath>
|
<HintPath>..\ExtLibs\EgtWPFLib5.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
|
<Reference Include="EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\EntityFramework.6.4.4\lib\net45\EntityFramework.dll</HintPath>
|
<HintPath>..\packages\EntityFramework.6.4.4\lib\net45\EntityFramework.dll</HintPath>
|
||||||
@@ -46,16 +49,37 @@
|
|||||||
<Reference Include="EntityFramework.SqlServer, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
|
<Reference Include="EntityFramework.SqlServer, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\EntityFramework.6.4.4\lib\net45\EntityFramework.SqlServer.dll</HintPath>
|
<HintPath>..\packages\EntityFramework.6.4.4\lib\net45\EntityFramework.SqlServer.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="MySql.Data, Version=6.10.9.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d, processorArchitecture=MSIL">
|
<Reference Include="Google.Protobuf, Version=3.19.4.0, Culture=neutral, PublicKeyToken=a7d26565bac4d604, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\MySql.Data.6.10.9\lib\net452\MySql.Data.dll</HintPath>
|
<HintPath>..\packages\Google.Protobuf.3.19.4\lib\net45\Google.Protobuf.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="MySql.Data.Entity.EF6, Version=6.10.9.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d, processorArchitecture=MSIL">
|
<Reference Include="K4os.Compression.LZ4, Version=1.2.6.0, Culture=neutral, PublicKeyToken=2186fa9121ef231d, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\MySql.Data.Entity.6.10.9\lib\net452\MySql.Data.Entity.EF6.dll</HintPath>
|
<HintPath>..\packages\K4os.Compression.LZ4.1.2.6\lib\net46\K4os.Compression.LZ4.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="K4os.Compression.LZ4.Streams, Version=1.2.6.0, Culture=neutral, PublicKeyToken=2186fa9121ef231d, processorArchitecture=MSIL">
|
||||||
|
<HintPath>..\packages\K4os.Compression.LZ4.Streams.1.2.6\lib\net46\K4os.Compression.LZ4.Streams.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="K4os.Hash.xxHash, Version=1.0.6.0, Culture=neutral, PublicKeyToken=32cd54395057cec3, processorArchitecture=MSIL">
|
||||||
|
<HintPath>..\packages\K4os.Hash.xxHash.1.0.6\lib\net46\K4os.Hash.xxHash.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="MySql.Data, Version=8.0.21.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d, processorArchitecture=MSIL">
|
||||||
|
<HintPath>..\packages\MySql.Data.8.0.21\lib\net452\MySql.Data.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="MySql.Data.EntityFramework, Version=8.0.21.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d, processorArchitecture=MSIL">
|
||||||
|
<HintPath>..\packages\MySql.Data.EntityFramework.8.0.21\lib\net452\MySql.Data.EntityFramework.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Newtonsoft.Json, Version=13.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
|
<Reference Include="Newtonsoft.Json, Version=13.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\Newtonsoft.Json.13.0.1\lib\net45\Newtonsoft.Json.dll</HintPath>
|
<HintPath>..\packages\Newtonsoft.Json.13.0.1\lib\net45\Newtonsoft.Json.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
|
<Reference Include="NLog, Version=5.0.0.0, Culture=neutral, PublicKeyToken=5120e14c03d0593c, processorArchitecture=MSIL">
|
||||||
|
<HintPath>..\packages\NLog.5.0.1\lib\net46\NLog.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Renci.SshNet, Version=2016.1.0.0, Culture=neutral, PublicKeyToken=1cee9f8bde3db106, processorArchitecture=MSIL">
|
||||||
|
<HintPath>..\packages\SSH.NET.2016.1.0\lib\net40\Renci.SshNet.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
<Reference Include="System" />
|
<Reference Include="System" />
|
||||||
|
<Reference Include="System.Buffers, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||||
|
<HintPath>..\packages\System.Buffers.4.5.1\lib\net461\System.Buffers.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
<Reference Include="System.ComponentModel" />
|
<Reference Include="System.ComponentModel" />
|
||||||
<Reference Include="System.ComponentModel.DataAnnotations" />
|
<Reference Include="System.ComponentModel.DataAnnotations" />
|
||||||
<Reference Include="System.Configuration" />
|
<Reference Include="System.Configuration" />
|
||||||
@@ -63,7 +87,18 @@
|
|||||||
<Reference Include="System.Core" />
|
<Reference Include="System.Core" />
|
||||||
<Reference Include="System.Drawing" />
|
<Reference Include="System.Drawing" />
|
||||||
<Reference Include="System.Drawing.Design" />
|
<Reference Include="System.Drawing.Design" />
|
||||||
|
<Reference Include="System.IO.Compression" />
|
||||||
<Reference Include="System.Management" />
|
<Reference Include="System.Management" />
|
||||||
|
<Reference Include="System.Memory, Version=4.0.1.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||||
|
<HintPath>..\packages\System.Memory.4.5.4\lib\net461\System.Memory.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="System.Numerics" />
|
||||||
|
<Reference Include="System.Numerics.Vectors, Version=4.1.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||||
|
<HintPath>..\packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="System.Runtime.CompilerServices.Unsafe, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||||
|
<HintPath>..\packages\System.Runtime.CompilerServices.Unsafe.5.0.0\lib\net45\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
<Reference Include="System.Security" />
|
<Reference Include="System.Security" />
|
||||||
<Reference Include="System.ServiceModel" />
|
<Reference Include="System.ServiceModel" />
|
||||||
<Reference Include="System.ServiceProcess" />
|
<Reference Include="System.ServiceProcess" />
|
||||||
@@ -73,6 +108,12 @@
|
|||||||
<Reference Include="Microsoft.CSharp" />
|
<Reference Include="Microsoft.CSharp" />
|
||||||
<Reference Include="System.Data" />
|
<Reference Include="System.Data" />
|
||||||
<Reference Include="System.Xml" />
|
<Reference Include="System.Xml" />
|
||||||
|
<Reference Include="Ubiety.Dns.Core, Version=2.2.1.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d, processorArchitecture=MSIL">
|
||||||
|
<HintPath>..\packages\MySql.Data.8.0.21\lib\net452\Ubiety.Dns.Core.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Zstandard.Net, Version=1.1.7.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d, processorArchitecture=MSIL">
|
||||||
|
<HintPath>..\packages\MySql.Data.8.0.21\lib\net452\Zstandard.Net.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Compile Include="AdminContext.cs" />
|
<Compile Include="AdminContext.cs" />
|
||||||
@@ -121,12 +162,19 @@
|
|||||||
<Compile Include="Migrations\202109141058345_AddMachine2ProjProd.designer.cs">
|
<Compile Include="Migrations\202109141058345_AddMachine2ProjProd.designer.cs">
|
||||||
<DependentUpon>202109141058345_AddMachine2ProjProd.cs</DependentUpon>
|
<DependentUpon>202109141058345_AddMachine2ProjProd.cs</DependentUpon>
|
||||||
</Compile>
|
</Compile>
|
||||||
|
<Compile Include="Migrations\202207051703296_UpgradeLockModel.cs" />
|
||||||
|
<Compile Include="Migrations\202207051703296_UpgradeLockModel.designer.cs">
|
||||||
|
<DependentUpon>202207051703296_UpgradeLockModel.cs</DependentUpon>
|
||||||
|
</Compile>
|
||||||
<Compile Include="Migrations\Configuration.cs" />
|
<Compile Include="Migrations\Configuration.cs" />
|
||||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||||
<Compile Include="Utils.cs" />
|
<Compile Include="Utils.cs" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<None Include="App.config" />
|
<None Include="App.config" />
|
||||||
|
<None Include="NLog.config">
|
||||||
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
|
</None>
|
||||||
<None Include="packages.config" />
|
<None Include="packages.config" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
@@ -154,6 +202,9 @@
|
|||||||
<EmbeddedResource Include="Migrations\202109141058345_AddMachine2ProjProd.resx">
|
<EmbeddedResource Include="Migrations\202109141058345_AddMachine2ProjProd.resx">
|
||||||
<DependentUpon>202109141058345_AddMachine2ProjProd.cs</DependentUpon>
|
<DependentUpon>202109141058345_AddMachine2ProjProd.cs</DependentUpon>
|
||||||
</EmbeddedResource>
|
</EmbeddedResource>
|
||||||
|
<EmbeddedResource Include="Migrations\202207051703296_UpgradeLockModel.resx">
|
||||||
|
<DependentUpon>202207051703296_UpgradeLockModel.cs</DependentUpon>
|
||||||
|
</EmbeddedResource>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
|
|||||||
+29
@@ -0,0 +1,29 @@
|
|||||||
|
// <auto-generated />
|
||||||
|
namespace EgtBEAMWALL.DataLayer.Migrations
|
||||||
|
{
|
||||||
|
using System.CodeDom.Compiler;
|
||||||
|
using System.Data.Entity.Migrations;
|
||||||
|
using System.Data.Entity.Migrations.Infrastructure;
|
||||||
|
using System.Resources;
|
||||||
|
|
||||||
|
[GeneratedCode("EntityFramework.Migrations", "6.4.4")]
|
||||||
|
public sealed partial class UpgradeLockModel : IMigrationMetadata
|
||||||
|
{
|
||||||
|
private readonly ResourceManager Resources = new ResourceManager(typeof(UpgradeLockModel));
|
||||||
|
|
||||||
|
string IMigrationMetadata.Id
|
||||||
|
{
|
||||||
|
get { return "202207051703296_UpgradeLockModel"; }
|
||||||
|
}
|
||||||
|
|
||||||
|
string IMigrationMetadata.Source
|
||||||
|
{
|
||||||
|
get { return null; }
|
||||||
|
}
|
||||||
|
|
||||||
|
string IMigrationMetadata.Target
|
||||||
|
{
|
||||||
|
get { return Resources.GetString("Target"); }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
namespace EgtBEAMWALL.DataLayer.Migrations
|
||||||
|
{
|
||||||
|
using System;
|
||||||
|
using System.Data.Entity.Migrations;
|
||||||
|
|
||||||
|
public partial class UpgradeLockModel : DbMigration
|
||||||
|
{
|
||||||
|
public override void Up()
|
||||||
|
{
|
||||||
|
AddColumn("dbo.ProjList", "LockedBy", c => c.String(unicode: false, nullable: false, defaultValueSql:""));
|
||||||
|
AddColumn("dbo.ProjList", "LockDate", c => c.DateTime(nullable: false, precision: 0, defaultValueSql: "DATE('1900-01-01')"));
|
||||||
|
AddColumn("dbo.ProdList", "LockedBy", c => c.String(unicode: false, nullable: false, defaultValueSql: ""));
|
||||||
|
AddColumn("dbo.ProdList", "LockDate", c => c.DateTime(nullable: false, precision: 0, defaultValueSql: "DATE('1900-01-01')"));
|
||||||
|
//AddColumn("dbo.ProjList", "LockedBy", c => c.String(unicode: false));
|
||||||
|
//AddColumn("dbo.ProjList", "LockDate", c => c.DateTime(nullable: false, precision: 0, defaultValueSql: "DATE('1900 - 01 - 01')"));
|
||||||
|
//AddColumn("dbo.ProdList", "LockedBy", c => c.String(unicode: false));
|
||||||
|
//AddColumn("dbo.ProdList", "LockDate", c => c.DateTime(nullable: false, precision: 0, defaultValueSql: "DATE('1900 - 01 - 01')"));
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void Down()
|
||||||
|
{
|
||||||
|
DropColumn("dbo.ProdList", "LockDate");
|
||||||
|
DropColumn("dbo.ProdList", "LockedBy");
|
||||||
|
DropColumn("dbo.ProjList", "LockDate");
|
||||||
|
DropColumn("dbo.ProjList", "LockedBy");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
File diff suppressed because one or more lines are too long
@@ -1,9 +1,6 @@
|
|||||||
namespace EgtBEAMWALL.DataLayer.Migrations
|
namespace EgtBEAMWALL.DataLayer.Migrations
|
||||||
{
|
{
|
||||||
using System;
|
|
||||||
using System.Data.Entity;
|
|
||||||
using System.Data.Entity.Migrations;
|
using System.Data.Entity.Migrations;
|
||||||
using System.Linq;
|
|
||||||
|
|
||||||
internal sealed class Configuration : DbMigrationsConfiguration<EgtBEAMWALL.DataLayer.DatabaseContext>
|
internal sealed class Configuration : DbMigrationsConfiguration<EgtBEAMWALL.DataLayer.DatabaseContext>
|
||||||
{
|
{
|
||||||
@@ -12,7 +9,6 @@ namespace EgtBEAMWALL.DataLayer.Migrations
|
|||||||
public Configuration()
|
public Configuration()
|
||||||
{
|
{
|
||||||
AutomaticMigrationsEnabled = true;
|
AutomaticMigrationsEnabled = true;
|
||||||
//AutomaticMigrationsEnabled = false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion Public Constructors
|
#endregion Public Constructors
|
||||||
@@ -21,18 +17,14 @@ namespace EgtBEAMWALL.DataLayer.Migrations
|
|||||||
|
|
||||||
protected override void Seed(EgtBEAMWALL.DataLayer.DatabaseContext context)
|
protected override void Seed(EgtBEAMWALL.DataLayer.DatabaseContext context)
|
||||||
{
|
{
|
||||||
// This method will be called after migrating to the latest version.
|
// This method will be called after migrating to the latest version.
|
||||||
|
|
||||||
// You can use the DbSet<T>.AddOrUpdate() helper extension method
|
// You can use the DbSet<T>.AddOrUpdate() helper extension method to avoid creating
|
||||||
// to avoid creating duplicate seed data. E.g.
|
// duplicate seed data. E.g.
|
||||||
//
|
|
||||||
// context.People.AddOrUpdate(
|
|
||||||
// p => p.FullName,
|
|
||||||
// new Person { FullName = "Andrew Peters" },
|
|
||||||
// new Person { FullName = "Brice Lambson" },
|
|
||||||
// new Person { FullName = "Rowan Miller" }
|
|
||||||
// );
|
|
||||||
//
|
//
|
||||||
|
// context.People.AddOrUpdate( p => p.FullName, new Person { FullName = "Andrew Peters"
|
||||||
|
// }, new Person { FullName = "Brice Lambson" }, new Person { FullName = "Rowan Miller"
|
||||||
|
// } );
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion Protected Methods
|
#endregion Protected Methods
|
||||||
|
|||||||
@@ -0,0 +1,39 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
|
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:schemaLocation="http://www.nlog-project.org/schemas/NLog.xsd NLog.xsd"
|
||||||
|
autoReload="true"
|
||||||
|
throwExceptions="false"
|
||||||
|
internalLogLevel="Off" internalLogFile="c:\temp\nlog-internal.log">
|
||||||
|
|
||||||
|
<variable name="logDir" value="${basedir}"/>
|
||||||
|
<targets>
|
||||||
|
<target xsi:type="File"
|
||||||
|
name="f_base"
|
||||||
|
fileName="${logDir}/${shortdate}.log"
|
||||||
|
layout="${longdate} [${uppercase:${level}}] ${logger:shortName=true}|${message}"
|
||||||
|
archiveFileName="${logDir}/${shortdate}.{###}.log"
|
||||||
|
archiveNumbering="Sequence"
|
||||||
|
archiveAboveSize="10240000"
|
||||||
|
maxArchiveFiles="60"
|
||||||
|
enableArchiveFileCompression="false"
|
||||||
|
keepFileOpen="false"
|
||||||
|
/>
|
||||||
|
<target xsi:type="File"
|
||||||
|
name="f_error"
|
||||||
|
fileName="${logDir}/${shortdate}_err.log"
|
||||||
|
layout="${longdate} [${uppercase:${level}}] ${logger:shortName=true}|${message}${newline}${exception:format=tostring}"
|
||||||
|
archiveFileName="${logDir}/${shortdate}_err.{###}.log"
|
||||||
|
archiveNumbering="Sequence"
|
||||||
|
archiveAboveSize="10240000"
|
||||||
|
maxArchiveFiles="60"
|
||||||
|
enableArchiveFileCompression="false"
|
||||||
|
keepFileOpen="false"
|
||||||
|
/>
|
||||||
|
</targets>
|
||||||
|
<rules>
|
||||||
|
<!-- Logging Levels (Trace, Debug, Info, Warn, Error, Fatal)-->
|
||||||
|
<logger name="*" minlevel="Info" maxlevel="Warn" final="true" writeTo="f_base" />
|
||||||
|
<logger name="*" minlevel="Error" writeTo="f_error" />
|
||||||
|
</rules>
|
||||||
|
</nlog>
|
||||||
@@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
|
|||||||
// You can specify all the values or you can default the Build and Revision Numbers
|
// You can specify all the values or you can default the Build and Revision Numbers
|
||||||
// by using the '*' as shown below:
|
// by using the '*' as shown below:
|
||||||
// [assembly: AssemblyVersion("1.0.*")]
|
// [assembly: AssemblyVersion("1.0.*")]
|
||||||
[assembly: AssemblyVersion("2.4.3.2")]
|
[assembly: AssemblyVersion("2.4.7.1")]
|
||||||
[assembly: AssemblyFileVersion("2.4.3.2")]
|
[assembly: AssemblyFileVersion("2.4.7.1")]
|
||||||
|
|||||||
@@ -1,7 +1,18 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<packages>
|
<packages>
|
||||||
|
<package id="BouncyCastle" version="1.8.5" targetFramework="net472" />
|
||||||
<package id="EntityFramework" version="6.4.4" targetFramework="net452" />
|
<package id="EntityFramework" version="6.4.4" targetFramework="net452" />
|
||||||
<package id="MySql.Data" version="6.10.9" targetFramework="net452" />
|
<package id="Google.Protobuf" version="3.19.4" targetFramework="net472" />
|
||||||
<package id="MySql.Data.Entity" version="6.10.9" targetFramework="net452" />
|
<package id="K4os.Compression.LZ4" version="1.2.6" targetFramework="net472" />
|
||||||
|
<package id="K4os.Compression.LZ4.Streams" version="1.2.6" targetFramework="net472" />
|
||||||
|
<package id="K4os.Hash.xxHash" version="1.0.6" targetFramework="net472" />
|
||||||
|
<package id="MySql.Data" version="8.0.21" targetFramework="net472" />
|
||||||
|
<package id="MySql.Data.EntityFramework" version="8.0.21" targetFramework="net472" />
|
||||||
<package id="Newtonsoft.Json" version="13.0.1" targetFramework="net452" />
|
<package id="Newtonsoft.Json" version="13.0.1" targetFramework="net452" />
|
||||||
|
<package id="NLog" version="5.0.1" targetFramework="net472" />
|
||||||
|
<package id="SSH.NET" version="2016.1.0" targetFramework="net472" />
|
||||||
|
<package id="System.Buffers" version="4.5.1" targetFramework="net472" />
|
||||||
|
<package id="System.Memory" version="4.5.4" targetFramework="net472" />
|
||||||
|
<package id="System.Numerics.Vectors" version="4.5.0" targetFramework="net472" />
|
||||||
|
<package id="System.Runtime.CompilerServices.Unsafe" version="5.0.0" targetFramework="net472" />
|
||||||
</packages>
|
</packages>
|
||||||
@@ -35,8 +35,20 @@
|
|||||||
<Prefer32Bit>false</Prefer32Bit>
|
<Prefer32Bit>false</Prefer32Bit>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
<Reference Include="EgtUILib, Version=2.4.6.1, Culture=neutral, processorArchitecture=MSIL">
|
||||||
|
<HintPath>..\packages\EgtWPFLib5.2.4.7.1\lib\EgtUILib.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="EgtWPFLib, Version=2.4.5.1, Culture=neutral, processorArchitecture=MSIL">
|
||||||
|
<HintPath>..\packages\EgtWPFLib5.2.4.7.1\lib\EgtWPFLib.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="EgtWPFLib5, Version=2.4.7.1, Culture=neutral, processorArchitecture=MSIL">
|
||||||
|
<HintPath>..\packages\EgtWPFLib5.2.4.7.1\lib\EgtWPFLib5.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
<Reference Include="System" />
|
<Reference Include="System" />
|
||||||
<Reference Include="System.Core" />
|
<Reference Include="System.Core" />
|
||||||
|
<Reference Include="System.Windows.Interactivity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
|
<HintPath>..\packages\EgtWPFLib5.2.4.7.1\lib\System.Windows.Interactivity.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
<Reference Include="System.Xml.Linq" />
|
<Reference Include="System.Xml.Linq" />
|
||||||
<Reference Include="System.Data.DataSetExtensions" />
|
<Reference Include="System.Data.DataSetExtensions" />
|
||||||
<Reference Include="Microsoft.CSharp" />
|
<Reference Include="Microsoft.CSharp" />
|
||||||
@@ -71,6 +83,7 @@
|
|||||||
<DependentUpon>StressTest.cs</DependentUpon>
|
<DependentUpon>StressTest.cs</DependentUpon>
|
||||||
</EmbeddedResource>
|
</EmbeddedResource>
|
||||||
<None Include="App.config" />
|
<None Include="App.config" />
|
||||||
|
<None Include="packages.config" />
|
||||||
<None Include="Properties\Settings.settings">
|
<None Include="Properties\Settings.settings">
|
||||||
<Generator>SettingsSingleFileGenerator</Generator>
|
<Generator>SettingsSingleFileGenerator</Generator>
|
||||||
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
|
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
|
||||||
|
|||||||
@@ -79,7 +79,7 @@ namespace EgtBEAMWALL.StressTest
|
|||||||
List<DataLayer.DatabaseModels.BTLPartModel> currPartList = new List<DataLayer.DatabaseModels.BTLPartModel>();
|
List<DataLayer.DatabaseModels.BTLPartModel> currPartList = new List<DataLayer.DatabaseModels.BTLPartModel>();
|
||||||
List<Core.MyMachGroupM> currMachGroupList = new List<Core.MyMachGroupM>();
|
List<Core.MyMachGroupM> currMachGroupList = new List<Core.MyMachGroupM>();
|
||||||
List<Core.PartM> currMGPartList = new List<Core.PartM>();
|
List<Core.PartM> currMGPartList = new List<Core.PartM>();
|
||||||
ProjCtr.UpdateInfo(currProjId, $"{DateTime.Now:yyyyMMdd_HHmmssfff}", $"LN_{DateTime.Now:yyyyMMdd_HHmm}", DateTime.Now.AddSeconds(15));
|
ProjCtr.UpdateInfo(currProjId, $"{DateTime.Now:yyyyMMdd_HHmmssfff}", $"LN_{DateTime.Now:yyyyMMdd_HHmm}", DateTime.Now.AddSeconds(15), Core.ConstBeam.BWType.BEAM, "SIM01");
|
||||||
// genero le BTLParts ed assegno..
|
// genero le BTLParts ed assegno..
|
||||||
for (int j = 0; j < currRandom.BtlPart2Proj; j++)
|
for (int j = 0; j < currRandom.BtlPart2Proj; j++)
|
||||||
{
|
{
|
||||||
@@ -109,7 +109,7 @@ namespace EgtBEAMWALL.StressTest
|
|||||||
{
|
{
|
||||||
// FixME!!! non può creare x loop in CreateBeamDL che vuole nParentMachGroup
|
// FixME!!! non può creare x loop in CreateBeamDL che vuole nParentMachGroup
|
||||||
// genero le Part x MachGroup ed assegno
|
// genero le Part x MachGroup ed assegno
|
||||||
Core.PartM currPart = Core.BeamM.CreateBeamDL(null, currPartList[BPIdx].PartId, 1);
|
Core.PartM currPart = Core.PartM.CreatePart(Core.ConstBeam.BWType.BEAM, currMachGroupList.FirstOrDefault(), currPartList[BPIdx].PartId, 1);
|
||||||
currMGPartList.Add(currPart);
|
currMGPartList.Add(currPart);
|
||||||
//currMGPartList.Add(new DataLayer.DatabaseModels.PartModel() { BTLPartDbId = currBTLPart.BTLPartDbId, PDN = l * k * currRandom.Part2MachGroup, PartId = l, H = 10 * l, L = 50 * l, W = 5 * l });
|
//currMGPartList.Add(new DataLayer.DatabaseModels.PartModel() { BTLPartDbId = currBTLPart.BTLPartDbId, PDN = l * k * currRandom.Part2MachGroup, PartId = l, H = 10 * l, L = 50 * l, W = 5 * l });
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,4 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<packages>
|
||||||
|
<package id="EgtWPFLib5" version="2.4.7.1" targetFramework="net452" />
|
||||||
|
</packages>
|
||||||
@@ -3,7 +3,6 @@
|
|||||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||||
xmlns:local="clr-namespace:EgtCOMMTest"
|
|
||||||
mc:Ignorable="d"
|
mc:Ignorable="d"
|
||||||
d:DesignHeight="450" d:DesignWidth="800">
|
d:DesignHeight="450" d:DesignWidth="800">
|
||||||
<ItemsControl ItemsSource="{Binding AxesList}">
|
<ItemsControl ItemsSource="{Binding AxesList}">
|
||||||
|
|||||||
@@ -16,6 +16,27 @@ Public Class CALCPanelVM
|
|||||||
End Set
|
End Set
|
||||||
End Property
|
End Property
|
||||||
|
|
||||||
|
Private m_bMachineLog As Boolean = False
|
||||||
|
Public Property bMachineLog As Boolean
|
||||||
|
Get
|
||||||
|
Return m_bMachineLog
|
||||||
|
End Get
|
||||||
|
Set(value As Boolean)
|
||||||
|
m_bMachineLog = value
|
||||||
|
If value Then
|
||||||
|
Map.refProjectVM.SetSelTabPage(ProjectVM.TabPages.MACHINELOG)
|
||||||
|
ElseIf Not IsNothing(Map.refLeftPanelVM.SelOPMode) AndAlso Map.refLeftPanelVM.SelOPMode.Id = OPModes.Mdi Then
|
||||||
|
Map.refProjectVM.SetSelTabPage(ProjectVM.TabPages.MDI)
|
||||||
|
Else
|
||||||
|
Map.refProjectVM.SetSelTabPage(ProjectVM.TabPages.SCENE)
|
||||||
|
End If
|
||||||
|
End Set
|
||||||
|
End Property
|
||||||
|
Friend Sub SetMachineLog(value As Boolean)
|
||||||
|
m_bMachineLog = value
|
||||||
|
NotifyPropertyChanged(NameOf(bMachineLog))
|
||||||
|
End Sub
|
||||||
|
|
||||||
' Definizione comandi
|
' Definizione comandi
|
||||||
Private m_cmdVerify As ICommand
|
Private m_cmdVerify As ICommand
|
||||||
Private m_cmdVerifyAll As ICommand
|
Private m_cmdVerifyAll As ICommand
|
||||||
@@ -85,6 +106,8 @@ Public Class CALCPanelVM
|
|||||||
m_ProcessResultList = New List(Of Integer)
|
m_ProcessResultList = New List(Of Integer)
|
||||||
Map.refProjectVM.ManageIsEnabled(True)
|
Map.refProjectVM.ManageIsEnabled(True)
|
||||||
Map.refMyStatusBarVM.ResetStopProgress()
|
Map.refMyStatusBarVM.ResetStopProgress()
|
||||||
|
' riabilito bottoni di comunicazione a fine invio programma
|
||||||
|
Map.refMachCommandMessagePanelVM.SetCommBtnIsEnabled(True)
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
Private Sub Calc_ProcessEnded(sender As Object, e As CalcProcessEndEventArgs)
|
Private Sub Calc_ProcessEnded(sender As Object, e As CalcProcessEndEventArgs)
|
||||||
@@ -96,6 +119,9 @@ Public Class CALCPanelVM
|
|||||||
|
|
||||||
Private Shared Sub ProcessResults(Bar As Bar)
|
Private Shared Sub ProcessResults(Bar As Bar)
|
||||||
|
|
||||||
|
' disabilito impostazione modificato
|
||||||
|
Dim DisableMgr As New DisableModifiedMgr
|
||||||
|
|
||||||
Dim BtlPath As String = Bar.sBarPath
|
Dim BtlPath As String = Bar.sBarPath
|
||||||
Dim ResPath As String = Path.ChangeExtension(BtlPath, ".txt")
|
Dim ResPath As String = Path.ChangeExtension(BtlPath, ".txt")
|
||||||
Dim bErrors As Boolean = False
|
Dim bErrors As Boolean = False
|
||||||
@@ -116,7 +142,6 @@ Public Class CALCPanelVM
|
|||||||
Dim cutId As Integer = 0
|
Dim cutId As Integer = 0
|
||||||
Dim taskId As Integer = 0
|
Dim taskId As Integer = 0
|
||||||
Dim prevCutId As Integer = GDB_ID.NULL
|
Dim prevCutId As Integer = GDB_ID.NULL
|
||||||
Dim currPart As PartVM
|
|
||||||
|
|
||||||
Dim lines As String() = System.IO.File.ReadAllLines(ResPath)
|
Dim lines As String() = System.IO.File.ReadAllLines(ResPath)
|
||||||
For Each line As String In lines
|
For Each line As String In lines
|
||||||
@@ -167,9 +192,9 @@ Public Class CALCPanelVM
|
|||||||
Machgroup.CalcMachGroupUpdate(0, 0, "")
|
Machgroup.CalcMachGroupUpdate(0, 0, "")
|
||||||
' Ciclo ...
|
' Ciclo ...
|
||||||
Dim nCUTID As Integer = -1
|
Dim nCUTID As Integer = -1
|
||||||
Dim CurrPartVM As PartVM
|
Dim CurrPartVM As PartVM = Nothing
|
||||||
Dim CurrMachgroupVM As MyMachGroupVM
|
Dim CurrMachgroupVM As MyMachGroupVM = Nothing
|
||||||
Dim CurrBTLFeatureVM As BTLFeatureVM
|
Dim CurrBTLFeatureVM As BTLFeatureVM = Nothing
|
||||||
For Each Line In ProcessResultList
|
For Each Line In ProcessResultList
|
||||||
' se necessario recupero part
|
' se necessario recupero part
|
||||||
If Line.nCUTID <> 0 Then
|
If Line.nCUTID <> 0 Then
|
||||||
@@ -211,12 +236,17 @@ Public Class CALCPanelVM
|
|||||||
|
|
||||||
End If
|
End If
|
||||||
|
|
||||||
|
' mando notifica aggiornamento ad ottimizzatore
|
||||||
|
DbControllers.m_StatusMapController.UpdateAction(DbControllers.m_SupervisorId, Map.refSupervisorManagerVM.CurrProd.nProdId, Bar.nBarId, StatusMapItemType.MachGroup, StatusMapOpType.MachGroupValidationUpdate, "")
|
||||||
|
|
||||||
Else
|
Else
|
||||||
bErrors = True
|
bErrors = True
|
||||||
nLastErr = 25
|
nLastErr = 25
|
||||||
sLastMsg = "Execution Error"
|
sLastMsg = "Execution Error"
|
||||||
End If
|
End If
|
||||||
|
|
||||||
|
' ripristino precedente impostazione modificato
|
||||||
|
DisableMgr.ReEnable()
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
Private Shared Function GetVal(sText As String, sKey As String) As Integer?
|
Private Shared Function GetVal(sText As String, sKey As String) As Integer?
|
||||||
@@ -232,7 +262,7 @@ Public Class CALCPanelVM
|
|||||||
End Function
|
End Function
|
||||||
|
|
||||||
Private Shared Sub ProcessResultAdd(PRList As List(Of ProcessResult), NewPR As ProcessResult, Bar As Bar)
|
Private Shared Sub ProcessResultAdd(PRList As List(Of ProcessResult), NewPR As ProcessResult, Bar As Bar)
|
||||||
Dim Prev As ProcessResult
|
Dim Prev As ProcessResult = Nothing
|
||||||
Select Case NewPR.Type
|
Select Case NewPR.Type
|
||||||
Case ProcessResult.ProcessResultTypes.BAR
|
Case ProcessResult.ProcessResultTypes.BAR
|
||||||
If Bar.nProgramPage = ProjectType.PROJ Then
|
If Bar.nProgramPage = ProjectType.PROJ Then
|
||||||
@@ -264,6 +294,7 @@ Public Class CALCPanelVM
|
|||||||
Dim PartVM As PartVM = MachGroupVM.PartVMList.FirstOrDefault(Function(x) x.nPartId = nPartId)
|
Dim PartVM As PartVM = MachGroupVM.PartVMList.FirstOrDefault(Function(x) x.nPartId = nPartId)
|
||||||
If Not IsNothing(PartVM) Then Return PartVM
|
If Not IsNothing(PartVM) Then Return PartVM
|
||||||
Next
|
Next
|
||||||
|
Return Nothing
|
||||||
End Function
|
End Function
|
||||||
|
|
||||||
Private Shared Function GetMachgroupVMFromMachgroupId(nMachGroupId As Integer) As MyMachGroupVM
|
Private Shared Function GetMachgroupVMFromMachgroupId(nMachGroupId As Integer) As MyMachGroupVM
|
||||||
@@ -362,7 +393,7 @@ Public Class CALCPanelVM
|
|||||||
' disabilito interfaccia
|
' disabilito interfaccia
|
||||||
Map.refProjectVM.ManageIsEnabled(False)
|
Map.refProjectVM.ManageIsEnabled(False)
|
||||||
' lancio calcolo
|
' lancio calcolo
|
||||||
EgtBEAMWALL.Core.CalcIntegration.Run(BarList, Map.refSupervisorManagerVM.CurrProd.sProdDirPath, AddressOf ManageCalc)
|
EgtBEAMWALL.Core.CalcIntegration.Run(BarList, Map.refSupervisorManagerVM.CurrProd.sProdDirPath, AddressOf ManageCalc, True)
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
' funzione che gestisce risposta da thread di verifica, aggiorna progress e segnala comando di interruzione
|
' funzione che gestisce risposta da thread di verifica, aggiorna progress e segnala comando di interruzione
|
||||||
|
|||||||
@@ -29,5 +29,10 @@
|
|||||||
IsEnabled="{Binding CALCPanel_IsEnabled}">
|
IsEnabled="{Binding CALCPanel_IsEnabled}">
|
||||||
<Image Source="/Resources/CALCPanel/Simulate.png" Stretch="Uniform"/>
|
<Image Source="/Resources/CALCPanel/Simulate.png" Stretch="Uniform"/>
|
||||||
</Button>
|
</Button>
|
||||||
|
<ToggleButton ToolTip="{Binding MachineLog_ToolTip}"
|
||||||
|
Content="Log"
|
||||||
|
IsChecked="{Binding bMachineLog}"
|
||||||
|
Style="{StaticResource ToolBar_ToggleButton}">
|
||||||
|
</ToggleButton>
|
||||||
|
|
||||||
</EgtFloating:EgtFloatingPanel>
|
</EgtFloating:EgtFloatingPanel>
|
||||||
|
|||||||
@@ -0,0 +1,844 @@
|
|||||||
|
Imports EgtBEAMWALL.Core
|
||||||
|
Imports EgtBEAMWALL.Core.ConstMachComm
|
||||||
|
Imports EgtUILib
|
||||||
|
Imports EgtWPFLib5
|
||||||
|
|
||||||
|
Public Class NUMAxiumComm
|
||||||
|
|
||||||
|
Enum CNMode As Integer
|
||||||
|
AUTO = 0
|
||||||
|
SINGLE_ = 1
|
||||||
|
MDI = 2
|
||||||
|
MANUAL = 7
|
||||||
|
End Enum
|
||||||
|
|
||||||
|
Private m_MachManaging As MachManaging
|
||||||
|
Friend ReadOnly Property MachManaging As MachManaging
|
||||||
|
Get
|
||||||
|
Return m_MachManaging
|
||||||
|
End Get
|
||||||
|
End Property
|
||||||
|
|
||||||
|
Public ReadOnly Property bIsTransferActive As Boolean
|
||||||
|
Get
|
||||||
|
Return If(Not IsNothing(objDFileTransfer), objDFileTransfer.IsTransferActive(), False)
|
||||||
|
End Get
|
||||||
|
End Property
|
||||||
|
|
||||||
|
'Private objDRunTimeSystem As FXServer.DRunTimeSystem
|
||||||
|
Private WithEvents objDGroupManager As APServer.DGroupManager
|
||||||
|
Private WithEvents objDGeneralFunction As APServer.DGeneralFunctions
|
||||||
|
Private WithEvents objDMainCncData As APServer.DMainCncData
|
||||||
|
Private WithEvents objErrorHandler As APLog.ErrorHandler
|
||||||
|
Private WithEvents objDReadELS As APServer.DReadELS
|
||||||
|
Private WithEvents objDReadPlcVarList As APServer.DReadPlcVarList
|
||||||
|
Private WithEvents objDFileTransfer As APServer.DFileTransfer
|
||||||
|
Private WithEvents objDPosition As APServer.DPosition
|
||||||
|
Private WithEvents objDMdiCommand As APServer.DMdiCommand
|
||||||
|
Private WithEvents objDVariables As APServer.DVariables
|
||||||
|
Private WithEvents objDCncMode As APServer.DCncMode
|
||||||
|
Private WithEvents objDReadOperatorMessage As APServer.DReadOperatorMessage
|
||||||
|
|
||||||
|
Private m_CNCVersion As String = ""
|
||||||
|
Private _PartProgramNumber As Single
|
||||||
|
Private _CNCAxisChannelArray As String() = New String() {"Channel 1", "Channel 2"}
|
||||||
|
Private m_ChannelList As New List(Of String)
|
||||||
|
' Arraylist for read out the messages
|
||||||
|
Private m_ReadFXMessages As New List(Of ReadMessages)
|
||||||
|
Private m_ReadOperatorMessages As New List(Of ReadMessages)
|
||||||
|
' lista variabili in lettura
|
||||||
|
Private Shared m_ReadingVars(100) As CommVar
|
||||||
|
Private m_BytesTransferedCounter As Integer
|
||||||
|
Private m_LinearAxisPrecision As Integer
|
||||||
|
|
||||||
|
Public Sub New(MachManaging As MachManaging)
|
||||||
|
m_MachManaging = MachManaging
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
#Region "METHODS"
|
||||||
|
|
||||||
|
Friend Sub InitFxServer()
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Friend Sub InitFxObjects()
|
||||||
|
objDGroupManager = CreateObject("APServer.DGroupManager")
|
||||||
|
AddHandler objDGroupManager.ErrorHandler, AddressOf objDGroupManager_ErrorHandler
|
||||||
|
AddHandler objDGroupManager.AssignmentChanged, AddressOf objDGroupManager_AssignmentChanged
|
||||||
|
objDGroupManager.CncNumber = 0
|
||||||
|
objDGroupManager.AxisGroup = 0
|
||||||
|
|
||||||
|
objDMainCncData = CreateObject("APServer.DMainCncData")
|
||||||
|
Dim s = objDMainCncData.Init(objDGroupManager.Handle)
|
||||||
|
m_LinearAxisPrecision = objDMainCncData.GetLinearPrecision()
|
||||||
|
Dim CncFxIdentifier As String = objDMainCncData.GetCncIdentifier()
|
||||||
|
EgtOutLog("CncFxIdentifier: " & CncFxIdentifier)
|
||||||
|
|
||||||
|
m_CNCVersion = objDMainCncData.GetCncVersion()
|
||||||
|
|
||||||
|
' Initialize for Channel Change
|
||||||
|
Dim CncGroupNumber As Integer = objDMainCncData.GetCncGroupNumber()
|
||||||
|
Dim PlcGroupNumber As Integer = objDMainCncData.GetPlcGroupNumber()
|
||||||
|
|
||||||
|
Dim sumChannels As Integer = 0
|
||||||
|
sumChannels = PlcGroupNumber + CncGroupNumber
|
||||||
|
For i = 1 To sumChannels
|
||||||
|
m_ChannelList.Add(i)
|
||||||
|
Next
|
||||||
|
|
||||||
|
objDGeneralFunction = CreateObject("APServer.DGeneralFunctions")
|
||||||
|
AddHandler objDGeneralFunction.ProgramActivated, AddressOf objDGeneralFunction_ProgramActivated
|
||||||
|
AddHandler objDGeneralFunction.OnCncStart, AddressOf objDGeneralFunction_OnCncStart
|
||||||
|
AddHandler objDGeneralFunction.OnCncStop, AddressOf objDGeneralFunction_OnCncStop
|
||||||
|
AddHandler objDGeneralFunction.OnCncReset, AddressOf objDGeneralFunction_OnCncReset
|
||||||
|
AddHandler objDGeneralFunction.CncModeWritten, AddressOf objDGeneralFunction_CncModeWritten
|
||||||
|
AddHandler objDGeneralFunction.VariableWritten, AddressOf objDGeneralFunction_VariableWritten
|
||||||
|
Dim l = objDGeneralFunction.Init(objDGroupManager.Handle)
|
||||||
|
Dim MaxWaiting As Integer = 100
|
||||||
|
Dim WaitingIndex As Integer = 0
|
||||||
|
While objDGeneralFunction.ConnectionStatus <> 2 AndAlso WaitingIndex < MaxWaiting
|
||||||
|
Threading.Thread.Sleep(100)
|
||||||
|
UpdateUI()
|
||||||
|
WaitingIndex += 1
|
||||||
|
End While
|
||||||
|
Dim j = objDGeneralFunction.ConnectionStatus
|
||||||
|
Dim oi = objDGeneralFunction.ConnectionString
|
||||||
|
' Initialize FXLog Objects
|
||||||
|
objErrorHandler = CreateObject("APLog.ErrorHandler")
|
||||||
|
'AddHandler objErrorHandler.ErrorFromActiveCnc, AddressOf objErrorHandler_ErrorFromActiveCnc2
|
||||||
|
AddHandler objErrorHandler.ErrorOnCnc, AddressOf objErrorHandler_ErrorOnCnc
|
||||||
|
AddHandler objErrorHandler.ErrorOnOtherChannel, AddressOf objErrorHandler_ErrorOnOtherChannel
|
||||||
|
AddHandler objErrorHandler.Exception, AddressOf objErrorHandler_Exception
|
||||||
|
'Initialisation config for testing
|
||||||
|
'Accepting all messages
|
||||||
|
'Consult the documentation for detailed information
|
||||||
|
|
||||||
|
objErrorHandler.AllError = 1
|
||||||
|
objErrorHandler.ErrorGlobal = 0
|
||||||
|
objErrorHandler.SetChannel(0, 0)
|
||||||
|
objErrorHandler.AcceptBootSysMessage(1)
|
||||||
|
objErrorHandler.AcceptException(0)
|
||||||
|
|
||||||
|
'Initialize FXServer class DFileTransferv
|
||||||
|
objDFileTransfer = CreateObject("APServer.DFileTransfer")
|
||||||
|
AddHandler objDFileTransfer.Completed, AddressOf objDFileTransfer_Completed
|
||||||
|
AddHandler objDFileTransfer.TransferStarted, AddressOf objDFileTransfer_TransferStarted
|
||||||
|
AddHandler objDFileTransfer.Failed, AddressOf objDFileTransfer_Failed
|
||||||
|
AddHandler objDFileTransfer.BytesTransfered, AddressOf objDFileTransfer_BytesTransfered
|
||||||
|
objDFileTransfer.Init(objDGroupManager.Handle)
|
||||||
|
|
||||||
|
objDPosition = CreateObject("APServer.DPosition")
|
||||||
|
AddHandler objDPosition.PositionChanged, AddressOf objDPosition_PositionChanged
|
||||||
|
objDPosition.ModeOP = 1
|
||||||
|
objDPosition.Flag = 0
|
||||||
|
objDPosition.Init(objDGroupManager.Handle)
|
||||||
|
objDPosition.FireValidAxis()
|
||||||
|
objDPosition.FireValues()
|
||||||
|
|
||||||
|
'Initialize FXServer class DMdiCommand
|
||||||
|
objDMdiCommand = CreateObject("APServer.DMdiCommand")
|
||||||
|
AddHandler objDMdiCommand.CommandWritten, AddressOf objDMdiCommand_CommandWritten
|
||||||
|
objDMdiCommand.Init(objDGroupManager.Handle)
|
||||||
|
|
||||||
|
' Initialize FXServer class DCncMode
|
||||||
|
objDCncMode = CreateObject("APServer.DCncMode")
|
||||||
|
AddHandler objDCncMode.ValueChanged, AddressOf objDCncMode_ValueChanged
|
||||||
|
objDCncMode.Init(objDGroupManager.Handle)
|
||||||
|
|
||||||
|
' Initialize FXServer class DReadOperatorMessage
|
||||||
|
objDReadOperatorMessage = CreateObject("APServer.DReadOperatorMessage")
|
||||||
|
AddHandler objDReadOperatorMessage.ValueChanged, AddressOf objDReadOperatorMessage_ValueChanged
|
||||||
|
Dim tc = objDReadOperatorMessage.Init(objDGroupManager.Handle)
|
||||||
|
If tc <> 0 Then EgtOutLog("Init failed ! return code : " + tc)
|
||||||
|
|
||||||
|
' Initialize FXServer class DReadELS
|
||||||
|
'objDReadELS = CreateObject("APServer.DReadELS")
|
||||||
|
'AddHandler objDReadELS.ValueChanged, AddressOf objDReadELS_ValueChanged
|
||||||
|
'Dim y = objDReadELS.Init(objDGroupManager.Handle)
|
||||||
|
|
||||||
|
objDReadPlcVarList = CreateObject("APServer.DReadPlcVarList")
|
||||||
|
AddHandler objDReadPlcVarList.ValueChanged, AddressOf objDPlcVariables_ReadPLCVariablesChanged
|
||||||
|
' Init & send the list of requested variables
|
||||||
|
'tc = objDReadPlcVarList.Init(objDGroupManager.Handle)
|
||||||
|
'If tc <> 0 Then EgtOutLog(" objDReadPlcVarList.Init() Error : " + tc)
|
||||||
|
|
||||||
|
'Initialize FXServer class DVariables
|
||||||
|
objDVariables = CreateObject("APServer.DVariables")
|
||||||
|
'AddHandler objDVariables.ValueChanged, AddressOf objDVariables_ValueChanged
|
||||||
|
' Init & send the list of requested variables
|
||||||
|
'Dim rc As Short = objDVariables.Init(objDGroupManager.Handle, "E80000", 0)
|
||||||
|
AddHandler objDVariables.VariableWritten, AddressOf objDVariables_VariableWritten
|
||||||
|
AddHandler objDVariables.ValueChanged, AddressOf objDPlcVariables_ReadVariablesChanged
|
||||||
|
'If rc <> 0 Then EgtOutLog(" objDVariables.Init() Error : " + rc)
|
||||||
|
|
||||||
|
' attivo programma main
|
||||||
|
Map.refMachManaging.Num_Axium_APServer.ActivateProg(9000)
|
||||||
|
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Friend Sub CloseFxObjects()
|
||||||
|
If Not IsNothing(objDReadOperatorMessage) Then
|
||||||
|
objDReadOperatorMessage.Close()
|
||||||
|
System.Runtime.InteropServices.Marshal.ReleaseComObject(objDReadOperatorMessage)
|
||||||
|
objDReadOperatorMessage = Nothing
|
||||||
|
End If
|
||||||
|
If Not IsNothing(objDCncMode) Then
|
||||||
|
System.Runtime.InteropServices.Marshal.ReleaseComObject(objDCncMode)
|
||||||
|
objDCncMode = Nothing
|
||||||
|
End If
|
||||||
|
If Not IsNothing(objDReadPlcVarList) Then
|
||||||
|
objDReadPlcVarList.Close()
|
||||||
|
System.Runtime.InteropServices.Marshal.ReleaseComObject(objDReadPlcVarList)
|
||||||
|
objDReadPlcVarList = Nothing
|
||||||
|
End If
|
||||||
|
If Not IsNothing(objDVariables) Then
|
||||||
|
System.Runtime.InteropServices.Marshal.ReleaseComObject(objDVariables)
|
||||||
|
objDVariables = Nothing
|
||||||
|
End If
|
||||||
|
If Not IsNothing(objDMdiCommand) Then
|
||||||
|
System.Runtime.InteropServices.Marshal.ReleaseComObject(objDMdiCommand)
|
||||||
|
objDMdiCommand = Nothing
|
||||||
|
End If
|
||||||
|
If Not IsNothing(objDPosition) Then
|
||||||
|
System.Runtime.InteropServices.Marshal.ReleaseComObject(objDPosition)
|
||||||
|
objDPosition = Nothing
|
||||||
|
End If
|
||||||
|
If Not IsNothing(objDFileTransfer) Then
|
||||||
|
System.Runtime.InteropServices.Marshal.ReleaseComObject(objDFileTransfer)
|
||||||
|
objDFileTransfer = Nothing
|
||||||
|
End If
|
||||||
|
If Not IsNothing(objDReadELS) Then
|
||||||
|
objDReadELS.Close()
|
||||||
|
System.Runtime.InteropServices.Marshal.ReleaseComObject(objDReadELS)
|
||||||
|
objDReadELS = Nothing
|
||||||
|
End If
|
||||||
|
If Not IsNothing(objErrorHandler) Then
|
||||||
|
System.Runtime.InteropServices.Marshal.ReleaseComObject(objErrorHandler)
|
||||||
|
objErrorHandler = Nothing
|
||||||
|
End If
|
||||||
|
If Not IsNothing(objDGeneralFunction) Then
|
||||||
|
objDGeneralFunction.Connect(0)
|
||||||
|
System.Runtime.InteropServices.Marshal.ReleaseComObject(objDGeneralFunction)
|
||||||
|
objDGeneralFunction = Nothing
|
||||||
|
End If
|
||||||
|
If Not IsNothing(objDMainCncData) Then
|
||||||
|
System.Runtime.InteropServices.Marshal.ReleaseComObject(objDMainCncData)
|
||||||
|
objDMainCncData = Nothing
|
||||||
|
End If
|
||||||
|
If Not IsNothing(objDGroupManager) Then
|
||||||
|
System.Runtime.InteropServices.Marshal.ReleaseComObject(objDGroupManager)
|
||||||
|
objDGroupManager = Nothing
|
||||||
|
End If
|
||||||
|
Dim ServerProcList As Process() = Process.GetProcessesByName("APServer")
|
||||||
|
Dim LogProcList As Process() = Process.GetProcessesByName("APLog")
|
||||||
|
For Each ServerProc In ServerProcList
|
||||||
|
ServerProc.Kill()
|
||||||
|
Next
|
||||||
|
For Each LogProc In LogProcList
|
||||||
|
LogProc.Kill()
|
||||||
|
Next
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Friend Sub GetGeneralFunctions()
|
||||||
|
Dim _GetConnectState As Int16 = 0
|
||||||
|
Dim MaxWaiting As Integer = 100
|
||||||
|
Dim WaitingIndex As Integer = 0
|
||||||
|
While _GetConnectState <> 2 AndAlso WaitingIndex < MaxWaiting
|
||||||
|
_GetConnectState = objDGeneralFunction.ConnectionStatus
|
||||||
|
Threading.Thread.Sleep(100)
|
||||||
|
UpdateUI()
|
||||||
|
WaitingIndex += 1
|
||||||
|
End While
|
||||||
|
|
||||||
|
Select Case _GetConnectState
|
||||||
|
Case 0
|
||||||
|
' Not connected
|
||||||
|
m_MachManaging.SetConnected(False)
|
||||||
|
m_ResultCallbackDlg(CommandTypes.CONNECT, CommandStates.NULL, ResultTypes.RESULT, "")
|
||||||
|
Case 1
|
||||||
|
' Connection error
|
||||||
|
m_MachManaging.SetConnected(False)
|
||||||
|
m_ResultCallbackDlg(CommandTypes.CONNECT, CommandStates.ERROR_, ResultTypes.RESULT, "")
|
||||||
|
Case 2
|
||||||
|
' Connected
|
||||||
|
m_MachManaging.SetConnected(True)
|
||||||
|
m_ResultCallbackDlg(CommandTypes.CONNECT, CommandStates.OK, ResultTypes.RESULT, "")
|
||||||
|
' avvio lettura variabili
|
||||||
|
'MachManaging.CommandList.Add(ThreadCommand.CreateCommand(CommandTypes.READ_NUMFLEXIUM))
|
||||||
|
StartReadList()
|
||||||
|
StartReadPLCList()
|
||||||
|
'StartReadELS()
|
||||||
|
Case Else
|
||||||
|
End Select
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Friend Sub Start()
|
||||||
|
objDGeneralFunction.CncStart()
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Friend Sub Stop_()
|
||||||
|
objDGeneralFunction.CncStop()
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Friend Sub Reset()
|
||||||
|
objDGeneralFunction.CncReset()
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Friend Sub SetMode(value As CNMode)
|
||||||
|
objDGeneralFunction.WriteCncMode(value, 0)
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Friend Sub SetChannel(value As Integer)
|
||||||
|
ChangeChannel(CShort(value))
|
||||||
|
'objDGroupManager.AxisGroup = CShort(value)
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Friend Sub ActivateProg(PartProgramNumberActivate As Integer)
|
||||||
|
' attivo programma main
|
||||||
|
Dim _FXReturn As Int16 = objDGeneralFunction.ActivateProgram(PartProgramNumberActivate * 10, 0)
|
||||||
|
If _FXReturn <> 0 Then
|
||||||
|
EgtOutLog("Error Activate Program:" & " " & _FXReturn.ToString())
|
||||||
|
End If
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub ChangeChannel(Channel As Short)
|
||||||
|
objErrorHandler.SetChannel(1, Channel)
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Friend Sub StartReadList()
|
||||||
|
'Dim AddressList() As String = (From CommVar In m_ReadingVars
|
||||||
|
' Where Not IsNothing(CommVar) AndAlso CommVar.nType = CommVar.Types.PLC
|
||||||
|
' Select CommVar.sAddress).ToArray()
|
||||||
|
'm_PlcVariablesList = New ArrayList((From CommVar In m_ReadingVars
|
||||||
|
' Where Not IsNothing(CommVar) AndAlso CommVar.nType = CommVar.Types.PLC
|
||||||
|
' Select CommVar.sAddress).ToArray())
|
||||||
|
Dim nPLCVarIndex As Integer = 0
|
||||||
|
Dim PlcVariablesList As New ArrayList
|
||||||
|
Dim sPLCVariableList = ""
|
||||||
|
For VarIndex = 0 To m_ReadingVars.Length - 1
|
||||||
|
Dim CommVar As CommVar = m_ReadingVars(VarIndex)
|
||||||
|
If Not IsNothing(CommVar) AndAlso CommVar.Paragraph = CommVar.Paragraphs.MAIN AndAlso CommVar.nType = CommVar.Types.CN Then
|
||||||
|
PlcVariablesList.Add(CommVar.sAddress)
|
||||||
|
If Not String.IsNullOrWhiteSpace(sPLCVariableList) Then
|
||||||
|
sPLCVariableList &= ","
|
||||||
|
End If
|
||||||
|
sPLCVariableList &= """" & CommVar.sAddress & """"
|
||||||
|
CommVar.Index = nPLCVarIndex
|
||||||
|
nPLCVarIndex += 1
|
||||||
|
End If
|
||||||
|
Next
|
||||||
|
'Dim sPLCVariableList = ""
|
||||||
|
'For VariableIndex = 0 To PlcVariablesList.Count - 1
|
||||||
|
' If VariableIndex <> 0 Then
|
||||||
|
' sPLCVariableList &= ","
|
||||||
|
' End If
|
||||||
|
' sPLCVariableList &= """" & PlcVariablesList(VariableIndex) & """"
|
||||||
|
'Next
|
||||||
|
Dim _FXReturn As Short = objDVariables.Init(objDGroupManager.Handle, sPLCVariableList, 1) 'PlcVariablesList.ToArray().ToString())
|
||||||
|
'Dim _FXReturn As Short = objDVariables.ReadVariables(PlcVariablesList.ToArray())
|
||||||
|
|
||||||
|
'If _FXReturn <> 0 Then
|
||||||
|
' EgtOutLog("Error ReadVariables:" & " " & _FXReturn.ToString())
|
||||||
|
'End If
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Friend Sub StartReadPLCList()
|
||||||
|
'Dim AddressList() As String = (From CommVar In m_ReadingVars
|
||||||
|
' Where Not IsNothing(CommVar) AndAlso CommVar.nType = CommVar.Types.PLC
|
||||||
|
' Select CommVar.sAddress).ToArray()
|
||||||
|
'm_PlcVariablesList = New ArrayList((From CommVar In m_ReadingVars
|
||||||
|
' Where Not IsNothing(CommVar) AndAlso CommVar.nType = CommVar.Types.PLC
|
||||||
|
' Select CommVar.sAddress).ToArray())
|
||||||
|
Dim nPLCVarIndex As Integer = 0
|
||||||
|
Dim PlcVariablesList As New ArrayList
|
||||||
|
Dim sPLCVariableList = ""
|
||||||
|
For VarIndex = 0 To m_ReadingVars.Length - 1
|
||||||
|
Dim CommVar As CommVar = m_ReadingVars(VarIndex)
|
||||||
|
If Not IsNothing(CommVar) AndAlso CommVar.nType = CommVar.Types.PLC AndAlso
|
||||||
|
CommVar.Paragraph = CommVar.Paragraphs.MAIN Then
|
||||||
|
PlcVariablesList.Add(CommVar.sAddress)
|
||||||
|
If Not String.IsNullOrWhiteSpace(sPLCVariableList) Then
|
||||||
|
sPLCVariableList &= ","
|
||||||
|
End If
|
||||||
|
sPLCVariableList &= CommVar.sAddress
|
||||||
|
CommVar.Index = nPLCVarIndex
|
||||||
|
nPLCVarIndex += 1
|
||||||
|
End If
|
||||||
|
Next
|
||||||
|
objDReadPlcVarList.Argument = sPLCVariableList ' "%M5.L,%M5.B"
|
||||||
|
Dim h = objDReadPlcVarList.Init(objDGroupManager.Handle)
|
||||||
|
'Dim _FXReturn As Short = objDVariables.ReadVariables(PlcVariablesList.ToArray())
|
||||||
|
|
||||||
|
'If _FXReturn <> 0 Then
|
||||||
|
' EgtOutLog("Error ReadVariables:" & " " & _FXReturn.ToString())
|
||||||
|
'End If
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Friend Sub CloseReadList()
|
||||||
|
'objDPlcVariables.CloseReadList()
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub ReadVariablesOnce(Address As String)
|
||||||
|
'Dim _ReadSymbolicPlcVariableOnetime As String = "Application.IOCONFIG_GLOBALS.Flexium_NCK.RCNC.General.Mode"
|
||||||
|
'Dim _FXReturn As Int16 = objDPlcVariables.ReadVariablesOnce(10, Address)
|
||||||
|
|
||||||
|
'If _FXReturn <> 0 Then
|
||||||
|
' EgtOutLog("Error ReadVariablesOnce:" & " " & _FXReturn.ToString())
|
||||||
|
'End If
|
||||||
|
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Friend Sub WritePlcVariables(Address As String, value As String)
|
||||||
|
'Dim _WriteSymbolicPlcVariable As String = _txtReadWritePlcVariables0.Text
|
||||||
|
'Dim _FXReturn As Int16 = objDPlcVariables.WriteVariables2(11, Address, value)
|
||||||
|
'
|
||||||
|
'If _FXReturn <> 0 Then
|
||||||
|
' EgtOutLog("Error WriteVariables2 :" & " " & _FXReturn.ToString())
|
||||||
|
'End If
|
||||||
|
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Public Shared Function InitVar(Variable As CommVar) As CommVar
|
||||||
|
Dim Index As Integer = Array.IndexOf(m_ReadingVars, Nothing)
|
||||||
|
m_ReadingVars(Index) = Variable
|
||||||
|
Return m_ReadingVars(Index)
|
||||||
|
End Function
|
||||||
|
|
||||||
|
Friend Sub StartReadELS()
|
||||||
|
For Index = 0 To m_ReadingVars.Length - 1
|
||||||
|
If IsNothing(m_ReadingVars(Index)) Then Continue For 'OrElse m_ReadingVars(Index).nType <> CommVar.Types.CN Then Continue For
|
||||||
|
Dim rc As Short = objDReadELS.AddParameter(m_ReadingVars(Index).sAddress, Index + 1)
|
||||||
|
If rc <> 0 Then EgtOutLog(" Error AddParameter2 : " & rc & " on Variable : " & m_ReadingVars(Index).sAddress)
|
||||||
|
Next
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Friend Sub CloseReadELS()
|
||||||
|
'objDPlcVariables.CloseReadList()
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
#Region "File transfer"
|
||||||
|
|
||||||
|
Friend Sub FileDownload(sFileType As String, sFilePath As String)
|
||||||
|
Dim _Return_Download As Short
|
||||||
|
|
||||||
|
_Return_Download = objDFileTransfer.FileDownload(10, sFileType, sFilePath, "", 1)
|
||||||
|
|
||||||
|
If _Return_Download <> 0 Then
|
||||||
|
EgtOutLog("Error: File not stored to the job list:" & " " & _Return_Download.ToString())
|
||||||
|
End If
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub FileUpload(sFileType As String, sFilePath As String)
|
||||||
|
Dim _Return_Upload As Short
|
||||||
|
_Return_Upload = objDFileTransfer.FileUpload(20, sFileType, sFilePath, "")
|
||||||
|
|
||||||
|
If _Return_Upload <> 0 Then
|
||||||
|
EgtOutLog("Error: File not stored to the job list:" & " " & _Return_Upload.ToString())
|
||||||
|
End If
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Friend Sub FileDelete(sFileType As String, sFilePath As String)
|
||||||
|
Dim _ReturnFileDelete As Short
|
||||||
|
_ReturnFileDelete = objDFileTransfer.FileDelete(20, sFileType, "")
|
||||||
|
|
||||||
|
If _ReturnFileDelete <> 0 Then
|
||||||
|
EgtOutLog("Error: File not deleted:" & " " & _ReturnFileDelete.ToString())
|
||||||
|
End If
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Friend Sub StartTransfer()
|
||||||
|
Dim _Return_StartTransfer As Short
|
||||||
|
_Return_StartTransfer = objDFileTransfer.StartTransfer()
|
||||||
|
|
||||||
|
If _Return_StartTransfer <> 0 Then
|
||||||
|
EgtOutLog("Error: Start transfer not executed:" & " " & _Return_StartTransfer.ToString())
|
||||||
|
Else
|
||||||
|
m_BytesTransferedCounter = 0
|
||||||
|
End If
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
#End Region ' File transfer
|
||||||
|
|
||||||
|
#Region "MDI"
|
||||||
|
|
||||||
|
Friend Sub MDI_Execute(sCommand As String)
|
||||||
|
Dim nRet As Int16 = objDMdiCommand.ExecuteCommand(sCommand)
|
||||||
|
If nRet <> 0 Then
|
||||||
|
EgtOutLog("Error ExecuteCommand :" & " " & nRet.ToString())
|
||||||
|
End If
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
#End Region ' MDI
|
||||||
|
|
||||||
|
#Region "Variables"
|
||||||
|
|
||||||
|
Friend Sub WriteNCVariables(Address As String, value As String)
|
||||||
|
Try
|
||||||
|
Dim dValue As Double = 0
|
||||||
|
StringToDouble(value, dValue)
|
||||||
|
Dim rc As Short = objDVariables.WriteVariables(objDGroupManager.Handle, Address, value)
|
||||||
|
|
||||||
|
'If rc <> 0 Then EgtOutLog(" objDVariables.WriteVariables2() Error : " & rc)
|
||||||
|
|
||||||
|
Catch ex As Exception
|
||||||
|
EgtOutLog(" objDVariables.WriteVariables2() Exception : " & ex.Message)
|
||||||
|
End Try
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
#End Region ' Variables
|
||||||
|
|
||||||
|
#End Region ' METHODS
|
||||||
|
|
||||||
|
#Region "EVENTS"
|
||||||
|
|
||||||
|
Private Sub objDRunTimeSystem_ServerInitializationFinished()
|
||||||
|
InitFxObjects()
|
||||||
|
GetGeneralFunctions()
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub objDRunTimeSystem_ServerReinitializationStarted()
|
||||||
|
CloseFxObjects()
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub objDGeneralFunction_ProgramActivated(ByVal nerrorCode As Short)
|
||||||
|
EgtOutLog("Part program activated:" & " " & nerrorCode)
|
||||||
|
DbControllers.m_LogMachineController.Create(MachLog.CreateResultLog(CommandTypes.SENDPROG, CommandStates.OK, ResultTypes.EXECUTED, "Part program activated:" & " " & nerrorCode))
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub objDGeneralFunction_OnCncStart(ByVal errorCode As Short)
|
||||||
|
Dim bOk As Boolean = (errorCode = 0)
|
||||||
|
m_MachManaging.SetStartPending(bOk)
|
||||||
|
m_ResultCallbackDlg(CommandTypes.START, If(bOk, CommandStates.OK, CommandStates.ERROR_), ResultTypes.EXECUTED, If(bOk, "", "Error CNC Start: " & errorCode.ToString()))
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub objDGeneralFunction_OnCncStop(ByVal errorCode As Short)
|
||||||
|
Dim bOk As Boolean = (errorCode = 0)
|
||||||
|
m_ResultCallbackDlg(CommandTypes.STOP_, If(bOk, CommandStates.OK, CommandStates.ERROR_), ResultTypes.EXECUTED, If(bOk, "", "Error Feed Hold: " & errorCode.ToString()))
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub objDGeneralFunction_OnCncReset(ByVal errorCode As Short)
|
||||||
|
Dim bOk As Boolean = (errorCode = 0)
|
||||||
|
m_ResultCallbackDlg(CommandTypes.RESET, If(bOk, CommandStates.OK, CommandStates.ERROR_), ResultTypes.EXECUTED, If(bOk, "", "Error CNC Reset: " & errorCode.ToString()))
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub objDGeneralFunction_CncModeWritten(ByVal errorCode As Short)
|
||||||
|
If errorCode <> 0 Then EgtOutLog("Error CNC Mode selection completed:" & " " & errorCode.ToString())
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub objDGroupManager_ErrorHandler(ByVal sError As String, ByVal nTextNumber As Short)
|
||||||
|
EgtOutLog("ErrorHandler message:" & " " & sError & " " & "ErrorHandler number:" & " " & nTextNumber.ToString())
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub objDGroupManager_AssignmentChanged(ByVal CncNumber As Short, ByVal AxisGroup As Short)
|
||||||
|
m_ChannelCallbackDlg(AxisGroup)
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub _comboCncAxisChannel_SelectedIndexChanged(ByVal sender As Object, ByVal e As EventArgs)
|
||||||
|
'Select Case _comboCncAxisChannel.SelectedItem.ToString()
|
||||||
|
' Case "Channel 1"
|
||||||
|
' objDGroupManager.AxisGroup = 0
|
||||||
|
' Case "Channel 2"
|
||||||
|
' objDGroupManager.AxisGroup = 1
|
||||||
|
' Case Else
|
||||||
|
'End Select
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub objDGeneralFunction_VariableWritten(ByVal errorCode As Short)
|
||||||
|
If errorCode <> 0 Then
|
||||||
|
MessageBox.Show("Error from VariableWritten:" & " " & errorCode.ToString())
|
||||||
|
Else
|
||||||
|
MessageBox.Show("VariableWritten successfully")
|
||||||
|
End If
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub objErrorHandler_ErrorOnCnc(ByVal cnc As Short, ByVal channel As Short, ByVal [set] As Short)
|
||||||
|
'AplCncNumber.Add(cnc)
|
||||||
|
'AplChannel.Add(channel)
|
||||||
|
'AplSet.Add([set])
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub objErrorHandler_ErrorOnOtherChannel(ByVal status As Short)
|
||||||
|
'AplStatus = status
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub objErrorHandler_Exception(ByVal status As Short)
|
||||||
|
'ExceptStatus = status
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Friend Sub objErrorHandler_ErrorFromActiveCnc2(ErrorNumber As List(Of Integer))
|
||||||
|
' resetto stati bFound
|
||||||
|
For Each Message In m_ReadFXMessages
|
||||||
|
Message.bFound = False
|
||||||
|
Next
|
||||||
|
|
||||||
|
For index As Integer = 0 To ErrorNumber.Count - 1
|
||||||
|
Dim nIndex As Integer = index
|
||||||
|
Dim NewMessageInList As ReadMessages = m_ReadFXMessages.FirstOrDefault(Function(x) x.CMsgCncNumber = 0.ToString() AndAlso
|
||||||
|
x.CMsgErrorType = 6.ToString() AndAlso
|
||||||
|
x.CMsgErrorIndex = "" AndAlso
|
||||||
|
x.CMsgErrorNumber = ErrorNumber(nIndex).ToString() AndAlso
|
||||||
|
x.CMsgErrorLine = "" AndAlso
|
||||||
|
x.CMsgErrorMessage = "")
|
||||||
|
' se il messaggio e' gia' in lista
|
||||||
|
If Not IsNothing(NewMessageInList) Then
|
||||||
|
' lo segno come trovato
|
||||||
|
NewMessageInList.bFound = True
|
||||||
|
Else
|
||||||
|
' lo aggiungo
|
||||||
|
Dim NewMessage As ReadMessages = New ReadMessages(0.ToString(),
|
||||||
|
6.ToString(),
|
||||||
|
"",
|
||||||
|
ErrorNumber(index).ToString(),
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"")
|
||||||
|
NewMessage.bFound = True
|
||||||
|
m_ReadFXMessages.Add(NewMessage)
|
||||||
|
m_NUMAlarmCallbackDlg(0, 0, 6.ToString(), "", ErrorNumber(index).ToString(), "", "", "")
|
||||||
|
End If
|
||||||
|
Next
|
||||||
|
|
||||||
|
' cancello messaggi non trovati
|
||||||
|
For Index = m_ReadFXMessages.Count - 1 To 0 Step -1
|
||||||
|
Dim Message As ReadMessages = m_ReadFXMessages(Index)
|
||||||
|
If Not Message.bFound Then
|
||||||
|
m_NUMAlarmCallbackDlg(Message.CMsgCncNumber, 1, Message.CMsgErrorType, Message.CMsgErrorIndex, Message.CMsgErrorNumber, Message.CMsgErrorLine, Message.CMsgErrorMessage, Message.CMsgErrorAdditional)
|
||||||
|
m_ReadFXMessages.RemoveAt(Index)
|
||||||
|
End If
|
||||||
|
Next
|
||||||
|
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
#Region "PLC Variables"
|
||||||
|
|
||||||
|
Private Sub objDPlcVariables_ReadVariablesChanged(ByVal index As Object, ByVal value As Object)
|
||||||
|
Dim _ObjIndex As Object() = CType(index, Object())
|
||||||
|
Dim _ObjValue As Object() = CType(value, Object())
|
||||||
|
|
||||||
|
For index = 0 To _ObjIndex.Length - 1
|
||||||
|
Dim nObjIndex As Integer = Integer.Parse(_ObjIndex(index).ToString())
|
||||||
|
Dim CommVar As CommVar = m_ReadingVars.FirstOrDefault(Function(x) Not IsNothing(x) AndAlso
|
||||||
|
x.Paragraph = CommVar.Paragraphs.MAIN AndAlso
|
||||||
|
x.nType = CommVar.Types.CN AndAlso
|
||||||
|
x.Index = nObjIndex)
|
||||||
|
If Not IsNothing(CommVar) Then
|
||||||
|
CommVar.SetValue(_ObjValue(index).ToString())
|
||||||
|
End If
|
||||||
|
Next
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub objDPlcVariables_ReadPLCVariablesChanged(ByVal index As Object, ByVal value As Object)
|
||||||
|
Dim _ObjIndex As Object() = CType(index, Object())
|
||||||
|
Dim _ObjValue As Object() = CType(value, Object())
|
||||||
|
|
||||||
|
For index = 0 To _ObjIndex.Length - 1
|
||||||
|
Dim nObjIndex As Integer = Integer.Parse(_ObjIndex(index).ToString())
|
||||||
|
Dim CommVar As CommVar = m_ReadingVars.FirstOrDefault(Function(x) Not IsNothing(x) AndAlso
|
||||||
|
x.Paragraph = CommVar.Paragraphs.MAIN AndAlso
|
||||||
|
x.nType = CommVar.Types.PLC AndAlso
|
||||||
|
x.Index = nObjIndex)
|
||||||
|
If Not IsNothing(CommVar) Then
|
||||||
|
CommVar.SetValue(_ObjValue(index).ToString())
|
||||||
|
End If
|
||||||
|
Next
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub objDPlcVariables_InvalidReadList(ByVal errorCode As Short)
|
||||||
|
EgtOutLog("InvalidReadList - ErrorCode: " & errorCode)
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub objDPlcVariables_AbortReadVariables()
|
||||||
|
EgtOutLog("InvalidReadList - ErrorCode: ")
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub objDPlcVariables_ReadOnceVariablesChanged(ByVal lHandle As Integer, ByVal value As Object)
|
||||||
|
'Dim _ObjValue As Object() = CType(value, Object())
|
||||||
|
|
||||||
|
'If lHandle = 10 Then
|
||||||
|
|
||||||
|
' For i As Integer = 0 To _ObjValue.Length - 1
|
||||||
|
' _ReadPlcVariableOnetime(i).Invoke(CType(Function()
|
||||||
|
' _ReadPlcVariableOnetime(i).Text = _ObjValue(i).ToString()
|
||||||
|
' End Function, MethodInvoker))
|
||||||
|
' Next
|
||||||
|
'End If
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub objDPlcVariables_VariablesWritten2(ByVal lHandle As Integer, ByVal errorCode As Integer)
|
||||||
|
Dim bOk As Boolean = (errorCode <> 0)
|
||||||
|
m_ResultCallbackDlg(CommandTypes.WRITE, If(bOk, CommandStates.OK, CommandStates.ERROR_), ResultTypes.RESULT, If(bOk, "", "Error VariablesWritten2 :" & " " & errorCode.ToString()))
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
#End Region ' PLC Variables
|
||||||
|
|
||||||
|
#Region "ReadELS"
|
||||||
|
|
||||||
|
Private Sub objDReadELS_ValueChanged(ByVal nHandle As Short, ByVal dValue As Double, ByVal nerrorCode As Short)
|
||||||
|
If nHandle < 1 OrElse nHandle > m_ReadingVars.Count - 1 Then Return
|
||||||
|
If nerrorCode <> 0 Then EgtOutLog(" Error in Validchanged2 : " & nerrorCode & " Handle : " & nHandle)
|
||||||
|
|
||||||
|
Try
|
||||||
|
m_ReadingVars(nHandle - 1).SetValue(dValue.ToString("F04"))
|
||||||
|
Catch Ex As Exception
|
||||||
|
EgtOutLog(Ex.Message)
|
||||||
|
End Try
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
#End Region ' ReadELS
|
||||||
|
|
||||||
|
#Region "File transfer"
|
||||||
|
|
||||||
|
Private Sub objDFileTransfer_Completed(ByVal lHandle As Integer)
|
||||||
|
If lHandle = 10 OrElse lHandle = 20 Then
|
||||||
|
'resetto contatore di trasferimento
|
||||||
|
m_BytesTransferedCounter = 0
|
||||||
|
EgtOutLog("Up- or Download successful completed:" & " " & lHandle.ToString())
|
||||||
|
' aggiorno variabili del MAIN
|
||||||
|
Dim ISONumVariable As Variable = Map.refMachCommandMessagePanelVM.MainVariablesList.FirstOrDefault(Function(x) x.sName = ISO_NUM)
|
||||||
|
Dim ISOSentVariable As Variable = Map.refMachCommandMessagePanelVM.MainVariablesList.FirstOrDefault(Function(x) x.sName = ISO_SENT)
|
||||||
|
Dim SentMachGroup As MyMachGroupVM = Map.refSupervisorMachGroupPanelVM.MachGroupVMList.FirstOrDefault(Function(x As MyMachGroupVM) x.bSendingToMachine)
|
||||||
|
If Not IsNothing(SentMachGroup) Then
|
||||||
|
ISONumVariable.sValue = SentMachGroup.Name
|
||||||
|
ISOSentVariable.sValue = 0
|
||||||
|
SentMachGroup.SetSentToMachine(True)
|
||||||
|
End If
|
||||||
|
End If
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub objDFileTransfer_TransferStarted(ByVal lHandle As Integer)
|
||||||
|
EgtOutLog("Transfer has been started !")
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub objDFileTransfer_Failed(ByVal lHandle As Integer, ByVal nSeq As Short, ByVal nReason As Short)
|
||||||
|
EgtOutLog("Sequence:" & " " & nSeq.ToString() & " " & "Reason:" & " " & nReason.ToString())
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub objDFileTransfer_BytesTransfered(ByVal lHandle As Integer, ByVal lBytes As Integer)
|
||||||
|
m_BytesTransferedCounter += lBytes
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
#End Region ' File transfer
|
||||||
|
|
||||||
|
#Region "Position"
|
||||||
|
|
||||||
|
Private Sub objDPosition_PositionChanged(ByVal vtArrayIndex As Object, ByVal vtArrayValues As Object)
|
||||||
|
Dim _indexArray As Object() = CType(vtArrayIndex, Object())
|
||||||
|
Dim _valueArray As Object() = CType(vtArrayValues, Object())
|
||||||
|
|
||||||
|
For _index As Integer = 0 To _indexArray.Length - 1
|
||||||
|
|
||||||
|
Dim _index1 As Int16 = CType(_indexArray.GetValue(_index), Int16)
|
||||||
|
Dim _axisPosValue As Int32 = CType(_valueArray.GetValue(_index), Int32)
|
||||||
|
Dim _axisRefPosValue As Single = CSng(_axisPosValue) / m_LinearAxisPrecision
|
||||||
|
m_AxisCoordinatesCallbackDlg(_axisPosValue, _index1)
|
||||||
|
|
||||||
|
Next
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
#End Region ' Position
|
||||||
|
|
||||||
|
#Region "MDI"
|
||||||
|
|
||||||
|
Private Sub objDMdiCommand_CommandWritten(ByVal retVal As Short)
|
||||||
|
If retVal <> 0 Then
|
||||||
|
EgtOutLog("Error CommandWritten :" & " " & retVal.ToString())
|
||||||
|
End If
|
||||||
|
Map.refMDIPageVM.SendMDIResult(retVal)
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
#End Region ' MDI
|
||||||
|
|
||||||
|
#Region "Variables"
|
||||||
|
|
||||||
|
Private Sub objDVariables_VariableWritten2(ByVal lHandle As Integer, ByVal errorCode As Short)
|
||||||
|
If lHandle <> 2 OrElse errorCode <> 0 Then
|
||||||
|
EgtOutLog(" Error on objDVariables_VariableWritten2 : handle " & lHandle.ToString() & " errorCode : " & errorCode.ToString())
|
||||||
|
End If
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub objDVariables_VariableWritten(ByVal errorCode As Short)
|
||||||
|
If errorCode <> 0 Then
|
||||||
|
EgtOutLog(" Error on objDVariables_VariableWritten errorCode : " & errorCode.ToString())
|
||||||
|
End If
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub objDVariables_ValueChanged(ByVal vtArrayIndex As Object, ByVal vtArrayValues As Object)
|
||||||
|
Dim AplArrayIndex As Object() = CType(vtArrayIndex, Object())
|
||||||
|
Dim AplArrayValue As Object() = CType(vtArrayValues, Object())
|
||||||
|
|
||||||
|
For index As Integer = 0 To AplArrayIndex.Length - 1
|
||||||
|
Dim nHandle As Integer = CType(AplArrayIndex.GetValue(index), Int16)
|
||||||
|
If nHandle < 1 OrElse nHandle > m_ReadingVars.Count - 1 Then Return
|
||||||
|
Dim dValue As Double = CDbl(AplArrayValue.GetValue(index))
|
||||||
|
Try
|
||||||
|
m_ReadingVars(nHandle - 1).SetValue(dValue.ToString("F04"))
|
||||||
|
Catch Ex As Exception
|
||||||
|
EgtOutLog(Ex.Message)
|
||||||
|
End Try
|
||||||
|
Next
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
#End Region ' Variables
|
||||||
|
|
||||||
|
#Region "CNCMode"
|
||||||
|
|
||||||
|
Private Sub objDCncMode_ValueChanged(ByVal mode As Short, ByVal preselected As Short)
|
||||||
|
m_OpModeCallbackDlg(mode)
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
#End Region ' CNCMode
|
||||||
|
|
||||||
|
#Region "ReadOperatorMessage"
|
||||||
|
|
||||||
|
Private Sub objDReadOperatorMessage_ValueChanged(ByVal line As Object)
|
||||||
|
' resetto stati bFound
|
||||||
|
For Each Message In m_ReadOperatorMessages
|
||||||
|
Message.bFound = False
|
||||||
|
Next
|
||||||
|
Dim objLine As String = TryCast(line, String)
|
||||||
|
Dim OpMsgErrType As Integer = 30
|
||||||
|
Dim NewMessageInList As ReadMessages = m_ReadOperatorMessages.FirstOrDefault(Function(x) x.CMsgCncNumber = 0 AndAlso
|
||||||
|
x.CMsgErrorType = OpMsgErrType.ToString() AndAlso
|
||||||
|
x.CMsgErrorIndex = "" AndAlso
|
||||||
|
x.CMsgErrorNumber = "" AndAlso
|
||||||
|
x.CMsgErrorLine = "" AndAlso
|
||||||
|
x.CMsgErrorMessage = objLine AndAlso
|
||||||
|
x.CMsgErrorAdditional = "")
|
||||||
|
' se il messaggio e' gia' in lista
|
||||||
|
If Not IsNothing(NewMessageInList) Then
|
||||||
|
' lo segno come trovato
|
||||||
|
NewMessageInList.bFound = True
|
||||||
|
Else
|
||||||
|
' se e' diverso da stringa vuota
|
||||||
|
If Not String.IsNullOrWhiteSpace(objLine.ToString()) Then
|
||||||
|
' lo aggiungo
|
||||||
|
Dim NewMessage As ReadMessages = New ReadMessages(0,
|
||||||
|
OpMsgErrType.ToString(),
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
objLine,
|
||||||
|
"")
|
||||||
|
NewMessage.bFound = True
|
||||||
|
m_ReadOperatorMessages.Add(NewMessage)
|
||||||
|
m_NUMAlarmCallbackDlg(0, 0, OpMsgErrType.ToString(), "", "", "", objLine, "")
|
||||||
|
End If
|
||||||
|
End If
|
||||||
|
|
||||||
|
' cancello messaggi non trovati
|
||||||
|
If m_ReadOperatorMessages.Count > 0 Then
|
||||||
|
For Index = m_ReadOperatorMessages.Count - 1 To 0 Step -1
|
||||||
|
Dim Message As ReadMessages = m_ReadOperatorMessages(Index)
|
||||||
|
If Not Message.bFound Then
|
||||||
|
m_NUMAlarmCallbackDlg(Message.CMsgCncNumber, 1, Message.CMsgErrorType, Message.CMsgErrorIndex, Message.CMsgErrorNumber, Message.CMsgErrorLine, Message.CMsgErrorMessage, Message.CMsgErrorAdditional)
|
||||||
|
m_ReadOperatorMessages.RemoveAt(Index)
|
||||||
|
End If
|
||||||
|
Next
|
||||||
|
End If
|
||||||
|
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
#End Region ' ReadOperatorMessage
|
||||||
|
|
||||||
|
#End Region ' EVENTS
|
||||||
|
|
||||||
|
End Class
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -529,13 +529,14 @@ Public Class NUMFlexiumComm
|
|||||||
Dim AplErrorAdditional As Object() = CType(ErrorAdditional, Object())
|
Dim AplErrorAdditional As Object() = CType(ErrorAdditional, Object())
|
||||||
|
|
||||||
For index As Integer = 0 To numberOfError - 1
|
For index As Integer = 0 To numberOfError - 1
|
||||||
|
Dim nIndex As Integer = index
|
||||||
Dim NewMessageInList As ReadMessages = m_ReadFXMessages.FirstOrDefault(Function(x) x.CMsgCncNumber = AplCnCNumber AndAlso
|
Dim NewMessageInList As ReadMessages = m_ReadFXMessages.FirstOrDefault(Function(x) x.CMsgCncNumber = AplCnCNumber AndAlso
|
||||||
x.CMsgErrorType = AplErrorType(index).ToString() AndAlso
|
x.CMsgErrorType = AplErrorType(nIndex).ToString() AndAlso
|
||||||
x.CMsgErrorIndex = AplErrorIndex(index).ToString() AndAlso
|
x.CMsgErrorIndex = AplErrorIndex(nIndex).ToString() AndAlso
|
||||||
x.CMsgErrorNumber = AplErrorNumber(index).ToString() AndAlso
|
x.CMsgErrorNumber = AplErrorNumber(nIndex).ToString() AndAlso
|
||||||
x.CMsgErrorLine = AplErrorLine(index).ToString() AndAlso
|
x.CMsgErrorLine = AplErrorLine(nIndex).ToString() AndAlso
|
||||||
x.CMsgErrorMessage = AplErrorMessage(index).ToString() AndAlso
|
x.CMsgErrorMessage = AplErrorMessage(nIndex).ToString() AndAlso
|
||||||
x.CMsgErrorAdditional = AplErrorAdditional(index).ToString())
|
x.CMsgErrorAdditional = AplErrorAdditional(nIndex).ToString())
|
||||||
' se il messaggio e' gia' in lista
|
' se il messaggio e' gia' in lista
|
||||||
If Not IsNothing(NewMessageInList) Then
|
If Not IsNothing(NewMessageInList) Then
|
||||||
' lo segno come trovato
|
' lo segno come trovato
|
||||||
@@ -889,12 +890,13 @@ Public Class NUMFlexiumComm
|
|||||||
Dim objLine As Object() = CType(line, Object())
|
Dim objLine As Object() = CType(line, Object())
|
||||||
Dim OpMsgErrType As Integer = 30
|
Dim OpMsgErrType As Integer = 30
|
||||||
For index As Integer = 0 To objMsgNumber.Length - 1
|
For index As Integer = 0 To objMsgNumber.Length - 1
|
||||||
|
Dim nIndex As Integer = index
|
||||||
Dim NewMessageInList As ReadMessages = m_ReadOperatorMessages.FirstOrDefault(Function(x) x.CMsgCncNumber = 0 AndAlso
|
Dim NewMessageInList As ReadMessages = m_ReadOperatorMessages.FirstOrDefault(Function(x) x.CMsgCncNumber = 0 AndAlso
|
||||||
x.CMsgErrorType = OpMsgErrType.ToString() AndAlso
|
x.CMsgErrorType = OpMsgErrType.ToString() AndAlso
|
||||||
x.CMsgErrorIndex = "" AndAlso
|
x.CMsgErrorIndex = "" AndAlso
|
||||||
x.CMsgErrorNumber = objMsgNumber(index).ToString() AndAlso
|
x.CMsgErrorNumber = objMsgNumber(nIndex).ToString() AndAlso
|
||||||
x.CMsgErrorLine = "" AndAlso
|
x.CMsgErrorLine = "" AndAlso
|
||||||
x.CMsgErrorMessage = objLine(index).ToString() AndAlso
|
x.CMsgErrorMessage = objLine(nIndex).ToString() AndAlso
|
||||||
x.CMsgErrorAdditional = "")
|
x.CMsgErrorAdditional = "")
|
||||||
' se il messaggio e' gia' in lista
|
' se il messaggio e' gia' in lista
|
||||||
If Not IsNothing(NewMessageInList) Then
|
If Not IsNothing(NewMessageInList) Then
|
||||||
|
|||||||
@@ -93,7 +93,7 @@ Public Class TPAComm
|
|||||||
System.Runtime.Remoting.Channels.ChannelServices.RegisterChannel(channel, False)
|
System.Runtime.Remoting.Channels.ChannelServices.RegisterChannel(channel, False)
|
||||||
Dim remoteType As System.Runtime.Remoting.WellKnownClientTypeEntry = New System.Runtime.Remoting.WellKnownClientTypeEntry(GetType(ISOCNC.Remoting_Server), serverURI)
|
Dim remoteType As System.Runtime.Remoting.WellKnownClientTypeEntry = New System.Runtime.Remoting.WellKnownClientTypeEntry(GetType(ISOCNC.Remoting_Server), serverURI)
|
||||||
System.Runtime.Remoting.RemotingConfiguration.RegisterWellKnownClientType(remoteType)
|
System.Runtime.Remoting.RemotingConfiguration.RegisterWellKnownClientType(remoteType)
|
||||||
Dim objectUri As String
|
Dim objectUri As String = Nothing
|
||||||
Dim messageSink As System.Runtime.Remoting.Messaging.IMessageSink = channel.CreateMessageSink("ipc://localhost:9090/IRemoteObject.rem", Nothing, objectUri)
|
Dim messageSink As System.Runtime.Remoting.Messaging.IMessageSink = channel.CreateMessageSink("ipc://localhost:9090/IRemoteObject.rem", Nothing, objectUri)
|
||||||
Console.WriteLine("The URI of the message sink is {0}.", objectUri)
|
Console.WriteLine("The URI of the message sink is {0}.", objectUri)
|
||||||
|
|
||||||
|
|||||||
@@ -17,6 +17,8 @@ Module ConstCommVar
|
|||||||
NULL = 0
|
NULL = 0
|
||||||
TPA = 1
|
TPA = 1
|
||||||
NUM_FLEXIUM = 2
|
NUM_FLEXIUM = 2
|
||||||
|
NUM_AXIUM_APSERVER = 3
|
||||||
|
NUM_AXIUM_PCTOOLKIT = 4
|
||||||
End Enum
|
End Enum
|
||||||
|
|
||||||
' Assi
|
' Assi
|
||||||
@@ -44,6 +46,14 @@ Module ConstCommVar
|
|||||||
Public Const RUNNING As String = "Running"
|
Public Const RUNNING As String = "Running"
|
||||||
' indice della lavorazione in corso (pareti NUM)
|
' indice della lavorazione in corso (pareti NUM)
|
||||||
Public Const MACHINDEX As String = "MachIndex"
|
Public Const MACHINDEX As String = "MachIndex"
|
||||||
|
' indice dell'utensile montato sulla testa 1
|
||||||
|
Public Const TOOLINDEX As String = "ToolIndex"
|
||||||
|
' indice dell'utensile montato sulla testa 1
|
||||||
|
Public Const TOOLINDEX2 As String = "ToolIndex2"
|
||||||
|
' variabile per lettura errori PLC bit a bit
|
||||||
|
Public Const PLC_MESSAGES As String = "PLC_Messages"
|
||||||
|
' variabile per leggere e scrivere permesso invio cn a macchina
|
||||||
|
Public Const SENDPERMISSION As String = "SendPermission"
|
||||||
|
|
||||||
Public Enum OPStates
|
Public Enum OPStates
|
||||||
Start = 1
|
Start = 1
|
||||||
|
|||||||
@@ -100,19 +100,27 @@
|
|||||||
<Prefer32Bit>false</Prefer32Bit>
|
<Prefer32Bit>false</Prefer32Bit>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Reference Include="BouncyCastle.Crypto, Version=1.8.2.0, Culture=neutral, PublicKeyToken=0e99375e54769942, processorArchitecture=MSIL">
|
<Reference Include="APLog">
|
||||||
<HintPath>..\packages\Portable.BouncyCastle.1.8.2\lib\net40\BouncyCastle.Crypto.dll</HintPath>
|
<HintPath>..\ExtLibs\APLog.dll</HintPath>
|
||||||
|
<EmbedInteropTypes>True</EmbedInteropTypes>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="APServer">
|
||||||
|
<HintPath>..\ExtLibs\APServer.dll</HintPath>
|
||||||
|
<EmbedInteropTypes>True</EmbedInteropTypes>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="BouncyCastle.Crypto, Version=1.8.5.0, Culture=neutral, PublicKeyToken=0e99375e54769942">
|
||||||
|
<HintPath>..\packages\BouncyCastle.1.8.5\lib\BouncyCastle.Crypto.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Csv, Version=1.0.31.0, Culture=neutral, processorArchitecture=MSIL">
|
<Reference Include="Csv, Version=1.0.31.0, Culture=neutral, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\Csv.1.0.31\lib\net40\Csv.dll</HintPath>
|
<HintPath>..\packages\Csv.1.0.31\lib\net40\Csv.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="EgtUILib, Version=2.3.2.1, Culture=neutral, processorArchitecture=MSIL">
|
<Reference Include="EgtUILib, Version=2.4.3.1, Culture=neutral, processorArchitecture=MSIL">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\..\..\..\..\..\EgtProg\Dll32\EgtUILib.dll</HintPath>
|
<HintPath>..\ExtLibs\EgtUILib.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="EgtWPFLib5, Version=2.3.1.1, Culture=neutral, processorArchitecture=MSIL">
|
<Reference Include="EgtWPFLib5, Version=2.4.2.1, Culture=neutral, processorArchitecture=MSIL">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\..\..\..\..\..\EgtProg\Dll32\EgtWPFLib5.dll</HintPath>
|
<HintPath>..\ExtLibs\EgtWPFLib5.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
|
<Reference Include="EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\EntityFramework.6.4.4\lib\net45\EntityFramework.dll</HintPath>
|
<HintPath>..\packages\EntityFramework.6.4.4\lib\net45\EntityFramework.dll</HintPath>
|
||||||
@@ -123,16 +131,31 @@
|
|||||||
<Reference Include="FluentFTP, Version=19.2.2.0, Culture=neutral, PublicKeyToken=f4af092b1d8df44f, processorArchitecture=MSIL">
|
<Reference Include="FluentFTP, Version=19.2.2.0, Culture=neutral, PublicKeyToken=f4af092b1d8df44f, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\FluentFTP.19.2.2\lib\net45\FluentFTP.dll</HintPath>
|
<HintPath>..\packages\FluentFTP.19.2.2\lib\net45\FluentFTP.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
|
<Reference Include="Google.Protobuf, Version=3.19.4.0, Culture=neutral, PublicKeyToken=a7d26565bac4d604, processorArchitecture=MSIL">
|
||||||
|
<HintPath>..\packages\Google.Protobuf.3.19.4\lib\net45\Google.Protobuf.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
<Reference Include="Interop.FXLog">
|
<Reference Include="Interop.FXLog">
|
||||||
<HintPath>..\..\..\EgtProg\EgtBEAMWALL\Interop.FXLog.dll</HintPath>
|
<HintPath>..\ExtLibs\Interop.FXLog.dll</HintPath>
|
||||||
<EmbedInteropTypes>True</EmbedInteropTypes>
|
<EmbedInteropTypes>True</EmbedInteropTypes>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Interop.FXServer">
|
<Reference Include="Interop.FXServer">
|
||||||
<HintPath>..\..\..\EgtProg\EgtBEAMWALL\Interop.FXServer.dll</HintPath>
|
<HintPath>..\ExtLibs\Interop.FXServer.dll</HintPath>
|
||||||
<EmbedInteropTypes>True</EmbedInteropTypes>
|
<EmbedInteropTypes>True</EmbedInteropTypes>
|
||||||
</Reference>
|
</Reference>
|
||||||
|
<Reference Include="Ionic.Zip, Version=1.9.1.8, Culture=neutral, PublicKeyToken=edbe51ad942a3f5c, processorArchitecture=MSIL">
|
||||||
|
<HintPath>..\packages\Ionic.Zip.1.9.1.8\lib\Ionic.Zip.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
<Reference Include="ISOCNC.Remoting">
|
<Reference Include="ISOCNC.Remoting">
|
||||||
<HintPath>..\..\..\Albatros\Bin\ISOCNC.Remoting.dll</HintPath>
|
<HintPath>..\ExtLibs\ISOCNC.Remoting.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="K4os.Compression.LZ4, Version=1.2.6.0, Culture=neutral, PublicKeyToken=2186fa9121ef231d, processorArchitecture=MSIL">
|
||||||
|
<HintPath>..\packages\K4os.Compression.LZ4.1.2.6\lib\net46\K4os.Compression.LZ4.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="K4os.Compression.LZ4.Streams, Version=1.2.6.0, Culture=neutral, PublicKeyToken=2186fa9121ef231d, processorArchitecture=MSIL">
|
||||||
|
<HintPath>..\packages\K4os.Compression.LZ4.Streams.1.2.6\lib\net46\K4os.Compression.LZ4.Streams.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="K4os.Hash.xxHash, Version=1.0.6.0, Culture=neutral, PublicKeyToken=32cd54395057cec3, processorArchitecture=MSIL">
|
||||||
|
<HintPath>..\packages\K4os.Hash.xxHash.1.0.6\lib\net46\K4os.Hash.xxHash.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.CSharp" />
|
<Reference Include="Microsoft.CSharp" />
|
||||||
<Reference Include="Microsoft.DotNet.PlatformAbstractions, Version=2.1.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
|
<Reference Include="Microsoft.DotNet.PlatformAbstractions, Version=2.1.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
|
||||||
@@ -141,15 +164,21 @@
|
|||||||
<Reference Include="Microsoft.Extensions.DependencyModel, Version=2.1.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
|
<Reference Include="Microsoft.Extensions.DependencyModel, Version=2.1.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\Microsoft.Extensions.DependencyModel.2.1.0\lib\net451\Microsoft.Extensions.DependencyModel.dll</HintPath>
|
<HintPath>..\packages\Microsoft.Extensions.DependencyModel.2.1.0\lib\net451\Microsoft.Extensions.DependencyModel.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="MySql.Data, Version=6.10.9.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d, processorArchitecture=MSIL">
|
<Reference Include="MySql.Data, Version=8.0.21.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\MySql.Data.6.10.9\lib\net452\MySql.Data.dll</HintPath>
|
<HintPath>..\packages\MySql.Data.8.0.21\lib\net452\MySql.Data.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="MySql.Data.Entity.EF6, Version=6.10.9.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d, processorArchitecture=MSIL">
|
<Reference Include="MySql.Data.EntityFramework, Version=8.0.21.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\MySql.Data.Entity.6.10.9\lib\net452\MySql.Data.Entity.EF6.dll</HintPath>
|
<HintPath>..\packages\MySql.Data.EntityFramework.8.0.21\lib\net452\MySql.Data.EntityFramework.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Newtonsoft.Json, Version=13.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
|
<Reference Include="Newtonsoft.Json, Version=13.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\Newtonsoft.Json.13.0.1\lib\net45\Newtonsoft.Json.dll</HintPath>
|
<HintPath>..\packages\Newtonsoft.Json.13.0.1\lib\net45\Newtonsoft.Json.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
|
<Reference Include="NLog, Version=5.0.0.0, Culture=neutral, PublicKeyToken=5120e14c03d0593c, processorArchitecture=MSIL">
|
||||||
|
<HintPath>..\packages\NLog.5.0.1\lib\net46\NLog.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Renci.SshNet, Version=2016.1.0.0, Culture=neutral, PublicKeyToken=1cee9f8bde3db106, processorArchitecture=MSIL">
|
||||||
|
<HintPath>..\packages\SSH.NET.2016.1.0\lib\net40\Renci.SshNet.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
<Reference Include="SdkApi.Core, Version=2.15.2634.0, Culture=neutral, processorArchitecture=MSIL">
|
<Reference Include="SdkApi.Core, Version=2.15.2634.0, Culture=neutral, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\Zebra.Printer.SDK.2.15.2634\lib\net471\SdkApi.Core.dll</HintPath>
|
<HintPath>..\packages\Zebra.Printer.SDK.2.15.2634\lib\net471\SdkApi.Core.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
@@ -162,6 +191,9 @@
|
|||||||
<Reference Include="SharpSnmpLib, Version=10.0.9.0, Culture=neutral, PublicKeyToken=4c00852d3788e005, processorArchitecture=MSIL">
|
<Reference Include="SharpSnmpLib, Version=10.0.9.0, Culture=neutral, PublicKeyToken=4c00852d3788e005, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\Lextm.SharpSnmpLib.10.0.9\lib\net452\SharpSnmpLib.dll</HintPath>
|
<HintPath>..\packages\Lextm.SharpSnmpLib.10.0.9\lib\net452\SharpSnmpLib.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
|
<Reference Include="System.Buffers, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||||
|
<HintPath>..\packages\System.Buffers.4.5.1\lib\net461\System.Buffers.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
<Reference Include="System.Collections.Specialized, Version=4.0.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
<Reference Include="System.Collections.Specialized, Version=4.0.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\System.Collections.Specialized.4.3.0\lib\net46\System.Collections.Specialized.dll</HintPath>
|
<HintPath>..\packages\System.Collections.Specialized.4.3.0\lib\net46\System.Collections.Specialized.dll</HintPath>
|
||||||
<Private>True</Private>
|
<Private>True</Private>
|
||||||
@@ -174,7 +206,11 @@
|
|||||||
<Reference Include="System.Core" />
|
<Reference Include="System.Core" />
|
||||||
<Reference Include="System.Drawing" />
|
<Reference Include="System.Drawing" />
|
||||||
<Reference Include="System.Drawing.Design" />
|
<Reference Include="System.Drawing.Design" />
|
||||||
|
<Reference Include="System.IO.Compression" />
|
||||||
<Reference Include="System.Management" />
|
<Reference Include="System.Management" />
|
||||||
|
<Reference Include="System.Memory, Version=4.0.1.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||||
|
<HintPath>..\packages\System.Memory.4.5.4\lib\net461\System.Memory.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
<Reference Include="System.Net.NameResolution, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
<Reference Include="System.Net.NameResolution, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\System.Net.NameResolution.4.3.0\lib\net46\System.Net.NameResolution.dll</HintPath>
|
<HintPath>..\packages\System.Net.NameResolution.4.3.0\lib\net46\System.Net.NameResolution.dll</HintPath>
|
||||||
<Private>True</Private>
|
<Private>True</Private>
|
||||||
@@ -185,6 +221,13 @@
|
|||||||
<Private>True</Private>
|
<Private>True</Private>
|
||||||
<Private>True</Private>
|
<Private>True</Private>
|
||||||
</Reference>
|
</Reference>
|
||||||
|
<Reference Include="System.Numerics" />
|
||||||
|
<Reference Include="System.Numerics.Vectors, Version=4.1.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||||
|
<HintPath>..\packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="System.Runtime.CompilerServices.Unsafe, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||||
|
<HintPath>..\packages\System.Runtime.CompilerServices.Unsafe.5.0.0\lib\net45\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
<Reference Include="System.Runtime.InteropServices.RuntimeInformation, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
<Reference Include="System.Runtime.InteropServices.RuntimeInformation, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\System.Runtime.InteropServices.RuntimeInformation.4.0.0\lib\net45\System.Runtime.InteropServices.RuntimeInformation.dll</HintPath>
|
<HintPath>..\packages\System.Runtime.InteropServices.RuntimeInformation.4.0.0\lib\net45\System.Runtime.InteropServices.RuntimeInformation.dll</HintPath>
|
||||||
<Private>True</Private>
|
<Private>True</Private>
|
||||||
@@ -208,6 +251,9 @@
|
|||||||
<Private>True</Private>
|
<Private>True</Private>
|
||||||
<Private>True</Private>
|
<Private>True</Private>
|
||||||
</Reference>
|
</Reference>
|
||||||
|
<Reference Include="Ubiety.Dns.Core, Version=2.2.1.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d, processorArchitecture=MSIL">
|
||||||
|
<HintPath>..\packages\MySql.Data.8.0.21\lib\net452\Ubiety.Dns.Core.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
<Reference Include="WindowsBase" />
|
<Reference Include="WindowsBase" />
|
||||||
<Reference Include="PresentationCore" />
|
<Reference Include="PresentationCore" />
|
||||||
<Reference Include="PresentationFramework" />
|
<Reference Include="PresentationFramework" />
|
||||||
@@ -215,6 +261,9 @@
|
|||||||
<Reference Include="ZebraPrinterSdk, Version=2.15.2634.0, Culture=neutral, processorArchitecture=MSIL">
|
<Reference Include="ZebraPrinterSdk, Version=2.15.2634.0, Culture=neutral, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\Zebra.Printer.SDK.2.15.2634\lib\net471\ZebraPrinterSdk.dll</HintPath>
|
<HintPath>..\packages\Zebra.Printer.SDK.2.15.2634\lib\net471\ZebraPrinterSdk.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
|
<Reference Include="Zstandard.Net, Version=1.1.7.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d, processorArchitecture=MSIL">
|
||||||
|
<HintPath>..\packages\MySql.Data.8.0.21\lib\net452\Zstandard.Net.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ApplicationDefinition Include="Application.xaml">
|
<ApplicationDefinition Include="Application.xaml">
|
||||||
@@ -233,9 +282,15 @@
|
|||||||
<DependentUpon>CalcPanelV.xaml</DependentUpon>
|
<DependentUpon>CalcPanelV.xaml</DependentUpon>
|
||||||
</Compile>
|
</Compile>
|
||||||
<Compile Include="CALCPanel\CALCPanelVM.vb" />
|
<Compile Include="CALCPanel\CALCPanelVM.vb" />
|
||||||
|
<Compile Include="Comms\NUMAxiumComm.vb" />
|
||||||
|
<Compile Include="Comms\NUMAxiumPcToolkitComm.vb" />
|
||||||
<Compile Include="Comms\NUMFlexiumComm.vb" />
|
<Compile Include="Comms\NUMFlexiumComm.vb" />
|
||||||
<Compile Include="Comms\TPAComm.vb" />
|
<Compile Include="Comms\TPAComm.vb" />
|
||||||
<Compile Include="Constants\ConstMachMsg.vb" />
|
<Compile Include="Constants\ConstMachMsg.vb" />
|
||||||
|
<Compile Include="MachineLogPage\MachineLogPageV.xaml.vb">
|
||||||
|
<DependentUpon>MachineLogPageV.xaml</DependentUpon>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="MachineLogPage\MachineLogPageVM.vb" />
|
||||||
<Compile Include="MDIPage\MDIPageV.xaml.vb">
|
<Compile Include="MDIPage\MDIPageV.xaml.vb">
|
||||||
<DependentUpon>MDIPageV.xaml</DependentUpon>
|
<DependentUpon>MDIPageV.xaml</DependentUpon>
|
||||||
</Compile>
|
</Compile>
|
||||||
@@ -318,6 +373,7 @@
|
|||||||
<DependentUpon>Dictionary.xaml</DependentUpon>
|
<DependentUpon>Dictionary.xaml</DependentUpon>
|
||||||
</Compile>
|
</Compile>
|
||||||
<Compile Include="Utility\DisableModifiedMgr.vb" />
|
<Compile Include="Utility\DisableModifiedMgr.vb" />
|
||||||
|
<Compile Include="Utility\LogEvent.vb" />
|
||||||
<Compile Include="Utility\LuaExec.vb" />
|
<Compile Include="Utility\LuaExec.vb" />
|
||||||
<Compile Include="Utility\ManageBTLParts.vb" />
|
<Compile Include="Utility\ManageBTLParts.vb" />
|
||||||
<Compile Include="Utility\Map.vb" />
|
<Compile Include="Utility\Map.vb" />
|
||||||
@@ -347,6 +403,10 @@
|
|||||||
<Generator>MSBuild:Compile</Generator>
|
<Generator>MSBuild:Compile</Generator>
|
||||||
<SubType>Designer</SubType>
|
<SubType>Designer</SubType>
|
||||||
</Page>
|
</Page>
|
||||||
|
<Page Include="MachineLogPage\MachineLogPageV.xaml">
|
||||||
|
<Generator>MSBuild:Compile</Generator>
|
||||||
|
<SubType>Designer</SubType>
|
||||||
|
</Page>
|
||||||
<Page Include="MDIPage\MDIPageV.xaml">
|
<Page Include="MDIPage\MDIPageV.xaml">
|
||||||
<SubType>Designer</SubType>
|
<SubType>Designer</SubType>
|
||||||
<Generator>MSBuild:Compile</Generator>
|
<Generator>MSBuild:Compile</Generator>
|
||||||
@@ -556,6 +616,18 @@
|
|||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Resource Include="Resources\ProjectManager\Save.png" />
|
<Resource Include="Resources\ProjectManager\Save.png" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<BootstrapperPackage Include=".NETFramework,Version=v4.7.2">
|
||||||
|
<Visible>False</Visible>
|
||||||
|
<ProductName>Microsoft .NET Framework 4.7.2 %28x86 and x64%29</ProductName>
|
||||||
|
<Install>true</Install>
|
||||||
|
</BootstrapperPackage>
|
||||||
|
<BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
|
||||||
|
<Visible>False</Visible>
|
||||||
|
<ProductName>.NET Framework 3.5 SP1</ProductName>
|
||||||
|
<Install>false</Install>
|
||||||
|
</BootstrapperPackage>
|
||||||
|
</ItemGroup>
|
||||||
<Import Project="$(MSBuildToolsPath)\Microsoft.VisualBasic.targets" />
|
<Import Project="$(MSBuildToolsPath)\Microsoft.VisualBasic.targets" />
|
||||||
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
|
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
|
|||||||
@@ -106,6 +106,7 @@
|
|||||||
<DataGrid.RowStyle>
|
<DataGrid.RowStyle>
|
||||||
<Style TargetType="DataGridRow" BasedOn="{StaticResource RowDataGrid_CustomHighLight}">
|
<Style TargetType="DataGridRow" BasedOn="{StaticResource RowDataGrid_CustomHighLight}">
|
||||||
<Setter Property="Background" Value="{Binding Production_Background}"/>
|
<Setter Property="Background" Value="{Binding Production_Background}"/>
|
||||||
|
<EventSetter Event="PreviewMouseDown" Handler="RawPartRow_PreviewMouseDown"/>
|
||||||
</Style>
|
</Style>
|
||||||
</DataGrid.RowStyle>
|
</DataGrid.RowStyle>
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,15 @@
|
|||||||
Public Class RawPartListV
|
Public Class RawPartListV
|
||||||
|
|
||||||
|
' funzione che permette di selezionare un RawPart anche quando gia' selezionato
|
||||||
|
Private Sub RawPartRow_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.SupervisorMachGroupPanelVM.SelectedMachGroup = Map.refProjectVM.SupervisorMachGroupPanelVM.SelectedMachGroup
|
||||||
|
End If
|
||||||
|
End If
|
||||||
|
End Sub
|
||||||
|
|
||||||
End Class
|
End Class
|
||||||
|
|||||||
@@ -10,6 +10,7 @@
|
|||||||
<RowDefinition Height="Auto"/>
|
<RowDefinition Height="Auto"/>
|
||||||
<RowDefinition Height="Auto"/>
|
<RowDefinition Height="Auto"/>
|
||||||
<RowDefinition Height="Auto"/>
|
<RowDefinition Height="Auto"/>
|
||||||
|
<RowDefinition Height="Auto"/>
|
||||||
<RowDefinition Height="{Binding GridDims[0].GridLen, Mode=TwoWay}"/>
|
<RowDefinition Height="{Binding GridDims[0].GridLen, Mode=TwoWay}"/>
|
||||||
<RowDefinition Height="Auto"/>
|
<RowDefinition Height="Auto"/>
|
||||||
<RowDefinition Height="{Binding GridDims[1].GridLen, Mode=TwoWay}"/>
|
<RowDefinition Height="{Binding GridDims[1].GridLen, Mode=TwoWay}"/>
|
||||||
@@ -32,12 +33,28 @@
|
|||||||
<TextBlock Text="OPState"/>
|
<TextBlock Text="OPState"/>
|
||||||
<TextBlock Text="{Binding SelOPState.Name}"/>
|
<TextBlock Text="{Binding SelOPState.Name}"/>
|
||||||
</UniformGrid>
|
</UniformGrid>
|
||||||
<Expander Grid.Row="3"
|
<UniformGrid Grid.Row="3"
|
||||||
|
Columns="6"
|
||||||
|
Visibility="{Binding E80000_Visibility}">
|
||||||
|
<TextBlock Text="E80000: "/>
|
||||||
|
<TextBlock Text="{Binding sE80000}"
|
||||||
|
HorizontalAlignment="Left"/>
|
||||||
|
<TextBlock Text="E80001: "/>
|
||||||
|
<TextBlock Text="{Binding sE80001}"
|
||||||
|
HorizontalAlignment="Left"/>
|
||||||
|
<TextBlock Text="E80002: "
|
||||||
|
Visibility="{Binding E80002_Visibility}"/>
|
||||||
|
<TextBlock Text="{Binding sE80002}"
|
||||||
|
HorizontalAlignment="Left"
|
||||||
|
Visibility="{Binding E80002_Visibility}"/>
|
||||||
|
</UniformGrid>
|
||||||
|
<Expander Grid.Row="4"
|
||||||
Header="Axis">
|
Header="Axis">
|
||||||
<EgtBEAMWALL:AxesPanelV DataContext="{StaticResource AxesPanelVM}"/>
|
<EgtBEAMWALL:AxesPanelV DataContext="{StaticResource AxesPanelVM}"/>
|
||||||
</Expander>
|
</Expander>
|
||||||
|
|
||||||
<Grid Grid.Row="4">
|
|
||||||
|
<Grid Grid.Row="5">
|
||||||
<Grid.RowDefinitions>
|
<Grid.RowDefinitions>
|
||||||
<RowDefinition Height="Auto"/>
|
<RowDefinition Height="Auto"/>
|
||||||
<RowDefinition Height="1*"/>
|
<RowDefinition Height="1*"/>
|
||||||
@@ -86,9 +103,9 @@
|
|||||||
Tag="{Binding Tag, RelativeSource={RelativeSource AncestorType={x:Type EgtBEAMWALL:LeftPanelV}}}"/>
|
Tag="{Binding Tag, RelativeSource={RelativeSource AncestorType={x:Type EgtBEAMWALL:LeftPanelV}}}"/>
|
||||||
</Grid>
|
</Grid>
|
||||||
|
|
||||||
<GridSplitter Height="3" HorizontalAlignment="Stretch" Grid.Row="5" ResizeDirection="Rows" ResizeBehavior="PreviousAndNext"/>
|
<GridSplitter Height="3" HorizontalAlignment="Stretch" Grid.Row="6" ResizeDirection="Rows" ResizeBehavior="PreviousAndNext"/>
|
||||||
|
|
||||||
<Grid Grid.Row="6">
|
<Grid Grid.Row="7">
|
||||||
<Grid.RowDefinitions>
|
<Grid.RowDefinitions>
|
||||||
<RowDefinition Height="Auto"/>
|
<RowDefinition Height="Auto"/>
|
||||||
<RowDefinition Height="1*"/>
|
<RowDefinition Height="1*"/>
|
||||||
@@ -112,7 +129,10 @@
|
|||||||
</Button>
|
</Button>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
|
|
||||||
<Grid Grid.Row="1">
|
<Grid Grid.Row="1" x:Name="PartFeatureGrid">
|
||||||
|
<Grid.Resources>
|
||||||
|
<EgtBEAMWALL:FeatureDataGridHeightConverter x:Key="FeatureDataGridHeightConverter"/>
|
||||||
|
</Grid.Resources>
|
||||||
<Grid.RowDefinitions>
|
<Grid.RowDefinitions>
|
||||||
<RowDefinition Height="1*"/>
|
<RowDefinition Height="1*"/>
|
||||||
<RowDefinition Height="Auto"/>
|
<RowDefinition Height="Auto"/>
|
||||||
@@ -120,7 +140,7 @@
|
|||||||
<EgtBEAMWALL:PartInRawPartListV DataContext="{StaticResource PartInRawPartListVM}"
|
<EgtBEAMWALL:PartInRawPartListV DataContext="{StaticResource PartInRawPartListVM}"
|
||||||
Tag="{Binding Tag.SelectedMachGroup, RelativeSource={RelativeSource AncestorType={x:Type EgtBEAMWALL:LeftPanelV}}}"/>
|
Tag="{Binding Tag.SelectedMachGroup, RelativeSource={RelativeSource AncestorType={x:Type EgtBEAMWALL:LeftPanelV}}}"/>
|
||||||
<EgtBEAMWALL:FeatureInPartInRawPartListV Grid.Row="1"
|
<EgtBEAMWALL:FeatureInPartInRawPartListV Grid.Row="1"
|
||||||
Height="80"
|
Height="{Binding ActualHeight, ElementName=PartFeatureGrid, Converter={StaticResource FeatureDataGridHeightConverter}}"
|
||||||
DataContext="{StaticResource FeatureInPartInRawPartListVM}"
|
DataContext="{StaticResource FeatureInPartInRawPartListVM}"
|
||||||
Tag="{Binding Tag.SelectedMachGroup.SelPart, RelativeSource={RelativeSource AncestorType={x:Type EgtBEAMWALL:LeftPanelV}}}"
|
Tag="{Binding Tag.SelectedMachGroup.SelPart, RelativeSource={RelativeSource AncestorType={x:Type EgtBEAMWALL:LeftPanelV}}}"
|
||||||
Visibility="{Binding DataContext.FeatureList_Visibility, RelativeSource={RelativeSource AncestorType={x:Type EgtBEAMWALL:LeftPanelV}}}"/>
|
Visibility="{Binding DataContext.FeatureList_Visibility, RelativeSource={RelativeSource AncestorType={x:Type EgtBEAMWALL:LeftPanelV}}}"/>
|
||||||
|
|||||||
@@ -90,6 +90,9 @@ Public Class LeftPanelVM
|
|||||||
If value.Id = OPModes.Mdi Then
|
If value.Id = OPModes.Mdi Then
|
||||||
' mostro pagina comandi MDI
|
' mostro pagina comandi MDI
|
||||||
Map.refProjectVM.SetSelTabPage(ProjectVM.TabPages.MDI)
|
Map.refProjectVM.SetSelTabPage(ProjectVM.TabPages.MDI)
|
||||||
|
ElseIf Map.refCALCPanelVM.bMachineLog Then
|
||||||
|
' mostro log macchina
|
||||||
|
Map.refProjectVM.SetSelTabPage(ProjectVM.TabPages.MACHINELOG)
|
||||||
Else
|
Else
|
||||||
' mostro scena
|
' mostro scena
|
||||||
Map.refProjectVM.SetSelTabPage(ProjectVM.TabPages.SCENE)
|
Map.refProjectVM.SetSelTabPage(ProjectVM.TabPages.SCENE)
|
||||||
@@ -102,6 +105,9 @@ Public Class LeftPanelVM
|
|||||||
If value.Id = OPModes.Mdi Then
|
If value.Id = OPModes.Mdi Then
|
||||||
' mostro pagina comandi MDI
|
' mostro pagina comandi MDI
|
||||||
Map.refProjectVM.SetSelTabPage(ProjectVM.TabPages.MDI)
|
Map.refProjectVM.SetSelTabPage(ProjectVM.TabPages.MDI)
|
||||||
|
ElseIf Map.refCALCPanelVM.bMachineLog Then
|
||||||
|
' mostro log macchina
|
||||||
|
Map.refProjectVM.SetSelTabPage(ProjectVM.TabPages.MACHINELOG)
|
||||||
Else
|
Else
|
||||||
' mostro scena
|
' mostro scena
|
||||||
Map.refProjectVM.SetSelTabPage(ProjectVM.TabPages.SCENE)
|
Map.refProjectVM.SetSelTabPage(ProjectVM.TabPages.SCENE)
|
||||||
@@ -109,6 +115,36 @@ Public Class LeftPanelVM
|
|||||||
m_SelOPMode = value
|
m_SelOPMode = value
|
||||||
NotifyPropertyChanged(NameOf(SelOPMode))
|
NotifyPropertyChanged(NameOf(SelOPMode))
|
||||||
End Sub
|
End Sub
|
||||||
|
Public ReadOnly Property sE80000 As String
|
||||||
|
Get
|
||||||
|
Dim MachIndexVar As Variable = Map.refMachCommandMessagePanelVM.MainVariablesList.FirstOrDefault(Function(x) x.sName = MACHINDEX)
|
||||||
|
Return If(IsNothing(MachIndexVar), "", MachIndexVar.sValue)
|
||||||
|
End Get
|
||||||
|
End Property
|
||||||
|
Public ReadOnly Property sE80001 As String
|
||||||
|
Get
|
||||||
|
Dim ToolIndexVar As Variable = Map.refMachCommandMessagePanelVM.MainVariablesList.FirstOrDefault(Function(x) x.sName = TOOLINDEX)
|
||||||
|
Return If(IsNothing(ToolIndexVar), "", ToolIndexVar.sValue)
|
||||||
|
End Get
|
||||||
|
End Property
|
||||||
|
Public ReadOnly Property sE80002 As String
|
||||||
|
Get
|
||||||
|
Dim ToolIndex2Var As Variable = Map.refMachCommandMessagePanelVM.MainVariablesList.FirstOrDefault(Function(x) x.sName = TOOLINDEX2)
|
||||||
|
Return If(IsNothing(ToolIndex2Var), "", ToolIndex2Var.sValue)
|
||||||
|
End Get
|
||||||
|
End Property
|
||||||
|
Public Property m_E80000_Visibility As Visibility
|
||||||
|
Public ReadOnly Property E80000_Visibility As Visibility
|
||||||
|
Get
|
||||||
|
Return m_E80000_Visibility
|
||||||
|
End Get
|
||||||
|
End Property
|
||||||
|
Public Property m_E80002_Visibility As Visibility
|
||||||
|
Public ReadOnly Property E80002_Visibility As Visibility
|
||||||
|
Get
|
||||||
|
Return m_E80002_Visibility
|
||||||
|
End Get
|
||||||
|
End Property
|
||||||
|
|
||||||
Private m_bRestart As Boolean = False
|
Private m_bRestart As Boolean = False
|
||||||
Public Property bRestart As Boolean
|
Public Property bRestart As Boolean
|
||||||
@@ -229,7 +265,7 @@ Public Class LeftPanelVM
|
|||||||
|
|
||||||
Public ReadOnly Property OPMode_Visibility As Visibility
|
Public ReadOnly Property OPMode_Visibility As Visibility
|
||||||
Get
|
Get
|
||||||
Return If(CurrentMachine.NCType = NCTypes.NUM_FLEXIUM, Visibility.Visible, Visibility.Collapsed)
|
Return If(CurrentMachine.NCType = NCTypes.NUM_FLEXIUM Or CurrentMachine.NCType = NCTypes.NUM_AXIUM_APSERVER Or CurrentMachine.NCType = NCTypes.NUM_AXIUM_PCTOOLKIT, Visibility.Visible, Visibility.Collapsed)
|
||||||
End Get
|
End Get
|
||||||
End Property
|
End Property
|
||||||
|
|
||||||
@@ -341,7 +377,7 @@ Public Class LeftPanelVM
|
|||||||
' carico stati della macchina
|
' carico stati della macchina
|
||||||
Select Case NCType
|
Select Case NCType
|
||||||
Case NCTypes.TPA
|
Case NCTypes.TPA
|
||||||
Case NCTypes.NUM_FLEXIUM
|
Case NCTypes.NUM_FLEXIUM, NCTypes.NUM_AXIUM_APSERVER, NCTypes.NUM_AXIUM_PCTOOLKIT
|
||||||
m_ChannelList = New List(Of IdNameStruct)
|
m_ChannelList = New List(Of IdNameStruct)
|
||||||
Dim ChannelIndex As Integer = 1
|
Dim ChannelIndex As Integer = 1
|
||||||
Dim ChannelString As String = ""
|
Dim ChannelString As String = ""
|
||||||
@@ -390,7 +426,7 @@ Public Class LeftPanelVM
|
|||||||
New OPState("Pending", OPStates.Pending),
|
New OPState("Pending", OPStates.Pending),
|
||||||
New OPState("Unspecified", OPStates.Unspecified)
|
New OPState("Unspecified", OPStates.Unspecified)
|
||||||
}
|
}
|
||||||
Case NCTypes.NUM_FLEXIUM
|
Case NCTypes.NUM_FLEXIUM, NCTypes.NUM_AXIUM_APSERVER, NCTypes.NUM_AXIUM_PCTOOLKIT
|
||||||
m_OPStateList = New List(Of OPState) From {
|
m_OPStateList = New List(Of OPState) From {
|
||||||
New OPState("Start", OPStates.Start),
|
New OPState("Start", OPStates.Start),
|
||||||
New OPState("Stop", OPStates.Stop),
|
New OPState("Stop", OPStates.Stop),
|
||||||
@@ -410,7 +446,7 @@ Public Class LeftPanelVM
|
|||||||
m_OPModeList = New List(Of OPState) From {
|
m_OPModeList = New List(Of OPState) From {
|
||||||
New OPState("Manual", OPModes.Manual)
|
New OPState("Manual", OPModes.Manual)
|
||||||
}
|
}
|
||||||
Case NCTypes.NUM_FLEXIUM
|
Case NCTypes.NUM_FLEXIUM, NCTypes.NUM_AXIUM_APSERVER, NCTypes.NUM_AXIUM_PCTOOLKIT
|
||||||
m_OPModeList = New List(Of OPState) From {
|
m_OPModeList = New List(Of OPState) From {
|
||||||
New OPState("Auto", OPModes.Auto),
|
New OPState("Auto", OPModes.Auto),
|
||||||
New OPState("Single", OPModes.Single),
|
New OPState("Single", OPModes.Single),
|
||||||
@@ -421,6 +457,28 @@ Public Class LeftPanelVM
|
|||||||
End Select
|
End Select
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
|
Friend Sub SetE80000Visibility()
|
||||||
|
' imposto visibilità variabili E80000 e seconda del tipo di controllo
|
||||||
|
If CurrentMachine.NCType = NCTypes.TPA Then
|
||||||
|
m_E80000_Visibility = Visibility.Collapsed
|
||||||
|
m_E80002_Visibility = Visibility.Collapsed
|
||||||
|
Else
|
||||||
|
m_E80000_Visibility = Visibility.Visible
|
||||||
|
m_E80002_Visibility = Visibility.Collapsed
|
||||||
|
Dim ReadVar As String = ""
|
||||||
|
Dim Index = 1
|
||||||
|
While GetPrivateProfileString(S_MAINVARIABLES, Index, "", ReadVar, CurrentMachine.sMachIniFile) <> 0
|
||||||
|
If ReadVar.StartsWith(TOOLINDEX2) Then
|
||||||
|
m_E80002_Visibility = Visibility.Visible
|
||||||
|
Exit While
|
||||||
|
End If
|
||||||
|
Index += 1
|
||||||
|
End While
|
||||||
|
End If
|
||||||
|
NotifyPropertyChanged(NameOf(E80000_Visibility))
|
||||||
|
NotifyPropertyChanged(NameOf(E80002_Visibility))
|
||||||
|
End Sub
|
||||||
|
|
||||||
Friend Sub UpdateButtonIsEnabledState()
|
Friend Sub UpdateButtonIsEnabledState()
|
||||||
NotifyPropertyChanged(NameOf(MoveRawPart_IsEnabled))
|
NotifyPropertyChanged(NameOf(MoveRawPart_IsEnabled))
|
||||||
NotifyPropertyChanged(NameOf(DoneRawPart_IsEnabled))
|
NotifyPropertyChanged(NameOf(DoneRawPart_IsEnabled))
|
||||||
@@ -602,6 +660,12 @@ Public Class LeftPanelVM
|
|||||||
If IsNothing(MachGroup) OrElse IsNothing(Part) Then Return
|
If IsNothing(MachGroup) OrElse IsNothing(Part) Then Return
|
||||||
' se ora d'inizio non e' gia' fissata
|
' se ora d'inizio non e' gia' fissata
|
||||||
Dim Time As DateTime = DateTime.Now()
|
Dim Time As DateTime = DateTime.Now()
|
||||||
|
If Part.nProduction_State = ItemState.Scrapped Then
|
||||||
|
' fare domanda se modificare quantita' aggiunti se viene resettato un pezzo scraped??
|
||||||
|
'If MessageBox.Show("There are scraped parts in this bar. Would you like to add them to the added quantity?", "", MessageBoxButton.YesNo, MessageBoxImage.Information) = MessageBoxResult.Yes Then
|
||||||
|
' DbControllers.m_StatusMapController.UpdateAction("", Map.refSupervisorManagerVM.CurrProd.nProdId, Part.nPartId, StatusMapItemType.Part, StatusMapOpType.AddQtyForUnscraped, "")
|
||||||
|
'End If
|
||||||
|
End If
|
||||||
If Part.dtStartTime <> DateTime.MinValue Then
|
If Part.dtStartTime <> DateTime.MinValue Then
|
||||||
DbControllers.m_PartController.UpdateStart(Map.refSupervisorManagerVM.CurrProd.nProdId, MachGroup.Id, Part.nPartId, DateTime.MinValue)
|
DbControllers.m_PartController.UpdateStart(Map.refSupervisorManagerVM.CurrProd.nProdId, MachGroup.Id, Part.nPartId, DateTime.MinValue)
|
||||||
DbControllers.m_PartController.UpdateEnd(Map.refSupervisorManagerVM.CurrProd.nProdId, MachGroup.Id, Part.nPartId, DateTime.MinValue)
|
DbControllers.m_PartController.UpdateEnd(Map.refSupervisorManagerVM.CurrProd.nProdId, MachGroup.Id, Part.nPartId, DateTime.MinValue)
|
||||||
@@ -734,6 +798,7 @@ Public Class LeftPanelVM
|
|||||||
End If
|
End If
|
||||||
Next
|
Next
|
||||||
SetDonePart(SelMachGroup, SelMachGroup.SelPart)
|
SetDonePart(SelMachGroup, SelMachGroup.SelPart)
|
||||||
|
Map.refProjectVM.SupervisorMachGroupPanelVM.SelectedMachGroup = SelMachGroup
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
Public Sub SetDonePart(MachGroup As MyMachGroupVM, Part As PartVM)
|
Public Sub SetDonePart(MachGroup As MyMachGroupVM, Part As PartVM)
|
||||||
@@ -755,6 +820,14 @@ Public Class LeftPanelVM
|
|||||||
' sposto MachGroup in lista come ultimo dei pronti da produrre
|
' sposto MachGroup in lista come ultimo dei pronti da produrre
|
||||||
Dim OldIndex As Integer = Map.refProjectVM.SupervisorMachGroupPanelVM.MachGroupVMList.IndexOf(MachGroup)
|
Dim OldIndex As Integer = Map.refProjectVM.SupervisorMachGroupPanelVM.MachGroupVMList.IndexOf(MachGroup)
|
||||||
MachGroup.SetProductionIndex(NewIndex + 1)
|
MachGroup.SetProductionIndex(NewIndex + 1)
|
||||||
|
' aggiorno indice di tutte le barre in coda
|
||||||
|
For Each CurrMachGroup As MyMachGroupVM In Map.refSupervisorMachGroupPanelVM.MachGroupVMList
|
||||||
|
If Not (CurrMachGroup Is MachGroup) AndAlso CurrMachGroup.nProductionIndex >= MachGroup.nProductionIndex AndAlso CurrMachGroup.nProductionIndex < 5000 Then
|
||||||
|
CurrMachGroup.SetProductionIndex(CurrMachGroup.nProductionIndex + 1)
|
||||||
|
DbControllers.m_MachGroupController.UpdateOrder(Map.refSupervisorManagerVM.CurrProd.nProdId, CurrMachGroup.Id, CurrMachGroup.nProductionIndex)
|
||||||
|
End If
|
||||||
|
Next
|
||||||
|
' sposto machgroup impostato a Done
|
||||||
DbControllers.m_MachGroupController.UpdateOrder(Map.refSupervisorManagerVM.CurrProd.nProdId, MachGroup.Id, MachGroup.nProductionIndex)
|
DbControllers.m_MachGroupController.UpdateOrder(Map.refSupervisorManagerVM.CurrProd.nProdId, MachGroup.Id, MachGroup.nProductionIndex)
|
||||||
Map.refProjectVM.SupervisorMachGroupPanelVM.MachGroupVMList.Move(OldIndex, NewIndex)
|
Map.refProjectVM.SupervisorMachGroupPanelVM.MachGroupVMList.Move(OldIndex, NewIndex)
|
||||||
End If
|
End If
|
||||||
@@ -964,3 +1037,21 @@ Public Class OPState
|
|||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
End Class
|
End Class
|
||||||
|
|
||||||
|
Public Class FeatureDataGridHeightConverter
|
||||||
|
Implements IValueConverter
|
||||||
|
|
||||||
|
Public Function Convert(value As Object, targetType As Type, parameter As Object, culture As System.Globalization.CultureInfo) As Object Implements IValueConverter.Convert
|
||||||
|
Dim Height As Double = CDbl(value)
|
||||||
|
If Not IsNothing(Height) Then
|
||||||
|
Return Height / 2
|
||||||
|
Else
|
||||||
|
Return 200
|
||||||
|
End If
|
||||||
|
End Function
|
||||||
|
|
||||||
|
Public Function ConvertBack(value As Object, targetType As Type, parameter As Object, culture As System.Globalization.CultureInfo) As Object Implements IValueConverter.ConvertBack
|
||||||
|
Throw New NotImplementedException
|
||||||
|
End Function
|
||||||
|
|
||||||
|
End Class
|
||||||
|
|||||||
@@ -24,17 +24,21 @@
|
|||||||
<DataGrid.Resources>
|
<DataGrid.Resources>
|
||||||
<!-- Command -->
|
<!-- Command -->
|
||||||
<DataGridTextColumn x:Key="colCOMMAND" Binding="{Binding sCommand}">
|
<DataGridTextColumn x:Key="colCOMMAND" Binding="{Binding sCommand}">
|
||||||
<DataGridTextColumn.Header>
|
<DataGridTextColumn.HeaderTemplate>
|
||||||
<TextBlock Text="{Binding Path=DataContext.Command_Msg,
|
<DataTemplate>
|
||||||
RelativeSource={RelativeSource AncestorType={x:Type EgtBEAMWALL:MDIPageV}}}"/>
|
<TextBlock Text="{Binding Path=DataContext.Command_Msg,
|
||||||
</DataGridTextColumn.Header>
|
RelativeSource={RelativeSource AncestorType={x:Type EgtBEAMWALL:MDIPageV}}}"/>
|
||||||
|
</DataTemplate>
|
||||||
|
</DataGridTextColumn.HeaderTemplate>
|
||||||
</DataGridTextColumn>
|
</DataGridTextColumn>
|
||||||
<!-- Descrizione -->
|
<!-- Descrizione -->
|
||||||
<DataGridTextColumn x:Key="colDESCRIPTION" Binding="{Binding sDescription}">
|
<DataGridTextColumn x:Key="colDESCRIPTION" Binding="{Binding sDescription}">
|
||||||
<DataGridTextColumn.Header>
|
<DataGridTextColumn.HeaderTemplate>
|
||||||
|
<DataTemplate>
|
||||||
<TextBlock Text="{Binding Path=DataContext.Description_Msg,
|
<TextBlock Text="{Binding Path=DataContext.Description_Msg,
|
||||||
RelativeSource={RelativeSource AncestorType={x:Type EgtBEAMWALL:MDIPageV}}}"/>
|
RelativeSource={RelativeSource AncestorType={x:Type EgtBEAMWALL:MDIPageV}}}"/>
|
||||||
</DataGridTextColumn.Header>
|
</DataTemplate>
|
||||||
|
</DataGridTextColumn.HeaderTemplate>
|
||||||
</DataGridTextColumn>
|
</DataGridTextColumn>
|
||||||
</DataGrid.Resources>
|
</DataGrid.Resources>
|
||||||
|
|
||||||
@@ -48,6 +52,7 @@
|
|||||||
<TextBox Text="{Binding sMDICommand_Text, UpdateSourceTrigger=PropertyChanged}"
|
<TextBox Text="{Binding sMDICommand_Text, UpdateSourceTrigger=PropertyChanged}"
|
||||||
Background="{Binding MDIText_Background}"
|
Background="{Binding MDIText_Background}"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
|
CharacterCasing="Upper"
|
||||||
Margin="5,0,2.5,0"/>
|
Margin="5,0,2.5,0"/>
|
||||||
<Button Grid.Column="1"
|
<Button Grid.Column="1"
|
||||||
Command="{Binding SendMDI_Command}"
|
Command="{Binding SendMDI_Command}"
|
||||||
|
|||||||
@@ -78,13 +78,13 @@ Public Class MDIPageVM
|
|||||||
|
|
||||||
Public ReadOnly Property Command_Msg As String
|
Public ReadOnly Property Command_Msg As String
|
||||||
Get
|
Get
|
||||||
Return "Command"
|
Return EgtMsg(62510)
|
||||||
End Get
|
End Get
|
||||||
End Property
|
End Property
|
||||||
|
|
||||||
Public ReadOnly Property Description_Msg As String
|
Public ReadOnly Property Description_Msg As String
|
||||||
Get
|
Get
|
||||||
Return "Description"
|
Return EgtMsg(62511)
|
||||||
End Get
|
End Get
|
||||||
End Property
|
End Property
|
||||||
|
|
||||||
|
|||||||
@@ -11,9 +11,6 @@
|
|||||||
Background="{Binding Message_Foreground}"/>
|
Background="{Binding Message_Foreground}"/>
|
||||||
<TextBlock Text="{Binding sErrSystem}"
|
<TextBlock Text="{Binding sErrSystem}"
|
||||||
Background="{Binding ErrSystem_Foreground}"/>
|
Background="{Binding ErrSystem_Foreground}"/>
|
||||||
<Button Content="CANCELLA ALLARMI"
|
|
||||||
Command="{Binding DeleteAlarms_Command}"
|
|
||||||
Visibility="Collapsed"/>
|
|
||||||
<WrapPanel Orientation="Horizontal" Width="{Binding ActualWidth, ElementName=TOPTRAY}">
|
<WrapPanel Orientation="Horizontal" Width="{Binding ActualWidth, ElementName=TOPTRAY}">
|
||||||
<Button Content="CONNECT"
|
<Button Content="CONNECT"
|
||||||
Command="{Binding Connect_Command}"
|
Command="{Binding Connect_Command}"
|
||||||
@@ -21,23 +18,28 @@
|
|||||||
Style="{StaticResource ToolBar_TextButton}"/>
|
Style="{StaticResource ToolBar_TextButton}"/>
|
||||||
<Button Content="START"
|
<Button Content="START"
|
||||||
Command="{Binding Start_Command}"
|
Command="{Binding Start_Command}"
|
||||||
Style="{StaticResource ToolBar_TextButton}"/>
|
Style="{StaticResource ToolBar_TextButton}"
|
||||||
|
IsEnabled="{Binding CommBtn_IsEnabled}"/>
|
||||||
<Button Content="STOP"
|
<Button Content="STOP"
|
||||||
Command="{Binding Stop_Command}"
|
Command="{Binding Stop_Command}"
|
||||||
Style="{StaticResource ToolBar_TextButton}"/>
|
Style="{StaticResource ToolBar_TextButton}"
|
||||||
|
IsEnabled="{Binding CommBtn_IsEnabled}"/>
|
||||||
<Button Content="RESET"
|
<Button Content="RESET"
|
||||||
Command="{Binding Reset_Command}"
|
Command="{Binding Reset_Command}"
|
||||||
Style="{StaticResource ToolBar_TextButton}"/>
|
Style="{StaticResource ToolBar_TextButton}"
|
||||||
<Button Content="STEP"
|
IsEnabled="{Binding CommBtn_IsEnabled}"/>
|
||||||
|
<!--<Button Content="STEP"
|
||||||
Command="{Binding Step_Command}"
|
Command="{Binding Step_Command}"
|
||||||
Style="{StaticResource ToolBar_TextButton}"/>
|
Style="{StaticResource ToolBar_TextButton}"/>-->
|
||||||
<Button Content="SET POINT"
|
<Button Content="SET POINT"
|
||||||
Command="{Binding SetPoint_Command}"
|
Command="{Binding SetPoint_Command}"
|
||||||
Style="{StaticResource ToolBar_TextButton}"/>
|
Style="{StaticResource ToolBar_TextButton}"
|
||||||
|
IsEnabled="{Binding CommBtn_IsEnabled}"/>
|
||||||
<Button Content="DELETE ALARMS"
|
<Button Content="DELETE ALARMS"
|
||||||
Command="{Binding DeleteAlarms_Command}"
|
Command="{Binding DeleteAlarms_Command}"
|
||||||
Visibility="{Binding DeleteAlarm_Visibility}"
|
Visibility="{Binding DeleteAlarm_Visibility}"
|
||||||
Style="{StaticResource ToolBar_TextButton}"/>
|
Style="{StaticResource ToolBar_TextButton}"
|
||||||
|
IsEnabled="{Binding CommBtn_IsEnabled}"/>
|
||||||
</WrapPanel>
|
</WrapPanel>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
</UserControl>
|
</UserControl>
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ Imports System.Windows.Threading
|
|||||||
Imports EgtBEAMWALL.Core.ConstMachComm
|
Imports EgtBEAMWALL.Core.ConstMachComm
|
||||||
Imports EgtBEAMWALL.Core
|
Imports EgtBEAMWALL.Core
|
||||||
Imports EgtWPFLib5
|
Imports EgtWPFLib5
|
||||||
|
Imports EgtUILib
|
||||||
|
|
||||||
Public Class MachCommandMessagePanelVM
|
Public Class MachCommandMessagePanelVM
|
||||||
Inherits VMBase
|
Inherits VMBase
|
||||||
@@ -152,7 +153,7 @@ Public Class MachCommandMessagePanelVM
|
|||||||
Select Case CurrentMachine.NCType
|
Select Case CurrentMachine.NCType
|
||||||
Case NCTypes.TPA
|
Case NCTypes.TPA
|
||||||
Return If(Not IsNothing(ShownErr), ShownErr.sCode & ": " & ShownErr.sMessage, "")
|
Return If(Not IsNothing(ShownErr), ShownErr.sCode & ": " & ShownErr.sMessage, "")
|
||||||
Case NCTypes.NUM_FLEXIUM
|
Case NCTypes.NUM_FLEXIUM, NCTypes.NUM_AXIUM_APSERVER, NCTypes.NUM_AXIUM_PCTOOLKIT
|
||||||
Return If(Not IsNothing(ShownErr), ShownErr.sMessage, "")
|
Return If(Not IsNothing(ShownErr), ShownErr.sMessage, "")
|
||||||
Case Else
|
Case Else
|
||||||
Return ""
|
Return ""
|
||||||
@@ -174,7 +175,7 @@ Public Class MachCommandMessagePanelVM
|
|||||||
Select Case CurrentMachine.NCType
|
Select Case CurrentMachine.NCType
|
||||||
Case NCTypes.TPA
|
Case NCTypes.TPA
|
||||||
Return If(Not IsNothing(ShownErr), ShownErr.sCode & ": " & ShownErr.sMessage, "")
|
Return If(Not IsNothing(ShownErr), ShownErr.sCode & ": " & ShownErr.sMessage, "")
|
||||||
Case NCTypes.NUM_FLEXIUM
|
Case NCTypes.NUM_FLEXIUM, NCTypes.NUM_AXIUM_APSERVER, NCTypes.NUM_AXIUM_PCTOOLKIT
|
||||||
Return If(Not IsNothing(ShownErr), ShownErr.sMessage, "")
|
Return If(Not IsNothing(ShownErr), ShownErr.sMessage, "")
|
||||||
Case Else
|
Case Else
|
||||||
Return ""
|
Return ""
|
||||||
@@ -196,7 +197,7 @@ Public Class MachCommandMessagePanelVM
|
|||||||
Select Case CurrentMachine.NCType
|
Select Case CurrentMachine.NCType
|
||||||
Case NCTypes.TPA
|
Case NCTypes.TPA
|
||||||
Return If(Not IsNothing(ShownErr), ShownErr.sCode & ": " & ShownErr.sMessage, "")
|
Return If(Not IsNothing(ShownErr), ShownErr.sCode & ": " & ShownErr.sMessage, "")
|
||||||
Case NCTypes.NUM_FLEXIUM
|
Case NCTypes.NUM_FLEXIUM, NCTypes.NUM_AXIUM_APSERVER, NCTypes.NUM_AXIUM_PCTOOLKIT
|
||||||
Return If(Not IsNothing(ShownErr), ShownErr.sMessage, "")
|
Return If(Not IsNothing(ShownErr), ShownErr.sMessage, "")
|
||||||
Case Else
|
Case Else
|
||||||
Return ""
|
Return ""
|
||||||
@@ -218,7 +219,7 @@ Public Class MachCommandMessagePanelVM
|
|||||||
Select Case CurrentMachine.NCType
|
Select Case CurrentMachine.NCType
|
||||||
Case NCTypes.TPA
|
Case NCTypes.TPA
|
||||||
Return If(Not IsNothing(ShownErr), ShownErr.sCode & ": " & ShownErr.sMessage, "")
|
Return If(Not IsNothing(ShownErr), ShownErr.sCode & ": " & ShownErr.sMessage, "")
|
||||||
Case NCTypes.NUM_FLEXIUM
|
Case NCTypes.NUM_FLEXIUM, NCTypes.NUM_AXIUM_APSERVER, NCTypes.NUM_AXIUM_PCTOOLKIT
|
||||||
Return If(Not IsNothing(ShownErr), ShownErr.sMessage, "")
|
Return If(Not IsNothing(ShownErr), ShownErr.sMessage, "")
|
||||||
Case Else
|
Case Else
|
||||||
Return ""
|
Return ""
|
||||||
@@ -237,6 +238,17 @@ Public Class MachCommandMessagePanelVM
|
|||||||
End Get
|
End Get
|
||||||
End Property
|
End Property
|
||||||
|
|
||||||
|
Private m_CommBtn_IsEnabled As Boolean = True
|
||||||
|
Public ReadOnly Property CommBtn_IsEnabled As Boolean
|
||||||
|
Get
|
||||||
|
Return m_CommBtn_IsEnabled
|
||||||
|
End Get
|
||||||
|
End Property
|
||||||
|
Friend Sub SetCommBtnIsEnabled(value As Boolean)
|
||||||
|
m_CommBtn_IsEnabled = value
|
||||||
|
NotifyPropertyChanged(NameOf(CommBtn_IsEnabled))
|
||||||
|
End Sub
|
||||||
|
|
||||||
' definizione comandi
|
' definizione comandi
|
||||||
Private m_cmdConnect As ICommand
|
Private m_cmdConnect As ICommand
|
||||||
Private m_cmdDisconnect As ICommand
|
Private m_cmdDisconnect As ICommand
|
||||||
@@ -525,6 +537,9 @@ Public Class MachCommandMessagePanelVM
|
|||||||
MachineCommThread.StartTick()
|
MachineCommThread.StartTick()
|
||||||
' inizializzo variabili
|
' inizializzo variabili
|
||||||
Init()
|
Init()
|
||||||
|
If CurrentMachine.NCType = NCTypes.NUM_AXIUM_APSERVER Then
|
||||||
|
Map.refMachManaging.Num_Axium_APServer.GetGeneralFunctions()
|
||||||
|
End If
|
||||||
End If
|
End If
|
||||||
End If
|
End If
|
||||||
Case CommandTypes.DISCONNECT
|
Case CommandTypes.DISCONNECT
|
||||||
@@ -680,12 +695,17 @@ Public Class MachCommandMessagePanelVM
|
|||||||
End If
|
End If
|
||||||
ErrorNumberMsg = "PLC"
|
ErrorNumberMsg = "PLC"
|
||||||
ErrorTypMsg = "Classe"
|
ErrorTypMsg = "Classe"
|
||||||
AlarmMessage = If(nErrorIndex <> 0, ErrorIndexMsg & ": " & nErrorIndex & " - ", "") &
|
If CurrentMachine.NCType = NCTypes.NUM_AXIUM_PCTOOLKIT OrElse CurrentMachine.NCType = NCTypes.NUM_AXIUM_APSERVER Then
|
||||||
If(nErrorNumber <> 0, ErrorNumberMsg & ": " & nErrorNumber & " - ", "") &
|
AlarmMessage = If(nErrorNumber <> 0, ErrorNumberMsg & ": " & nErrorNumber & " - ", "") &
|
||||||
If(nErrorExtNumber <> 0, " - " & ErrorExtNumberMsg & ": " & nErrorExtNumber, "") &
|
sErrorMessage
|
||||||
ErrorTypMsg & ": " & nErrorTyp - 5 &
|
Else
|
||||||
If(nErrorLine <> 0, " - " & ErrorLineMsg & ": " & nErrorLine, "") &
|
AlarmMessage = If(nErrorIndex <> 0, ErrorIndexMsg & ": " & nErrorIndex & " - ", "") &
|
||||||
" " & sErrorMessage & If(nErrorAdditional <> 0, " - " & ErrorAdditionalMsg & ": " & nErrorAdditional, "")
|
If(nErrorNumber <> 0, ErrorNumberMsg & ": " & nErrorNumber & " - ", "") &
|
||||||
|
If(nErrorExtNumber <> 0, " - " & ErrorExtNumberMsg & ": " & nErrorExtNumber, "") &
|
||||||
|
ErrorTypMsg & ": " & nErrorTyp - 5 &
|
||||||
|
If(nErrorLine <> 0, " - " & ErrorLineMsg & ": " & nErrorLine, "") &
|
||||||
|
" " & sErrorMessage & If(nErrorAdditional <> 0, " - " & ErrorAdditionalMsg & ": " & nErrorAdditional, "")
|
||||||
|
End If
|
||||||
Case NUM_ErrorTypes.HMI_Message
|
Case NUM_ErrorTypes.HMI_Message
|
||||||
Case NUM_ErrorTypes.RTS_Message
|
Case NUM_ErrorTypes.RTS_Message
|
||||||
Case NUM_ErrorTypes.Drive_Warning
|
Case NUM_ErrorTypes.Drive_Warning
|
||||||
@@ -752,7 +772,7 @@ Public Class MachCommandMessagePanelVM
|
|||||||
Select Case CurrentMachine.NCType
|
Select Case CurrentMachine.NCType
|
||||||
Case NCTypes.TPA
|
Case NCTypes.TPA
|
||||||
m_ErrSystem.RemoveAll(Function(x) x.sCode = AlarmCode)
|
m_ErrSystem.RemoveAll(Function(x) x.sCode = AlarmCode)
|
||||||
Case NCTypes.NUM_FLEXIUM
|
Case NCTypes.NUM_FLEXIUM, NCTypes.NUM_AXIUM_APSERVER, NCTypes.NUM_AXIUM_PCTOOLKIT
|
||||||
m_ErrSystem.RemoveAll(Function(x) x.sMessage = AlarmMessage)
|
m_ErrSystem.RemoveAll(Function(x) x.sMessage = AlarmMessage)
|
||||||
End Select
|
End Select
|
||||||
End If
|
End If
|
||||||
@@ -785,7 +805,7 @@ Public Class MachCommandMessagePanelVM
|
|||||||
Next
|
Next
|
||||||
End If
|
End If
|
||||||
End If
|
End If
|
||||||
Case NCTypes.NUM_FLEXIUM
|
Case NCTypes.NUM_FLEXIUM, NCTypes.NUM_AXIUM_APSERVER, NCTypes.NUM_AXIUM_PCTOOLKIT
|
||||||
Map.refLeftPanelVM.SetOPState(NewState)
|
Map.refLeftPanelVM.SetOPState(NewState)
|
||||||
End Select
|
End Select
|
||||||
DbControllers.m_LogMachineController.Create(MachLog.CreateOPStateLog(newOpState))
|
DbControllers.m_LogMachineController.Create(MachLog.CreateOPStateLog(newOpState))
|
||||||
@@ -793,8 +813,12 @@ Public Class MachCommandMessagePanelVM
|
|||||||
|
|
||||||
Friend Sub OpModeCallbackDlg(newOpState As Integer)
|
Friend Sub OpModeCallbackDlg(newOpState As Integer)
|
||||||
Dim NewState As OPState = Map.refLeftPanelVM.OPModeList.FirstOrDefault(Function(x) x.Id = newOpState)
|
Dim NewState As OPState = Map.refLeftPanelVM.OPModeList.FirstOrDefault(Function(x) x.Id = newOpState)
|
||||||
|
If IsNothing(NewState) Then
|
||||||
|
EgtOutLog("Machine state not recognized, state " & newOpState)
|
||||||
|
Return
|
||||||
|
End If
|
||||||
Select Case CurrentMachine.NCType
|
Select Case CurrentMachine.NCType
|
||||||
Case NCTypes.NUM_FLEXIUM
|
Case NCTypes.NUM_FLEXIUM, NCTypes.NUM_AXIUM_APSERVER, NCTypes.NUM_AXIUM_PCTOOLKIT
|
||||||
Map.refLeftPanelVM.SetOPMode(NewState)
|
Map.refLeftPanelVM.SetOPMode(NewState)
|
||||||
End Select
|
End Select
|
||||||
DbControllers.m_LogMachineController.Create(MachLog.CreateOPStateLog(newOpState))
|
DbControllers.m_LogMachineController.Create(MachLog.CreateOPStateLog(newOpState))
|
||||||
@@ -803,7 +827,7 @@ Public Class MachCommandMessagePanelVM
|
|||||||
Friend Sub ChannelCallbackDlg(NewChannelId As Short)
|
Friend Sub ChannelCallbackDlg(NewChannelId As Short)
|
||||||
Dim NewChannel As IdNameStruct = Map.refLeftPanelVM.ChannelList.FirstOrDefault(Function(x) x.Id = NewChannelId)
|
Dim NewChannel As IdNameStruct = Map.refLeftPanelVM.ChannelList.FirstOrDefault(Function(x) x.Id = NewChannelId)
|
||||||
Select Case CurrentMachine.NCType
|
Select Case CurrentMachine.NCType
|
||||||
Case NCTypes.NUM_FLEXIUM
|
Case NCTypes.NUM_FLEXIUM, NCTypes.NUM_AXIUM_APSERVER, NCTypes.NUM_AXIUM_PCTOOLKIT
|
||||||
Map.refLeftPanelVM.SetChannel(NewChannel)
|
Map.refLeftPanelVM.SetChannel(NewChannel)
|
||||||
End Select
|
End Select
|
||||||
'DbControllers.m_LogMachineController.Create(MachLog.CreateOPStateLog(NewChannelId))
|
'DbControllers.m_LogMachineController.Create(MachLog.CreateOPStateLog(NewChannelId))
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ Public Class MyMachGroupVM
|
|||||||
' se c'e', attivo solo il pezzo non finito
|
' se c'e', attivo solo il pezzo non finito
|
||||||
Return Not (Not IsNothing(ToBeRestartedPart) AndAlso Not ToBeRestartedPart Is Me)
|
Return Not (Not IsNothing(ToBeRestartedPart) AndAlso Not ToBeRestartedPart Is Me)
|
||||||
Else
|
Else
|
||||||
If Global.EgtBEAMWALL.Supervisor.CurrentMachine.Flow = Global.EgtBEAMWALL.Supervisor.CurrentMachine.FlowTypes.ONEBYONE Then
|
If CurrentMachine.Flow = CurrentMachine.FlowTypes.ONEBYONE Then
|
||||||
Select Case nProduction_State
|
Select Case nProduction_State
|
||||||
Case ItemState.Assigned, ItemState.Confirmed, ItemState.WIP
|
Case ItemState.Assigned, ItemState.Confirmed, ItemState.WIP
|
||||||
Return Not m_bToBeProduced AndAlso Not m_bSentToMachine AndAlso Not Map.refSupervisorMachGroupPanelVM.MachGroupVMList.Any(Function(x As MyMachGroupVM) x.bToBeProduced)
|
Return Not m_bToBeProduced AndAlso Not m_bSentToMachine AndAlso Not Map.refSupervisorMachGroupPanelVM.MachGroupVMList.Any(Function(x As MyMachGroupVM) x.bToBeProduced)
|
||||||
@@ -168,6 +168,8 @@ Public Class MyMachGroupVM
|
|||||||
Public Overrides Sub ProduceMachGroup()
|
Public Overrides Sub ProduceMachGroup()
|
||||||
' se gia' in produzione, non devo fare nulla
|
' se gia' in produzione, non devo fare nulla
|
||||||
If m_bToBeProduced Then Return
|
If m_bToBeProduced Then Return
|
||||||
|
' disabilito bottoni di comunicazione durante invio programma
|
||||||
|
Map.refMachCommandMessagePanelVM.SetCommBtnIsEnabled(False)
|
||||||
' macchina bloccata con reset PER TEST!!!!
|
' macchina bloccata con reset PER TEST!!!!
|
||||||
'SetResetWhileCutting(True)
|
'SetResetWhileCutting(True)
|
||||||
' se ripartenza
|
' se ripartenza
|
||||||
@@ -181,6 +183,8 @@ Public Class MyMachGroupVM
|
|||||||
Dim WaitingWnd As New WaitingWndV(Application.Current.MainWindow, New WaitingWndVM)
|
Dim WaitingWnd As New WaitingWndV(Application.Current.MainWindow, New WaitingWndVM)
|
||||||
Dim WaitingResult As Boolean = WaitingWnd.ShowDialog()
|
Dim WaitingResult As Boolean = WaitingWnd.ShowDialog()
|
||||||
If Not WaitingResult Then
|
If Not WaitingResult Then
|
||||||
|
' riabilito bottoni di comunicazione a fine invio programma
|
||||||
|
Map.refMachCommandMessagePanelVM.SetCommBtnIsEnabled(True)
|
||||||
Return
|
Return
|
||||||
End If
|
End If
|
||||||
' ricarico progetto corrente
|
' ricarico progetto corrente
|
||||||
@@ -188,6 +192,10 @@ Public Class MyMachGroupVM
|
|||||||
End If
|
End If
|
||||||
' creo nuova barra
|
' creo nuova barra
|
||||||
Dim RedoMachGroupVM As MyMachGroupVM = RedoRawPart()
|
Dim RedoMachGroupVM As MyMachGroupVM = RedoRawPart()
|
||||||
|
If IsNothing(RedoMachGroupVM) Then
|
||||||
|
MessageBox.Show("New RawPart creation failed!")
|
||||||
|
Return
|
||||||
|
End If
|
||||||
' salvo progetto con nuova barra
|
' salvo progetto con nuova barra
|
||||||
Map.refSceneHostVM.SaveProject()
|
Map.refSceneHostVM.SaveProject()
|
||||||
Dim MyMachGroupList As New List(Of MyMachGroupM)
|
Dim MyMachGroupList As New List(Of MyMachGroupM)
|
||||||
@@ -209,23 +217,34 @@ Public Class MyMachGroupVM
|
|||||||
End If
|
End If
|
||||||
' riabilito produzione di tutti gli altri
|
' riabilito produzione di tutti gli altri
|
||||||
MyMachGroupVM.UpdateProduceIsEnabledForAll()
|
MyMachGroupVM.UpdateProduceIsEnabledForAll()
|
||||||
|
' riabilito bottoni di comunicazione a fine invio programma
|
||||||
|
Map.refMachCommandMessagePanelVM.SetCommBtnIsEnabled(True)
|
||||||
|
' reimposto visualizzazione gruppo selezionato
|
||||||
|
Map.refSupervisorMachGroupPanelVM.SelectedMachGroup = Map.refSupervisorMachGroupPanelVM.SelectedMachGroup
|
||||||
Return
|
Return
|
||||||
End If
|
End If
|
||||||
' se progetto travi e lavorazione interrotta da reset
|
' se progetto travi e lavorazione interrotta da reset
|
||||||
If Map.refSupervisorManagerVM.CurrProd.nType = BWType.BEAM AndAlso (bResetWhileCutting OrElse dtStartTime <> DateTime.MinValue) And Not Map.refLeftPanelVM.bRestart Then
|
If Map.refSupervisorManagerVM.CurrProd.nType = BWType.BEAM AndAlso (bResetWhileCutting OrElse dtStartTime <> DateTime.MinValue) And Not Map.refLeftPanelVM.bRestart Then
|
||||||
' chiedo se riprendere o rifare la barra da zero
|
' chiedo se riprendere o rifare la barra da zero
|
||||||
Dim bRedo As MessageBoxResult = MessageBox.Show("Riprendere lavorazione barra corrente?", "", MessageBoxButton.YesNo, MessageBoxImage.Information)
|
Dim bRedo As MessageBoxResult = MessageBox.Show(EgtMsg(62509), "", MessageBoxButton.YesNo, MessageBoxImage.Information)
|
||||||
Select Case bRedo
|
Select Case bRedo
|
||||||
Case MessageBoxResult.Yes
|
Case MessageBoxResult.Yes
|
||||||
' segno da rifare pezzi non completamente lavorati
|
' segno da rifare pezzi non completamente lavorati
|
||||||
For Each Part As PartVM In PartVMList
|
For Each Part As PartVM In PartVMList
|
||||||
Part.bDO = (Part.dtEndTime = DateTime.MinValue)
|
If Part.dtEndTime <> DateTime.MinValue Then
|
||||||
|
Part.bDO = False
|
||||||
|
Else
|
||||||
|
Part.SetDo(True)
|
||||||
|
End If
|
||||||
|
'Part.bDO = (Part.dtEndTime = DateTime.MinValue)
|
||||||
'Part.NotifyPropertyChanged(NameOf(Part.bRedo))
|
'Part.NotifyPropertyChanged(NameOf(Part.bRedo))
|
||||||
Next
|
Next
|
||||||
' se ripresa, mostro lista feature e colonne Redo
|
' se ripresa, mostro lista feature e colonne Redo
|
||||||
Map.refLeftPanelVM.bRestart = True
|
Map.refLeftPanelVM.bRestart = True
|
||||||
' blocco produzione di tutti gli altri
|
' blocco produzione di tutti gli altri
|
||||||
MyMachGroupVM.UpdateProduceIsEnabledForAll()
|
MyMachGroupVM.UpdateProduceIsEnabledForAll()
|
||||||
|
' riabilito bottoni di comunicazione a fine invio programma
|
||||||
|
Map.refMachCommandMessagePanelVM.SetCommBtnIsEnabled(True)
|
||||||
Return
|
Return
|
||||||
Case MessageBoxResult.No
|
Case MessageBoxResult.No
|
||||||
' annullo stati dei pezzi gia' fatti
|
' annullo stati dei pezzi gia' fatti
|
||||||
@@ -281,6 +300,7 @@ Public Class MyMachGroupVM
|
|||||||
|
|
||||||
' lancio produzione pezzo
|
' lancio produzione pezzo
|
||||||
Produce(New List(Of MachGroupVM)({Me}))
|
Produce(New List(Of MachGroupVM)({Me}))
|
||||||
|
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
Friend Shared Sub Produce(MachGroupList As List(Of MachGroupVM))
|
Friend Shared Sub Produce(MachGroupList As List(Of MachGroupVM))
|
||||||
@@ -325,6 +345,8 @@ Public Class MyMachGroupVM
|
|||||||
|
|
||||||
Public Function RedoRawPart() As MyMachGroupVM
|
Public Function RedoRawPart() As MyMachGroupVM
|
||||||
If IsNothing(Map.refSupervisorManagerVM.CurrProd) Then Return Nothing
|
If IsNothing(Map.refSupervisorManagerVM.CurrProd) Then Return Nothing
|
||||||
|
' variabile che contiene anticipo di pinzaggio primo pezzo
|
||||||
|
Dim dHCING As Double = 0
|
||||||
' creo nuovo gruppo di lavorazione
|
' creo nuovo gruppo di lavorazione
|
||||||
Map.refProjectVM.ProdMachGroupPanelVM.AddMachGroup()
|
Map.refProjectVM.ProdMachGroupPanelVM.AddMachGroup()
|
||||||
Dim nCurrMachGroup As Integer = EgtGetCurrMachGroup()
|
Dim nCurrMachGroup As Integer = EgtGetCurrMachGroup()
|
||||||
@@ -353,6 +375,12 @@ Public Class MyMachGroupVM
|
|||||||
For Index = 0 To m_PartVMList.Count - 1
|
For Index = 0 To m_PartVMList.Count - 1
|
||||||
Dim CurrPart As PartVM = m_PartVMList(Index)
|
Dim CurrPart As PartVM = m_PartVMList(Index)
|
||||||
If CurrPart.bDO Then
|
If CurrPart.bDO Then
|
||||||
|
' se primo pezzo da fare
|
||||||
|
If nDone = 0 Then
|
||||||
|
' recupero anticipo di pinzaggio da vecchia barra
|
||||||
|
dHCING = GetHCING(CurrPart.nPartId)
|
||||||
|
dInitialCutOut += CurrPart.dOffset - 0.1
|
||||||
|
End If
|
||||||
nDone += 1
|
nDone += 1
|
||||||
' creo copia del pezzo
|
' creo copia del pezzo
|
||||||
Dim nPartDuploId As Integer = EgtDuploNew(PartList(Index).nPartId)
|
Dim nPartDuploId As Integer = EgtDuploNew(PartList(Index).nPartId)
|
||||||
@@ -386,14 +414,15 @@ Public Class MyMachGroupVM
|
|||||||
End If
|
End If
|
||||||
Return Nothing
|
Return Nothing
|
||||||
End If
|
End If
|
||||||
|
' aggiorno anticipo di pinzaggio in primo pezzo
|
||||||
|
EgtSetInfo(EgtGetFirstRawPart(), "HCING", dHCING)
|
||||||
'aggiorno lista pezzi
|
'aggiorno lista pezzi
|
||||||
BeamMachGroup.MyMachGroupM.RefreshPartList()
|
BeamMachGroup.MyMachGroupM.RefreshPartList()
|
||||||
BeamMachGroup.MyMachGroupM.RefreshGroupData()
|
BeamMachGroup.MyMachGroupM.RefreshGroupData()
|
||||||
''' aggiorno dati utilizzo barra
|
|
||||||
''BeamMachGroup.UpdateUsage()
|
|
||||||
Core.ViewPanelVM.BWSetView(VT.ISO_SW, False)
|
Core.ViewPanelVM.BWSetView(VT.ISO_SW, False)
|
||||||
' salvo nuovo grezzo nel progetto
|
' salvo nuovo grezzo nel progetto
|
||||||
Map.refSupervisorManagerVM.Save()
|
Map.refSupervisorManagerVM.Save()
|
||||||
|
Dim LastDonePart As PartVM = Nothing
|
||||||
' segno pezzi non completati come scrap
|
' segno pezzi non completati come scrap
|
||||||
For Index = 0 To m_PartVMList.Count - 1
|
For Index = 0 To m_PartVMList.Count - 1
|
||||||
Dim CurrPart As PartVM = m_PartVMList(Index)
|
Dim CurrPart As PartVM = m_PartVMList(Index)
|
||||||
@@ -410,15 +439,22 @@ Public Class MyMachGroupVM
|
|||||||
Part.NotifyPropertyChanged(NameOf(Part.nProduction_State))
|
Part.NotifyPropertyChanged(NameOf(Part.nProduction_State))
|
||||||
' resetto stato redo
|
' resetto stato redo
|
||||||
Part.bRedo = False
|
Part.bRedo = False
|
||||||
' scrivo data end su Db barra
|
Else
|
||||||
DbControllers.m_MachGroupController.UpdateEnd(nP_Prod, nP_Machgroup, DateTime.MinValue)
|
LastDonePart = CurrPart
|
||||||
DbControllers.m_MachGroupController.UpdateStatus(nP_Prod, nP_Machgroup, ItemState.Produced)
|
|
||||||
' scrivo stato end
|
|
||||||
MyMachGroupM.SetProductionState(ItemState.Produced)
|
|
||||||
dtEndTime = DateTime.MinValue
|
|
||||||
NotifyPropertyChanged(NameOf(nProduction_State))
|
|
||||||
End If
|
End If
|
||||||
Next
|
Next
|
||||||
|
' imposto fine MachGroup su fine ultimo pezzo o inizio Machgroup + 1 secondo
|
||||||
|
Dim MachGroupEnd As DateTime = dtStartTime + New TimeSpan(0, 0, 1)
|
||||||
|
If Not IsNothing(LastDonePart) AndAlso LastDonePart.dtEndTime <> DateTime.MinValue Then
|
||||||
|
MachGroupEnd = LastDonePart.dtEndTime
|
||||||
|
End If
|
||||||
|
' scrivo data end su Db barra
|
||||||
|
DbControllers.m_MachGroupController.UpdateEnd(Map.refSupervisorManagerVM.CurrProd.nProdId, Id, MachGroupEnd)
|
||||||
|
DbControllers.m_MachGroupController.UpdateStatus(Map.refSupervisorManagerVM.CurrProd.nProdId, Id, ItemState.Produced)
|
||||||
|
' scrivo stato end
|
||||||
|
MyMachGroupM.SetProductionState(ItemState.Produced)
|
||||||
|
dtEndTime = MachGroupEnd
|
||||||
|
NotifyPropertyChanged(NameOf(nProduction_State))
|
||||||
NotifyPropertyChanged(NameOf(Produce_IsEnabled))
|
NotifyPropertyChanged(NameOf(Produce_IsEnabled))
|
||||||
MachGroup = BeamMachGroup
|
MachGroup = BeamMachGroup
|
||||||
ElseIf Map.refSupervisorManagerVM.CurrProd.nType = BWType.WALL Then
|
ElseIf Map.refSupervisorManagerVM.CurrProd.nType = BWType.WALL Then
|
||||||
@@ -456,7 +492,7 @@ Public Class MyMachGroupVM
|
|||||||
'WallMachGroup.UpdateUsage()
|
'WallMachGroup.UpdateUsage()
|
||||||
'EgtSetView(VT.TOP, False)
|
'EgtSetView(VT.TOP, False)
|
||||||
End If
|
End If
|
||||||
' aggiorno dati ultilizzo grezzo
|
' aggiorno dati utilizzo grezzo
|
||||||
MachGroup.UpdateUsage()
|
MachGroup.UpdateUsage()
|
||||||
'passo machgroup a supervisor su Db
|
'passo machgroup a supervisor su Db
|
||||||
DbControllers.m_MachGroupController.UpdateSupervisor(Map.refSupervisorManagerVM.CurrProd.nProdId, MachGroup.Id, DbControllers.m_SupervisorId)
|
DbControllers.m_MachGroupController.UpdateSupervisor(Map.refSupervisorManagerVM.CurrProd.nProdId, MachGroup.Id, DbControllers.m_SupervisorId)
|
||||||
@@ -464,6 +500,18 @@ Public Class MyMachGroupVM
|
|||||||
MachGroup.NotifyPropertyChanged(NameOf(MachGroup.Background))
|
MachGroup.NotifyPropertyChanged(NameOf(MachGroup.Background))
|
||||||
' assegno a nuova barra indice successivo a quella di partenza
|
' assegno a nuova barra indice successivo a quella di partenza
|
||||||
MachGroup.SetProductionIndex(m_nProductionIndex + 1)
|
MachGroup.SetProductionIndex(m_nProductionIndex + 1)
|
||||||
|
' assegno stati a pezzi
|
||||||
|
For Each Part As PartVM In MachGroup.PartVMList
|
||||||
|
DbControllers.m_PartController.UpdateStatus(Map.refSupervisorManagerVM.CurrProd.nProdId, MachGroup.Id, Part.nPartId, ItemState.Assigned)
|
||||||
|
Part.nProduction_State = ItemState.Assigned
|
||||||
|
Part.NotifyPropertyChanged(NameOf(Part.Background))
|
||||||
|
'' disabilito impostazione modificato
|
||||||
|
'Dim DisableMgr As New DisableModifiedMgr
|
||||||
|
'' blocco modifica del pezzo
|
||||||
|
'EgtDuploSetLocked(Part.nPartId)
|
||||||
|
'' ripristino precedente impostazione modificato
|
||||||
|
'DisableMgr.ReEnable()
|
||||||
|
Next
|
||||||
' aggiorno indice di tutte le barre in coda
|
' aggiorno indice di tutte le barre in coda
|
||||||
For Each CurrMachGroup As MyMachGroupVM In Map.refSupervisorMachGroupPanelVM.MachGroupVMList
|
For Each CurrMachGroup As MyMachGroupVM In Map.refSupervisorMachGroupPanelVM.MachGroupVMList
|
||||||
If Not (CurrMachGroup Is MachGroup) AndAlso CurrMachGroup.nProductionIndex >= MachGroup.nProductionIndex AndAlso CurrMachGroup.nProductionIndex < 5000 Then
|
If Not (CurrMachGroup Is MachGroup) AndAlso CurrMachGroup.nProductionIndex >= MachGroup.nProductionIndex AndAlso CurrMachGroup.nProductionIndex < 5000 Then
|
||||||
@@ -477,10 +525,28 @@ Public Class MyMachGroupVM
|
|||||||
If Not IsNothing(MachGroup) Then Map.refProjectVM.SupervisorMachGroupPanelVM.AddMachGroupToSupervisor(MachGroup)
|
If Not IsNothing(MachGroup) Then Map.refProjectVM.SupervisorMachGroupPanelVM.AddMachGroupToSupervisor(MachGroup)
|
||||||
' lo posiziono subito dopo il gruppo di ripartenza
|
' lo posiziono subito dopo il gruppo di ripartenza
|
||||||
Map.refProjectVM.SupervisorMachGroupPanelVM.MachGroupVMList.Move(Map.refProjectVM.SupervisorMachGroupPanelVM.MachGroupVMList.Count - 1, Map.refProjectVM.SupervisorMachGroupPanelVM.MachGroupVMList.IndexOf(Me) + 1)
|
Map.refProjectVM.SupervisorMachGroupPanelVM.MachGroupVMList.Move(Map.refProjectVM.SupervisorMachGroupPanelVM.MachGroupVMList.Count - 1, Map.refProjectVM.SupervisorMachGroupPanelVM.MachGroupVMList.IndexOf(Me) + 1)
|
||||||
|
EgtResetCurrMachGroup()
|
||||||
EgtZoom(ZM.ALL)
|
EgtZoom(ZM.ALL)
|
||||||
Return MachGroup
|
Return MachGroup
|
||||||
End Function
|
End Function
|
||||||
|
|
||||||
|
Private Function GetHCING(nOrigPartId As Integer) As Double
|
||||||
|
' inizializzo nuovo contesto
|
||||||
|
Dim nCurrCtx As Integer = EgtGetCurrentContext()
|
||||||
|
Dim nTempCtx As Integer = EgtInitContext()
|
||||||
|
' inizializzo gestore lavorazioni
|
||||||
|
EgtInitMachMgr(Map.refMainWindowVM.MainWindowM.sMachinesRoot, Map.refMainWindowVM.MainWindowM.sToolMakersDir)
|
||||||
|
Dim g = EgtOpenFile(Map.refSupervisorManagerVM.CurrProd.sProdDirPath & "\" & Name & ".bwe")
|
||||||
|
Dim nFirstId As Integer = EgtGetFirstMachGroup()
|
||||||
|
Dim f = EgtSetCurrMachGroup(nFirstId)
|
||||||
|
Dim nOldRawId As Integer = EgtGetRawPartFromPart(nOrigPartId)
|
||||||
|
Dim dHCING As Double = 0
|
||||||
|
EgtGetInfo(nOldRawId, "HCING", dHCING)
|
||||||
|
EgtSetCurrentContext(nCurrCtx)
|
||||||
|
EgtDeleteContext(nTempCtx)
|
||||||
|
Return dHCING
|
||||||
|
End Function
|
||||||
|
|
||||||
#End Region ' ProduceMachGroup
|
#End Region ' ProduceMachGroup
|
||||||
|
|
||||||
#End Region ' COMMANDS
|
#End Region ' COMMANDS
|
||||||
|
|||||||
@@ -14,6 +14,12 @@ Public Class SupervisorMachGroupPanelVM
|
|||||||
|
|
||||||
Private m_ReloadProj_Timer As New DispatcherTimer
|
Private m_ReloadProj_Timer As New DispatcherTimer
|
||||||
Private m_bReloadProj As Boolean = False
|
Private m_bReloadProj As Boolean = False
|
||||||
|
Private m_bReloadingProj As Boolean = False
|
||||||
|
Public ReadOnly Property bReloadingProj As Boolean
|
||||||
|
Get
|
||||||
|
Return m_bReloadingProj
|
||||||
|
End Get
|
||||||
|
End Property
|
||||||
|
|
||||||
' lock per aggiunta elemento a lista MachGroup
|
' lock per aggiunta elemento a lista MachGroup
|
||||||
Private m_Lock_AddMachGroup As New Object
|
Private m_Lock_AddMachGroup As New Object
|
||||||
@@ -52,9 +58,11 @@ Public Class SupervisorMachGroupPanelVM
|
|||||||
If MachGroupVMList.Count = 0 Then
|
If MachGroupVMList.Count = 0 Then
|
||||||
ManageBTLParts.ShowAll()
|
ManageBTLParts.ShowAll()
|
||||||
End If
|
End If
|
||||||
SyncLock (m_Lock_AddMachGroup)
|
If Not MachGroupVMList.Contains(MachGroup) Then
|
||||||
MachGroupVMList.Add(MachGroup)
|
SyncLock (m_Lock_AddMachGroup)
|
||||||
End SyncLock
|
MachGroupVMList.Add(MachGroup)
|
||||||
|
End SyncLock
|
||||||
|
End If
|
||||||
' notifico stato
|
' notifico stato
|
||||||
MachGroup.NotifyPropertyChanged(NameOf(MachGroup.Produce_IsEnabled))
|
MachGroup.NotifyPropertyChanged(NameOf(MachGroup.Produce_IsEnabled))
|
||||||
End Sub
|
End Sub
|
||||||
@@ -65,10 +73,12 @@ Public Class SupervisorMachGroupPanelVM
|
|||||||
|
|
||||||
Public Sub ReloadProject_Tick()
|
Public Sub ReloadProject_Tick()
|
||||||
If Not m_bReloadProj Then Return
|
If Not m_bReloadProj Then Return
|
||||||
|
m_bReloadingProj = True
|
||||||
m_bReloadProj = False
|
m_bReloadProj = False
|
||||||
Map.refSceneHostVM.MainController.ResetModified()
|
Map.refSceneHostVM.MainController.ResetModified()
|
||||||
Map.refSceneHostVM.MainController.OpenProject(Map.refSupervisorManagerVM.CurrProd.sProdPath, False)
|
Map.refSceneHostVM.MainController.OpenProject(Map.refSupervisorManagerVM.CurrProd.sProdPath, False)
|
||||||
RefreshSupervisorMachGroups(Map.refMachinePanelVM.MachineList.ToList())
|
RefreshSupervisorMachGroups(Map.refMachinePanelVM.MachineList.ToList())
|
||||||
|
m_bReloadingProj = False
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
#End Region ' CONSTRUCTOR
|
#End Region ' CONSTRUCTOR
|
||||||
|
|||||||
@@ -36,6 +36,16 @@ Public Class MachManaging
|
|||||||
Return m_CN
|
Return m_CN
|
||||||
End Get
|
End Get
|
||||||
End Property
|
End Property
|
||||||
|
Public ReadOnly Property Num_Axium_APServer As NUMAxiumComm
|
||||||
|
Get
|
||||||
|
Return m_CN
|
||||||
|
End Get
|
||||||
|
End Property
|
||||||
|
Public ReadOnly Property Num_Axium_PCToolkit As NUMAxiumPcToolkitComm
|
||||||
|
Get
|
||||||
|
Return m_CN
|
||||||
|
End Get
|
||||||
|
End Property
|
||||||
|
|
||||||
Private Shared WithEvents m_CommandList As New ObservableCollection(Of ThreadCommand)
|
Private Shared WithEvents m_CommandList As New ObservableCollection(Of ThreadCommand)
|
||||||
Public Shared ReadOnly Property CommandList As ObservableCollection(Of ThreadCommand)
|
Public Shared ReadOnly Property CommandList As ObservableCollection(Of ThreadCommand)
|
||||||
@@ -212,7 +222,7 @@ Public Class MachManaging
|
|||||||
' Threading.Thread.Sleep(300)
|
' Threading.Thread.Sleep(300)
|
||||||
' End If
|
' End If
|
||||||
' End If
|
' End If
|
||||||
Case NCTypes.NUM_FLEXIUM, NCTypes.TPA
|
Case NCTypes.NUM_FLEXIUM, NCTypes.TPA, NCTypes.NUM_AXIUM_APSERVER, NCTypes.NUM_AXIUM_PCTOOLKIT
|
||||||
' eseguo ciclo principale
|
' eseguo ciclo principale
|
||||||
Dim nReset_State As Integer
|
Dim nReset_State As Integer
|
||||||
Dim nStart_State As Boolean
|
Dim nStart_State As Boolean
|
||||||
@@ -272,6 +282,168 @@ Public Class MachManaging
|
|||||||
If nCurrMachIndex > 0 AndAlso nReset_State = 0 Then
|
If nCurrMachIndex > 0 AndAlso nReset_State = 0 Then
|
||||||
m_nMachIndex = nCurrMachIndex
|
m_nMachIndex = nCurrMachIndex
|
||||||
End If
|
End If
|
||||||
|
Case NCTypes.NUM_AXIUM_APSERVER
|
||||||
|
Dim dTemp As Double = 0
|
||||||
|
Dim nTemp As Integer = 0
|
||||||
|
If Not IsNothing(ResetVariable.sValue) Then
|
||||||
|
StringToDouble(ResetVariable.sValue, dTemp)
|
||||||
|
Integer.TryParse(dTemp, nReset_State)
|
||||||
|
Else
|
||||||
|
nReset_State = 1
|
||||||
|
End If
|
||||||
|
If Not IsNothing(StartVariable.sValue) Then
|
||||||
|
StringToDouble(StartVariable.sValue, dTemp)
|
||||||
|
Integer.TryParse(dTemp, nTemp)
|
||||||
|
nStart_State = (nTemp = 1)
|
||||||
|
Else
|
||||||
|
nStart_State = -1
|
||||||
|
End If
|
||||||
|
If Not IsNothing(StopVariable.sValue) Then
|
||||||
|
StringToDouble(StopVariable.sValue, dTemp)
|
||||||
|
Integer.TryParse(dTemp, nTemp)
|
||||||
|
nStop_State = (nTemp = 1)
|
||||||
|
Else
|
||||||
|
nStop_State = -1
|
||||||
|
End If
|
||||||
|
If Not IsNothing(ProdVariable.sValue) Then
|
||||||
|
StringToDouble(ProdVariable.sValue, dTemp)
|
||||||
|
Integer.TryParse(dTemp, nP_Prod)
|
||||||
|
Else
|
||||||
|
nP_Prod = -1
|
||||||
|
End If
|
||||||
|
If Not IsNothing(MachGroupVariable.sValue) Then
|
||||||
|
StringToDouble(MachGroupVariable.sValue, dTemp)
|
||||||
|
Integer.TryParse(dTemp, nP_Machgroup)
|
||||||
|
Else
|
||||||
|
nP_Machgroup = -1
|
||||||
|
End If
|
||||||
|
If Not IsNothing(PartVariable.sValue) Then
|
||||||
|
StringToDouble(PartVariable.sValue, dTemp)
|
||||||
|
Integer.TryParse(dTemp, nP_Part)
|
||||||
|
Else
|
||||||
|
nP_Part = -1
|
||||||
|
End If
|
||||||
|
If Not IsNothing(StateVariable.sValue) Then
|
||||||
|
StringToDouble(StateVariable.sValue, dTemp)
|
||||||
|
Integer.TryParse(dTemp, nP_State)
|
||||||
|
Else
|
||||||
|
nP_State = -1
|
||||||
|
End If
|
||||||
|
If Not IsNothing(ISONumVariable.sValue) Then
|
||||||
|
StringToDouble(ISONumVariable.sValue, dTemp)
|
||||||
|
Integer.TryParse(dTemp, nISO_Num)
|
||||||
|
Else
|
||||||
|
nISO_Num = -1
|
||||||
|
End If
|
||||||
|
If Not IsNothing(ISOSentVariable.sValue) Then
|
||||||
|
StringToDouble(ISOSentVariable.sValue, dTemp)
|
||||||
|
Integer.TryParse(dTemp, nISO_Sent)
|
||||||
|
Else
|
||||||
|
nISO_Sent = -1
|
||||||
|
End If
|
||||||
|
If Not IsNothing(RunningVariable.sValue) Then
|
||||||
|
StringToDouble(RunningVariable.sValue, dTemp)
|
||||||
|
Integer.TryParse(dTemp, nRunning)
|
||||||
|
Else
|
||||||
|
nRunning = -1
|
||||||
|
End If
|
||||||
|
If Not IsNothing(MachIndexVariable.sValue) Then
|
||||||
|
StringToDouble(MachIndexVariable.sValue, dTemp)
|
||||||
|
Integer.TryParse(dTemp, nCurrMachIndex)
|
||||||
|
Else
|
||||||
|
nCurrMachIndex = -1
|
||||||
|
End If
|
||||||
|
' se indice lavorazione positivo, lo aggiorno
|
||||||
|
If nCurrMachIndex > 0 AndAlso nReset_State = 0 Then
|
||||||
|
m_nMachIndex = nCurrMachIndex
|
||||||
|
End If
|
||||||
|
' leggo messaggi plc
|
||||||
|
ReadPLCMessages()
|
||||||
|
Case NCTypes.NUM_AXIUM_PCTOOLKIT
|
||||||
|
' leggo tutte le variabili
|
||||||
|
Num_Axium_PCToolkit.RefreshAllVars()
|
||||||
|
'''EgtOutLog("Post lettura variabili")
|
||||||
|
Dim dTemp As Double = 0
|
||||||
|
Dim nTemp As Integer = 0
|
||||||
|
If Not IsNothing(ResetVariable.sValue) Then
|
||||||
|
StringToDouble(ResetVariable.sValue, dTemp)
|
||||||
|
Integer.TryParse(dTemp, nReset_State)
|
||||||
|
Else
|
||||||
|
nReset_State = 1
|
||||||
|
End If
|
||||||
|
If Not IsNothing(StartVariable.sValue) Then
|
||||||
|
StringToDouble(StartVariable.sValue, dTemp)
|
||||||
|
Integer.TryParse(dTemp, nTemp)
|
||||||
|
nStart_State = (nTemp = 1)
|
||||||
|
Else
|
||||||
|
nStart_State = -1
|
||||||
|
End If
|
||||||
|
If Not IsNothing(StopVariable.sValue) Then
|
||||||
|
StringToDouble(StopVariable.sValue, dTemp)
|
||||||
|
Integer.TryParse(dTemp, nTemp)
|
||||||
|
nStop_State = (nTemp = 1)
|
||||||
|
Else
|
||||||
|
nStop_State = -1
|
||||||
|
End If
|
||||||
|
If Not IsNothing(ProdVariable.sValue) Then
|
||||||
|
StringToDouble(ProdVariable.sValue, dTemp)
|
||||||
|
Integer.TryParse(dTemp, nP_Prod)
|
||||||
|
Else
|
||||||
|
nP_Prod = -1
|
||||||
|
End If
|
||||||
|
If Not IsNothing(MachGroupVariable.sValue) Then
|
||||||
|
StringToDouble(MachGroupVariable.sValue, dTemp)
|
||||||
|
Integer.TryParse(dTemp, nP_Machgroup)
|
||||||
|
Else
|
||||||
|
nP_Machgroup = -1
|
||||||
|
End If
|
||||||
|
If Not IsNothing(PartVariable.sValue) Then
|
||||||
|
StringToDouble(PartVariable.sValue, dTemp)
|
||||||
|
Integer.TryParse(dTemp, nP_Part)
|
||||||
|
Else
|
||||||
|
nP_Part = -1
|
||||||
|
End If
|
||||||
|
If Not IsNothing(StateVariable.sValue) Then
|
||||||
|
StringToDouble(StateVariable.sValue, dTemp)
|
||||||
|
Integer.TryParse(dTemp, nP_State)
|
||||||
|
Else
|
||||||
|
nP_State = -1
|
||||||
|
End If
|
||||||
|
If Not IsNothing(ISONumVariable.sValue) Then
|
||||||
|
StringToDouble(ISONumVariable.sValue, dTemp)
|
||||||
|
Integer.TryParse(dTemp, nISO_Num)
|
||||||
|
Else
|
||||||
|
nISO_Num = -1
|
||||||
|
End If
|
||||||
|
If Not IsNothing(ISOSentVariable.sValue) Then
|
||||||
|
StringToDouble(ISOSentVariable.sValue, dTemp)
|
||||||
|
Integer.TryParse(dTemp, nISO_Sent)
|
||||||
|
Else
|
||||||
|
nISO_Sent = -1
|
||||||
|
End If
|
||||||
|
If Not IsNothing(RunningVariable.sValue) Then
|
||||||
|
StringToDouble(RunningVariable.sValue, dTemp)
|
||||||
|
Integer.TryParse(dTemp, nRunning)
|
||||||
|
Else
|
||||||
|
nRunning = -1
|
||||||
|
End If
|
||||||
|
If Not IsNothing(MachIndexVariable.sValue) Then
|
||||||
|
StringToDouble(MachIndexVariable.sValue, dTemp)
|
||||||
|
Integer.TryParse(dTemp, nCurrMachIndex)
|
||||||
|
Else
|
||||||
|
nCurrMachIndex = -1
|
||||||
|
End If
|
||||||
|
'''EgtOutLog("Post scrittura variabili lette")
|
||||||
|
' se indice lavorazione positivo, lo aggiorno
|
||||||
|
If nCurrMachIndex > 0 AndAlso nReset_State = 0 Then
|
||||||
|
m_nMachIndex = nCurrMachIndex
|
||||||
|
End If
|
||||||
|
' leggo messaggi plc
|
||||||
|
ReadPLCMessages()
|
||||||
|
Num_Axium_PCToolkit.ReadCncMode()
|
||||||
|
'EgtOutLog("Pre lettura posizioni")
|
||||||
|
Num_Axium_PCToolkit.ReadPosition()
|
||||||
|
'EgtOutLog("Post lettura messaggi")
|
||||||
End Select
|
End Select
|
||||||
' se NUM aggiorno stato della macchina
|
' se NUM aggiorno stato della macchina
|
||||||
If CurrentMachine.NCType = NCTypes.NUM_FLEXIUM Then
|
If CurrentMachine.NCType = NCTypes.NUM_FLEXIUM Then
|
||||||
@@ -286,14 +458,34 @@ Public Class MachManaging
|
|||||||
If OpState <> Map.refLeftPanelVM.SelOPState.Id Then
|
If OpState <> Map.refLeftPanelVM.SelOPState.Id Then
|
||||||
m_OpStateCallbackDlg(OpState)
|
m_OpStateCallbackDlg(OpState)
|
||||||
End If
|
End If
|
||||||
|
ElseIf CurrentMachine.NCType = NCTypes.NUM_AXIUM_APSERVER OrElse CurrentMachine.NCType = NCTypes.NUM_AXIUM_PCTOOLKIT Then
|
||||||
|
Dim OpState As OPStates
|
||||||
|
If nReset_State = 1 Then
|
||||||
|
OpState = OPStates.End
|
||||||
|
ElseIf nStop_State Then
|
||||||
|
OpState = OPStates.Stop
|
||||||
|
ElseIf nStart_State Then
|
||||||
|
OpState = OPStates.Start
|
||||||
|
Else
|
||||||
|
OpState = OPStates.End
|
||||||
|
End If
|
||||||
|
If OpState <> Map.refLeftPanelVM.SelOPState.Id Then
|
||||||
|
m_OpStateCallbackDlg(OpState)
|
||||||
|
End If
|
||||||
End If
|
End If
|
||||||
' se TPA e non ancora fatto, preparo variabili barra successiva
|
' se TPA e non ancora fatto, preparo variabili barra successiva
|
||||||
If CurrentMachine.NCType = NCTypes.TPA AndAlso CurrentMachine.Flow = FlowTypes.CONTINUOUS AndAlso m_NextBarId = 0 Then
|
If CurrentMachine.NCType = NCTypes.TPA AndAlso CurrentMachine.Flow = FlowTypes.CONTINUOUS AndAlso m_NextBarId = 0 Then
|
||||||
SetNextBarVars()
|
SetNextBarVars()
|
||||||
' se macchina NUM, non sto gia' spedendo e variabile spedizione me lo permette
|
' se macchina NUM, non sto gia' spedendo e variabile spedizione me lo permette
|
||||||
ElseIf CurrentMachine.NCType = NCTypes.NUM_FLEXIUM AndAlso
|
ElseIf (CurrentMachine.NCType = NCTypes.NUM_FLEXIUM AndAlso
|
||||||
Not Num_Flexium.bIsTransferActive AndAlso
|
Not Num_Flexium.bIsTransferActive AndAlso
|
||||||
nISO_Sent = 1 Then
|
nISO_Sent = 1) OrElse
|
||||||
|
(CurrentMachine.NCType = NCTypes.NUM_AXIUM_APSERVER AndAlso
|
||||||
|
Not Num_Axium_APServer.bIsTransferActive AndAlso
|
||||||
|
nISO_Sent = 1) OrElse
|
||||||
|
(CurrentMachine.NCType = NCTypes.NUM_AXIUM_PCTOOLKIT AndAlso
|
||||||
|
Not Num_Axium_PCToolkit.bIsTransferActive AndAlso
|
||||||
|
nISO_Sent = 1) Then
|
||||||
' verifico se c'e' un programma da lanciare
|
' verifico se c'e' un programma da lanciare
|
||||||
SendNextProgram()
|
SendNextProgram()
|
||||||
End If
|
End If
|
||||||
@@ -356,6 +548,8 @@ Public Class MachManaging
|
|||||||
Part.nProduction_State = ItemState.WIP
|
Part.nProduction_State = ItemState.WIP
|
||||||
Part.dtStartTime = dtStart
|
Part.dtStartTime = dtStart
|
||||||
Part.NotifyPropertyChanged(NameOf(Part.nProduction_State))
|
Part.NotifyPropertyChanged(NameOf(Part.nProduction_State))
|
||||||
|
' scrivo evento inizio pezzo su DB
|
||||||
|
DbControllers.m_LogMachineController.Create(LogEvent.CreatePartStateLog(dtStart, nP_Prod, nP_Machgroup, Part.nPartId, nP_State, DbControllers.SupervisorId))
|
||||||
Next
|
Next
|
||||||
Else
|
Else
|
||||||
' scrivo data start su Db pezzo
|
' scrivo data start su Db pezzo
|
||||||
@@ -367,12 +561,14 @@ Public Class MachManaging
|
|||||||
Part.nProduction_State = ItemState.WIP
|
Part.nProduction_State = ItemState.WIP
|
||||||
Part.dtStartTime = dtStart
|
Part.dtStartTime = dtStart
|
||||||
Part.NotifyPropertyChanged(NameOf(Part.nProduction_State))
|
Part.NotifyPropertyChanged(NameOf(Part.nProduction_State))
|
||||||
|
' scrivo evento inizio pezzo su DB
|
||||||
|
DbControllers.m_LogMachineController.Create(LogEvent.CreatePartStateLog(dtStart, nP_Prod, nP_Machgroup, nP_Part, nP_State, DbControllers.SupervisorId))
|
||||||
End If
|
End If
|
||||||
' azzero variabile per far ripartire macchina
|
' azzero variabile per far ripartire macchina
|
||||||
Select Case CurrentMachine.NCType
|
Select Case CurrentMachine.NCType
|
||||||
Case NCTypes.TPA
|
Case NCTypes.TPA
|
||||||
Tpa.RWVariableManager.WriteVarByName(P_STATE, 0)
|
Tpa.RWVariableManager.WriteVarByName(P_STATE, 0)
|
||||||
Case NCTypes.NUM_FLEXIUM
|
Case NCTypes.NUM_FLEXIUM, NCTypes.NUM_AXIUM_APSERVER, NCTypes.NUM_AXIUM_PCTOOLKIT
|
||||||
StateVariable.sValue = "0"
|
StateVariable.sValue = "0"
|
||||||
End Select
|
End Select
|
||||||
' se nessun pezzo della barra diverso da quello corrente e' in start
|
' se nessun pezzo della barra diverso da quello corrente e' in start
|
||||||
@@ -384,6 +580,8 @@ Public Class MachManaging
|
|||||||
MachGroup.MyMachGroupM.SetProductionState(ItemState.WIP)
|
MachGroup.MyMachGroupM.SetProductionState(ItemState.WIP)
|
||||||
MachGroup.dtStartTime = dtStart
|
MachGroup.dtStartTime = dtStart
|
||||||
MachGroup.NotifyPropertyChanged(NameOf(MachGroup.nProduction_State))
|
MachGroup.NotifyPropertyChanged(NameOf(MachGroup.nProduction_State))
|
||||||
|
' scrivo evento inizio MachGroup su DB
|
||||||
|
DbControllers.m_LogMachineController.Create(LogEvent.CreateMachGroupStateLog(dtStart, nP_Prod, nP_Machgroup, nP_State, DbControllers.SupervisorId))
|
||||||
End If
|
End If
|
||||||
' attesa per essere sicuro che abbia scritto e riletto variabili
|
' attesa per essere sicuro che abbia scritto e riletto variabili
|
||||||
Threading.Thread.Sleep(300)
|
Threading.Thread.Sleep(300)
|
||||||
@@ -410,7 +608,8 @@ Public Class MachManaging
|
|||||||
DbControllers.m_PartController.UpdateStart(nP_Prod, nP_Machgroup, Part.nPartId, dtStart)
|
DbControllers.m_PartController.UpdateStart(nP_Prod, nP_Machgroup, Part.nPartId, dtStart)
|
||||||
Part.dtStartTime = dtStart
|
Part.dtStartTime = dtStart
|
||||||
End If
|
End If
|
||||||
|
' scrivo evento fine pezzo su DB
|
||||||
|
DbControllers.m_LogMachineController.Create(LogEvent.CreatePartStateLog(dtEnd, nP_Prod, nP_Machgroup, Part.nPartId, nP_State, DbControllers.SupervisorId))
|
||||||
Next
|
Next
|
||||||
Else
|
Else
|
||||||
' scrivo data end su Db pezzo
|
' scrivo data end su Db pezzo
|
||||||
@@ -424,6 +623,8 @@ Public Class MachManaging
|
|||||||
Part.NotifyPropertyChanged(NameOf(Part.nProduction_State))
|
Part.NotifyPropertyChanged(NameOf(Part.nProduction_State))
|
||||||
' resetto stato redo
|
' resetto stato redo
|
||||||
Part.bRedo = False
|
Part.bRedo = False
|
||||||
|
' scrivo evento fine pezzo su DB
|
||||||
|
DbControllers.m_LogMachineController.Create(LogEvent.CreatePartStateLog(dtEnd, nP_Prod, nP_Machgroup, nP_Part, nP_State, DbControllers.SupervisorId))
|
||||||
End If
|
End If
|
||||||
|
|
||||||
' se tutti i pezzi della barra sono in end
|
' se tutti i pezzi della barra sono in end
|
||||||
@@ -435,6 +636,8 @@ Public Class MachManaging
|
|||||||
MachGroup.MyMachGroupM.SetProductionState(ItemState.Produced)
|
MachGroup.MyMachGroupM.SetProductionState(ItemState.Produced)
|
||||||
MachGroup.dtEndTime = dtEnd
|
MachGroup.dtEndTime = dtEnd
|
||||||
MachGroup.NotifyPropertyChanged(NameOf(MachGroup.nProduction_State))
|
MachGroup.NotifyPropertyChanged(NameOf(MachGroup.nProduction_State))
|
||||||
|
' scrivo evento fine MachGroup su DB
|
||||||
|
DbControllers.m_LogMachineController.Create(LogEvent.CreateMachGroupStateLog(dtEnd, nP_Prod, nP_Machgroup, nP_State, DbControllers.SupervisorId))
|
||||||
' azzero tutte le variabilli per iniziare barra successiva
|
' azzero tutte le variabilli per iniziare barra successiva
|
||||||
ProdVariable.sValue = "0"
|
ProdVariable.sValue = "0"
|
||||||
MachGroupVariable.sValue = "0"
|
MachGroupVariable.sValue = "0"
|
||||||
@@ -507,7 +710,9 @@ Public Class MachManaging
|
|||||||
Next
|
Next
|
||||||
' li scrivo nel CN
|
' li scrivo nel CN
|
||||||
For Index As Integer = 1 To 10
|
For Index As Integer = 1 To 10
|
||||||
Tpa.RWVariableManager.WriteVarByName(VPAR & Index.ToString(), dVPars(Index))
|
Dim sValue As String = ""
|
||||||
|
DoubleToString(dVPars(Index), sValue)
|
||||||
|
Tpa.RWVariableManager.WriteVarByName(VPAR & Index.ToString(), sValue)
|
||||||
Next
|
Next
|
||||||
m_NextBarId = MyMachGroup.Id
|
m_NextBarId = MyMachGroup.Id
|
||||||
Return True
|
Return True
|
||||||
@@ -521,36 +726,47 @@ Public Class MachManaging
|
|||||||
End Function
|
End Function
|
||||||
|
|
||||||
Private Function SendNextProgram() As Boolean
|
Private Function SendNextProgram() As Boolean
|
||||||
|
EgtOutLog("Inizio SendNextProgram")
|
||||||
Dim bSent As Boolean = False
|
Dim bSent As Boolean = False
|
||||||
If (CurrentMachine.NCType = NCTypes.TPA AndAlso Not m_bStartPending AndAlso Tpa.opState = MachineOperatingState.Pending) OrElse
|
If (CurrentMachine.NCType = NCTypes.TPA AndAlso Not m_bStartPending AndAlso Tpa.opState = MachineOperatingState.Pending) OrElse
|
||||||
(CurrentMachine.NCType = NCTypes.NUM_FLEXIUM AndAlso Not Num_Flexium.bIsTransferActive) Then ' Or Tpa.opState = MachineOperatingState.Start) Then
|
(CurrentMachine.NCType = NCTypes.NUM_FLEXIUM AndAlso Not Num_Flexium.bIsTransferActive) OrElse
|
||||||
|
(CurrentMachine.NCType = NCTypes.NUM_AXIUM_APSERVER AndAlso Not Num_Axium_APServer.bIsTransferActive) OrElse
|
||||||
|
(CurrentMachine.NCType = NCTypes.NUM_AXIUM_PCTOOLKIT AndAlso Not Num_Axium_PCToolkit.bIsTransferActive) Then ' Or Tpa.opState = MachineOperatingState.Start) Then
|
||||||
' verifico se c'e' un programma da lanciare
|
' verifico se c'e' un programma da lanciare
|
||||||
If Not IsNothing(Map.refProjectVM.SupervisorMachGroupPanelVM) Then
|
If Not IsNothing(Map.refProjectVM.SupervisorMachGroupPanelVM) Then
|
||||||
EgtOutLog("Start " & DateTime.Now())
|
EgtOutLog("Start " & DateTime.Now())
|
||||||
|
Dim bMachGroupNotReady As Boolean = False
|
||||||
SyncLock m_Lock_SendProgram
|
SyncLock m_Lock_SendProgram
|
||||||
For Each MyMachGroup As MyMachGroupVM In Map.refProjectVM.SupervisorMachGroupPanelVM.MachGroupVMList
|
For Each MyMachGroup As MyMachGroupVM In Map.refProjectVM.SupervisorMachGroupPanelVM.MachGroupVMList
|
||||||
|
EgtOutLog("Ciclo su name: " & MyMachGroup.Name & " id: " & MyMachGroup.Id)
|
||||||
If Not MyMachGroup.bSentToMachine AndAlso (MyMachGroup.dtStartTime = DateTime.MinValue OrElse
|
If Not MyMachGroup.bSentToMachine AndAlso (MyMachGroup.dtStartTime = DateTime.MinValue OrElse
|
||||||
(Map.refSupervisorManagerVM.CurrProd.nType = BWType.WALL AndAlso MyMachGroup.bResetWhileCutting)) Then
|
(Map.refSupervisorManagerVM.CurrProd.nType = BWType.WALL AndAlso MyMachGroup.bResetWhileCutting)) Then
|
||||||
|
EgtOutLog(MyMachGroup.Name & " id: " & MyMachGroup.Id & " è da fare")
|
||||||
' verifico se ricalcolo finito
|
' verifico se ricalcolo finito
|
||||||
If MyMachGroup.bReadyForMachining AndAlso If(CurrentMachine.NCType = NCTypes.NUM_FLEXIUM, Not MyMachGroup.bSendingToMachine, True) Then
|
If MyMachGroup.bReadyForMachining AndAlso If(CurrentMachine.NCType = NCTypes.NUM_FLEXIUM Or CurrentMachine.NCType = NCTypes.NUM_AXIUM_APSERVER OrElse CurrentMachine.NCType = NCTypes.NUM_AXIUM_PCTOOLKIT, Not MyMachGroup.bSendingToMachine, True) Then
|
||||||
|
EgtOutLog(MyMachGroup.Name & " id: " & MyMachGroup.Id & " pronto per essere lavorato")
|
||||||
' lo lancio
|
' lo lancio
|
||||||
bSent = SendProgram(MyMachGroup.CnFilePath(), MyMachGroup.Name)
|
bSent = SendProgram(MyMachGroup.CnFilePath(), MyMachGroup.Name)
|
||||||
EgtOutLog("Mandato " & DateTime.Now() & " " & MyMachGroup.Name & " " & bSent.ToString())
|
EgtOutLog(MyMachGroup.Name & " id: " & MyMachGroup.Id & " mandato " & DateTime.Now() & " " & MyMachGroup.Name & " " & bSent.ToString())
|
||||||
Select Case CurrentMachine.NCType
|
Select Case CurrentMachine.NCType
|
||||||
Case NCTypes.TPA
|
Case NCTypes.TPA
|
||||||
MyMachGroup.SetSentToMachine(bSent)
|
MyMachGroup.SetSentToMachine(bSent)
|
||||||
Case NCTypes.NUM_FLEXIUM
|
Case NCTypes.NUM_FLEXIUM, NCTypes.NUM_AXIUM_APSERVER, NCTypes.NUM_AXIUM_PCTOOLKIT
|
||||||
MyMachGroup.SetSendingToMachine(bSent)
|
MyMachGroup.SetSendingToMachine(bSent)
|
||||||
End Select
|
End Select
|
||||||
m_NextBarId = 0
|
m_NextBarId = 0
|
||||||
Exit For
|
Exit For
|
||||||
Else
|
Else
|
||||||
' programma non ancora pronto, esco per attendere
|
' programma non ancora pronto, esco per attendere
|
||||||
Return False
|
bMachGroupNotReady = True
|
||||||
|
EgtOutLog(MyMachGroup.Name & " id: " & MyMachGroup.Id & " non ancora pronto per essere mandato")
|
||||||
|
Exit For
|
||||||
|
'Return False
|
||||||
End If
|
End If
|
||||||
End If
|
End If
|
||||||
Next
|
Next
|
||||||
End SyncLock
|
End SyncLock
|
||||||
|
If bMachGroupNotReady Then Return False
|
||||||
EgtOutLog("End " & DateTime.Now())
|
EgtOutLog("End " & DateTime.Now())
|
||||||
End If
|
End If
|
||||||
End If
|
End If
|
||||||
@@ -603,9 +819,9 @@ Public Class MachManaging
|
|||||||
Num_Flexium.CloseReadList()
|
Num_Flexium.CloseReadList()
|
||||||
Num_Flexium.CloseReadELS()
|
Num_Flexium.CloseReadELS()
|
||||||
Case CommandTypes.MDI
|
Case CommandTypes.MDI
|
||||||
Num_Flexium.MDI_Execute(Command.sVariable)
|
SendMDI(Command.sVariable)
|
||||||
Case CommandTypes.SETCHANNEL
|
Case CommandTypes.SETCHANNEL
|
||||||
Num_Flexium.SetChannel(Command.nVariable)
|
SetChannel(Command.nVariable)
|
||||||
End Select
|
End Select
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
@@ -634,6 +850,31 @@ Public Class MachManaging
|
|||||||
m_ResultCallbackDlg(CommandTypes.CONNECT, CommandStates.ERROR_, ResultTypes.EXECUTED, "Errore: impossibile connettersi!")
|
m_ResultCallbackDlg(CommandTypes.CONNECT, CommandStates.ERROR_, ResultTypes.EXECUTED, "Errore: impossibile connettersi!")
|
||||||
Return
|
Return
|
||||||
End Try
|
End Try
|
||||||
|
Case NCTypes.NUM_AXIUM_APSERVER
|
||||||
|
Try
|
||||||
|
m_CN = New NUMAxiumComm(Me)
|
||||||
|
Num_Axium_APServer.InitFxObjects()
|
||||||
|
m_ResultCallbackDlg(CommandTypes.CONNECT, CommandStates.OK, ResultTypes.EXECUTED, "")
|
||||||
|
' creo classe di gestione variabili
|
||||||
|
Catch ex As Exception
|
||||||
|
m_ResultCallbackDlg(CommandTypes.CONNECT, CommandStates.ERROR_, ResultTypes.EXECUTED, "Errore: impossibile connettersi!")
|
||||||
|
Return
|
||||||
|
End Try
|
||||||
|
Case NCTypes.NUM_AXIUM_PCTOOLKIT
|
||||||
|
Try
|
||||||
|
m_CN = New NUMAxiumPcToolkitComm(Me)
|
||||||
|
If Num_Axium_PCToolkit.InitConnection() Then
|
||||||
|
Num_Axium_PCToolkit.GetGeneralFunctions()
|
||||||
|
m_ResultCallbackDlg(CommandTypes.CONNECT, CommandStates.OK, ResultTypes.EXECUTED, "")
|
||||||
|
Else
|
||||||
|
m_ResultCallbackDlg(CommandTypes.CONNECT, CommandStates.ERROR_, ResultTypes.EXECUTED, "Errore: impossibile connettersi!")
|
||||||
|
Return
|
||||||
|
End If
|
||||||
|
' creo classe di gestione variabili
|
||||||
|
Catch ex As Exception
|
||||||
|
m_ResultCallbackDlg(CommandTypes.CONNECT, CommandStates.ERROR_, ResultTypes.EXECUTED, "Errore: impossibile connettersi!")
|
||||||
|
Return
|
||||||
|
End Try
|
||||||
End Select
|
End Select
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
@@ -652,6 +893,20 @@ Public Class MachManaging
|
|||||||
' chiudo classe Num_Flexium
|
' chiudo classe Num_Flexium
|
||||||
Me.OnDispose()
|
Me.OnDispose()
|
||||||
'Num_Flexium.OnDispose()
|
'Num_Flexium.OnDispose()
|
||||||
|
Case NCTypes.NUM_AXIUM_APSERVER
|
||||||
|
m_bConnected = False
|
||||||
|
Num_Axium_APServer.CloseFxObjects()
|
||||||
|
m_ResultCallbackDlg(CommandTypes.DISCONNECT, CommandStates.OK, ResultTypes.EXECUTED, "")
|
||||||
|
' chiudo classe Num_Flexium
|
||||||
|
Me.OnDispose()
|
||||||
|
'Num_Flexium.OnDispose()
|
||||||
|
Case NCTypes.NUM_AXIUM_PCTOOLKIT
|
||||||
|
m_bConnected = False
|
||||||
|
Num_Axium_PCToolkit.CloseFxObjects()
|
||||||
|
m_ResultCallbackDlg(CommandTypes.DISCONNECT, CommandStates.OK, ResultTypes.EXECUTED, "")
|
||||||
|
' chiudo classe Num_Flexium
|
||||||
|
Me.OnDispose()
|
||||||
|
'Num_Flexium.OnDispose()
|
||||||
End Select
|
End Select
|
||||||
' termino thread di comunicazione
|
' termino thread di comunicazione
|
||||||
MachineCommThread.StopThread()
|
MachineCommThread.StopThread()
|
||||||
@@ -661,6 +916,10 @@ Public Class MachManaging
|
|||||||
Select Case CurrentMachine.NCType
|
Select Case CurrentMachine.NCType
|
||||||
Case NCTypes.NUM_FLEXIUM
|
Case NCTypes.NUM_FLEXIUM
|
||||||
Num_Flexium.SetMode(CNMode)
|
Num_Flexium.SetMode(CNMode)
|
||||||
|
Case NCTypes.NUM_AXIUM_APSERVER
|
||||||
|
Num_Axium_APServer.SetMode(CNMode)
|
||||||
|
Case NCTypes.NUM_AXIUM_PCTOOLKIT
|
||||||
|
Num_Axium_PCToolkit.SetMode(CNMode)
|
||||||
End Select
|
End Select
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
@@ -700,6 +959,10 @@ Public Class MachManaging
|
|||||||
m_ResultCallbackDlg(CommandTypes.START, If(bOk, CommandStates.OK, CommandStates.ERROR_), ResultTypes.EXECUTED, "")
|
m_ResultCallbackDlg(CommandTypes.START, If(bOk, CommandStates.OK, CommandStates.ERROR_), ResultTypes.EXECUTED, "")
|
||||||
Case NCTypes.NUM_FLEXIUM
|
Case NCTypes.NUM_FLEXIUM
|
||||||
Num_Flexium.Start()
|
Num_Flexium.Start()
|
||||||
|
Case NCTypes.NUM_AXIUM_APSERVER
|
||||||
|
Num_Axium_APServer.Start()
|
||||||
|
Case NCTypes.NUM_AXIUM_PCTOOLKIT
|
||||||
|
Num_Axium_PCToolkit.Start()
|
||||||
End Select
|
End Select
|
||||||
' aggiorno stato bottoni in LeftPanel
|
' aggiorno stato bottoni in LeftPanel
|
||||||
Map.refLeftPanelVM.UpdateButtonIsEnabledState()
|
Map.refLeftPanelVM.UpdateButtonIsEnabledState()
|
||||||
@@ -712,6 +975,10 @@ Public Class MachManaging
|
|||||||
m_ResultCallbackDlg(CommandTypes.STOP_, If(bOk, CommandStates.OK, CommandStates.ERROR_), ResultTypes.EXECUTED, "")
|
m_ResultCallbackDlg(CommandTypes.STOP_, If(bOk, CommandStates.OK, CommandStates.ERROR_), ResultTypes.EXECUTED, "")
|
||||||
Case NCTypes.NUM_FLEXIUM
|
Case NCTypes.NUM_FLEXIUM
|
||||||
Num_Flexium.Stop_()
|
Num_Flexium.Stop_()
|
||||||
|
Case NCTypes.NUM_AXIUM_APSERVER
|
||||||
|
Num_Axium_APServer.Stop_()
|
||||||
|
Case NCTypes.NUM_AXIUM_PCTOOLKIT
|
||||||
|
Num_Axium_PCToolkit.Stop_()
|
||||||
End Select
|
End Select
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
@@ -722,6 +989,10 @@ Public Class MachManaging
|
|||||||
m_ResultCallbackDlg(CommandTypes.RESET, If(bOk, CommandStates.OK, CommandStates.ERROR_), ResultTypes.EXECUTED, "")
|
m_ResultCallbackDlg(CommandTypes.RESET, If(bOk, CommandStates.OK, CommandStates.ERROR_), ResultTypes.EXECUTED, "")
|
||||||
Case NCTypes.NUM_FLEXIUM
|
Case NCTypes.NUM_FLEXIUM
|
||||||
Num_Flexium.Reset()
|
Num_Flexium.Reset()
|
||||||
|
Case NCTypes.NUM_AXIUM_APSERVER
|
||||||
|
Num_Axium_APServer.Reset()
|
||||||
|
Case NCTypes.NUM_AXIUM_PCTOOLKIT
|
||||||
|
Num_Axium_PCToolkit.Reset()
|
||||||
End Select
|
End Select
|
||||||
' aggiorno stato bottoni in LeftPanel
|
' aggiorno stato bottoni in LeftPanel
|
||||||
Map.refLeftPanelVM.UpdateButtonIsEnabledState()
|
Map.refLeftPanelVM.UpdateButtonIsEnabledState()
|
||||||
@@ -744,6 +1015,10 @@ Public Class MachManaging
|
|||||||
m_ResultCallbackDlg(CommandTypes.SETPOINT, If(bOk, CommandStates.OK, CommandStates.ERROR_), ResultTypes.EXECUTED, "")
|
m_ResultCallbackDlg(CommandTypes.SETPOINT, If(bOk, CommandStates.OK, CommandStates.ERROR_), ResultTypes.EXECUTED, "")
|
||||||
Case NCTypes.NUM_FLEXIUM
|
Case NCTypes.NUM_FLEXIUM
|
||||||
Map.refLeftPanelVM.SelOPMode = Map.refLeftPanelVM.OPModeList.Find(Function(x) x.Id = OPModes.Home)
|
Map.refLeftPanelVM.SelOPMode = Map.refLeftPanelVM.OPModeList.Find(Function(x) x.Id = OPModes.Home)
|
||||||
|
Case NCTypes.NUM_AXIUM_APSERVER
|
||||||
|
Map.refLeftPanelVM.SelOPMode = Map.refLeftPanelVM.OPModeList.Find(Function(x) x.Id = OPModes.Home)
|
||||||
|
Case NCTypes.NUM_AXIUM_PCTOOLKIT
|
||||||
|
Map.refLeftPanelVM.SelOPMode = Map.refLeftPanelVM.OPModeList.Find(Function(x) x.Id = OPModes.Home)
|
||||||
End Select
|
End Select
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
@@ -766,7 +1041,20 @@ Public Class MachManaging
|
|||||||
Num_Flexium.FileDownload(sFileType, ProgramPath)
|
Num_Flexium.FileDownload(sFileType, ProgramPath)
|
||||||
Num_Flexium.StartTransfer()
|
Num_Flexium.StartTransfer()
|
||||||
Return True
|
Return True
|
||||||
|
Case NCTypes.NUM_AXIUM_APSERVER
|
||||||
|
Dim sFileType As String = "%" & ProgramId.ToString()
|
||||||
|
Num_Axium_APServer.FileDownload(sFileType, ProgramPath)
|
||||||
|
Num_Axium_APServer.StartTransfer()
|
||||||
|
Return True
|
||||||
|
Case NCTypes.NUM_AXIUM_PCTOOLKIT
|
||||||
|
EgtOutLog("Pre Download")
|
||||||
|
Dim nFileType As Integer = 0
|
||||||
|
If Integer.TryParse(ProgramId, nFileType) AndAlso nFileType > 0 Then
|
||||||
|
Num_Axium_PCToolkit.FileDownload(nFileType * 10, ProgramPath)
|
||||||
|
End If
|
||||||
|
Return True
|
||||||
End Select
|
End Select
|
||||||
|
Return False
|
||||||
End Function
|
End Function
|
||||||
|
|
||||||
Public Sub RemoveProgram(ProgramIndex As Integer, ProgramPath As String, ProgramType As String)
|
Public Sub RemoveProgram(ProgramIndex As Integer, ProgramPath As String, ProgramType As String)
|
||||||
@@ -786,6 +1074,11 @@ Public Class MachManaging
|
|||||||
Case NCTypes.NUM_FLEXIUM
|
Case NCTypes.NUM_FLEXIUM
|
||||||
Num_Flexium.FileDelete(ProgramType, ProgramPath)
|
Num_Flexium.FileDelete(ProgramType, ProgramPath)
|
||||||
Num_Flexium.StartTransfer()
|
Num_Flexium.StartTransfer()
|
||||||
|
Case NCTypes.NUM_AXIUM_APSERVER
|
||||||
|
Num_Axium_APServer.FileDelete(ProgramType, ProgramPath)
|
||||||
|
Num_Axium_APServer.StartTransfer()
|
||||||
|
Case NCTypes.NUM_AXIUM_PCTOOLKIT
|
||||||
|
Num_Axium_PCToolkit.FileDelete(ProgramType, ProgramPath)
|
||||||
End Select
|
End Select
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
@@ -805,6 +1098,28 @@ Public Class MachManaging
|
|||||||
End Select
|
End Select
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
|
Public Sub SetChannel(value As Integer)
|
||||||
|
Select Case CurrentMachine.NCType
|
||||||
|
Case NCTypes.NUM_FLEXIUM
|
||||||
|
Num_Flexium.SetChannel(value)
|
||||||
|
Case NCTypes.NUM_AXIUM_APSERVER
|
||||||
|
Num_Axium_APServer.SetChannel(value)
|
||||||
|
Case NCTypes.NUM_AXIUM_PCTOOLKIT
|
||||||
|
Num_Axium_PCToolkit.SetChannel(value)
|
||||||
|
End Select
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Public Sub SendMDI(value As String)
|
||||||
|
Select Case CurrentMachine.NCType
|
||||||
|
Case NCTypes.NUM_FLEXIUM
|
||||||
|
Num_Flexium.MDI_Execute(value)
|
||||||
|
Case NCTypes.NUM_AXIUM_APSERVER
|
||||||
|
Num_Axium_APServer.MDI_Execute(value)
|
||||||
|
Case NCTypes.NUM_AXIUM_PCTOOLKIT
|
||||||
|
Num_Axium_PCToolkit.MDI_Execute(value)
|
||||||
|
End Select
|
||||||
|
End Sub
|
||||||
|
|
||||||
Public Sub WriteVar(Address As String, Value As String, Type As CommVar.Types)
|
Public Sub WriteVar(Address As String, Value As String, Type As CommVar.Types)
|
||||||
Select Case CurrentMachine.NCType
|
Select Case CurrentMachine.NCType
|
||||||
Case NCTypes.TPA
|
Case NCTypes.TPA
|
||||||
@@ -816,6 +1131,20 @@ Public Class MachManaging
|
|||||||
Case CommVar.Types.CN
|
Case CommVar.Types.CN
|
||||||
Num_Flexium.WriteNCVariables(Address, Value)
|
Num_Flexium.WriteNCVariables(Address, Value)
|
||||||
End Select
|
End Select
|
||||||
|
Case NCTypes.NUM_AXIUM_APSERVER
|
||||||
|
Select Case Type
|
||||||
|
Case CommVar.Types.PLC
|
||||||
|
Num_Axium_APServer.WritePlcVariables(Address, Value)
|
||||||
|
Case CommVar.Types.CN
|
||||||
|
Num_Axium_APServer.WriteNCVariables(Address, Value)
|
||||||
|
End Select
|
||||||
|
Case NCTypes.NUM_AXIUM_PCTOOLKIT
|
||||||
|
Select Case Type
|
||||||
|
Case CommVar.Types.PLC
|
||||||
|
Num_Axium_PCToolkit.WritePlcVariables(Address, Value)
|
||||||
|
Case CommVar.Types.CN
|
||||||
|
Num_Axium_PCToolkit.WriteNCVariables(Address, Value)
|
||||||
|
End Select
|
||||||
End Select
|
End Select
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
@@ -827,7 +1156,12 @@ Public Class MachManaging
|
|||||||
Return RWVariableManager.InitVar(NewVar)
|
Return RWVariableManager.InitVar(NewVar)
|
||||||
Case NCTypes.NUM_FLEXIUM
|
Case NCTypes.NUM_FLEXIUM
|
||||||
Return NUMFlexiumComm.InitVar(NewVar)
|
Return NUMFlexiumComm.InitVar(NewVar)
|
||||||
|
Case NCTypes.NUM_AXIUM_APSERVER
|
||||||
|
Return NUMAxiumComm.InitVar(NewVar)
|
||||||
|
Case NCTypes.NUM_AXIUM_PCTOOLKIT
|
||||||
|
Return NUMAxiumPcToolkitComm.InitVar(NewVar)
|
||||||
End Select
|
End Select
|
||||||
|
Return Nothing
|
||||||
End Function
|
End Function
|
||||||
|
|
||||||
Private Shared Function GetPrivateProfileVariable(IpAppName As String, IpKeyName As String, IpFileName As String) As CommVar
|
Private Shared Function GetPrivateProfileVariable(IpAppName As String, IpKeyName As String, IpFileName As String) As CommVar
|
||||||
@@ -869,4 +1203,37 @@ Public Class MachManaging
|
|||||||
Return New CommVar(sVariableValues(0), sVariableValues(1), ReadType, Type, Paragraph)
|
Return New CommVar(sVariableValues(0), sVariableValues(1), ReadType, Type, Paragraph)
|
||||||
End Function
|
End Function
|
||||||
|
|
||||||
|
Private Sub ReadPLCMessages()
|
||||||
|
Dim nPlc_Msg(5) As Integer
|
||||||
|
For Index As Integer = 1 To 6
|
||||||
|
Dim nIndex As Integer = Index
|
||||||
|
Dim PLCMessagesVariable As Variable = Map.refMachCommandMessagePanelVM.MainVariablesList.FirstOrDefault(Function(x) x.sName = PLC_MESSAGES & nIndex)
|
||||||
|
If IsNothing(PLCMessagesVariable) OrElse IsNothing(PLCMessagesVariable.sValue) Then Return
|
||||||
|
Dim dTemp As Double = 0
|
||||||
|
Dim nTemp As Integer = 0
|
||||||
|
StringToDouble(PLCMessagesVariable.sValue, dTemp)
|
||||||
|
Integer.TryParse(dTemp, nTemp)
|
||||||
|
Dim Bytes As Byte() = BitConverter.GetBytes(nTemp)
|
||||||
|
Dim NewBytes As Byte() = BitConverter.GetBytes(nTemp)
|
||||||
|
For nBIndex = Bytes.Count - 1 To 0 Step -1
|
||||||
|
NewBytes(Bytes.Count - 1 - nBIndex) = Bytes(nBIndex)
|
||||||
|
Next
|
||||||
|
Dim Res = BitConverter.ToInt32(NewBytes, 0)
|
||||||
|
nPlc_Msg(nIndex - 1) = Res
|
||||||
|
Next
|
||||||
|
Dim BitArray As New BitArray(nPlc_Msg)
|
||||||
|
Dim ErrorList As New List(Of Integer)
|
||||||
|
For BitIndex = 0 To BitArray.Count - 1
|
||||||
|
If BitIndex <= 169 AndAlso BitArray(BitIndex) Then
|
||||||
|
ErrorList.Add(BitIndex)
|
||||||
|
End If
|
||||||
|
Next
|
||||||
|
Select Case CurrentMachine.NCType
|
||||||
|
Case NCTypes.NUM_AXIUM_APSERVER
|
||||||
|
Num_Axium_APServer.objErrorHandler_ErrorFromActiveCnc2(ErrorList)
|
||||||
|
Case NCTypes.NUM_AXIUM_PCTOOLKIT
|
||||||
|
Num_Axium_PCToolkit.objErrorHandler_ErrorFromActiveCnc2(ErrorList)
|
||||||
|
End Select
|
||||||
|
End Sub
|
||||||
|
|
||||||
End Class
|
End Class
|
||||||
|
|||||||
@@ -298,6 +298,11 @@ Public Class CommVar
|
|||||||
Dim bNewValue As Boolean = m_sValue <> Value
|
Dim bNewValue As Boolean = m_sValue <> Value
|
||||||
m_sValue = Value
|
m_sValue = Value
|
||||||
m_bReaded = True
|
m_bReaded = True
|
||||||
|
If CurrentMachine.NCType = NCTypes.NUM_FLEXIUM AndAlso (sName = MACHINDEX OrElse sName = TOOLINDEX OrElse sName = TOOLINDEX2) Then
|
||||||
|
Map.refLeftPanelVM.NotifyPropertyChanged(NameOf(Map.refLeftPanelVM.sE80000))
|
||||||
|
Map.refLeftPanelVM.NotifyPropertyChanged(NameOf(Map.refLeftPanelVM.sE80001))
|
||||||
|
Map.refLeftPanelVM.NotifyPropertyChanged(NameOf(Map.refLeftPanelVM.sE80002))
|
||||||
|
End If
|
||||||
If bNewValue Then RaiseEvent NewValue(Me, New NewValueEventArgs(Value))
|
If bNewValue Then RaiseEvent NewValue(Me, New NewValueEventArgs(Value))
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,113 @@
|
|||||||
|
<UserControl x:Class="MachineLogPageV"
|
||||||
|
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||||
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||||
|
xmlns:EgtBEAMWALL="clr-namespace:EgtBEAMWALL.Supervisor"
|
||||||
|
xmlns:EgtBEAMWALLCORE="clr-namespace:EgtBEAMWALL.Core;assembly=EgtBEAMWALL.Core">
|
||||||
|
<Grid>
|
||||||
|
<Grid.RowDefinitions>
|
||||||
|
<RowDefinition Height="Auto"/>
|
||||||
|
<RowDefinition Height="1*"/>
|
||||||
|
</Grid.RowDefinitions>
|
||||||
|
|
||||||
|
<Grid Visibility="Collapsed">
|
||||||
|
<Grid.ColumnDefinitions>
|
||||||
|
<ColumnDefinition Width="1*"/>
|
||||||
|
<ColumnDefinition Width="Auto"/>
|
||||||
|
</Grid.ColumnDefinitions>
|
||||||
|
<!--<ComboBox ItemsSource="MachLogTypeList"
|
||||||
|
SelectedItem="SelMachLogType"/>-->
|
||||||
|
<Button Grid.Column="1"
|
||||||
|
Command="{Binding Refresh_Command}"
|
||||||
|
Margin="2.5,0,5,0"
|
||||||
|
Style="{StaticResource ToolBar_Button}">
|
||||||
|
<Image Source="/Resources/MDIPage/Send.png" Stretch="Uniform"/>
|
||||||
|
</Button>
|
||||||
|
</Grid>
|
||||||
|
|
||||||
|
<EgtBEAMWALLCORE:EgtDataGrid ItemsSource="{Binding MachineLogList}"
|
||||||
|
Grid.Row="1"
|
||||||
|
AutoGenerateColumns="False"
|
||||||
|
CanUserDeleteRows="False"
|
||||||
|
CanUserResizeRows="False"
|
||||||
|
SelectionMode="Single"
|
||||||
|
ScrollViewer.CanContentScroll="True"
|
||||||
|
ScrollViewer.VerticalScrollBarVisibility="Auto"
|
||||||
|
ScrollViewer.HorizontalScrollBarVisibility="Auto"
|
||||||
|
Margin="0,0,0,5"
|
||||||
|
BindingColumns="{Binding MachineLogColumns}">
|
||||||
|
<DataGrid.Resources>
|
||||||
|
<!-- Data/ora -->
|
||||||
|
<DataGridTextColumn x:Key="colDATETIME" Binding="{Binding sEventDateTime}">
|
||||||
|
<DataGridTextColumn.HeaderTemplate>
|
||||||
|
<DataTemplate>
|
||||||
|
<TextBlock Text="{Binding Path=DataContext.EventDateTime_Msg,
|
||||||
|
RelativeSource={RelativeSource AncestorType={x:Type EgtBEAMWALL:MachineLogPageV}}}"/>
|
||||||
|
</DataTemplate>
|
||||||
|
</DataGridTextColumn.HeaderTemplate>
|
||||||
|
</DataGridTextColumn>
|
||||||
|
<!-- Type -->
|
||||||
|
<DataGridTextColumn x:Key="colTYPE" Binding="{Binding sEventType}">
|
||||||
|
<DataGridTextColumn.HeaderTemplate>
|
||||||
|
<DataTemplate>
|
||||||
|
<TextBlock Text="{Binding Path=DataContext.EventType_Msg,
|
||||||
|
RelativeSource={RelativeSource AncestorType={x:Type EgtBEAMWALL:MachineLogPageV}}}"/>
|
||||||
|
</DataTemplate>
|
||||||
|
</DataGridTextColumn.HeaderTemplate>
|
||||||
|
</DataGridTextColumn>
|
||||||
|
<!-- Descrizione -->
|
||||||
|
<DataGridTextColumn x:Key="colDESCRIPTION" Binding="{Binding sEventValue}">
|
||||||
|
<DataGridTextColumn.HeaderTemplate>
|
||||||
|
<DataTemplate>
|
||||||
|
<TextBlock Text="{Binding Path=DataContext.EventValue_Msg,
|
||||||
|
RelativeSource={RelativeSource AncestorType={x:Type EgtBEAMWALL:MachineLogPageV}}}"/>
|
||||||
|
</DataTemplate>
|
||||||
|
</DataGridTextColumn.HeaderTemplate>
|
||||||
|
</DataGridTextColumn>
|
||||||
|
<!-- SupervisorId -->
|
||||||
|
<DataGridTextColumn x:Key="colSUPERVISORID" Binding="{Binding SupervisorId}">
|
||||||
|
<DataGridTextColumn.HeaderTemplate>
|
||||||
|
<DataTemplate>
|
||||||
|
<TextBlock Text="{Binding Path=DataContext.SupervisorId_Msg,
|
||||||
|
RelativeSource={RelativeSource AncestorType={x:Type EgtBEAMWALL:MachineLogPageV}}}"/>
|
||||||
|
</DataTemplate>
|
||||||
|
</DataGridTextColumn.HeaderTemplate>
|
||||||
|
</DataGridTextColumn>
|
||||||
|
<DataGridTextColumn x:Key="colPROD" Binding="{Binding ProdId}">
|
||||||
|
<DataGridTextColumn.HeaderTemplate>
|
||||||
|
<DataTemplate>
|
||||||
|
<TextBlock Text="{Binding Path=DataContext.ProdId_Msg,
|
||||||
|
RelativeSource={RelativeSource AncestorType={x:Type EgtBEAMWALL:MachineLogPageV}}}"/>
|
||||||
|
</DataTemplate>
|
||||||
|
</DataGridTextColumn.HeaderTemplate>
|
||||||
|
</DataGridTextColumn>
|
||||||
|
<DataGridTextColumn x:Key="colMACHGROUP" Binding="{Binding MachGroupId}">
|
||||||
|
<DataGridTextColumn.HeaderTemplate>
|
||||||
|
<DataTemplate>
|
||||||
|
<TextBlock Text="{Binding Path=DataContext.MachGroupId_Msg,
|
||||||
|
RelativeSource={RelativeSource AncestorType={x:Type EgtBEAMWALL:MachineLogPageV}}}"/>
|
||||||
|
</DataTemplate>
|
||||||
|
</DataGridTextColumn.HeaderTemplate>
|
||||||
|
</DataGridTextColumn>
|
||||||
|
<DataGridTextColumn x:Key="colPART" Binding="{Binding PartId}">
|
||||||
|
<DataGridTextColumn.HeaderTemplate>
|
||||||
|
<DataTemplate>
|
||||||
|
<TextBlock Text="{Binding Path=DataContext.PartId_Msg,
|
||||||
|
RelativeSource={RelativeSource AncestorType={x:Type EgtBEAMWALL:MachineLogPageV}}}"/>
|
||||||
|
</DataTemplate>
|
||||||
|
</DataGridTextColumn.HeaderTemplate>
|
||||||
|
</DataGridTextColumn>
|
||||||
|
<DataGridTextColumn x:Key="colSTATUS" Binding="{Binding Status}">
|
||||||
|
<DataGridTextColumn.HeaderTemplate>
|
||||||
|
<DataTemplate>
|
||||||
|
<TextBlock Text="{Binding Path=DataContext.Status_Msg,
|
||||||
|
RelativeSource={RelativeSource AncestorType={x:Type EgtBEAMWALL:MachineLogPageV}}}"/>
|
||||||
|
</DataTemplate>
|
||||||
|
</DataGridTextColumn.HeaderTemplate>
|
||||||
|
</DataGridTextColumn>
|
||||||
|
</DataGrid.Resources>
|
||||||
|
|
||||||
|
</EgtBEAMWALLCORE:EgtDataGrid>
|
||||||
|
|
||||||
|
</Grid>
|
||||||
|
|
||||||
|
</UserControl>
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
Public Class MachineLogPageV
|
||||||
|
|
||||||
|
End Class
|
||||||
@@ -0,0 +1,229 @@
|
|||||||
|
Imports System.Collections.ObjectModel
|
||||||
|
Imports EgtWPFLib5
|
||||||
|
Imports EgtUILib
|
||||||
|
Imports EgtBEAMWALL.Core
|
||||||
|
Imports System.Windows.Threading
|
||||||
|
Imports EgtBEAMWALL.DataLayer.DatabaseModels
|
||||||
|
Imports EgtBEAMWALL.Core.MachLog
|
||||||
|
|
||||||
|
Public Class MachineLogPageVM
|
||||||
|
Inherits VMBase
|
||||||
|
|
||||||
|
Private m_colMachineLog_Type As EgtDataGridColumn
|
||||||
|
Public ReadOnly Property colMachineLog_Type As EgtDataGridColumn
|
||||||
|
Get
|
||||||
|
Return m_colMachineLog_Type
|
||||||
|
End Get
|
||||||
|
End Property
|
||||||
|
Private m_colMachineLog_Description As EgtDataGridColumn
|
||||||
|
Public ReadOnly Property colMachineLog_Description As EgtDataGridColumn
|
||||||
|
Get
|
||||||
|
Return m_colMachineLog_Description
|
||||||
|
End Get
|
||||||
|
End Property
|
||||||
|
Private m_colMachineLog_SupervisorId As EgtDataGridColumn
|
||||||
|
Public ReadOnly Property colMachineLog_SupervisorId As EgtDataGridColumn
|
||||||
|
Get
|
||||||
|
Return m_colMachineLog_SupervisorId
|
||||||
|
End Get
|
||||||
|
End Property
|
||||||
|
|
||||||
|
Private m_MachineLogColumns As New ObservableCollection(Of EgtDataGridColumn)
|
||||||
|
Public Property MachineLogColumns As ObservableCollection(Of EgtDataGridColumn)
|
||||||
|
Get
|
||||||
|
Return m_MachineLogColumns
|
||||||
|
End Get
|
||||||
|
Set(value As ObservableCollection(Of EgtDataGridColumn))
|
||||||
|
m_MachineLogColumns = value
|
||||||
|
End Set
|
||||||
|
End Property
|
||||||
|
|
||||||
|
Private m_MachineLogList_View As CollectionView = Nothing
|
||||||
|
Private m_MachineLogList As New ObservableCollection(Of LogEvent)
|
||||||
|
Public Property MachineLogList As ObservableCollection(Of LogEvent)
|
||||||
|
Get
|
||||||
|
Return m_MachineLogList
|
||||||
|
End Get
|
||||||
|
Set(value As ObservableCollection(Of LogEvent))
|
||||||
|
m_MachineLogList = value
|
||||||
|
End Set
|
||||||
|
End Property
|
||||||
|
|
||||||
|
Private m_MachLogTypeList As New List(Of MachLogType)({New MachLogType(MachLogTypes.PART_STATUS, "PartStatus", True),
|
||||||
|
New MachLogType(MachLogTypes.MACHGROUP_STATUS, "MachGroupStatus", True),
|
||||||
|
New MachLogType(MachLogTypes.MACHINE_MODE, "MachineMode", True),
|
||||||
|
New MachLogType(MachLogTypes.ALARM, "Alarm", True)})
|
||||||
|
Public Property MachLogTypeList As List(Of MachLogType)
|
||||||
|
Get
|
||||||
|
Return m_MachLogTypeList
|
||||||
|
End Get
|
||||||
|
Set(value As List(Of MachLogType))
|
||||||
|
m_MachLogTypeList = value
|
||||||
|
End Set
|
||||||
|
End Property
|
||||||
|
|
||||||
|
' Definizione comandi
|
||||||
|
Private m_cmdRefresh As ICommand
|
||||||
|
|
||||||
|
#Region "Messages"
|
||||||
|
|
||||||
|
Public ReadOnly Property EventDateTime_Msg As String
|
||||||
|
Get
|
||||||
|
Return EgtMsg(62512)
|
||||||
|
End Get
|
||||||
|
End Property
|
||||||
|
|
||||||
|
Public ReadOnly Property EventType_Msg As String
|
||||||
|
Get
|
||||||
|
Return EgtMsg(62513)
|
||||||
|
End Get
|
||||||
|
End Property
|
||||||
|
|
||||||
|
Public ReadOnly Property EventValue_Msg As String
|
||||||
|
Get
|
||||||
|
Return EgtMsg(62514)
|
||||||
|
End Get
|
||||||
|
End Property
|
||||||
|
|
||||||
|
Public ReadOnly Property SupervisorId_Msg As String
|
||||||
|
Get
|
||||||
|
Return EgtMsg(62515)
|
||||||
|
End Get
|
||||||
|
End Property
|
||||||
|
|
||||||
|
Public ReadOnly Property ProdId_Msg As String
|
||||||
|
Get
|
||||||
|
Return EgtMsg(62516)
|
||||||
|
End Get
|
||||||
|
End Property
|
||||||
|
|
||||||
|
Public ReadOnly Property MachGroupId_Msg As String
|
||||||
|
Get
|
||||||
|
Return EgtMsg(62517)
|
||||||
|
End Get
|
||||||
|
End Property
|
||||||
|
|
||||||
|
Public ReadOnly Property PartId_Msg As String
|
||||||
|
Get
|
||||||
|
Return EgtMsg(62518)
|
||||||
|
End Get
|
||||||
|
End Property
|
||||||
|
|
||||||
|
Public ReadOnly Property Status_Msg As String
|
||||||
|
Get
|
||||||
|
Return EgtMsg(62519)
|
||||||
|
End Get
|
||||||
|
End Property
|
||||||
|
|
||||||
|
|
||||||
|
#End Region ' Messages
|
||||||
|
|
||||||
|
#Region "CONSTRUCTORS"
|
||||||
|
|
||||||
|
Sub New()
|
||||||
|
' imposto riferimento in Map
|
||||||
|
Map.SetRefMachineLogPageVM(Me)
|
||||||
|
' carico le colonne della datagrid
|
||||||
|
GetPrivateProfileColumns(S_MACHINELOG, MachineLogColumns)
|
||||||
|
m_MachineLogList_View = CollectionViewSource.GetDefaultView(m_MachineLogList)
|
||||||
|
m_MachineLogList_View.Filter = AddressOf MachineLogFilter
|
||||||
|
' recupero riferimento a colonna StartCut
|
||||||
|
m_colMachineLog_Type = m_MachineLogColumns.FirstOrDefault(Function(x) x.Name = COL_TYPE)
|
||||||
|
m_colMachineLog_Description = m_MachineLogColumns.FirstOrDefault(Function(x) x.Name = COL_DESCRIPTION)
|
||||||
|
m_colMachineLog_SupervisorId = m_MachineLogColumns.FirstOrDefault(Function(x) x.Name = COL_SUPERVISORID)
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
#End Region ' CONSTRUCTORS
|
||||||
|
|
||||||
|
#Region "METHODS"
|
||||||
|
|
||||||
|
Private Function MachineLogFilter(LogEvent As Object) As Boolean
|
||||||
|
Dim CurrLogEvent As LogEvent = DirectCast(LogEvent, LogEvent)
|
||||||
|
' se livello utente inferiore a 5, mostro solo eventi pezzo e machgroup
|
||||||
|
If Map.refMainWindowVM.MainWindowM.nUserLevel < 5 Then
|
||||||
|
If CurrLogEvent.EventType = MachLogTypes.PART_STATUS Then
|
||||||
|
Return True
|
||||||
|
Else
|
||||||
|
Return False
|
||||||
|
End If
|
||||||
|
Else
|
||||||
|
Return True
|
||||||
|
End If
|
||||||
|
End Function
|
||||||
|
|
||||||
|
Friend Sub LoadMachineLogList()
|
||||||
|
If Map.refMainWindowVM.MainWindowM.nUserLevel < 5 Then
|
||||||
|
m_colMachineLog_Type.ColumnVisibility = Visibility.Collapsed
|
||||||
|
m_colMachineLog_Description.ColumnVisibility = Visibility.Collapsed
|
||||||
|
m_colMachineLog_SupervisorId.ColumnVisibility = Visibility.Collapsed
|
||||||
|
End If
|
||||||
|
m_MachineLogList = New ObservableCollection(Of LogEvent)(DbControllers.m_LogMachineController.GetCoreDesc(DateTime.Now - TimeSpan.FromDays(300), DateTime.Now).Select(Of LogEvent)(Function(x) New LogEvent(x)).ToList())
|
||||||
|
NotifyPropertyChanged(NameOf(MachineLogList))
|
||||||
|
m_MachineLogList_View = CollectionViewSource.GetDefaultView(m_MachineLogList)
|
||||||
|
m_MachineLogList_View.Filter = AddressOf MachineLogFilter
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
#End Region ' METHODS
|
||||||
|
|
||||||
|
#Region "COMMANDS"
|
||||||
|
|
||||||
|
#Region "Refresh"
|
||||||
|
|
||||||
|
''' <summary>
|
||||||
|
''' Returns a command that do Open.
|
||||||
|
''' </summary>
|
||||||
|
Public ReadOnly Property Refresh_Command As ICommand
|
||||||
|
Get
|
||||||
|
If m_cmdRefresh Is Nothing Then
|
||||||
|
m_cmdRefresh = New Command(AddressOf Refresh)
|
||||||
|
End If
|
||||||
|
Return m_cmdRefresh
|
||||||
|
End Get
|
||||||
|
End Property
|
||||||
|
|
||||||
|
''' <summary>
|
||||||
|
''' Execute the Open. This method is invoked by the OpenCommand.
|
||||||
|
''' </summary>
|
||||||
|
Friend Sub Refresh()
|
||||||
|
m_MachineLogList_View.Refresh()
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
#End Region ' Refresh
|
||||||
|
|
||||||
|
#End Region ' COMMANDS
|
||||||
|
|
||||||
|
End Class
|
||||||
|
|
||||||
|
Public Class MachLogType
|
||||||
|
|
||||||
|
Private m_nId As Integer
|
||||||
|
Public ReadOnly Property nId As Integer
|
||||||
|
Get
|
||||||
|
Return m_nId
|
||||||
|
End Get
|
||||||
|
End Property
|
||||||
|
|
||||||
|
Private m_sName As String
|
||||||
|
Public ReadOnly Property sName As String
|
||||||
|
Get
|
||||||
|
Return m_sName
|
||||||
|
End Get
|
||||||
|
End Property
|
||||||
|
|
||||||
|
Private m_bOn As Boolean = False
|
||||||
|
Public Property bOn As Boolean
|
||||||
|
Get
|
||||||
|
Return m_bOn
|
||||||
|
End Get
|
||||||
|
Set(value As Boolean)
|
||||||
|
m_bOn = value
|
||||||
|
End Set
|
||||||
|
End Property
|
||||||
|
|
||||||
|
Sub New(nId As Integer, sName As String, bOn As Boolean)
|
||||||
|
m_nId = nId
|
||||||
|
m_sName = sName
|
||||||
|
m_bOn = bOn
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
End Class
|
||||||
@@ -247,12 +247,12 @@ Public Class MainMenuVM
|
|||||||
End Function
|
End Function
|
||||||
|
|
||||||
Private Function ExitSUPERVISOR(bVerifyModification As Boolean) As Boolean
|
Private Function ExitSUPERVISOR(bVerifyModification As Boolean) As Boolean
|
||||||
''' verifico se progetto modificato, e chiedo se salvare
|
' verifico se progetto modificato, e chiedo se salvare
|
||||||
''If bVerifyModification Then
|
'If bVerifyModification Then
|
||||||
'' If Not ProjFileVM.VerifyProjectModification(Map.refProjManagerVM.CurrProj, ProjectType.PROJ) Then
|
' If Not ProjFileVM.VerifyProjectModification(Map.refProjManagerVM.CurrProj, ProjectType.PROJ) Then
|
||||||
'' Return False
|
' Return False
|
||||||
'' End If
|
' End If
|
||||||
''End If
|
'End If
|
||||||
Map.refProjectVM.SetBottomPanel_Visibility(False)
|
Map.refProjectVM.SetBottomPanel_Visibility(False)
|
||||||
Map.refProjectVM.SetLeftPanel_Visibility(True)
|
Map.refProjectVM.SetLeftPanel_Visibility(True)
|
||||||
Map.refProjectVM.SetPartManager_Visibility(False)
|
Map.refProjectVM.SetPartManager_Visibility(False)
|
||||||
|
|||||||
@@ -134,17 +134,19 @@ Public Class MainWindowM
|
|||||||
End Get
|
End Get
|
||||||
End Property
|
End Property
|
||||||
|
|
||||||
|
Private m_sProjsDir As String
|
||||||
Friend ReadOnly Property sProjsDir As String
|
Friend ReadOnly Property sProjsDir As String
|
||||||
Get
|
Get
|
||||||
Return m_sDataRoot & "\" & PROJS_DIR
|
Return m_sProjsDir
|
||||||
|
End Get
|
||||||
|
End Property
|
||||||
|
Private m_sProdsDir As String
|
||||||
|
Friend ReadOnly Property sProdsDir As String
|
||||||
|
Get
|
||||||
|
Return m_sProdsDir
|
||||||
End Get
|
End Get
|
||||||
End Property
|
End Property
|
||||||
|
|
||||||
Friend ReadOnly Property sProdsDir As String
|
|
||||||
Get
|
|
||||||
Return m_sDataRoot & "\" & PRODS_DIR
|
|
||||||
End Get
|
|
||||||
End Property
|
|
||||||
Friend ReadOnly Property sZebraPrinterExe As String
|
Friend ReadOnly Property sZebraPrinterExe As String
|
||||||
Get
|
Get
|
||||||
Dim sPrinterExe As String = ""
|
Dim sPrinterExe As String = ""
|
||||||
@@ -207,6 +209,8 @@ Public Class MainWindowM
|
|||||||
If GetMainPrivateProfileString(S_WALL, K_WALLBASEDIR, "", m_sWallRoot) = 0 Then
|
If GetMainPrivateProfileString(S_WALL, K_WALLBASEDIR, "", m_sWallRoot) = 0 Then
|
||||||
m_sWallRoot = m_sDataRoot & "\" & WALL_DIR
|
m_sWallRoot = m_sDataRoot & "\" & WALL_DIR
|
||||||
End If
|
End If
|
||||||
|
m_sProjsDir = m_sDataRoot & "\" & PROJS_DIR
|
||||||
|
m_sProdsDir = m_sDataRoot & "\" & PRODS_DIR
|
||||||
m_sWarehouseRoot = m_sDataRoot & "\" & WAREHOUSE_DIR
|
m_sWarehouseRoot = m_sDataRoot & "\" & WAREHOUSE_DIR
|
||||||
' imposto cartelle dei progetti
|
' imposto cartelle dei progetti
|
||||||
ProjectFileVM.Init(sProjsDir, sProdsDir)
|
ProjectFileVM.Init(sProjsDir, sProdsDir)
|
||||||
@@ -229,8 +233,8 @@ Public Class MainWindowM
|
|||||||
' Verifico abilitazione nesting automatico
|
' Verifico abilitazione nesting automatico
|
||||||
m_bAutoNestOption = Not String.IsNullOrWhiteSpace(sNestKey)
|
m_bAutoNestOption = Not String.IsNullOrWhiteSpace(sNestKey)
|
||||||
' Recupero livello e opzioni della chiave
|
' Recupero livello e opzioni della chiave
|
||||||
Dim bKey As Boolean = EgtGetKeyLevel(5327, 2403, 1, m_nKeyLevel) And
|
Dim bKey As Boolean = EgtGetKeyLevel(5327, 2407, 1, m_nKeyLevel) And
|
||||||
EgtGetKeyOptions(5327, 2403, 1, m_nKeyOptions)
|
EgtGetKeyOptions(5327, 2407, 1, m_nKeyOptions)
|
||||||
' Inizializzazione generale di EgtInterface
|
' Inizializzazione generale di EgtInterface
|
||||||
m_nDebug = GetMainPrivateProfileInt(S_GENERAL, K_DEBUG, 0)
|
m_nDebug = GetMainPrivateProfileInt(S_GENERAL, K_DEBUG, 0)
|
||||||
m_sLogFile = m_sTempDir & "\" & SUPGENLOG_FILE_NAME.Replace("#", m_nInstance.ToString())
|
m_sLogFile = m_sTempDir & "\" & SUPGENLOG_FILE_NAME.Replace("#", m_nInstance.ToString())
|
||||||
@@ -376,6 +380,13 @@ Public Class MainWindowM
|
|||||||
Return 1 ' Max(1, Min(nMaxInst, MAX_INST))
|
Return 1 ' Max(1, Min(nMaxInst, MAX_INST))
|
||||||
End Function
|
End Function
|
||||||
|
|
||||||
|
Friend Sub UpdatePathForNetwork(sSharedFolder As String)
|
||||||
|
m_sProjsDir = sSharedFolder & "\" & PROJS_DIR
|
||||||
|
m_sProdsDir = sSharedFolder & "\" & PRODS_DIR
|
||||||
|
' imposto cartelle dei progetti
|
||||||
|
Core.ProjectFileVM.Init(sProjsDir, sProdsDir)
|
||||||
|
End Sub
|
||||||
|
|
||||||
Friend Sub Close()
|
Friend Sub Close()
|
||||||
' Terminazione generale di EgtInterface
|
' Terminazione generale di EgtInterface
|
||||||
EgtExit()
|
EgtExit()
|
||||||
|
|||||||
@@ -7,6 +7,7 @@
|
|||||||
Style="{DynamicResource {x:Type EgtWPFLib5:EgtCustomWindow}}"
|
Style="{DynamicResource {x:Type EgtWPFLib5:EgtCustomWindow}}"
|
||||||
Title="{Binding Title}" Icon="/Resources/EgtBEAMWALL.ico"
|
Title="{Binding Title}" Icon="/Resources/EgtBEAMWALL.ico"
|
||||||
MinHeight="600" MinWidth="800"
|
MinHeight="600" MinWidth="800"
|
||||||
|
ShowInTaskbar="True"
|
||||||
AboutBoxCommand="{Binding AboutBox_Command}"
|
AboutBoxCommand="{Binding AboutBox_Command}"
|
||||||
CloseCommand="{Binding CloseApplication_Command,Mode=OneWay,UpdateSourceTrigger=PropertyChanged}">
|
CloseCommand="{Binding CloseApplication_Command,Mode=OneWay,UpdateSourceTrigger=PropertyChanged}">
|
||||||
<EgtWPFLib5:EgtCustomWindow.TitlePanel>
|
<EgtWPFLib5:EgtCustomWindow.TitlePanel>
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
Imports EgtWPFLib5
|
Imports EgtWPFLib5
|
||||||
|
Imports EgtBEAMWALL.Core
|
||||||
|
|
||||||
Class MainWindowV
|
Class MainWindowV
|
||||||
|
|
||||||
@@ -11,9 +12,9 @@ Class MainWindowV
|
|||||||
InitializeComponent()
|
InitializeComponent()
|
||||||
' Assegno al riferimento locale al VM il VM preso dal DataContext
|
' Assegno al riferimento locale al VM il VM preso dal DataContext
|
||||||
m_MainWindowVM = DirectCast(Me.DataContext, MainWindowVM)
|
m_MainWindowVM = DirectCast(Me.DataContext, MainWindowVM)
|
||||||
'AddHandler Me.Loaded, AddressOf MainWindowV_Loaded
|
AddHandler Me.Loaded, AddressOf MainWindowV_Loaded
|
||||||
AddHandler Me.ContentRendered, AddressOf MainWindowV_ContentRendered
|
AddHandler Me.ContentRendered, AddressOf MainWindowV_ContentRendered
|
||||||
'AddHandler Me.Closing, AddressOf MainWindowV_Closing
|
AddHandler Me.Closing, AddressOf MainWindowV_Closing
|
||||||
AddHandler Me.KeyDown, AddressOf MainWindowV_KeyDown
|
AddHandler Me.KeyDown, AddressOf MainWindowV_KeyDown
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
@@ -21,21 +22,21 @@ Class MainWindowV
|
|||||||
|
|
||||||
#Region "EVENTS"
|
#Region "EVENTS"
|
||||||
|
|
||||||
'Private Sub MainWindowV_Loaded(sender As Object, e As RoutedEventArgs)
|
Private Sub MainWindowV_Loaded(sender As Object, e As RoutedEventArgs)
|
||||||
' ' Carico e imposto posizione finestra
|
' Carico e imposto posizione finestra
|
||||||
' WinPosFromIniToWindow(S_GENERAL, K_WINPLACE, Me)
|
WinPosFromIniToWindow(S_GENERAL, K_SUPERVISORWINPLACE, Me)
|
||||||
'End Sub
|
End Sub
|
||||||
|
|
||||||
Private Sub MainWindowV_ContentRendered(sender As Object, e As EventArgs)
|
Private Sub MainWindowV_ContentRendered(sender As Object, e As EventArgs)
|
||||||
m_MainWindowVM.ContentRendered()
|
m_MainWindowVM.ContentRendered()
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
'Private Sub MainWindowV_Closing(sender As Object, e As System.ComponentModel.CancelEventArgs)
|
Private Sub MainWindowV_Closing(sender As Object, e As System.ComponentModel.CancelEventArgs)
|
||||||
' ' Salvo posizione finestra (se non minimizzata)
|
' Salvo posizione finestra (se non minimizzata)
|
||||||
' If WindowState <> WindowState.Minimized Then
|
If WindowState <> WindowState.Minimized Then
|
||||||
' WinPosFromWindowToIni(Me, S_GENERAL, K_WINPLACE)
|
WinPosFromWindowToIni(Me, S_GENERAL, K_SUPERVISORWINPLACE)
|
||||||
' End If
|
End If
|
||||||
'End Sub
|
End Sub
|
||||||
|
|
||||||
Private Sub MainWindowV_KeyDown(sender As Object, e As KeyEventArgs)
|
Private Sub MainWindowV_KeyDown(sender As Object, e As KeyEventArgs)
|
||||||
m_MainWindowVM.KeyDown(e.Key)
|
m_MainWindowVM.KeyDown(e.Key)
|
||||||
|
|||||||
@@ -131,13 +131,24 @@ Public Class MainWindowVM
|
|||||||
Map.refLeftPanelVM.NotifyPropertyChanged(NameOf(Map.refLeftPanelVM.FeatureList_Visibility))
|
Map.refLeftPanelVM.NotifyPropertyChanged(NameOf(Map.refLeftPanelVM.FeatureList_Visibility))
|
||||||
|
|
||||||
' inizializzo thread di aggiornamento e comunicazione con DB
|
' inizializzo thread di aggiornamento e comunicazione con DB
|
||||||
' creo thread gestione macchina
|
' creo thread di comunicazione con ViewOptim
|
||||||
m_ViewerOptimizerCommThread = New Thread(Sub()
|
m_ViewerOptimizerCommThread = New Thread(Sub()
|
||||||
ViewerOptimizerCommThread.ViewerOptimizerCommThreadFunction()
|
ViewerOptimizerCommThread.ViewerOptimizerCommThreadFunction()
|
||||||
End Sub)
|
End Sub)
|
||||||
m_ViewerOptimizerCommThread.SetApartmentState(ApartmentState.STA)
|
m_ViewerOptimizerCommThread.SetApartmentState(ApartmentState.STA)
|
||||||
' avvio thread di gestione della macchina che avvia la connessione
|
' avvio thread di gestione comunicazione con ViewOptim
|
||||||
m_ViewerOptimizerCommThread.Start()
|
m_ViewerOptimizerCommThread.Start()
|
||||||
|
' se controllo axium, chiudo eventuale server di comunicazione rimasto aperto
|
||||||
|
If CurrentMachine.NCType = NCTypes.NUM_AXIUM_APSERVER Then
|
||||||
|
Dim ServerProcList As Process() = Process.GetProcessesByName("APServer")
|
||||||
|
Dim LogProcList As Process() = Process.GetProcessesByName("APLog")
|
||||||
|
For Each ServerProc In ServerProcList
|
||||||
|
ServerProc.Kill()
|
||||||
|
Next
|
||||||
|
For Each LogProc In LogProcList
|
||||||
|
LogProc.Kill()
|
||||||
|
Next
|
||||||
|
End If
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
Friend Function ProcessCommandLine(ByRef nCommandType As Integer, ByRef nProdId As Integer) As Boolean
|
Friend Function ProcessCommandLine(ByRef nCommandType As Integer, ByRef nProdId As Integer) As Boolean
|
||||||
@@ -153,6 +164,7 @@ Public Class MainWindowVM
|
|||||||
If Not Integer.TryParse(sProdId, nProdId) OrElse nProdId <= 0 Then Return False
|
If Not Integer.TryParse(sProdId, nProdId) OrElse nProdId <= 0 Then Return False
|
||||||
Return True
|
Return True
|
||||||
End Select
|
End Select
|
||||||
|
Return False
|
||||||
End Function
|
End Function
|
||||||
|
|
||||||
Friend Sub KeyDown(PressedKey As Key)
|
Friend Sub KeyDown(PressedKey As Key)
|
||||||
|
|||||||
@@ -55,5 +55,5 @@ Imports System.Windows
|
|||||||
' by using the '*' as shown below:
|
' by using the '*' as shown below:
|
||||||
' <Assembly: AssemblyVersion("1.0.*")>
|
' <Assembly: AssemblyVersion("1.0.*")>
|
||||||
|
|
||||||
<Assembly: AssemblyVersion("2.4.3.2")>
|
<Assembly: AssemblyVersion("2.4.7.1")>
|
||||||
<Assembly: AssemblyFileVersion("2.4.3.2")>
|
<Assembly: AssemblyFileVersion("2.4.7.1")>
|
||||||
|
|||||||
@@ -66,6 +66,11 @@
|
|||||||
<EgtBEAMWALL:MDIPageV DataContext="{StaticResource MDIPageVM}"/>
|
<EgtBEAMWALL:MDIPageV DataContext="{StaticResource MDIPageVM}"/>
|
||||||
</TabItem.Content>
|
</TabItem.Content>
|
||||||
</TabItem>
|
</TabItem>
|
||||||
|
<TabItem Header="MACHINELOG">
|
||||||
|
<TabItem.Content>
|
||||||
|
<EgtBEAMWALL:MachineLogPageV DataContext="{StaticResource MachineLogPageVM}"/>
|
||||||
|
</TabItem.Content>
|
||||||
|
</TabItem>
|
||||||
</TabControl>
|
</TabControl>
|
||||||
|
|
||||||
</Grid>
|
</Grid>
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ Public Class ProjectVM
|
|||||||
Public Enum TabPages As Integer
|
Public Enum TabPages As Integer
|
||||||
SCENE = 0
|
SCENE = 0
|
||||||
MDI = 1
|
MDI = 1
|
||||||
|
MACHINELOG = 2
|
||||||
End Enum
|
End Enum
|
||||||
|
|
||||||
Private m_SelTabPage As TabPages
|
Private m_SelTabPage As TabPages
|
||||||
@@ -23,8 +24,16 @@ Public Class ProjectVM
|
|||||||
End Set
|
End Set
|
||||||
End Property
|
End Property
|
||||||
Friend Sub SetSelTabPage(SelTabPage As TabPages)
|
Friend Sub SetSelTabPage(SelTabPage As TabPages)
|
||||||
m_SelTabPage = SelTabPage
|
If SelTabPage <> m_SelTabPage Then
|
||||||
NotifyPropertyChanged(NameOf(SelTabPage))
|
If m_SelTabPage = TabPages.MACHINELOG Then
|
||||||
|
Map.refCALCPanelVM.SetMachineLog(False)
|
||||||
|
End If
|
||||||
|
If SelTabPage Then
|
||||||
|
Map.refMachineLogPageVM.LoadMachineLogList()
|
||||||
|
End If
|
||||||
|
m_SelTabPage = SelTabPage
|
||||||
|
NotifyPropertyChanged(NameOf(SelTabPage))
|
||||||
|
End If
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
Private Property m_GridDims As New ObservableCollection(Of GridDimension)
|
Private Property m_GridDims As New ObservableCollection(Of GridDimension)
|
||||||
|
|||||||
@@ -371,23 +371,23 @@ Public Class MySceneHostVM
|
|||||||
While nId <> GDB_ID.NULL
|
While nId <> GDB_ID.NULL
|
||||||
' Recupero l'identificativo del pezzo cui appartiene
|
' Recupero l'identificativo del pezzo cui appartiene
|
||||||
Dim nPartId As Integer = EgtGetParent(EgtGetParent(nId))
|
Dim nPartId As Integer = EgtGetParent(EgtGetParent(nId))
|
||||||
'''Dim WallMachGroup As WallMachGroup = DirectCast(Map.refMachGroupPanelVM.SelectedMachGroup, WallMachGroup)
|
'Dim WallMachGroup As WallMachGroup = DirectCast(Map.refMachGroupPanelVM.SelectedMachGroup, WallMachGroup)
|
||||||
'''Dim bPartInTable As Boolean = (EgtGetParent(nPartId) = WallMachGroup.nRawPartId)
|
'Dim bPartInTable As Boolean = (EgtGetParent(nPartId) = WallMachGroup.nRawPartId)
|
||||||
'''If EgtIsPart(nPartId) OrElse EgtIsDuplo(nPartId) OrElse bPartInTable Then
|
'If EgtIsPart(nPartId) OrElse EgtIsDuplo(nPartId) OrElse bPartInTable Then
|
||||||
''' Dim nStat As Integer = GDB_ST.ON_
|
' Dim nStat As Integer = GDB_ST.ON_
|
||||||
''' EgtGetStatus(nPartId, nStat)
|
' EgtGetStatus(nPartId, nStat)
|
||||||
''' ' Se già selezionato
|
' ' Se già selezionato
|
||||||
''' If nStat = GDB_ST.SEL Then
|
' If nStat = GDB_ST.SEL Then
|
||||||
''' ' Memorizzo Id da deselezionare
|
' ' Memorizzo Id da deselezionare
|
||||||
''' m_nIdToDesel = nPartId
|
' m_nIdToDesel = nPartId
|
||||||
''' Else
|
' Else
|
||||||
''' ' Memorizzo Id da selezionare
|
' ' Memorizzo Id da selezionare
|
||||||
''' m_nIdToSel = nPartId
|
' m_nIdToSel = nPartId
|
||||||
''' End If
|
' End If
|
||||||
''' ' Drag possibile
|
' ' Drag possibile
|
||||||
''' m_bDrag = True
|
' m_bDrag = True
|
||||||
''' Exit While
|
' Exit While
|
||||||
'''End If
|
'End If
|
||||||
nId = EgtGetNextObjInSelWin()
|
nId = EgtGetNextObjInSelWin()
|
||||||
End While
|
End While
|
||||||
' Dati per drag
|
' Dati per drag
|
||||||
|
|||||||
@@ -251,7 +251,7 @@ Public Class SupervisorManagerVM
|
|||||||
DbControllers.m_StatusMapController.StartProd(Map.refSupervisorManagerVM.CurrProd.nProdId, m_SupervisorId)
|
DbControllers.m_StatusMapController.StartProd(Map.refSupervisorManagerVM.CurrProd.nProdId, m_SupervisorId)
|
||||||
Map.refSupervisorManagerVM.CurrProd.SetModificationIndex(0)
|
Map.refSupervisorManagerVM.CurrProd.SetModificationIndex(0)
|
||||||
' recupero elementi modificati
|
' recupero elementi modificati
|
||||||
Dim MachGroupList As List(Of StatusMapModel) = DbControllers.m_StatusMapController.GetFrom(0)
|
Dim MachGroupList As List(Of StatusMapModel) = DbControllers.m_StatusMapController.GetFrom(m_SupervisorId, 0)
|
||||||
' carico dictionary di tutti i Machgroup
|
' carico dictionary di tutti i Machgroup
|
||||||
For Each MachGroup In MachGroupList
|
For Each MachGroup In MachGroupList
|
||||||
If Not Map.refProjectVM.SupervisorMachGroupPanelVM.MachGroupFullList.ContainsKey(MachGroup.ItemId) Then
|
If Not Map.refProjectVM.SupervisorMachGroupPanelVM.MachGroupFullList.ContainsKey(MachGroup.ItemId) Then
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ Imports EgtUILib
|
|||||||
Imports EgtWPFLib5
|
Imports EgtWPFLib5
|
||||||
Imports EgtBEAMWALL.Core
|
Imports EgtBEAMWALL.Core
|
||||||
Imports System.IO
|
Imports System.IO
|
||||||
|
Imports System.Text.RegularExpressions
|
||||||
|
|
||||||
Public Module CurrentMachine
|
Public Module CurrentMachine
|
||||||
|
|
||||||
@@ -163,9 +164,51 @@ Public Module CurrentMachine
|
|||||||
' imposto visibilita' input output
|
' imposto visibilita' input output
|
||||||
Map.refMainMenuVM.SetInputOutputVisibility()
|
Map.refMainMenuVM.SetInputOutputVisibility()
|
||||||
' leggo parametri macchina da WallData
|
' leggo parametri macchina da WallData
|
||||||
|
If nType = MachineType.BEAM Then
|
||||||
|
' Assegno i dati
|
||||||
|
EgtLuaCreateGlobTable("GWD")
|
||||||
|
EgtLuaSetGlobStringVar("GWD.BASEDIR", Map.refMainWindowVM.MainWindowM.sBeamRoot)
|
||||||
|
EgtLuaSetGlobStringVar("GWD.MACHINE", m_sMachineName)
|
||||||
|
' Eseguo lo script
|
||||||
|
Dim sExecPath As String = Map.refMainWindowVM.MainWindowM.sBeamRoot & "\" & GETBEAMDATA_FILE_NAME
|
||||||
|
Dim bOk As Boolean = False
|
||||||
|
If EgtLuaExecFile(sExecPath) Then
|
||||||
|
' Recupero i risultati
|
||||||
|
Dim nErr As Integer = 999
|
||||||
|
EgtLuaGetGlobIntVar("GWD.ERR", nErr)
|
||||||
|
bOk = (nErr = 0)
|
||||||
|
If Not bOk Then EgtOutLog("GetBeamData Err=" & nErr.ToString())
|
||||||
|
Else
|
||||||
|
bOk = False
|
||||||
|
EgtOutLog("Error executing GetBeamData script " & sExecPath)
|
||||||
|
End If
|
||||||
|
If bOk Then
|
||||||
|
Dim nTemp As Integer
|
||||||
|
EgtLuaGetGlobIntVar("GWD.SIMUL_VIEW_DIR", nTemp)
|
||||||
|
Select Case nTemp
|
||||||
|
Case 0
|
||||||
|
m_nViewDir = VT.ISO_SW
|
||||||
|
Case 1
|
||||||
|
m_nViewDir = VT.ISO_NW
|
||||||
|
Case 2
|
||||||
|
m_nViewDir = VT.ISO_SW
|
||||||
|
Case 3
|
||||||
|
m_nViewDir = VT.ISO_NE
|
||||||
|
Case 4
|
||||||
|
m_nViewDir = VT.ISO_SE
|
||||||
|
End Select
|
||||||
|
Else
|
||||||
|
m_nViewDir = VT.ISO_SW
|
||||||
|
End If
|
||||||
|
' Cancello tavola globale
|
||||||
|
EgtLuaResetGlobVar("GWD")
|
||||||
|
' aggiorno parametro in gestore viste
|
||||||
|
Core.ViewPanelVM.UpdateMachParam(m_nViewDir)
|
||||||
|
End If
|
||||||
If nType = MachineType.WALL Then
|
If nType = MachineType.WALL Then
|
||||||
' Assegno i dati
|
' Assegno i dati
|
||||||
EgtLuaCreateGlobTable("GWD")
|
EgtLuaCreateGlobTable("GWD")
|
||||||
|
EgtLuaSetGlobStringVar("GWD.BASEDIR", Map.refMainWindowVM.MainWindowM.sWallRoot)
|
||||||
EgtLuaSetGlobStringVar("GWD.MACHINE", m_sMachineName)
|
EgtLuaSetGlobStringVar("GWD.MACHINE", m_sMachineName)
|
||||||
' Eseguo lo script
|
' Eseguo lo script
|
||||||
Dim sExecPath As String = Map.refMainWindowVM.MainWindowM.sWallRoot & "\" & GETWALLDATA_FILE_NAME
|
Dim sExecPath As String = Map.refMainWindowVM.MainWindowM.sWallRoot & "\" & GETWALLDATA_FILE_NAME
|
||||||
@@ -199,10 +242,30 @@ Public Module CurrentMachine
|
|||||||
' aggiorno parametro in gestore viste
|
' aggiorno parametro in gestore viste
|
||||||
Core.ViewPanelVM.UpdateMachParam(m_nViewDir)
|
Core.ViewPanelVM.UpdateMachParam(m_nViewDir)
|
||||||
End If
|
End If
|
||||||
|
' se axium
|
||||||
|
If NCType = NCTypes.NUM_AXIUM_APSERVER OrElse NCType = NCTypes.NUM_AXIUM_PCTOOLKIT Then
|
||||||
|
' verifico se il file messaggi macchina è da aggiornare
|
||||||
|
Dim sFromMachine As String = sMachinesRootDir & "\" & sMachineName & "\Messages\" & "FromMachine_" & sMsgName
|
||||||
|
If File.Exists(sFromMachine) Then
|
||||||
|
' se file messaggi macchina piu' nuovo
|
||||||
|
If File.GetLastWriteTime(sFromMachine) > File.GetLastWriteTime(m_sMachMessagesFile) Then
|
||||||
|
' aggiorno il file
|
||||||
|
Dim FromMachineLines() As String = File.ReadAllLines(sFromMachine)
|
||||||
|
For Each sLine In FromMachineLines
|
||||||
|
Dim Value As Match = Regex.Match(sLine, "N(\d*)\s*\$\d*:(.*)$")
|
||||||
|
If Not IsNothing(Value) AndAlso Value.Groups.Count >= 2 AndAlso Not IsNothing(Value.Groups(0)) AndAlso Not IsNothing(Value.Groups(1)) Then
|
||||||
|
WritePrivateProfileString("PLC", Value.Groups(1).Value, Value.Groups(2).Value, m_sMachMessagesFile)
|
||||||
|
End If
|
||||||
|
Next
|
||||||
|
End If
|
||||||
|
End If
|
||||||
|
End If
|
||||||
' inizializzo stati e modi
|
' inizializzo stati e modi
|
||||||
Map.refLeftPanelVM.LoadChannels()
|
Map.refLeftPanelVM.LoadChannels()
|
||||||
Map.refLeftPanelVM.LoadOPStates()
|
Map.refLeftPanelVM.LoadOPStates()
|
||||||
Map.refLeftPanelVM.LoadOPModes()
|
Map.refLeftPanelVM.LoadOPModes()
|
||||||
|
' Imposto visibilità variabili E80000
|
||||||
|
Map.refLeftPanelVM.SetE80000Visibility()
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
#End Region 'Init
|
#End Region 'Init
|
||||||
|
|||||||
@@ -4,62 +4,81 @@ Imports EgtBEAMWALL.Core
|
|||||||
|
|
||||||
Module DbControllers
|
Module DbControllers
|
||||||
|
|
||||||
Friend m_SupervisorId As String = "1"
|
Friend m_SupervisorId As String = "1"
|
||||||
|
Public ReadOnly Property SupervisorId As String
|
||||||
|
Get
|
||||||
|
Return m_SupervisorId
|
||||||
|
End Get
|
||||||
|
End Property
|
||||||
|
|
||||||
Public m_ProjController As DataLayer.Controllers.ProjController
|
Public m_ProjController As DataLayer.Controllers.ProjController
|
||||||
Public m_ProdController As DataLayer.Controllers.ProdController
|
Public m_ProdController As DataLayer.Controllers.ProdController
|
||||||
Public m_MachGroupController As DataLayer.Controllers.MachGroupController
|
Public m_MachGroupController As DataLayer.Controllers.MachGroupController
|
||||||
Public m_PartController As DataLayer.Controllers.PartController
|
Public m_PartController As DataLayer.Controllers.PartController
|
||||||
Public m_LogMachineController As DataLayer.Controllers.LogMachineController
|
Public m_LogMachineController As DataLayer.Controllers.LogMachineController
|
||||||
Public m_StatusMapController As DataLayer.Controllers.StatusMapController
|
Public m_StatusMapController As DataLayer.Controllers.StatusMapController
|
||||||
|
|
||||||
Sub New()
|
Sub New()
|
||||||
|
|
||||||
' se demo--> server = db.steamware.net, nKey e sKey come le hai...
|
' se demo--> server = db.steamware.net, nKey e sKey come le hai...
|
||||||
|
|
||||||
Dim sKey = "", sUser = "", sPwd = ""
|
Dim sKey = "", sUser = "", sPwd = ""
|
||||||
|
|
||||||
EgtGetKeyInfo(sKey)
|
EgtGetKeyInfo(sKey)
|
||||||
sKey = sKey.Replace(" ", "")
|
sKey = sKey.Replace(" ", "")
|
||||||
If Not IsNothing(sKey) AndAlso sKey.Length > 11 Then
|
If Not IsNothing(sKey) AndAlso sKey.Length > 11 Then
|
||||||
sUser = sKey.Substring(3, 6)
|
sUser = sKey.Substring(3, 6)
|
||||||
sPwd = sKey.Substring(10, sKey.Length - 10).Replace("(", "").Replace(")", "")
|
sPwd = sKey.Substring(10, sKey.Length - 10).Replace("(", "").Replace(")", "")
|
||||||
End If
|
End If
|
||||||
Try
|
Try
|
||||||
Dim DbAddress As String = "127.0.0.1"
|
Dim DbAddress As String = "127.0.0.1"
|
||||||
Dim DbMasterKey As Integer = 0
|
Dim DbMasterKey As Integer = 0
|
||||||
Dim sDbMasterKey As String = ""
|
Dim sDbMasterKey As String = ""
|
||||||
If Map.refMainWindowVM.MainWindowM.GetKeyOption(KEY_OPT.NETWORK) Then
|
Dim sSharedFolder As String = ""
|
||||||
GetMainPrivateProfileString(S_GENERAL, K_DBADDRESS, "127.0.0.1", DbAddress)
|
Dim bNetwork As Boolean = False
|
||||||
DbMasterKey = GetMainPrivateProfileInt(S_GENERAL, K_DBMASTERKEY, 0)
|
If Map.refMainWindowVM.MainWindowM.GetKeyOption(KEY_OPT.NETWORK) Then
|
||||||
If DbMasterKey > 0 Then
|
GetMainPrivateProfileString(S_GENERAL, K_DBADDRESS, "", DbAddress)
|
||||||
sDbMasterKey = DbMasterKey.ToString("000000")
|
DbMasterKey = GetMainPrivateProfileInt(S_GENERAL, K_DBMASTERKEY, 0)
|
||||||
|
If DbMasterKey > 0 Then
|
||||||
|
sDbMasterKey = DbMasterKey.ToString("000000")
|
||||||
|
End If
|
||||||
|
If String.IsNullOrWhiteSpace(DbAddress) OrElse DbMasterKey <= 0 Then
|
||||||
|
DbAddress = "127.0.0.1"
|
||||||
|
DbMasterKey = 0
|
||||||
|
Else
|
||||||
|
bNetwork = True
|
||||||
|
End If
|
||||||
End If
|
End If
|
||||||
If String.IsNullOrWhiteSpace(DbAddress) OrElse DbMasterKey <= 0 Then
|
DataLayer.DbConfig.InitDb(DbAddress, sUser, sPwd, sDbMasterKey)
|
||||||
DbAddress = "127.0.0.1"
|
DataLayer.DbConfig.SetupLogDir(Map.refMainWindowVM.MainWindowM.sTempDir)
|
||||||
DbMasterKey = 0
|
DataLayer.DbConfig.CheckMigrateDb()
|
||||||
|
DataLayer.DbConfig.CheckUser(sUser, sPwd, Map.refMainWindowVM.MainWindowM.GetKeyOption(KEY_OPT.NETWORK))
|
||||||
|
If Map.refMainWindowVM.MainWindowM.GetKeyOption(KEY_OPT.NETWORK) And bNetwork Then
|
||||||
|
' imposto cartella condivisa
|
||||||
|
GetMainPrivateProfileString(S_GENERAL, K_SHAREDFOLDER, Map.refMainWindowVM.MainWindowM.sDataRoot, sSharedFolder)
|
||||||
|
Map.refMainWindowVM.MainWindowM.UpdatePathForNetwork(sSharedFolder)
|
||||||
|
Dim sSupervisorMachName As String = ""
|
||||||
|
GetMainPrivateProfileString(S_MACH, K_SUPERVISORMACH, "", sSupervisorMachName)
|
||||||
|
If Not String.IsNullOrWhiteSpace(sSupervisorMachName) Then m_SupervisorId = sSupervisorMachName
|
||||||
End If
|
End If
|
||||||
End If
|
Catch ex As Exception
|
||||||
DataLayer.DbConfig.InitDb(DbAddress, sUser, sPwd, sDbMasterKey)
|
EgtOutLog("InitDb error: " & ex.ToString())
|
||||||
DataLayer.DbConfig.CheckUser(sUser, sPwd, Map.refMainWindowVM.MainWindowM.GetKeyOption(KEY_OPT.NETWORK))
|
MessageBox.Show(Application.Current.MainWindow, "Db connection error!!", "Error")
|
||||||
Catch ex As Exception
|
End
|
||||||
EgtOutLog("InitDb error: " & ex.ToString())
|
End Try
|
||||||
MessageBox.Show(Application.Current.MainWindow, "Db connection error!!", "Error")
|
|
||||||
End
|
|
||||||
End Try
|
|
||||||
|
|
||||||
If Map.refMainWindowVM.MainWindowM.GetKeyOption(KEY_OPT.NETWORK) Then
|
If Map.refMainWindowVM.MainWindowM.GetKeyOption(KEY_OPT.NETWORK) Then
|
||||||
Dim sSupervisorMachName As String = ""
|
Dim sSupervisorMachName As String = ""
|
||||||
GetMainPrivateProfileString(S_MACH, K_SUPERVISORMACH, "", sSupervisorMachName)
|
GetMainPrivateProfileString(S_MACH, K_SUPERVISORMACH, "", sSupervisorMachName)
|
||||||
If Not String.IsNullOrWhiteSpace(sSupervisorMachName) Then m_SupervisorId = sSupervisorMachName
|
If Not String.IsNullOrWhiteSpace(sSupervisorMachName) Then m_SupervisorId = sSupervisorMachName
|
||||||
End If
|
End If
|
||||||
|
|
||||||
m_ProjController = New DataLayer.Controllers.ProjController
|
m_ProjController = New DataLayer.Controllers.ProjController
|
||||||
m_ProdController = New DataLayer.Controllers.ProdController
|
m_ProdController = New DataLayer.Controllers.ProdController
|
||||||
m_MachGroupController = New DataLayer.Controllers.MachGroupController
|
m_MachGroupController = New DataLayer.Controllers.MachGroupController
|
||||||
m_PartController = New DataLayer.Controllers.PartController
|
m_PartController = New DataLayer.Controllers.PartController
|
||||||
m_LogMachineController = New DataLayer.Controllers.LogMachineController
|
m_LogMachineController = New DataLayer.Controllers.LogMachineController
|
||||||
m_StatusMapController = New DataLayer.Controllers.StatusMapController
|
m_StatusMapController = New DataLayer.Controllers.StatusMapController
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
End Module
|
End Module
|
||||||
|
|||||||
@@ -10,6 +10,8 @@
|
|||||||
Assign a Key to every Panel ViewModel to use
|
Assign a Key to every Panel ViewModel to use
|
||||||
it in xaml file(ProjectView.xaml).
|
it in xaml file(ProjectView.xaml).
|
||||||
-->
|
-->
|
||||||
|
<EgtBEAMWALL:MDIPageVM x:Key="MDIPageVM"/>
|
||||||
|
<EgtBEAMWALL:MachineLogPageVM x:Key="MachineLogPageVM"/>
|
||||||
<EgtBEAMWALL:MainWindowVM x:Key="MainWindowVM"/>
|
<EgtBEAMWALL:MainWindowVM x:Key="MainWindowVM"/>
|
||||||
<EgtBEAMWALL:MySceneHostVM x:Key="MySceneHostVM"/>
|
<EgtBEAMWALL:MySceneHostVM x:Key="MySceneHostVM"/>
|
||||||
<!--<EgtBEAMWALL:ProjManagerVM x:Key="ProjManagerVM"/>-->
|
<!--<EgtBEAMWALL:ProjManagerVM x:Key="ProjManagerVM"/>-->
|
||||||
@@ -47,7 +49,6 @@
|
|||||||
<EgtBEAMWALL:RawPartListVM x:Key="RawPartListVM"/>
|
<EgtBEAMWALL:RawPartListVM x:Key="RawPartListVM"/>
|
||||||
<EgtBEAMWALL:PartInRawPartListVM x:Key="PartInRawPartListVM"/>
|
<EgtBEAMWALL:PartInRawPartListVM x:Key="PartInRawPartListVM"/>
|
||||||
<EgtBEAMWALL:FeatureInPartInRawPartListVM x:Key="FeatureInPartInRawPartListVM"/>
|
<EgtBEAMWALL:FeatureInPartInRawPartListVM x:Key="FeatureInPartInRawPartListVM"/>
|
||||||
<EgtBEAMWALL:MDIPageVM x:Key="MDIPageVM"/>
|
|
||||||
|
|
||||||
<!--Colori predefiniti-->
|
<!--Colori predefiniti-->
|
||||||
<SolidColorBrush x:Key="Omag_Blue" Color="#FF095CA8" />
|
<SolidColorBrush x:Key="Omag_Blue" Color="#FF095CA8" />
|
||||||
@@ -452,6 +453,7 @@
|
|||||||
<Setter Property="TitleBarBrush" Value="{StaticResource Omag_LightGray}"/>
|
<Setter Property="TitleBarBrush" Value="{StaticResource Omag_LightGray}"/>
|
||||||
<Setter Property="BorderBrush" Value="{StaticResource Omag_Gray}"/>
|
<Setter Property="BorderBrush" Value="{StaticResource Omag_Gray}"/>
|
||||||
<Setter Property="TitleBarForeground" Value="{StaticResource Omag_Black}"/>
|
<Setter Property="TitleBarForeground" Value="{StaticResource Omag_Black}"/>
|
||||||
|
<Setter Property="ShowInTaskbar" Value="False"/>
|
||||||
</Style>
|
</Style>
|
||||||
|
|
||||||
<!-- ______________________________________________________________________________________________________________________________________________ -->
|
<!-- ______________________________________________________________________________________________________________________________________________ -->
|
||||||
|
|||||||
@@ -0,0 +1,171 @@
|
|||||||
|
Imports EgtWPFLib5
|
||||||
|
Imports EgtBEAMWALL.Core
|
||||||
|
|
||||||
|
Public Class LogEvent
|
||||||
|
Inherits VMBase
|
||||||
|
|
||||||
|
Public ReadOnly Property MachGroupId_Msg As String
|
||||||
|
Get
|
||||||
|
Return "MachGroup"
|
||||||
|
End Get
|
||||||
|
End Property
|
||||||
|
|
||||||
|
Const cSeparator As Char = ";"c
|
||||||
|
|
||||||
|
Public Enum MachLogTypes
|
||||||
|
PART_STATUS = 1
|
||||||
|
MACHGROUP_STATUS = 2
|
||||||
|
MACHINE_MODE = 3
|
||||||
|
MACHINE_STATUS = 4
|
||||||
|
MACHINE_COMMAND = 5
|
||||||
|
READ_VAR = 6
|
||||||
|
WRITE_VAR = 7
|
||||||
|
ALARM = 8
|
||||||
|
OPERATOR_MSG = 9
|
||||||
|
PROGRAM_SEND = 10
|
||||||
|
End Enum
|
||||||
|
|
||||||
|
Private m_EventDateTime As DateTime
|
||||||
|
Public ReadOnly Property EventDateTime As DateTime
|
||||||
|
Get
|
||||||
|
Return m_EventDateTime
|
||||||
|
End Get
|
||||||
|
End Property
|
||||||
|
Private m_EventType As MachLogTypes
|
||||||
|
Public ReadOnly Property EventType As MachLogTypes
|
||||||
|
Get
|
||||||
|
Return m_EventType
|
||||||
|
End Get
|
||||||
|
End Property
|
||||||
|
Private m_SupervisorId As String
|
||||||
|
Public ReadOnly Property SupervisorId As String
|
||||||
|
Get
|
||||||
|
Return m_SupervisorId
|
||||||
|
End Get
|
||||||
|
End Property
|
||||||
|
Private m_Value As String
|
||||||
|
Public ReadOnly Property Value As String
|
||||||
|
Get
|
||||||
|
Return m_Value
|
||||||
|
End Get
|
||||||
|
End Property
|
||||||
|
Private m_ProdId As Integer
|
||||||
|
Public ReadOnly Property ProdId As Integer
|
||||||
|
Get
|
||||||
|
Return m_ProdId
|
||||||
|
End Get
|
||||||
|
End Property
|
||||||
|
Private m_MachGroupId As Integer
|
||||||
|
Public ReadOnly Property MachGroupId As Integer
|
||||||
|
Get
|
||||||
|
Return m_MachGroupId
|
||||||
|
End Get
|
||||||
|
End Property
|
||||||
|
Private m_PartId As Integer
|
||||||
|
Public ReadOnly Property PartId As Integer
|
||||||
|
Get
|
||||||
|
Return m_PartId
|
||||||
|
End Get
|
||||||
|
End Property
|
||||||
|
Private m_Status As Integer
|
||||||
|
Public ReadOnly Property Status As String
|
||||||
|
Get
|
||||||
|
Select Case m_Status
|
||||||
|
Case 1
|
||||||
|
Return "Inizio"
|
||||||
|
Case 2
|
||||||
|
Return "Fine"
|
||||||
|
Case Else
|
||||||
|
Return ""
|
||||||
|
End Select
|
||||||
|
End Get
|
||||||
|
End Property
|
||||||
|
|
||||||
|
Public ReadOnly Property sEventType As String
|
||||||
|
Get
|
||||||
|
Select Case m_EventType
|
||||||
|
Case MachLogTypes.PART_STATUS
|
||||||
|
Return String.Format("({0}) Stato pezzo", 1)
|
||||||
|
Case MachLogTypes.MACHGROUP_STATUS
|
||||||
|
Return String.Format("({0}) Stato barra", 2)
|
||||||
|
Case MachLogTypes.MACHINE_MODE = 3
|
||||||
|
Return String.Format("({0}) Modalità macchina", 3)
|
||||||
|
Case MachLogTypes.MACHINE_STATUS = 4
|
||||||
|
Return String.Format("({0}) Stato macchina", 4)
|
||||||
|
Case MachLogTypes.MACHINE_COMMAND = 5
|
||||||
|
Return String.Format("({0}) Comando macchina", 5)
|
||||||
|
Case MachLogTypes.READ_VAR = 6
|
||||||
|
Return String.Format("({0}) Lettura variabile", 6)
|
||||||
|
Case MachLogTypes.WRITE_VAR = 7
|
||||||
|
Return String.Format("({0}) Scrittura variabile", 7)
|
||||||
|
Case MachLogTypes.ALARM = 8
|
||||||
|
Return String.Format("({0}) Allarme", 8)
|
||||||
|
Case MachLogTypes.OPERATOR_MSG = 9
|
||||||
|
Return String.Format("({0}) Messaggio opertore", 9)
|
||||||
|
Case MachLogTypes.PROGRAM_SEND = 10
|
||||||
|
Return String.Format("({0}) Invio programma", 10)
|
||||||
|
Case Else
|
||||||
|
Return "Altro"
|
||||||
|
End Select
|
||||||
|
End Get
|
||||||
|
End Property
|
||||||
|
Public ReadOnly Property sEventDateTime As String
|
||||||
|
Get
|
||||||
|
Return m_EventDateTime
|
||||||
|
End Get
|
||||||
|
End Property
|
||||||
|
Public ReadOnly Property sEventValue As String
|
||||||
|
Get
|
||||||
|
Return m_Value
|
||||||
|
End Get
|
||||||
|
End Property
|
||||||
|
|
||||||
|
Public ReadOnly Property sPROD As String
|
||||||
|
Get
|
||||||
|
|
||||||
|
Return m_SupervisorId
|
||||||
|
End Get
|
||||||
|
End Property
|
||||||
|
|
||||||
|
Sub New(EventDateTime As DateTime, EventType As MachLogTypes, SupervisorId As String, Value As String)
|
||||||
|
m_EventDateTime = EventDateTime
|
||||||
|
m_EventType = EventType
|
||||||
|
m_SupervisorId = SupervisorId
|
||||||
|
m_Value = Value
|
||||||
|
If Not String.IsNullOrWhiteSpace(m_Value) Then
|
||||||
|
Dim sValues() As String = Value.Split(cSeparator)
|
||||||
|
Select Case m_EventType
|
||||||
|
Case MachLogTypes.PART_STATUS
|
||||||
|
m_ProdId = sValues(0)
|
||||||
|
m_MachGroupId = DbControllers.m_MachGroupController.FindByMachGroupId(m_ProdId, sValues(1)).Name
|
||||||
|
m_PartId = DbControllers.m_PartController.FindByPartId(m_ProdId, sValues(2)).PDN
|
||||||
|
m_Status = sValues(3)
|
||||||
|
Case MachLogTypes.MACHGROUP_STATUS
|
||||||
|
m_ProdId = sValues(0)
|
||||||
|
m_MachGroupId = DbControllers.m_MachGroupController.FindByMachGroupId(m_ProdId, sValues(1)).Name
|
||||||
|
m_Status = sValues(2)
|
||||||
|
End Select
|
||||||
|
End If
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub New(MachLog As MachLog)
|
||||||
|
Me.New(MachLog.AlarmDateTime, MachLog.ResultType, MachLog.VarAddress, MachLog.VarValue)
|
||||||
|
'm_EventDateTime = MachLog.AlarmDateTime
|
||||||
|
'm_EventType = MachLog.ResultType
|
||||||
|
'm_SupervisorId = MachLog.VarAddress
|
||||||
|
'm_Value = MachLog.VarValue
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Public Shared Function CreateMachLog(EventType As MachLogTypes, EventDateTime As DateTime, Value As String, SupervisorID As String)
|
||||||
|
Return MachLog.CreateMachLog(EventType, EventDateTime, Value, SupervisorID)
|
||||||
|
End Function
|
||||||
|
|
||||||
|
Public Shared Function CreatePartStateLog(dtEvent As DateTime, Prod As Integer, MachGroup As Integer, Part As Integer, State As Integer, SupervisorID As String)
|
||||||
|
Return CreateMachLog(MachLogTypes.PART_STATUS, dtEvent, Prod & cSeparator & MachGroup & cSeparator & Part & cSeparator & State, SupervisorID)
|
||||||
|
End Function
|
||||||
|
|
||||||
|
Public Shared Function CreateMachGroupStateLog(dtEvent As DateTime, Prod As Integer, MachGroup As Integer, State As Integer, SupervisorID As String)
|
||||||
|
Return CreateMachLog(MachLogTypes.MACHGROUP_STATUS, dtEvent, Prod & cSeparator & MachGroup & cSeparator & State, SupervisorID)
|
||||||
|
End Function
|
||||||
|
|
||||||
|
End Class
|
||||||
@@ -17,6 +17,7 @@ Module LuaExec
|
|||||||
End If
|
End If
|
||||||
' Assegno i dati
|
' Assegno i dati
|
||||||
EgtLuaCreateGlobTable("BEAM")
|
EgtLuaCreateGlobTable("BEAM")
|
||||||
|
EgtLuaSetGlobStringVar("BEAM.BASEDIR", Map.refMainWindowVM.MainWindowM.sBeamRoot)
|
||||||
EgtLuaSetGlobStringVar("BEAM.FILE", sFile)
|
EgtLuaSetGlobStringVar("BEAM.FILE", sFile)
|
||||||
EgtLuaSetGlobStringVar("BEAM.MACHINE", sMachine)
|
EgtLuaSetGlobStringVar("BEAM.MACHINE", sMachine)
|
||||||
EgtLuaSetGlobIntVar("BEAM.FLAG", nFlag)
|
EgtLuaSetGlobIntVar("BEAM.FLAG", nFlag)
|
||||||
|
|||||||
@@ -30,6 +30,7 @@ Module Map
|
|||||||
Private m_refPartInRawPartListVM As PartInRawPartListVM
|
Private m_refPartInRawPartListVM As PartInRawPartListVM
|
||||||
Private m_refFeatureInPartInRawPartListVM As FeatureInPartInRawPartListVM
|
Private m_refFeatureInPartInRawPartListVM As FeatureInPartInRawPartListVM
|
||||||
Private m_refMDIPageVM As MDIPageVM
|
Private m_refMDIPageVM As MDIPageVM
|
||||||
|
Private m_refMachineLogPageVM As MachineLogPageVM
|
||||||
|
|
||||||
#Region "Get"
|
#Region "Get"
|
||||||
|
|
||||||
@@ -218,6 +219,12 @@ Module Map
|
|||||||
End Get
|
End Get
|
||||||
End Property
|
End Property
|
||||||
|
|
||||||
|
Public ReadOnly Property refMachineLogPageVM As MachineLogPageVM
|
||||||
|
Get
|
||||||
|
Return m_refMachineLogPageVM
|
||||||
|
End Get
|
||||||
|
End Property
|
||||||
|
|
||||||
#End Region ' Get
|
#End Region ' Get
|
||||||
|
|
||||||
#Region "Set"
|
#Region "Set"
|
||||||
@@ -372,6 +379,11 @@ Module Map
|
|||||||
Return Not IsNothing(m_refMDIPageVM)
|
Return Not IsNothing(m_refMDIPageVM)
|
||||||
End Function
|
End Function
|
||||||
|
|
||||||
|
Friend Function SetRefMachineLogPageVM(MachineLogPageVM As MachineLogPageVM) As Boolean
|
||||||
|
m_refMachineLogPageVM = MachineLogPageVM
|
||||||
|
Return Not IsNothing(m_refMachineLogPageVM)
|
||||||
|
End Function
|
||||||
|
|
||||||
#End Region ' Set
|
#End Region ' Set
|
||||||
|
|
||||||
#Region "Init"
|
#Region "Init"
|
||||||
@@ -397,7 +409,7 @@ Module Map
|
|||||||
Not IsNothing(LibMap.refSceneHostVM) AndAlso Not IsNothing(LibMap.refShowPanelVM) AndAlso
|
Not IsNothing(LibMap.refSceneHostVM) AndAlso Not IsNothing(LibMap.refShowPanelVM) AndAlso
|
||||||
Not IsNothing(m_refMachinePanelVM) AndAlso Not IsNothing(LibMap.refMachGroupPanelVM) AndAlso
|
Not IsNothing(m_refMachinePanelVM) AndAlso Not IsNothing(LibMap.refMachGroupPanelVM) AndAlso
|
||||||
Not IsNothing(m_refRawPartListVM) AndAlso Not IsNothing(m_refMDIPageVM) AndAlso 'Not IsNothing(m_refWarehouseWndVM) AndAlso Not IsNothing(m_refShowBeamPanelVM) AndAlso
|
Not IsNothing(m_refRawPartListVM) AndAlso Not IsNothing(m_refMDIPageVM) AndAlso 'Not IsNothing(m_refWarehouseWndVM) AndAlso Not IsNothing(m_refShowBeamPanelVM) AndAlso
|
||||||
Not IsNothing(m_refMachCommandMessagePanelVM) AndAlso LibMap.EndInit()
|
Not IsNothing(m_refMachCommandMessagePanelVM) AndAlso Not IsNothing(m_refMachineLogPageVM) AndAlso LibMap.EndInit()
|
||||||
End Function
|
End Function
|
||||||
|
|
||||||
#End Region ' Init
|
#End Region ' Init
|
||||||
|
|||||||
@@ -11,6 +11,10 @@ Public Class ViewerOptimizerComm
|
|||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
Friend Sub Timer_Tick()
|
Friend Sub Timer_Tick()
|
||||||
|
If Not IsNothing(Map.refProjectVM.SupervisorMachGroupPanelVM) AndAlso Map.refProjectVM.SupervisorMachGroupPanelVM.bReloadingProj Then
|
||||||
|
EgtUILib.EgtOutLog("Ricaricamento programma in esecuzione!!")
|
||||||
|
Return
|
||||||
|
End If
|
||||||
If m_bTickInExecution Then
|
If m_bTickInExecution Then
|
||||||
EgtUILib.EgtOutLog("Tick gia' in esecuzione!!")
|
EgtUILib.EgtOutLog("Tick gia' in esecuzione!!")
|
||||||
Return
|
Return
|
||||||
@@ -23,7 +27,7 @@ Public Class ViewerOptimizerComm
|
|||||||
End If
|
End If
|
||||||
' recupero indice modifica del prod
|
' recupero indice modifica del prod
|
||||||
Dim nModificationIndex As Integer = 0
|
Dim nModificationIndex As Integer = 0
|
||||||
Dim ActiveSessionList As List(Of StatusMapModel) = DbControllers.m_StatusMapController.GetProd()
|
Dim ActiveSessionList As List(Of StatusMapModel) = DbControllers.m_StatusMapController.GetProd(m_SupervisorId)
|
||||||
For Each ActiveSession In ActiveSessionList
|
For Each ActiveSession In ActiveSessionList
|
||||||
If ActiveSession.ItemId = Map.refSupervisorManagerVM.CurrProd.nProdId Then
|
If ActiveSession.ItemId = Map.refSupervisorManagerVM.CurrProd.nProdId Then
|
||||||
nModificationIndex = ActiveSession.Index
|
nModificationIndex = ActiveSession.Index
|
||||||
@@ -32,7 +36,7 @@ Public Class ViewerOptimizerComm
|
|||||||
' se indice letto diverso da indice gia' presente
|
' se indice letto diverso da indice gia' presente
|
||||||
If nModificationIndex <> Map.refSupervisorManagerVM.CurrProd.nModificationIndex Then
|
If nModificationIndex <> Map.refSupervisorManagerVM.CurrProd.nModificationIndex Then
|
||||||
' recupero elementi modificati
|
' recupero elementi modificati
|
||||||
Dim MachGroupList As List(Of StatusMapModel) = DbControllers.m_StatusMapController.GetFrom(Map.refSupervisorManagerVM.CurrProd.nModificationIndex + 1)
|
Dim MachGroupList As List(Of StatusMapModel) = DbControllers.m_StatusMapController.GetFrom(m_SupervisorId, Map.refSupervisorManagerVM.CurrProd.nModificationIndex + 1)
|
||||||
Dim bReloadFile As Boolean = False
|
Dim bReloadFile As Boolean = False
|
||||||
For Each MachGroupModification In MachGroupList
|
For Each MachGroupModification In MachGroupList
|
||||||
If MachGroupModification.ItemType = Core.StatusMapItemType.MachGroup Then
|
If MachGroupModification.ItemType = Core.StatusMapItemType.MachGroup Then
|
||||||
@@ -57,6 +61,9 @@ Public Class ViewerOptimizerComm
|
|||||||
bReloadFile = True
|
bReloadFile = True
|
||||||
' ricarico il progetto
|
' ricarico il progetto
|
||||||
Map.refProjectVM.SupervisorMachGroupPanelVM.ReloadProjectFile()
|
Map.refProjectVM.SupervisorMachGroupPanelVM.ReloadProjectFile()
|
||||||
|
' esco aggiornando l'indice a quello corrente
|
||||||
|
Map.refSupervisorManagerVM.CurrProd.SetModificationIndex(MachGroupModification.Index)
|
||||||
|
Exit For
|
||||||
Else
|
Else
|
||||||
Dim ProdMachGroup As MyMachGroupVM = Map.refProjectVM.ProdMachGroupPanelVM.MachGroupVMList.FirstOrDefault(Function(x) x.Id = MachGroupModification.ItemId)
|
Dim ProdMachGroup As MyMachGroupVM = Map.refProjectVM.ProdMachGroupPanelVM.MachGroupVMList.FirstOrDefault(Function(x) x.Id = MachGroupModification.ItemId)
|
||||||
If Not IsNothing(ProdMachGroup) Then
|
If Not IsNothing(ProdMachGroup) Then
|
||||||
@@ -91,8 +98,10 @@ Public Class ViewerOptimizerComm
|
|||||||
MachGroupModification.Value(1) = MachGroupModification.Value(0)
|
MachGroupModification.Value(1) = MachGroupModification.Value(0)
|
||||||
Next
|
Next
|
||||||
End If
|
End If
|
||||||
' aggiorno indice del prod
|
If Not bReloadFile Then
|
||||||
Map.refSupervisorManagerVM.CurrProd.SetModificationIndex(nModificationIndex)
|
' aggiorno indice del prod
|
||||||
|
Map.refSupervisorManagerVM.CurrProd.SetModificationIndex(nModificationIndex)
|
||||||
|
End If
|
||||||
End If
|
End If
|
||||||
m_bTickInExecution = False
|
m_bTickInExecution = False
|
||||||
End Sub
|
End Sub
|
||||||
|
|||||||
@@ -19,7 +19,8 @@
|
|||||||
</Grid.RowDefinitions>
|
</Grid.RowDefinitions>
|
||||||
<TextBlock Grid.Row="1"
|
<TextBlock Grid.Row="1"
|
||||||
Text="Attesa salvataggio in ottimizzatore"
|
Text="Attesa salvataggio in ottimizzatore"
|
||||||
TextAlignment="Center"/>
|
TextAlignment="Center"
|
||||||
|
Margin="40,0,40,0"/>
|
||||||
<ProgressBar Grid.Row="3"
|
<ProgressBar Grid.Row="3"
|
||||||
Minimum="0"
|
Minimum="0"
|
||||||
Maximum="20"
|
Maximum="20"
|
||||||
@@ -29,6 +30,7 @@
|
|||||||
<Button Grid.Row="5" Content="Cancel"
|
<Button Grid.Row="5" Content="Cancel"
|
||||||
IsDefault="False"
|
IsDefault="False"
|
||||||
IsCancel="True"
|
IsCancel="True"
|
||||||
Command="{Binding Cancel_Command}"/>
|
Command="{Binding Cancel_Command}"
|
||||||
|
Style="{StaticResource EgtWPFLib5_InputButton}"/>
|
||||||
</Grid>
|
</Grid>
|
||||||
</EgtWPFLib5:EgtCustomWindow>
|
</EgtWPFLib5:EgtCustomWindow>
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
Imports System.Windows.Threading
|
Imports System.Windows.Threading
|
||||||
Imports EgtBEAMWALL.Core
|
Imports EgtBEAMWALL.Core
|
||||||
Imports EgtWPFLib5
|
Imports EgtWPFLib5
|
||||||
|
Imports EgtUILib
|
||||||
|
|
||||||
Public Class WaitingWndVM
|
Public Class WaitingWndVM
|
||||||
Inherits VMBase
|
Inherits VMBase
|
||||||
@@ -18,6 +19,23 @@ Public Class WaitingWndVM
|
|||||||
End Get
|
End Get
|
||||||
End Property
|
End Property
|
||||||
|
|
||||||
|
#Region "Messages"
|
||||||
|
|
||||||
|
Public ReadOnly Property Msg_Text As String
|
||||||
|
Get
|
||||||
|
Return EgtMsg(61968)
|
||||||
|
End Get
|
||||||
|
End Property
|
||||||
|
|
||||||
|
Public ReadOnly Property Cancel_Msg As String
|
||||||
|
Get
|
||||||
|
Return EgtMsg(61969)
|
||||||
|
End Get
|
||||||
|
End Property
|
||||||
|
|
||||||
|
|
||||||
|
#End Region ' Messages
|
||||||
|
|
||||||
' definizione comandi
|
' definizione comandi
|
||||||
Private m_cmdCancel As ICommand
|
Private m_cmdCancel As ICommand
|
||||||
|
|
||||||
|
|||||||
@@ -7,9 +7,10 @@
|
|||||||
<entityFramework>
|
<entityFramework>
|
||||||
<defaultConnectionFactory type="MySql.Data.Entity.MySqlConnectionFactory, MySql.Data.Entity.EF6" />
|
<defaultConnectionFactory type="MySql.Data.Entity.MySqlConnectionFactory, MySql.Data.Entity.EF6" />
|
||||||
<providers>
|
<providers>
|
||||||
<provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6, Version=6.10.9.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"></provider>
|
|
||||||
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
|
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
|
||||||
</providers>
|
<provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.EntityFramework, Version=8.0.21.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d">
|
||||||
|
</provider></providers>
|
||||||
</entityFramework>
|
</entityFramework>
|
||||||
<connectionStrings>
|
<connectionStrings>
|
||||||
<add name="DefaultConnection" connectionString="server=localhost;port=3306;User Id=root;password=viacremasca;Persist Security Info=True;database=EgtBwDb;SslMode=none" providerName="MySql.Data.MySqlClient" />
|
<add name="DefaultConnection" connectionString="server=localhost;port=3306;User Id=root;password=viacremasca;Persist Security Info=True;database=EgtBwDb;SslMode=none" providerName="MySql.Data.MySqlClient" />
|
||||||
@@ -18,18 +19,34 @@
|
|||||||
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
|
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
|
||||||
<dependentAssembly>
|
<dependentAssembly>
|
||||||
<assemblyIdentity name="MySql.Data" publicKeyToken="c5687fc88969c44d" culture="neutral" />
|
<assemblyIdentity name="MySql.Data" publicKeyToken="c5687fc88969c44d" culture="neutral" />
|
||||||
<bindingRedirect oldVersion="0.0.0.0-6.10.9.0" newVersion="6.10.9.0" />
|
<bindingRedirect oldVersion="0.0.0.0-8.0.29.0" newVersion="8.0.29.0" />
|
||||||
</dependentAssembly>
|
</dependentAssembly>
|
||||||
<dependentAssembly>
|
<dependentAssembly>
|
||||||
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
|
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
|
||||||
<bindingRedirect oldVersion="0.0.0.0-13.0.0.0" newVersion="13.0.0.0" />
|
<bindingRedirect oldVersion="0.0.0.0-13.0.0.0" newVersion="13.0.0.0" />
|
||||||
</dependentAssembly>
|
</dependentAssembly>
|
||||||
|
<dependentAssembly>
|
||||||
|
<assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||||
|
<bindingRedirect oldVersion="0.0.0.0-5.0.0.0" newVersion="5.0.0.0" />
|
||||||
|
</dependentAssembly>
|
||||||
|
<dependentAssembly>
|
||||||
|
<assemblyIdentity name="BouncyCastle.Crypto" publicKeyToken="0e99375e54769942" culture="neutral" />
|
||||||
|
<bindingRedirect oldVersion="0.0.0.0-1.8.5.0" newVersion="1.8.5.0" />
|
||||||
|
</dependentAssembly>
|
||||||
|
<dependentAssembly>
|
||||||
|
<assemblyIdentity name="Google.Protobuf" publicKeyToken="a7d26565bac4d604" culture="neutral" />
|
||||||
|
<bindingRedirect oldVersion="0.0.0.0-3.19.4.0" newVersion="3.19.4.0" />
|
||||||
|
</dependentAssembly>
|
||||||
|
<dependentAssembly>
|
||||||
|
<assemblyIdentity name="K4os.Compression.LZ4.Streams" publicKeyToken="2186fa9121ef231d" culture="neutral" />
|
||||||
|
<bindingRedirect oldVersion="0.0.0.0-1.2.6.0" newVersion="1.2.6.0" />
|
||||||
|
</dependentAssembly>
|
||||||
</assemblyBinding>
|
</assemblyBinding>
|
||||||
</runtime>
|
</runtime>
|
||||||
<system.data>
|
<system.data>
|
||||||
<DbProviderFactories>
|
<DbProviderFactories>
|
||||||
<remove invariant="MySql.Data.MySqlClient" />
|
<remove invariant="MySql.Data.MySqlClient" />
|
||||||
<add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.10.9.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
|
<add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=8.0.29.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
|
||||||
</DbProviderFactories>
|
</DbProviderFactories>
|
||||||
</system.data>
|
</system.data>
|
||||||
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" /></startup></configuration>
|
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" /></startup></configuration>
|
||||||
|
|||||||
@@ -1,18 +1,30 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<packages>
|
<packages>
|
||||||
|
<package id="BouncyCastle" version="1.8.5" targetFramework="net472" />
|
||||||
<package id="Csv" version="1.0.31" targetFramework="net472" />
|
<package id="Csv" version="1.0.31" targetFramework="net472" />
|
||||||
<package id="EntityFramework" version="6.4.4" targetFramework="net452" />
|
<package id="EntityFramework" version="6.4.4" targetFramework="net452" />
|
||||||
<package id="FluentFTP" version="19.2.2" targetFramework="net472" />
|
<package id="FluentFTP" version="19.2.2" targetFramework="net472" />
|
||||||
|
<package id="Google.Protobuf" version="3.19.4" targetFramework="net472" />
|
||||||
|
<package id="Ionic.Zip" version="1.9.1.8" targetFramework="net472" />
|
||||||
|
<package id="K4os.Compression.LZ4" version="1.2.6" targetFramework="net472" />
|
||||||
|
<package id="K4os.Compression.LZ4.Streams" version="1.2.6" targetFramework="net472" />
|
||||||
|
<package id="K4os.Hash.xxHash" version="1.0.6" targetFramework="net472" />
|
||||||
<package id="Lextm.SharpSnmpLib" version="10.0.9" targetFramework="net472" />
|
<package id="Lextm.SharpSnmpLib" version="10.0.9" targetFramework="net472" />
|
||||||
<package id="Microsoft.DotNet.PlatformAbstractions" version="2.1.0" targetFramework="net472" />
|
<package id="Microsoft.DotNet.PlatformAbstractions" version="2.1.0" targetFramework="net472" />
|
||||||
<package id="Microsoft.Extensions.DependencyModel" version="2.1.0" targetFramework="net472" />
|
<package id="Microsoft.Extensions.DependencyModel" version="2.1.0" targetFramework="net472" />
|
||||||
<package id="MySql.Data" version="6.10.9" targetFramework="net452" />
|
<package id="MySql.Data" version="8.0.21" targetFramework="net472" />
|
||||||
<package id="MySql.Data.Entity" version="6.10.9" targetFramework="net452" />
|
<package id="MySql.Data.EntityFramework" version="8.0.21" targetFramework="net472" />
|
||||||
<package id="Newtonsoft.Json" version="13.0.1" targetFramework="net472" />
|
<package id="Newtonsoft.Json" version="13.0.1" targetFramework="net472" />
|
||||||
|
<package id="NLog" version="5.0.1" targetFramework="net472" />
|
||||||
<package id="Portable.BouncyCastle" version="1.8.2" targetFramework="net472" />
|
<package id="Portable.BouncyCastle" version="1.8.2" targetFramework="net472" />
|
||||||
|
<package id="SSH.NET" version="2016.1.0" targetFramework="net472" />
|
||||||
|
<package id="System.Buffers" version="4.5.1" targetFramework="net472" />
|
||||||
<package id="System.Collections.Specialized" version="4.3.0" targetFramework="net472" />
|
<package id="System.Collections.Specialized" version="4.3.0" targetFramework="net472" />
|
||||||
|
<package id="System.Memory" version="4.5.4" targetFramework="net472" />
|
||||||
<package id="System.Net.NameResolution" version="4.3.0" targetFramework="net472" />
|
<package id="System.Net.NameResolution" version="4.3.0" targetFramework="net472" />
|
||||||
<package id="System.Net.Sockets" version="4.3.0" targetFramework="net472" />
|
<package id="System.Net.Sockets" version="4.3.0" targetFramework="net472" />
|
||||||
|
<package id="System.Numerics.Vectors" version="4.5.0" targetFramework="net472" />
|
||||||
|
<package id="System.Runtime.CompilerServices.Unsafe" version="5.0.0" targetFramework="net472" />
|
||||||
<package id="System.Runtime.InteropServices.RuntimeInformation" version="4.0.0" targetFramework="net472" />
|
<package id="System.Runtime.InteropServices.RuntimeInformation" version="4.0.0" targetFramework="net472" />
|
||||||
<package id="System.Xml.XmlDocument" version="4.3.0" targetFramework="net472" />
|
<package id="System.Xml.XmlDocument" version="4.3.0" targetFramework="net472" />
|
||||||
<package id="Zebra.Printer.SDK" version="2.15.2634" targetFramework="net472" />
|
<package id="Zebra.Printer.SDK" version="2.15.2634" targetFramework="net472" />
|
||||||
|
|||||||
@@ -127,6 +127,7 @@ Public Class AddRawPartWndVM
|
|||||||
Return nVariableIndex = 2 OrElse nVariableIndex = 3
|
Return nVariableIndex = 2 OrElse nVariableIndex = 3
|
||||||
End If
|
End If
|
||||||
End Select
|
End Select
|
||||||
|
Return False
|
||||||
End Function
|
End Function
|
||||||
|
|
||||||
#End Region ' CONSTRUCTOR
|
#End Region ' CONSTRUCTOR
|
||||||
@@ -237,10 +238,10 @@ Public Class Variable
|
|||||||
End Set
|
End Set
|
||||||
End Property
|
End Property
|
||||||
|
|
||||||
Sub New(Type As VariableType, Msg As String, Value As String)
|
Sub New(Type As VariableType, Msg As String, Value As Double)
|
||||||
m_nType = Type
|
m_nType = Type
|
||||||
m_sMsg = Msg
|
m_sMsg = Msg
|
||||||
sValue = Value
|
m_dValue = Value
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
Friend Sub SetValue(dValue As Double)
|
Friend Sub SetValue(dValue As Double)
|
||||||
|
|||||||
@@ -1,31 +1,48 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<configuration>
|
<configuration>
|
||||||
<configSections>
|
<configSections>
|
||||||
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
|
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
|
||||||
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false"/>
|
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
|
||||||
</configSections>
|
</configSections>
|
||||||
<entityFramework>
|
<entityFramework>
|
||||||
<defaultConnectionFactory type="MySql.Data.Entity.MySqlConnectionFactory, MySql.Data.Entity.EF6"/>
|
<defaultConnectionFactory type="MySql.Data.Entity.MySqlConnectionFactory, MySql.Data.Entity.EF6" />
|
||||||
<providers>
|
<providers>
|
||||||
<provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6, Version=6.10.9.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"></provider>
|
|
||||||
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer"/>
|
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
|
||||||
</providers>
|
<provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.EntityFramework, Version=8.0.21.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d">
|
||||||
|
</provider></providers>
|
||||||
</entityFramework>
|
</entityFramework>
|
||||||
<connectionStrings>
|
<connectionStrings>
|
||||||
<add name="DefaultConnection" connectionString="server=localhost;port=3306;User Id=EgtUser;password=viacremasca;Persist Security Info=True;database=EgtBwDb;SslMode=none" providerName="MySql.Data.MySqlClient"/>
|
<add name="DefaultConnection" connectionString="server=localhost;port=3306;User Id=EgtUser;password=viacremasca;Persist Security Info=True;database=EgtBwDb;SslMode=none" providerName="MySql.Data.MySqlClient" />
|
||||||
</connectionStrings>
|
</connectionStrings>
|
||||||
<runtime>
|
<runtime>
|
||||||
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
|
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
|
||||||
<dependentAssembly>
|
<dependentAssembly>
|
||||||
<assemblyIdentity name="MySql.Data" publicKeyToken="c5687fc88969c44d" culture="neutral"/>
|
<assemblyIdentity name="MySql.Data" publicKeyToken="c5687fc88969c44d" culture="neutral" />
|
||||||
<bindingRedirect oldVersion="0.0.0.0-6.10.9.0" newVersion="6.10.9.0"/>
|
<bindingRedirect oldVersion="0.0.0.0-8.0.29.0" newVersion="8.0.29.0" />
|
||||||
|
</dependentAssembly>
|
||||||
|
<dependentAssembly>
|
||||||
|
<assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||||
|
<bindingRedirect oldVersion="0.0.0.0-5.0.0.0" newVersion="5.0.0.0" />
|
||||||
|
</dependentAssembly>
|
||||||
|
<dependentAssembly>
|
||||||
|
<assemblyIdentity name="Google.Protobuf" publicKeyToken="a7d26565bac4d604" culture="neutral" />
|
||||||
|
<bindingRedirect oldVersion="0.0.0.0-3.19.4.0" newVersion="3.19.4.0" />
|
||||||
|
</dependentAssembly>
|
||||||
|
<dependentAssembly>
|
||||||
|
<assemblyIdentity name="K4os.Compression.LZ4.Streams" publicKeyToken="2186fa9121ef231d" culture="neutral" />
|
||||||
|
<bindingRedirect oldVersion="0.0.0.0-1.2.6.0" newVersion="1.2.6.0" />
|
||||||
|
</dependentAssembly>
|
||||||
|
<dependentAssembly>
|
||||||
|
<assemblyIdentity name="BouncyCastle.Crypto" publicKeyToken="0e99375e54769942" culture="neutral" />
|
||||||
|
<bindingRedirect oldVersion="0.0.0.0-1.8.5.0" newVersion="1.8.5.0" />
|
||||||
</dependentAssembly>
|
</dependentAssembly>
|
||||||
</assemblyBinding>
|
</assemblyBinding>
|
||||||
</runtime>
|
</runtime>
|
||||||
<system.data>
|
<system.data>
|
||||||
<DbProviderFactories>
|
<DbProviderFactories>
|
||||||
<remove invariant="MySql.Data.MySqlClient"/>
|
<remove invariant="MySql.Data.MySqlClient" />
|
||||||
<add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.10.9.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"/>
|
<add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=8.0.29.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
|
||||||
</DbProviderFactories>
|
</DbProviderFactories>
|
||||||
</system.data>
|
</system.data>
|
||||||
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2"/></startup></configuration>
|
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" /></startup></configuration>
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user