Namespace Rework Public Class HoofdAansturingRework Private _productieData As ZijkamerFreesProductieData Private ReadOnly _productieDatas As New List(Of ZijkamerFreesProductieData) 'TODO Code opkuisen voor rework trays (normale reworks) #Region "Rework tray (normale reworks)" 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 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 Region #Region "Special rework" 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 #End Region ''' ''' Herzagen van het de rework. ''' ''' De rework die zal herzaagt worden. Private Shared 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 Shared 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. HerzaagOnderdeelMetBarcode(rework.barcode) Else 'Voor zijkanten wordt gekeken of het links, rechts, beide of gewoon een zijkant is. 'Waarde ziet er uit als 'ZIJKANT', 'ZIJKANT LI' of 'ZIJKANT LIS' 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 ''' ''' Hulpfunctie voor het herzagen van zijkant reworks. ''' ''' De rework. ''' Type zijkant: L; R; LR ''' Het traynummer. ''' Het slotnummer. Private Shared Sub HerzaagZijkant(rework As Rework, linksOfRechts As String, trayNummer As String, slotNummer As String) Try 'Ophalen van de ArdisData met de barcode. Dim ardisData As ArdisData = ArdisMapper.OphalenData(rework.barcode) 'Controleren of de Ardisdata niet leeg is. If ardisData Is Nothing Then Throw New Exception($"Ardisdata kon niet worden opgevraagd voor zijkant rework met barcode: {rework.barcode}.") End If Dim barcodes As ICollection(Of String) 'Controleren of het een speciaal gegenereerd plankje is. If Not (ardisData.isSpecialGegenereerd()) Then 'Zo neen, de barcodes ophalen aan de hand van de data. barcodes = ArdisMapper.geefBarcodes(ardisData.PartGroup, ardisData.PartExt02, ardisData.PartL, linksOfRechts) Else 'Als het een speciale zijkant is moeten we het corresponderende plankje vinden, aka A of B barcodes = ArdisMapper.geefBarcodeGegenereerdePlankjes(ardisData.PartGroup, ardisData.PartExt02, ardisData.PartL) End If 'Lijst van barcodes controleren. If barcodes Is Nothing AndAlso Not barcodes.Count = 0 Then 'Lijst met barcodes mag niet null of leeg zijn. Throw New Exception("Er is iets foutgelopen bij het ophalen van de barcodes van de zijkanten uit de Ardis databank, Partgroup='{ardisData.PartGroup}', 'PartExt02={ardisData.PartExt02}', PartL='{ardisData.PartL}'.") ElseIf barcodes.Count > 2 Then 'Lijst met barcodes mag niet meer dan twee items bevatten. Throw New Exception($"Er zijn teveel barcodes gevonden bij het ophalen van de barcodes van de zijkanten uit de Ardis databank, Partgroup='{ardisData.PartGroup}', 'PartExt02={ardisData.PartExt02}', PartL='{ardisData.PartL}'.") End If 'Elke barcode overlopen en laten verwerken. For Each barcode In barcodes HerzaagOnderdeelMetBarcode(barcode, trayNummer, slotNummer) Next Catch ex As Exception Throw New Exception($"Kon rework zijkant niet herzagen.{vbNewLine}{ex.Message}") End Try End Sub ''' ''' 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 verwerkt. If Configs.geefVerwerkStatus Then KantenbandMapper.resetOpdracht(barcodeId) End If Catch ex As Exception Throw New Exception($"De opdracht van de rework met barcode '{barcodeId}' kon niet gereset worden in de kantenband.") End Try End Sub ''' ''' Herzagen van een onderdeel aan de hand van een barcode. ''' ''' De barcode van het onderdeel. Private Shared Sub HerzaagOnderdeelMetBarcode(ByVal barcodeId As String) 'Aanroepen functie met lege tray- en slotnummer HerzaagOnderdeelMetBarcode(barcodeId, String.Empty, String.Empty) End Sub ''' ''' Herzagen van een onderdeel aan de hand van een barcode. ''' ''' De barcode van het onderdeel. ''' Het traynummer. ''' Het slotnummer. Private Shared Sub HerzaagOnderdeelMetBarcode(ByVal barcodeId As String, trayNummer As String, slotNummer As String) Try 'Opvragen van de ardisdata met de barcode. Dim ardisData As ArdisData = ArdisMapper.OphalenData(barcodeId) 'Updaten van de data. 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 New Exception($"Kon onderdeel met barcode '{barcodeId}' niet herzagen. {vbNewLine}{ex.Message}") End Try End Sub End Class End Namespace