#27 Kuljetustyyppi raporteille

Ominaisuus muodollisesti valmis, vaatii vielä testausta

Signed-off-by: laurimaaninka <lauri.maaninka@gmail.com>
This commit is contained in:
2026-05-30 01:31:34 +03:00
parent 853bda3a4b
commit 7fa2ccfd25
4 changed files with 38 additions and 22 deletions
@@ -1,7 +1,6 @@
package fi.lpam.dataluokat; package fi.lpam.dataluokat;
import fi.lpam.gui.virheDialogit.SiirtoVirhe; import fi.lpam.gui.virheDialogit.SiirtoVirhe;
import org.apache.commons.lang3.NotImplementedException;
import java.sql.*; import java.sql.*;
import java.time.DayOfWeek; import java.time.DayOfWeek;
@@ -353,22 +352,22 @@ public class Asiakas implements TietokantaOlio {
public int getKuljetuksenSalaatit(LocalDate päivä, Kuljetus.Tyyppi tyyppi) { public int getKuljetuksenSalaatit(LocalDate päivä, Kuljetus.Tyyppi tyyppi) {
return switch (tyyppi) { return switch (tyyppi) {
case Kuljetus.Tyyppi.LOUNAS -> getLounasKuljetusKerroin(päivä) * getSalaatit(); case Kuljetus.Tyyppi.Lounas -> getLounasKuljetusKerroin(päivä) * getSalaatit();
case Kuljetus.Tyyppi.PÄIVÄLLINEN -> getPäivällisKuljetusKerroin(päivä) * getDinnerSalaatit(); case Kuljetus.Tyyppi.Päivällinen -> getPäivällisKuljetusKerroin(päivä) * getDinnerSalaatit();
}; };
} }
public int getKuljetuksenPääruoat(LocalDate päivä, Kuljetus.Tyyppi tyyppi) { public int getKuljetuksenPääruoat(LocalDate päivä, Kuljetus.Tyyppi tyyppi) {
return switch (tyyppi) { return switch (tyyppi) {
case Kuljetus.Tyyppi.LOUNAS -> getLounasKuljetusKerroin(päivä) * getPääruoat(); case Kuljetus.Tyyppi.Lounas -> getLounasKuljetusKerroin(päivä) * getPääruoat();
case Kuljetus.Tyyppi.PÄIVÄLLINEN -> getPäivällisKuljetusKerroin(päivä) * getDinnerPääruoat(); case Kuljetus.Tyyppi.Päivällinen -> getPäivällisKuljetusKerroin(päivä) * getDinnerPääruoat();
}; };
} }
public int getKuljetuksenJälkiruoat(LocalDate päivä, Kuljetus.Tyyppi tyyppi) { public int getKuljetuksenJälkiruoat(LocalDate päivä, Kuljetus.Tyyppi tyyppi) {
return switch (tyyppi) { return switch (tyyppi) {
case Kuljetus.Tyyppi.LOUNAS -> getLounasKuljetusKerroin(päivä) * getJälkiruoat(); case Kuljetus.Tyyppi.Lounas -> getLounasKuljetusKerroin(päivä) * getJälkiruoat();
case Kuljetus.Tyyppi.PÄIVÄLLINEN -> getPäivällisKuljetusKerroin(päivä) * getDinnerJälkiruoat(); case Kuljetus.Tyyppi.Päivällinen -> getPäivällisKuljetusKerroin(päivä) * getDinnerJälkiruoat();
}; };
} }
@@ -9,8 +9,8 @@ import java.util.ArrayList;
@SuppressWarnings("DuplicatedCode") @SuppressWarnings("DuplicatedCode")
public class Kuljetus implements TietokantaOlio { public class Kuljetus implements TietokantaOlio {
public enum Tyyppi { public enum Tyyppi {
LOUNAS(), Lounas,
PÄIVÄLLINEN(); Päivällinen;
} }
private int id = -1; private int id = -1;
@@ -208,8 +208,8 @@ public class Kuljetus implements TietokantaOlio {
rs.getString("ruokarajoite"), rs.getString("ruokarajoite"),
Tyyppi.valueOf(rs.getString("tyyppi").strip()) Tyyppi.valueOf(rs.getString("tyyppi").strip())
); );
System.out.println(rs.getString("tyyppi").equals(Tyyppi.LOUNAS.toString())); System.out.println(rs.getString("tyyppi").equals(Tyyppi.Lounas.toString()));
System.out.println(Tyyppi.LOUNAS); System.out.println(Tyyppi.Lounas);
System.out.println(uusi.getTyyppi()); System.out.println(uusi.getTyyppi());
System.out.println(Tyyppi.valueOf(rs.getString("tyyppi"))); System.out.println(Tyyppi.valueOf(rs.getString("tyyppi")));
kuljetukset.add(uusi); kuljetukset.add(uusi);
@@ -10,12 +10,13 @@ import java.util.ArrayList;
public class RaporttiRivi { public class RaporttiRivi {
private final String nimi; private final String nimi;
private final LocalDate pvm; private final LocalDate pvm;
private final Kuljetus.Tyyppi tyyppi;
private final int salaatit, pääruoat, jälkiruoat; private final int salaatit, pääruoat, jälkiruoat;
private final String erva; private final String erva;
private final String lisätiedot; private final String lisätiedot;
private final String yhteyshenkilönNimi, laskutusOsoite, yhteyshenkilönPuhelinnumero, yhteyshenkilönSähköposti; private final String yhteyshenkilönNimi, laskutusOsoite, yhteyshenkilönPuhelinnumero, yhteyshenkilönSähköposti;
public RaporttiRivi(String nimi, private RaporttiRivi(String nimi,
LocalDate pvm, LocalDate pvm,
int salaatit, int salaatit,
int pääruoat, int pääruoat,
@@ -25,9 +26,11 @@ public class RaporttiRivi {
String laskutusOsoite, String laskutusOsoite,
String yhteyshenkilönPuhelinnumero, String yhteyshenkilönPuhelinnumero,
String yhteyshenkilönSähköposti, String yhteyshenkilönSähköposti,
String erva) { String erva,
Kuljetus.Tyyppi tyyppi) {
this.nimi = nimi; this.nimi = nimi;
this.pvm = pvm; this.pvm = pvm;
this.tyyppi = tyyppi;
this.salaatit = salaatit; this.salaatit = salaatit;
this.pääruoat = pääruoat; this.pääruoat = pääruoat;
this.jälkiruoat = jälkiruoat; this.jälkiruoat = jälkiruoat;
@@ -57,11 +60,12 @@ public class RaporttiRivi {
asiakkaat.laskutusosoite, asiakkaat.laskutusosoite,
asiakkaat.yhteyshenkilönPuhelinnumero, asiakkaat.yhteyshenkilönPuhelinnumero,
asiakkaat.yhteyshenkilönSähköposti, asiakkaat.yhteyshenkilönSähköposti,
asiakkaat.erityisruokavalio asiakkaat.erityisruokavalio,
kuljetukset.tyyppi
from kuljetukset from kuljetukset
left join asiakkaat on kuljetukset.asiakasID=asiakkaat.id left join asiakkaat on kuljetukset.asiakasID=asiakkaat.id
where kuljetusPäivämäärä between ? and ? where kuljetusPäivämäärä between ? and ?
order by kuljetukset.nimi order by kuljetukset.nimi, kuljetukset.kuljetusPäivämäärä, kuljetukset.tyyppi
"""); """);
stmt.setDate(1, Date.valueOf(alkuPvm)); stmt.setDate(1, Date.valueOf(alkuPvm));
stmt.setDate(2, Date.valueOf(loppuPvm)); stmt.setDate(2, Date.valueOf(loppuPvm));
@@ -80,7 +84,8 @@ public class RaporttiRivi {
rs.getString(i++), rs.getString(i++),
rs.getString(i++), rs.getString(i++),
rs.getString(i++), rs.getString(i++),
rs.getString(i++) rs.getString(i++),
Kuljetus.Tyyppi.valueOf(rs.getString(i++))
); );
raportti.add(uusi); raportti.add(uusi);
} }
@@ -99,12 +104,13 @@ public class RaporttiRivi {
asiakkaat.laskutusosoite, asiakkaat.laskutusosoite,
asiakkaat.yhteyshenkilönPuhelinnumero, asiakkaat.yhteyshenkilönPuhelinnumero,
asiakkaat.yhteyshenkilönSähköposti, asiakkaat.yhteyshenkilönSähköposti,
asiakkaat.erityisruokavalio asiakkaat.erityisruokavalio,
kuljetukset.tyyppi
from kuljetukset from kuljetukset
left join asiakkaat on kuljetukset.asiakasID=asiakkaat.id left join asiakkaat on kuljetukset.asiakasID=asiakkaat.id
where kuljetusPäivämäärä between ? and ? where kuljetusPäivämäärä between ? and ?
group by kuljetukset.nimi group by kuljetukset.nimi, kuljetukset.tyyppi
order by kuljetukset.nimi order by kuljetukset.nimi, kuljetukset.kuljetusPäivämäärä, kuljetukset.tyyppi
"""); """);
stmt.setString(1, "\n"); stmt.setString(1, "\n");
stmt.setDate(2, Date.valueOf(alkuPvm)); stmt.setDate(2, Date.valueOf(alkuPvm));
@@ -124,7 +130,8 @@ public class RaporttiRivi {
rs.getString(i++), rs.getString(i++),
rs.getString(i++), rs.getString(i++),
rs.getString(i++), rs.getString(i++),
rs.getString(i++) rs.getString(i++),
Kuljetus.Tyyppi.valueOf(rs.getString(i++))
); );
raportti.add(uusi); raportti.add(uusi);
} }
@@ -145,7 +152,7 @@ public class RaporttiRivi {
"\n" + yhteyshenkilönSähköposti; "\n" + yhteyshenkilönSähköposti;
return nimi + " " + erva + return nimi + " " + erva +
"\nSal: " + salaatit + ", Pr: " + pääruoat + ", Jr: " + jälkiruoat + "\n" + tyyppi + " Sal: " + salaatit + ", Pr: " + pääruoat + ", Jr: " + jälkiruoat +
"\nLisätiedot:\n" + "\nLisätiedot:\n" +
getLisätiedot() + getLisätiedot() +
laskutustiedot.replace("\nnull", "").strip(); laskutustiedot.replace("\nnull", "").strip();
@@ -195,4 +202,8 @@ public class RaporttiRivi {
public String getErva() { public String getErva() {
return erva; return erva;
} }
public Kuljetus.Tyyppi getTyyppi() {
return tyyppi;
}
} }
@@ -1,6 +1,7 @@
package fi.lpam.gui; package fi.lpam.gui;
import fi.lpam.Main; import fi.lpam.Main;
import fi.lpam.dataluokat.Kuljetus;
import fi.lpam.dataluokat.RaporttiRivi; import fi.lpam.dataluokat.RaporttiRivi;
import fi.lpam.gui.elementit.FontLabel; import fi.lpam.gui.elementit.FontLabel;
import fi.lpam.tulostajat.KuljetusRaporttiTulostaja; import fi.lpam.tulostajat.KuljetusRaporttiTulostaja;
@@ -75,6 +76,10 @@ public class KuljetusRaportit extends TabPohja {
tcPvm.setCellFactory(_ ->new PaivamaaraTableCell()); tcPvm.setCellFactory(_ ->new PaivamaaraTableCell());
tcPvm.setCellValueFactory(new PropertyValueFactory<>("pvm")); tcPvm.setCellValueFactory(new PropertyValueFactory<>("pvm"));
TableColumn<RaporttiRivi, Kuljetus.Tyyppi> tcTyyppi = new TableColumn<>("Tyyppi");
tcTyyppi.setMinWidth(150);
tcTyyppi.setCellValueFactory(new PropertyValueFactory<>("tyyppi"));
TableColumn<RaporttiRivi, Integer> tcSalaatit = new TableColumn<>("Salaatit"); TableColumn<RaporttiRivi, Integer> tcSalaatit = new TableColumn<>("Salaatit");
tcSalaatit.setMinWidth(100); tcSalaatit.setMinWidth(100);
tcSalaatit.setCellValueFactory(new PropertyValueFactory<>("salaatit")); tcSalaatit.setCellValueFactory(new PropertyValueFactory<>("salaatit"));
@@ -111,9 +116,10 @@ public class KuljetusRaportit extends TabPohja {
tcYhteyshenkilönSähköposti.setMinWidth(200); tcYhteyshenkilönSähköposti.setMinWidth(200);
tcYhteyshenkilönSähköposti.setCellValueFactory(new PropertyValueFactory<>("yhteyshenkilönSähköposti")); tcYhteyshenkilönSähköposti.setCellValueFactory(new PropertyValueFactory<>("yhteyshenkilönSähköposti"));
tableView.getColumns().addAll(tcNimi, tcPvm, tcSalaatit, tcPääruoat, tcJälkiruoat, tcErva, tcLisätiedot, tableView.getColumns().addAll(tcNimi, tcPvm, tcTyyppi, tcSalaatit, tcPääruoat, tcJälkiruoat, tcErva, tcLisätiedot,
tcYhteyshenkilönNimi, tcLaskutusOsoite, tcYhteyshenkilönPuhelinnumero, tcYhteyshenkilönSähköposti); tcYhteyshenkilönNimi, tcLaskutusOsoite, tcYhteyshenkilönPuhelinnumero, tcYhteyshenkilönSähköposti);
tableView.setPlaceholder(new FontLabel(BUTTON_FONT, "Hae raportti")); tableView.setPlaceholder(new FontLabel(BUTTON_FONT, "Hae raportti"));
for (TableColumn<RaporttiRivi, ?> sarake : tableView.getColumns()) { for (TableColumn<RaporttiRivi, ?> sarake : tableView.getColumns()) {
sarake.setSortable(false); sarake.setSortable(false);
sarake.setEditable(false); sarake.setEditable(false);