Good morning guys, this is a somewhat complicated issue to explain, so I'll do my best to make the question clear.
I have a <UnimedLote>
list. In this list I have several data, among these data there are some that I want to list more than once, for example. A Beneficiary can have several procedures, so each time I generate the report he lists the procedures within that beneficiary, in such a way:
NoticetheDateRealization,ServiceDescription...ThedataislistedwithintheBeneficiary.
Icanlistallthedata,howeveritalwaysrepeatsthenameoftheBeneficiary,anddoesnotlisttheprocedureswithinit.Icandothis:
Please note that I can list all but separate ones. Can someone help me figure out where to pack? Here is the code:
for (List<UnimedGuia> lst : listaAuxiliar) {
System.out.println("Numero do rel: " + nRel);
System.out.println("Nome do Arquivo: " + nomeArquivo1);
String nomePrestador = lista1.get(nRel).getNomePrestador();
String[] as = nomePrestador.split("/");
nomePrestador = as[0];
filtro = new HashMap<>();
filtro.put("Registro ANS", lista1.get(nRel).getRegistroANS());
filtro.put("Nome da Operadora", lista1.get(nRel).getNomeOperadora());
filtro.put("CNPJ Operadora", lista1.get(nRel).getCnpjOperadora());
filtro.put("Nr. Demonstrativo", lista1.get(nRel).getNumeroDemonstrativo());
filtro.put("Data Emissao Demonstrativo", lista1.get(nRel).getDataEmissaoDemonstrativo());
filtro.put("Data Competencia", lista1.get(nRel).getDataCompetencia());
filtro.put("CodPrestador", lista1.get(nRel).getCodigoPrestador());
filtro.put("NomePrestador", lista1.get(nRel).getNomePrestador());
filtro.put("CNES", lista1.get(nRel).getCodigoCNES());
filtro.put("NumLote", lista.get(nRel).getNumeroLote());
filtro.put("DataEnvioLote", lista.get(nRel).getDataEnvioLote());
filtro.put("NumProtocolo", lista.get(nRel).getNumeroProtocolo());
filtro.put("ValorProtocolo", lista1.get(nRel).getValorLiberadoGeral());
filtro.put("ValorProcessadoGeral", lista1.get(nRel).getValorProcessadoGeral());
filtro.put("ValorGlosaGeral", lista1.get(nRel).getValorGlosaGeral());
filtro.put("ValorLiberadoGeral", lista1.get(nRel).getValorLiberadoGeral());
codArquivoPrestador = lista1.get(nRel).getCodigoPrestador();
relatorio = gerarRelatorio(lst, nRel, nomePrestador, dataSistema);
}
Some data is passed by parameters to the report because it is data that is not repeated, such as header, company name, etc. Method that generates the report:
public boolean gerarRelatorio(List list, int numeroRelatorio,
String nomePrestador, String dataSistema) {
JasperReport report = null;
InputStream image = this.getClass().getResourceAsStream(
"/br/com/xml/relatorio/LOGO.png");
filtro.put("Image", image);
try {
InputStream inputStreamReal = getClass().getResourceAsStream(
"/br/com/xml/relatorio/Relatorio2.jrxml");
report = JasperCompileManager.compileReport(inputStreamReal);
} catch (JRException ex) {
Logger.getLogger(frmPegaXml.class.getName()).log(Level.SEVERE,
null, ex);
JOptionPane.showMessageDialog(null, "Erro ao pegar arquivos!",
"ERRO!", JOptionPane.ERROR_MESSAGE);
}
try {
JasperPrint print = JasperFillManager.fillReport(report, filtro,
new JRBeanCollectionDataSource(list));
JasperExportManager.exportReportToPdfFile(print,
"C:/Demonstrativos/" + dataSistema + "/" + nomePrestador
+ "_" + dataSistema + "_" + numeroRelatorio
+ ".pdf");
/* Variaveis necessarias para salvar o Arquivo */
caminho1 = "C:/Demonstrativos/" + dataSistema + "/";
ext = ".zip";
nomeArquivo1 = nomePrestador + "_" + dataSistema + "_"
+ numeroRelatorio;
caminhoCompleto = caminho1 + nomeArquivo1 + ".pdf";
codAP = Long.parseLong(codArquivoPrestador);
// salvarArquivos(caminhoRar, ext, nomeArquivo1, codAP);
relatoriosGerados = numeroRelatorio + 1;
return true;
/* Variaveis necessarias para salvar o Arquivo */
} catch (JRException ex) {
Logger.getLogger(frmPegaXml.class.getName()).log(Level.SEVERE,
null, ex);
JOptionPane
.showMessageDialog(
null,
"Erro ao Gerar relatório, verifique se nenhum arquivo está aberto ou se o nome está correto!\n"
+ ex, "ERRO!", JOptionPane.ERROR_MESSAGE);
return false;
}
}
Can anyone help?
Band Detail - Jrxml File:
Methodthatpopulateslistwithdata:
publicList<Procedimentos>realizaLeituraXML(StringarquivoXML)throwsParserConfigurationException,SAXException,IOException{//fazeroparsedoarquivoecriarodocumentoXMLDocumentBuilderFactorydbf=DocumentBuilderFactory.newInstance();DocumentBuilderdb=dbf.newDocumentBuilder();Documentdoc=db.parse(arquivoXML);Elementelem=doc.getDocumentElement();NodeListtagdadosLote=elem.getElementsByTagName("unimed:dadosLote");
List<Procedimentos> listaLote = new ArrayList<>();
System.out.printf("\n tagdadosLote %s ", tagdadosLote.getLength());
for (int i = 0; i < tagdadosLote.getLength(); i++) {
NumeroLote n = new NumeroLote();
String lote = "";
Element elementoLote = (Element) tagdadosLote.item(i);
lote = pegaTag(elementoLote, "unimed:numeroLote");
NodeList tagGuia = (NodeList) elementoLote.getElementsByTagName("unimed:guia");
// Como sabemos pela estrutura que só tem 1 elemento não necessitamos de um for podendo fixar o indice.
NodeList tagdadosGuia = ((Element) tagGuia.item(0)).getElementsByTagName("unimed:dadosGuia");
for (int y = 0; y < tagdadosGuia.getLength(); y++) {
Procedimentos contato = new Procedimentos();
NodeList tagBeneficiario0 = ((Element) tagdadosGuia.item(y)).getElementsByTagName("unimed:beneficiario");
NodeList tagProcedimentos = ((Element) tagdadosGuia.item(y)).getElementsByTagName("unimed:procedimentos");
NodeList tagProcedimentos1 = ((Element) tagProcedimentos.item(0)).getElementsByTagName("unimed:dadosProcedimento");
Element elementoBeneficiarioname = (Element) tagdadosGuia.item(y);
String nomeBeneficiario = (pegaTag(elementoBeneficiarioname, "unimed:nomeBeneficiario"));
contato.setNomeBeneficiario(nomeBeneficiario);
for (int a = 0; a < tagProcedimentos1.getLength(); a++) {
NodeList tagProcedimento = ((Element) tagProcedimentos1.item(a)).getElementsByTagName("unimed:procedimento");
for (int b = 0; b < tagProcedimento.getLength(); b++) {
//Aqui é onde pego os demais dados Do arquivo XML e passo para meu objeto "contato"
//Deixei vazio pois é um metodo muito extenso
listaLote.add(contato);
}
}
}
}
//System.err.println("Lista lote: " + listaLote);
return listaLote;
}