ciao!
allora, ho fatto un pò di modifiche:
codice:
import lombok.AllArgsConstructor;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.Setter;
import java.sql.Timestamp;
@Setter
@Getter
@AllArgsConstructor
@EqualsAndHashCode(exclude = {"dataOraInizio", "dataOraFine", "minLvaorate"})
public class Timesheet {
Integer idTimeSheet;
Timestamp dataOraInizio;
Timestamp dataOraFine;
Integer minLvaorate;
}
poi:
codice:
@Override
public CheckTimesheet checkTimesheets(int idProgetto, String sendEmail) {
MapSqlParameterSource mapSqlParameterSource = new MapSqlParameterSource();
mapSqlParameterSource.addValue("id", idProgetto);
String queryOld = "SELECT * FROM Timesheet WHERE (codProgetto > 888 AND codProgetto < 932)";
List<Timesheet> listOld = jdbcTemplate.query(
queryOld,
mapSqlParameterSource,
(rs, rowNum) -> new Timesheet(
rs.getInt("idTimeSheet"),
rs.getTimestamp("DataOraInizio"),
rs.getTimestamp("DataOraFine"),
rs.getInt("MinLavorate")
)
);
String queryNew = "SELECT * FROM timesheets " +
"WHERE (cod_sede_progetto > 888 AND cod_sede_progetto < 932) " +
"AND cancellato = 0";
List<Timesheet> listNew = mysqlTemplate.query(
queryNew,
mapSqlParameterSource,
(rs, rowNum) -> new Timesheet(
rs.getInt("id_timesheet_old"),
null,
null,
0
)
);
List<Timesheet> listMerged = new ArrayList<>();
listMerged.addAll(listOld);
listMerged.addAll(listNew);
Set<Timesheet> s = new HashSet<>(listMerged);
List<Timesheet> list = new ArrayList<>(s);
System.out.println("VECCHIO: " + listOld.size());
System.out.println("NUOVO: " + listNew.size());
System.out.println("TOTALE: " + listMerged.size());
System.out.println("FINALE: " + list.size());
return new CheckTimesheet(listOld.size(), listNew.size(), list);
}
ma mi ritorna dei dati assurdi:
codice:
VECCHIO: 7295
NUOVO: 6472
TOTALE: 13767
FINALE: 7299
quello che non riesco a capire, e che ovviamente non dipende da voi, è se è sbagliata la logica/codice, oppure è un problema di dati.
ma penso sia più un problema di dati, visto che se li simulo mettendoli a mano funziona tutto correttamente.