Versio 1, ensimmäinen committi!

This commit is contained in:
2026-04-08 19:34:00 +03:00
commit 7eddb935dc
42 changed files with 2699 additions and 0 deletions
@@ -0,0 +1,109 @@
package fi.lpam.dataluokat;
import fi.lpam.gui.virheDialogit.SiirtoVirhe;
import java.sql.*;
import java.time.LocalDate;
import java.util.ArrayList;
@SuppressWarnings("ClassCanBeRecord")
public class RaporttiRivi {
private final String nimi;
private final LocalDate alkuPvm, loppuPvm;
private final int salaatit, pääruoat, jälkiruoat;
private final String lisätiedot;
public RaporttiRivi(String nimi, LocalDate alkuPvm, LocalDate loppuPvm, int salaatit, int pääruoat, int jälkiruoat, String lisätiedot) {
this.nimi = nimi;
this.alkuPvm = alkuPvm;
this.loppuPvm = loppuPvm;
this.salaatit = salaatit;
this.pääruoat = pääruoat;
this.jälkiruoat = jälkiruoat;
this.lisätiedot = lisätiedot;
}
public static ArrayList<RaporttiRivi> haeRaportti(LocalDate alkuPvm, LocalDate loppuPvm, boolean tarkka) {
ArrayList<RaporttiRivi> raportti = new ArrayList<>();
try (Connection tietokanta = Tietokanta.haeYhteys()) {
ResultSet rs;
if (tarkka) {
//Jokainen kuljetus saa oman rivin
PreparedStatement stmt = tietokanta.prepareStatement("select nimi, kuljetusPäivämäärä, salaatit, pääruoat, jälkiruoat, lisätieto from kuljetukset where kuljetusPäivämäärä between ? and ? order by nimi");
stmt.setDate(1, Date.valueOf(alkuPvm));
stmt.setDate(2, Date.valueOf(loppuPvm));
rs = stmt.executeQuery();
while (rs.next()) {
RaporttiRivi uusi = new RaporttiRivi(
rs.getString(1),
rs.getDate(2).toLocalDate(),
rs.getDate(2).toLocalDate(),
rs.getInt(3),
rs.getInt(4),
rs.getInt(5),
rs.getString(6)
);
raportti.add(uusi);
}
} else {
//Kuljetukset summataan yhteen riviin per vastaanottaja
PreparedStatement stmt = tietokanta.prepareStatement("select nimi, kuljetusPäivämäärä, sum(salaatit), sum(pääruoat), sum(jälkiruoat), group_concat(lisätieto, '\n') from kuljetukset where kuljetusPäivämäärä between ? and ? group by nimi order by nimi;");
stmt.setDate(1, Date.valueOf(alkuPvm));
stmt.setDate(2, Date.valueOf(loppuPvm));
rs = stmt.executeQuery();
while (rs.next()) {
RaporttiRivi uusi = new RaporttiRivi(
rs.getString(1),
alkuPvm,
loppuPvm,
rs.getInt(3),
rs.getInt(4),
rs.getInt(5),
rs.getString(6)
);
raportti.add(uusi);
}
}
} catch (SQLException e) {
SiirtoVirhe virhe = new SiirtoVirhe(e);
virhe.showAndWait();
return null;
}
return raportti;
}
@Override
public String toString() {
return this.nimi + ":\nSal: " + this.salaatit + ", Pr: " + this.pääruoat + ", Jr: " + this.jälkiruoat + "\nLisätiedot:\n" + this.lisätiedot;
}
public String getNimi() {
return nimi;
}
public LocalDate getAlkuPvm() {
return alkuPvm;
}
public LocalDate getLoppuPvm() {
return loppuPvm;
}
public int getSalaatit() {
return salaatit;
}
public int getPääruoat() {
return pääruoat;
}
public int getJälkiruoat() {
return jälkiruoat;
}
public String getLisätiedot() {
return lisätiedot;
}
}