Skip to content

Commit

Permalink
PRONTO FINALMENTE
Browse files Browse the repository at this point in the history
  • Loading branch information
gianluca-magnabosco committed Feb 13, 2023
1 parent b7a75fd commit 642d3f5
Show file tree
Hide file tree
Showing 18 changed files with 856 additions and 7 deletions.
Binary file added relatorioClientes.pdf
Binary file not shown.
Binary file added relatorioClientesFieis.pdf
Binary file not shown.
Binary file added relatorioPedidosComData.pdf
Binary file not shown.
Binary file added relatorioPedidosSemData.pdf
Binary file not shown.
Binary file added relatorioReceitasComData.pdf
Binary file not shown.
Binary file added relatorioReceitasSemData.pdf
Binary file not shown.
51 changes: 48 additions & 3 deletions src/java/com/ufpr/tads/web2/controller/RelatorioServlet.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import com.ufpr.tads.web2.exception.AppException;
import com.ufpr.tads.web2.exception.DAOException;
import com.ufpr.tads.web2.exception.DadoInvalidoException;
import com.ufpr.tads.web2.model.beans.LoginBean;
import com.ufpr.tads.web2.model.facade.RelatorioFacade;
import com.ufpr.tads.web2.util.Validacao;
Expand All @@ -13,6 +14,9 @@
import jakarta.servlet.http.HttpServletResponse;
import jakarta.servlet.http.HttpSession;
import java.io.OutputStream;
import java.text.ParseException;
import java.util.logging.Level;
import java.util.logging.Logger;
import net.sf.jasperreports.engine.JRException;

