c69d0c01e6
Signed-off-by: laurimaaninka <lauri.maaninka@gmail.com>
109 lines
3.8 KiB
Java
109 lines
3.8 KiB
Java
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.strip();
|
|
}
|
|
|
|
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;
|
|
}
|
|
} |