Imports TA_OR_Rework Imports TA_OR_rework.SpecialLadenRepository Public Class Domeincontroller Private Shared instance As Domeincontroller Private reworkRep As ReworkRepository Private reworkTrayslotRep As ReworkTraySlotRepository Private reworkTrayRep As ReworkTrayRepository Private reworkRedenenRep As ReworkRedenenRepository Private testLadenRep As TestLadenRepository Private hoofdAansturingRework As HoofdAansturingRework Private specialLadenRep As SpecialLadenRepository Private voorraadRepository As VoorraadItemRepository Private stalenRepository As StalenRepository Private Sub New() reworkRep = New ReworkRepository reworkTrayslotRep = New ReworkTraySlotRepository reworkTrayRep = New ReworkTrayRepository reworkRedenenRep = New ReworkRedenenRepository testLadenRep = New TestLadenRepository hoofdAansturingRework = New HoofdAansturingRework specialLadenRep = New SpecialLadenRepository voorraadRepository = New VoorraadItemRepository stalenRepository = New StalenRepository End Sub Public Shared Function getInstance() As Domeincontroller If instance Is Nothing Then instance = New Domeincontroller End If Return instance End Function #Region "reworks" #Region "reworks toevoegen, rework redenen, wijzigen en verwijderen" Public Function geefReworkOnderdeelMachines(ByVal onderdeelNaam As String) As List(Of String) Dim machines As New List(Of String) Try For Each machine As Machine In reworkRedenenRep.geefReworkOnderdeel(onderdeelNaam).Machines machines.Add(machine.Label) Next Catch ex As Exception MessageBox.Show("Er is iets foutgelopen bij het opvragen van de machines voor de reworkRedenen (dc) met onderdeel: " & onderdeelNaam & vbNewLine & ex.Message, "Er is een fout opgetreden...", MessageBoxButtons.OK, MessageBoxIcon.Error) Application.Exit() End Try Return machines End Function 'opvragen van een reworkOnderdeel (wordt gebruikt om reden te selecteren) Public Function geefReworkOnderdeelRedenen(ByVal onderdeelNaam As String, ByVal machineNaam As String) As List(Of String()) Dim redenen As New List(Of String()) Try For Each reden As Reden In reworkRedenenRep.geefMachine(onderdeelNaam, machineNaam).redenen Dim redenCodeEnLabel(1) As String redenCodeEnLabel(0) = reden.Label redenCodeEnLabel(1) = reden.Code redenen.Add(redenCodeEnLabel) Next Catch ex As Exception MessageBox.Show("Er is iets foutgelopen bij het opvragen van de redenen voor de reworkRedenen bij een machine (dc) met onderdeel: " & onderdeelNaam & " en machinenaam: " & machineNaam & vbNewLine & ex.Message, "Er is een fout opgetreden...", MessageBoxButtons.OK, MessageBoxIcon.Error) Application.Exit() End Try Return redenen End Function Public Sub addRework(ByVal barcode As String, ByVal reden() As String, ByVal onderdeel As String, ByVal voorVoorraad As String) reworkRep.addRework(New Rework(barcode, reden, onderdeel, voorVoorraad)) End Sub Public Sub verwijderRework(ByVal barcode As String) If reworkRep.bestaatRework(barcode) Then reworkRep.verwijderRework(reworkRep.geefRework(barcode)) Else Throw New Exception("De rework bestaat niet en kan dus niet worden verwijderd") End If End Sub Public Function geefAantalReworks() As Integer Return reworkRep.aantalReworks End Function Public Function geefReworks() As List(Of String()) Dim reworks As List(Of String()) = New List(Of String()) For Each reworkClass As Rework In reworkRep.getReworks Dim rework(3) As String rework(0) = reworkClass.barcode rework(1) = reworkClass.onderdeel rework(2) = reworkClass.redenLabel rework(3) = reworkClass.opslaanArdis reworks.Add(rework) Next Return reworks End Function Public Function bestaatRework(ByVal barcode As String) Dim gevonden As Boolean = False For Each rework As Rework In reworkRep.getReworks If rework.barcode.Equals(barcode) Then gevonden = True End If Next Return gevonden End Function Public Sub wijzigOpslaanArdisRework(ByVal barcode As String) If reworkRep.bestaatRework(barcode) Then reworkRep.wijzigOpslaanArdis(reworkRep.geefRework(barcode)) Else Throw New Exception("De rework bestaat niet en opslag Ardis kan dus niet worden aangepast") End If End Sub Public Sub verwijderAlleReworks() reworkRep.verwijderAlleReworks() End Sub #End Region #Region "reworks verwerken" Public Sub verwerkReworks() 'de reworks die niet in een van de trays zitten (dus geen zijkant zijn) verwerken For Each rework As Rework In reworkRep.getReworks Dim onderdeel As String = rework.onderdeel.ToLower.Trim Select Case onderdeel Case "front" hoofdAansturingRework.verwerkFront(rework) Case "rug" hoofdAansturingRework.verwerkRug(rework) Case "bodem" hoofdAansturingRework.verwerkBodem(rework) Case Else If Not onderdeel.Contains("zijkant") Then MsgBox($"Tussen de geselecteerde reworks zit een onderdeel waar nog geen productieproces voor is gedefinieerd, gelieve dit aan te passen in de Domeincontroller en HoofdAansturing, het onderdeel in kwestie is: {onderdeel.ToUpper}") End If End Select Next Try 'de reworktrays verwerken en data aanpassen For Each ReworkTray As ReworkTray In reworkTrayRep.reworkTrays hoofdAansturingRework.verwerkTray(ReworkTray) Next Catch ex As Exception reworkTrayRep.verwijderReworkTrays() Throw ex End Try ArdisTextMapper.stopArdisTextOpslag() 'alle reworks hun redenen opslaan in Caché If Configs.geefVerwerkStatus Then reworkRep.slaAlleReworkRedenenOp() End If 'alle reworks verwijderen reworkRep.verwijderAlleReworks() End Sub Public Sub verdeelReworkZijkantenOverReworkTray() If Not (reworkTrayRep.reworkTrays Is Nothing OrElse reworkTrayRep.reworkTrays.Count >= 0) Then reworkTrayRep.verwijderReworkTrays() Throw New Exception("De rework zijkanten waren al verdeeld over de reworktray, nu niet meer.") End If 'de reworks vervolledigen met extra informatie reworkRep.updateAllReworks() Try Dim reworks As List(Of Rework) = reworkRep.getReworks() Dim zijkanten As New List(Of Rework) For Each rework As Rework In reworks If rework.onderdeel.ToUpper.Contains("ZIJKANT") Then zijkanten.Add(rework) End If Next If zijkanten.Count > 0 Then handelZijkantReworkAf(zijkanten) End If For Each reworkTray As ReworkTray In reworkTrayRep.reworkTrays hoofdAansturingRework.updateTray(reworkTray) Next Catch ex As Exception MessageBox.Show("Er is iets foutgelopen bij het verwerken van de zijkantreworks (dc) " & ex.Message, "Er is een fout opgetreden...", MessageBoxButtons.OK, MessageBoxIcon.Error) reworkRep.verwijderAlleReworks() reworkTrayRep.verwijderReworkTrays() End Try End Sub Private Sub handelZijkantReworkAf(ByVal reworkZijkanten As List(Of Rework)) Dim zelfdeBatchEnDossier As New List(Of List(Of Rework)) Dim batch As String = "" Dim dossierCode As String = "" Do While reworkZijkanten.Count >= 1 batch = reworkZijkanten(0).batch dossierCode = reworkZijkanten(0).dossierCode Dim eenBatchEnDossier As New List(Of Rework) eenBatchEnDossier.Add(reworkZijkanten(0)) reworkZijkanten.RemoveAt(0) Dim teller As Integer = 0 Do While teller < reworkZijkanten.Count If reworkZijkanten(teller).batch.Equals(batch) And reworkZijkanten(teller).dossierCode.Equals(dossierCode) Then eenBatchEnDossier.Add(reworkZijkanten(teller)) reworkZijkanten.RemoveAt(teller) Else teller += 1 End If Loop zelfdeBatchEnDossier.Add(eenBatchEnDossier) Loop Dim paren As New List(Of Rework()) Dim enkelen As New List(Of Rework) Do While zelfdeBatchEnDossier.Count > 0 Dim gesplitsteReworksBatchEnDossier As List(Of Rework) = zelfdeBatchEnDossier(0) zelfdeBatchEnDossier.RemoveAt(0) Do While gesplitsteReworksBatchEnDossier.Count > 0 Dim isGevonden As Boolean = False Dim type As String = gesplitsteReworksBatchEnDossier(0).barcode.Substring(5, 1) For Each mogelijkZelfdeType As Rework In gesplitsteReworksBatchEnDossier If Not gesplitsteReworksBatchEnDossier(0).Equals(mogelijkZelfdeType) Then Dim anderType As String = mogelijkZelfdeType.barcode.Substring(5, 1) 'kijken of de types paren vormen, in de twee richtingen If (type.Equals("A") And anderType.Equals("B")) Or (type.Equals("B") And anderType.Equals("A")) Or (type.Equals("L") And anderType.Equals("R")) Or (type.Equals("R") And anderType.Equals("L")) Or (type.Equals("C") And anderType.Equals("D")) Or (type.Equals("D") And anderType.Equals("C")) Or (type.Equals("E") And anderType.Equals("F")) Or (type.Equals("F") And anderType.Equals("E")) Or (type.Equals("A") And anderType.Equals("A")) Or (type.Equals("B") And anderType.Equals("B")) Or (type.Equals("L") And anderType.Equals("L")) Or (type.Equals("R") And anderType.Equals("R")) Or (type.Equals("C") And anderType.Equals("C")) Or (type.Equals("D") And anderType.Equals("D")) Or (type.Equals("E") And anderType.Equals("E")) Or (type.Equals("F") And anderType.Equals("F")) Then Dim paar(1) As Rework paar(0) = gesplitsteReworksBatchEnDossier(0) paar(1) = mogelijkZelfdeType paren.Add(paar) gesplitsteReworksBatchEnDossier.Remove(gesplitsteReworksBatchEnDossier(0)) gesplitsteReworksBatchEnDossier.Remove(mogelijkZelfdeType) isGevonden = True Exit For End If End If If gesplitsteReworksBatchEnDossier.Count <= 0 Then Exit For End If Next If Not isGevonden Then enkelen.Add(gesplitsteReworksBatchEnDossier(0)) gesplitsteReworksBatchEnDossier.RemoveAt(0) End If Loop Loop verdeelParenEnEnkeleOverTrays(paren, enkelen) End Sub Dim traynummer As Integer = 0 Private Sub verdeelParenEnEnkeleOverTrays(ByVal paren As List(Of Rework()), ByVal enkel As List(Of Rework)) Do While paren.Count > 0 Or enkel.Count > 0 Dim reworkTray As ReworkTray = New ReworkTray(reworkTrayslotRep.slots) Do While paren.Count > 0 If Not reworkTray.parenVol Then reworkTray.voegPaarToe(paren(0)) paren.RemoveAt(0) Else Exit Do End If Loop Do While enkel.Count > 0 If Not reworkTray.enkelVol Then reworkTray.voegEnkelToe(enkel(0)) enkel.RemoveAt(0) Else Exit Do End If Loop reworkTrayRep.addReworkTray(reworkTray) Loop End Sub #End Region #End Region #Region "opvragen info rework trays en verwijderen" Public Function geefTypeInReworkTray() As ItemType If voorraadRepository.zijnErVoorraadItems Then Return ItemType.VOORRAAD End If If specialLadenRep.zijnErSpecialLaden Then Return specialLadenRep.typeLade End If If reworkRep.aantalReworks > 0 Or reworkTrayRep.aantalReworkTrays > 0 Then Return ItemType.REWORK End If If _gekozenZijkanten.Count > 0 Then Return ItemType.TESTLADE End If Throw New Exception("Type in rework tray is niet gedefinieerd") End Function Public Function geefAantalReworkTrays() As Integer Return reworkTrayRep.aantalReworkTrays() End Function Public Function geefReworkTrayNummer(index As Integer) As String Return reworkTrayRep.geefReworkTrayNummer(index) End Function 'inhoud van alle slots van een reworktray geven Public Function geefSlotsReworkTray(index As Integer) As List(Of List(Of String)) Dim trays As New List(Of List(Of String)) Try ' For Each slot As Slot In reworktrayRep.reworkTrays(0).geefNietLegeSlots() For teller As Integer = 0 To reworkTrayRep.reworkTrays(index).slots.Count - 1 Dim slot As Slot = reworkTrayRep.reworkTrays(index).slots(teller) Dim content As New List(Of String) If Not (slot.zijkanten Is Nothing OrElse slot.zijkanten.Count <= 0) Then content.Add(slot.nummer) content.Add(slot.zijkanten(0).barcode) content.Add(slot.zijkanten(0).batch) content.Add(slot.zijkanten(0).color) content.Add(slot.zijkanten(0).length) content.Add(slot.zijkanten(0).height) Else 'de cijfers toch meegeven, maar gewoon geen andere informatie meegeven content.Add(teller + 1) content.Add("") content.Add("") content.Add("") content.Add("") content.Add("") End If trays.Add(content) Next Return trays Catch ex As Exception MessageBox.Show("Er is een fout opgetreden bij het opvragen van een reworktray (dc)" & ex.Message, "Er is een fout opgetreden...", MessageBoxButtons.OK, MessageBoxIcon.Error) Return Nothing End Try End Function 'verwijderen van alle reworkTrays Public Sub verwijderReworkTrays() _gekozenZijkanten.Clear() reworkTrayRep.verwijderReworkTraysSpecialLade() reworkTrayRep.verwijderReworkTrays() End Sub #Region "special laden rework trays" Function geefSpecialAantalReworkTrays() As Integer Return reworkTrayRep.aantalReworkTraysSpecial End Function Public Function geefSpecialLadeReworkTrayNummer(index As Integer) As String Return reworkTrayRep.geefSpecialLadeReworkTrayNummer(index) End Function 'inhoud van alle slots van een reworktray geven Public Function geefSlotsSpecialReworkTray(index As Integer) As List(Of List(Of String)) Dim trays As New List(Of List(Of String)) Try For teller As Integer = 0 To reworkTrayRep.reworkTraysSpecialLaden(index).slots.Count - 1 Dim slot As Slot = reworkTrayRep.reworkTraysSpecialLaden(index).slots(teller) Dim content As New List(Of String) If Not (slot.zijkantenSpeciaal Is Nothing OrElse slot.zijkantenSpeciaal.Count <= 0) Then 'voorraad content.Add(slot.nummer) content.Add(slot.zijkantenSpeciaal(0).PartCalc) content.Add(slot.zijkantenSpeciaal(0).geefBatch) If slot.zijkantenSpeciaal.Count = 4 Then 'voorraad content.Add(slot.zijkantenSpeciaal(0).geefColorDubbelVoorraad(slot.zijkantenSpeciaal(1), slot.zijkantenSpeciaal(2), slot.zijkantenSpeciaal(3))) ElseIf slot.type = SlotType.enkel Then 'voorraad met 1 zijkant content.Add(slot.zijkantenSpeciaal(0).geefColorEnkel(slot.zijkantenSpeciaal(1))) Else content.Add(slot.zijkantenSpeciaal(0).geefColorDubbel(slot.zijkantenSpeciaal(1))) End If content.Add(slot.zijkantenSpeciaal(0).PartL) content.Add(slot.zijkantenSpeciaal(0).PartW) Else 'leeg slot 'de cijfers wel, maar gewoon geen andere informatie meegeven content.Add(teller + 1) content.Add("") content.Add("") content.Add("") content.Add("") content.Add("") End If trays.Add(content) Next Return trays Catch ex As Exception MessageBox.Show("Er is een fout opgetreden bij het opvragen van een special lade reworktray" & ex.Message, "Er is een fout opgetreden...", MessageBoxButtons.OK, MessageBoxIcon.Error) Return Nothing End Try End Function #End Region #End Region #Region "labels" 'geven van de data die op een ticket komt Public Function geefLabelData(barcode As String) As String() Try Dim ardisData As ArdisData = ArdisMapper.OphalenData(barcode) If ardisData Is Nothing Then Throw New Exception("Er is iets foutgelopen bij het ophalen van de ArdisData met een barcode, de barcode heeft geen resultaat opgeleverd in Ardis") End If Dim retourString(4) As String retourString(0) = ardisData.PartCalc retourString(1) = ardisData.PartExt01 retourString(2) = ardisData.PartExt02 retourString(3) = ardisData.PartExt03 retourString(4) = ardisData.PartExt04 Return retourString Catch ex As Exception Throw ex End Try End Function Public Function geefLabelTemplates() As List(Of String) Return Configs.templateNamen End Function Public Function geefLabelPrinters() As List(Of String) Return Configs.printerNamen End Function 'het ticket aan de mapper geven met de eventueel aangepaste data Public Sub schrijfLabel(ByVal partCalc As String, ByVal partExt1 As String, ByVal partExt2 As String, ByVal partExt3 As String, ByVal partExt4 As String, ByVal template As String, ByVal printer As String) If Not (template Is Nothing OrElse template.Equals("") OrElse printer Is Nothing OrElse printer.Equals("")) Then BartenderTextMapper.writeToFile(partCalc, partExt1, partExt2, partExt3, partExt4, Configs.geefTemplateData(template), Configs.geefPrinterData(printer)) Else MessageBox.Show("Ongeldige template of printer ingesteld bij het schrijven van een label", "Er is een fout opgetreden...", MessageBoxButtons.OK, MessageBoxIcon.Error) End If End Sub #End Region #Region "testladen" 'opvragen van een lijst van alle test laden namen Public Function geefTestLadeNamen() As List(Of String) Return testLadenRep.geefTestLadeNamen End Function Public Sub selecteerTestLade(naam As String) testLadenRep.selecteerTestLade(naam) End Sub 'opvragen van de testladen Public Function geefTestLadeInfo() As List(Of String) Dim testLadeInfo As New List(Of String) Dim lade As TestLade = testLadenRep.geefTestLade() testLadeInfo.Add(lade.Label) testLadeInfo.Add(lade.AantalKeer) testLadeInfo.Add(testLadenRep.testLadeBevatZijkant()) testLadeInfo.Add(testLadenRep.testLadeBevatFront()) testLadeInfo.Add(testLadenRep.testLadeBevatRug()) testLadeInfo.Add(testLadenRep.testLadeBevatBodem()) testLadeInfo.Add(lade.WordtVerdeeldOverReworkTray) Return testLadeInfo End Function 'updaten van de informatie van de testladen en eventueel verwerken Private _gekozenZijkanten As New List(Of OnderdeelTestLade) Private _gekozenOnderdelen As New List(Of List(Of OnderdeelTestLade)) Private _wordtVerdeeldOverReworkTray As Boolean Public Sub updateEnVerdeelTestLade(aantalKeer As Integer, onderdelenKeuzes As Boolean(), wordtVerdeeldOverReworkTray As Boolean) _wordtVerdeeldOverReworkTray = wordtVerdeeldOverReworkTray Dim lade As TestLade = testLadenRep.geefTestLade() 'De geselecteerde onderdelen eruit halen Dim gekozenOnderdeelNamen As List(Of String) = testLadenRep.geefGekozenOnderdelen(onderdelenKeuzes) _gekozenOnderdelen = lade.geefLijstVanOnderdelenDoorAantal(gekozenOnderdeelNamen, aantalKeer) Dim zijkanten As New List(Of ArdisData) For Each onderdelenVanTestladeGroep As List(Of OnderdeelTestLade) In _gekozenOnderdelen 'sleutels worden hermaakt per testlade Dim sleutels As List(Of Sleutel) = lade.genereerSleutels() For Each onderdeel As OnderdeelTestLade In onderdelenVanTestladeGroep 'we geven nu nog het default traynummer mee, ook voor demoladen, kan nadien nog worden overschreven onderdeel.updateOnderdeel(sleutels, lade.TrayNummer) 'zijkanten worden over rework tray verdeeld If wordtVerdeeldOverReworkTray And onderdeel.Label.ToLower.Equals("zijkant") Then zijkanten.AddRange(onderdeel.MachinesArdis) _gekozenZijkanten.Add(onderdeel) End If Next Next If zijkanten.Count > 0 Then voegReworkTraysSpecialLadeToe(zijkanten) End If End Sub Public Sub verwerkTestLaden() Try For Each lade As List(Of OnderdeelTestLade) In _gekozenOnderdelen HoofdAansturingTestLade.verwerkTestLade(lade, _wordtVerdeeldOverReworkTray) Next If reworkTrayRep.aantalReworkTraysSpecial > 0 Then testLadeVerwerkZijkantOnderdeel() End If _gekozenOnderdelen.Clear() ArdisTextMapper.stopArdisTextOpslag() Catch ex As Exception Throw New Exception("Kon test laden niet verwerken" & vbNewLine & ex.Message) Finally ArdisTextMapper.stopArdisTextOpslag() End Try End Sub Private Sub testLadeVerwerkZijkantOnderdeel() Try For Each onderdeel As OnderdeelTestLade In _gekozenZijkanten 'updaten met de juiste info van de rework trays If onderdeel.MachinesArdis Is Nothing OrElse onderdeel.MachinesArdis.Count <= 0 Then Throw New Exception("Er zijn geen machines ardis aanwezig en kan dus barcode voor tray niet opvragen") End If Dim trayEnSlotNummer As String() = reworkTrayRep.geefReworkTrayEnSlotNummerBijBarcode(onderdeel.MachinesArdis(0).PartCalc) If trayEnSlotNummer Is Nothing Then Throw New Exception("Kon tray -en slotnummer niet opvragen bij barcode: '" & onderdeel.MachinesArdis(0).PartCalc & "'") End If For Each zijkamerFreesProductieData As ZijkamerFreesProductieData In onderdeel.MachinesZijkantfrees zijkamerFreesProductieData.testLadeUpdateTrayEnSlotNummer(trayEnSlotNummer(0), trayEnSlotNummer(1)) Next HoofdAansturingTestLade.verwerkTestOnderdeel(onderdeel) Next Catch ex As Exception Throw New Exception("Kon zijkant onderdeel niet verwerken" & vbNewLine & ex.Message) End Try End Sub #End Region #Region "special laden" 'kiezen van de special laden Public Sub kiesSpecialLaden(code As String, type As ItemType) specialLadenRep.kiesSpecialLaden(code, type) End Sub 'opvragen van het type special lade dat is gekozen Public Function geefTypeSpecialLade() As ItemType If voorraadRepository.zijnErVoorraadItems Then Return ItemType.VOORRAAD End If Return specialLadenRep.typeLade End Function 'opvragen van alle onderdelen van een special lade met de bijhorende barcodes Public Function geefSpecialLadenOnderdelenEnBarcodes() As List(Of String()) Dim specialLadenOnderdelenEnBarcodes As New List(Of String()) For Each specialLade As SpecialLade In specialLadenRep.specialLaden specialLadenOnderdelenEnBarcodes.AddRange(specialLade.geefOnderdelenEnBarcodes) Next Return specialLadenOnderdelenEnBarcodes End Function 'opvragen van aantal special laden Public Function geefAantalSpecialLaden() As Integer Return specialLadenRep.aantalSpecialLaden End Function 'kijken of er special laden er in het bestand zitten Public Function heeftNogExtraSpecialLaden() As Boolean Return specialLadenRep.zijnErNogExtraSpecialLaden() End Function 'verdelen van de special laden over de rework trays, waar mogelijk Public Sub verdeelOverReworkTrays() Dim typeLade As ItemType = specialLadenRep.typeLade If Not specialLadenRep.zijnErSpecialLaden Then If voorraadRepository.zijnErVoorraadItems Then typeLade = ItemType.VOORRAAD Else Throw New Exception("Er zijn geen special laden voor verwerking aanwezig") End If End If Try Select Case typeLade Case ItemType.VOORRAAD For Each voorraadItem As VoorraadItem In voorraadRepository.voorraadItems voorraadItem.genereerZijkantArdisData() Next verdeelVoorraadItemsOverTrays() For Each voorraadItem As VoorraadItem In voorraadRepository.voorraadItems voorraadItem.genereerZijkantAutomillingData() voorraadItem.genereerZijkantKantenbandDatas() Next Case ItemType.SIFONLADE specialLadenRep.updateDataSpecialLaden() 'de extra zijkanten en ruggen toevoegen specialLadenRep.maakExtraOnderdelenSifonLaden() 'de etiketlijnen updaten specialLadenRep.updateEtiketLijnSifonLaden() verdeelSifonLadenOverReworkTrays() Case ItemType.DUBBELESIFONLADE specialLadenRep.updateDataSpecialLaden() 'de extra zijkanten en ruggen toevoegen specialLadenRep.maakExtraOnderdelenSpoelbakLaden() 'de etiketlijnen updaten specialLadenRep.updateEtiketLijnSpoelbakLaden() verdeelSpoelbakLadenOverReworkTrays() Case Else specialLadenRep.verwijderSpecialLaden() reworkTrayRep.verwijderReworkTraysSpecialLade() Throw New Exception("Type '" & EnumMapper.GeefTekstVanEnumOptie(specialLadenRep.typeLade) & "' kan niet verdeeld worden over rework trays") End Select Catch ex As Exception specialLadenRep.verwijderSpecialLaden() reworkTrayRep.verwijderReworkTraysSpecialLade() Throw New Exception("De special laden konden niet worden verdeeld over rework trays" & vbNewLine & ex.Message) End Try End Sub 'verwerken van alle mogelijke special laden Public Sub verwerkSpecialLaden() Dim typeLade As ItemType = specialLadenRep.typeLade If Not specialLadenRep.zijnErSpecialLaden Then If voorraadRepository.zijnErVoorraadItems Then typeLade = ItemType.VOORRAAD Else Throw New Exception("Er zijn geen special laden voor verwerking aanwezig") End If End If Try Select Case typeLade Case ItemType.VOORRAAD slaVoorraadItemsOp() Case ItemType.DIEPEREZIJKANT specialLadenRep.updateDataSpecialLaden() slaSpecialLadenDiepereZijkantOp() specialLadenRep.verwijderSpecialLaden() Case ItemType.HOGEREZIJKANT specialLadenRep.updateDataSpecialLaden() slaSpecialLadenHogereZijkantOp() specialLadenRep.verwijderSpecialLaden() Case ItemType.NIEUWEKLEUR specialLadenRep.updateDataSpecialLaden() slaSpecialLadenNieuweKleurOp() specialLadenRep.verwijderSpecialLaden() Case ItemType.SIFONLADE slaSifonLadenOp() Case ItemType.DUBBELESIFONLADE slaSpoelbakLadenOp() Case ItemType.GEEN specialLadenRep.verwijderSpecialLaden() reworkTrayRep.verwijderReworkTraysSpecialLade() Throw New Exception("Er zijn geen special laden om te verwerken") Case Else specialLadenRep.verwijderSpecialLaden() reworkTrayRep.verwijderReworkTraysSpecialLade() Throw New Exception("Type '" & EnumMapper.GeefTekstVanEnumOptie(specialLadenRep.typeLade) & "' heeft geen verwerking") End Select Catch ex As Exception Throw New Exception("De special laden konden niet worden verwerkt" & vbNewLine & ex.Message) End Try ArdisTextMapper.stopArdisTextOpslag() End Sub 'verwijderen van alle special laden Public Sub verwijderAlleSpecialLaden() specialLadenRep.verwijderSpecialLaden() End Sub #Region "specialLadeDiepereZijkant" 'informatie opvragen over de special lade diepere zijkant Public Function geefInformatieSpecialLadeDiepereZijkant() As List(Of String) Dim specialLade As SpecialLadeDiepereZijkant = specialLadenRep.geefSpecialLadeDiepereZijkant(0) Dim informatie As New List(Of String) informatie.Add(specialLadenRep.bestandsNaam) informatie.Add(specialLade.geefBatch) 'batch ID informatie.Add(specialLade.geefOrigineleBarcodeDeel) Return informatie End Function 'waarden instellen voor de specialLadeDiepereZijkant Public Sub specialLadeDiepereZijkantStelWaardenIn(diepteVerschil As Integer, barcodeDeel As String) specialLadenRep.specialLadeDiepereZijkantStelDiepteVerschilIn(diepteVerschil) specialLadenRep.specialLadeDiepereZijkantStelBarcodeDeelIn(barcodeDeel) End Sub Private Sub slaSpecialLadenDiepereZijkantOp() Dim hoofdAansturing As HoofdAansturingSpecialLade = New HoofdAansturingSpecialLadeDiepereZijkant For Each specialLade In specialLadenRep.specialLaden hoofdAansturing.verwerkenSpecialLade(specialLade) Next End Sub #End Region #Region "specialLadeHogereZijkant" 'informatie opvragen over de special lade hogere zijkant Public Function geefInformatieSpecialLadeHogereZijkant() As List(Of String) Dim specialLade As SpecialLade = specialLadenRep.specialLaden(0) Dim informatie As New List(Of String) informatie.Add(specialLadenRep.bestandsNaam) informatie.Add(specialLade.geefBatch) 'batch ID Return informatie End Function 'waarden instellen voor de specialLadeHogereZijkant Public Sub specialLadeHogereZijkantStelWaardenIn(nieuweHoogteLetter As String, automillingProgrammaLetter As String) specialLadenRep.specialLadeHogereZijkantStelNieuweHoogteLetterIn(nieuweHoogteLetter) specialLadenRep.specialLadeHogereZijkantStelAutomillingProgrammaLetterIn(automillingProgrammaLetter) End Sub Private Sub slaSpecialLadenHogereZijkantOp() Dim hoofdAansturing As HoofdAansturingSpecialLade = New HoofdAansturingSpecialLadeHogereZijkant For Each specialLade In specialLadenRep.specialLaden hoofdAansturing.verwerkenSpecialLade(specialLade) Next End Sub #End Region #Region "specialLadeNieuweKleur" Public Function geefSpecialLadeNieuweKleurTeVervangenKleuren() As List(Of String) Return specialLadenRep.geefKleurenSpecialLadenOnderdelen() End Function 'informatie opvragen over de special lade nieuwe kleur Public Function geefInformatieSpecialLadeNieuweKleur() As List(Of String) Dim informatie As New List(Of String) informatie.Add(specialLadenRep.bestandsNaam) Return informatie End Function 'waarden instellen voor de specialLadeNieuweKleur Public Sub specialLadeNieuweKleurStelWaardenIn(teVervangenKleur As String, nieuweKleur As String, kantenbandKleur As String) specialLadenRep.specialLadeNieuweKleurStelTeVervangenKleurIn(teVervangenKleur) specialLadenRep.specialLadeNieuweKleurStelNieuweKleurIn(nieuweKleur) specialLadenRep.specialLadeNieuweKleurStelKantenbandKleurIn(kantenbandKleur) End Sub Private Sub slaSpecialLadenNieuweKleurOp() Dim hoofdAansturing As HoofdAansturingSpecialLade = New HoofdAansturingSpecialLadeNieuweKleur For Each specialLade In specialLadenRep.specialLaden hoofdAansturing.verwerkenSpecialLade(specialLade) Next End Sub #End Region #Region "sifonLade" 'informatie opvragen over de sifonLade Public Function GeefInformatieSifonLade() As List(Of String) Dim sifonLade As SifonLade = specialLadenRep.geefSifonLade(0) Dim informatie As New List(Of String) informatie.Add(specialLadenRep.bestandsNaam) informatie.Add(sifonLade.geefLW) 'lade width informatie.Add(sifonLade.geefNLLade) 'nominale lengte informatie.Add(sifonLade.geefKleurBinnen) 'kleur binnen informatie.Add(sifonLade.geefBatch) 'batch ID informatie.Add(sifonLade.geefBreedte) 'breedte informatie.Add(sifonLade.geefBreedteSifonUitsparing) 'breedte uitsparing informatie.Add(sifonLade.geefDiepte) 'diepte informatie.Add(sifonLade.geefDiepteSifon) 'diepte van de sifon informatie.Add(sifonLade.geefPositieUitsparingSifon) 'positie uitsparing sifon informatie.Add(sifonLade.geefRestTekening) 'rest breedte Return informatie End Function Private Sub verdeelSifonLadenOverReworkTrays() Dim zijkanten As New List(Of ArdisData) For Each sifonLade In specialLadenRep.sifonLaden 'zijkanten zijkanten.AddRange(sifonLade.zijkanten) Next 'special rework trays laten verwerken voegReworkTraysSpecialLadeToe(zijkanten) End Sub Private Sub slaSifonLadenOp() Dim hoofdAansturingSifonLade As HoofdAansturingSpecialLade = New HoofdAansturingSifonLade(reworkTrayRep) hoofdAansturingSifonLade.verwerkenSpecialLadeMetTrays(specialLadenRep.sifonLaden) End Sub 'verplaatsen van de sifon laden uit het bestand naar de directory meegegeven in het config bestand en de niet verwerkte in het bestand terug zetten Public Sub verplaatsVerwerkteSifonLaden() Try Dim bestandsNaam As String = specialLadenRep.bestandsNaam For Each sifonLade In specialLadenRep.sifonLaden 'alle onderdelen afgaan 'zijkanten For Each zijkant As ArdisData In sifonLade.zijkanten ArdisTextMapper.opslaanSifonLadeVoorVerwerking(zijkant, bestandsNaam) Next 'rug ArdisTextMapper.opslaanSifonLadeVoorVerwerking(sifonLade.rug, bestandsNaam) 'bodem ArdisTextMapper.opslaanSifonLadeVoorVerwerking(sifonLade.bodem, bestandsNaam) Next ArdisTextMapper.stopArdisTextOpslag() Catch ex As Exception Throw New Exception("Er is iets foutgelopen bij het verplaatsen van het uitgelezen sifonLade bestand naar een andere folder" & vbNewLine & ex.Message) End Try End Sub #End Region #Region "spoelbakLade" 'waarden instellen voor de spoelbak lade Public Sub spoelbakLadeStelPositieIn(positie As Double) specialLadenRep.spoelbakLadeStelPositieIn(positie) End Sub Public Sub spoelbakLadeStelBreedteIn(breedte As Double) specialLadenRep.spoelbakLadeStelBreedteIn(breedte) End Sub 'informatie opvragen over de spoelbakLade Function geefInformatieSpoelbakLade() As List(Of String) Dim spoelbakLade As SpoelbakLade = specialLadenRep.geefSpoelbakLade(0) Dim informatie As New List(Of String) informatie.Add(specialLadenRep.bestandsNaam) informatie.Add(spoelbakLade.geefLW) 'lade width informatie.Add(spoelbakLade.geefNLLade) 'nominale lengte informatie.Add(spoelbakLade.geefKleurBinnen) 'kleur binnen informatie.Add(spoelbakLade.geefBatch) 'batch ID informatie.Add(spoelbakLade.geefBreedte) 'breedte informatie.Add(spoelbakLade.geefBreedteSpoelbakUitsparing) 'breedte uitsparing informatie.Add(spoelbakLade.geefDiepte) 'diepte informatie.Add(spoelbakLade.geefDiepteSpoelbak) 'diepte uitsparing informatie.Add(spoelbakLade.positieSpoelbak) 'positie spoelbak informatie.Add(spoelbakLade.geefRestBreedte) 'rest breedte Return informatie End Function Public Sub spoelbakLadeStelInitiëlePositieIn() specialLadenRep.spoelbakLadeStelInitiëlePositieIn() End Sub Function geefNuttigeRuimteZijvakkenSpoelbak() As Double Return specialLadenRep.geefNuttigeRuimteZijvakkenSpoelbakVanSpoelbakLaden() End Function Function geefPositieUitsparingSpoelbak() As Double Return specialLadenRep.geefPositieSpoelbakVanSpoelbakLaden End Function Private Sub verdeelSpoelbakLadenOverReworkTrays() Dim zijkanten As New List(Of ArdisData) For Each spoelbakLade In specialLadenRep.spoelbakLaden 'zijkanten zijkanten.AddRange(spoelbakLade.zijkanten) Next 'de zijkanten en de special rework trays laten verwerken voegReworkTraysSpecialLadeToe(zijkanten) End Sub Private Sub slaSpoelbakLadenOp() Dim hoofdAansturingSpoelbakLade As HoofdAansturingSpecialLade = New HoofdAansturingSpoelbakLade(reworkTrayRep) hoofdAansturingSpoelbakLade.verwerkenSpecialLadeMetTrays(specialLadenRep.spoelbakLaden) End Sub 'verplaatsen van de spoelbak laden uit het bestand naar de directory meegegeven in het config bestand en de niet verwerkte in het bestand terug zetten Public Sub verplaatsVerwerkteSpoelbakLaden() Try Dim bestandsNaam As String = specialLadenRep.bestandsNaam For Each spoelbakLade In specialLadenRep.spoelbakLaden 'alle onderdelen afgaan 'zijkanten For Each zijkant As ArdisData In spoelbakLade.zijkanten ArdisTextMapper.opslaanSpoelbakLadeVoorVerwerking(zijkant, bestandsNaam) Next 'rug ArdisTextMapper.opslaanSpoelbakLadeVoorVerwerking(spoelbakLade.rug, bestandsNaam) 'bodem ArdisTextMapper.opslaanSpoelbakLadeVoorVerwerking(spoelbakLade.bodem, bestandsNaam) Next ArdisTextMapper.stopArdisTextOpslag() Catch ex As Exception Throw New Exception("Er is iets foutgelopen bij het verplaatsen van het uitgelezen sifonLade bestand naar een andere folder" & vbNewLine & ex.Message) End Try End Sub #End Region Private Sub voegReworkTraysSpecialLadeToe(ByVal zijkanten As List(Of ArdisData)) Dim zijkantenList As New List(Of ArdisData) zijkantenList.AddRange(zijkanten) '4 plankjes worden 2 plankjes in 1 slot Do While zijkantenList.Count > 0 Dim reworkTray As New ReworkTray(reworkTrayslotRep.slots) Do While zijkantenList.Count > 0 If Not reworkTray.parenVol Then 'twee plankjes, de originelen Dim paarOriginelen As New List(Of ArdisData) paarOriginelen.Add(zijkantenList(0)) paarOriginelen.Add(zijkantenList(2)) reworkTray.voegPaarToe(paarOriginelen) zijkantenList.RemoveRange(0, 4) Else Exit Do End If Loop reworkTrayRep.addReworkTraySpecialLade(reworkTray) Loop End Sub Public Sub verwijderSpecialLadenBestand() Dim bestandsNaam As String = specialLadenRep.bestandsNaam ArdisTextMapper.verwijderSpecialLadenBestand(bestandsNaam) ArdisTextMapper.stopArdisTextOpslag() End Sub Public Sub opslaanNietVerwerkteSpecialLaden() Dim bestandsNaam As String = specialLadenRep.bestandsNaam ArdisTextMapper.opslaanNietVerwerkteSpecialLaden(specialLadenRep.nietVerwerkteSpecialLadenLijnen, bestandsNaam) ArdisTextMapper.stopArdisTextOpslag() End Sub #End Region #Region "voorraad" Public Function geefVoorraadDieptes() As List(Of String) Return voorraadRepository.dieptes End Function Public Function geefVoorraadHoogtes() As List(Of String) Return voorraadRepository.hoogtes End Function Public Function geefVoorraadKleuren() As List(Of String) Return voorraadRepository.kleuren End Function Public Sub voegVoorraadItemToe(label As String, linksOfRechts As LinksOfRechts, diepte As String, hoogte As String, kantenband As String, kleurBinnen As String, kleurBuiten As String) Dim voorraadItem As VoorraadItem = New VoorraadItem(label, linksOfRechts, diepte, hoogte, kantenband, kleurBinnen, kleurBuiten) voorraadRepository.voegVoorraadItemToe(voorraadItem) End Sub Public Function geefVoorraadItems() As IEnumerable(Of IVoorraadItem) Return voorraadRepository.voorraadItems() End Function Public Sub verwijderVoorraadItem(voorraadItem As IVoorraadItem) If voorraadRepository.voorraadItems.Count <= 0 Then Throw New Exception("Voorraad item kan niet worden verwijderd als er geen voorraad items aanwezig zijn") End If voorraadRepository.verwijderVoorraadItem(voorraadItem) End Sub Public Sub verwijderVolledigeVoorraad() voorraadRepository.verwijderVolledigeVoorraad() End Sub Private Sub verdeelVoorraadItemsOverTrays() Dim voorraadItems As List(Of VoorraadItem) = voorraadRepository.voorraadItems Dim paren As List(Of VoorraadItem()) = New List(Of VoorraadItem()) Dim enkele As List(Of VoorraadItem) = New List(Of VoorraadItem) Dim gevonden As Boolean = False Do While voorraadItems.Count > 0 gevonden = False Dim templateToCheck As VoorraadItem = voorraadItems(0) 'eerste van de lijst voorraadItems.RemoveAt(0) For index As Integer = 0 To voorraadItems.Count - 1 'waarden controleren Dim instanceToCheck As VoorraadItem = voorraadItems(index) If (templateToCheck.diepte.Equals(instanceToCheck.diepte)) And (templateToCheck.hoogte.Equals(instanceToCheck.hoogte)) Then templateToCheck.partnerInSlot = instanceToCheck instanceToCheck.partnerInSlot = templateToCheck instanceToCheck.isTweedeVanPaar = True paren.Add({templateToCheck, instanceToCheck}) voorraadItems.RemoveAt(index) gevonden = True Exit For End If Next If Not gevonden Then enkele.Add(templateToCheck) End If Loop Do While paren.Count > 0 Or enkele.Count > 0 Dim reworkTray As New ReworkTray(reworkTrayslotRep.slots) Do While paren.Count > 0 If Not reworkTray.parenVol Then Dim paar As VoorraadItem() = paren(0) Dim zijkanten As New List(Of ArdisData) zijkanten.Add(paar(0).zijkantArdisDatas()(0)) 'eerste plankje nemen van de zijkant van de eerste van het paar zijkanten.Add(paar(0).zijkantArdisDatas()(1)) 'tweede plankje nemen van de zijkant van de eerste van het paar zijkanten.Add(paar(1).zijkantArdisDatas()(0)) 'eerste plankje nemen van de zijkant van de tweede van het paar zijkanten.Add(paar(1).zijkantArdisDatas()(1)) 'tweede plankje nemen van de zijkant van de tweede van het paar reworkTray.voegPaarToe(zijkanten) paren.RemoveAt(0) Else Exit Do End If Loop Do While enkele.Count > 0 If Not reworkTray.enkelVol Then Dim enkel As VoorraadItem = enkele(0) Dim zijkanten As New List(Of ArdisData) zijkanten.Add(enkel.zijkantArdisDatas()(0)) zijkanten.Add(enkel.zijkantArdisDatas()(1)) 'eerste plankje nemen van de zijkant reworkTray.voegEnkelToe(zijkanten) enkele.RemoveAt(0) Else Exit Do End If Loop reworkTrayRep.addReworkTraySpecialLade(reworkTray) Loop End Sub Private Sub slaVoorraadItemsOp() For Each voorraadItem As VoorraadItem In voorraadRepository.voorraadItems HoofdAansturingVoorraad.opslaanVoorraadItem(voorraadItem) Next End Sub #End Region #Region "stalen" Public Function geefStaalKleuren() As List(Of String) Return stalenRepository.staalKleuren End Function Public Function geefStaalLabels(kleur As String) As List(Of String) Return stalenRepository.geefStaalLabels(kleur) End Function Public Sub maakStalen(ByVal kleur As String, ByVal label As String, ByVal aantal As Integer) Dim staal As ArdisData = stalenRepository.geefStaal(kleur, label) If staal Is Nothing Then Throw New Exception("Geen staal gevonden met deze informatie, kleur, label: " & kleur & "," & label) End If If Configs.geefVerwerkStatus Then stalenRepository.maakStalen(staal, aantal) End If End Sub #End Region End Class