Bom dia gente.
Estou fazendo um relatório que precisa mostrar todos os funcionarios de um departamento, independente se ele tenha dados para mostrar no mesmo. Vou colar o código e dizer minhas dúvidas.
public String imprimirSaldoHoras() throws JRException{
List lista = horaExtraLogic.getImprimirSaldoHoras(funcionarioLogado.getCentrodeCusto().getId().toString().substring(0, 3));
for(int i = 0; i < lista.size(); i++){
for (Funcionario func : funcionariosDoDpto) {
if (funcionariosDoDpto.get(i).getMatricula().toString().equalsIgnoreCase(lista.get(i).getRegistroFuncionario().toString())) {
Desse jeito, ele mostra só os funcionários que tem informações no banco(puis o código desse jeito para ficar mais fácil a visualização, não q eu acha q devia funcionar o q estou querendo desse jeito). Os funcionarios estão na lista funcionariosDoDpto. Essa “lista” do é dos funcionários que tem informações no banco. Não sei se dei as informações suficientes para alguém poder me ajudar, mas qualquer dica é bem vinda, pois estou quebrando a cabeça e perdendo mto tempo. Sim, sou leigo no assunto, então, se for algo estúpido, foi mal.
Agradeço desde já.
Daniel
opa, beleza e ae??
O que acontece é que no relatório, do jeito que está no código, ele mostra só os funcionários que tem na lista lista. E nessa lista, só aparece os funcionários que fizeram hora extra, ou seja, os que tem informações no banco de dados. O que eu quero é que apareça todos os funcionarios do departamento, independente disso, ou seja, os que estão no funcionariosDoDpto mais os da lista. Como eu disse, eu já tentei várias coisas, mas puis desse jeito para melhor visualização.
Bom, eu não sei se respondi o suficiente, espero que consiga compreender.
Abraço
=]
Daniel-Silva, a impressão que dá é que o if dentro do for é que está filtrando os funcionários que estão sendo exibidos na sua lista. Já tentou comentá-lo? Conforme exemplo abaixo.
PS: Posso estar falando besteira, mas é que é difícil tirar conclusões sem o código-fonte das classes Funcionario e horaExtraLogic estarem disponíveis.
[code]public String imprimirSaldoHoras() throws JRException{
List lista = horaExtraLogic.getImprimirSaldoHoras(funcionarioLogado.getCentrodeCusto().getId().toString().substring(0, 3));
for(int i = 0; i < lista.size(); i++){
for (Funcionario func : funcionariosDoDpto) {
//if (funcionariosDoDpto.get(i).getMatricula().toString().equalsIgnoreCase(lista.get(i).getRegistroFuncionario().toString())) {
public String imprimirSaldoHoras() throws JRException{
List<HoraExtra> lista = horaExtraLogic.getImprimirSaldoHoras(funcionarioLogado.getCentrodeCusto().getId().toString().substring(0, 3));
for(int i = 0; i < lista.size(); i++){
for (Funcionario func : funcionariosDoDpto) {
if (funcionariosDoDpto.get(i).getMatricula().toString().equalsIgnoreCase(lista.get(i).getRegistroFuncionario().toString())) {
lista.get(i).setNomeFuncionario(func.getNome());
lista.get(i).setDepartamentoSigla(func.getCentrodeCusto().getSigla().trim ());
lista.get(i).setDepartamentoNome(func.getCentrodeCusto().getNome().trim());
}
}
return geraPdf.executa("Relatorio_rh_horasExtras_saldoHoras.jasper", lista);
}
}
Obrigado gente. Tiago, eu já havia tentado isso sim, e eu nem puis as outras classes pq elas estão bem basicas. Vo por o logic.
@SuppressWarnings("unchecked")
public List<HoraExtra> getImprimirSaldoHoras(String departamento) {
Query q = em.createQuery("select c from HoraExtra c where (c.situacaoHe.id != '3' or c.situacaoHe.id != '8') and c.departamento = '" + departamento + "' Order by c.registroFuncionario" );
return q.getResultList();
}
Pior que eu já tentei tanta coisa, e to atrasando muito com isso. Mas enfim, continuarei tentando aqui, quem quiser continuar dando algum conselho, eu agradeço. Valeu a todos que já responderam. Abraço =]