Relatório com Spring + hibernate + Thymeleaf (RETIFICANDO O POST ANTERIOR)

16/04/2019

0

Preados, Boa Tarde!

RETIFICANDO O POST ANTERIOR

Meu Amigo Esta desenvolvendo uma aplicação apenas com o Spring, hibernate e Thymeleaf. Ocorre que o mesmo precisa fazer com que o sistema gere um relatório.
Por exemplo existe uma lista de dados pessoais no banco do sistema, então quando o usuário apos logar ele clica em link e o sistema gera um relatório em PDF, conforme solicitado pelo o usuário final.

Segue códigos da aplicação no qual o mesmo precisa de uma ajuda apenas para chamar o relatório atrás de um link e não de um formulário!



View

<tbody>
<tr th:each="venda : ${pagina.conteudo}">
<td th:text="${venda.codigo}"></td>
<td th:text="${venda.cliente.nome}"></td>
<td th:text="${{venda.dataCriacao}}"></td>
<td th:text="|R$ ${{venda.valorTotal}}|"></td>
<td th:text="${venda.usuario.nome}"></td>
<td th:text="${venda.status.descricao}"></td>
<td class="text-center">
<a class="btn btn-link btn-xs js-tooltip" title="Editar"
th:href="@{/vendas/(codigo=${venda.codigo})}">
<i class="glyphicon glyphicon-pencil"></i>
</a>

<a class="btn btn-link btn-xs js-tooltip " title="Imprimir"
th:href="@{/relatorios/controleEntregas(codigo=${venda.codigo})}"
>

<i class="fa fa-fw fa-file-pdf-o"></i>
</a>
</td>
controller

@GetMapping("/controleEntregas")
public ModelAndView relatorioControleEntrega() {
ModelAndView mv = new ModelAndView("relatorio/RelatorioControleEntrega");
mv.addObject(new ControleEntregaCodigo());

return mv;
}

@PostMapping(value ="/controleEntregas", params = "emitir")
public ResponseEntity<byte[]> gerarControleEntrega(ControleEntregaCodigo controleEntregaCodigo) throws Exception {
byte[] relatorio = relatorioService.gerarControleEntrega(controleEntregaCodigo);
return ResponseEntity.ok().header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_PDF_VALUE)
.body(relatorio);
}



service

public byte[] gerarControleEntrega(ControleEntregaCodigo controleEntregaCodigo) throws Exception {

Map<String, Object> parametros = new HashMap<>();
parametros.put("format", "pdf");
parametros.put("codigo", controleEntregaCodigo.getCodigo());

InputStream inputStream = this.getClass().getResourceAsStream("/relatorios/relatorio_controle_entrega.jasper");

Connection con = this.dataSource.getConnection();

try {
JasperPrint jasperPrint = JasperFillManager.fillReport(inputStream, parametros, con);
return JasperExportManager.exportReportToPdf(jasperPrint);
} finally {
con.close();
}
}

Desde Ja sou imensamente grato pelo apoio!
ágabo Costa

ágabo Costa

Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar