package gcom.relatorio.faturamento;
import gcom.batch.Relatorio;
import gcom.cadastro.sistemaparametro.SistemaParametro;
import gcom.fachada.Fachada;
import gcom.faturamento.bean.EmitirHistogramaAguaDetalheHelper;
import gcom.faturamento.bean.EmitirHistogramaAguaHelper;
import gcom.faturamento.bean.FiltrarEmitirHistogramaAguaHelper;
import gcom.relatorio.ConstantesRelatorios;
import gcom.relatorio.RelatorioDataSource;
import gcom.relatorio.RelatorioVazioException;
import gcom.seguranca.acesso.usuario.Usuario;
import gcom.tarefa.TarefaException;
import gcom.tarefa.TarefaRelatorio;
import gcom.util.ControladorException;
import gcom.util.Util;
import gcom.util.agendadortarefas.AgendadorTarefas;
import java.text.NumberFormat;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Locale;
import java.util.Map;
/**
* classe respons�vel por criar o relat�rio de histograma de liga��o de agua
*
* @author Rafael Pinto / Rafael Correa
* @created 07/06/2007
*/
public class RelatorioHistogramaAguaLigacao extends TarefaRelatorio {
private static final long serialVersionUID = 1L;
public RelatorioHistogramaAguaLigacao(Usuario usuario) {
super(usuario, ConstantesRelatorios.RELATORIO_EMITIR_HISTOGRAMA_AGUA_LIGACAO);
}
@Deprecated
public RelatorioHistogramaAguaLigacao() {
super(null, "");
}
/**
* < <Descri��o do m�todo>>
*
* @param bairros
* Description of the Parameter
* @param bairroParametros
* Description of the Parameter
* @return Descri��o do retorno
* @exception RelatorioVazioException
* Descri��o da exce��o
*/
public Object executar() throws TarefaException {
// valor de retorno
byte[] retorno = null;
// ------------------------------------
Integer idFuncionalidadeIniciada = this.getIdFuncionalidadeIniciada();
// ------------------------------------
FiltrarEmitirHistogramaAguaHelper filtrarEmitirHistogramaAguaHelper =
(FiltrarEmitirHistogramaAguaHelper) getParametro("filtrarEmitirHistogramaAguaHelper");
int tipoFormatoRelatorio = (Integer) getParametro("tipoFormatoRelatorio");
// cole��o de beans do relat�rio
List relatorioBeans = new ArrayList();
Fachada fachada = Fachada.getInstancia();
RelatorioHistogramaAguaLigacaoBean relatorioHistogramaAguaLigacaoBean = null;
Collection<EmitirHistogramaAguaHelper> colecao =
fachada.pesquisarEmitirHistogramaAgua(filtrarEmitirHistogramaAguaHelper);
// se a cole��o de par�metros da analise n�o for vazia
if (colecao != null && !colecao.isEmpty()) {
// coloca a cole��o de par�metros da analise no iterator
Iterator colecaoIterator = colecao.iterator();
// la�o para criar a cole��o de par�metros da analise
while (colecaoIterator.hasNext()) {
EmitirHistogramaAguaHelper emitirHistogramaAguaHelper =
(EmitirHistogramaAguaHelper) colecaoIterator.next();
String opcaoTotalizacao = emitirHistogramaAguaHelper.getOpcaoTotalizacao();
String descricao = emitirHistogramaAguaHelper.getDescricaoTitulo();
Collection colecaoDetalhe = emitirHistogramaAguaHelper.getColecaoEmitirHistogramaAguaDetalhe();
String numeroLigacoes = null;
String percentualParcialLigacao = null;
String percentualAcumuladoLigacao = null;
String economias = null;
String volumeEstimado = null;
String volumeMedido = null;
String volumeTotal = null;
String percentualParcialConsumo = null;
String percentualAcumuladoConsumo = null;
String mediaConsumo = null;
String valorFaturamento = null;
String percentualParcialFaturamento = null;
String percentualAcumuladoFaturamento = null;
NumberFormat formato = NumberFormat.getInstance(new Locale("pt", "BR"));
if (colecaoDetalhe != null && !colecaoDetalhe.isEmpty()) {
Iterator colecaoDetalheIterator = colecaoDetalhe.iterator();
while (colecaoDetalheIterator.hasNext()) {
EmitirHistogramaAguaDetalheHelper detalhe =
(EmitirHistogramaAguaDetalheHelper) colecaoDetalheIterator.next();
String categoria = detalhe.getDescricaoCategoria();
String subcategoria = detalhe.getDescricaoSubcategoria();
numeroLigacoes = formato.format(detalhe.getQuantidadeLigacoes());
percentualParcialLigacao = (""+detalhe.getPercentualParcialLigacao()).replace(".",",");
percentualAcumuladoLigacao = "";
if(!descricao.contains("TOTAL")){
percentualAcumuladoLigacao = (""+detalhe.getPercentualAcumuladoLigacao()).replace(".",",");
}
economias = formato.format(detalhe.getQuantidadeEconomias());
volumeEstimado = "";
if(detalhe.getQuantidadeVolumeEstimado() != 0){
volumeEstimado = formato.format(detalhe.getQuantidadeVolumeEstimado());
}
volumeMedido = "";
if(detalhe.getQuantidadeVolumeMedido() != 0){
volumeMedido = formato.format(detalhe.getQuantidadeVolumeMedido());
}
volumeTotal = formato.format(detalhe.getQuantidadeVolumeTotal());
percentualParcialConsumo = (""+detalhe.getPercentualParcialConsumo()).replace(".",",");
percentualAcumuladoConsumo = "";
if(!descricao.contains("TOTAL")){
percentualAcumuladoConsumo = (""+detalhe.getPercentualAcumuladoConsumo()).replace(".",",");
}
mediaConsumo = ""+detalhe.getMediaConsumo();
valorFaturamento = Util.formatarMoedaReal(detalhe.getValorFaturado());
percentualParcialFaturamento =
(""+detalhe.getPercentualParcialFaturamento()).replace(".",",");
percentualAcumuladoFaturamento = "";
if(!descricao.contains("TOTAL")){
percentualAcumuladoFaturamento =
(""+detalhe.getPercentualAcumuladoFaturamento()).replace(".",",");
}
relatorioHistogramaAguaLigacaoBean =
new RelatorioHistogramaAguaLigacaoBean(
// Op��o de Totaliza��o
opcaoTotalizacao,
// Descri��o
descricao,
// Categoria
categoria,
// Subcategoria
subcategoria,
// N�mero de Liga��es
numeroLigacoes,
// Percentual Parcial da Liga��o
percentualParcialLigacao,
// Percentual Acumulado da Liga��o
percentualAcumuladoLigacao,
// Economias
economias,
// Volume Medido
volumeMedido,
// Volume Estimado
volumeEstimado,
// Volume Total
volumeTotal,
// Percentual Parcial do Consumo
percentualParcialConsumo,
// Percentual Acumulado do Consumo
percentualAcumuladoConsumo,
// M�dia de Consumo
mediaConsumo,
// Valor do Faturamento
valorFaturamento,
// Percentual Parcial do Faturamento
percentualParcialFaturamento,
// Percentual Acumulado do Faturamento
percentualAcumuladoFaturamento );
// adiciona o bean a cole��o
relatorioBeans.add(relatorioHistogramaAguaLigacaoBean);
}
}
numeroLigacoes = formato.format(emitirHistogramaAguaHelper.getTotalQuantidadeLigacoes());
percentualParcialLigacao = (""+emitirHistogramaAguaHelper.getTotalPercentualParcialLigacao()).replace(".",",");
percentualAcumuladoLigacao = "";
if(!descricao.contains("TOTAL")){
percentualAcumuladoLigacao = (""+emitirHistogramaAguaHelper.getTotalPercentualAcumuladoLigacao()).replace(".",",");
}
economias = formato.format(emitirHistogramaAguaHelper.getTotalQuantidadeEconomias());
volumeEstimado = "";
if(emitirHistogramaAguaHelper.getTotalQuantidadeVolumeEstimado() != 0){
volumeEstimado = formato.format(emitirHistogramaAguaHelper.getTotalQuantidadeVolumeEstimado());
}
volumeMedido = "";
if(emitirHistogramaAguaHelper.getTotalQuantidadeVolumeMedido() != 0){
volumeMedido = formato.format(emitirHistogramaAguaHelper.getTotalQuantidadeVolumeMedido());
}
volumeTotal = formato.format(emitirHistogramaAguaHelper.getTotalQuantidadeVolumeTotal());
percentualParcialConsumo =
(""+emitirHistogramaAguaHelper.getTotalPercentualParcialConsumo()).replace(".",",");
percentualAcumuladoConsumo = "";
if(!descricao.contains("TOTAL")){
percentualAcumuladoConsumo =
(""+emitirHistogramaAguaHelper.getTotalPercentualAcumuladoConsumo()).replace(".",",");
}
mediaConsumo = ""+emitirHistogramaAguaHelper.getTotalMediaConsumo();
valorFaturamento = Util.formatarMoedaReal(emitirHistogramaAguaHelper.getTotalValorFaturado());
percentualParcialFaturamento =
(""+emitirHistogramaAguaHelper.getTotalPercentualParcialFaturamento()).replace(".",",");
percentualAcumuladoFaturamento = "";
if(!descricao.contains("TOTAL")){
percentualAcumuladoFaturamento =
(""+emitirHistogramaAguaHelper.getTotalPercentualAcumuladoFaturamento()).replace(".",",");
}
relatorioHistogramaAguaLigacaoBean =
new RelatorioHistogramaAguaLigacaoBean(
// Op��o de Totaliza��o
opcaoTotalizacao,
// Descri��o
descricao,
// Categoria
"TOTAL",
// Subcategoria
"TOTAL",
// N�mero de Liga��es
numeroLigacoes,
// Percentual Parcial da Liga��o
percentualParcialLigacao,
// Percentual Acumulado da Liga��o
percentualAcumuladoLigacao,
// Economias
economias,
// Volume Medido
volumeMedido,
// Volume Estimado
volumeEstimado,
// Volume Total
volumeTotal,
// Percentual Parcial do Consumo
percentualParcialConsumo,
// Percentual Acumulado do Consumo
percentualAcumuladoConsumo,
// M�dia de Consumo
mediaConsumo,
// Valor do Faturamento
valorFaturamento,
// Percentual Parcial do Faturamento
percentualParcialFaturamento,
// Percentual Acumulado do Faturamento
percentualAcumuladoFaturamento );
// adiciona o bean a cole��o
relatorioBeans.add(relatorioHistogramaAguaLigacaoBean);
}
}
// __________________________________________________________________
// Par�metros do relat�rio
Map parametros = new HashMap();
// adiciona os par�metros do relat�rio
// adiciona o laudo da an�lise
SistemaParametro sistemaParametro = fachada.pesquisarParametrosDoSistema();
parametros.put("imagem", sistemaParametro.getImagemRelatorio());
parametros.put("anoMes", Util.formatarAnoMesParaMesAno(filtrarEmitirHistogramaAguaHelper.getMesAnoFaturamento()));
parametros.put("tipoFormatoRelatorio", "R0600");
// cria uma inst�ncia do dataSource do relat�rio
RelatorioDataSource ds = new RelatorioDataSource(relatorioBeans);
if ( filtrarEmitirHistogramaAguaHelper.getIndicadorTarifaCategoria() == 1 ){
retorno = gerarRelatorio(ConstantesRelatorios.RELATORIO_EMITIR_HISTOGRAMA_AGUA_LIGACAO,
parametros, ds, tipoFormatoRelatorio);
} else {
retorno = gerarRelatorio(ConstantesRelatorios.RELATORIO_EMITIR_HISTOGRAMA_AGUA_LIGACAO_SUBCATEGORIA,
parametros, ds, tipoFormatoRelatorio);
}
// ------------------------------------
// Grava o relat�rio no sistema
try {
persistirRelatorioConcluido(retorno, Relatorio.HISTOGRAMA_AGUA_LIGACAO,
idFuncionalidadeIniciada);
} catch (ControladorException e) {
e.printStackTrace();
throw new TarefaException("Erro ao gravar relat�rio no sistema", e);
}
// ------------------------------------
// retorna o relat�rio gerado
return retorno;
}
@Override
public int calcularTotalRegistrosRelatorio() {
int retorno = 0;
return retorno;
}
public void agendarTarefaBatch() {
AgendadorTarefas.agendarTarefa("RelatorioHistogramaAguaLigacao", this);
}
}