Oi pessoal,
estou criando um relatório onde tenho duas listas e preciso compará-las da seguinte maneira…
tenho la a sigla e data, e comparo pra ver se é igual…
se forem iguais, vou pro próximo passo…
que é comparar as horas de entradas e saida…
tipo se hora_entrada for diferente de menor_horario eu exibo
e se hora_saida for diferente que maior_horario eu exibo também…
e se forem iguais não … então continuo percorrendo a lista…
e na hora de fazer esse maldito for de comparação não consigo…
porque assim, na minha lista TimeSheet sei se é entrada ou saida pelo flag_destino…
já na listaBiometrico está separado direto …
então no for preciso colocar essa condição de se flag_destino = entrada/saida.
e ai não consigo fazer… =/
e também na hora de dar um add.
ele diz que add tem que ser int. --’.
alguém pode me ajudar, por favor !!
segue meu for e depois meu DAO com as duas listas.
public List retornaCompTimeSheetBiometrico(Date dataIni,Date dataFim) {
List<CompTimeSheetBiometrico> listaTimeSheetBio = new ArrayList<CompTimeSheetBiometrico>();
List<TimeSheetBio> listaTimeSheet = retornaConsultaTimeSheet(dataIni, dataFim);
List<BiometricoTS> listaBiometrico = retornaConsultaBiometrico(dataIni, dataFim);
for (int i = 0; i < listaTimeSheet.size(); i++) {
for (int j = 0; j < listaBiometrico.size(); j++) {
if (listaTimeSheet.get(i).getPessoa().toLowerCase().equals(listaBiometrico.get(j).getSigla())
& listaTimeSheet.get(i).getDt_dia().equals(listaBiometrico.get(j).getDia())) {
// & (listaTimeSheet.get(i).getFlag_destino().equals("entrada")) != (listaBiometrico.get(j).getMenor_horario())
// & (listaTimeSheet.get(i).getFlag_destino().equals("saida")) != (listaBiometrico.get(j).getMaior_horario())) {
break;
}
}
}
return listaTimeSheet;
}
public List retornaConsultaTimeSheet(Date dataIni,Date dataFim) {
Session sessao = HibernateUtil.getSession();
List<TimeSheetBio> tbCompTimeSheetBio = new ArrayList<TimeSheetBio>();
String SQL;
//Consulta em SQL Nativo
//retorna uma lista dos funcionarios que preencheram o Time-Sheet
SQL = "SELECT h.pessoa, f.nome, h.n_apropriacao, h.dt_dia as data, h.hora, h.flag_destino ";
SQL += "FROM horario_unico h, funcionario f ";
SQL += "WHERE to_date(h.dia||'/'||h.mes||'/'||h.ano, 'DD/MM/YYYY') BETWEEN :dataIni AND :dataFim ";
SQL += "AND(h.flag_destino ='entrada' or h.flag_destino='saida') ";
SQL += "AND h.pessoa=lower(f.sigla) ";
SQL += "ORDER BY h.dt_dia, h.pessoa, h.flag_destino ";
try {
sessao.beginTransaction();
Query select = sessao.createSQLQuery(SQL);
select.setDate("dataIni", dataIni);
select.setDate("dataFim", dataFim);
List resultado = select.list();
for (Iterator it = resultado.iterator(); it.hasNext();) {
Object[] obj = (Object[]) it.next();
TimeSheetBio comp = new TimeSheetBio();
comp.setPessoa(obj[0].toString());
comp.setNome(obj[1].toString());
comp.setN_apropriacao(Integer.parseInt(obj[2].toString()));
comp.setDt_dia(new SimpleDateFormat("yyyy-MM-dd").parse(obj[3].toString()));
comp.setHora(new SimpleDateFormat("HH:mm").parse(obj[4].toString()));
comp.setFlag_destino(obj[5].toString());
tbCompTimeSheetBio.add(comp);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
sessao.close();
}
return tbCompTimeSheetBio;
}
public List retornaConsultaBiometrico(Date dataIni, Date dataFim) {
Session sessao = HibernateUtil.getSession();
List<BiometricoTS> TbBiometrico = new ArrayList<BiometricoTS>();
String SQL;
//Consulta em SQL Nativo
//retorna uma lista com o menor e o maior horario de cada funcionario no biometrico
SQL = "SELECT tb.sigla, tb.dia, min(horario) as menor_horario, max(horario) as maior_horario ";
SQL += "FROM tb_biometrico tb ";
SQL += "WHERE tb.dia between :dataIni AND :dataFim ";
SQL += "GROUP BY tb.dia, tb.sigla ";
SQL += "ORDER BY tb.dia, tb.sigla ";
try {
sessao.beginTransaction();
Query select = sessao.createSQLQuery(SQL);
select.setDate("dataIni", dataIni);
select.setDate("dataFim", dataFim);
List resultado = select.list();
for (Iterator it = resultado.iterator(); it.hasNext();) {
Object[] obj = (Object[]) it.next();
BiometricoTS bio = new BiometricoTS();
bio.setSigla(obj[0].toString());
bio.setDia(new SimpleDateFormat("yyyy-MM-dd").parse(obj[1].toString()));
bio.setMenor_horario(obj[2].toString());
bio.setMaior_horario(obj[3].toString());
TbBiometrico.add(bio);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
sessao.close();
}
return TbBiometrico;
}
Que negócio é esse de que o add tem que ser int?