Reintegrando branch do projeto de relatórios.
git-svn-id: http://desenvolvimento.rjconsultores.com.br/repositorio/sco/AdmVenta/Web/trunk/ventaboletos@27961 d1611594-4594-4d17-8e1d-87c2c4800839master
parent
94f4369b4d
commit
c422892f00
|
@ -0,0 +1,43 @@
|
||||||
|
package com.rjconsultores.ventaboletos.relatorios.datasource;
|
||||||
|
|
||||||
|
import com.rjconsultores.ventaboletos.relatorios.utilitarios.IDataSource;
|
||||||
|
|
||||||
|
import net.sf.jasperreports.engine.JRException;
|
||||||
|
import net.sf.jasperreports.engine.JRField;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*/
|
||||||
|
public class Vendas2CustomDS implements IDataSource {
|
||||||
|
|
||||||
|
private Object[][] data = {
|
||||||
|
{"João", "123123"},
|
||||||
|
{"Maria", "12312321"},
|
||||||
|
{"Bruno", "3243"},
|
||||||
|
{"Teste", "1234365612321"},
|
||||||
|
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
private int index = -1;
|
||||||
|
|
||||||
|
public Vendas2CustomDS() {
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean next() throws JRException {
|
||||||
|
index++;
|
||||||
|
return (index < data.length);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Object getFieldValue(JRField field) throws JRException {
|
||||||
|
Object value = null;
|
||||||
|
String fieldName = field.getName();
|
||||||
|
|
||||||
|
if ("field1".equals(fieldName)) {
|
||||||
|
value = data[index][0];
|
||||||
|
} else if ("field2".equals(fieldName)) {
|
||||||
|
value = data[index][1];
|
||||||
|
};
|
||||||
|
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,42 @@
|
||||||
|
package com.rjconsultores.ventaboletos.relatorios.datasource;
|
||||||
|
|
||||||
|
import com.rjconsultores.ventaboletos.relatorios.utilitarios.IDataSource;
|
||||||
|
import net.sf.jasperreports.engine.JRException;
|
||||||
|
import net.sf.jasperreports.engine.JRField;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*/
|
||||||
|
public class VendasCustomDS implements IDataSource {
|
||||||
|
|
||||||
|
private Object[][] data = {
|
||||||
|
{"João", "123123"},
|
||||||
|
{"Maria", "12312321"},
|
||||||
|
{"Bruno", "3243"},
|
||||||
|
{"Teste", "1234365612321"},
|
||||||
|
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
private int index = -1;
|
||||||
|
|
||||||
|
public VendasCustomDS() {
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean next() throws JRException {
|
||||||
|
index++;
|
||||||
|
return (index < data.length);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Object getFieldValue(JRField field) throws JRException {
|
||||||
|
Object value = null;
|
||||||
|
String fieldName = field.getName();
|
||||||
|
|
||||||
|
if ("field1".equals(fieldName)) {
|
||||||
|
value = data[index][0];
|
||||||
|
} else if ("field2".equals(fieldName)) {
|
||||||
|
value = data[index][1];
|
||||||
|
};
|
||||||
|
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,216 @@
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
package com.rjconsultores.ventaboletos.relatorios.parametros;
|
||||||
|
|
||||||
|
|
||||||
|
import java.sql.Connection;
|
||||||
|
import java.sql.PreparedStatement;
|
||||||
|
import java.sql.ResultSet;
|
||||||
|
import java.util.Map;
|
||||||
|
import com.rjconsultores.ventaboletos.relatorios.utilitarios.IParametros;
|
||||||
|
import com.rjconsultores.ventaboletos.web.utilerias.CurrencyUtil;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Bruno H. G. Gouvêa <bruno@rjconsultores.com.br>
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public class RendimentoParamsImpl implements IParametros {
|
||||||
|
|
||||||
|
/*
|
||||||
|
* (non-Javadoc)
|
||||||
|
*
|
||||||
|
* @see com.rjconsultores.ventaboletos.relatorios.utilitarios.IParametros#initParametros()
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void initParametros(Map<String, Object> parametros, Connection connection) throws Exception {
|
||||||
|
String sql = this.getSql();
|
||||||
|
|
||||||
|
PreparedStatement stmt = null;
|
||||||
|
ResultSet rset = null;
|
||||||
|
stmt = connection.prepareStatement(sql);
|
||||||
|
|
||||||
|
stmt.setInt(1, Integer.valueOf((String) parametros.get("CORRIDA_ID")));
|
||||||
|
stmt.setDate(2, (java.sql.Date) parametros.get("FECCORRIDA"));
|
||||||
|
rset = stmt.executeQuery();
|
||||||
|
|
||||||
|
if (rset.next()) {
|
||||||
|
parametros.put("P_NOMINAL_KM", CurrencyUtil.getCurrencyStrFromStr(rset.getString("NOMINAL_KM")));
|
||||||
|
parametros.put("P_TOTAL_ARRECADADO", CurrencyUtil.getCurrencyStrFromStr(rset.getString("TOTAL_ARRECADADO")));
|
||||||
|
parametros.put("P_ARRECADO_KM", CurrencyUtil.getCurrencyStrFromStr(rset.getString("ARRECADADO_KM")));
|
||||||
|
parametros.put("P_OCUPACAO", rset.getString("OCUPACAO")+" %");
|
||||||
|
parametros.put("P_OCUPACAO_ARRECADACAO", rset.getString("OCUPACAO_ARRECADACAO") +" %");
|
||||||
|
parametros.put("P_TOTAL_NOMINAL", CurrencyUtil.getCurrencyStrFromStr(rset.getString("TOTAL_NOMINAL")));
|
||||||
|
parametros.put("P_OCUPACAO_S_ARRECADACAO", rset.getString("OCUPACAO_S_ARRECADACAO") +" %");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private String getSql() {
|
||||||
|
|
||||||
|
StringBuilder sql = new StringBuilder();
|
||||||
|
|
||||||
|
sql.append("SELECT round(NVL(TAB.TOTAL_ARRECADADO,0),2) TOTAL_ARRECADADO, ");
|
||||||
|
sql.append(" round(NVL(TAB.TOTAL_ARRECADADO / TAB.KM_OCUPADA,0),2) ARRECADADO_KM, ");
|
||||||
|
sql.append(" round(NVL(TAB.TOTAL_NOMINAL,0),2) TOTAL_NOMINAL, ");
|
||||||
|
sql.append(" round(TAB.TOTAL_NOMINAL / TAB.KM_NOMINAL,2) NOMINAL_KM,");
|
||||||
|
sql.append(" round((TAB.TOTAL_OCUPADOS/TAB.TOTAL_ACENTOS)*100,1) OCUPACAO, ");
|
||||||
|
sql.append(" round(((TAB.TOTAL_OCUPADOS-TAB.TOTAL_OCUPADOS_GRATUIDADE)/TAB.TOTAL_ACENTOS)*100,1) OCUPACAO_ARRECADACAO, ");
|
||||||
|
sql.append(" round((TAB.TOTAL_OCUPADOS_GRATUIDADE/TAB.TOTAL_ACENTOS)*100,1) OCUPACAO_S_ARRECADACAO ");
|
||||||
|
sql.append(" ");
|
||||||
|
sql.append(" FROM ( ");
|
||||||
|
sql.append("SELECT (SELECT SUM(BO.PRECIOBASE) ");
|
||||||
|
sql.append(" FROM BOLETO BO ");
|
||||||
|
sql.append(" WHERE BO.CORRIDA_ID = CR.CORRIDA_ID ");
|
||||||
|
sql.append(" AND BO.FECCORRIDA = CR.FECCORRIDA ");
|
||||||
|
sql.append(" AND BO.ACTIVO = 1 ");
|
||||||
|
sql.append(" AND (BO.MOTIVOCANCELACION_ID IS NULL OR ");
|
||||||
|
sql.append(" BO.MOTIVOCANCELACION_ID = 0)) TOTAL_ARRECADADO, ");
|
||||||
|
sql.append(" ");
|
||||||
|
sql.append(" (SELECT SUM(TR.CANTKMREAL * DA.CANTASIENTOS) ");
|
||||||
|
sql.append(" FROM CORRIDA_TRAMO CT, ");
|
||||||
|
sql.append(" TRAMO TR, ");
|
||||||
|
sql.append(" ROL_OPERATIVO RO, ");
|
||||||
|
sql.append(" DIAGRAMA_AUTOBUS DA ");
|
||||||
|
sql.append(" WHERE CT.CORRIDA_ID = CR.CORRIDA_ID ");
|
||||||
|
sql.append(" AND CT.FECCORRIDA = CR.FECCORRIDA ");
|
||||||
|
sql.append(" AND RO.ROLOPERATIVO_ID = CR.ROLOPERATIVO_ID ");
|
||||||
|
sql.append(" AND DA.DIAGRAMAAUTOBUS_ID = RO.DIAGRAMAAUTOBUS_ID ");
|
||||||
|
sql.append(" AND TR.TRAMO_ID = CT.TRAMO_ID ");
|
||||||
|
sql.append(" AND CT.ACTIVO = 1) KM_NOMINAL, ");
|
||||||
|
sql.append(" ");
|
||||||
|
sql.append(" (SELECT SUM((SELECT TR.CANTKMREAL ");
|
||||||
|
sql.append(" FROM BOLETO BO, CORRIDA_TRAMO CTD, CORRIDA_TRAMO CTO ");
|
||||||
|
sql.append(" WHERE BO.CORRIDA_ID = CR.CORRIDA_ID ");
|
||||||
|
sql.append(" AND BO.FECCORRIDA = CR.FECCORRIDA ");
|
||||||
|
sql.append(" AND BO.NUMASIENTO = DD.ASIENTO ");
|
||||||
|
sql.append(" AND BO.ORIGEN_ID = CTO.ORIGEN_ID ");
|
||||||
|
sql.append(" AND BO.DESTINO_ID = CTD.DESTINO_ID ");
|
||||||
|
sql.append(" AND CTD.CORRIDA_ID = CR.CORRIDA_ID ");
|
||||||
|
sql.append(" AND CTD.FECCORRIDA = CR.FECCORRIDA ");
|
||||||
|
sql.append(" AND CTO.CORRIDA_ID = CR.CORRIDA_ID ");
|
||||||
|
sql.append(" AND CTO.FECCORRIDA = CR.FECCORRIDA ");
|
||||||
|
sql.append(" AND CTO.ACTIVO = 1 ");
|
||||||
|
sql.append(" AND CTD.ACTIVO = 1 ");
|
||||||
|
sql.append(" AND CT.NUMSECUENCIA BETWEEN CTO.NUMSECUENCIA AND ");
|
||||||
|
sql.append(" CTD.NUMSECUENCIA ");
|
||||||
|
sql.append(" AND BO.ACTIVO = 1 ");
|
||||||
|
sql.append(" AND (BO.MOTIVOCANCELACION_ID IS NULL OR ");
|
||||||
|
sql.append(" BO.MOTIVOCANCELACION_ID = 0))) ");
|
||||||
|
sql.append(" FROM CORRIDA_TRAMO CT, ");
|
||||||
|
sql.append(" TRAMO TR, ");
|
||||||
|
sql.append(" ROL_OPERATIVO RO, ");
|
||||||
|
sql.append(" DET_DIAGRAMA_AUTOBUS DD ");
|
||||||
|
sql.append(" WHERE ");
|
||||||
|
sql.append(" CR.FECCORRIDA = CT.FECCORRIDA ");
|
||||||
|
sql.append(" AND CR.CORRIDA_ID = CT.CORRIDA_ID ");
|
||||||
|
sql.append(" AND CT.TRAMO_ID = TR.TRAMO_ID ");
|
||||||
|
sql.append(" AND CR.ROLOPERATIVO_ID = RO.ROLOPERATIVO_ID ");
|
||||||
|
sql.append(" AND RO.DIAGRAMAAUTOBUS_ID = DD.DIAGRAMAAUTOBUS_ID ");
|
||||||
|
sql.append(" AND DD.VENDIBLE = 1 ");
|
||||||
|
sql.append(" AND CT.ACTIVO = 1) KM_OCUPADA, ");
|
||||||
|
sql.append(" (SELECT SUM(TF.PRECIO) ");
|
||||||
|
sql.append(" FROM CORRIDA_TRAMO CT, ");
|
||||||
|
sql.append(" TRAMO TR, ");
|
||||||
|
sql.append(" ROL_OPERATIVO RO, ");
|
||||||
|
sql.append(" DET_DIAGRAMA_AUTOBUS DD, ");
|
||||||
|
sql.append(" TARIFA TF ");
|
||||||
|
sql.append(" WHERE ");
|
||||||
|
sql.append(" CR.FECCORRIDA = CT.FECCORRIDA ");
|
||||||
|
sql.append(" AND CR.CORRIDA_ID = CT.CORRIDA_ID ");
|
||||||
|
sql.append(" AND CT.TRAMO_ID = TR.TRAMO_ID ");
|
||||||
|
sql.append(" AND CR.ROLOPERATIVO_ID = RO.ROLOPERATIVO_ID ");
|
||||||
|
sql.append(" AND RO.DIAGRAMAAUTOBUS_ID = DD.DIAGRAMAAUTOBUS_ID ");
|
||||||
|
sql.append(" AND TF.TRAMO_ID = CT.TRAMO_ID ");
|
||||||
|
sql.append(" AND TF.ORIGEN_ID = CT.ORIGEN_ID ");
|
||||||
|
sql.append(" AND TF.DESTINO_ID = CT.DESTINO_ID ");
|
||||||
|
sql.append(" AND DD.VENDIBLE = 1 ");
|
||||||
|
sql.append(" AND CT.ACTIVO = 1) TOTAL_NOMINAL, ");
|
||||||
|
sql.append(" ");
|
||||||
|
sql.append(" (SELECT COUNT(1) ");
|
||||||
|
sql.append(" FROM CORRIDA_TRAMO CT, ");
|
||||||
|
sql.append(" TRAMO TR, ");
|
||||||
|
sql.append(" ROL_OPERATIVO RO, ");
|
||||||
|
sql.append(" DET_DIAGRAMA_AUTOBUS DD ");
|
||||||
|
sql.append(" WHERE ");
|
||||||
|
sql.append(" ");
|
||||||
|
sql.append(" CR.FECCORRIDA = CT.FECCORRIDA ");
|
||||||
|
sql.append(" AND CR.CORRIDA_ID = CT.CORRIDA_ID ");
|
||||||
|
sql.append(" AND CT.TRAMO_ID = TR.TRAMO_ID ");
|
||||||
|
sql.append(" AND CR.ROLOPERATIVO_ID = RO.ROLOPERATIVO_ID ");
|
||||||
|
sql.append(" AND RO.DIAGRAMAAUTOBUS_ID = DD.DIAGRAMAAUTOBUS_ID ");
|
||||||
|
sql.append(" AND DD.VENDIBLE = 1 ");
|
||||||
|
sql.append(" AND CT.ACTIVO = 1) TOTAL_ACENTOS, ");
|
||||||
|
sql.append(" ");
|
||||||
|
sql.append(" (SELECT COUNT( ");
|
||||||
|
sql.append(" (SELECT 1 ");
|
||||||
|
sql.append(" FROM BOLETO BO, CORRIDA_TRAMO CTD, CORRIDA_TRAMO CTO ");
|
||||||
|
sql.append(" WHERE BO.CORRIDA_ID = CR.CORRIDA_ID ");
|
||||||
|
sql.append(" AND BO.FECCORRIDA = CR.FECCORRIDA ");
|
||||||
|
sql.append(" AND BO.NUMASIENTO = DD.ASIENTO ");
|
||||||
|
sql.append(" AND BO.ORIGEN_ID = CTO.ORIGEN_ID ");
|
||||||
|
sql.append(" AND BO.DESTINO_ID = CTD.DESTINO_ID ");
|
||||||
|
sql.append(" AND CTD.CORRIDA_ID = CR.CORRIDA_ID ");
|
||||||
|
sql.append(" AND CTD.FECCORRIDA = CR.FECCORRIDA ");
|
||||||
|
sql.append(" AND CTO.CORRIDA_ID = CR.CORRIDA_ID ");
|
||||||
|
sql.append(" AND CTO.FECCORRIDA = CR.FECCORRIDA ");
|
||||||
|
sql.append(" AND CTO.ACTIVO = 1 ");
|
||||||
|
sql.append(" AND CTD.ACTIVO = 1 ");
|
||||||
|
sql.append(" AND CT.NUMSECUENCIA BETWEEN CTO.NUMSECUENCIA AND CTD.NUMSECUENCIA ");
|
||||||
|
sql.append(" AND BO.ACTIVO = 1 ");
|
||||||
|
sql.append(" AND (BO.MOTIVOCANCELACION_ID IS NULL OR ");
|
||||||
|
sql.append(" BO.MOTIVOCANCELACION_ID = 0))) ");
|
||||||
|
sql.append(" FROM ");
|
||||||
|
sql.append(" CORRIDA_TRAMO CT, ");
|
||||||
|
sql.append(" TRAMO TR, ");
|
||||||
|
sql.append(" ROL_OPERATIVO RO, ");
|
||||||
|
sql.append(" DET_DIAGRAMA_AUTOBUS DD ");
|
||||||
|
sql.append(" WHERE ");
|
||||||
|
sql.append(" CR.FECCORRIDA = CT.FECCORRIDA ");
|
||||||
|
sql.append(" AND CR.CORRIDA_ID = CT.CORRIDA_ID ");
|
||||||
|
sql.append(" AND CT.TRAMO_ID = TR.TRAMO_ID ");
|
||||||
|
sql.append(" AND CR.ROLOPERATIVO_ID = RO.ROLOPERATIVO_ID ");
|
||||||
|
sql.append(" AND RO.DIAGRAMAAUTOBUS_ID = DD.DIAGRAMAAUTOBUS_ID ");
|
||||||
|
sql.append(" AND DD.VENDIBLE = 1 ");
|
||||||
|
sql.append(" AND CT.ACTIVO = 1) TOTAL_OCUPADOS, ");
|
||||||
|
sql.append(" (SELECT COUNT( ");
|
||||||
|
sql.append(" (SELECT 1 ");
|
||||||
|
sql.append(" FROM BOLETO BO, CORRIDA_TRAMO CTD, CORRIDA_TRAMO CTO ");
|
||||||
|
sql.append(" WHERE BO.CORRIDA_ID = CR.CORRIDA_ID ");
|
||||||
|
sql.append(" AND BO.FECCORRIDA = CR.FECCORRIDA ");
|
||||||
|
sql.append(" AND BO.NUMASIENTO = DD.ASIENTO ");
|
||||||
|
sql.append(" AND BO.ORIGEN_ID = CTO.ORIGEN_ID ");
|
||||||
|
sql.append(" AND BO.DESTINO_ID = CTD.DESTINO_ID ");
|
||||||
|
sql.append(" AND CTD.CORRIDA_ID = CR.CORRIDA_ID ");
|
||||||
|
sql.append(" AND CTD.FECCORRIDA = CR.FECCORRIDA ");
|
||||||
|
sql.append(" AND CTO.CORRIDA_ID = CR.CORRIDA_ID ");
|
||||||
|
sql.append(" AND CTO.FECCORRIDA = CR.FECCORRIDA ");
|
||||||
|
sql.append(" AND BO.PRECIOBASE = 0 ");
|
||||||
|
sql.append(" AND CTO.ACTIVO = 1 ");
|
||||||
|
sql.append(" AND CTD.ACTIVO = 1 ");
|
||||||
|
sql.append(" AND CT.NUMSECUENCIA BETWEEN CTO.NUMSECUENCIA AND CTD.NUMSECUENCIA ");
|
||||||
|
sql.append(" AND BO.ACTIVO = 1 ");
|
||||||
|
sql.append(" AND (BO.MOTIVOCANCELACION_ID IS NULL OR ");
|
||||||
|
sql.append(" BO.MOTIVOCANCELACION_ID = 0))) ");
|
||||||
|
sql.append(" FROM ");
|
||||||
|
sql.append(" CORRIDA_TRAMO CT, ");
|
||||||
|
sql.append(" TRAMO TR, ");
|
||||||
|
sql.append(" ROL_OPERATIVO RO, ");
|
||||||
|
sql.append(" DET_DIAGRAMA_AUTOBUS DD ");
|
||||||
|
sql.append(" WHERE ");
|
||||||
|
sql.append(" CR.FECCORRIDA = CT.FECCORRIDA ");
|
||||||
|
sql.append(" AND CR.CORRIDA_ID = CT.CORRIDA_ID ");
|
||||||
|
sql.append(" AND CT.TRAMO_ID = TR.TRAMO_ID ");
|
||||||
|
sql.append(" AND CR.ROLOPERATIVO_ID = RO.ROLOPERATIVO_ID ");
|
||||||
|
sql.append(" AND RO.DIAGRAMAAUTOBUS_ID = DD.DIAGRAMAAUTOBUS_ID ");
|
||||||
|
sql.append(" AND DD.VENDIBLE = 1 ");
|
||||||
|
sql.append(" AND CT.ACTIVO = 1) TOTAL_OCUPADOS_GRATUIDADE ");
|
||||||
|
sql.append(" FROM CORRIDA CR ");
|
||||||
|
sql.append(" WHERE CR.CORRIDA_ID = ? ");
|
||||||
|
sql.append(" AND CR.FECCORRIDA = ? ");
|
||||||
|
sql.append(" ) TAB");
|
||||||
|
|
||||||
|
return sql.toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,106 @@
|
||||||
|
package com.rjconsultores.ventaboletos.relatorios.render;
|
||||||
|
|
||||||
|
import java.io.InputStream;
|
||||||
|
import java.sql.Connection;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
import net.sf.jasperreports.engine.JRDataSource;
|
||||||
|
import net.sf.jasperreports.engine.JasperFillManager;
|
||||||
|
import net.sf.jasperreports.engine.JasperPrint;
|
||||||
|
|
||||||
|
import com.rjconsultores.ventaboletos.relatorios.utilitarios.IDataSource;
|
||||||
|
import com.rjconsultores.ventaboletos.relatorios.utilitarios.IRenderRelatorio;
|
||||||
|
import com.rjconsultores.ventaboletos.relatorios.utilitarios.Relatorio;
|
||||||
|
import com.rjconsultores.ventaboletos.relatorios.utilitarios.SaidaRelatorio;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Classe utilizada para padronizar alguns comportamentos genéricos do renderizador de relatórios
|
||||||
|
*
|
||||||
|
* @author Bruno H. G. Gouvêa <bruno@rjconsultores.com.br>
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public abstract class RenderRelatorioAbstract implements IRenderRelatorio {
|
||||||
|
|
||||||
|
protected Relatorio relatorio;
|
||||||
|
protected IDataSource datasource;
|
||||||
|
protected Connection connection;
|
||||||
|
private Map<String, Object> parametros = new HashMap<String, Object>();
|
||||||
|
protected JasperPrint jasperPrint;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param relatorio
|
||||||
|
* Enum do tipo Relatorio contendo as configurações de geração de todos os relatórios
|
||||||
|
* @param connection
|
||||||
|
* Objeto de conexão do banco que será utilizado para geração do relatório, só deve ser passado se não for utilizado nenhum tipo de Custom Data Source
|
||||||
|
*/
|
||||||
|
public RenderRelatorioAbstract(Relatorio relatorio, Connection connection) {
|
||||||
|
this.connection = connection;
|
||||||
|
this.relatorio = relatorio;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Renderiza o relatório solicitado
|
||||||
|
*
|
||||||
|
* @param saida
|
||||||
|
* Enum contendo o tipo da saida do relatório
|
||||||
|
* @return Retorna um array de bytes contendo o conteúdo do relatório renderizado.
|
||||||
|
* @throws Exception
|
||||||
|
* Excessão durante a renderização do relatório
|
||||||
|
*/
|
||||||
|
protected abstract byte[] render(SaidaRelatorio saida) throws Exception;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param relatorio
|
||||||
|
* Enum do tipo Relatorio contendo as configurações de geração de todos os relatórios
|
||||||
|
*/
|
||||||
|
public RenderRelatorioAbstract(Relatorio relatorio) {
|
||||||
|
this.relatorio = relatorio;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Map<String, Object> getParametros() {
|
||||||
|
return parametros;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setParametros(Map<String, Object> parametros) {
|
||||||
|
this.parametros = parametros;
|
||||||
|
this.parametros.put("NOME_RELATORIO", this.relatorio.getNome());
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* (non-Javadoc)
|
||||||
|
*
|
||||||
|
* @see com.rjconsultores.ventaboletos.relatorios.utilitarios.IRenderRelatorio#getConteudo()
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public byte[] getConteudo(SaidaRelatorio saida) throws Exception {
|
||||||
|
|
||||||
|
|
||||||
|
if(this.jasperPrint == null){
|
||||||
|
|
||||||
|
if(this.relatorio.getParametros()!=null)
|
||||||
|
this.relatorio.getParametros().initParametros(this.parametros, this.connection);
|
||||||
|
|
||||||
|
InputStream iStemplate = this.getClass().getResourceAsStream("/com/rjconsultores/ventaboletos/relatorios/templates/"+this.relatorio.getTemplate());
|
||||||
|
|
||||||
|
|
||||||
|
if (this.relatorio.getDatasource() != null)
|
||||||
|
this.jasperPrint = JasperFillManager.fillReport(iStemplate, this.getParametros(), (JRDataSource) this.datasource);
|
||||||
|
else
|
||||||
|
this.jasperPrint = JasperFillManager.fillReport(iStemplate, this.getParametros(), this.connection);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
return this.render(saida);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,89 @@
|
||||||
|
package com.rjconsultores.ventaboletos.relatorios.render;
|
||||||
|
|
||||||
|
import java.io.ByteArrayOutputStream;
|
||||||
|
import java.io.InputStream;
|
||||||
|
import java.sql.Connection;
|
||||||
|
|
||||||
|
import net.sf.jasperreports.engine.JRDataSource;
|
||||||
|
import net.sf.jasperreports.engine.JRException;
|
||||||
|
import net.sf.jasperreports.engine.JasperExportManager;
|
||||||
|
import net.sf.jasperreports.engine.JasperFillManager;
|
||||||
|
import net.sf.jasperreports.engine.JasperPrint;
|
||||||
|
import net.sf.jasperreports.engine.export.JRXlsExporter;
|
||||||
|
import net.sf.jasperreports.engine.export.JRXlsExporterParameter;
|
||||||
|
|
||||||
|
import com.rjconsultores.ventaboletos.relatorios.utilitarios.Relatorio;
|
||||||
|
import com.rjconsultores.ventaboletos.relatorios.utilitarios.SaidaRelatorio;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Implementação da classe abstrata de renderização acoplada a uma tecnologia de renderização especifica
|
||||||
|
*
|
||||||
|
* @author Bruno H. G. Gouvêa <bruno@rjconsultores.com.br>
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public class RenderRelatorioJasper extends RenderRelatorioAbstract {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param relatorio
|
||||||
|
* Enum do tipo Relatorio contendo as configurações de geração de todos os relatórios
|
||||||
|
* @param connection
|
||||||
|
* Objeto de conexão do banco que será utilizado para geração do relatório, só deve ser passado se não for utilizado nenhum tipo de Custom Data Source
|
||||||
|
*
|
||||||
|
* @throws Exception
|
||||||
|
* Excessão contendo regra de utilização da classe
|
||||||
|
*/
|
||||||
|
public RenderRelatorioJasper(Relatorio relatorio, Connection connection) throws Exception {
|
||||||
|
super(relatorio, connection);
|
||||||
|
|
||||||
|
if (relatorio.getDatasource() != null)
|
||||||
|
throw new Exception("Este relatório esta configurado para utilizar um datasource customizado, não é necessário passar uma conexão de dados.");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param relatorio
|
||||||
|
* Enum do tipo Relatorio contendo as configurações de geração de todos os relatórios
|
||||||
|
* @throws Exception
|
||||||
|
* Excessão contendo regra de utilização da classe
|
||||||
|
*/
|
||||||
|
public RenderRelatorioJasper(Relatorio relatorio) throws Exception {
|
||||||
|
super(relatorio);
|
||||||
|
|
||||||
|
if (relatorio.getDatasource() == null)
|
||||||
|
throw new Exception("Este relatório esta configurado para utilizar uma conexão direta com banco de dados, utilize o construtor com a passagem de parametros correta.");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* (non-Javadoc)
|
||||||
|
*
|
||||||
|
* @see com.rjconsultores.ventaboletos.relatorios.utilitarios.IRenderRelatorio#render()
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
protected byte[] render(SaidaRelatorio saida) throws JRException {
|
||||||
|
byte[] conteudo = null;
|
||||||
|
|
||||||
|
|
||||||
|
switch (saida) {
|
||||||
|
|
||||||
|
case PDF:
|
||||||
|
conteudo = JasperExportManager.exportReportToPdf(this.jasperPrint);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case XLS:
|
||||||
|
JRXlsExporter exporterXLS = new JRXlsExporter();
|
||||||
|
ByteArrayOutputStream output = new ByteArrayOutputStream();
|
||||||
|
exporterXLS.setParameter(JRXlsExporterParameter.JASPER_PRINT, this.jasperPrint);
|
||||||
|
exporterXLS.setParameter(JRXlsExporterParameter.OUTPUT_STREAM, output);
|
||||||
|
exporterXLS.setParameter(JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET, Boolean.TRUE);
|
||||||
|
exporterXLS.setParameter(JRXlsExporterParameter.IS_DETECT_CELL_TYPE, Boolean.TRUE);
|
||||||
|
exporterXLS.setParameter(JRXlsExporterParameter.IS_WHITE_PAGE_BACKGROUND, Boolean.FALSE);
|
||||||
|
exporterXLS.setParameter(JRXlsExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS, Boolean.TRUE);
|
||||||
|
exporterXLS.exportReport();
|
||||||
|
conteudo = output.toByteArray();
|
||||||
|
break;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
return conteudo;
|
||||||
|
}
|
||||||
|
}
|
Binary file not shown.
|
@ -0,0 +1,388 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="RelatorioAproveitamento" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="3308e98f-a36a-4ee6-bb41-be017c32427e">
|
||||||
|
<property name="ireport.zoom" value="1.5"/>
|
||||||
|
<property name="ireport.x" value="0"/>
|
||||||
|
<property name="ireport.y" value="0"/>
|
||||||
|
<style name="Crosstab Data Text" hAlign="Center"/>
|
||||||
|
<style name="table">
|
||||||
|
<box>
|
||||||
|
<pen lineWidth="1.0" lineColor="#000000"/>
|
||||||
|
</box>
|
||||||
|
</style>
|
||||||
|
<style name="table_TH" mode="Opaque" backcolor="#F0F8FF">
|
||||||
|
<box>
|
||||||
|
<pen lineWidth="0.5" lineColor="#000000"/>
|
||||||
|
</box>
|
||||||
|
</style>
|
||||||
|
<style name="table_CH" mode="Opaque" backcolor="#BFE1FF">
|
||||||
|
<box>
|
||||||
|
<pen lineWidth="0.5" lineColor="#000000"/>
|
||||||
|
</box>
|
||||||
|
</style>
|
||||||
|
<style name="table_TD" mode="Opaque" backcolor="#FFFFFF">
|
||||||
|
<box>
|
||||||
|
<pen lineWidth="0.5" lineColor="#000000"/>
|
||||||
|
</box>
|
||||||
|
</style>
|
||||||
|
<parameter name="NOME_RELATORIO" class="java.lang.String"/>
|
||||||
|
<parameter name="DATA" class="java.lang.String" isForPrompting="false">
|
||||||
|
<defaultValueExpression><![CDATA["20/02/2013"]]></defaultValueExpression>
|
||||||
|
</parameter>
|
||||||
|
<parameter name="SUBREPORT_DIR" class="java.lang.String" isForPrompting="false">
|
||||||
|
<defaultValueExpression><![CDATA["C:\\Users\\PC\\Documents\\"]]></defaultValueExpression>
|
||||||
|
</parameter>
|
||||||
|
<parameter name="P_NOMINAL_KM" class="java.lang.String"/>
|
||||||
|
<parameter name="P_TOTAL_ARRECADADO" class="java.lang.String"/>
|
||||||
|
<parameter name="P_ARRECADO_KM" class="java.lang.String"/>
|
||||||
|
<parameter name="P_OCUPACAO" class="java.lang.String"/>
|
||||||
|
<parameter name="P_OCUPACAO_ARRECADACAO" class="java.lang.String"/>
|
||||||
|
<parameter name="P_OCUPACAO_S_ARRECADACAO" class="java.lang.String"/>
|
||||||
|
<parameter name="P_TOTAL_NOMINAL" class="java.lang.String"/>
|
||||||
|
<parameter name="CORRIDA_ID" class="java.lang.String"/>
|
||||||
|
<parameter name="FECCORRIDA" class="java.util.Date"/>
|
||||||
|
<queryString>
|
||||||
|
<![CDATA[SELECT PR.CVEPARADA,
|
||||||
|
TO_NUMBER(DD.ASIENTO) AS ASIENTO,
|
||||||
|
(SELECT 1
|
||||||
|
FROM BOLETO BO, CORRIDA_TRAMO CTD, CORRIDA_TRAMO CTO
|
||||||
|
WHERE BO.CORRIDA_ID = CR.CORRIDA_ID
|
||||||
|
AND BO.FECCORRIDA = CR.FECCORRIDA
|
||||||
|
AND BO.NUMASIENTO = DD.ASIENTO
|
||||||
|
AND BO.ORIGEN_ID = CTO.ORIGEN_ID
|
||||||
|
AND BO.DESTINO_ID = CTD.DESTINO_ID
|
||||||
|
AND CTD.CORRIDA_ID = CR.CORRIDA_ID
|
||||||
|
AND CTD.FECCORRIDA = CR.FECCORRIDA
|
||||||
|
AND CTO.CORRIDA_ID = CR.CORRIDA_ID
|
||||||
|
AND CTO.FECCORRIDA = CR.FECCORRIDA
|
||||||
|
AND CTO.ACTIVO = 1
|
||||||
|
AND CTD.ACTIVO = 1
|
||||||
|
AND VT.NUMSECUENCIA BETWEEN CTO.NUMSECUENCIA AND CTD.NUMSECUENCIA + 1
|
||||||
|
AND BO.ACTIVO = 1
|
||||||
|
AND (BO.MOTIVOCANCELACION_ID IS NULL OR
|
||||||
|
BO.MOTIVOCANCELACION_ID = 0)) OCUPADO,
|
||||||
|
VT.NUMSECUENCIA
|
||||||
|
FROM CORRIDA CR,
|
||||||
|
(SELECT CT.ORIGEN_ID PARADA_ID, CT.NUMSECUENCIA
|
||||||
|
FROM CORRIDA_TRAMO CT
|
||||||
|
WHERE CT.CORRIDA_ID = $P{CORRIDA_ID}
|
||||||
|
AND TRUNC(CT.FECCORRIDA) = $P{FECCORRIDA}
|
||||||
|
AND CT.ACTIVO = 1
|
||||||
|
UNION
|
||||||
|
SELECT CT.DESTINO_ID, CT.NUMSECUENCIA + 1
|
||||||
|
FROM CORRIDA_TRAMO CT
|
||||||
|
WHERE CT.CORRIDA_ID = $P{CORRIDA_ID}
|
||||||
|
AND TRUNC(CT.FECCORRIDA) = $P{FECCORRIDA}
|
||||||
|
AND CT.ACTIVO = 1
|
||||||
|
ORDER BY 2) VT,
|
||||||
|
PARADA PR,
|
||||||
|
ROL_OPERATIVO RO,
|
||||||
|
DET_DIAGRAMA_AUTOBUS DD
|
||||||
|
WHERE CR.CORRIDA_ID = $P{CORRIDA_ID}
|
||||||
|
AND TRUNC(CR.FECCORRIDA) = $P{FECCORRIDA}
|
||||||
|
AND VT.PARADA_ID = PR.PARADA_ID
|
||||||
|
AND CR.ROLOPERATIVO_ID = RO.ROLOPERATIVO_ID
|
||||||
|
AND RO.DIAGRAMAAUTOBUS_ID = DD.DIAGRAMAAUTOBUS_ID
|
||||||
|
AND DD.VENDIBLE = 1
|
||||||
|
ORDER BY VT.NUMSECUENCIA, TO_NUMBER(DD.ASIENTO)]]>
|
||||||
|
</queryString>
|
||||||
|
<field name="CVEPARADA" class="java.lang.String"/>
|
||||||
|
<field name="ASIENTO" class="java.math.BigDecimal"/>
|
||||||
|
<field name="OCUPADO" class="java.math.BigDecimal"/>
|
||||||
|
<field name="NUMSECUENCIA" class="java.math.BigDecimal"/>
|
||||||
|
<sortField name="NUMSECUENCIA"/>
|
||||||
|
<sortField name="OCUPADO"/>
|
||||||
|
<background>
|
||||||
|
<band splitType="Stretch"/>
|
||||||
|
</background>
|
||||||
|
<title>
|
||||||
|
<band height="85" splitType="Stretch">
|
||||||
|
<rectangle>
|
||||||
|
<reportElement uuid="8f226d21-ccdb-41b4-a01d-fb0712f0b4d3" x="0" y="0" width="555" height="30"/>
|
||||||
|
</rectangle>
|
||||||
|
<rectangle>
|
||||||
|
<reportElement uuid="b6aa9717-79c4-4f13-91df-9b0255003a16" x="0" y="40" width="555" height="39"/>
|
||||||
|
</rectangle>
|
||||||
|
<staticText>
|
||||||
|
<reportElement uuid="2e854857-9e82-43ae-bc7b-232319c1f259" x="12" y="0" width="65" height="15"/>
|
||||||
|
<textElement>
|
||||||
|
<font size="11" isBold="true"/>
|
||||||
|
</textElement>
|
||||||
|
<text><![CDATA[Relatório: ]]></text>
|
||||||
|
</staticText>
|
||||||
|
<textField>
|
||||||
|
<reportElement uuid="eb300dc6-1610-409d-8589-72b1539f86d3" x="77" y="0" width="478" height="15"/>
|
||||||
|
<textElement>
|
||||||
|
<font size="11"/>
|
||||||
|
</textElement>
|
||||||
|
<textFieldExpression><![CDATA[$P{NOME_RELATORIO}]]></textFieldExpression>
|
||||||
|
</textField>
|
||||||
|
<staticText>
|
||||||
|
<reportElement uuid="b76b0e17-99b2-4681-8f60-b5bd5512e897" x="12" y="15" width="65" height="15"/>
|
||||||
|
<textElement>
|
||||||
|
<font size="11" isBold="true"/>
|
||||||
|
</textElement>
|
||||||
|
<text><![CDATA[Serviço: ]]></text>
|
||||||
|
</staticText>
|
||||||
|
<staticText>
|
||||||
|
<reportElement uuid="bd889fb9-30d9-4023-b811-7f55e3213705" x="244" y="15" width="65" height="15"/>
|
||||||
|
<textElement>
|
||||||
|
<font size="11" isBold="true"/>
|
||||||
|
</textElement>
|
||||||
|
<text><![CDATA[Data:]]></text>
|
||||||
|
</staticText>
|
||||||
|
<textField>
|
||||||
|
<reportElement uuid="a3d3c093-a9f4-4b32-823f-b4f548e46c2f" x="77" y="15" width="167" height="15"/>
|
||||||
|
<textElement>
|
||||||
|
<font size="11"/>
|
||||||
|
</textElement>
|
||||||
|
<textFieldExpression><![CDATA[$P{CORRIDA_ID}]]></textFieldExpression>
|
||||||
|
</textField>
|
||||||
|
<staticText>
|
||||||
|
<reportElement uuid="021e9662-43c5-4054-a0d2-3fc8f6003111" x="12" y="40" width="78" height="11"/>
|
||||||
|
<textElement>
|
||||||
|
<font size="8"/>
|
||||||
|
</textElement>
|
||||||
|
<text><![CDATA[Total Arrecadado:]]></text>
|
||||||
|
</staticText>
|
||||||
|
<staticText>
|
||||||
|
<reportElement uuid="062b6b12-00e3-4389-8359-bf59b8879b4d" x="12" y="51" width="78" height="11"/>
|
||||||
|
<textElement>
|
||||||
|
<font size="8"/>
|
||||||
|
</textElement>
|
||||||
|
<text><![CDATA[Arrecadado/KM:]]></text>
|
||||||
|
</staticText>
|
||||||
|
<staticText>
|
||||||
|
<reportElement uuid="f2b94d48-f3b5-4781-ac11-ff28a41e0d90" x="197" y="40" width="105" height="11"/>
|
||||||
|
<textElement>
|
||||||
|
<font size="8"/>
|
||||||
|
</textElement>
|
||||||
|
<text><![CDATA[Ocupação:]]></text>
|
||||||
|
</staticText>
|
||||||
|
<staticText>
|
||||||
|
<reportElement uuid="58deb635-5e71-4614-b71e-d81d5dad85f0" x="197" y="51" width="105" height="11"/>
|
||||||
|
<textElement>
|
||||||
|
<font size="8"/>
|
||||||
|
</textElement>
|
||||||
|
<text><![CDATA[Ocupação com Arrecação:]]></text>
|
||||||
|
</staticText>
|
||||||
|
<staticText>
|
||||||
|
<reportElement uuid="eec1daa6-74c5-49bf-855f-602d5230dfa1" x="12" y="63" width="78" height="11"/>
|
||||||
|
<textElement>
|
||||||
|
<font size="8"/>
|
||||||
|
</textElement>
|
||||||
|
<text><![CDATA[Nominal/KM:]]></text>
|
||||||
|
</staticText>
|
||||||
|
<staticText>
|
||||||
|
<reportElement uuid="ccaffa74-0602-4168-b191-ba02c523221f" x="197" y="63" width="105" height="11"/>
|
||||||
|
<textElement>
|
||||||
|
<font size="8"/>
|
||||||
|
</textElement>
|
||||||
|
<text><![CDATA[Ocupação sem Arrecação:]]></text>
|
||||||
|
</staticText>
|
||||||
|
<staticText>
|
||||||
|
<reportElement uuid="12cf983e-3909-4cf6-94d8-dfc008edc47d" x="382" y="40" width="78" height="11"/>
|
||||||
|
<textElement>
|
||||||
|
<font size="8"/>
|
||||||
|
</textElement>
|
||||||
|
<text><![CDATA[Total Nominal:]]></text>
|
||||||
|
</staticText>
|
||||||
|
<line>
|
||||||
|
<reportElement uuid="5b56b7a4-1abd-43cc-8071-e949d5575a45" x="185" y="40" width="1" height="39" forecolor="#CCCCCC"/>
|
||||||
|
</line>
|
||||||
|
<line>
|
||||||
|
<reportElement uuid="98b93926-7900-4445-bbe6-024e456fd45e" x="370" y="40" width="1" height="39" forecolor="#CCCCCC"/>
|
||||||
|
</line>
|
||||||
|
<textField>
|
||||||
|
<reportElement uuid="bdfd7f9e-e50e-4a8b-bba4-2fc8a909f38b" x="90" y="63" width="78" height="11"/>
|
||||||
|
<textElement>
|
||||||
|
<font size="8"/>
|
||||||
|
</textElement>
|
||||||
|
<textFieldExpression><![CDATA[$P{P_NOMINAL_KM}]]></textFieldExpression>
|
||||||
|
</textField>
|
||||||
|
<textField>
|
||||||
|
<reportElement uuid="7eb2d8d3-4a3f-40cd-8117-8e53ab128f34" x="90" y="40" width="96" height="11"/>
|
||||||
|
<textElement>
|
||||||
|
<font size="8"/>
|
||||||
|
</textElement>
|
||||||
|
<textFieldExpression><![CDATA[$P{P_TOTAL_ARRECADADO}]]></textFieldExpression>
|
||||||
|
</textField>
|
||||||
|
<textField>
|
||||||
|
<reportElement uuid="64600377-6028-4c56-b0f1-3acf6ceeb708" x="90" y="51" width="95" height="11"/>
|
||||||
|
<textElement>
|
||||||
|
<font size="8"/>
|
||||||
|
</textElement>
|
||||||
|
<textFieldExpression><![CDATA[$P{P_ARRECADO_KM}]]></textFieldExpression>
|
||||||
|
</textField>
|
||||||
|
<textField>
|
||||||
|
<reportElement uuid="6b68d2b4-0fa0-41a4-bdf5-0eaccb7d1f59" x="302" y="40" width="100" height="11"/>
|
||||||
|
<textElement>
|
||||||
|
<font size="8"/>
|
||||||
|
</textElement>
|
||||||
|
<textFieldExpression><![CDATA[$P{P_OCUPACAO}]]></textFieldExpression>
|
||||||
|
</textField>
|
||||||
|
<textField>
|
||||||
|
<reportElement uuid="66317ebd-e503-420c-8886-8385b782770d" x="302" y="51" width="69" height="11"/>
|
||||||
|
<textElement>
|
||||||
|
<font size="8"/>
|
||||||
|
</textElement>
|
||||||
|
<textFieldExpression><![CDATA[$P{P_OCUPACAO_ARRECADACAO}]]></textFieldExpression>
|
||||||
|
</textField>
|
||||||
|
<textField>
|
||||||
|
<reportElement uuid="a6ff7221-60b5-4d08-b7e8-7b10db0b97a6" x="302" y="63" width="68" height="11"/>
|
||||||
|
<textElement>
|
||||||
|
<font size="8"/>
|
||||||
|
</textElement>
|
||||||
|
<textFieldExpression><![CDATA[$P{P_OCUPACAO_S_ARRECADACAO}]]></textFieldExpression>
|
||||||
|
</textField>
|
||||||
|
<textField>
|
||||||
|
<reportElement uuid="9eebfdd7-504b-4e98-8893-63bdb8c02b54" x="468" y="40" width="87" height="11"/>
|
||||||
|
<textElement>
|
||||||
|
<font size="8"/>
|
||||||
|
</textElement>
|
||||||
|
<textFieldExpression><![CDATA[$P{P_TOTAL_NOMINAL}]]></textFieldExpression>
|
||||||
|
</textField>
|
||||||
|
<textField>
|
||||||
|
<reportElement uuid="0eccc14c-3288-43e8-8731-7c876e4d659e" x="309" y="15" width="100" height="15"/>
|
||||||
|
<textElement/>
|
||||||
|
<textFieldExpression><![CDATA[$P{DATA}]]></textFieldExpression>
|
||||||
|
</textField>
|
||||||
|
</band>
|
||||||
|
</title>
|
||||||
|
<summary>
|
||||||
|
<band height="63" splitType="Stretch">
|
||||||
|
<crosstab>
|
||||||
|
<reportElement uuid="eff55ca1-3935-4726-82a1-4a15e4518714" x="0" y="0" width="555" height="63"/>
|
||||||
|
<rowGroup name="ASIENTO" width="70">
|
||||||
|
<bucket class="java.math.BigDecimal">
|
||||||
|
<bucketExpression><![CDATA[$F{ASIENTO}]]></bucketExpression>
|
||||||
|
</bucket>
|
||||||
|
<crosstabRowHeader>
|
||||||
|
<cellContents backcolor="#F0F8FF" mode="Opaque">
|
||||||
|
<box>
|
||||||
|
<pen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
|
||||||
|
</box>
|
||||||
|
<textField>
|
||||||
|
<reportElement uuid="1d4e483e-bf24-4da5-ab8c-62bf83e6c1bb" style="Crosstab Data Text" x="0" y="0" width="70" height="15"/>
|
||||||
|
<textElement/>
|
||||||
|
<textFieldExpression><![CDATA[$V{ASIENTO}]]></textFieldExpression>
|
||||||
|
</textField>
|
||||||
|
</cellContents>
|
||||||
|
</crosstabRowHeader>
|
||||||
|
<crosstabTotalRowHeader>
|
||||||
|
<cellContents/>
|
||||||
|
</crosstabTotalRowHeader>
|
||||||
|
</rowGroup>
|
||||||
|
<columnGroup name="NUMSECUENCIA" height="0">
|
||||||
|
<bucket class="java.math.BigDecimal">
|
||||||
|
<bucketExpression><![CDATA[$F{NUMSECUENCIA}]]></bucketExpression>
|
||||||
|
</bucket>
|
||||||
|
<crosstabColumnHeader>
|
||||||
|
<cellContents backcolor="#F0F8FF" mode="Opaque">
|
||||||
|
<box>
|
||||||
|
<pen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
|
||||||
|
</box>
|
||||||
|
</cellContents>
|
||||||
|
</crosstabColumnHeader>
|
||||||
|
<crosstabTotalColumnHeader>
|
||||||
|
<cellContents/>
|
||||||
|
</crosstabTotalColumnHeader>
|
||||||
|
</columnGroup>
|
||||||
|
<columnGroup name="CVEPARADA" height="30">
|
||||||
|
<bucket class="java.lang.String">
|
||||||
|
<bucketExpression><![CDATA[$F{CVEPARADA}]]></bucketExpression>
|
||||||
|
</bucket>
|
||||||
|
<crosstabColumnHeader>
|
||||||
|
<cellContents backcolor="#F0F8FF" mode="Opaque">
|
||||||
|
<box>
|
||||||
|
<pen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
|
||||||
|
</box>
|
||||||
|
<textField>
|
||||||
|
<reportElement uuid="92b133ad-3903-4c0c-8aeb-593d907cac98" style="Crosstab Data Text" x="0" y="0" width="50" height="30"/>
|
||||||
|
<textElement/>
|
||||||
|
<textFieldExpression><![CDATA[$V{CVEPARADA}]]></textFieldExpression>
|
||||||
|
</textField>
|
||||||
|
</cellContents>
|
||||||
|
</crosstabColumnHeader>
|
||||||
|
<crosstabTotalColumnHeader>
|
||||||
|
<cellContents/>
|
||||||
|
</crosstabTotalColumnHeader>
|
||||||
|
</columnGroup>
|
||||||
|
<measure name="OCUPADOMeasure" class="java.math.BigDecimal" calculation="Lowest">
|
||||||
|
<measureExpression><![CDATA[$F{OCUPADO}]]></measureExpression>
|
||||||
|
</measure>
|
||||||
|
<crosstabCell width="50" height="15">
|
||||||
|
<cellContents>
|
||||||
|
<box>
|
||||||
|
<pen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
|
||||||
|
</box>
|
||||||
|
<rectangle radius="10">
|
||||||
|
<reportElement uuid="bc96586e-75d2-4c8a-9225-f63fe33165d0" style="Crosstab Data Text" x="0" y="0" width="50" height="15" forecolor="#CCCCCC" backcolor="#CCCCFF">
|
||||||
|
<printWhenExpression><![CDATA[$V{OCUPADOMeasure}.intValue() == 1]]></printWhenExpression>
|
||||||
|
</reportElement>
|
||||||
|
</rectangle>
|
||||||
|
</cellContents>
|
||||||
|
</crosstabCell>
|
||||||
|
<crosstabCell height="25" rowTotalGroup="ASIENTO">
|
||||||
|
<cellContents backcolor="#BFE1FF" mode="Opaque">
|
||||||
|
<box>
|
||||||
|
<pen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
|
||||||
|
</box>
|
||||||
|
<textField>
|
||||||
|
<reportElement uuid="10f494b4-33d7-49c7-ac38-32cb02d7c493" style="Crosstab Data Text" x="0" y="0" width="50" height="25"/>
|
||||||
|
<textElement/>
|
||||||
|
<textFieldExpression><![CDATA[$V{OCUPADOMeasure}]]></textFieldExpression>
|
||||||
|
</textField>
|
||||||
|
</cellContents>
|
||||||
|
</crosstabCell>
|
||||||
|
<crosstabCell width="50" columnTotalGroup="NUMSECUENCIA">
|
||||||
|
<cellContents backcolor="#005FB3" mode="Opaque">
|
||||||
|
<box>
|
||||||
|
<pen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
|
||||||
|
</box>
|
||||||
|
<textField>
|
||||||
|
<reportElement uuid="294894a3-4154-42ab-a716-5b0b0baac4d1" style="Crosstab Data Text" x="0" y="0" width="50" height="25" forecolor="#FFFFFF"/>
|
||||||
|
<textElement/>
|
||||||
|
<textFieldExpression><![CDATA[$V{OCUPADOMeasure}]]></textFieldExpression>
|
||||||
|
</textField>
|
||||||
|
</cellContents>
|
||||||
|
</crosstabCell>
|
||||||
|
<crosstabCell rowTotalGroup="ASIENTO" columnTotalGroup="NUMSECUENCIA">
|
||||||
|
<cellContents backcolor="#005FB3" mode="Opaque">
|
||||||
|
<box>
|
||||||
|
<pen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
|
||||||
|
</box>
|
||||||
|
<textField>
|
||||||
|
<reportElement uuid="39e993e0-05ef-447e-82db-d0ae1829485b" style="Crosstab Data Text" x="0" y="0" width="50" height="25" forecolor="#FFFFFF"/>
|
||||||
|
<textElement/>
|
||||||
|
<textFieldExpression><![CDATA[$V{OCUPADOMeasure}]]></textFieldExpression>
|
||||||
|
</textField>
|
||||||
|
</cellContents>
|
||||||
|
</crosstabCell>
|
||||||
|
<crosstabCell width="50" columnTotalGroup="CVEPARADA">
|
||||||
|
<cellContents backcolor="#BFE1FF" mode="Opaque">
|
||||||
|
<box>
|
||||||
|
<pen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
|
||||||
|
</box>
|
||||||
|
<textField>
|
||||||
|
<reportElement uuid="5b616be4-ef52-429c-8752-84f5873a23da" style="Crosstab Data Text" x="0" y="0" width="50" height="25"/>
|
||||||
|
<textElement/>
|
||||||
|
<textFieldExpression><![CDATA[$V{OCUPADOMeasure}]]></textFieldExpression>
|
||||||
|
</textField>
|
||||||
|
</cellContents>
|
||||||
|
</crosstabCell>
|
||||||
|
<crosstabCell rowTotalGroup="ASIENTO" columnTotalGroup="CVEPARADA">
|
||||||
|
<cellContents backcolor="#BFE1FF" mode="Opaque">
|
||||||
|
<box>
|
||||||
|
<pen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
|
||||||
|
</box>
|
||||||
|
<textField>
|
||||||
|
<reportElement uuid="4adf1aa7-2515-434f-98c7-26072ed402b5" style="Crosstab Data Text" x="0" y="0" width="50" height="25"/>
|
||||||
|
<textElement/>
|
||||||
|
<textFieldExpression><![CDATA[$V{OCUPADOMeasure}]]></textFieldExpression>
|
||||||
|
</textField>
|
||||||
|
</cellContents>
|
||||||
|
</crosstabCell>
|
||||||
|
</crosstab>
|
||||||
|
</band>
|
||||||
|
</summary>
|
||||||
|
</jasperReport>
|
|
@ -0,0 +1,13 @@
|
||||||
|
package com.rjconsultores.ventaboletos.relatorios.utilitarios;
|
||||||
|
|
||||||
|
import net.sf.jasperreports.engine.JRDataSource;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Interface para desacoplamento do datasource
|
||||||
|
*
|
||||||
|
* @author Bruno H. G. Gouvêa <bruno@rjconsultores.com.br>
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public interface IDataSource extends JRDataSource {
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,25 @@
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
package com.rjconsultores.ventaboletos.relatorios.utilitarios;
|
||||||
|
|
||||||
|
import java.sql.Connection;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Bruno H. G. Gouvêa <bruno@rjconsultores.com.br>
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public interface IParametros {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param parametros
|
||||||
|
* @param connection
|
||||||
|
* @throws Exception
|
||||||
|
*/
|
||||||
|
void initParametros(Map<String, Object> parametros, Connection connection) throws Exception;
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,23 @@
|
||||||
|
package com.rjconsultores.ventaboletos.relatorios.utilitarios;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Interface de renderização de relatórios
|
||||||
|
*
|
||||||
|
* @author Bruno H. G. Gouvêa <bruno@rjconsultores.com.br>
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public interface IRenderRelatorio {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Retorna o relatório renderizado, ou chama a rederização caso seja necessário.
|
||||||
|
*
|
||||||
|
* @param saida
|
||||||
|
* Enum contendo o tipo da saida do relatório
|
||||||
|
* @return Retorna um array de bytes contendo o conteúdo do relatório renderizado.
|
||||||
|
* @throws Exception
|
||||||
|
* Excessão durante a renderização do relatório
|
||||||
|
*/
|
||||||
|
public byte[] getConteudo(SaidaRelatorio saida) throws Exception;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,97 @@
|
||||||
|
package com.rjconsultores.ventaboletos.relatorios.utilitarios;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
import com.rjconsultores.ventaboletos.relatorios.datasource.*;
|
||||||
|
import com.rjconsultores.ventaboletos.relatorios.parametros.*;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* Enum complexo contendo as configurações dos relatórios disponíveis no sistema.
|
||||||
|
*
|
||||||
|
* @author Bruno H. G. Gouvêa <bruno@rjconsultores.com.br>
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
/**
|
||||||
|
* @author Bruno H. G. Gouvêa <bruno@rjconsultores.com.br>
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public enum Relatorio {
|
||||||
|
|
||||||
|
RELATORIO_APROVEITAMENTO(1, "RelatorioAproveitamento.jasper", "Relatório de Aproveitamento",new RendimentoParamsImpl(), null),
|
||||||
|
RELATORIO_SERVICOS(2, "Servicos.jasper", "Relatório de Serviços", null, new Vendas2CustomDS()),
|
||||||
|
RELATORIO_EXEMPLO(3, "ExemploFoo.jrxml", "Relatório Foo", null, null);
|
||||||
|
|
||||||
|
private int codigo;
|
||||||
|
private String template;
|
||||||
|
private String nome;
|
||||||
|
protected IDataSource datasource;
|
||||||
|
private IParametros parametros;
|
||||||
|
|
||||||
|
private static Map<Integer, Relatorio> mapCodigoToRelatorio;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param codigo
|
||||||
|
* Identificador do relatório
|
||||||
|
* @param template
|
||||||
|
* Arquivo de template do relatório
|
||||||
|
* @param nome
|
||||||
|
* Nome/Descrição do relátorio
|
||||||
|
* @param datasource
|
||||||
|
* Custom Data Source do relátorio, só deve ser informado caso o relátorio não possua acesso direto ao banco
|
||||||
|
*/
|
||||||
|
private Relatorio(int codigo, String template, String nome, IParametros parametros, IDataSource datasource) {
|
||||||
|
this.codigo = codigo;
|
||||||
|
this.setTemplate(template);
|
||||||
|
this.setNome(nome);
|
||||||
|
this.datasource = datasource;
|
||||||
|
this.parametros = parametros;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Relatorio getRelatorio(int i) {
|
||||||
|
if (mapCodigoToRelatorio == null) {
|
||||||
|
initMapeamento();
|
||||||
|
}
|
||||||
|
return mapCodigoToRelatorio.get(i);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void initMapeamento() {
|
||||||
|
mapCodigoToRelatorio = new HashMap<Integer, Relatorio>();
|
||||||
|
for (Relatorio s : values()) {
|
||||||
|
mapCodigoToRelatorio.put(s.codigo, s);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getTemplate() {
|
||||||
|
return template;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setTemplate(String template) {
|
||||||
|
this.template = template;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getNome() {
|
||||||
|
return nome;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setNome(String nome) {
|
||||||
|
this.nome = nome;
|
||||||
|
}
|
||||||
|
|
||||||
|
public IDataSource getDatasource() {
|
||||||
|
return datasource;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDatasource(IDataSource datasource) {
|
||||||
|
this.datasource = datasource;
|
||||||
|
}
|
||||||
|
|
||||||
|
public IParametros getParametros() {
|
||||||
|
return parametros;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setParametros(IParametros parametros) {
|
||||||
|
this.parametros = parametros;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,11 @@
|
||||||
|
package com.rjconsultores.ventaboletos.relatorios.utilitarios;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* @author Bruno H. G. Gouvêa <bruno@rjconsultores.com.br>
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public enum SaidaRelatorio {
|
||||||
|
PDF,XLS
|
||||||
|
}
|
|
@ -0,0 +1,101 @@
|
||||||
|
/*
|
||||||
|
* To change this template, choose Tools | Templates
|
||||||
|
* and open the template in the editor.
|
||||||
|
*/
|
||||||
|
package com.rjconsultores.ventaboletos.web.gui.controladores.relatorios;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
import javax.sql.DataSource;
|
||||||
|
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.context.annotation.Scope;
|
||||||
|
import org.springframework.stereotype.Controller;
|
||||||
|
import org.zkoss.zk.ui.Component;
|
||||||
|
import org.zkoss.zk.ui.event.Event;
|
||||||
|
import org.zkoss.zul.Datebox;
|
||||||
|
import org.zkoss.zul.Div;
|
||||||
|
import org.zkoss.zul.Iframe;
|
||||||
|
|
||||||
|
import com.rjconsultores.ventaboletos.relatorios.render.RenderRelatorioJasper;
|
||||||
|
import com.rjconsultores.ventaboletos.relatorios.utilitarios.Relatorio;
|
||||||
|
import com.rjconsultores.ventaboletos.utilerias.DateUtil;
|
||||||
|
import com.rjconsultores.ventaboletos.web.utilerias.MyGenericForwardComposer;
|
||||||
|
import com.rjconsultores.ventaboletos.web.utilerias.MyTextbox;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author Administrador
|
||||||
|
*/
|
||||||
|
@Controller("relatorioAproveitamentoController")
|
||||||
|
@Scope("prototype")
|
||||||
|
public class RelatorioAproveitamentoController extends MyGenericForwardComposer {
|
||||||
|
|
||||||
|
private Datebox fecCorrida;
|
||||||
|
private Div divResultadoRelatorio;
|
||||||
|
private Iframe iframeRelatorio;
|
||||||
|
private MyTextbox txtCorridaId;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private DataSource dataSource;
|
||||||
|
|
||||||
|
public Iframe getIframeRelatorio() {
|
||||||
|
return iframeRelatorio;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setIframeRelatorio(Iframe iframeRelatorio) {
|
||||||
|
this.iframeRelatorio = iframeRelatorio;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Div getDivResultadoRelatorio() {
|
||||||
|
return divResultadoRelatorio;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDivResultadoRelatorio(Div divResultadoRelatorio) {
|
||||||
|
this.divResultadoRelatorio = divResultadoRelatorio;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Datebox getFecCorrida() {
|
||||||
|
return fecCorrida;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFecCorrida(Datebox fecCorrida) {
|
||||||
|
this.fecCorrida = fecCorrida;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void doAfterCompose(Component comp) throws Exception {
|
||||||
|
super.doAfterCompose(comp);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void onClick$btnExecutarRelatorio(Event ev) throws Exception {
|
||||||
|
executarRelatorio();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @throws Exception
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
private void executarRelatorio() throws Exception {
|
||||||
|
|
||||||
|
Map<String, Object> parametros = new HashMap<String, Object>();
|
||||||
|
|
||||||
|
RenderRelatorioJasper render = new RenderRelatorioJasper(Relatorio.RELATORIO_APROVEITAMENTO, dataSource.getConnection());
|
||||||
|
|
||||||
|
parametros.put("CORRIDA_ID", this.txtCorridaId.getValue());
|
||||||
|
parametros.put("FECCORRIDA", new java.sql.Date(((java.util.Date) this.fecCorrida.getValue()).getTime()));
|
||||||
|
parametros.put("DATA", DateUtil.getStringDate((java.util.Date) this.fecCorrida.getValue())); // Utilizada para exibição no cabeçalho
|
||||||
|
|
||||||
|
render.setParametros(parametros);
|
||||||
|
|
||||||
|
Map args = new HashMap();
|
||||||
|
args.put("renderRelatorio", render);
|
||||||
|
|
||||||
|
openWindow("/component/reportView.zul",
|
||||||
|
Relatorio.RELATORIO_APROVEITAMENTO.getNome(), args, MODAL);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,133 @@
|
||||||
|
/*
|
||||||
|
* To change this template, choose Tools | Templates
|
||||||
|
* and open the template in the editor.
|
||||||
|
*/
|
||||||
|
package com.rjconsultores.ventaboletos.web.gui.controladores.relatorios;
|
||||||
|
|
||||||
|
|
||||||
|
import java.io.ByteArrayInputStream;
|
||||||
|
import java.io.InputStream;
|
||||||
|
|
||||||
|
import org.springframework.context.annotation.Scope;
|
||||||
|
import org.springframework.stereotype.Controller;
|
||||||
|
import org.zkoss.util.media.AMedia;
|
||||||
|
import org.zkoss.zk.ui.Component;
|
||||||
|
import org.zkoss.zk.ui.Executions;
|
||||||
|
import org.zkoss.zk.ui.event.Event;
|
||||||
|
import org.zkoss.zul.Div;
|
||||||
|
import org.zkoss.zul.Filedownload;
|
||||||
|
import org.zkoss.zul.Iframe;
|
||||||
|
import org.zkoss.zul.Toolbarbutton;
|
||||||
|
|
||||||
|
import com.rjconsultores.ventaboletos.relatorios.render.RenderRelatorioJasper;
|
||||||
|
import com.rjconsultores.ventaboletos.relatorios.utilitarios.SaidaRelatorio;
|
||||||
|
import com.rjconsultores.ventaboletos.web.utilerias.MyGenericForwardComposer;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author Administrador
|
||||||
|
*/
|
||||||
|
@Controller("relatorioController")
|
||||||
|
@Scope("prototype")
|
||||||
|
public class RelatorioController extends MyGenericForwardComposer {
|
||||||
|
|
||||||
|
|
||||||
|
private Div divResultadoRelatorio;
|
||||||
|
private Iframe iframeRelatorio;
|
||||||
|
private Toolbarbutton btnSalvarPDF;
|
||||||
|
private Toolbarbutton btnSalvarXLS;
|
||||||
|
private AMedia conteudoRelatorioPDF;
|
||||||
|
private AMedia conteudoRelatorioXLS;
|
||||||
|
private RenderRelatorioJasper renderRelatorio;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the btnSalvarPDF
|
||||||
|
*/
|
||||||
|
public Toolbarbutton getBtnSalvarPDF() {
|
||||||
|
return btnSalvarPDF;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param btnSalvarPDF the btnSalvarPDF to set
|
||||||
|
*/
|
||||||
|
public void setBtnSalvarPDF(Toolbarbutton btnSalvarPDF) {
|
||||||
|
this.btnSalvarPDF = btnSalvarPDF;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the btnSalvarXLS
|
||||||
|
*/
|
||||||
|
public Toolbarbutton getBtnSalvarXLS() {
|
||||||
|
return btnSalvarXLS;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param btnSalvarXLS the btnSalvarXLS to set
|
||||||
|
*/
|
||||||
|
public void setBtnSalvarXLS(Toolbarbutton btnSalvarXLS) {
|
||||||
|
this.btnSalvarXLS = btnSalvarXLS;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public Iframe getIframeRelatorio() {
|
||||||
|
return iframeRelatorio;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void setIframeRelatorio(Iframe iframeRelatorio) {
|
||||||
|
this.iframeRelatorio = iframeRelatorio;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public Div getDivResultadoRelatorio() {
|
||||||
|
return divResultadoRelatorio;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void setDivResultadoRelatorio(Div divResultadoRelatorio) {
|
||||||
|
this.divResultadoRelatorio = divResultadoRelatorio;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void doAfterCompose(Component comp) throws Exception {
|
||||||
|
super.doAfterCompose(comp);
|
||||||
|
|
||||||
|
this.renderRelatorio = (RenderRelatorioJasper) Executions.getCurrent().getArg().get("renderRelatorio");
|
||||||
|
|
||||||
|
final InputStream mediais = new ByteArrayInputStream(this.renderRelatorio.getConteudo(SaidaRelatorio.PDF));
|
||||||
|
|
||||||
|
conteudoRelatorioPDF = new AMedia("relatorio.pdf", "pdf", null, mediais);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
iframeRelatorio.setContent(conteudoRelatorioPDF);
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void onClick$btnSalvarPDF(Event ev) {
|
||||||
|
Filedownload.save(conteudoRelatorioPDF.getStreamData(), "application/pdf", "relatorio.pdf");
|
||||||
|
}
|
||||||
|
|
||||||
|
public void onClick$btnSalvarXLS(Event ev) throws Exception {
|
||||||
|
final InputStream mediais = new ByteArrayInputStream(this.renderRelatorio.getConteudo(SaidaRelatorio.XLS));
|
||||||
|
|
||||||
|
conteudoRelatorioXLS = new AMedia("relatorio.xls", "xls", null, mediais);
|
||||||
|
Filedownload.save(conteudoRelatorioXLS.getStreamData(), "application/xls", "relatorio.xls");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,30 @@
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
package com.rjconsultores.ventaboletos.web.utilerias;
|
||||||
|
|
||||||
|
import java.text.DecimalFormat;
|
||||||
|
import java.util.Currency;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Bruno H. G. Gouvêa <bruno@rjconsultores.com.br>
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public final class CurrencyUtil {
|
||||||
|
|
||||||
|
|
||||||
|
public static String getCurrencyStrFromStr(String value){
|
||||||
|
|
||||||
|
|
||||||
|
double doubleValue = Double.parseDouble(value);
|
||||||
|
Currency currency = Currency.getInstance("BRL");
|
||||||
|
DecimalFormat formato = new DecimalFormat(currency.getSymbol() + "#,##0.00");
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
return formato.format(doubleValue);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,25 @@
|
||||||
|
package com.rjconsultores.ventaboletos.web.utilerias.menu.item.relatorios;
|
||||||
|
|
||||||
|
import org.zkoss.util.resource.Labels;
|
||||||
|
|
||||||
|
import com.rjconsultores.ventaboletos.web.utilerias.PantallaUtileria;
|
||||||
|
import com.rjconsultores.ventaboletos.web.utilerias.menu.DefaultItemMenuSistema;
|
||||||
|
|
||||||
|
public class ItemMenuRelatorioAproveitamento extends DefaultItemMenuSistema {
|
||||||
|
|
||||||
|
public ItemMenuRelatorioAproveitamento() {
|
||||||
|
super("indexController.mniRelatorioAproveitamento.label");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getClaveMenu() {
|
||||||
|
return "COM.RJCONSULTORES.ADMINISTRACION.GUI.RELATORIOS.MENU.RELATORIOAPROVEITAMENTO";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void ejecutar() {
|
||||||
|
PantallaUtileria.openWindow("/gui/relatorios/filtroRelatorioAproveitamento.zul",
|
||||||
|
Labels.getLabel("relatorioAproveitamentoController.window.title"), null,desktop);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,16 @@
|
||||||
|
package com.rjconsultores.ventaboletos.web.utilerias.menu.item.relatorios;
|
||||||
|
|
||||||
|
import com.rjconsultores.ventaboletos.web.utilerias.menu.DefaultItemMenuSistema;
|
||||||
|
|
||||||
|
public class MenuRelatorios extends DefaultItemMenuSistema {
|
||||||
|
|
||||||
|
public MenuRelatorios() {
|
||||||
|
super("indexController.mniRelatorios.label");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getClaveMenu() {
|
||||||
|
return "COM.RJCONSULTORES.ADMINISTRACION.GUI.RELATORIOS";
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -110,3 +110,5 @@ informes.categoriaVenta=com.rjconsultores.ventaboletos.web.utilerias.menu.item.i
|
||||||
informes.ventasPuntoVenta=com.rjconsultores.ventaboletos.web.utilerias.menu.item.informes.ItemMenuVentasPuntoVenta
|
informes.ventasPuntoVenta=com.rjconsultores.ventaboletos.web.utilerias.menu.item.informes.ItemMenuVentasPuntoVenta
|
||||||
ayuda=com.rjconsultores.ventaboletos.web.utilerias.menu.item.ayuda.MenuAyuda
|
ayuda=com.rjconsultores.ventaboletos.web.utilerias.menu.item.ayuda.MenuAyuda
|
||||||
ayuda.version=com.rjconsultores.ventaboletos.web.utilerias.menu.item.ayuda.ItemMenuVersion
|
ayuda.version=com.rjconsultores.ventaboletos.web.utilerias.menu.item.ayuda.ItemMenuVersion
|
||||||
|
relatorios=com.rjconsultores.ventaboletos.web.utilerias.menu.item.relatorios.MenuRelatorios
|
||||||
|
relatorios.relatorioAproveitamento=com.rjconsultores.ventaboletos.web.utilerias.menu.item.relatorios.ItemMenuRelatorioAproveitamento
|
||||||
|
|
|
@ -56,6 +56,10 @@ MSG.necesita.formaPago = Forma de Pagamento Obrigatória
|
||||||
lb.id = ID
|
lb.id = ID
|
||||||
lb.dec = Descrição
|
lb.dec = Descrição
|
||||||
lb.Equivalencia = Equivalencia
|
lb.Equivalencia = Equivalencia
|
||||||
|
lb.btnExecutarRelatorio = Executar Relatório
|
||||||
|
lb.btnSalvarRelatorio = Salvar Relatório
|
||||||
|
lb.btnSalvarRelatorioPdf = Salvar Relatório em PDF
|
||||||
|
lb.btnSalvarRelatorioXls = Salvar Relatório em XLS
|
||||||
|
|
||||||
|
|
||||||
# tooltip botões
|
# tooltip botões
|
||||||
|
@ -66,6 +70,7 @@ tooltiptext.btnAgregar = Incluir
|
||||||
tooltiptext.btnGuardar = Salvar
|
tooltiptext.btnGuardar = Salvar
|
||||||
tooltiptext.btnPesquisa = Pesquisa
|
tooltiptext.btnPesquisa = Pesquisa
|
||||||
|
|
||||||
|
|
||||||
# Pantalla de início de sesión:
|
# Pantalla de início de sesión:
|
||||||
winLogin.title = Conectar
|
winLogin.title = Conectar
|
||||||
winLogin.lblUsuario = Usuário:
|
winLogin.lblUsuario = Usuário:
|
||||||
|
@ -201,6 +206,8 @@ indexController.mniConfigLayoutImpressaoBoleto.label = Config Layout Impressão
|
||||||
indexController.mniAliasServico.label = Alias Localidade
|
indexController.mniAliasServico.label = Alias Localidade
|
||||||
indexController.mniCliente.label = Cliente
|
indexController.mniCliente.label = Cliente
|
||||||
indexController.mniTarjetaCredito.label = Cartão de Crédito
|
indexController.mniTarjetaCredito.label = Cartão de Crédito
|
||||||
|
indexController.mniRelatorios.label = Relatórios
|
||||||
|
indexController.mniRelatorioAproveitamento.label = Relatório de Aproveitamento
|
||||||
|
|
||||||
#PARTE REALIZADA POR MANUEL
|
#PARTE REALIZADA POR MANUEL
|
||||||
indexController.mnCortesias.label = Cortesias Para Funcionários
|
indexController.mnCortesias.label = Cortesias Para Funcionários
|
||||||
|
@ -224,6 +231,11 @@ busquedaClaseServicioController.btnPesquisa.label = Pesquisa
|
||||||
busquedaClaseServicioController.lhDesc.label = Descrição
|
busquedaClaseServicioController.lhDesc.label = Descrição
|
||||||
busquedaClaseServicioController.lhId.label = ID
|
busquedaClaseServicioController.lhId.label = ID
|
||||||
|
|
||||||
|
#Relatórios
|
||||||
|
relatorioAproveitamentoController.window.title = Relatório de Aproveitamento
|
||||||
|
relatorioAproveitamentoController.lbFecCorrida.value = Data Serviço
|
||||||
|
relatorioAproveitamentoController.lbServico.value = N. Serviço
|
||||||
|
|
||||||
# Pantalla Editar Classe
|
# Pantalla Editar Classe
|
||||||
editarClaseServicioController.window.title = Tipo de Classe
|
editarClaseServicioController.window.title = Tipo de Classe
|
||||||
editarClaseServicioController.btnApagar.tooltiptext = Eliminar
|
editarClaseServicioController.btnApagar.tooltiptext = Eliminar
|
||||||
|
|
|
@ -0,0 +1,30 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<?page contentType="text/html;charset=UTF-8"?>
|
||||||
|
<?variable-resolver class="org.zkoss.zkplus.spring.DelegatingVariableResolver"?>
|
||||||
|
<?init class="org.zkoss.zkplus.databind.AnnotateDataBinderInit" arg0="winRelatorioView"?>
|
||||||
|
<?taglib uri="http://www.zkoss.org/dsp/web/core" prefix="c"?>
|
||||||
|
|
||||||
|
<zk xmlns="http://www.zkoss.org/2005/zul">
|
||||||
|
<window id="winRelatorioView" apply="${relatorioController}"
|
||||||
|
contentStyle="overflow:auto" height="650px" width="750px" border="normal" >
|
||||||
|
|
||||||
|
<div id="divResultadoRelatorio">
|
||||||
|
<toolbar>
|
||||||
|
<toolbarbutton label="Salvar PDF" id="btnSalvarPDF" image="/gui/img/pdf.png" width="95px"
|
||||||
|
tooltiptext="${c:l('lb.btnSalvarRelatorioPdf')}" />
|
||||||
|
<separator orient="vertical" />
|
||||||
|
<toolbarbutton label="Salvar XLS" id="btnSalvarXLS" image="/gui/img/excel.png" width="95px"
|
||||||
|
tooltiptext="${c:l('lb.btnSalvarRelatorioXls')}" />
|
||||||
|
<separator orient="vertical" />
|
||||||
|
|
||||||
|
|
||||||
|
</toolbar>
|
||||||
|
<separator bar="true" height="20px"/>
|
||||||
|
<iframe id="iframeRelatorio" width="100%" height="550px" style="border: 1px solid gray" />
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
</window>
|
||||||
|
</zk>
|
||||||
|
|
Binary file not shown.
After Width: | Height: | Size: 436 B |
|
@ -0,0 +1,32 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<?page contentType="text/html;charset=UTF-8"?>
|
||||||
|
<?variable-resolver class="org.zkoss.zkplus.spring.DelegatingVariableResolver"?>
|
||||||
|
<?init class="org.zkoss.zkplus.databind.AnnotateDataBinderInit" arg0="winFiltroRelatorioAproveitamento"?>
|
||||||
|
<?taglib uri="http://www.zkoss.org/dsp/web/core" prefix="c"?>
|
||||||
|
|
||||||
|
<zk xmlns="http://www.zkoss.org/2005/zul">
|
||||||
|
<window id="winFiltroRelatorioAproveitamento" apply="${relatorioAproveitamentoController}"
|
||||||
|
contentStyle="overflow:auto" height="150px" width="350px" border="normal" >
|
||||||
|
<grid fixedLayout="true">
|
||||||
|
<columns>
|
||||||
|
<column width="20%" />
|
||||||
|
<column width="80%" />
|
||||||
|
</columns>
|
||||||
|
<rows>
|
||||||
|
<row>
|
||||||
|
<label value="${c:l('relatorioAproveitamentoController.lbServico.value')}"/>
|
||||||
|
<textbox id="txtCorridaId" width="90%" use="com.rjconsultores.ventaboletos.web.utilerias.MyTextbox"/>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<label value="${c:l('relatorioAproveitamentoController.lbFecCorrida.value')}"/>
|
||||||
|
<datebox id="fecCorrida" width="90%" format="dd/MM/yyyy" lenient="false"/>
|
||||||
|
</row>
|
||||||
|
</rows>
|
||||||
|
</grid>
|
||||||
|
<toolbar>
|
||||||
|
<button id="btnExecutarRelatorio" image="/gui/img/find.png"
|
||||||
|
label="${c:l('lb.btnExecutarRelatorio')}"/>
|
||||||
|
</toolbar>
|
||||||
|
</window>
|
||||||
|
</zk>
|
||||||
|
|
Loading…
Reference in New Issue