Skip to content

Commit

Permalink
Implementação dos relatorios, falta apenas alguns outros...
Browse files Browse the repository at this point in the history
  • Loading branch information
WenderGalan committed Oct 14, 2018
1 parent 163d7df commit 6e2b80d
Show file tree
Hide file tree
Showing 8 changed files with 75 additions and 18 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import com.casafacilimoveis.model.entities.Anuncio;
import com.casafacilimoveis.model.enums.TipoNegocio;
import com.casafacilimoveis.model.enums.TipoRelatorio;
import com.casafacilimoveis.service.AnuncioService;
import com.casafacilimoveis.util.Constantes;
import io.swagger.annotations.Api;
Expand Down Expand Up @@ -149,10 +150,9 @@ public ResponseEntity excluirPorId(@PathVariable("id") Integer id) {
* @return relatorio
**/
@ApiOperation("Gera o relatório de listagem de anúncios a venda ou para alugar do usuário")
@Cacheable
@GetMapping("/relatorio/venda/{idUsuario}")
public ResponseEntity listagemVendaAluguel(@PathVariable("idUsuario") Integer idUsuario, @RequestParam TipoNegocio tipoNegocio) {
return anuncioService.relatorioVendaAluguel(idUsuario, tipoNegocio);
public ResponseEntity listagemVendaAluguel(@PathVariable("idUsuario") Integer idUsuario, @RequestParam TipoNegocio tipoNegocio, @RequestParam TipoRelatorio tipoRelatorio) {
return anuncioService.relatorioVendaAluguel(idUsuario, tipoNegocio, tipoRelatorio);
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package com.casafacilimoveis.model.enums;

public enum TipoRelatorio {

PDF(0), HTML(1), XML(2), TXT(3), CSV(4), JSON(5), XLS(6);

private int code;

TipoRelatorio(int code) {
this.code = code;
}

public int getCode() {
return code;
}

public void setCode(int code) {
this.code = code;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import com.casafacilimoveis.model.entities.Anuncio;
import com.casafacilimoveis.model.enums.TipoNegocio;
import com.casafacilimoveis.model.enums.TipoRelatorio;
import org.springframework.http.ResponseEntity;
import org.springframework.validation.BindingResult;

Expand Down Expand Up @@ -32,6 +33,6 @@ public interface AnuncioService {

public ResponseEntity excluirPorId(Integer id);

public ResponseEntity relatorioVendaAluguel(Integer idUsuario, TipoNegocio tipoNegocio);
public ResponseEntity relatorioVendaAluguel(Integer idUsuario, TipoNegocio tipoNegocio, TipoRelatorio tipoRelatorio);

}
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@
import com.casafacilimoveis.model.enums.TipoNegocio;
import org.springframework.http.ResponseEntity;

import java.util.List;

/**
* casafacilimoveis
* Wender Galan
Expand All @@ -21,5 +23,5 @@ public interface EmailService {

public ResponseEntity sendEmailContato(ContatoAnunciante contato, Integer idAnuncio);

public ResponseEntity sendEmailWithAttachement(String arquivo, String to, String subject, String text);
public ResponseEntity sendEmailWithAttachement(String arquivos, String to, String subject, String text);
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import com.casafacilimoveis.model.entities.Usuario;
import com.casafacilimoveis.model.enums.CodeError;
import com.casafacilimoveis.model.enums.TipoNegocio;
import com.casafacilimoveis.model.enums.TipoRelatorio;
import com.casafacilimoveis.repository.AnuncioRepository;
import com.casafacilimoveis.repository.EnderecoRepository;
import com.casafacilimoveis.repository.UsuarioRepository;
Expand Down Expand Up @@ -143,7 +144,7 @@ public ResponseEntity excluirPorId(Integer id) {
}

@Override
public ResponseEntity relatorioVendaAluguel(Integer idUsuario, TipoNegocio tipoNegocio) {
public ResponseEntity relatorioVendaAluguel(Integer idUsuario, TipoNegocio tipoNegocio, TipoRelatorio tipoRelatorio) {
List<Anuncio> anuncios = anuncioRepository.findAllAnunciosByUserAndTipoNegocio(idUsuario, tipoNegocio);
Usuario usuario = usuarioRepository.findOneById(idUsuario);
if (anuncios != null && anuncios.size() > 0 && usuario != null) {
Expand All @@ -162,10 +163,10 @@ public ResponseEntity relatorioVendaAluguel(Integer idUsuario, TipoNegocio tipoN
"Atenciosamente,\nEquipe Casa Fácil Imóveis.";


String pdfGerado = Util.gerarRelatorio("listagemImoveis.jrxml", anuncios, usuario,
String arquivoGerado = Util.gerarRelatorio("listagemImoveis.jrxml", anuncios, usuario, tipoRelatorio,
new ReportParameter("titulo", titulo)
);
return emailService.sendEmailWithAttachement(pdfGerado, usuario.getEmail(), subject, text);
return emailService.sendEmailWithAttachement(arquivoGerado, usuario.getEmail(), subject, text);
} else {
return new ResponseEntity(new ResponseError(CodeError.USUARIO_NAO_POSSUI_ANUNCIOS,
"O usuário não possui anúncios suficientes para gerar relatório"), HttpStatus.BAD_REQUEST);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import com.casafacilimoveis.model.entities.ContatoAnunciante;
import com.casafacilimoveis.repository.AnuncioRepository;
import com.casafacilimoveis.service.EmailService;
import com.google.common.io.Files;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.io.FileSystemResource;
import org.springframework.http.HttpStatus;
Expand Down Expand Up @@ -119,6 +120,4 @@ public ResponseEntity sendEmailWithAttachement(String arquivo, String to, String
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).build();
}
}


}
47 changes: 40 additions & 7 deletions Back-end/src/main/java/com/casafacilimoveis/util/Util.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,11 @@

import com.casafacilimoveis.model.beans.Validation;
import com.casafacilimoveis.model.entities.Usuario;
import com.casafacilimoveis.model.enums.TipoRelatorio;
import net.sf.jasperreports.engine.*;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
import net.sf.jasperreports.engine.design.JasperDesign;
import net.sf.jasperreports.engine.export.JRCsvExporter;
import net.sf.jasperreports.engine.xml.JRXmlLoader;
import org.springframework.validation.ObjectError;
import org.springframework.web.multipart.MultipartFile;
Expand All @@ -14,6 +16,8 @@
import java.io.IOException;
import java.util.*;

import static com.casafacilimoveis.model.enums.TipoRelatorio.*;

/**
* casa-facil-imoveis
* Wender Galan
Expand Down Expand Up @@ -64,7 +68,7 @@ public static File convert(MultipartFile file) throws IllegalStateException, IOE
return convFile;
}

public static String gerarRelatorio(String layout, List result, Usuario usuario, ReportParameter... reportParameters) {
public static String gerarRelatorio(String layout, List result, Usuario usuario, TipoRelatorio tipoRelatorio, ReportParameter... reportParameters) {
try {
//criando o layout do relatorio a partir do jasper
JasperDesign desenho = JRXmlLoader.load(JASPER_DIR + layout);
Expand All @@ -86,16 +90,45 @@ public static String gerarRelatorio(String layout, List result, Usuario usuario,
File outDir = new File(REPORT_DIR);
outDir.mkdirs();

//o nome do arquivo pdf será a data/hora atual no formato long
String nomeArquivo = new Date().getTime() + ".pdf";
JasperExportManager.exportReportToPdfFile(jasperPrint, REPORT_DIR + nomeArquivo);

//retorna o caminho do pdf gerado
return REPORT_DIR + nomeArquivo;
if (tipoRelatorio != null && tipoRelatorio == PDF || tipoRelatorio == HTML || tipoRelatorio == XML) {
//o nome do arquivo pdf será a data/hora atual no formato long
String nomeArquivo = null;
switch (tipoRelatorio) {
case PDF:
nomeArquivo = new Date().getTime() + ".pdf";
JasperExportManager.exportReportToPdfFile(jasperPrint, REPORT_DIR + nomeArquivo);
break;
case HTML:
nomeArquivo = new Date().getTime() + ".html";
JasperExportManager.exportReportToHtmlFile(jasperPrint, REPORT_DIR + nomeArquivo);
break;
case XML:
nomeArquivo = new Date().getTime() + ".xml";
JasperExportManager.exportReportToXmlFile(jasperPrint, REPORT_DIR + nomeArquivo, false);
break;
}
//retorna o caminho do pdf gerado
return REPORT_DIR + nomeArquivo;
} else if (tipoRelatorio != null && tipoRelatorio == CSV) {
String nomeArquivo = new Date().getTime() + ".csv";
convertToCsv(jasperPrint, nomeArquivo);
return REPORT_DIR + nomeArquivo;
}
} catch (JRException e) {
e.printStackTrace();
}
return null;
}

public static void convertToCsv(JasperPrint jasperPrint, String nomeArquivo){
try {
JRCsvExporter exporterCSV = new JRCsvExporter();
exporterCSV.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
exporterCSV.setParameter(JRExporterParameter.OUTPUT_FILE_NAME, REPORT_DIR + nomeArquivo);
exporterCSV.exportReport();
} catch (JRException e) {
e.printStackTrace();
}
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import com.casafacilimoveis.model.entities.Usuario;
import com.casafacilimoveis.model.enums.TipoImovel;
import com.casafacilimoveis.model.enums.TipoNegocio;
import com.casafacilimoveis.model.enums.TipoRelatorio;
import com.casafacilimoveis.model.enums.TipoUsuario;
import org.junit.After;
import org.junit.Assert;
Expand Down Expand Up @@ -68,7 +69,7 @@ public void setUp() {

@Test
public void gerarRelatorioTest() {
pdfGerado = Util.gerarRelatorio("listagemImoveis.jrxml", anuncios, usuario,
pdfGerado = Util.gerarRelatorio("listagemImoveis.jrxml", anuncios, usuario, TipoRelatorio.PDF,
new ReportParameter("titulo", "TITULO TEST")
);
file = new File(pdfGerado);
Expand Down

0 comments on commit 6e2b80d

Please sign in to comment.