Namespace Rework
Public Class HoofdAansturingRework
Private _productieData As ZijkamerFreesProductieData
Private ReadOnly _productieDatas As New List(Of ZijkamerFreesProductieData)
Public Sub VerwerkRug(rug As Rework)
'Naar Ardis sturen.
HerzaagRework(rug)
'De opdracht resetten in de afkanter.
ResetOpdrachtAfkanter(rug.barcode)
End Sub
Public Sub VerwerkFront(front As Rework)
'Naar Ardis sturen.
HerzaagRework(front)
'De opdracht resetten in de afkanter.
ResetOpdrachtAfkanter(front.barcode)
End Sub
Public Sub VerwerkBodem(bodem As Rework)
'Naar Ardis sturen.
HerzaagRework(bodem)
'Productie tabel wordt nooit gewist op stemasC en insert moet dus niet worden uitgevoerd.
End Sub
'''
''' Herzagen van het de rework.
'''
''' De rework die zal herzaagt worden.
Private Sub HerzaagRework(rework As Rework)
'Andere functie aanroepen met lege tray- en slotnummer.
HerzaagRework(rework, String.Empty, String.Empty)
End Sub
'''
''' Bepalen hoe de rework verwerkt moet worden, afhankelijk of het een zijkant is of niet.
''' Indien het een zijkant is wordt gekeken of het links of rechts is.
'''
''' De rework die zal herzaagt worden.
''' De traynummer.
''' Het slotnummer.
Private Sub HerzaagRework(rework As Rework, trayNummer As String, slotNummer As String)
'Controleer of het wel moet worden opgeslagen in Ardis.
If Not rework.opslaanArdis Then Return
'Zo ja, controleer of het onderdeel geen zijkant is.
If Not rework.onderdeel.ToLower.Contains("zijkant") Then
'Reworks van niet-zijkanten worden herzaagt aan de hand van hun barcode.
HerzaagMetBarcode(rework.barcode)
Else
'Voor zijkanten wordt gekeken of het links, rechts, beide of gewoon een zijkant is.
Dim linksEnOfRechts As String = rework.onderdeel.ToUpper()
'Kijk of het een normale zijkant is.
If Not linksEnOfRechts.Contains("L") And Not linksEnOfRechts.Contains("R") Then
'Gewone zijkant zonder type.
HerzaagZijkant(rework, "", trayNummer, slotNummer)
Else
'Kijk of het een LR zijkant is.
If linksEnOfRechts.Contains("LR") Then
'Zo ja, Herzaag zowel voor links als voor rechts.
HerzaagZijkant(rework, "L", trayNummer, slotNummer)
HerzaagZijkant(rework, "R", trayNummer, slotNummer)
ElseIf linksEnOfRechts.Contains("L") Then
'Herzaag links.
HerzaagZijkant(rework, "L", trayNummer, slotNummer)
Else
'Herzaag rechts.
HerzaagZijkant(rework, "R", trayNummer, slotNummer)
End If
End If
End If
End Sub
Private Sub HerzaagZijkant(rework As Rework, linksOfRechts As String, trayNummer As String, slotNummer As String)
Try
Dim ardisData As ArdisData = ArdisMapper.OphalenData(rework.barcode)
If ardisData Is Nothing Then
Throw New Exception("Ardisdata kon niet worden opgevraagd voor rework met barcode: " & rework.barcode)
End If
'als het een speciale zijkant is moeten we het corresponderende plankje vinden, aka A of B
Dim barcodes As List(Of String)
If Not (ardisData.isSpecialGegenereerd()) Then
barcodes = ArdisMapper.geefBarcode(ardisData.PartGroup, ardisData.PartExt02, ardisData.PartL, linksOfRechts)
Else
barcodes = ArdisMapper.geefBarcodeGegenereerdePlankjes(ardisData.PartGroup, ardisData.PartExt02, ardisData.PartL)
End If
If barcodes Is Nothing Then
Throw New Exception("Er is iets foutgelopen bij het ophalen van de barcodes van de zijkanten uit de Ardis databank")
ElseIf barcodes.Count > 2 Then
Throw New Exception("Er zijn teveel barcodes gevonden bij het ophalen van de barcodes van de zijkanten uit de Ardis databank, Partgroup, PartExt02: " & ardisData.PartGroup & ", " & ardisData.PartExt02)
End If
For Each barcode In barcodes
HerzaagMetBarcode(barcode, trayNummer, slotNummer)
Next
Catch ex As Exception
Throw ex
End Try
End Sub
#Region "Tray"
Public Sub VerwerkTray(tray As ReworkTray)
Try
For Each slot As Slot In tray.geefNietLegeSlots
If slot.zijkanten.Count > 0 Then
opslaanInAutomilling()
For Each zijkant As Rework In slot.zijkanten
'de opdracht resetten in de afkanter
ResetOpdrachtAfkanter(zijkant.barcode)
Next
'als het een paar is de andere van het paar verwijderen
slot.verwijderTweedeVanPaar()
End If
Next
Catch ex As Exception
Throw ex
End Try
End Sub
Private Sub OpslaanInAutomilling()
For Each data As ZijkamerFreesProductieData In _productieDatas
If data Is Nothing Then
_productieDatas.Clear()
Throw New Exception("Automilling data mag niet Nothing zijn om op te slaan")
End If
'kijken of het wel moet worden opgeslagen
If Configs.geefVerwerkStatus Then
AutomillingMapper.opslaan(data)
End If
Next
_productieDatas.Clear()
End Sub
#End Region
'''
''' De opdracht resetten in de afkanter.
'''
''' De barcode van het onderdeel.
Private Shared Sub ResetOpdrachtAfkanter(ByVal barcodeId As String)
Try
'kijken of het wel moet worden opgeslagen
If Configs.geefVerwerkStatus Then
KantenbandMapper.resetOpdracht(barcodeId)
End If
Catch ex As Exception
Throw ex
End Try
End Sub
Private Sub HerzaagMetBarcode(ByVal BarcodeID As String, Optional trayNummer As String = "", Optional slotNummer As String = "")
Try
Dim ardisData As ArdisData = ArdisMapper.OphalenData(BarcodeID)
ardisData.aanpassenDataRework()
'kijken of het wel moet worden opgeslagen
If Configs.geefVerwerkStatus Then
ArdisTextMapper.opslaan(ItemType.REWORK, ardisData, trayNummer, slotNummer)
End If
Catch ex As Exception
Throw ex
End Try
End Sub
Public Sub updateTray(tray As ReworkTray)
Try
For Each slot As Slot In tray.geefNietLegeSlots
If slot.zijkanten.Count > 0 Then
Dim linksOfRechts As String = slot.zijkanten(0).geefLinksOfRechts()
'In automilling (technologica) laten verwerken
If slot.zijkanten.Count >= 2 Then
MaakFreesOpdrachtInReworkTray(slot.zijkanten(0).barcode, linksOfRechts, tray.nummer, slot.nummer, slot.zijkanten(0).voorVoorraad, slot.zijkanten(0).etiketTekst, slot.zijkanten(1).barcode, slot.zijkanten(1).geefLinksOfRechts())
Else
MaakFreesOpdrachtInReworkTray(slot.zijkanten(0).barcode, linksOfRechts, tray.nummer, slot.nummer, slot.zijkanten(0).voorVoorraad, slot.zijkanten(0).etiketTekst)
End If
'de naam van onderdeel naar "ONDERDEEL LR" zetten
'als een van de twee niet in ardis wordt opgeslagen de andere automatisch ook niet!
slot.updateReworkOnderdeel()
'waarden in de rework invullen
slot.zijkanten(0).color = If(slot.type = SlotType.dubbel, _productieData.colorDubbel, _productieData.colorEnkel)
slot.zijkanten(0).length = _productieData.length
slot.zijkanten(0).height = _productieData.height
'In ARDIS per zijkant twee planken zagen (er moet maar 1 zijkant worden meegegeven, onderdeel is naar LR gezet)
HerzaagRework(slot.zijkanten(0), tray.nummer, slot.nummer)
End If
Next
Catch ex As Exception
Throw ex
End Try
End Sub
Private Sub MaakFreesOpdrachtInReworkTray(ByVal barcodeID As String, ByVal linksOfRechts As String, ByVal nieuwTrayNummer As String, ByVal slotNr As String, ByVal voorVoorraad As Boolean, etiketTekst As String, Optional barcodeID2 As String = "", Optional andereZijkantLinksOfRechts As String = "")
Try
_productieData = AutomillingMapper.OphalenUitProductie(barcodeID)
If _productieData Is Nothing Then
_productieData = AutomillingMapper.OphalenUitHistoriek(barcodeID)
If _productieData Is Nothing Then
Throw New Exception("De productieData kon niet worden opgehaald uit automiling met barcode: " & barcodeID)
End If
End If
'als het een uit een paar is updaten met de informatie uit de andere van het paar
If barcodeID2.Equals("") Then
_productieData.aanpassenData(linksOfRechts, nieuwTrayNummer, slotNr, voorVoorraad, etiketTekst)
Else
Dim productieDataAndere As ZijkamerFreesProductieData
productieDataAndere = AutomillingMapper.OphalenUitProductie(barcodeID2)
If productieDataAndere Is Nothing Then
productieDataAndere = AutomillingMapper.OphalenUitHistoriek(barcodeID2)
If productieDataAndere Is Nothing Then
Throw New Exception("De productieData kon niet worden opgehaald uit automiling met barcode: " & barcodeID)
End If
End If
_productieData.aanpassenData(linksOfRechts, nieuwTrayNummer, slotNr, voorVoorraad, etiketTekst, productieDataAndere, andereZijkantLinksOfRechts)
End If
_productieDatas.Add(_productieData.ShallowCopy)
Catch ex As Exception
Throw ex
End Try
End Sub
End Class
End Namespace