Tenho que criar um relatório em PDF igual a esse.
Como criar relatório a partir de um lista objetos ou direto do banco eu já sei.
Porem como visto na imagem tem vários campos e cada um esta em uma tabela eu pensei em criar uma lista de objeto e colocar todos os dados no objeto e mandar gerar o PDF porem nessa lista fica duplicando os dados: codigo,nome,clas,turno e somente muda os da operação que eh cod descricao e T.P.U eu pensei em gerar um lista de operação dentro da lista do objeto.
A imagem acima mostra somente de um colaborador e nessa lista poderá ter mais colaboradores e eu quero que gere somente um PDF com varias lista igual a da imagem
Olha, eu prefiro a seguinte abordagem: Criar uma classe que contemple todos os valores a serem apresentados no relatório e, então, gerar o relatório a partir de uma lista deste objeto.
O relatório não serve como parte do processamento, ele deve ser o produto final.
J
jeankarlos
ok @darlan_machado e o que eu estava pensando porem sobre os atributos desse objeto para não duplicar teria que ter uma lista de operações dentro do objeto. exemplo
Objeto apontamento
codigo = *
nome=*
clas=*
turno=* ate aqui já deu certo e eu já fiz estou travado nas operacões
lista = cod = *
descricao=*
T.P.U=*
seria asim? como acessar esta lista depois gerando o pdf
darlan_machado
Cara, não complica.
Primeiro, você disse isso:
Certo? Dados que não se repetem.
E
Que se referem a operação, não é isso?
A impressão será nos moldes do apresentado na imagem?
Eu não sei o que está usando para desenvolver o relatório, mas, eu usaria jasperreports e criaria um objeto conforme você mesmo comentou: os dados de cada colaborador e uma lista com as operações.
Então, faria um relatório preenchendo a banda details com os dados de cada colaborador e um sub report com os dados da operação.
J
jeankarlos
Certo.
também esta certo.
sim como o da imagem.
estou usando ele mesmo
Justamente aqui que estou com dificuldade! eu criaria um objeto com
e uma lista de operações separada do objeto como passaria ela para o jasperreports?
geralmente eu passo em forma de 1 lista só seria ou a do objeto ou da operação não teria que juntar para mandar.
JasperPrint print = JasperFillManager.fillReport(report, null, new JRBeanCollectionDataSource(lista));
Então eu já tentei criar dessa forma mais cedo e ate estou com ela ainda porem não consigo justamente colocar o da operação no sub_relatorio por causa da lista
certo qual deles o do jasper ou o que gera a lista de objeto?
darlan_machado
O da lista.
Sobre o jasper, tem algum erro? Log?
J
jeankarlos
nao.
ele esta gerando normal a parte sem ser o do sub relatório.
possa ser também na criação dele…
posso postar amanha cedo pois tenho que sair somente amanha poderei voltar a mexer obrigado pela atenção e amanha eu posto código cedo e lhe aguardo
J
jeankarlos
LinkedList<Vin_Colaborador>listavin=newLinkedList<Vin_Colaborador>();LinkedList<Vin_Funcao_Operacao>listafuncao=newLinkedList<Vin_Funcao_Operacao>();LinkedList<Vin_Funcao_Operacao>listafu=newLinkedList<Vin_Funcao_Operacao>();LinkedList<Operacao>listaop=newLinkedList<Operacao>();BigDecimalcola=null;for(inti=0;i<lista.size();i++){Vin_Colaboradorc=lista.get(i);Stringcodapo=String.valueOf(tabelaColaborador.getValueAt(i,0));if(codapo.equals("true")){listavin.add(c);}}if(listavin.size()==0){JOptionPane.showMessageDialog(null,"Voce nao escolheu nenhum colaborador");}else{if(txt_Data_Final.getText().isEmpty()){JOptionPane.showMessageDialog(null,"Campo de data final vazio");}elseif(txt_Data_Inicial.getText().isEmpty()){JOptionPane.showMessageDialog(null,"Campo de data inicial vazio");}else{try{LocalDatedataInicial=LocalDate.parse(txt_Data_Inicial.getText(),DateTimeFormatter.ofPattern("dd/MM/yyyy"));LocalDatedataFinal=LocalDate.parse(txt_Data_Final.getText(),DateTimeFormatter.ofPattern("dd/MM/yyyy"));Vin_Colaboradorc=null;for(inti=0;i<listavin.size();i++){c=listavin.get(i);ColaboradorDaocolaboradorDao=newColaboradorDao();Colaboradorco=colaboradorDao.busca(c.getID_colaborador());Clas_FuncaoDaoclas_FuncaoDao=newClas_FuncaoDao();Clas_Funcaocf=clas_FuncaoDao.busca(co.getID_clas_funcao());Vin_Funcao_OperacaoDaovin_Funcao_OperacaoDao=newVin_Funcao_OperacaoDao();listafuncao=vin_Funcao_OperacaoDao.buscaPorFuncao(cf.getID_Clas_Funcao());for(intj=0;j<listafuncao.size();j++){Vin_Funcao_Operacaovfo=listafuncao.get(j);vfo.setCodigo(co.getCodigo());vfo.setNome_colaborador(co.getNome());vfo.setNome_funcao(cf.getDescricao());TurnoDaoturnoDao=newTurnoDao();Turnot=turnoDao.busca(co.getID_turno());vfo.setTurno(t.getDescricao());OperacaoDaooperacaoDao=newOperacaoDao();Operacaoop=operacaoDao.busca(vfo.getID_operacao());vfo.setDescricao_operacao(op.getDescricao());vfo.setCodigo_operacao(op.getCodigo_operacao());doubletotal=op.getTempo_padrao();total=total/60;inthr=(int)total;doubleminf=total-hr;minf=minf*60;doubleaux1=(Math.round(minf));intmin=(int)aux1;doubleseg=minf-min;seg=seg*60;doubleaux2=(Math.round(seg));intsegint=(int)aux2;Stringse=Integer.toString(segint);Stringmi=Integer.toString(min);Stringh=Integer.toString(hr);if(se.length()==1){se="0"+se;}if(mi.length()==1){mi="0"+mi;}if(h.length()==1){h="0"+h;}Stringtempo=h+":"+mi+":"+se;vfo.setTempo_padrao(tempo);System.out.println(vfo.getCodigo());System.out.println(vfo.getDescricao_operacao());System.out.println(vfo.getID_Vin_Funcao_Operacao());System.out.println(vfo.getID_clas_funcao());System.out.println(vfo.getID_operacao());System.out.println(vfo.getCodigo_operacao());System.out.println(vfo.getNome_colaborador());System.out.println(vfo.getNome_funcao());System.out.println(vfo.getTempo_padrao());System.out.println(j);if(cola!=null){if(co.getID_colaborador()==cola){System.out.println("Mesmo colaborador");listaop.add(op);vfo.setLista(listaop);}else{System.out.println("aaaa");listafu.add(vfo);}}cola=co.getID_colaborador();System.out.println("--------------------");}cola=co.getID_colaborador();}//this.dispose();}catch(Exceptione){JOptionPane.showMessageDialog(null,"Valor de data digitados errados Erro:\n"+e);}try{RelatorioColaborador_Brancorelatorio=newRelatorioColaborador_Branco();relatorio.imprimir(listafu);}catch(Exceptionex){Logger.getLogger(Frame_Operacao.class.getName()).log(Level.SEVERE,null,ex);System.out.println(ex.getMessage());}}}