7
Good morning guys, this is a somewhat complicated question to explain, so I will do my best to make the question clear.
I have a list <UnimedLote>
. In this list I have several data, among these data I want to list more than once, for example. A Beneficiary may have several procedures, so each time I generated the report he listed the procedures within that beneficiary in such a way:
Note the Completion Date, Service Description... The data is listed within the Beneficiary.
I can list all the data, but it always repeats the name of the Beneficiary, and does not list the procedures within it. I can do this:
Notice that I can list all but separate ones. Can anyone help me figure out where I have to put them? Follows 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, as it is data that is not repeated, such as header, company name, etc. Method generating 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;
}
}
Anyone can help?
Band Detail - Jrxml file:
Method filling the list with data:
public List<Procedimentos> realizaLeituraXML(String arquivoXML) throws ParserConfigurationException, SAXException, IOException {
//fazer o parse do arquivo e criar o documento XML
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse(arquivoXML);
Element elem = doc.getDocumentElement();
NodeList tagdadosLote = 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;
}
Please avoid long discussions in the comments; your talk was moved to the chat
– Maniero