@@ -6,21 +6,34 @@ import java.sql.*;
|
||||
import java.time.LocalDate;
|
||||
import java.util.ArrayList;
|
||||
|
||||
@SuppressWarnings("ClassCanBeRecord")
|
||||
@SuppressWarnings({"ClassCanBeRecord", "DuplicatedCode"})
|
||||
public class RaporttiRivi {
|
||||
private final String nimi;
|
||||
private final LocalDate alkuPvm, loppuPvm;
|
||||
private final LocalDate pvm;
|
||||
private final int salaatit, pääruoat, jälkiruoat;
|
||||
private final String lisätiedot;
|
||||
private final String yhteyshenkilönNimi, laskutusOsoite, yhteyshenkilönPuhelinnumero, yhteyshenkilönSähköposti;
|
||||
|
||||
public RaporttiRivi(String nimi, LocalDate alkuPvm, LocalDate loppuPvm, int salaatit, int pääruoat, int jälkiruoat, String lisätiedot) {
|
||||
public RaporttiRivi(String nimi,
|
||||
LocalDate pvm,
|
||||
int salaatit,
|
||||
int pääruoat,
|
||||
int jälkiruoat,
|
||||
String lisätiedot,
|
||||
String yhteyshenkilönNimi,
|
||||
String laskutusOsoite,
|
||||
String yhteyshenkilönPuhelinnumero,
|
||||
String yhteyshenkilönSähköposti) {
|
||||
this.nimi = nimi;
|
||||
this.alkuPvm = alkuPvm;
|
||||
this.loppuPvm = loppuPvm;
|
||||
this.pvm = pvm;
|
||||
this.salaatit = salaatit;
|
||||
this.pääruoat = pääruoat;
|
||||
this.jälkiruoat = jälkiruoat;
|
||||
this.lisätiedot = lisätiedot;
|
||||
this.yhteyshenkilönNimi = yhteyshenkilönNimi;
|
||||
this.laskutusOsoite = laskutusOsoite;
|
||||
this.yhteyshenkilönPuhelinnumero = yhteyshenkilönPuhelinnumero;
|
||||
this.yhteyshenkilönSähköposti = yhteyshenkilönSähköposti;
|
||||
}
|
||||
|
||||
public static ArrayList<RaporttiRivi> haeRaportti(LocalDate alkuPvm, LocalDate loppuPvm, boolean tarkka) {
|
||||
@@ -29,40 +42,82 @@ public class RaporttiRivi {
|
||||
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");
|
||||
PreparedStatement stmt = tietokanta.prepareStatement("""
|
||||
select kuljetukset.asiakasID,
|
||||
kuljetukset.nimi,
|
||||
kuljetukset.kuljetusPäivämäärä,
|
||||
kuljetukset.salaatit,
|
||||
kuljetukset.pääruoat,
|
||||
kuljetukset.jälkiruoat,
|
||||
kuljetukset.lisätieto,
|
||||
asiakkaat.yhteyshenkilönNimi,
|
||||
asiakkaat.laskutusosoite,
|
||||
asiakkaat.yhteyshenkilönPuhelinnumero,
|
||||
asiakkaat.yhteyshenkilönSähköposti
|
||||
from kuljetukset
|
||||
left join asiakkaat on kuljetukset.asiakasID=asiakkaat.id
|
||||
where kuljetusPäivämäärä between ? and ?
|
||||
order by kuljetukset.nimi
|
||||
""");
|
||||
stmt.setDate(1, Date.valueOf(alkuPvm));
|
||||
stmt.setDate(2, Date.valueOf(loppuPvm));
|
||||
rs = stmt.executeQuery();
|
||||
|
||||
while (rs.next()) {
|
||||
int i = 2;
|
||||
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)
|
||||
rs.getString(i++),
|
||||
rs.getDate(i++).toLocalDate(),
|
||||
rs.getInt(i++),
|
||||
rs.getInt(i++),
|
||||
rs.getInt(i++),
|
||||
rs.getString(i++),
|
||||
rs.getString(i++),
|
||||
rs.getString(i++),
|
||||
rs.getString(i++),
|
||||
rs.getString(i++)
|
||||
);
|
||||
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));
|
||||
PreparedStatement stmt = tietokanta.prepareStatement("""
|
||||
select kuljetukset.asiakasID,
|
||||
kuljetukset.nimi,
|
||||
kuljetukset.kuljetusPäivämäärä,
|
||||
sum(kuljetukset.salaatit),
|
||||
sum(kuljetukset.pääruoat),
|
||||
sum(kuljetukset.jälkiruoat),
|
||||
group_concat(kuljetukset.lisätieto, ?),
|
||||
asiakkaat.yhteyshenkilönNimi,
|
||||
asiakkaat.laskutusosoite,
|
||||
asiakkaat.yhteyshenkilönPuhelinnumero,
|
||||
asiakkaat.yhteyshenkilönSähköposti
|
||||
from kuljetukset
|
||||
left join asiakkaat on kuljetukset.asiakasID=asiakkaat.id
|
||||
where kuljetusPäivämäärä between ? and ?
|
||||
group by kuljetukset.nimi
|
||||
order by kuljetukset.nimi
|
||||
""");
|
||||
stmt.setString(1, "\n");
|
||||
stmt.setDate(2, Date.valueOf(alkuPvm));
|
||||
stmt.setDate(3, Date.valueOf(loppuPvm));
|
||||
rs = stmt.executeQuery();
|
||||
|
||||
while (rs.next()) {
|
||||
int i = 2;
|
||||
RaporttiRivi uusi = new RaporttiRivi(
|
||||
rs.getString(1),
|
||||
alkuPvm,
|
||||
loppuPvm,
|
||||
rs.getInt(3),
|
||||
rs.getInt(4),
|
||||
rs.getInt(5),
|
||||
rs.getString(6)
|
||||
rs.getString(i++),
|
||||
rs.getDate(i++).toLocalDate(),
|
||||
rs.getInt(i++),
|
||||
rs.getInt(i++),
|
||||
rs.getInt(i++),
|
||||
rs.getString(i++),
|
||||
rs.getString(i++),
|
||||
rs.getString(i++),
|
||||
rs.getString(i++),
|
||||
rs.getString(i++)
|
||||
);
|
||||
raportti.add(uusi);
|
||||
}
|
||||
@@ -76,19 +131,25 @@ public class RaporttiRivi {
|
||||
}
|
||||
@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();
|
||||
|
||||
String laskutustiedot = "\n" + yhteyshenkilönNimi +
|
||||
"\n" + laskutusOsoite +
|
||||
"\n" + yhteyshenkilönPuhelinnumero +
|
||||
"\n" + yhteyshenkilönSähköposti;
|
||||
|
||||
return nimi +
|
||||
"\nSal: " + salaatit + ", Pr: " + pääruoat + ", Jr: " + jälkiruoat +
|
||||
"\nLisätiedot:\n" +
|
||||
getLisätiedot() +
|
||||
laskutustiedot.replace("\nnull", "").strip();
|
||||
}
|
||||
|
||||
public String getNimi() {
|
||||
return nimi;
|
||||
}
|
||||
|
||||
public LocalDate getAlkuPvm() {
|
||||
return alkuPvm;
|
||||
}
|
||||
|
||||
public LocalDate getLoppuPvm() {
|
||||
return loppuPvm;
|
||||
public LocalDate getPvm() {
|
||||
return pvm;
|
||||
}
|
||||
|
||||
public int getSalaatit() {
|
||||
@@ -104,6 +165,23 @@ public class RaporttiRivi {
|
||||
}
|
||||
|
||||
public String getLisätiedot() {
|
||||
return lisätiedot;
|
||||
if (lisätiedot == null) return null;
|
||||
return lisätiedot.strip().trim().stripLeading().stripTrailing();
|
||||
}
|
||||
|
||||
public String getYhteyshenkilönNimi() {
|
||||
return yhteyshenkilönNimi;
|
||||
}
|
||||
|
||||
public String getLaskutusOsoite() {
|
||||
return laskutusOsoite;
|
||||
}
|
||||
|
||||
public String getYhteyshenkilönPuhelinnumero() {
|
||||
return yhteyshenkilönPuhelinnumero;
|
||||
}
|
||||
|
||||
public String getYhteyshenkilönSähköposti() {
|
||||
return yhteyshenkilönSähköposti;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user