Iniciante em Java - Ajuda na comparação .(RESOLVIDO)

0 respostas
G

Olá, tenho uma comparação onde só trago onde há diferença de horários na entrada ou saída, porém tem alguns funcionários que não tem almoço, então a saída deles vem nulo. Esses funcionários preciso pegar o registro = ida_almoco .
Porém eu tenho o campo hora, e defino se ele é entrada/saída/ida_almoco, através de um flag_destino .

Sendo assim, preciso ter a seguinte opção, se o saidaTS for == nulo, então eu verifico se flag_destino == “ida_almoco”, se for tenho que fazer o saidaTS receber o hora do flag_destino ida_almoco.

Segue minha classe de comparação .
eu já tentei colocar essa opção dentro do if do saída… ja tentei depois…
mas não consigo trazer… =/ .

Algúem pode me ajudar… .por favor…
já estou a dias nisso …
=/ .

public List comparaTimeSheetBiometrico(Date dataIni, Date dataFim) throws ParseException {
        listaTimeSheet = retornaConsultaTimeSheet(dataIni, dataFim);
        listaBiometrico = retornaConsultaBiometrico(dataIni, dataFim);
        int diferencaMin;
        Date entTs, entBt, saiTs, saiBt, diferenca;

        for (Biometrico bt : listaBiometrico) {
            CompTimeSheetBiometrico comp = new CompTimeSheetBiometrico();

            for (TimeSheetBio ts : listaTimeSheet) {
                if (bt.getSigla().equals(ts.getSigla()) && bt.getData().equals(ts.getData())) {

                    comp.setSigla(bt.getSigla());
                    comp.setNome(ts.getNome());
                    comp.setN_apropriacao(ts.getN_apropriacao());
                    comp.setData(bt.getData());

                    if (ts.getFlag_destino().equals("entrada")) {
                        if (!converteData(ts.getHora()).equals(formataHora(bt.getMenor_horario()))) {
                            comp.setEntradaTS(ts.getHora());
                            comp.setEntradaBio(bt.getMenor_horario());
                        } else if (converteData(ts.getHora()).equals(formataHora(bt.getMenor_horario()))) {
                            comp.setEntradaTS(ts.getHora());
                            comp.setEntradaBio(bt.getMenor_horario());
                        }
                    } else if (ts.getFlag_destino().equals("saida")) {
                        if (!converteData(ts.getHora()).equals(formataHora(bt.getMaior_horario()))) {
                            comp.setSaidaTS(ts.getHora());
                            comp.setSaidaBio(bt.getMaior_horario());
                        } else if (converteData(ts.getHora()).equals(formataHora(bt.getMaior_horario()))) {
                            comp.setSaidaTS(ts.getHora());
                            comp.setSaidaBio(bt.getMaior_horario());
                        }
                        }
                }
            }
            listComp.add(comp);

            if (comp.getEntradaTS() == null && comp.getEntradaBio() == null && comp.getSaidaTS() == null && comp.getSaidaBio() == null) {
                listComp.remove(comp);
            }

            if (comp.getEntradaTS() != null && comp.getEntradaBio() != null
                    && comp.getSaidaTS() != null && comp.getSaidaBio() != null) {
                if (converteData(comp.getEntradaTS()).equals(formataHora(comp.getEntradaBio()))
                        && converteData(comp.getSaidaTS()).equals(formataHora(comp.getSaidaBio()))) {
                    listComp.remove(comp);
                }
            }
        }
        return listComp;
    }

segue meus DAO completo.

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' or h.flag_destino='ida_almoco') ";
        SQL += "AND h.pessoa=lower(f.sigla) ";
        SQL += "ORDER BY h.pessoa, h.dt_dia, 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.setSigla(obj[0].toString());
                comp.setNome(obj[1].toString());
                comp.setN_apropriacao(Integer.parseInt(obj[2].toString()));
                comp.setData(new SimpleDateFormat("yyyy-MM-dd").parse(obj[3].toString()));
                if (obj[4] != null) {
                    comp.setHora(obj[4].toString());
                } else {
                    comp.setHora(null);
                }
                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<Biometrico> TbBiometrico = new ArrayList<Biometrico>();
        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.sigla, tb.dia ";
        SQL += "ORDER BY tb.sigla, tb.dia ";

        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();
                Biometrico bio = new Biometrico();

                bio.setSigla(obj[0].toString());
                bio.setData(new SimpleDateFormat("yyyy-MM-dd").parse(obj[1].toString()));
                bio.setMenor_horario(new SimpleDateFormat("yyyy-MM-dd HH:mm").parse(obj[2].toString()));
                bio.setMaior_horario(new SimpleDateFormat("yyyy-MM-dd HH:mm").parse(obj[3].toString()));

                TbBiometrico.add(bio);
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            sessao.close();
        }
        return TbBiometrico;
    }

    private String formataHora(Date hora) {
        SimpleDateFormat formatoData = new SimpleDateFormat("HH:mm");
        return formatoData.format(hora);
    }

    private String converteData(String dtData) {
        SimpleDateFormat formatBra;
        formatBra = new SimpleDateFormat("HH:mm");
        Date newData;
        try {
            newData = formatBra.parse(dtData.toString());
            return (formatBra.format(newData));
        } catch (Exception e) {
            return "Erro na conversão da data";
        }
    }
Criado 2 de março de 2012
Respostas 0
Participantes 1