320 lines
11 KiB
VB.net
320 lines
11 KiB
VB.net
Imports Newtonsoft.Json
|
|
Imports SteamWare
|
|
Imports System
|
|
Imports System.Collections.Generic
|
|
|
|
Namespace AppData
|
|
Public Class ComLib
|
|
Public Shared Function traduci(ByVal lemma As String) As String
|
|
Return user_std.UtSn.Traduci(lemma)
|
|
End Function
|
|
|
|
Protected Shared redOutPath As String = "NKC:SERV:BREQ"
|
|
Protected Shared redMsgCount As String = "NKC:SERV:BREQ:MCount"
|
|
Protected Shared redMsgList As String = "NKC:SERV:BREQ:MList"
|
|
Protected Shared redMLCurrStack As String = "NKC:SERV:TAKT:CurrStack"
|
|
|
|
Public Enum CStatus
|
|
Programmed = 0
|
|
Running
|
|
Done
|
|
End Enum
|
|
|
|
Public Enum BatchStatus
|
|
Imported = 0
|
|
EstimationRequested
|
|
EstimationDone
|
|
NestRequested
|
|
NestDone
|
|
Approved
|
|
Discarded
|
|
End Enum
|
|
|
|
Public Enum BatchPosition
|
|
NotStarted = 0
|
|
StackStarted
|
|
StackDone
|
|
Current
|
|
Completed
|
|
End Enum
|
|
|
|
Public Shared Function PositionStatusDescr(ByVal value As Object) As String
|
|
Dim answ As String = ""
|
|
|
|
Try
|
|
Dim pStatus As ComLib.BatchPosition = CType([Enum].Parse(GetType(ComLib.BatchPosition), value.ToString()), ComLib.BatchPosition)
|
|
|
|
Select Case pStatus
|
|
Case BatchPosition.NotStarted
|
|
answ = traduci("NotStarted")
|
|
Case BatchPosition.StackStarted
|
|
answ = traduci("Stacking")
|
|
Case BatchPosition.StackDone
|
|
answ = traduci("StackDone")
|
|
Case Else
|
|
End Select
|
|
|
|
Catch
|
|
End Try
|
|
|
|
Return answ
|
|
End Function
|
|
|
|
Public Shared Function BatchStatusDescr(ByVal value As Object) As String
|
|
Dim answ As String = ""
|
|
|
|
Try
|
|
Dim bStatus As ComLib.BatchStatus = CType([Enum].Parse(GetType(ComLib.BatchStatus), value.ToString()), ComLib.BatchStatus)
|
|
|
|
Select Case bStatus
|
|
Case BatchStatus.Imported
|
|
answ = "Imported"
|
|
Case BatchStatus.EstimationRequested
|
|
answ = "Estimation Requested"
|
|
Case BatchStatus.EstimationDone
|
|
answ = "Estimation Completed"
|
|
Case BatchStatus.NestRequested
|
|
answ = "Nesting Requested"
|
|
Case BatchStatus.NestDone
|
|
answ = "Nesting Completed"
|
|
Case BatchStatus.Approved
|
|
answ = "Nesting Approved"
|
|
Case BatchStatus.Discarded
|
|
answ = "Nesting Discarded"
|
|
Case Else
|
|
End Select
|
|
|
|
Catch
|
|
End Try
|
|
|
|
Return answ
|
|
End Function
|
|
|
|
Public Enum PStatus
|
|
Programmed = 0
|
|
Present
|
|
Printing
|
|
Printed
|
|
Machining
|
|
Machined
|
|
Out
|
|
End Enum
|
|
|
|
Public Class MaterialData
|
|
Public Property MaterialId As Integer
|
|
Public Property MaterialPN As String
|
|
Public Property MaterialDescription As String
|
|
End Class
|
|
|
|
Public Class WorkData
|
|
Public Property ProgramPath As String
|
|
Public Property DtStart As DateTime
|
|
Public Property DtEnd As DateTime
|
|
|
|
Public ReadOnly Property WorkTimeMin As Double
|
|
Get
|
|
Dim answ As Double = 0
|
|
|
|
If DtStart IsNot Nothing AndAlso DtEnd IsNot Nothing Then
|
|
|
|
Try
|
|
answ = DtEnd.Subtract(DtStart).TotalMinutes
|
|
Catch
|
|
End Try
|
|
End If
|
|
|
|
Return answ
|
|
End Get
|
|
End Property
|
|
End Class
|
|
|
|
Public Class Panel
|
|
Public Property PanelId As Integer
|
|
Public Property Material As MaterialData
|
|
Public Property Status As PStatus
|
|
Public Property Printing As WorkData
|
|
Public Property Machining As WorkData
|
|
Public Property Unloading As WorkData
|
|
End Class
|
|
|
|
Public Class WStack
|
|
Public Property StackId As Integer
|
|
Public Property Status As CStatus
|
|
Public Property DataMatrix As String
|
|
Public Property DtStart As DateTime
|
|
Public Property DtEnd As DateTime
|
|
Public Property PanelsList As List(Of Panel)
|
|
|
|
Public ReadOnly Property NumPanels As Integer
|
|
Get
|
|
Dim answ As Integer = 0
|
|
|
|
Try
|
|
answ = PanelsList.Count
|
|
Catch
|
|
End Try
|
|
|
|
Return answ
|
|
End Get
|
|
End Property
|
|
End Class
|
|
|
|
Public Class Takt
|
|
Public Property TaktId As String
|
|
Public Property Status As CStatus
|
|
Public Property StackList As List(Of WStack)
|
|
|
|
Public ReadOnly Property NumStack As Integer
|
|
Get
|
|
Dim answ As Integer = 0
|
|
|
|
Try
|
|
answ = StackList.Count
|
|
Catch
|
|
End Try
|
|
|
|
Return answ
|
|
End Get
|
|
End Property
|
|
End Class
|
|
|
|
Public Class Parte
|
|
Public Property PartId As Integer
|
|
Public Property DataMatrix As String
|
|
Public Property ExtCode As String
|
|
Public Property Description As String
|
|
Public Property MatId As Integer
|
|
Public Property PostProc As String
|
|
Public Property ProcessReq As String
|
|
Public Property CadFilePath As String
|
|
Public Property Qty As Integer
|
|
End Class
|
|
|
|
Public Class Ordine
|
|
Public Property OrdCod As String
|
|
Public Property DestPlant As String
|
|
Public Property DataMatrix As String
|
|
Public Property ExtCode As String
|
|
Public Property Model As String
|
|
Public Property Qty As Integer
|
|
Public Property Items As List(Of Parte)
|
|
End Class
|
|
|
|
Public Class Batch
|
|
Public Property BatchId As Integer
|
|
Public Property maxTime As Integer
|
|
Public Property procType As Integer
|
|
Public Property Orders As List(Of Ordine)
|
|
End Class
|
|
|
|
Public Shared Function sendMaterials() As Boolean
|
|
Dim answ As Boolean = False
|
|
Dim table = DataLayer.man.taMat.GetData()
|
|
Dim redVal As String = JsonConvert.SerializeObject(table)
|
|
Dim redKey As String = $"NKC:SERV:CONF:MATERIALS"
|
|
memLayer.ML.setRSV(redKey, redVal)
|
|
Return answ
|
|
End Function
|
|
|
|
Public Shared Function getNextEnv(ByVal BatchID As Integer, ByVal note As String) As String
|
|
Dim nextIndex As Long = memLayer.ML.setRCntI(redMsgCount)
|
|
Dim answ As String = $"Z{nextIndex}"
|
|
Dim lista As Dictionary(Of String, String) = New Dictionary(Of String, String)()
|
|
lista.Add(answ, $"{BatchID}|{note}")
|
|
memLayer.ML.redSaveHashDict(redMsgList, lista)
|
|
Return answ
|
|
End Function
|
|
|
|
Public Shared Function sendBatchReq(ByVal BatchID As Integer, ByVal note As String) As Boolean
|
|
Dim answ As Boolean = False
|
|
Dim nextEnv As String = getNextEnv(BatchID, note)
|
|
|
|
Try
|
|
Dim batch = DataLayer.man.taBL.getByKey(BatchID)
|
|
Dim mTime As Integer = 1
|
|
Dim pType As Integer = 1
|
|
|
|
If batch(0).STATUS < CInt(BatchStatus.EstimationDone) Then
|
|
mTime = memLayer.ML.cdvi("estimMaxTime")
|
|
Else
|
|
mTime = memLayer.ML.cdvi("nestMaxTime")
|
|
pType = 2
|
|
End If
|
|
|
|
Dim tblOrd = DataLayer.man.taOL.getByBatch(BatchID)
|
|
Dim redVal As String = JsonConvert.SerializeObject(tblOrd)
|
|
Dim redKey As String = $"{redOutPath}:{nextEnv}:ORDERS"
|
|
memLayer.ML.setRSV(redKey, redVal)
|
|
Dim tblItm = DataLayer.man.taIL.getByBatch(BatchID)
|
|
redVal = JsonConvert.SerializeObject(tblItm)
|
|
redKey = $"{redOutPath}:{nextEnv}:ITEMS"
|
|
memLayer.ML.setRSV(redKey, redVal)
|
|
Dim currBatch = New Batch() With {
|
|
.BatchId = BatchID,
|
|
.maxTime = mTime,
|
|
.procType = pType
|
|
}
|
|
redVal = JsonConvert.SerializeObject(currBatch)
|
|
redKey = $"{redOutPath}:{nextEnv}:DATA"
|
|
memLayer.ML.setRSV(redKey, redVal)
|
|
redKey = $"{redOutPath}:CURR"
|
|
memLayer.ML.setRSV(redKey, nextEnv)
|
|
answ = True
|
|
Catch
|
|
End Try
|
|
|
|
Return answ
|
|
End Function
|
|
|
|
Public Shared Function serializeTakt(ByVal currData As Takt) As String
|
|
Dim answ As String = JsonConvert.SerializeObject(currData)
|
|
Return answ
|
|
End Function
|
|
|
|
Public Shared Function deserializeTakt(ByVal rawData As String) As Takt
|
|
Dim answ As Takt = JsonConvert.DeserializeObject(Of Takt)(rawData)
|
|
Return answ
|
|
End Function
|
|
|
|
Public Shared Function saveTakt(ByVal origin As String, ByVal currData As Takt) As Boolean
|
|
Dim answ As Boolean = False
|
|
|
|
Try
|
|
Dim redKey As String = $"NKC:{origin.ToUpper()}:TAKT:{currData.TaktId}"
|
|
Dim redVal As String = serializeTakt(currData)
|
|
memLayer.ML.setRSV(redKey, redVal)
|
|
answ = True
|
|
Catch
|
|
End Try
|
|
|
|
Return answ
|
|
End Function
|
|
|
|
Public Shared Function readTakt(ByVal origin As String, ByVal TaktId As String) As Takt
|
|
Dim answ As Takt = Nothing
|
|
|
|
Try
|
|
Dim redKey As String = $"NKC:{origin.ToUpper()}:TAKT:{TaktId}"
|
|
Dim redVal As String = memLayer.ML.getRSV(redKey)
|
|
answ = deserializeTakt(redVal)
|
|
Catch
|
|
End Try
|
|
|
|
Return answ
|
|
End Function
|
|
|
|
Public Function prodGetNextTakt() As Takt
|
|
Return Nothing
|
|
End Function
|
|
|
|
Public Shared Property taktMLCurrStack As String
|
|
Get
|
|
Return memLayer.ML.getRSV(redMLCurrStack)
|
|
End Get
|
|
Set(ByVal value As String)
|
|
memLayer.ML.setRSV(redMLCurrStack, value)
|
|
End Set
|
|
End Property
|
|
End Class
|
|
End Namespace
|