/**
Expand Down Expand Up @@ -45,6 +49,16 @@ protected void doGet(HttpServletRequest request, HttpServletResponse response)
switch (action) {

case "redirect" -> {
String dataInicio = request.getParameter("dataInicio");
String dataFim = request.getParameter("dataFim");
String tipo = request.getParameter("tipo");

if ((dataInicio != null && !dataInicio.isEmpty()) && (dataFim != null && !dataFim.isEmpty()) && (tipo != null && !tipo.isEmpty())) {
request.setAttribute("tipo", tipo);
request.setAttribute("dataInicio", dataInicio);
request.setAttribute("dataFim", dataFim);
}

request.getRequestDispatcher("funcionario/relatorios.jsp").forward(request, response);
return;
}
Expand All @@ -54,19 +68,30 @@ protected void doGet(HttpServletRequest request, HttpServletResponse response)
String jasper = request.getContextPath() + "/relatorios/receitas.jasper";
String host = "http://" + request.getServerName() + ":" + request.getServerPort();

String dataInicio = request.getParameter("dataInicio");
String dataFim = request.getParameter("dataFim");

response.setContentType("application/pdf");
OutputStream output = response.getOutputStream();

RelatorioFacade.gerarRelatorio(jasper, host, output);
RelatorioFacade.gerarRelatorioComData(jasper, host, output, dataInicio, dataFim);

return;

} catch (DAOException e) {
e.printStackTrace();
request.setAttribute("mensagem", "Erro de DAO: " + e.getMessage());
request.getRequestDispatcher("funcionario/relatorios.jsp").forward(request, response);
return;
} catch (JRException | IOException e) {
e.printStackTrace();
request.setAttribute("mensagem", "Erro no Jasper: " + e.getMessage());
request.getRequestDispatcher("funcionario/relatorios.jsp").forward(request, response);
return;
} catch (ParseException e) {
request.setAttribute("mensagem", "Erro no Jasper: " + e.getMessage());
request.getRequestDispatcher("funcionario/relatorios.jsp").forward(request, response);
return;
}
}

Expand All @@ -80,14 +105,18 @@ protected void doGet(HttpServletRequest request, HttpServletResponse response)

RelatorioFacade.gerarRelatorio(jasper, host, output);

return;

} catch (DAOException e) {
e.printStackTrace();
request.setAttribute("mensagem", "Erro de DAO: " + e.getMessage());
request.getRequestDispatcher("funcionario/relatorios.jsp").forward(request, response);
return;
} catch (JRException | IOException e) {
e.printStackTrace();
request.setAttribute("mensagem", "Erro no Jasper: " + e.getMessage());
request.getRequestDispatcher("funcionario/relatorios.jsp").forward(request, response);
return;
}
}

Expand All @@ -101,36 +130,52 @@ protected void doGet(HttpServletRequest request, HttpServletResponse response)

RelatorioFacade.gerarRelatorio(jasper, host, output);

return;

} catch (DAOException e) {
e.printStackTrace();
request.setAttribute("mensagem", "Erro de DAO: " + e.getMessage());
request.getRequestDispatcher("funcionario/relatorios.jsp").forward(request, response);
return;
} catch (JRException | IOException e) {
e.printStackTrace();
request.setAttribute("mensagem", "Erro no Jasper: " + e.getMessage());
request.getRequestDispatcher("funcionario/relatorios.jsp").forward(request, response);
return;
}
}

case "pedidos" -> {
try {
String jasper = request.getContextPath() + "/relatorios/pedidos.jasper";
String host = "http://" + request.getServerName() + ":" + request.getServerPort();

String dataInicio = request.getParameter("dataInicio");
String dataFim = request.getParameter("dataFim");

response.setContentType("application/pdf");
OutputStream output = response.getOutputStream();

RelatorioFacade.gerarRelatorio(jasper, host, output);

RelatorioFacade.gerarRelatorioComData(jasper, host, output, dataInicio, dataFim);

return;

} catch (DAOException e) {
e.printStackTrace();
request.setAttribute("mensagem", "Erro de DAO: " + e.getMessage());
request.getRequestDispatcher("funcionario/relatorios.jsp").forward(request, response);
return;
} catch (JRException | IOException e) {
e.printStackTrace();
request.setAttribute("mensagem", "Erro no Jasper: " + e.getMessage());
request.getRequestDispatcher("funcionario/relatorios.jsp").forward(request, response);
}
return;
} catch (ParseException e) {
request.setAttribute("mensagem", "Erro no Jasper: " + e.getMessage());
request.getRequestDispatcher("funcionario/relatorios.jsp").forward(request, response);
return;
}
}

default -> {
Expand Down
41 changes: 41 additions & 0 deletions src/java/com/ufpr/tads/web2/model/facade/RelatorioFacade.java
Original file line number Diff line number Diff line change
@@ -1,11 +1,16 @@
package com.ufpr.tads.web2.model.facade;

import com.ufpr.tads.web2.exception.DAOException;
import com.ufpr.tads.web2.exception.DadoInvalidoException;
import com.ufpr.tads.web2.model.dao.ConnectionFactory;
import java.io.IOException;
import java.io.OutputStream;
import java.net.URL;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JasperRunManager;

Expand All @@ -28,4 +33,40 @@ public static void gerarRelatorio(String jasper, String host, OutputStream outpu
}
}
}

public static void gerarRelatorioComData(String jasper, String host, OutputStream output, String dataInicio, String dataFim) throws IOException, DAOException, JRException, ParseException, DadoInvalidoException {
try (ConnectionFactory factory = new ConnectionFactory()) {

Date dateInicio = new Date();
Date dateFim = new Date();

if ((dataInicio != null && !dataInicio.equals("")) && (dataFim != null && !dataFim.equals(""))) {
try {
SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
dateInicio = formatter.parse(dataInicio);
dateFim = formatter.parse(dataFim);
} catch (Exception e) {
throw new DadoInvalidoException("Data inserida eh invalida");
}
}

URL jasperURL = new URL(host + jasper);

Map<String, Object> parameters = new HashMap<>();

if ((dataInicio != null && !dataInicio.equals("")) && (dataFim != null && !dataFim.equals(""))) {
parameters.put("data_inicio", dateInicio);
parameters.put("data_fim", dateFim);
}

byte[] bytes;
bytes = JasperRunManager.runReportToPdf(jasperURL.openStream(), parameters, factory.getConnection());
if (bytes != null) {
output.write(bytes);
}
}
}



}
81 changes: 77 additions & 4 deletions web/funcionario/relatorios.jsp
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,16 @@
<link rel="stylesheet" type="text/css" href="<c:url value='/css/relatorios.css'/>">
<link rel="stylesheet"
href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css"
>
>
<script type="text/javascript"
src="https://code.jquery.com/jquery-3.4.1.min.js"
integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo="
crossorigin="anonymous">
</script>
<script src="https://cdn.jsdelivr.net/jquery/latest/jquery.min.js"></script>
<script src="https://cdn.jsdelivr.net/momentjs/latest/moment.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/daterangepicker/daterangepicker.min.js"></script>
<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/daterangepicker/daterangepicker.css"/>
</head>

<body>
Expand All @@ -26,6 +35,14 @@
<c:param name="message" value="Voce precisa estar logado em uma conta de funcionário para acessar esta pagina!"/>
</c:redirect>
</c:if>
<c:if test="${not empty tipo and not empty dataInicio and not empty dataFim}">
<c:redirect url="/relatorio">
<c:param name="action" value="${tipo}"/>
<c:param name="dataInicio" value="${dataInicio}"/>
<c:param name="dataFim" value="${dataFim}"/>
</c:redirect>
</c:if>
<c:import url="header.jsp"/>
Expand All @@ -42,11 +59,65 @@
<h2 class="pedidos-aberto">Área de Geração de Relatórios</h2>
<h4 class="pedidos-aberto">Clique no relatório que deseja baixar!</h4><br/>
<div class="botoesRelatorio">
<a href="<c:url value='/relatorio?action=receitas'/>"><button class="btn btn-info btn-sm botao">Gerar relatório de receitas em PDF</button></a><br/><br/>
<div>
<button class="btn btn-info btn-sm botao receitas">Gerar relatório de receitas em PDF</button><br/><br/>
<div class="mb-2" style="margin-inline: 20%">
<input type="checkbox" id="checkBoxReceitas" name="checkBoxReceitas"/>
<span class="mb-2">Filtrar por data</span>
</div>
<label for="dateRange" style="display: flex;">
<h5 class="mt-1 mr-2 al">Período: </h5>
<input type="text" class="form-control" style="width: 40%;" id="dateRange"/>
<div class="input-group-text">
<i class="fa fa-calendar-alt"></i>
</div>
</label>
<br/><br/>
<script>
$(".receitas").on("click", () => {
if ($("#checkBoxReceitas").prop("checked")) {
return;
}
location.href="<c:url value='/relatorio?action=receitas'/>";
});
</script>
</div>
<a href="<c:url value='/relatorio?action=clientes'/>"><button class="btn btn-info btn-sm botao">Gerar relatório de clientes em PDF</button></a><br/><br/>
<a href="<c:url value='/relatorio?action=clientesFieis'/>"><button id="botaoS" class="btn btn-info btn-sm">Gerar relatório de clientes fiéis em PDF</button></a><br/><br/>
<a href="<c:url value='/relatorio?action=pedidos'/>"><button class="btn btn-info btn-sm botao">Gerar relatório de pedidos em PDF</button></a><br/><br/>
<div>
<button class="btn btn-info btn-sm botao pedidos">Gerar relatório de pedidos em PDF</button><br/><br/>
<div class="mb-2" style="margin-inline: 20%">
<input type="checkbox" id="checkBoxPedidos" name="checkBoxPedidos"/>
<span>Filtrar por data</span>
</div>
<label for="dateRange2" style="display: flex;">
<h5 class="mt-1 mr-2">Período: </h5>
<input type="text" style="width: 40%;" class="form-control" id="dateRange2"/>
<div class="input-group-text">
<i class="fa fa-calendar-alt"></i>
</div>
</label>
<br/><br/>
<script>
$(".pedidos").on("click", () => {
if ($("#checkBoxPedidos").prop("checked")) {
return;
}
location.href="<c:url value='/relatorio?action=pedidos'/>";
});
</script>
</div>
<style>
.botao {
padding: 50px 110px 50px 110px;
Expand All @@ -65,6 +136,8 @@
</div>
<c:import url="/footer.jsp"/>
<script type="text/javascript" src="<c:url value='/js/relatorios.js'/>"></script>
</body>
</html>
54 changes: 54 additions & 0 deletions web/js/relatorios.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@


$(function() {
$('#dateRange').daterangepicker({locale: {format: "DD/MM/YYYY"}
}, function(start, end, label) {

let dataInicio = new Date(moment(start.format("DD/MM/YYYY"), "DD/MM/YYYY"));
let dataFim = new Date(moment(end.format("DD/MM/YYYY"), "DD/MM/YYYY"));

let options = { year: 'numeric', month: '2-digit', day: '2-digit' };

dataInicio = dataInicio.toLocaleDateString('pt-BR', options);
dataFim = dataFim.toLocaleDateString('pt-BR', options);

if ($("#checkBoxReceitas").prop("checked")) {
let urlReceitas = "relatorio?action=redirect&tipo=receitas&dataInicio=" + dataInicio + "&dataFim=" + dataFim;
location.href = urlReceitas;
}

});
});


$('#dateRange').on("keypress paste", function() {
return false;
});




$(function() {
$('#dateRange2').daterangepicker({locale: {format: "DD/MM/YYYY"}
}, function(start, end, label) {

var dataInicio = new Date(moment(start.format("DD/MM/YYYY"), "DD/MM/YYYY"));
var dataFim = new Date(moment(end.format("DD/MM/YYYY"), "DD/MM/YYYY"));

let options = { year: 'numeric', month: '2-digit', day: '2-digit' };

dataInicio = dataInicio.toLocaleDateString('pt-BR', options);
dataFim = dataFim.toLocaleDateString('pt-BR', options);

if ($("#checkBoxPedidos").prop("checked")) {
let urlPedidos = "relatorio?action=redirect&tipo=pedidos&dataInicio=" + dataInicio + "&dataFim=" + dataFim;
location.href = urlPedidos;
}

});
});


$('#dateRange2').on("keypress paste", function() {
return false;
});
Binary file modified web/relatorios/clientes.jasper
Binary file not shown.
Loading

0 comments on commit 642d3f5

Please sign in to comment.