private void calculate() { produktInfos.clear(); dataShow.clear(); int year1 = year1ChoiceBox.getValue().intValue(); int year2 = year2ChoiceBox.getValue().intValue(); LocalDate von1 = now.withYear(year1).withMonth(1).withDayOfMonth(1); LocalDate bis1 = now.withYear(year1); LocalDate von2 = now.withYear(year2).withMonth(1).withDayOfMonth(1); LocalDate bis2 = now.withYear(year2); List<Auftrag> auftraege = AuftragSession.getAllAuftraege(); List<Auftrag> auftraegeInZeitraum1 = new ArrayList<>(); List<Auftrag> auftraegeInZeitraum2 = new ArrayList<>(); auftraege .stream() .filter(a -> a.getErstellung().isAfter(von1) && a.getErstellung().isBefore(bis1)) .forEach(auftraegeInZeitraum1::add); auftraege .stream() .filter(a -> a.getErstellung().isAfter(von2) && a.getErstellung().isBefore(bis2)) .forEach(auftraegeInZeitraum2::add); if (!kundenChoiceBox.getValue().equals("Alle")) { Kunde k = KundeSession.getKundeByName(kundenChoiceBox.getValue()); List<Auftrag> aKunde1 = new ArrayList<>(); List<Auftrag> aKunde2 = new ArrayList<>(); auftraegeInZeitraum1.stream().filter(a -> a.getKunde().equals(k)).forEach(aKunde1::add); auftraegeInZeitraum2.stream().filter(a -> a.getKunde().equals(k)).forEach(aKunde2::add); auftraegeInZeitraum1 = aKunde1; auftraegeInZeitraum2 = aKunde2; } zeitraumIntoInfos(auftraegeInZeitraum1, 1); zeitraumIntoInfos(auftraegeInZeitraum2, 2); for (JahresvergleichRow ci : produktInfos.values()) { Produkt p = ProduktSession.getProdukt(ci.produktNr.get()); ci.umsatz1.set(Math.round(ci.stuckzahl1.get() * p.getVkPreis() * 100.0) / 100.0); ci.umsatz2.set(Math.round(ci.stuckzahl2.get() * p.getVkPreis() * 100.0) / 100.0); dataShow.add(ci); } }
@FXML private void initialize() { ObservableList<String> kunden = FXCollections.observableArrayList(KundeSession.getAllKundenNamen()); kunden.add(0, "Alle"); kundenChoiceBox.setItems(kunden); kundenChoiceBox.setValue("Alle"); String dm = now.getDayOfMonth() + "." + now.getMonthValue() + "."; day1Label.setText("1.1. - " + dm); day2Label.setText("1.1. - " + dm); List<Auftrag> auftraege = AuftragSession.getAllAuftraege(); auftraege.sort(Comparator.comparing(Auftrag::getErstellung)); LocalDate oldestAuftrag = auftraege.get(0).getErstellung(); ObservableList<Number> years = FXCollections.observableArrayList(); for (int i = now.getYear(); i >= oldestAuftrag.getYear(); i--) { years.add(i); } year1ChoiceBox.setItems(years); year1ChoiceBox.setValue(years.get(1)); year2ChoiceBox.setItems(years); year2ChoiceBox.setValue(years.get(0)); calculate(); pNrColumn.setCellValueFactory(cellData -> cellData.getValue().produktNr); bezColumn.setCellValueFactory(cellData -> cellData.getValue().bezeichnung); bildColumn.setCellValueFactory(cellData -> cellData.getValue().bild); bildColumn.setCellFactory(imageCellFactory); s1Column.setCellValueFactory(cellData -> cellData.getValue().stuckzahl1); u1Column.setCellValueFactory(cellData -> cellData.getValue().umsatz1); s2Column.setCellValueFactory(cellData -> cellData.getValue().stuckzahl2); u2Column.setCellValueFactory(cellData -> cellData.getValue().umsatz2); pInfoTable.setItems(dataShow); kundenChoiceBox.valueProperty().addListener(observable -> calculate()); year1ChoiceBox.valueProperty().addListener(observable -> calculate()); year2ChoiceBox.valueProperty().addListener(observable -> calculate()); }