package gcom.gerencial.cadastro; import gcom.atendimentopublico.ligacaoagua.LigacaoAguaPerfil; import gcom.atendimentopublico.ligacaoagua.LigacaoAguaSituacao; import gcom.atendimentopublico.ligacaoesgoto.LigacaoEsgotoPerfil; import gcom.atendimentopublico.ligacaoesgoto.LigacaoEsgotoSituacao; import gcom.batch.ControladorBatchLocal; import gcom.batch.ControladorBatchLocalHome; import gcom.batch.UnidadeProcessamento; import gcom.cadastro.cliente.Cliente; import gcom.cadastro.cliente.ClienteTipo; import gcom.cadastro.cliente.EsferaPoder; import gcom.cadastro.geografico.Bairro; import gcom.cadastro.geografico.Microrregiao; import gcom.cadastro.geografico.Municipio; import gcom.cadastro.geografico.Regiao; import gcom.cadastro.imovel.Categoria; import gcom.cadastro.imovel.ControladorImovelLocal; import gcom.cadastro.imovel.ControladorImovelLocalHome; import gcom.cadastro.imovel.FiltroCategoria; import gcom.cadastro.imovel.FiltroSubCategoria; import gcom.cadastro.imovel.IRepositorioImovel; import gcom.cadastro.imovel.Imovel; import gcom.cadastro.imovel.ImovelPerfil; import gcom.cadastro.imovel.ImovelSubcategoria; import gcom.cadastro.imovel.RepositorioImovelHBM; import gcom.cadastro.imovel.Subcategoria; import gcom.fachada.Fachada; import gcom.faturamento.ControladorFaturamentoLocal; import gcom.faturamento.ControladorFaturamentoLocalHome; import gcom.faturamento.HistogramaAguaEconomia; import gcom.faturamento.HistogramaAguaLigacao; import gcom.faturamento.HistogramaEsgotoEconomia; import gcom.faturamento.HistogramaEsgotoLigacao; import gcom.faturamento.conta.Conta; import gcom.faturamento.conta.ContaCategoria; import gcom.faturamento.conta.FiltroConta; import gcom.faturamento.conta.FiltroContaCategoria; import gcom.gerencial.atendimentopublico.ligacaoagua.GLigacaoAguaPerfil; import gcom.gerencial.atendimentopublico.ligacaoagua.GLigacaoAguaSituacao; import gcom.gerencial.atendimentopublico.ligacaoesgoto.GLigacaoEsgotoPerfil; import gcom.gerencial.atendimentopublico.ligacaoesgoto.GLigacaoEsgotoSituacao; import gcom.gerencial.bean.InformarDadosGeracaoRelatorioConsultaHelper; import gcom.gerencial.cadastro.bean.HistogramaAguaEconomiaHelper; import gcom.gerencial.cadastro.bean.HistogramaAguaEconomiaSemQuadraHelper; import gcom.gerencial.cadastro.bean.HistogramaAguaLigacaoHelper; import gcom.gerencial.cadastro.bean.HistogramaAguaLigacaoSemQuadraHelper; import gcom.gerencial.cadastro.bean.HistogramaEsgotoEconomiaHelper; import gcom.gerencial.cadastro.bean.HistogramaEsgotoEconomiaSemQuadraHelper; import gcom.gerencial.cadastro.bean.HistogramaEsgotoLigacaoHelper; import gcom.gerencial.cadastro.bean.HistogramaEsgotoLigacaoSemQuadraHelper; import gcom.gerencial.cadastro.bean.ResumoColetaEsgotoHelper; import gcom.gerencial.cadastro.bean.ResumoColetaEsgotoPorAnoHelper; import gcom.gerencial.cadastro.bean.ResumoConsumoAguaHelper; import gcom.gerencial.cadastro.bean.ResumoConsumoAguaPorAnoHelper; import gcom.gerencial.cadastro.bean.ResumoLigacaoEconomiaConsultarHelper; import gcom.gerencial.cadastro.bean.ResumoLigacaoEconomiaHelper; import gcom.gerencial.cadastro.bean.ResumoLigacaoEconomiaPorAnoHelper; import gcom.gerencial.cadastro.bean.ResumoLigacaoEconomiaRegiaoHelper; import gcom.gerencial.cadastro.bean.ResumoMetasHelper; import gcom.gerencial.cadastro.bean.ResumoParcelamentoHelper; import gcom.gerencial.cadastro.bean.ResumoParcelamentoPorAnoHelper; import gcom.gerencial.cadastro.cliente.GClienteTipo; import gcom.gerencial.cadastro.cliente.GEsferaPoder; import gcom.gerencial.cadastro.imovel.GCategoria; import gcom.gerencial.cadastro.imovel.GImovelPerfil; import gcom.gerencial.cadastro.imovel.GSubcategoria; import gcom.gerencial.cadastro.localidade.GGerenciaRegional; import gcom.gerencial.cadastro.localidade.GLocalidade; import gcom.gerencial.cadastro.localidade.GQuadra; import gcom.gerencial.cadastro.localidade.GSetorComercial; import gcom.gerencial.cadastro.localidade.GUnidadeNegocio; import gcom.gerencial.cobranca.UnResumoParcelamento; import gcom.gerencial.cobranca.UnResumoParcelamentoPorAno; import gcom.gerencial.faturamento.GConsumoTarifa; import gcom.gerencial.micromedicao.GRota; import gcom.gerencial.micromedicao.UnResumoColetaEsgoto; import gcom.micromedicao.ControladorMicromedicaoLocal; import gcom.micromedicao.ControladorMicromedicaoLocalHome; import gcom.micromedicao.consumo.ConsumoTipo; import gcom.micromedicao.consumo.LigacaoTipo; import gcom.util.ConstantesJNDI; import gcom.util.ConstantesSistema; import gcom.util.ControladorException; import gcom.util.ControladorUtilLocal; import gcom.util.ControladorUtilLocalHome; import gcom.util.ErroRepositorioException; import gcom.util.ServiceLocator; import gcom.util.ServiceLocatorException; import gcom.util.SistemaException; import gcom.util.Util; import gcom.util.filtro.ParametroSimples; import java.math.BigDecimal; import java.math.RoundingMode; import java.util.ArrayList; import java.util.Collection; import java.util.Date; import java.util.Iterator; import java.util.List; import javax.ejb.CreateException; import javax.ejb.EJBException; import javax.ejb.SessionBean; import javax.ejb.SessionContext; /** * * * @author Thiago Toscano * @created 19/04/2006 */ public class ControladorGerencialCadastroSEJB implements SessionBean { private static final long serialVersionUID = 1L; private IRepositorioGerencialCadastro repositorioGerencialCadastro = null; //private IRepositorioGerencialCobranca repositorioGerencialCobranca = null; private IRepositorioImovel repositorioImovel = null; // private IRepositorioUtil repositorioUtil = null; SessionContext sessionContext; /** * < <Descri��o do m�todo>> * * @exception CreateException * Descri��o da exce��o */ public void ejbCreate() throws CreateException { // repositorioUtil = RepositorioUtilHBM.getInstancia(); repositorioGerencialCadastro = RepositorioGerencialCadastroHBM.getInstancia(); //repositorioGerencialCobranca = RepositorioGerencialCobrancaHBM.getInstancia(); repositorioImovel = RepositorioImovelHBM.getInstancia(); } /** * Retorna a interface remota de ControladorImovel * * @return A interface remota do controlador de par�metro */ private ControladorImovelLocal getControladorImovel() { ControladorImovelLocalHome localHome = null; ControladorImovelLocal local = null; // pega a inst�ncia do ServiceLocator. ServiceLocator locator = null; try { locator = ServiceLocator.getInstancia(); localHome = (ControladorImovelLocalHome) locator .getLocalHome(ConstantesJNDI.CONTROLADOR_IMOVEL_SEJB); // guarda a referencia de um objeto capaz de fazer chamadas � // objetos remotamente local = localHome.create(); return local; } catch (CreateException e) { throw new SistemaException(e); } catch (ServiceLocatorException e) { throw new SistemaException(e); } } /** * Retorna o valor de controladorLocalidade * * @return O valor de controladorLocalidade */ private ControladorFaturamentoLocal getControladorFaturamento() { ControladorFaturamentoLocalHome localHome = null; ControladorFaturamentoLocal local = null; // pega a inst�ncia do ServiceLocator. ServiceLocator locator = null; try { locator = ServiceLocator.getInstancia(); localHome = (ControladorFaturamentoLocalHome) locator .getLocalHomePorEmpresa(ConstantesJNDI.CONTROLADOR_FATURAMENTO_SEJB); // guarda a referencia de um objeto capaz de fazer chamadas // objetos remotamente local = localHome.create(); return local; } catch (CreateException e) { throw new SistemaException(e); } catch (ServiceLocatorException e) { throw new SistemaException(e); } } /** * < <Descri��o do m�todo>> */ public void ejbRemove() { } /** * < <Descri��o do m�todo>> */ public void ejbActivate() { } /** * < <Descri��o do m�todo>> */ public void ejbPassivate() { } /** * Seta o valor de sessionContext * * @param sessionContext * O novo valor de sessionContext */ public void setSessionContext(SessionContext sessionContext) { this.sessionContext = sessionContext; } private ControladorBatchLocal getControladorBatch() { ControladorBatchLocalHome localHome = null; ControladorBatchLocal local = null; // pega a inst�ncia do ServiceLocator. ServiceLocator locator = null; try { locator = ServiceLocator.getInstancia(); localHome = (ControladorBatchLocalHome) locator .getLocalHome(ConstantesJNDI.CONTROLADOR_BATCH_SEJB); local = localHome.create(); return local; } catch (CreateException e) { throw new SistemaException(e); } catch (ServiceLocatorException e) { throw new SistemaException(e); } } /** * M�todo que gera o resumo dos histogramas de �gua e esgoto * * [UC0566] - Gerar Histograma de �gua e Esgoto * * @author Bruno Barros * @date 09/05/2007 * */ public void gerarResumoHistograma(int anoMesReferencia, int idSetor, int idFuncionalidadeIniciada) throws ControladorException { int idUnidadeIniciada = 0; // ------------------------- // // Registrar o in�cio do processamento da Unidade de // Processamento // do Batch // // ------------------------- idUnidadeIniciada = getControladorBatch() .iniciarUnidadeProcessamentoBatch(idFuncionalidadeIniciada, UnidadeProcessamento.SETOR_COMERCIAL, idSetor); //FS0001 - Verificar existencia de dados para o ano/mes referencia informado //this.repositorioGerencialCadastro.excluirResumoGerencial(( getControladorUtil().pesquisarParametrosDoSistema().getAnoMesFaturamento(), "micromedicao.un_resumo_coleta_esgoto", "rece_amreferencia", idSetor ); try { System.out.println("*************************************"); System.out.println("INICIO DO HISTOGRAMA SETOR "+idSetor); System.out.println("*************************************"); //[SB1000] ? Gerar Histograma para Im?s Faturados //1. O sistema seleciona as contas do m고de faturamento corrente e gera o histograma de ᧵a por liga磯, o histograma de ᧵a por economia, o histograma de esgoto por liga磯 e o histograma de esgoto por economia acumulando os valores das liga絥s e das economias agrupados por: List histogramaAguaLigacao = this.repositorioGerencialCadastro .getContasHistograma(idSetor); //FS0001 - Verificar existencia de dados para o ano/mes referencia informado repositorioGerencialCadastro.excluirResumo( getControladorUtil().pesquisarParametrosDoSistema().getAnoMesFaturamento(), HistogramaAguaEconomia.class.getName(), "anoMesReferencia", idSetor, true ); repositorioGerencialCadastro.excluirResumo( getControladorUtil().pesquisarParametrosDoSistema().getAnoMesFaturamento(), HistogramaAguaLigacao.class.getName(), "anoMesReferencia", idSetor, true ); repositorioGerencialCadastro.excluirResumo( getControladorUtil().pesquisarParametrosDoSistema().getAnoMesFaturamento(), HistogramaEsgotoEconomia.class.getName(), "referencia", idSetor, true ); repositorioGerencialCadastro.excluirResumo( getControladorUtil().pesquisarParametrosDoSistema().getAnoMesFaturamento(), HistogramaEsgotoLigacao.class.getName(), "referencia", idSetor, true ); List<HistogramaAguaLigacaoHelper> listaSimplificadaAguaLigacao = new ArrayList<HistogramaAguaLigacaoHelper>(); List<HistogramaAguaEconomiaHelper> listaSimplificadaAguaEconomia = new ArrayList<HistogramaAguaEconomiaHelper>(); List<HistogramaEsgotoLigacaoHelper> listaSimplificadaEsgotoLigacao = new ArrayList<HistogramaEsgotoLigacaoHelper>(); List<HistogramaEsgotoEconomiaHelper> listaSimplificadaEsgotoEconomia = new ArrayList<HistogramaEsgotoEconomiaHelper>(); for (int i = 0; i < histogramaAguaLigacao.size(); i++) { Object obj = histogramaAguaLigacao.get(i); if ( i % 100 == 0 || i == 0 ){ System.out.println("PROCESSANDO CONTA " + (i+1) + " DE " + histogramaAguaLigacao.size() ); } if (obj instanceof Object[]) { HistogramaAguaLigacaoHelper histogramaAguaLigacaoHelper; HistogramaAguaEconomiaHelper histogramaAguaEconomiaHelper; HistogramaEsgotoLigacaoHelper histogramaEsgotoLigacaoHelper; HistogramaEsgotoEconomiaHelper histogramaEsgotoEconomiaHelper; Object[] retorno = (Object[]) obj; Integer idConta = (Integer) retorno[0]; Integer idImovel = (Integer) retorno[12]; // Variaveis para preenchimento dos Helper`s Integer idGerenciaRegional = (Integer) retorno[1]; Integer idUnidadeNegocio = (Integer) retorno[2]; Integer idElo = (Integer) retorno[3]; Integer idLocalidade = (Integer) retorno[4]; Integer idSetorCormecial = (Integer) retorno[5]; Integer codigoSetorComercial = (Integer) retorno[6]; Integer idQuadra = (Integer) retorno[7]; Integer numeroQuadra = (Integer) retorno[8]; // Verificamos se o imovel possue categoria mista //Integer idLigacaoMista = (this.repositorioGerencialCadastro // .pesquisaQuantidadeCategorias(idConta) == 1 ? 2 : 1); Integer idConsumoTarifa = (Integer) retorno[9]; Integer idPerfilImovel = (Integer) retorno[10]; // Pesquisamos a esfera de poder Integer idEsferaPoder = this.repositorioGerencialCadastro .pesquisarEsferaPoderClienteResponsavelImovel(idImovel); // Verificamos se a esfera de poder foi encontrada // [FS0002] Verificar existencia de cliente responsavel if (idEsferaPoder.equals(0)) { Imovel imovel = new Imovel(); imovel.setId(idImovel); Cliente clienteTemp = this.getControladorImovel() .consultarClienteUsuarioImovel(imovel); if (clienteTemp != null) { idEsferaPoder = clienteTemp.getClienteTipo() .getEsferaPoder().getId(); } } Integer idSituacaoAgua = (Integer) retorno[11]; Integer idSituacaoEsgoto = (Integer) retorno[13]; Float percentualEsgoto = ( (BigDecimal) retorno[14] ).floatValue(); // Verificamos o consumo real Integer idConsumoReal = this.repositorioGerencialCadastro .verificarConsumoReal(idImovel); // Verificamos a existencia de hidr�metro Integer idHidrometro = this.repositorioGerencialCadastro .verificarExistenciaHidrometro(idImovel); // Verificamos a existencia de poco no imovel Integer idPoco = this.repositorioGerencialCadastro .verificarExistenciaPoco(idImovel); // Verificamos a existencia de volume fixo de agua Integer idVolumeFixoAgua = this.repositorioGerencialCadastro .verificarExistenciaVolumeFixoAgua(idImovel); Integer idVolumeFixoEsgoto = this.repositorioGerencialCadastro .verificarExistenciaVolumeFixoEsgoto(idImovel); // Valores a serem calculados Integer quantidadeEconomiaLigacaoAgua = 0; Integer quantidadeEconomiaLigacaoEsgoto = 0; Integer quantidadeEconomiaAgua = 0; Integer quantidadeEconomiaEsgoto = 0; Float valorFaturadoLigacaoAgua = 0f; Integer volumeFaturadoLigacaoAgua = 0; Float valorFaturadoEconomiaAgua = 0f; Integer volumeFaturadoEconomiaAgua = 0; Float valorFaturadoLigacaoEsgoto = 0f; Integer volumeFaturadoLigacaoEsgoto = 0; Float valorFaturadoEconomiaEsgoto = 0f; Integer volumeFaturadoEconomiaEsgoto = 0; Integer qtdEconomias = 0; Integer quantidadeConsumoAguaLigacao = 0; Integer quantidadeConsumoAguaEconomia = 0; Integer quantidadeConsumoEsgotoLigacao = 0; Integer quantidadeConsumoEsgotoEconomia = 0; Categoria contaCategoriaPrincipal = null; //2. O sistema deverᠡcumular os valores das liga絥s e das economias //do histograma de ᧵a por liga磯 e por economia e do histograma de esgoto //por liga磯 e por economia conforme a seguir: // Criamos um la篠com todas as categorias da conta FiltroContaCategoria filtro = new FiltroContaCategoria(); filtro.adicionarCaminhoParaCarregamentoEntidade("comp_id"); filtro .adicionarCaminhoParaCarregamentoEntidade("comp_id.categoria"); filtro .adicionarCaminhoParaCarregamentoEntidade("comp_id.subcategoria"); filtro .adicionarCaminhoParaCarregamentoEntidade("comp_id.categoria.categoriaTipo"); filtro.adicionarParametro(new ParametroSimples( FiltroContaCategoria.CONTA_ID, idConta)); Collection colContaCategoria = getControladorUtil() .pesquisar(filtro, ContaCategoria.class.getName()); Iterator iteContaCategoria = colContaCategoria.iterator(); // Identificamos a categoria principal contaCategoriaPrincipal = this.repositorioGerencialCadastro.obterPrincipalCategoriaConta( idConta ); FiltroCategoria filtroCategoria = new FiltroCategoria(); filtroCategoria.adicionarParametro(new ParametroSimples( FiltroCategoria.CODIGO, contaCategoriaPrincipal.getId())); filtroCategoria.adicionarCaminhoParaCarregamentoEntidade("categoriaTipo"); Collection colCategoria = getControladorUtil().pesquisar( filtroCategoria, Categoria.class.getName()); Categoria categoriaExistente = (Categoria) colCategoria.iterator().next(); ////[SB0001 ? Preparar Dados do Histograma para Uma Categoria e Uma Economia]. ContaCategoria contaCategoriaAnterior = null; // Usado para verificar se Categoria Mista Integer idLigacaoMista = 2; Integer qtdLigacoesNasEconomias = 0; while (iteContaCategoria.hasNext()) { // Verificamos se quantidade de economias dessa conta 鍊 // maior do que a anterior ContaCategoria contaCategoria = (ContaCategoria) iteContaCategoria .next(); // DADOS EXCLUSIVOS DAS TABELAS DE AGUA /** * **** DADOS PARA A TABELA HISTOGRAMA AGUA LIGACAO * ***** */ if (contaCategoria.getConsumoAgua() != null) { quantidadeConsumoAguaLigacao += contaCategoria .getConsumoAgua(); } quantidadeEconomiaLigacaoAgua += contaCategoria .getQuantidadeEconomia(); if (contaCategoria.getValorAgua() != null) { valorFaturadoLigacaoAgua += contaCategoria .getValorAgua().floatValue(); } // Obtemos o consumo faturado de agua // Se o consumo de agua for menor do que o minimo * as // economias // Devemos pegar o m�nimo if (contaCategoria.getConsumoAgua() != null && contaCategoria.getConsumoMinimoAgua() != null) { if (contaCategoria.getConsumoAgua() < (contaCategoria .getConsumoMinimoAgua() )) { volumeFaturadoLigacaoAgua += contaCategoria .getConsumoMinimoAgua(); } else { volumeFaturadoLigacaoAgua += contaCategoria .getConsumoAgua(); } } /** * **** FIM DADOS PARA A TABELA HISTOGRAMA AGUA LIGACAO * ***** */ // Verifica se Categoria Mista if (contaCategoriaAnterior != null && !contaCategoria.getComp_id().getCategoria().getId().equals( contaCategoriaAnterior.getComp_id().getCategoria().getId())) { idLigacaoMista = 1; } /** * **** DADOS PARA A TABELA HISTOGRAMA ESGOTO LIGACAO * ***** */ if (contaCategoria.getConsumoEsgoto() != null) { quantidadeConsumoEsgotoLigacao += contaCategoria .getConsumoEsgoto(); } quantidadeEconomiaLigacaoEsgoto += contaCategoria .getQuantidadeEconomia(); if (contaCategoria.getValorEsgoto() != null) { valorFaturadoLigacaoEsgoto += contaCategoria .getValorEsgoto().floatValue(); } // Obtemos o consumo faturado de agua // Se o consumo de agua for menor do que o minimo * as // economias // Devemos pegar o m�mo if (contaCategoria.getConsumoEsgoto() != null && contaCategoria.getConsumoMinimoEsgoto() != null) { if (contaCategoria.getConsumoEsgoto() < (contaCategoria .getConsumoMinimoEsgoto() )) { volumeFaturadoLigacaoEsgoto += contaCategoria .getConsumoMinimoEsgoto(); } else { volumeFaturadoLigacaoEsgoto += contaCategoria .getConsumoEsgoto(); } } /** * **** FIM DADOS PARA A TABELA HISTOGRAMA ESGOTO * LIGACAO ***** */ if ( getControladorUtil().pesquisarParametrosDoSistema().getIndicadorTarifaCategoria() == ConstantesSistema.SIM ){ // Verificamos a quantidade de economias da conta faturada qtdEconomias = this.repositorioGerencialCadastro .pesquisaQuantidadeEconomias(idConta, contaCategoria.getComp_id() .getCategoria().getId()); } else { // Verificamos a quantidade de economias da conta faturada qtdEconomias = this.repositorioGerencialCadastro .pesquisaQuantidadeEconomiasPorSubcategoria(idConta, contaCategoria.getComp_id().getCategoria().getId(), contaCategoria.getComp_id().getSubcategoria().getId()); } /** * **** DADOS PARA A TABELA HISTOGRAMA AGUA ECONOMIA * ***** */ quantidadeEconomiaAgua += qtdEconomias; if (contaCategoria.getValorAgua() != null) { valorFaturadoEconomiaAgua += contaCategoria .getValorAgua().floatValue(); // qtdEconomias; } // Obtemos o percentual de esgoto // Alterado Bruno Barros / 23/11/2007 // percentualEsgoto = this.repositorioGerencialCadastro // .percentualColetaEsgoto(idImovel); // Obtemos o consumo faturado de agua // Se o consumo de agua for menor do que o minimo * as // economias // Devemos pegar o m�nimo if (contaCategoria.getConsumoAgua() != null && contaCategoria.getConsumoMinimoAgua() != null) { if (contaCategoria.getConsumoAgua() < (contaCategoria .getConsumoMinimoAgua() )) { volumeFaturadoEconomiaAgua += contaCategoria .getConsumoMinimoAgua(); } else { volumeFaturadoEconomiaAgua += contaCategoria .getConsumoAgua(); // qtdEconomias; } } if ( contaCategoria.getConsumoAgua() != null && contaCategoria.getConsumoAgua() != 0 ){ quantidadeConsumoAguaEconomia += contaCategoria.getConsumoAgua(); } // if ( contaCategoria.getComp_id().getCategoria().getId().equals( // contaCategoriaPrincipal.getId() ) && contaCategoriaAnterior == null){ // qtdLigacoesNasEconomias = 1; // } if ( contaCategoriaAnterior == null) { qtdLigacoesNasEconomias = 1; } /** * **** DADOS PARA A TABELA HISTOGRAMA ESGOTO ECONOMIA * ***** */ quantidadeEconomiaEsgoto += qtdEconomias; if (contaCategoria.getValorEsgoto() != null) { valorFaturadoEconomiaEsgoto += contaCategoria .getValorEsgoto().floatValue(); // qtdEconomias; } // Obtemos o consumo faturado de agua // Se o consumo de agua for menor do que o minimo * as // economias // Devemos pegar o m�nimo if (contaCategoria.getConsumoEsgoto() != null && contaCategoria.getConsumoMinimoEsgoto() != null) { if (contaCategoria.getConsumoEsgoto() < (contaCategoria .getConsumoMinimoEsgoto() )) { volumeFaturadoEconomiaEsgoto += contaCategoria .getConsumoMinimoEsgoto(); } else { volumeFaturadoEconomiaEsgoto += contaCategoria .getConsumoEsgoto(); // qtdEconomias; } } if ( contaCategoria.getConsumoEsgoto() != null && contaCategoria.getConsumoEsgoto() != 0 ){ quantidadeConsumoEsgotoEconomia += contaCategoria.getConsumoEsgoto(); } contaCategoriaAnterior = contaCategoria; } //******************************************************************************** //******************************************************************************** if ( quantidadeConsumoAguaEconomia != null && !quantidadeConsumoAguaEconomia.equals(0) ){ quantidadeConsumoAguaEconomia = ( quantidadeConsumoAguaEconomia / quantidadeEconomiaAgua ); } // Criamos um helper para os histograma de agua por economia histogramaAguaEconomiaHelper = new HistogramaAguaEconomiaHelper( idGerenciaRegional, idUnidadeNegocio, idElo, idLocalidade, idSetorCormecial, codigoSetorComercial, idQuadra, numeroQuadra, categoriaExistente.getCategoriaTipo().getId(), contaCategoriaPrincipal.getId(), idConsumoTarifa, idPerfilImovel, idEsferaPoder, idSituacaoAgua, idConsumoReal, idHidrometro, idPoco, idVolumeFixoAgua, quantidadeConsumoAguaEconomia, qtdLigacoesNasEconomias); // Agrupamos o histograma agua por economia if (!valorFaturadoEconomiaAgua.equals(0f)) { if (listaSimplificadaAguaEconomia .contains(histogramaAguaEconomiaHelper)) { int posicao = listaSimplificadaAguaEconomia .indexOf(histogramaAguaEconomiaHelper); HistogramaAguaEconomiaHelper jaCadastrado = (HistogramaAguaEconomiaHelper) listaSimplificadaAguaEconomia .get(posicao); jaCadastrado.setQuantidadeEconomia(jaCadastrado .getQuantidadeEconomia() + quantidadeEconomiaAgua); jaCadastrado.setValorFaturadoEconomia(jaCadastrado .getValorFaturadoEconomia() + valorFaturadoEconomiaAgua); jaCadastrado.setVolumeFaturadoEconomia(jaCadastrado .getVolumeFaturadoEconomia() + volumeFaturadoEconomiaAgua); jaCadastrado.setQuantidadeLigacoes(jaCadastrado.getQuantidadeLigacoes() + qtdLigacoesNasEconomias); } else { histogramaAguaEconomiaHelper .setQuantidadeEconomia(quantidadeEconomiaAgua); histogramaAguaEconomiaHelper .setValorFaturadoEconomia(valorFaturadoEconomiaAgua); histogramaAguaEconomiaHelper .setVolumeFaturadoEconomia(volumeFaturadoEconomiaAgua); listaSimplificadaAguaEconomia .add(histogramaAguaEconomiaHelper); } } /** * **** FIM DADOS PARA A TABELA HISTOGRAMA AGUA ECONOMIA * ***** */ if ( quantidadeConsumoEsgotoEconomia != null && !quantidadeConsumoEsgotoEconomia.equals(0) ){ quantidadeConsumoEsgotoEconomia += (quantidadeConsumoEsgotoEconomia / quantidadeEconomiaEsgoto); } // Criamos um helper para os histograma de Esgoto por // Economia histogramaEsgotoEconomiaHelper = new HistogramaEsgotoEconomiaHelper( idGerenciaRegional, idUnidadeNegocio, idElo, idLocalidade, idSetorCormecial, codigoSetorComercial, idQuadra, numeroQuadra, categoriaExistente.getCategoriaTipo().getId(), contaCategoriaPrincipal.getId(), idConsumoTarifa, idPerfilImovel, idEsferaPoder, idSituacaoEsgoto, idConsumoReal, idHidrometro, idPoco, idVolumeFixoEsgoto, percentualEsgoto, quantidadeConsumoEsgotoEconomia, qtdLigacoesNasEconomias); // Agrupamos o histograma esgoto por economia if (!valorFaturadoEconomiaEsgoto.equals(0f)) { if (listaSimplificadaEsgotoEconomia .contains(histogramaEsgotoEconomiaHelper)) { int posicao = listaSimplificadaEsgotoEconomia .indexOf(histogramaEsgotoEconomiaHelper); HistogramaEsgotoEconomiaHelper jaCadastrado = (HistogramaEsgotoEconomiaHelper) listaSimplificadaEsgotoEconomia .get(posicao); jaCadastrado.setQuantidadeEconomia(jaCadastrado .getQuantidadeEconomia() + quantidadeEconomiaEsgoto); jaCadastrado.setValorFaturadoEconomia(jaCadastrado .getValorFaturadoEconomia() + valorFaturadoEconomiaEsgoto); jaCadastrado.setVolumeFaturadoEconomia(jaCadastrado .getVolumeFaturadoEconomia() + volumeFaturadoEconomiaEsgoto); jaCadastrado.setQuantidadeLigacoes(jaCadastrado.getQuantidadeLigacoes() + qtdLigacoesNasEconomias); } else { histogramaEsgotoEconomiaHelper .setQuantidadeEconomia(quantidadeEconomiaEsgoto); histogramaEsgotoEconomiaHelper .setValorFaturadoEconomia(valorFaturadoEconomiaEsgoto); histogramaEsgotoEconomiaHelper .setVolumeFaturadoEconomia(volumeFaturadoEconomiaEsgoto); listaSimplificadaEsgotoEconomia .add(histogramaEsgotoEconomiaHelper); } /** * **** FIM DADOS PARA A TABELA HISTOGRAMA AGUA ECONOMIA * ***** */ } //[SB0003 ? Preparar Dados do Histograma para Mais de Uma Categoria]. //FiltroCategoria filtroCategoria = new FiltroCategoria(); //filtroCategoria.adicionarParametro(new ParametroSimples( // FiltroCategoria.CODIGO, contaCategoriaPrincipal.getId())); //filtroCategoria.adicionarCaminhoParaCarregamentoEntidade("categoriaTipo"); //Collection colCategoria = getControladorUtil().pesquisar( // filtroCategoria, Categoria.class.getName()); //Categoria categoriaExistente = (Categoria) colCategoria.iterator().next(); // Criamos um helper para os histograma de agua por liga��o histogramaAguaLigacaoHelper = new HistogramaAguaLigacaoHelper( idGerenciaRegional, idUnidadeNegocio, idElo, idLocalidade, idSetorCormecial, codigoSetorComercial, idQuadra, numeroQuadra, categoriaExistente.getCategoriaTipo().getId(), contaCategoriaPrincipal.getId(), idLigacaoMista, idConsumoTarifa, idPerfilImovel, idEsferaPoder, idSituacaoAgua, idConsumoReal, idHidrometro, idPoco, idVolumeFixoAgua, quantidadeConsumoAguaLigacao); // Agrupamos o histograma agua ligacao if (!valorFaturadoLigacaoAgua.equals(0f)) { if (listaSimplificadaAguaLigacao .contains(histogramaAguaLigacaoHelper)) { int posicao = listaSimplificadaAguaLigacao .indexOf(histogramaAguaLigacaoHelper); HistogramaAguaLigacaoHelper jaCadastrado = (HistogramaAguaLigacaoHelper) listaSimplificadaAguaLigacao .get(posicao); jaCadastrado.setQuantidadeLigacao(jaCadastrado .getQuantidadeLigacao() + 1); jaCadastrado .setQuantidadeEconomiaLigacao(jaCadastrado .getQuantidadeEconomiaLigacao() + quantidadeEconomiaLigacaoAgua); jaCadastrado.setValorFaturadoLigacao(jaCadastrado .getValorFaturadoLigacao() + valorFaturadoLigacaoAgua); jaCadastrado.setVolumeFaturadoLigacao(jaCadastrado .getVolumeFaturadoLigacao() + volumeFaturadoLigacaoAgua); } else { histogramaAguaLigacaoHelper .setQuantidadeLigacao(1); histogramaAguaLigacaoHelper .setQuantidadeEconomiaLigacao(quantidadeEconomiaLigacaoAgua); histogramaAguaLigacaoHelper .setValorFaturadoLigacao(valorFaturadoLigacaoAgua); histogramaAguaLigacaoHelper .setVolumeFaturadoLigacao(volumeFaturadoLigacaoAgua); listaSimplificadaAguaLigacao .add(histogramaAguaLigacaoHelper); } } // Criamos um helper para os histograma de Esgoto por // liga��o histogramaEsgotoLigacaoHelper = new HistogramaEsgotoLigacaoHelper( idGerenciaRegional, idUnidadeNegocio, idElo, idLocalidade, idSetorCormecial, codigoSetorComercial, idQuadra, numeroQuadra, categoriaExistente.getCategoriaTipo().getId(), contaCategoriaPrincipal.getId(), idLigacaoMista, idConsumoTarifa, idPerfilImovel, idEsferaPoder, idSituacaoEsgoto, idConsumoReal, idHidrometro, idPoco, idVolumeFixoEsgoto, percentualEsgoto, quantidadeConsumoEsgotoLigacao); // Agrupamos o histograma esgoto por ligacao if (!valorFaturadoLigacaoEsgoto.equals(0f)) { if (listaSimplificadaEsgotoLigacao .contains(histogramaEsgotoLigacaoHelper)) { int posicao = listaSimplificadaEsgotoLigacao .indexOf(histogramaEsgotoLigacaoHelper); HistogramaEsgotoLigacaoHelper jaCadastrado = (HistogramaEsgotoLigacaoHelper) listaSimplificadaEsgotoLigacao .get(posicao); jaCadastrado.setQuantidadeLigacao(jaCadastrado .getQuantidadeLigacao() + 1); jaCadastrado .setQuantidadeEconomiaLigacao(jaCadastrado .getQuantidadeEconomiaLigacao() + quantidadeEconomiaLigacaoEsgoto); jaCadastrado.setValorFaturadoLigacao(jaCadastrado .getValorFaturadoLigacao() + valorFaturadoLigacaoEsgoto); jaCadastrado.setVolumeFaturadoLigacao(jaCadastrado .getVolumeFaturadoLigacao() + volumeFaturadoLigacaoEsgoto); } else { histogramaEsgotoLigacaoHelper .setQuantidadeLigacao(1); histogramaEsgotoLigacaoHelper .setQuantidadeEconomiaLigacao(quantidadeEconomiaLigacaoEsgoto); histogramaEsgotoLigacaoHelper .setValorFaturadoLigacao(valorFaturadoLigacaoEsgoto); histogramaEsgotoLigacaoHelper .setVolumeFaturadoLigacao(volumeFaturadoLigacaoEsgoto); listaSimplificadaEsgotoLigacao .add(histogramaEsgotoLigacaoHelper); } } } } for (int j = 0; j < listaSimplificadaAguaLigacao.size(); j++) { this.repositorioGerencialCadastro .inserirHistogramaAguaLigacao( anoMesReferencia, (HistogramaAguaLigacaoHelper) listaSimplificadaAguaLigacao .get(j)); } for (int j = 0; j < listaSimplificadaAguaEconomia.size(); j++) { this.repositorioGerencialCadastro .inserirHistogramaAguaEconomima( anoMesReferencia, (HistogramaAguaEconomiaHelper) listaSimplificadaAguaEconomia .get(j)); } for (int j = 0; j < listaSimplificadaEsgotoLigacao.size(); j++) { this.repositorioGerencialCadastro .inserirHistogramaEsgotoLigacao( anoMesReferencia, (HistogramaEsgotoLigacaoHelper) listaSimplificadaEsgotoLigacao .get(j)); } for (int j = 0; j < listaSimplificadaEsgotoEconomia.size(); j++) { this.repositorioGerencialCadastro .inserirHistogramaEsgotoEconomia( anoMesReferencia, (HistogramaEsgotoEconomiaHelper) listaSimplificadaEsgotoEconomia .get(j)); } gerarResumoHistogramaImoveisNaoFaturados( anoMesReferencia, idSetor, idFuncionalidadeIniciada ); // -------------------------------------------------------- // // Registrar o fim da execu��o da Unidade de Processamento // // -------------------------------------------------------- getControladorBatch().encerrarUnidadeProcessamentoBatch(null, idUnidadeIniciada, false); } catch (Exception ex) { // Este catch serve para interceptar qualquer exce��o que o processo // batch venha a lan�ar e garantir que a unidade de processamento do // batch ser� atualizada com o erro ocorrido System.out.println(" ERRO NO SETOR COMERCIAL " + idSetor); ex.printStackTrace(); getControladorBatch().encerrarUnidadeProcessamentoBatch(ex, idUnidadeIniciada, true); throw new EJBException(ex); } } /** * * * @param anoMesReferencia * @param idSetor * @param unidadeIniciada * @throws ControladorException */ public void gerarResumoHistogramaImoveisNaoFaturados( int anoMesReferencia, int idSetor, int unidadeIniciada ) throws ControladorException { try{ // selecionamos o consumo historico List consumoHistoricoHistograma = this.repositorioGerencialCadastro .getConsumoHistoricoImoveisNaoFaturados( idSetor ); List<HistogramaAguaLigacaoHelper> listaSimplificadaAguaLigacao = new ArrayList<HistogramaAguaLigacaoHelper>(); List<HistogramaAguaEconomiaHelper> listaSimplificadaAguaEconomia = new ArrayList<HistogramaAguaEconomiaHelper>(); List<HistogramaEsgotoLigacaoHelper> listaSimplificadaEsgotoLigacao = new ArrayList<HistogramaEsgotoLigacaoHelper>(); List<HistogramaEsgotoEconomiaHelper> listaSimplificadaEsgotoEconomia = new ArrayList<HistogramaEsgotoEconomiaHelper>(); for (int i = 0; i < consumoHistoricoHistograma.size(); i++) { Object obj = consumoHistoricoHistograma.get(i); if (obj instanceof Object[]) { HistogramaAguaLigacaoHelper histogramaAguaLigacaoHelper; HistogramaAguaEconomiaHelper histogramaAguaEconomiaHelper; HistogramaEsgotoLigacaoHelper histogramaEsgotoLigacaoHelper; HistogramaEsgotoEconomiaHelper histogramaEsgotoEconomiaHelper; Object[] retorno = (Object[]) obj; Integer idImovel = (Integer) retorno[11]; Imovel imovel = new Imovel(); imovel.setId( idImovel ); // Selecionamos todas as categorias distintas do imovel Collection colCategoriaImovel = this.repositorioGerencialCadastro.getCategoriasImovelDistintas( idImovel ); Iterator iteCategoriaImovel = colCategoriaImovel.iterator(); Integer consumoMinimoMes = 0; Integer consumoFaturadoMes = 0; Integer ligacaoMista = 0; // Obtemos o consumo m�nimo de cada categoria do imovel while ( iteCategoriaImovel.hasNext() ){ Categoria categoria = ( Categoria ) iteCategoriaImovel.next(); categoria.setConsumoMinimo( this.obterConsumoMinimoCategoria( imovel, categoria ) ); consumoMinimoMes += categoria.getConsumoMinimo(); ligacaoMista++; } ligacaoMista = ( ligacaoMista == 1 ? 2 : 1 ); // Selecionamos o consumo faturado do mes consumoFaturadoMes = (Integer) retorno[15]; Short quantidadeEconomiasImovel = (Short) retorno[13]; List<Long> consumosImovelporCategoria = new ArrayList<Long>(); List<Short> quantidadeEconomiasImovelporCategoria = new ArrayList<Short>(); Categoria categoriaPrincipal = null; Short quantidadeEconomiasAnterior = 0; // Obtemos o consumo do imovel para cada categoria e selecionamos // a principal categoria do imovel iteCategoriaImovel = colCategoriaImovel.iterator(); while( iteCategoriaImovel.hasNext() ){ Categoria categoria = ( Categoria ) iteCategoriaImovel.next(); long fator = ( consumoFaturadoMes - consumoMinimoMes ) / quantidadeEconomiasImovel; Short quantidadeEconomias = this.repositorioImovel.pesquisarObterQuantidadeEconomias( imovel, categoria ); long consumoImovelCategoria = categoria.getConsumoMinimo() + fator * quantidadeEconomias; consumosImovelporCategoria.add( consumoImovelCategoria ); quantidadeEconomiasImovelporCategoria.add( quantidadeEconomias ); // Selecionamos a categoria principal if ( categoriaPrincipal == null || quantidadeEconomias > quantidadeEconomiasAnterior ){ categoriaPrincipal = categoria; } quantidadeEconomiasAnterior = quantidadeEconomias; } // Variaveis para preenchimento dos Helper`s Integer idGerenciaRegional = (Integer) retorno[0]; Integer idUnidadeNegocio = (Integer) retorno[1]; Integer idElo = (Integer) retorno[2]; Integer idLocalidade = (Integer) retorno[3]; Integer idSetorCormecial = (Integer) retorno[4]; Integer codigoSetorComercial = (Integer) retorno[5]; Integer idQuadra = (Integer) retorno[6]; Integer numeroQuadra = (Integer) retorno[7]; // Verificamos se o imovel possue categoria mista Integer idConsumoTarifa = (Integer) retorno[8]; Integer idPerfilImovel = (Integer) retorno[9]; // Pesquisamos a esfera de poder Integer idEsferaPoder = this.repositorioGerencialCadastro .pesquisarEsferaPoderClienteResponsavelImovel(idImovel); // Verificamos se a esfera de poder foi encontrada // [FS0002] Verificar existencia de cliente responsavel if (idEsferaPoder.equals(0)) { Cliente clienteTemp = this.getControladorImovel() .consultarClienteUsuarioImovel(imovel); if (clienteTemp != null) { idEsferaPoder = clienteTemp.getClienteTipo() .getEsferaPoder().getId(); } } // Obtemos o percentual de esgoto Float percentualEsgoto = ( ( retorno[18] ) == null ? 0 : ( ( BigDecimal )retorno[18] ).floatValue() ); Integer idSituacaoAgua = (Integer) retorno[10]; Integer idSituacaoEsgoto = (Integer) retorno[12]; Integer idTipoLigacao = (Integer) retorno[14]; // Verificamos o consumo real Integer idConsumoReal = ( ( ( Integer ) retorno[17] ).equals( 1 ) ? 1 : 2 ); // Verificamos a existencia de hidr�metro Integer idHidrometro = this.repositorioGerencialCadastro.verificarExistenciaHidrometro(idImovel); // Verificamos a existencia de poco no imovel Integer idPoco = ( retorno[16] != null && !( ( Integer ) retorno[16] ).equals( 0 ) ? 1 : 2 ); Integer idVolumeFixoAgua = this.repositorioGerencialCadastro.verificarExistenciaVolumeFixoAgua(idImovel); Integer idVolumeFixoEsgoto = this.repositorioGerencialCadastro.verificarExistenciaVolumeFixoEsgoto(idImovel); // Valores a serem calculados Integer quantidadeLigacaoAgua = 0; Integer quantidadeEconomiaLigacaoAgua = 0; Short quantidadeEconomiaLigacaoEsgoto = 0; Integer quantidadeEconomiaAgua = 0; Integer quantidadeEconomiaEsgoto = 0; Integer volumeFaturadoLigacaoAgua = 0; Long volumeFaturadoEconomiaAgua = 0l; Integer quantidadeLigacaoEsgoto = 0; Integer volumeFaturadoLigacaoEsgoto = 0; Long volumeFaturadoEconomiaEsgoto = 0l; Integer quantidadeConsumoAgua = 0; Integer quantidadeConsumoEsgoto = 0; Integer index = 0; iteCategoriaImovel = colCategoriaImovel.iterator(); while (iteCategoriaImovel.hasNext()) { // Verificamos se quantidade de economias dessa conta � // maior do que a anterior Categoria categoria = (Categoria) iteCategoriaImovel .next(); if ( idTipoLigacao.equals( LigacaoTipo.LIGACAO_AGUA ) ){ /** ***** FIM DADOS PARA A TABELA HISTOGRAMA AGUA LIGACAO ******* **/ quantidadeLigacaoAgua++; quantidadeEconomiaLigacaoAgua += ( Short ) quantidadeEconomiasImovelporCategoria.get( index ); // Obtemos o consumo faturado de agua // Se o consumo de agua for menor do que o minimo * as // economias // Devemos pegar o m�nimo if ( ( Long ) consumosImovelporCategoria.get( index ) < categoria.getConsumoMinimo() ){ volumeFaturadoLigacaoAgua += categoria.getConsumoMinimo(); } else { volumeFaturadoLigacaoAgua += consumosImovelporCategoria.get( index ).intValue(); } quantidadeConsumoAgua += consumosImovelporCategoria.get( index ).intValue(); /** ***** FIM DADOS PARA A TABELA HISTOGRAMA AGUA LIGACAO ******* **/ /** **** DADOS PARA A TABELA HISTOGRAMA AGUA ECONOMIA ****** **/ quantidadeEconomiaAgua += ( Short ) quantidadeEconomiasImovelporCategoria.get( index ); // Obtemos o consumo faturado de agua // Se o consumo de agua for menor do que o minimo * as // economias // Devemos pegar o m�nimo if ( ( Long ) consumosImovelporCategoria.get( index ) < categoria.getConsumoMinimo() ){ volumeFaturadoEconomiaAgua += categoria.getConsumoMinimo(); } else { volumeFaturadoEconomiaAgua += consumosImovelporCategoria.get( index ); // quantidadeEconomiasImovelporCategoria.get( index ); } /** **** FIM DADOS PARA A TABELA HISTOGRAMA AGUA ECONOMIA ****** **/ } if ( idTipoLigacao.equals( LigacaoTipo.LIGACAO_ESGOTO ) ){ /** ***** DADOS PARA A TABELA HISTOGRAMA ESGOTO LIGACAO ****** **/ quantidadeLigacaoEsgoto++; quantidadeEconomiaLigacaoEsgoto = ( Short ) quantidadeEconomiasImovelporCategoria.get( index ); // Obtemos o consumo faturado de esgoto // Se o consumo de esgoto for menor do que o minimo * as // economias // Devemos pegar o m�nimo if ( ( Long ) consumosImovelporCategoria.get( index ) < categoria.getConsumoMinimo() ){ volumeFaturadoLigacaoEsgoto += categoria.getConsumoMinimo(); } else { volumeFaturadoLigacaoEsgoto += ( ( Long ) consumosImovelporCategoria.get( index ) ).intValue(); } quantidadeConsumoEsgoto += consumosImovelporCategoria.get( index ).intValue(); /** ***** FIM DADOS PARA A TABELA HISTOGRAMA ESGOTO LIGACAO ****** **/ /** **** DADOS PARA A TABELA HISTOGRAMA ESGOTO ECONOMIA ****** **/ quantidadeEconomiaEsgoto += ( Short ) quantidadeEconomiasImovelporCategoria.get( index ); // Obtemos o consumo faturado de agua // Se o consumo de agua for menor do que o minimo * as // economias // Devemos pegar o m�nimo if ( ( Long ) consumosImovelporCategoria.get( index ) < categoria.getConsumoMinimo() ){ volumeFaturadoEconomiaEsgoto += categoria.getConsumoMinimo(); } else { volumeFaturadoEconomiaEsgoto += consumosImovelporCategoria.get( index ); // quantidadeEconomiasImovelporCategoria.get( index ); } /** **** FIM DADOS PARA A TABELA HISTOGRAMA AGUA ECONOMIA ****** **/ } } if ( idTipoLigacao.equals( LigacaoTipo.LIGACAO_AGUA ) ){ // Criamos um helper para os histograma de agua por liga��o histogramaAguaLigacaoHelper = new HistogramaAguaLigacaoHelper( idGerenciaRegional, idUnidadeNegocio, idElo, idLocalidade, idSetorCormecial, codigoSetorComercial, idQuadra, numeroQuadra, categoriaPrincipal.getCategoriaTipo().getId(), categoriaPrincipal.getId(), ligacaoMista, idConsumoTarifa, idPerfilImovel, idEsferaPoder, idSituacaoAgua, idConsumoReal, idHidrometro, idPoco, idVolumeFixoAgua, quantidadeConsumoAgua); if (listaSimplificadaAguaLigacao .contains(histogramaAguaLigacaoHelper)) { int posicao = listaSimplificadaAguaLigacao .indexOf(histogramaAguaLigacaoHelper); HistogramaAguaLigacaoHelper jaCadastrado = (HistogramaAguaLigacaoHelper) listaSimplificadaAguaLigacao .get(posicao); jaCadastrado.setQuantidadeLigacao(jaCadastrado .getQuantidadeLigacao() + quantidadeLigacaoAgua); jaCadastrado .setQuantidadeEconomiaLigacao(jaCadastrado .getQuantidadeEconomiaLigacao() + quantidadeEconomiaLigacaoAgua); jaCadastrado.setVolumeFaturadoLigacao(jaCadastrado .getVolumeFaturadoLigacao() + volumeFaturadoLigacaoAgua); } else { histogramaAguaLigacaoHelper .setQuantidadeLigacao(quantidadeLigacaoAgua); histogramaAguaLigacaoHelper .setQuantidadeEconomiaLigacao(quantidadeEconomiaLigacaoAgua); histogramaAguaLigacaoHelper .setValorFaturadoLigacao( 0f ); histogramaAguaLigacaoHelper .setVolumeFaturadoLigacao(volumeFaturadoLigacaoAgua); listaSimplificadaAguaLigacao .add(histogramaAguaLigacaoHelper); } // Criamos um helper para os histograma de agua por economia histogramaAguaEconomiaHelper = new HistogramaAguaEconomiaHelper( idGerenciaRegional, idUnidadeNegocio, idElo, idLocalidade, idSetorCormecial, codigoSetorComercial, idQuadra, numeroQuadra, categoriaPrincipal.getCategoriaTipo().getId(), categoriaPrincipal.getId(), idConsumoTarifa, idPerfilImovel, idEsferaPoder, idSituacaoAgua, idConsumoReal, idHidrometro, idPoco, idVolumeFixoAgua, quantidadeConsumoAgua, 1); if (listaSimplificadaAguaEconomia .contains(histogramaAguaEconomiaHelper)) { int posicao = listaSimplificadaAguaEconomia .indexOf(histogramaAguaEconomiaHelper); HistogramaAguaEconomiaHelper jaCadastrado = (HistogramaAguaEconomiaHelper) listaSimplificadaAguaEconomia .get(posicao); jaCadastrado.setQuantidadeEconomia(jaCadastrado .getQuantidadeEconomia() + quantidadeEconomiaAgua); jaCadastrado.setVolumeFaturadoEconomia( (Integer)jaCadastrado.getVolumeFaturadoEconomia().intValue() + volumeFaturadoEconomiaAgua.intValue()); } else { histogramaAguaEconomiaHelper .setQuantidadeEconomia(quantidadeEconomiaAgua); histogramaAguaEconomiaHelper .setValorFaturadoEconomia( 0f ); histogramaAguaEconomiaHelper .setVolumeFaturadoEconomia(volumeFaturadoEconomiaAgua.intValue()); listaSimplificadaAguaEconomia .add(histogramaAguaEconomiaHelper); } } if ( idTipoLigacao.equals( LigacaoTipo.LIGACAO_ESGOTO ) ){ // Criamos um helper para os histograma de Esgoto por liga��o histogramaEsgotoLigacaoHelper = new HistogramaEsgotoLigacaoHelper( idGerenciaRegional, idUnidadeNegocio, idElo, idLocalidade, idSetorCormecial, codigoSetorComercial, idQuadra, numeroQuadra, categoriaPrincipal.getCategoriaTipo().getId(), categoriaPrincipal.getId(), ligacaoMista, idConsumoTarifa, idPerfilImovel, idEsferaPoder, idSituacaoEsgoto, idConsumoReal, idHidrometro, idPoco, idVolumeFixoEsgoto, percentualEsgoto, quantidadeConsumoEsgoto); if (listaSimplificadaEsgotoLigacao .contains(histogramaEsgotoLigacaoHelper)) { int posicao = listaSimplificadaEsgotoLigacao .indexOf(histogramaEsgotoLigacaoHelper); HistogramaEsgotoLigacaoHelper jaCadastrado = (HistogramaEsgotoLigacaoHelper) listaSimplificadaEsgotoLigacao .get(posicao); jaCadastrado.setQuantidadeLigacao(jaCadastrado .getQuantidadeLigacao() + quantidadeLigacaoEsgoto); jaCadastrado .setQuantidadeEconomiaLigacao(jaCadastrado .getQuantidadeEconomiaLigacao() + quantidadeEconomiaLigacaoEsgoto); jaCadastrado.setVolumeFaturadoLigacao(jaCadastrado .getVolumeFaturadoLigacao() + volumeFaturadoLigacaoEsgoto); } else { histogramaEsgotoLigacaoHelper .setQuantidadeLigacao(quantidadeLigacaoEsgoto); histogramaEsgotoLigacaoHelper .setQuantidadeEconomiaLigacao(quantidadeEconomiaLigacaoEsgoto.intValue()); histogramaEsgotoLigacaoHelper .setValorFaturadoLigacao( 0f ); histogramaEsgotoLigacaoHelper .setVolumeFaturadoLigacao(volumeFaturadoLigacaoEsgoto); listaSimplificadaEsgotoLigacao .add(histogramaEsgotoLigacaoHelper); } // Criamos um helper para os histograma de Esgoto por Economia histogramaEsgotoEconomiaHelper = new HistogramaEsgotoEconomiaHelper( idGerenciaRegional, idUnidadeNegocio, idElo, idLocalidade, idSetorCormecial, codigoSetorComercial, idQuadra, numeroQuadra, categoriaPrincipal.getCategoriaTipo().getId(), categoriaPrincipal.getId(), idConsumoTarifa, idPerfilImovel, idEsferaPoder, idSituacaoEsgoto, idConsumoReal, idHidrometro, idPoco, idVolumeFixoEsgoto, percentualEsgoto, quantidadeConsumoEsgoto, 1); // Agrupamos o histograma esgoto por economia if (listaSimplificadaEsgotoEconomia .contains(histogramaEsgotoEconomiaHelper)) { int posicao = listaSimplificadaEsgotoEconomia .indexOf(histogramaEsgotoEconomiaHelper); HistogramaEsgotoEconomiaHelper jaCadastrado = (HistogramaEsgotoEconomiaHelper) listaSimplificadaEsgotoEconomia .get(posicao); jaCadastrado.setQuantidadeEconomia(jaCadastrado .getQuantidadeEconomia() + quantidadeEconomiaEsgoto); jaCadastrado.setVolumeFaturadoEconomia( ( (Integer) jaCadastrado .getVolumeFaturadoEconomia().intValue() + volumeFaturadoEconomiaEsgoto.intValue() ) ); } else { histogramaEsgotoEconomiaHelper .setQuantidadeEconomia(quantidadeEconomiaEsgoto); histogramaEsgotoEconomiaHelper .setValorFaturadoEconomia( 0f ); histogramaEsgotoEconomiaHelper .setVolumeFaturadoEconomia(volumeFaturadoEconomiaEsgoto.intValue()); listaSimplificadaEsgotoEconomia .add(histogramaEsgotoEconomiaHelper); } } } } for (int j = 0; j < listaSimplificadaAguaLigacao.size(); j++) { this.repositorioGerencialCadastro .inserirHistogramaAguaLigacao( anoMesReferencia, (HistogramaAguaLigacaoHelper) listaSimplificadaAguaLigacao .get(j)); } for (int j = 0; j < listaSimplificadaAguaEconomia.size(); j++) { this.repositorioGerencialCadastro .inserirHistogramaAguaEconomima( anoMesReferencia, (HistogramaAguaEconomiaHelper) listaSimplificadaAguaEconomia .get(j)); } for (int j = 0; j < listaSimplificadaEsgotoLigacao.size(); j++) { this.repositorioGerencialCadastro .inserirHistogramaEsgotoLigacao( anoMesReferencia, (HistogramaEsgotoLigacaoHelper) listaSimplificadaEsgotoLigacao .get(j)); } for (int j = 0; j < listaSimplificadaEsgotoEconomia.size(); j++) { this.repositorioGerencialCadastro .inserirHistogramaEsgotoEconomia( anoMesReferencia, (HistogramaEsgotoEconomiaHelper) listaSimplificadaEsgotoEconomia .get(j)); } } catch (Exception ex) { // Este catch serve para interceptar qualquer exce��o que o processo // batch venha a lan�ar e garantir que a unidade de processamento do // batch ser� atualizada com o erro ocorrido System.out.println(" ERRO NO SETOR COMERCIAL " + idSetor); ex.printStackTrace(); // sessionContext.setRollbackOnly(); throw new EJBException(ex); } } /** * M�todo que gera o resumo das liga��es e economias * * [UC0275] - Gerar Resumo das Liga��es/Economias * * @author Thiago Toscano, Bruno Barros, Ivan Sergio, Daniel Alves * @date 19/04/2006, 17/04/2007, 09/01/2009, 07/04/2010 * @alteracao 09/01/2009 - CRC937 - Verificar o indicador de Imovel Condominio * para acumular a qtdEconomias. * @alteracao 07/04/2010 - CRC3558 - Adicionar os novos campos, * [Quantidade de liga絥s cortadas mes e Quantidade de religa絥s no mes]. */ public void gerarResumoLigacoesEconomias(int idSetor, int idFuncionalidadeIniciada) throws ControladorException { int idUnidadeIniciada = 0; // ------------------------- // // Registrar o in�cio do processamento da Unidade de // Processamento // do Batch // // ------------------------- idUnidadeIniciada = getControladorBatch() .iniciarUnidadeProcessamentoBatch(idFuncionalidadeIniciada, UnidadeProcessamento.SETOR_COMERCIAL, idSetor); try { List imoveisResumoLigacaoEconomias = this.repositorioGerencialCadastro .getImoveisResumoLigacaoEconomias(idSetor); List<ResumoLigacaoEconomiaHelper> listaSimplificada = new ArrayList(); List<UnResumoLigacaoEconomia> listaResumoLigacoesEconomia = new ArrayList(); Imovel imovelObterQtdEconomia = null; //FS0001 - Verificar existencia de dados para o ano/mes referencia informado repositorioGerencialCadastro.excluirResumo( getControladorUtil().pesquisarParametrosDoSistema().getAnoMesFaturamento(), UnResumoLigacaoEconomia.class.getName(), "referencia", idSetor, false ); // pra cada objeto obter a categoria // caso ja tenha um igual soma a quantidade de economias e a // quantidade de ligacoes for (int i = 0; i < imoveisResumoLigacaoEconomias.size(); i++) { Object obj = imoveisResumoLigacaoEconomias.get(i); if (obj instanceof Object[]) { Object[] retorno = (Object[]) obj; //****************************************************** // Alteracao - CRC937 //****************************************************** Integer quantidadeEconomia = null; Short indicadorCondominio = (Short) retorno[24]; if (indicadorCondominio == 1) { quantidadeEconomia = 1; }else { // Pesquisamos as quantidades de economia do imovel corrente imovelObterQtdEconomia = new Imovel(); imovelObterQtdEconomia.setId((Integer) retorno[0]); quantidadeEconomia = this.getControladorImovel().obterQuantidadeEconomias(imovelObterQtdEconomia); if (quantidadeEconomia == null) { quantidadeEconomia = 0; } } //****************************************************** // Montamos um objeto de resumo, com as informacoes do // retorno ResumoLigacaoEconomiaHelper helper = new ResumoLigacaoEconomiaHelper( (Integer) retorno[1], // Gerencia Regional (Integer) retorno[2], // Unidade de negocio (Integer) retorno[3], // Localidade (Integer) retorno[4], // Elo (Integer) retorno[5], // Id Setor Comercial (Integer) retorno[6], // id Rota (Integer) retorno[7], // Id Quadra (Integer) retorno[8], // Codigo do Setor Comercial (Integer) retorno[9], // Numero da quadra (Integer) retorno[10], // Perfil do imovel (Integer) retorno[11],// Situacao da ligacao da // agua (Integer) retorno[12],// Situacao da ligacao do // esgoto (Integer) retorno[13],// Perfil da ligacao de agua (Integer) retorno[14],// Perfil da ligacao de // esgoto (Integer) retorno[15],// Possue hidrometro // instalado ? (Integer) retorno[16],// Possue hidrometro // instalado no poco ? (Integer) retorno[17],// Possue volume minimo de // agua fixado ? (Integer) retorno[18],// Possue volume minimo de // esgoto fixado ? (Integer) retorno[19],// Possue poco (Integer) retorno[22], // Tipo de Tarifa de Consumo (Short) retorno[23]);// codigo rota Integer idImovel = (Integer) retorno[0]; // Codigo do // imovel que // esta sendo // processado // Pesquisamos a esfera de poder do cliente responsavel helper .setIdEsfera(this.repositorioGerencialCadastro .pesquisarEsferaPoderClienteResponsavelImovel(idImovel)); // Pesquisamos o tipo de cliente responsavel do imovel helper .setIdTipoClienteResponsavel(this.repositorioGerencialCadastro .pesquisarTipoClienteClienteResponsavelImovel(idImovel)); // pesquisando a categoria // [UC0306] - Obtter principal categoria do im�vel Categoria categoria = null; categoria = this.getControladorImovel() .obterPrincipalCategoriaImovel(idImovel); if (categoria != null) { helper.setIdCategoria(categoria.getId()); // Pesquisando a principal subcategoria ImovelSubcategoria subcategoria = this .getControladorImovel() .obterPrincipalSubcategoria(categoria.getId(), idImovel); if (subcategoria != null) { helper.setIdSubCategoria(subcategoria.getComp_id() .getSubcategoria().getId()); } } // Verificamos se a esfera de poder foi encontrada // [FS0002] Verificar existencia de cliente responsavel if (helper.getIdEsfera().equals(0)) { Imovel imovel = new Imovel(); imovel.setId(idImovel); Cliente clienteTemp = this.getControladorImovel() .consultarClienteUsuarioImovel(imovel); if (clienteTemp != null) { helper.setIdEsfera(clienteTemp.getClienteTipo() .getEsferaPoder().getId()); } } if (helper.getIdTipoClienteResponsavel().equals(0)) { Imovel imovel = new Imovel(); imovel.setId(idImovel); Cliente clienteTemp = this.getControladorImovel() .consultarClienteUsuarioImovel(imovel); if (clienteTemp != null) { helper.setIdTipoClienteResponsavel(clienteTemp .getClienteTipo().getId()); } } // se ja existe um objeto igual a ele entao soma as // ligacoes e as economias no ja existente // um objeto eh igual ao outro se ele tem todos as // informacos iguals ( excecao // quantidadeEconomia, quantidadeLigacoes ) if (listaSimplificada.contains(helper)) { int posicao = listaSimplificada.indexOf(helper); ResumoLigacaoEconomiaHelper jaCadastrado = (ResumoLigacaoEconomiaHelper) listaSimplificada .get(posicao); // Somamos as economias jaCadastrado.setQtdEconomias(jaCadastrado.getQtdEconomias().intValue() + quantidadeEconomia); // Incrementamos as ligacoes jaCadastrado.setQtdLigacoes(jaCadastrado.getQtdLigacoes() + 1); if ( retorno[25] != null && Util.recuperaAnoMesDaData( (Date) retorno[25] ).intValue() == this.getControladorUtil().pesquisarParametrosDoSistema().getAnoMesArrecadacao().intValue() ){ jaCadastrado.setQtdLigacoesNovasAgua(jaCadastrado.getQtdLigacoesNovasAgua() + 1 ); } if ( retorno[26] != null && Util.recuperaAnoMesDaData( (Date) retorno[26] ).intValue() == this.getControladorUtil().pesquisarParametrosDoSistema().getAnoMesArrecadacao().intValue() ){ jaCadastrado.setQtdLigacoesNovasEsgoto(jaCadastrado.getQtdLigacoesNovasEsgoto() + 1 ); } //retorno[27] = "data de Corte da liga磯 de ᧵a" if(retorno[27] != null && Util.recuperaAnoMesDaData( (Date) retorno[27] ).intValue() == this.getControladorUtil().pesquisarParametrosDoSistema().getAnoMesArrecadacao().intValue() && retorno[11] != null && (Integer)retorno[11] == 5){ //retorno[11] = last_id jaCadastrado.setQtLigacoesCortesMes(jaCadastrado.getQtLigacoesCortesMes()+1 ); } //retorno[28] = "data da religacao de agua" ou lagu_dtReligacaoAgua if(retorno[28] != null && Util.recuperaAnoMesDaData( (Date) retorno[28] ).intValue() == this.getControladorUtil().pesquisarParametrosDoSistema().getAnoMesArrecadacao().intValue() && ((Integer)retorno[11] == 3 || (Integer)retorno[11] == 4)){ jaCadastrado.setQtLigacoesReligadasMes(jaCadastrado.getQtLigacoesReligadasMes() + 1); } } else { // Somamos as economias helper.setQtdEconomias(helper.getQtdEconomias() .intValue() + quantidadeEconomia); // Incrementamos as ligacoes helper.setQtdLigacoes(helper.getQtdLigacoes() + 1); if ( retorno[25] != null && Util.recuperaAnoMesDaData( (Date) retorno[25] ).intValue() == this.getControladorUtil().pesquisarParametrosDoSistema().getAnoMesArrecadacao().intValue() ){ helper.setQtdLigacoesNovasAgua( 1 ); } if ( retorno[26] != null && Util.recuperaAnoMesDaData( (Date) retorno[26] ).intValue() == this.getControladorUtil().pesquisarParametrosDoSistema().getAnoMesArrecadacao().intValue() ){ helper.setQtdLigacoesNovasEsgoto( 1 ); } if ( retorno[27] != null && Util.recuperaAnoMesDaData( (Date) retorno[27] ).intValue() == this.getControladorUtil().pesquisarParametrosDoSistema().getAnoMesArrecadacao().intValue() && retorno[11] != null && (Integer)retorno[11] == 5){ //retorno[11] = last_id helper.setQtLigacoesCortesMes( 1 ); } if ( retorno[28] != null && Util.recuperaAnoMesDaData( (Date) retorno[28] ).intValue() == this.getControladorUtil().pesquisarParametrosDoSistema().getAnoMesArrecadacao().intValue() && ((Integer)retorno[11] == 3 || (Integer)retorno[11] == 4)){ helper.setQtLigacoesReligadasMes( 1 ); } listaSimplificada.add(helper); } } } // /** // * para todas as ImovelResumoLigacaoEconomiaHelper cria // * ResumoLigacoesEconomia // */ for (int i = 0; i < listaSimplificada.size(); i++) { ResumoLigacaoEconomiaHelper helper = (ResumoLigacaoEconomiaHelper) listaSimplificada .get(i); // Montamos todo o agrupamento necessario // Mes ano de referencia Integer anoMesReferencia = getControladorUtil().pesquisarParametrosDoSistema().getAnoMesFaturamento(); // Gerencia regional GGerenciaRegional gerenciaRegional = null; if (helper.getIdGerenciaRegional() != null) { gerenciaRegional = new GGerenciaRegional(); gerenciaRegional.setId(helper.getIdGerenciaRegional()); } // Unidade de Negocio GUnidadeNegocio unidadeNegocio = null; if (helper.getIdUnidadeNegocio() != null) { unidadeNegocio = new GUnidadeNegocio(); unidadeNegocio.setId(helper.getIdUnidadeNegocio()); } // Localidade GLocalidade localidade = null; if (helper.getIdLocalidade() != null) { localidade = new GLocalidade(); localidade.setId(helper.getIdLocalidade()); } // Elo GLocalidade elo = null; if (helper.getIdElo() != null) { elo = new GLocalidade(); elo.setId(helper.getIdElo()); } // Setor comercial GSetorComercial setorComercial = null; if (helper.getIdSetorComercial() != null) { setorComercial = new GSetorComercial(); setorComercial.setId(helper.getIdSetorComercial()); } // Rota GRota rota = null; if (helper.getIdRota() != null) { rota = new GRota(); rota.setId(helper.getIdRota()); rota.setCodigoRota(helper.getCodigoRota()); } // Quadra GQuadra quadra = null; if (helper.getIdQuadra() != null) { quadra = new GQuadra(); quadra.setId(helper.getIdQuadra()); } // Codigo do setor comercial Integer codigoSetorComercial = null; if (helper.getCodigoSetorComercial() != null) { codigoSetorComercial = (helper.getCodigoSetorComercial()); } // Numero da quadra Integer numeroQuadra = null; if (helper.getNumeroQuadra() != null) { numeroQuadra = (helper.getNumeroQuadra()); } // Perfil do imovel GImovelPerfil imovelPerfil = null; if (helper.getIdPerfilImovel() != null) { imovelPerfil = new GImovelPerfil(); imovelPerfil.setId(helper.getIdPerfilImovel()); } // Esfera de poder do cliente responsavel GEsferaPoder esferaPoder = null; if (helper.getIdEsfera() != null) { esferaPoder = new GEsferaPoder(); esferaPoder.setId(helper.getIdEsfera()); } // Tipo do cliente responsavel GClienteTipo clienteTipo = null; if (helper.getIdTipoClienteResponsavel() != null) { clienteTipo = new GClienteTipo(); clienteTipo.setId(helper.getIdTipoClienteResponsavel()); } // Situacao da ligacao de agua GLigacaoAguaSituacao ligacaoAguaSituacao = null; if (helper.getIdSituacaoLigacaoAgua() != null) { ligacaoAguaSituacao = new GLigacaoAguaSituacao(); ligacaoAguaSituacao .setId(helper.getIdSituacaoLigacaoAgua()); } // Situacao da ligacao de esgoto GLigacaoEsgotoSituacao ligacaoEsgotoSituacao = null; if (helper.getIdSituacaoLigacaoEsgoto() != null) { ligacaoEsgotoSituacao = new GLigacaoEsgotoSituacao(); ligacaoEsgotoSituacao.setId(helper .getIdSituacaoLigacaoEsgoto()); } // Categoria GCategoria categoria = null; if (helper.getIdCategoria() != null) { categoria = new GCategoria(); categoria.setId(helper.getIdCategoria()); } // Subcategoria GSubcategoria subcategoria = null; if (helper.getIdSubCategoria() != null) { subcategoria = new GSubcategoria(); subcategoria.setId(helper.getIdSubCategoria()); } // Perfil da ligacao de agua GLigacaoAguaPerfil perfilLigacaoAgua = null; if (helper.getIdPerfilLigacaoAgua() != null) { perfilLigacaoAgua = new GLigacaoAguaPerfil(); perfilLigacaoAgua.setId(helper.getIdPerfilLigacaoAgua()); } // Perfil da ligacao de esgoto GLigacaoEsgotoPerfil perfilLigacaoEsgoto = null; if (helper.getIdPerfilLigacaoEsgoto() != null) { perfilLigacaoEsgoto = new GLigacaoEsgotoPerfil(); perfilLigacaoEsgoto .setId(helper.getIdPerfilLigacaoEsgoto()); } // Indicador de hidrometro Short indicadorHidrometro = null; if (helper.getIdHidrometro() != null) { indicadorHidrometro = helper.getIdHidrometro().shortValue(); } // Indicador de hidrometro no poco Short indicadorHidrometroPoco = null; if (helper.getIdHidrometroPoco() != null) { indicadorHidrometroPoco = helper.getIdHidrometroPoco() .shortValue(); } // Indicador de volume minimo de agua fixado Short indicadorVolumeFixadoAgua = null; if (helper.getIdVolFixadoAgua() != null) { indicadorVolumeFixadoAgua = helper.getIdVolFixadoAgua() .shortValue(); } // Indicador de volume minimo de esgoto fixado Short indicadorVolumeFixadoEsgoto = null; if (helper.getIdVolFixadoEsgoto() != null) { indicadorVolumeFixadoEsgoto = helper.getIdVolFixadoEsgoto() .shortValue(); } // Indicador de poco Short indicadorPoco = null; if (helper.getIdPoco() != null) { indicadorPoco = helper.getIdPoco().shortValue(); } // Tipo de Tarifa de Consumo GConsumoTarifa consumoTarifa = null; if (helper.getIdTipoTarifaConsumo() != null) { consumoTarifa = new GConsumoTarifa(); consumoTarifa.setId(helper.getIdTipoTarifaConsumo()); } // Quantidade ligacoes Integer qtdLigacoes = helper.getQtdLigacoes(); // Quantidade economias Integer qtdEconomias = helper.getQtdEconomias(); // Criamos um resumo de ligacao economia (***UFA***) UnResumoLigacaoEconomia resumoLigacoesEconomia = new UnResumoLigacaoEconomia( anoMesReferencia, gerenciaRegional, unidadeNegocio, localidade, elo, setorComercial, rota, quadra, codigoSetorComercial, numeroQuadra, imovelPerfil, esferaPoder, clienteTipo, ligacaoAguaSituacao, ligacaoEsgotoSituacao, categoria, subcategoria, perfilLigacaoAgua, perfilLigacaoEsgoto, indicadorHidrometro, indicadorHidrometroPoco, indicadorVolumeFixadoAgua, indicadorVolumeFixadoEsgoto, indicadorPoco, consumoTarifa, qtdLigacoes, qtdEconomias, helper.getCodigoRota(), helper.getQtdLigacoesNovasAgua(), helper.getQtdLigacoesNovasEsgoto(), helper.getQtLigacoesCortesMes(), helper.getQtLigacoesReligadasMes()); // Adicionamos a lista que deve ser inserida listaResumoLigacoesEconomia.add(resumoLigacoesEconomia); } this.getControladorBatch().inserirColecaoObjetoParaBatchGerencial( (Collection) listaResumoLigacoesEconomia); // -------------------------------------------------------- // // Registrar o fim da execu��o da Unidade de Processamento // // -------------------------------------------------------- getControladorBatch().encerrarUnidadeProcessamentoBatch(null, idUnidadeIniciada, false); } catch (Exception ex) { // Este catch serve para interceptar qualquer exce��o que o processo // batch venha a lan�ar e garantir que a unidade de processamento do // batch ser� atualizada com o erro ocorrido System.out.println(" ERRO NO SETOR" + idSetor); ex.printStackTrace(); // sessionContext.setRollbackOnly(); getControladorBatch().encerrarUnidadeProcessamentoBatch(ex, idUnidadeIniciada, true); throw new EJBException(ex); } } /** * M�todo que gera o resumo das liga��es e economias * * [UC0275] - Gerar Resumo das Liga��es/Economias Regiao * * @author Ivan S�rgio * @date 20/04/2007 */ public void gerarResumoLigacaoEconomiaRegiao(int idLocalidade, int idFuncionalidadeIniciada) throws ControladorException { int idUnidadeIniciada = 0; // ------------------------- // // Registrar o in�cio do processamento da Unidade de // Processamento do Batch // // ------------------------- idUnidadeIniciada = getControladorBatch() .iniciarUnidadeProcessamentoBatch(idFuncionalidadeIniciada, UnidadeProcessamento.LOCALIDADE, idLocalidade); try { List imoveisResumoLigacaoEconomiaRegiao = this.repositorioGerencialCadastro .getImoveisResumoLigacaoEconomiaRegiao(idLocalidade); List<ResumoLigacaoEconomiaRegiaoHelper> listaSimplificada = new ArrayList(); List<ResumoLigacaoEconomiaRegiao> listaResumoLigacaoEconomiaRegiao = new ArrayList(); Imovel imovelObterQtdEconomia = null; // pra cada objeto obter a categoria // caso ja tenha um igual soma a quantidade de economias e a // quantidade de ligacoes for (int i = 0; i < imoveisResumoLigacaoEconomiaRegiao.size(); i++) { Object obj = imoveisResumoLigacaoEconomiaRegiao.get(i); if (obj instanceof Object[]) { Object[] retorno = (Object[]) obj; // Pesquisamos as quantidades de economia do imovel corrente imovelObterQtdEconomia = new Imovel(); imovelObterQtdEconomia.setId((Integer) retorno[0]); Integer quantidadeEconomia = this.getControladorImovel() .obterQuantidadeEconomias(imovelObterQtdEconomia); if (quantidadeEconomia == null) { quantidadeEconomia = 0; } // Montamos um objeto de resumo, com as informacoes do // retorno ResumoLigacaoEconomiaRegiaoHelper helper = new ResumoLigacaoEconomiaRegiaoHelper( (Integer) retorno[1], // Regiao (Integer) retorno[2], // Microrregiao (Integer) retorno[3], // Municipio (Integer) retorno[4], // Bairro (Integer) retorno[5], // Perfil Imovel (Integer) retorno[6], // Ligacao Agua Situacao (Integer) retorno[7], // Ligacao Esgoto Situacao (Integer) retorno[8], // Esfera de Poder do // Cliente (Integer) retorno[9], // Tipo de Cliente do // Cliente Responsavel (Integer) retorno[10], // Perfil da Ligacao da Agua (Integer) retorno[11], // Perfil da Ligacao do // Esgoto (Integer) retorno[12], // Possue hidrometro // instalado ? (Integer) retorno[13], // Possue hidrometro // instalado no poco ? (Integer) retorno[14], // Possue volume minimo de // agua fixado ? (Integer) retorno[15], // Possue volume minimo de // esgoto fixado ? (Integer) retorno[16]);// Possue poco ? // pesquisando a categoria // [UC0306] - Obtter principal categoria do im�vel Integer idImovel = (Integer) retorno[0]; // Codigo do // imovel que // esta sendo // processado Categoria categoria = null; categoria = this.getControladorImovel() .obterPrincipalCategoriaImovel(idImovel); if (categoria != null) { helper.setIdPrincipalCategoriaImovel(categoria.getId()); // Pesquisando a principal subcategoria ImovelSubcategoria subcategoria = this .getControladorImovel() .obterPrincipalSubcategoria(categoria.getId(), idImovel); if (subcategoria != null) { helper .setIdPrincipalSubCategoriaImovel(subcategoria .getComp_id().getSubcategoria() .getId()); } } // Verificamos se a esfera de poder foi encontrada // [FS0002] Verificar existencia de cliente responsavel if (helper.getIdEsferaCliente().equals(0)) { Imovel imovel = new Imovel(); imovel.setId(idImovel); Cliente clienteTemp = this.getControladorImovel() .consultarClienteUsuarioImovel(imovel); if (clienteTemp != null) { helper.setIdEsferaCliente(clienteTemp .getClienteTipo().getEsferaPoder().getId()); } } if (helper.getIdTipoClienteResponsavel().equals(0)) { Imovel imovel = new Imovel(); imovel.setId(idImovel); Cliente clienteTemp = this.getControladorImovel() .consultarClienteUsuarioImovel(imovel); if (clienteTemp != null) { helper.setIdTipoClienteResponsavel(clienteTemp .getClienteTipo().getId()); } } // se ja existe um objeto igual a ele entao soma as // ligacoes e as economias no ja existente // um objeto eh igual ao outro se ele tem todos as // informacoes iguals ( excecao // quantidadeEconomia, quantidadeLigacoes ) if (listaSimplificada.contains(helper)) { int posicao = listaSimplificada.indexOf(helper); ResumoLigacaoEconomiaRegiaoHelper jaCadastrado = (ResumoLigacaoEconomiaRegiaoHelper) listaSimplificada .get(posicao); // Somamos as economias jaCadastrado.setQuantidadeEconomia(jaCadastrado .getQuantidadeEconomia().intValue() + quantidadeEconomia); // Incrementamos as ligacoes jaCadastrado.setQuantidadeLigacoes(jaCadastrado .getQuantidadeLigacoes() + 1); } else { // Somamos as economias helper.setQuantidadeEconomia(helper .getQuantidadeEconomia().intValue() + quantidadeEconomia); // Incrementamos as ligacoes helper.setQuantidadeLigacoes(helper .getQuantidadeLigacoes() + 1); listaSimplificada.add(helper); } } } /** * para todas as ImovelResumoLigacaoEconomiaRegiaoHelper cria * ResumoLigacoesEconomiaRegiao */ for (int i = 0; i < listaSimplificada.size(); i++) { ResumoLigacaoEconomiaRegiaoHelper helper = (ResumoLigacaoEconomiaRegiaoHelper) listaSimplificada .get(i); // Montamos todo o agrupamento necessario // Mes ano de referencia Integer anoMesReferencia = Util .getAnoMesComoInteger(new Date()); // Regiao Regiao regiao = null; if (helper.getIdRegiao() != null) { regiao = new Regiao(); regiao.setId(helper.getIdRegiao()); } // Microrregiao Microrregiao microrregiao = null; if (helper.getIdMicrorregiao() != null) { microrregiao = new Microrregiao(); microrregiao.setId(helper.getIdMicrorregiao()); } // Municipio Municipio municipio = null; if (helper.getIdMunicipio() != null) { municipio = new Municipio(); municipio.setId(helper.getIdMunicipio()); } // Bairro Bairro bairro = null; if (helper.getIdBairro() != null) { bairro = new Bairro(); bairro.setId(helper.getIdBairro()); } // Perfil do imovel ImovelPerfil imovelPerfil = null; if (helper.getIdPerfilImovel() != null) { imovelPerfil = new ImovelPerfil(); imovelPerfil.setId(helper.getIdPerfilImovel()); } // Situacao da ligacao de agua LigacaoAguaSituacao ligacaoAguaSituacao = null; if (helper.getIdSituacaoLigacaoAgua() != null) { ligacaoAguaSituacao = new LigacaoAguaSituacao(); ligacaoAguaSituacao .setId(helper.getIdSituacaoLigacaoAgua()); } // Situacao da ligacao de esgoto LigacaoEsgotoSituacao ligacaoEsgotoSituacao = null; if (helper.getIdSituacaoLigacaoEsgoto() != null) { ligacaoEsgotoSituacao = new LigacaoEsgotoSituacao(); ligacaoEsgotoSituacao.setId(helper .getIdSituacaoLigacaoEsgoto()); } // Principal Categoria do Imovel Categoria categoria = null; if (helper.getIdPrincipalCategoriaImovel() != null) { categoria = new Categoria(); categoria.setId(helper.getIdPrincipalCategoriaImovel()); } // Principal Sub Categoria do Imovel Subcategoria subcategoria = null; if (helper.getIdPrincipalSubCategoriaImovel() != null) { subcategoria = new Subcategoria(); subcategoria.setId(helper .getIdPrincipalSubCategoriaImovel()); } // Esfera de poder do cliente responsavel EsferaPoder esferaPoder = null; if (helper.getIdEsferaCliente() != null) { esferaPoder = new EsferaPoder(); esferaPoder.setId(helper.getIdEsferaCliente()); } // Tipo do cliente responsavel ClienteTipo clienteTipo = null; if (helper.getIdTipoClienteResponsavel() != null) { clienteTipo = new ClienteTipo(); clienteTipo.setId(helper.getIdTipoClienteResponsavel()); } // Perfil da ligacao de agua LigacaoAguaPerfil perfilLigacaoAgua = null; if (helper.getIdPerfilLigacaoAgua() != null) { perfilLigacaoAgua = new LigacaoAguaPerfil(); perfilLigacaoAgua.setId(helper.getIdPerfilLigacaoAgua()); } // Perfil da ligacao de esgoto LigacaoEsgotoPerfil perfilLigacaoEsgoto = null; if (helper.getIdPerfilLigacaoEsgoto() != null) { perfilLigacaoEsgoto = new LigacaoEsgotoPerfil(); perfilLigacaoEsgoto .setId(helper.getIdPerfilLigacaoEsgoto()); } // Indicador de hidrometro Short indicadorHidrometro = null; if (helper.getIdIndicadorHidrometro() != null) { indicadorHidrometro = helper.getIdIndicadorHidrometro() .shortValue(); } // Indicador de hidrometro no poco Short indicadorHidrometroPoco = null; if (helper.getIdIndicadorHidrometroPoco() != null) { indicadorHidrometroPoco = helper .getIdIndicadorHidrometroPoco().shortValue(); } // Indicador de volume minimo de agua fixado Short indicadorVolumeFixadoAgua = null; if (helper.getIdIndicadorVolumeMinimoAguaFixado() != null) { indicadorVolumeFixadoAgua = helper .getIdIndicadorVolumeMinimoAguaFixado() .shortValue(); } // Indicador de volume minimo de esgoto fixado Short indicadorVolumeFixadoEsgoto = null; if (helper.getIdIndicadorVolumeMinimoEsgotoFixado() != null) { indicadorVolumeFixadoEsgoto = helper .getIdIndicadorVolumeMinimoEsgotoFixado() .shortValue(); } // Indicador de poco Short indicadorPoco = null; if (helper.getIdIndicadorPoco() != null) { indicadorPoco = helper.getIdIndicadorPoco().shortValue(); } // Quantidade ligacoes Integer qtdLigacoes = helper.getQuantidadeLigacoes(); // Quantidade economias Integer qtdEconomias = helper.getQuantidadeEconomia(); // Criamos um resumo de ligacao economia regiao ResumoLigacaoEconomiaRegiao resumoLigacoesEconomiaRegiao = new ResumoLigacaoEconomiaRegiao( anoMesReferencia, regiao, microrregiao, municipio, bairro, imovelPerfil, ligacaoAguaSituacao, ligacaoEsgotoSituacao, categoria, subcategoria, esferaPoder, clienteTipo, perfilLigacaoAgua, perfilLigacaoEsgoto, indicadorHidrometro, indicadorHidrometroPoco, indicadorVolumeFixadoAgua, indicadorVolumeFixadoEsgoto, indicadorPoco, qtdLigacoes, qtdEconomias); // Adicionamos a lista que deve ser inserida listaResumoLigacaoEconomiaRegiao .add(resumoLigacoesEconomiaRegiao); } // this.repositorioGerencialCadastro // .inserirResumoLigacaoEconomiaRegiaoBatch(listaResumoLigacaoEconomiaRegiao); this.getControladorBatch().inserirColecaoObjetoParaBatchGerencial( (Collection) listaResumoLigacaoEconomiaRegiao); // -------------------------------------------------------- // // Registrar o fim da execu��o da Unidade de Processamento // // -------------------------------------------------------- getControladorBatch().encerrarUnidadeProcessamentoBatch(null, idUnidadeIniciada, false); } catch (Exception ex) { // Este catch serve para interceptar qualquer exce��o que o processo // batch venha a lan�ar e garantir que a unidade de processamento do // batch ser� atualizada com o erro ocorrido ex.printStackTrace(); // sessionContext.setRollbackOnly(); getControladorBatch().encerrarUnidadeProcessamentoBatch(ex, idUnidadeIniciada, true); throw new EJBException(ex); } }// gerarResumoLigacaoEconomiaRegiao /** * M�todo que gera o resumo do consumo de agua * * [UC0570] - Gerar Resumo do consumo de agua * * @author Bruno Barros, Ivan S鲧io * @date 23/04/2007, 19/01/2009 * @alteracao 19/01/2009 - CRC1012 - Adicionado o Indicador de Ligacao Faturada. * */ public void gerarResumoConsumoAgua(int idSetor, int idFuncionalidadeIniciada) throws ControladorException { int idUnidadeIniciada = 0; // ------------------------- // // Registrar o in�cio do processamento da Unidade de // Processamento // do Batch // // ------------------------- idUnidadeIniciada = getControladorBatch() .iniciarUnidadeProcessamentoBatch(idFuncionalidadeIniciada, UnidadeProcessamento.SETOR_COMERCIAL, idSetor); Integer anoMesReferencia = null; Integer imovelErro = null; try { List imoveisResumoConsumoAgua = this.repositorioGerencialCadastro .getHistoricosConsumoAgua(idSetor); List<ResumoConsumoAguaHelper> listaSimplificada = new ArrayList(); //List<UnResumoConsumoAgua> listaResumoConsumoAgua = new ArrayList(); Imovel imovelObterQtdEconomia = null; //FS0001 - Verificar existencia de dados para o ano/mes referencia informado repositorioGerencialCadastro.excluirResumo( getControladorUtil().pesquisarParametrosDoSistema().getAnoMesFaturamento(), UnResumoConsumoAgua.class.getName(), "referencia", idSetor, false); // pra cada objeto obter a categoria // caso ja tenha um igual soma a quantidade de economias e a // quantidade de ligacoes for (int i = 0; i < imoveisResumoConsumoAgua.size(); i++) { Object obj = imoveisResumoConsumoAgua.get(i); //System.out.println( i + " de " + imoveisResumoConsumoAgua.size() + " do Setor " + idSetor ); if (obj instanceof Object[]) { Object[] retorno = (Object[]) obj; // Montamos um objeto de resumo, com as informacoes do // retorno ResumoConsumoAguaHelper helper = new ResumoConsumoAguaHelper( (Integer) retorno[1], // Gerencia Regional (Integer) retorno[2], // Unidade de negocio (Integer) retorno[3], // Localidade (Integer) retorno[4], // Elo (Integer) retorno[5], // Id Setor Comercial (Integer) retorno[6], // id Rota (Integer) retorno[7], // Id Quadra (Integer) retorno[8], // Codigo do Setor Comercial (Integer) retorno[9], // Numero da quadra (Integer) retorno[10],// Perfil do imovel (Integer) retorno[11],// Situacao da ligacao da agua (Integer) retorno[12],// Situacao da ligacao do esgoto (Integer) retorno[13],// Perfil da ligacao de agua (Integer) retorno[14],// Perfil da ligacao de esgoto (Integer) retorno[15] // Consumo tipo ); Integer idImovel = (Integer) retorno[0]; // Codigo do imovel que esta sendo processado imovelErro = idImovel; Integer idConta = (Integer) retorno[20]; // C?o da conta que esta sendo processada Conta conta = new Conta(); conta.setId( idConta ); // Quantidade de Economias Integer quantidadeEconomia = 0; // Verificamos se existe economias pela conta if ( idConta != null ){ Collection<Categoria> colQuantEco = this.getControladorImovel().obterQuantidadeEconomiasContaCategoria( conta ); if ( colQuantEco != null && colQuantEco.size() > 0 ){ Iterator iteQuanEco = colQuantEco.iterator(); while ( iteQuanEco.hasNext() ){ Categoria catTemp = (Categoria) iteQuanEco.next(); quantidadeEconomia += catTemp.getQuantidadeEconomiasCategoria(); } } } // Caso n㯠obtenha as quantidades pela conta, pesquisamos as quantidades de economia do imovel corrente if ( quantidadeEconomia == 0 ){ imovelObterQtdEconomia = new Imovel(); imovelObterQtdEconomia.setId((Integer) retorno[0]); quantidadeEconomia = this.getControladorImovel() .obterQuantidadeEconomias(imovelObterQtdEconomia); if (quantidadeEconomia == null) { quantidadeEconomia = 0; } } // Consumo de Agua Integer consumoAgua = null; // Verificamos se o consumo de Agua esta na conta ou no consumoHistorico /********************************************************* * Autor: Ivan Sergio * Solicitante: Flavio Leonardo * Data: 03/11/2010 *********************************************************/ BigDecimal valorConta = (BigDecimal) retorno[22]; if( idConta != null && (valorConta.compareTo(BigDecimal.ZERO) > 0)){ consumoAgua = (Integer) retorno[21]; } else { consumoAgua= (Integer) retorno[16]; } helper.setQuantidadeConsumoAgua( consumoAgua ); // [UC0307] - Obter Indicador de Exist�ncia de Hidr�metro String indicadorHidrometroString = new Integer( getControladorImovel().obterIndicadorExistenciaHidrometroImovel(idImovel)).toString(); Integer indicadorHidrometro = new Integer(indicadorHidrometroString); // Caso indicador de hidr�metro esteja nulo // Seta 2(dois) = N�O no indicador de // hidr�metro if (indicadorHidrometro == null) { indicadorHidrometro = 2; } helper.setIdHidrometro( indicadorHidrometro ); // Pesquisamos a esfera de poder do cliente responsavel helper .setIdEsferaPoder(this.repositorioGerencialCadastro .pesquisarEsferaPoderClienteResponsavelImovel(idImovel)); // Pesquisamos o tipo de cliente responsavel do imovel helper .setIdClienteTipo(this.repositorioGerencialCadastro .pesquisarTipoClienteClienteResponsavelImovel(idImovel)); // pesquisando a categoria Categoria categoria = null; Categoria categoriaConta = null; // [UC0632] - Obter Principal Categoria da Conta // Verificamos se existe conta para este imovel if ( idConta != null ){ categoriaConta = this.getControladorImovel().obterPrincipalCategoriaConta( idConta ); } // Pesquisamos a categoria do imovel Categoria categoriaImovel = this.getControladorImovel() .obterPrincipalCategoriaImovel(idImovel); // Verificamos se devemos guardar a categoria da conta ou do imovel if ( categoriaConta == null ){ categoria = categoriaImovel; } else { categoria = categoriaConta; } // Pesquisamos a subcategoria if (categoria != null) { helper.setIdCategoria(categoria.getId()); // Pesquisando a principal subcategoria // Lembrando que a categoria usada para pesquisar a subcategoria e sempre a do imovel ImovelSubcategoria subcategoria = this .getControladorImovel() .obterPrincipalSubcategoria(categoriaImovel.getId(), idImovel); helper.setIdSubCategoria(subcategoria.getComp_id() .getSubcategoria().getId()); } // Verificamos se a esfera de poder foi encontrada // [FS0002] Verificar existencia de cliente responsavel if (helper.getIdEsferaPoder().equals(0)) { Imovel imovel = new Imovel(); imovel.setId(idImovel); Cliente clienteTemp = this.getControladorImovel() .consultarClienteUsuarioImovel(imovel); if (clienteTemp != null) { helper.setIdEsferaPoder(clienteTemp .getClienteTipo().getEsferaPoder().getId()); } } if (helper.getIdClienteTipo().equals(0)) { Imovel imovel = new Imovel(); imovel.setId(idImovel); Cliente clienteTemp = this.getControladorImovel() .consultarClienteUsuarioImovel(imovel); if (clienteTemp != null) { helper.setIdClienteTipo(clienteTemp .getClienteTipo().getId()); } } // Calculamos o consumo excedente // [UC0105] - Obter consumo minimo ligacao // Valor minimo de consumo de agua anoMesReferencia = (Integer) retorno[18]; Imovel imovelTemp = new Imovel(); imovelTemp.setId(idImovel); imovelTemp = this.getControladorImovel() .pesquisarImovel(imovelTemp.getId()); Integer valorMinimoAgua = getControladorMicromedicao() .obterConsumoMinimoLigacao(imovelTemp, null); // Setamos o valor do excedente helper.setQuantidadeConsumoAguaExcedente(helper .getQuantidadeConsumoAgua() - valorMinimoAgua); // Caso o valor excedente seja negativo, seramos, pois nao // houve excedente. if (helper.getQuantidadeConsumoAguaExcedente() <= 0) { helper.setQuantidadeConsumoAguaExcedente(0); } // Marcamos o helper como possuindo ou n�o consumo excedente helper.setIdVolumeExcedente(helper .getQuantidadeConsumoAguaExcedente() > 0 ? 1 : 2); //********************************************************** // CRC1012 - Verificamos as Ligacoes Faturadas //********************************************************** if (idConta != null) { helper.setIndicadorLigacaoFaturada(1); }else { helper.setIndicadorLigacaoFaturada(2); } //********************************************************** // se ja existe um objeto igual a ele entao soma as // ligacoes e as economias no ja existente // um objeto eh igual ao outro se ele tem todos as // informacos iguals ( excecao // quantidadeEconomia, quantidadeLigacoes ) if (listaSimplificada.contains(helper)) { int posicao = listaSimplificada.indexOf(helper); ResumoConsumoAguaHelper jaCadastrado = (ResumoConsumoAguaHelper) listaSimplificada .get(posicao); // Somamos as economias jaCadastrado.setQuantidadeEconomias(jaCadastrado .getQuantidadeEconomias().intValue() + quantidadeEconomia); // Incrementamos as ligacoes jaCadastrado.setQuantidadeLigacoes(jaCadastrado .getQuantidadeLigacoes() + 1); // Acumulamos o consumo de agua jaCadastrado.setQuantidadeConsumoAgua(jaCadastrado .getQuantidadeConsumoAgua().intValue() + helper.getQuantidadeConsumoAgua()); // Acumulamos o consumo Excedente jaCadastrado.setQuantidadeConsumoAguaExcedente( jaCadastrado.getQuantidadeConsumoAguaExcedente() + helper.getQuantidadeConsumoAguaExcedente() ); // Guardamos o volume faturado, caso este seja maior que o m�mo if ( helper.getQuantidadeConsumoAgua() > valorMinimoAgua ){ jaCadastrado.setVolumeFaturado( jaCadastrado.getVolumeFaturado() + helper.getQuantidadeConsumoAgua() ); } else { jaCadastrado.setVolumeFaturado( jaCadastrado.getVolumeFaturado() + valorMinimoAgua ); } } else { // Somamos as economias helper.setQuantidadeEconomias(helper .getQuantidadeEconomias().intValue() + quantidadeEconomia); // Incrementamos as ligacoes helper.setQuantidadeLigacoes(helper .getQuantidadeLigacoes() + 1); // Guardamos o volume faturado, caso este seja maior que o m�mo if ( helper.getQuantidadeConsumoAgua() > valorMinimoAgua ){ helper.setVolumeFaturado( helper.getQuantidadeConsumoAgua() ); } else { helper.setVolumeFaturado( valorMinimoAgua ); } listaSimplificada.add(helper); } } } for (int i = 0; i < listaSimplificada.size(); i++) { this.repositorioGerencialCadastro.inserirResumoConsumoAgua( anoMesReferencia, (ResumoConsumoAguaHelper) listaSimplificada.get(i)); } // -------------------------------------------------------- // // Registrar o fim da execu��o da Unidade de Processamento // // -------------------------------------------------------- getControladorBatch().encerrarUnidadeProcessamentoBatch(null, idUnidadeIniciada, false); } catch (Exception ex) { // Este catch serve para interceptar qualquer exce��o que o processo // batch venha a lan�ar e garantir que a unidade de processamento do // batch ser� atualizada com o erro ocorrido System.out.println(" ERRO NO SETOR " + idSetor); System.out.println("Imovel que deu erro: "+ imovelErro); ex.printStackTrace(); sessionContext.setRollbackOnly(); getControladorBatch().encerrarUnidadeProcessamentoBatch(ex, idUnidadeIniciada, true); throw new EJBException(ex); } } /** * [UC0344] Consultar Resumo Anormalidade * * @param informarDadosGeracaoRelatorioConsultaHelper * @return * @throws ControladorException */ public List consultarResumoLigacoesEconomias( InformarDadosGeracaoRelatorioConsultaHelper informarDadosGeracaoRelatorioConsultaHelper) throws ControladorException { try { // [FS0001] Verificar exist�ncia de dados para o ano/m�s de // refer�ncia retornado // if( countResumoPendencia == null || countResumoPendencia == 0 ){ // throw new ControladorException( // "atencao.nao_existe_resumo_ligacoes_economia", null, // Util.formatarAnoMesParaMesAno(informarDadosGeracaoRelatorioConsultaHelper.getAnoMesReferencia())); // } Object[] objetoResumoLigacaoEconomia = null; Iterator iteratorResumoLigacaoEconomia = null; ResumoLigacaoEconomiaConsultarHelper resumoLigacaoEconomiaConsultarHelper = null; ResumoLigacaoEconomiaConsultarHelper resumoLigacaoEconomiaConsultarHelperAnterior = null; List colecaoLigacaoEconomiaHelper = new ArrayList(); List retorno = this.repositorioGerencialCadastro .consultarResumoLigacoesEconomias(informarDadosGeracaoRelatorioConsultaHelper); boolean primeiraVez = true; // Monta os objetos e carrega uma colecao para mandar para a proxima // camada iteratorResumoLigacaoEconomia = retorno.iterator(); while (iteratorResumoLigacaoEconomia.hasNext()) { objetoResumoLigacaoEconomia = (Object[]) iteratorResumoLigacaoEconomia .next(); resumoLigacaoEconomiaConsultarHelper = new ResumoLigacaoEconomiaConsultarHelper(); resumoLigacaoEconomiaConsultarHelper .setAnoMesReferncia(informarDadosGeracaoRelatorioConsultaHelper .getAnoMesReferencia().toString()); resumoLigacaoEconomiaConsultarHelper .setDescricaoEstado((String) objetoResumoLigacaoEconomia[0]); resumoLigacaoEconomiaConsultarHelper .setIdGerenciaRegional(objetoResumoLigacaoEconomia[1] == null ? null : (Integer) objetoResumoLigacaoEconomia[1]); resumoLigacaoEconomiaConsultarHelper .setDescricaoGerenciaRegional((String) objetoResumoLigacaoEconomia[2]); resumoLigacaoEconomiaConsultarHelper .setIdElo((Integer) objetoResumoLigacaoEconomia[3] == null ? null : (Integer) objetoResumoLigacaoEconomia[3]); resumoLigacaoEconomiaConsultarHelper .setDescricaoElo((String) objetoResumoLigacaoEconomia[4]); resumoLigacaoEconomiaConsultarHelper .setIdLocalidade((Integer) objetoResumoLigacaoEconomia[5] == null ? null : (Integer) objetoResumoLigacaoEconomia[5]); resumoLigacaoEconomiaConsultarHelper .setDescricaoLocalidade((String) objetoResumoLigacaoEconomia[6]); resumoLigacaoEconomiaConsultarHelper .setIdSetorComercial((Integer) objetoResumoLigacaoEconomia[7] == null ? null : (Integer) objetoResumoLigacaoEconomia[7]); resumoLigacaoEconomiaConsultarHelper .setDescricaoSetorComercial((String) objetoResumoLigacaoEconomia[8]); resumoLigacaoEconomiaConsultarHelper .setIdQuadra((Integer) objetoResumoLigacaoEconomia[9] == null ? null : (Integer) objetoResumoLigacaoEconomia[9]); resumoLigacaoEconomiaConsultarHelper .setNumeroQuadra((String) objetoResumoLigacaoEconomia[10]); resumoLigacaoEconomiaConsultarHelper .setIdSituacaoLigacaoAgua((Integer) objetoResumoLigacaoEconomia[11] == null ? null : (Integer) objetoResumoLigacaoEconomia[11]); resumoLigacaoEconomiaConsultarHelper .setIdSituacaoLigacaoEsgoto((Integer) objetoResumoLigacaoEconomia[13] == null ? null : (Integer) objetoResumoLigacaoEconomia[13]); resumoLigacaoEconomiaConsultarHelper .setIdCategoria((Integer) objetoResumoLigacaoEconomia[15] == null ? null : (Integer) objetoResumoLigacaoEconomia[15]); if (primeiraVez) { primeiraVez = false; resumoLigacaoEconomiaConsultarHelper .setDescricaoSituacaoLigacaoAgua((String) objetoResumoLigacaoEconomia[12]); resumoLigacaoEconomiaConsultarHelper .setDescricaoSituacaoLigacaoEsgoto((String) objetoResumoLigacaoEconomia[14]); resumoLigacaoEconomiaConsultarHelper .setDescricaoCategoria((String) objetoResumoLigacaoEconomia[16]); } else { if (!resumoLigacaoEconomiaConsultarHelperAnterior .getIdSituacaoLigacaoAgua().equals( resumoLigacaoEconomiaConsultarHelper .getIdSituacaoLigacaoAgua())) { resumoLigacaoEconomiaConsultarHelper .setDescricaoSituacaoLigacaoAgua((String) objetoResumoLigacaoEconomia[12]); } if (!resumoLigacaoEconomiaConsultarHelperAnterior .getIdSituacaoLigacaoEsgoto().equals( resumoLigacaoEconomiaConsultarHelper .getIdSituacaoLigacaoEsgoto())) { resumoLigacaoEconomiaConsultarHelper .setDescricaoSituacaoLigacaoEsgoto((String) objetoResumoLigacaoEconomia[14]); } if (!resumoLigacaoEconomiaConsultarHelperAnterior .getIdCategoria().equals( resumoLigacaoEconomiaConsultarHelper .getIdCategoria())) { resumoLigacaoEconomiaConsultarHelper .setDescricaoCategoria((String) objetoResumoLigacaoEconomia[16]); } } resumoLigacaoEconomiaConsultarHelper .setQuantidadeLigacoesComHidrometro((Integer) objetoResumoLigacaoEconomia[17] == null ? null : (Integer) objetoResumoLigacaoEconomia[17]); resumoLigacaoEconomiaConsultarHelper .setQuantidadeLigacoesSemHidrometro((Integer) objetoResumoLigacaoEconomia[18] == null ? null : (Integer) objetoResumoLigacaoEconomia[18]); resumoLigacaoEconomiaConsultarHelper .setTotalLigacoes((Integer) objetoResumoLigacaoEconomia[19] == null ? null : (Integer) objetoResumoLigacaoEconomia[19]); resumoLigacaoEconomiaConsultarHelper .setQuantidadeEconomiaComHidrometro((Integer) objetoResumoLigacaoEconomia[20] == null ? null : (Integer) objetoResumoLigacaoEconomia[20]); resumoLigacaoEconomiaConsultarHelper .setQuantidadeEconomiaSemHidrometro((Integer) objetoResumoLigacaoEconomia[21] == null ? null : (Integer) objetoResumoLigacaoEconomia[21]); resumoLigacaoEconomiaConsultarHelper .setTotalEconomia((Integer) objetoResumoLigacaoEconomia[22] == null ? null : (Integer) objetoResumoLigacaoEconomia[22]); colecaoLigacaoEconomiaHelper .add(resumoLigacaoEconomiaConsultarHelper); resumoLigacaoEconomiaConsultarHelperAnterior = resumoLigacaoEconomiaConsultarHelper; } // [FS0007] Nenhum registro encontrado if (retorno == null || retorno.equals("") || retorno.isEmpty()) { throw new ControladorException( "atencao.pesquisa.nenhumresultado"); } return colecaoLigacaoEconomiaHelper; } catch (ErroRepositorioException ex) { ex.printStackTrace(); throw new ControladorException("erro.sistema", ex); } } /** * Retorna o valor do ControladorMicromedicao * * @author Bruno Barros * @date 23/04/2007 * * @return O valor de controladorMicromedicao */ private ControladorMicromedicaoLocal getControladorMicromedicao() { ControladorMicromedicaoLocalHome localHome = null; ControladorMicromedicaoLocal local = null; // pega a inst�ncia do ServiceLocator. ServiceLocator locator = null; try { locator = ServiceLocator.getInstancia(); localHome = (ControladorMicromedicaoLocalHome) locator .getLocalHomePorEmpresa(ConstantesJNDI.CONTROLADOR_MICROMEDICAO_SEJB); // guarda a referencia de um objeto capaz de fazer chamadas // objetos remotamente local = localHome.create(); return local; } catch (CreateException e) { throw new SistemaException(e); } catch (ServiceLocatorException e) { throw new SistemaException(e); } } /** * M�todo que gera o resumo do Parcelamento * * [UC0565] - Gerar Resumo do Parcelamento * * @author Marcio Roberto * @date 04/05/2007 * */ public void gerarResumoParcelamento(int idLocalidade, int idFuncionalidadeIniciada, int anoMes) throws ControladorException { int idUnidadeIniciada = 0; // ------------------------- // // Registrar o in�cio do processamento da Unidade de // Processamento // do Batch // // ------------------------- idUnidadeIniciada = getControladorBatch() .iniciarUnidadeProcessamentoBatch(idFuncionalidadeIniciada, UnidadeProcessamento.LOCALIDADE, idLocalidade); try { System.out.println("INICIO DO RESUMO PARCELAMENTO LOCALIDADE "+idLocalidade); List imoveisResumoParcelamento = this.repositorioGerencialCadastro .getImoveisResumoParcelamento(idLocalidade, anoMes); List<ResumoParcelamentoHelper> listaSimplificadaParcelamento = new ArrayList(); List<UnResumoParcelamento> listaResumoParcelamento = new ArrayList(); UnResumoParcelamento resumoParcelamento = null; //FS0001 - Verificar existencia de dados para o ano/mes referencia informado this.repositorioGerencialCadastro.excluirResumoGerencialC( getControladorUtil().pesquisarParametrosDoSistema().getAnoMesFaturamento(), "cobranca.un_resumo_parcelamento", "repa_amreferencia","loca_id", idLocalidade ); // caso ja tenha um igual soma as quantidades for (int i = 0; i < imoveisResumoParcelamento.size(); i++) { Object obj = imoveisResumoParcelamento.get(i); if (obj instanceof Object[]) { Object[] retorno = (Object[]) obj; // Pesquisamos as quantidades do imovel corrente resumoParcelamento = new UnResumoParcelamento(); resumoParcelamento.setId((Integer) retorno[0]); // Contas Integer quantidadeContas = this.repositorioGerencialCadastro .pesquisarObterQuantidadeContas((Integer) retorno[0]); if (quantidadeContas == null) { quantidadeContas = 0; } // Guias Integer quantidadeGuias = this.repositorioGerencialCadastro .pesquisarObterQuantidadeGuias((Integer) retorno[0]); if (quantidadeGuias == null) { quantidadeGuias = 0; } // Quantidade Servicos Indiretos Short quantidadeServicosIndiretos = this.repositorioGerencialCadastro .pesquisarObterQuantidadeServicosIndiretos((Integer) retorno[0]); if (quantidadeServicosIndiretos == null) { quantidadeServicosIndiretos = 0; } // Valor das Contas BigDecimal valorContas = (BigDecimal) retorno[16]; if (valorContas == null) { valorContas = new BigDecimal(0); } // Valor Guias Pagmto BigDecimal valorGuias = (BigDecimal) retorno[17]; if (valorGuias == null) { valorGuias = new BigDecimal(0); } // Valor Servicos Indiretos BigDecimal valorServicosIndiretos = this.repositorioGerencialCadastro .pesquisarObterValorServicosIndiretos( (Integer) retorno[0], " debitoacobrar.lancamentoItemContabil.id not in (2,3)"); if (valorServicosIndiretos == null) { valorServicosIndiretos = new BigDecimal(0); } // Valor creditos BigDecimal valorCreditos = (BigDecimal) retorno[18]; if (valorCreditos == null) { valorCreditos = new BigDecimal(0); } // Valor Servicos Indiretos BigDecimal valorAcrescimoImpontualidade = (BigDecimal) retorno[25]; if(valorAcrescimoImpontualidade == null){ valorAcrescimoImpontualidade = new BigDecimal(0); } if (valorAcrescimoImpontualidade == null) { valorAcrescimoImpontualidade = new BigDecimal(0); } // Valor Sancoes BigDecimal valorSancoes = this.repositorioGerencialCadastro .pesquisarObterValorServicosIndiretos( (Integer) retorno[0], " debitoacobrar.lancamentoItemContabil.id = 3"); if (valorSancoes == null) { valorSancoes = new BigDecimal(0); } // Valor creditos BigDecimal valorDescontoAcrescimo = (BigDecimal) retorno[19]; if (valorDescontoAcrescimo == null) { valorDescontoAcrescimo = new BigDecimal(0); } // Valor Desconto Inatividade BigDecimal valorDescontoInatividade = (BigDecimal) retorno[20]; if (valorDescontoInatividade == null) { valorDescontoInatividade = new BigDecimal(0); } // Valor Desconto Antiguidade BigDecimal valorDescontoAntiguidade = (BigDecimal) retorno[21]; if (valorDescontoAntiguidade == null) { valorDescontoAntiguidade = new BigDecimal(0); } // Valor total Parcelamento BigDecimal valorTotalParcelamento = (BigDecimal) retorno[22]; if (valorTotalParcelamento == null) { valorTotalParcelamento = new BigDecimal(0); } // Ano Mes Referencia Integer anoMesRef = (Integer) retorno[23]; // valor debito a cobrar Total BigDecimal valorDebitoACobrarTotal = (BigDecimal) retorno[24]; if (valorDebitoACobrarTotal == null) { valorDebitoACobrarTotal = new BigDecimal(0); } // valor debito a cobrar Acrescimos BigDecimal valorDebitoACobrarAcrescimos = this.repositorioGerencialCadastro .pesquisarObterValorServicosIndiretos( (Integer) retorno[0], " debitoacobrar.lancamentoItemContabil.id = 2"); if (valorDebitoACobrarAcrescimos == null) { valorDebitoACobrarAcrescimos = new BigDecimal(0); } // valor debito a cobrar Acrescimos BigDecimal valorDebitoACobrarReligSancoes = new BigDecimal(0); //(BigDecimal) retorno[0]; if (valorDebitoACobrarReligSancoes == null) { valorDebitoACobrarReligSancoes = new BigDecimal(0); } // valor debitos a cobrar parcelamentos BigDecimal valorDebitoACobrarParcelamentos = (BigDecimal) retorno[26]; if (valorDebitoACobrarParcelamentos == null){ valorDebitoACobrarParcelamentos = new BigDecimal(0); } // valor entrada BigDecimal valorEntrada = (BigDecimal) retorno[27]; if (valorEntrada == null){ valorEntrada = new BigDecimal(0); } // valor juros parcelamento BigDecimal valorJurosParcelamento = (BigDecimal) retorno[28]; if (valorJurosParcelamento == null) { valorJurosParcelamento = new BigDecimal(0); } // quantidade total de parcelas Short quantidadeTotalParcelas = (Short) retorno[29]; if (quantidadeTotalParcelas == null){ quantidadeTotalParcelas = 0; } Integer consumoTarifa = (Integer) retorno[30]; if(consumoTarifa == null){ consumoTarifa = 0; } Short numeroParcelamentoConsecutivos = (Short) retorno[31]; if(numeroParcelamentoConsecutivos == null){ numeroParcelamentoConsecutivos = new Short("0"); } // pesquisando a categoria // [UC0306] - Obtter principal categoria do im�vel Integer idImovel = (Integer) retorno[1]; // Codigo do // [UC0307] - Obter Indicador de Exist�ncia de Hidr�metro String indicadorHidrometroString = new Integer( getControladorImovel().obterIndicadorExistenciaHidrometroImovel(idImovel)).toString(); Short indicadorHidrometro = new Short(indicadorHidrometroString); // Caso indicador de hidr�metro esteja nulo // Seta 2(dois) = N�O no indicador de // hidr�metro if (indicadorHidrometro == null) { indicadorHidrometro = new Short("2"); } // Montamos um objeto de resumo, com as informacoes do // retorno ResumoParcelamentoHelper helper = new ResumoParcelamentoHelper( (Integer) retorno[2], // Gerencia Regional (Integer) retorno[3], // Unidade de negocio (Integer) retorno[4], // Elo (Integer) retorno[5], // Localidade (Integer) retorno[6], // Id Setor Comercial (Integer) retorno[7], // id Rota (Integer) retorno[8], // Id Quadra (Integer) retorno[9], // Codigo do Setor Comercial (Integer) retorno[10], // Numero da quadra (Integer) retorno[11], // Perfil do imovel (Integer) retorno[12], // Situacao da ligacao da // agua (Integer) retorno[13], // Situacao da ligacao do // esgoto (Integer) retorno[14], // Perfil ligacao agua (Integer) retorno[15], // Perfil ligacao esgoto (Integer) retorno[30], // Tarifa Consumo indicadorHidrometro, // Indicador Hidrometro numeroParcelamentoConsecutivos, // Numero Parcelamentos Consecutivos (Short) retorno[32]);//codigo rota // Pesquisamos a esfera de poder do cliente responsavel helper .setIdEsfera(this.repositorioGerencialCadastro .pesquisarEsferaPoderClienteResponsavelImovel(idImovel)); // Pesquisamos o tipo de cliente responsavel do imovel helper .setIdTipoClienteResponsavel(this.repositorioGerencialCadastro .pesquisarTipoClienteClienteResponsavelImovel(idImovel)); Categoria categoria = null; categoria = this.getControladorImovel() .obterPrincipalCategoriaImovel(idImovel); if (categoria != null) { helper.setIdCategoria(categoria.getId()); // Pesquisando a principal subcategoria ImovelSubcategoria subcategoria = this .getControladorImovel() .obterPrincipalSubcategoria(categoria.getId(), idImovel); if (subcategoria != null) { helper.setIdSubCategoria(subcategoria.getComp_id() .getSubcategoria().getId()); } } // Verificamos se a esfera de poder foi encontrada // [FS0002] Verificar existencia de cliente responsavel if (helper.getIdEsfera().equals(0)) { Imovel imovel = new Imovel(); imovel.setId(idImovel); Cliente clienteTemp = this.getControladorImovel() .consultarClienteUsuarioImovel(imovel); if (clienteTemp != null) { helper.setIdEsfera(clienteTemp.getClienteTipo() .getEsferaPoder().getId()); } } if (helper.getIdTipoClienteResponsavel().equals(0)) { Imovel imovel = new Imovel(); imovel.setId(idImovel); Cliente clienteTemp = this.getControladorImovel() .consultarClienteUsuarioImovel(imovel); if (clienteTemp != null) { helper.setIdTipoClienteResponsavel(clienteTemp .getClienteTipo().getId()); } } // se ja existe um objeto igual a ele entao soma os // valores e as quantidades ja existentes. // um objeto eh igual ao outro se ele tem todos as // informacos iguals if (listaSimplificadaParcelamento.contains(helper)) { int posicao = listaSimplificadaParcelamento .indexOf(helper); ResumoParcelamentoHelper jaCadastrado = (ResumoParcelamentoHelper) listaSimplificadaParcelamento .get(posicao); // Somatorios // Contas jaCadastrado.setQtdContas(jaCadastrado.getQtdContas() + quantidadeContas); // Guias jaCadastrado.setQtdGuias(jaCadastrado.getQtdGuias() + quantidadeGuias); // Servicos Indiretos jaCadastrado .setQtdServicosIndiretos((short) (jaCadastrado .getQtdServicosIndiretos() + quantidadeServicosIndiretos)); // qtdParcelamentos Short p = (((Integer) (jaCadastrado .getQtdParcelamento() + 1)).shortValue()); jaCadastrado.setQtdParcelamento(p); // Valor Contas jaCadastrado.setVlContas(jaCadastrado.getVlContas() .add(valorContas)); // Valor Guias jaCadastrado.setVlGuias(jaCadastrado.getVlGuias().add( valorGuias)); // Valor Servicos Indiretos jaCadastrado.setVlServicosIndiretos(jaCadastrado .getVlServicosIndiretos().add(valorGuias)); // Valor Creditos jaCadastrado.setVlCreditoRealizar(jaCadastrado .getVlCreditoRealizar().add(valorCreditos)); // Valor Acrescimo Impontualidade jaCadastrado.setVlAcrescimoImpontualidade(jaCadastrado .getVlAcrescimoImpontualidade().add( valorAcrescimoImpontualidade)); // Valor Sancoes jaCadastrado.setVlSancoes(jaCadastrado.getVlSancoes() .add(valorSancoes)); // Valor Desconto Acrescimo jaCadastrado.setVlDescontoAcrescimo(jaCadastrado .getVlDescontoAcrescimo().add( valorDescontoAcrescimo)); // Valor Desconto Inatividade jaCadastrado.setVlDescontoInatividade(jaCadastrado .getVlDescontoInatividade().add( valorDescontoInatividade)); // Valor Desconto Antiguidade jaCadastrado.setVlDescontoAntiguidade(jaCadastrado .getVlDescontoAntiguidade().add( valorDescontoAntiguidade)); // Valor Total Parcelamento jaCadastrado.setVlTotalParcelamento(jaCadastrado .getVlTotalParcelamento().add( valorTotalParcelamento)); // AnoMesReferencia jaCadastrado.setAnoMesReferencia(jaCadastrado .getAnoMesReferencia()); // valor debitos a cobrar total jaCadastrado.setVlDebitosACobrarTotal(jaCadastrado .getVlDebitosACobrarTotal().add(valorDebitoACobrarTotal)); // valor debitos a cobrar acrescimos jaCadastrado.setVlDebitosACobrarAcrescimos(jaCadastrado .getVlDebitosACobrarAcrescimos().add(valorDebitoACobrarAcrescimos)); // valor debitos a cobrar religsancoes jaCadastrado.setVlDebitosACobrarReligSancoes(jaCadastrado .getVlDebitosACobrarReligSancoes().add(valorDebitoACobrarReligSancoes)); // valor debitos a cobrar parcelamentos jaCadastrado.setVlDebitosACobrarParcelamentos(jaCadastrado .getVlDebitosACobrarParcelamentos().add(valorDebitoACobrarParcelamentos)); // valor entrada jaCadastrado.setVlEntrada(jaCadastrado .getVlEntrada().add(valorEntrada)); // valor juros parcelamento jaCadastrado.setVlJurosParcelamento(jaCadastrado .getVlJurosParcelamento().add(valorJurosParcelamento)); Integer qtdMediaParcelas = jaCadastrado.getQtdMediaParcelas() + quantidadeTotalParcelas; // media parcelas jaCadastrado.setQtdMediaParcelas(qtdMediaParcelas.shortValue()); Integer qtdTotalParcelas = jaCadastrado.getQtdTotalParcelas() + quantidadeTotalParcelas; // total parcelas jaCadastrado.setQtdTotalParcelas(qtdTotalParcelas.shortValue()); } else { // Somatorios // Contas helper.setQtdContas(helper.getQtdContas().intValue() + quantidadeContas); // Guias helper.setQtdGuias(helper.getQtdGuias().intValue() + quantidadeGuias); Short s = (((Integer) (helper.getQtdServicosIndiretos() + quantidadeServicosIndiretos)) .shortValue()); // Servicos Indiretos helper.setQtdServicosIndiretos(s); Short p = (((Integer) (helper.getQtdParcelamento() + 1)) .shortValue()); // qtdParcelamentos helper.setQtdParcelamento(p); // vlContas helper.setVlContas(helper.getVlContas() .add(valorContas)); // vlGuias helper.setVlGuias(helper.getVlGuias().add(valorGuias)); // vlServicosPrestados helper.setVlServicosIndiretos(helper .getVlServicosIndiretos().add( valorServicosIndiretos)); // vlCreditos helper.setVlCreditoRealizar(helper .getVlCreditoRealizar().add(valorCreditos)); // vlAcrescimoImpontualidade helper.setVlAcrescimoImpontualidade(helper .getVlAcrescimoImpontualidade().add( valorAcrescimoImpontualidade)); // vlSancoes helper.setVlSancoes(helper.getVlSancoes().add( valorSancoes)); // vlDescontoAcrescimo helper.setVlDescontoAcrescimo(helper .getVlDescontoAcrescimo().add( valorDescontoAcrescimo)); // vlDescontoInatividade helper.setVlDescontoInatividade(helper .getVlDescontoInatividade().add( valorDescontoInatividade)); // vlDescontoAntiguidade helper.setVlDescontoAntiguidade(helper .getVlDescontoAntiguidade().add( valorDescontoAntiguidade)); // vlTotalParcalamento helper.setVlTotalParcelamento(helper .getVlTotalParcelamento().add( valorTotalParcelamento)); listaSimplificadaParcelamento.add(helper); // AnoMesReferencia helper.setAnoMesReferencia(anoMesRef); // valor debitos a cobrar total helper.setVlDebitosACobrarTotal(valorDebitoACobrarTotal); // valor debitos a cobrar acrescimos helper.setVlDebitosACobrarAcrescimos(valorDebitoACobrarAcrescimos); // valor debitos a cobrar religsancoes helper.setVlDebitosACobrarReligSancoes(valorDebitoACobrarReligSancoes); // valor debitos a cobrar parcelamentos helper.setVlDebitosACobrarParcelamentos(valorDebitoACobrarParcelamentos); // valor entrada helper.setVlEntrada(valorEntrada); // valor juros parcelamento helper.setVlJurosParcelamento(valorJurosParcelamento); // media parcelas helper.setQtdMediaParcelas(quantidadeTotalParcelas); // total parcelas helper.setQtdTotalParcelas(quantidadeTotalParcelas); } } } /** * para todas as ImovelResumoParcelamentoHelper cria * ResumoParcelamento */ for (int i = 0; i < listaSimplificadaParcelamento.size(); i++) { ResumoParcelamentoHelper helper = (ResumoParcelamentoHelper) listaSimplificadaParcelamento .get(i); // Montamos todo o agrupamento necessario // Mes ano de referencia Integer anoMesReferencia = helper.getAnoMesReferencia(); // Gerencia regional GGerenciaRegional gerenciaRegional = null; if (helper.getIdGerenciaRegional() != null) { gerenciaRegional = new GGerenciaRegional(); gerenciaRegional.setId(helper.getIdGerenciaRegional()); } // Unidade de Negocio GUnidadeNegocio unidadeNegocio = null; if (helper.getIdUnidadeNegocio() != null) { unidadeNegocio = new GUnidadeNegocio(); unidadeNegocio.setId(helper.getIdUnidadeNegocio()); } // Localidade GLocalidade localidade = null; if (helper.getIdLocalidade() != null) { localidade = new GLocalidade(); localidade.setId(helper.getIdLocalidade()); } // Elo GLocalidade elo = null; if (helper.getIdElo() != null) { elo = new GLocalidade(); elo.setId(helper.getIdElo()); } // Setor comercial GSetorComercial setorComercial = null; if (helper.getIdSetorComercial() != null) { setorComercial = new GSetorComercial(); setorComercial.setId(helper.getIdSetorComercial()); } // Rota GRota rota = null; if (helper.getIdRota() != null) { rota = new GRota(); rota.setId(helper.getIdRota()); rota.setCodigoRota(helper.getCodigoRota()); } // Quadra GQuadra quadra = null; if (helper.getIdQuadra() != null) { quadra = new GQuadra(); quadra.setId(helper.getIdQuadra()); } // Codigo do setor comercial Integer codigoSetorComercial = null; if (helper.getCodigoSetorComercial() != null) { codigoSetorComercial = (helper.getCodigoSetorComercial()); } // Numero da quadra Integer numeroQuadra = null; if (helper.getNumeroQuadra() != null) { numeroQuadra = (helper.getNumeroQuadra()); } // Perfil do imovel GImovelPerfil imovelPerfil = null; if (helper.getIdPerfilImovel() != null) { imovelPerfil = new GImovelPerfil(); imovelPerfil.setId(helper.getIdPerfilImovel()); } // Esfera de poder do cliente responsavel GEsferaPoder esferaPoder = null; if (helper.getIdEsfera() != null) { esferaPoder = new GEsferaPoder(); esferaPoder.setId(helper.getIdEsfera()); } // Tipo do cliente responsavel GClienteTipo clienteTipo = null; if (helper.getIdTipoClienteResponsavel() != null) { clienteTipo = new GClienteTipo(); clienteTipo.setId(helper.getIdTipoClienteResponsavel()); } // Situacao da ligacao de agua GLigacaoAguaSituacao ligacaoAguaSituacao = null; if (helper.getIdSituacaoLigacaoAgua() != null) { ligacaoAguaSituacao = new GLigacaoAguaSituacao(); ligacaoAguaSituacao .setId(helper.getIdSituacaoLigacaoAgua()); } // Situacao da ligacao de esgoto GLigacaoEsgotoSituacao ligacaoEsgotoSituacao = null; if (helper.getIdSituacaoLigacaoEsgoto() != null) { ligacaoEsgotoSituacao = new GLigacaoEsgotoSituacao(); ligacaoEsgotoSituacao.setId(helper .getIdSituacaoLigacaoEsgoto()); } // Categoria GCategoria categoria = null; if (helper.getIdCategoria() != null) { categoria = new GCategoria(); categoria.setId(helper.getIdCategoria()); } // Subcategoria GSubcategoria subcategoria = null; if (helper.getIdSubCategoria() != null) { subcategoria = new GSubcategoria(); subcategoria.setId(helper.getIdSubCategoria()); } // Perfil da ligacao de agua GLigacaoAguaPerfil perfilLigacaoAgua = null; if (helper.getIdPerfilLigacaoAgua() != null) { perfilLigacaoAgua = new GLigacaoAguaPerfil(); perfilLigacaoAgua.setId(helper.getIdPerfilLigacaoAgua()); } // Perfil da ligacao de esgoto GLigacaoEsgotoPerfil perfilLigacaoEsgoto = null; if (helper.getIdPerfilLigacaoEsgoto() != null) { perfilLigacaoEsgoto = new GLigacaoEsgotoPerfil(); perfilLigacaoEsgoto .setId(helper.getIdPerfilLigacaoEsgoto()); } // Quantidade Contas Integer qtdContas = helper.getQtdContas(); // Quantidade Parcelamentos Short qtdParcelamentos = helper.getQtdParcelamento(); // Quantidade Guias Integer qtdGuias = helper.getQtdGuias(); // Valor das Contas BigDecimal vlContas = helper.getVlContas(); // Valor Guias Pagmto BigDecimal vlGuias = helper.getVlGuias(); // Valor creditos BigDecimal vlCreditos = helper.getVlCreditoRealizar(); // Valor Servicos Indiretos BigDecimal vlAcrescimoImpontualidade = helper .getVlAcrescimoImpontualidade(); // Valor Sancoes //BigDecimal vlSancoes = helper.getVlSancoes(); // Valor creditos BigDecimal vlDescontoAcrescimo = helper .getVlDescontoAcrescimo(); // Valor Desconto Inatividade BigDecimal vlDescontoInatividade = helper .getVlDescontoInatividade(); // Valor Desconto Antiguidade BigDecimal vlDescontoAntiguidade = helper .getVlDescontoAntiguidade(); // Ultima Alteracao Date ultimaAlteracao = new Date(); // valor debitos a cobrar total BigDecimal vlDebitosACobrarTotal = helper.getVlDebitosACobrarTotal(); // valor debitos a cobrar acrescimos BigDecimal vlDebitosACobrarAcrescimos = helper.getVlDebitosACobrarAcrescimos(); // valor debitos a cobrar religsancoes BigDecimal vlDebitosACobrarReligSancoes = helper.getVlDebitosACobrarReligSancoes(); // valor debitos a cobrar parcelamentos BigDecimal vlDebitosACobrarParcelamentos = helper.getVlDebitosACobrarParcelamentos(); // valor entrada BigDecimal vlEntrada = helper.getVlEntrada(); // valor juros parcelamento BigDecimal vlJurosParcelamento = helper.getVlJurosParcelamento(); // media parcelas Integer qtdMediaParcelas = new BigDecimal((helper.getQtdMediaParcelas()/qtdParcelamentos)).intValue(); // total parcelas Integer qtdTotalParcelas = helper.getQtdTotalParcelas().intValue(); // Perfil da ligacao de agua GConsumoTarifa consumoTarifa = null; if (helper.getConsumoTarifa() != null) { consumoTarifa = new GConsumoTarifa(); consumoTarifa.setId(helper.getConsumoTarifa()); } Short indicadorHidrometro = helper.getIndicadorHidrometro(); Short numeroParcelamentoConsecutivosShort = helper.getNumeroParcelamentoConsecutivos(); Integer numeroParcelamentoConsecutivos = null; if(numeroParcelamentoConsecutivosShort != null){ numeroParcelamentoConsecutivos = numeroParcelamentoConsecutivosShort.intValue(); }else{ numeroParcelamentoConsecutivos = 0; } // Criamos um resumo do parcelamento (***UFA***) UnResumoParcelamento resumoParcelamentoGrava = new UnResumoParcelamento( anoMesReferencia, codigoSetorComercial, numeroQuadra, qtdContas, vlContas, vlGuias, vlCreditos, vlDescontoAcrescimo, qtdGuias, vlDescontoInatividade, vlAcrescimoImpontualidade, ultimaAlteracao, qtdParcelamentos, vlDescontoAntiguidade, subcategoria, clienteTipo, ligacaoAguaSituacao, quadra, ligacaoEsgotoSituacao, gerenciaRegional, setorComercial, perfilLigacaoAgua, imovelPerfil, unidadeNegocio, elo, localidade, perfilLigacaoEsgoto, esferaPoder, categoria, rota, vlJurosParcelamento, vlEntrada , vlDebitosACobrarParcelamentos, vlDebitosACobrarTotal, vlDebitosACobrarAcrescimos, vlDebitosACobrarReligSancoes, qtdTotalParcelas, qtdMediaParcelas, consumoTarifa, indicadorHidrometro, numeroParcelamentoConsecutivos, helper.getCodigoRota()); // Adicionamos a lista que deve ser inserida listaResumoParcelamento.add(resumoParcelamentoGrava); } this.getControladorBatch().inserirColecaoObjetoParaBatchGerencial( (Collection) listaResumoParcelamento); // -------------------------------------------------------- // // Registrar o fim da execu��o da Unidade de Processamento // // -------------------------------------------------------- getControladorBatch().encerrarUnidadeProcessamentoBatch(null, idUnidadeIniciada, false); } catch (Exception ex) { // Este catch serve para interceptar qualquer exce��o que o processo // batch venha a lan�ar e garantir que a unidade de processamento do // batch ser� atualizada com o erro ocorrido System.out.println(" ERRO NA LOCALIDADE " + idLocalidade); ex.printStackTrace(); // sessionContext.setRollbackOnly(); getControladorBatch().encerrarUnidadeProcessamentoBatch(ex, idUnidadeIniciada, true); throw new EJBException(ex); } } /** * Retorna o valor de controladorUtil * * @return O valor de controladorUtil */ private ControladorUtilLocal getControladorUtil() { ControladorUtilLocalHome localHome = null; ControladorUtilLocal local = null; // pega a inst�ncia do ServiceLocator. ServiceLocator locator = null; try { locator = ServiceLocator.getInstancia(); localHome = (ControladorUtilLocalHome) locator .getLocalHome(ConstantesJNDI.CONTROLADOR_UTIL_SEJB); // guarda a referencia de um objeto capaz de fazer chamadas // objetos remotamente local = localHome.create(); return local; } catch (CreateException e) { throw new SistemaException(e); } catch (ServiceLocatorException e) { throw new SistemaException(e); } } /** * M�todo que gera o resumo de Metas da CAERN * * [UC0623] - Gerar Resumo de Metas * * @author S�vio Luiz * @date 20/07/2007 * */ public void gerarResumoMetas(int idSetor, Date dataInicial, Date dataFinal, int idFuncionalidadeIniciada) throws ControladorException { int idUnidadeIniciada = 0; // ------------------------- // // Registrar o in�cio do processamento da Unidade de // Processamento // do Batch // // ------------------------- idUnidadeIniciada = getControladorBatch() .iniciarUnidadeProcessamentoBatch(idFuncionalidadeIniciada, UnidadeProcessamento.SETOR_COMERCIAL, idSetor); Integer anoMesReferencia = Util.recuperaAnoMesDaData(dataInicial); try { List imoveisResumoConsumoAgua = this.repositorioGerencialCadastro .pesquisarDadosResumoMetas(idSetor, dataInicial, dataFinal); List<ResumoMetasHelper> listaSimplificada = new ArrayList(); Imovel imovelObterQtdEconomia = null; // pra cada objeto obter a categoria // caso ja tenha um igual soma a quantidade de economias e a // quantidade de ligacoes for (int i = 0; i < imoveisResumoConsumoAgua.size(); i++) { Object obj = imoveisResumoConsumoAgua.get(i); if (obj instanceof Object[]) { Object[] retorno = (Object[]) obj; // Pesquisamos as quantidades de economia do imovel corrente imovelObterQtdEconomia = new Imovel(); imovelObterQtdEconomia.setId((Integer) retorno[0]); Integer quantidadeEconomia = this.getControladorImovel() .obterQuantidadeEconomias(imovelObterQtdEconomia); if (quantidadeEconomia == null) { quantidadeEconomia = 0; } // Montamos um objeto de resumo, com as informacoes do // retorno ResumoMetasHelper helper = new ResumoMetasHelper( (Integer) retorno[1], // Gerencia Regional (Integer) retorno[2], // Unidade de negocio (Integer) retorno[3], // Localidade (Integer) retorno[4], // Elo (Integer) retorno[5], // Id Setor Comercial (Integer) retorno[6], // id Rota (Integer) retorno[7], // Id Quadra (Integer) retorno[8], // Codigo do Setor Comercial (Integer) retorno[9], // Numero da quadra (Integer) retorno[10],// Perfil do imovel (Integer) retorno[11],// Situacao da ligacao da // agua (Integer) retorno[12],// Situacao da ligacao do // esgoto (Integer) retorno[13],// Perfil da ligacao de agua (Integer) retorno[14],// Perfil da ligacao de // esgoto (Date) retorno[15],// Data Liga��o (Date) retorno[16],// Data Supress�o (Date) retorno[17],// Data Corte (Date) retorno[18],// Data Religa��o (Date) retorno[19],// Perfil da ligacao de esgoto (Integer) retorno[20]// Hidrometro instalado ); Integer idImovel = (Integer) retorno[0]; // Codigo do // imovel que // esta sendo // processado // seta o tipo de data helper.setarTipoData(dataInicial, dataFinal); // Pesquisamos a esfera de poder do cliente responsavel helper .setIdEsferaPoder(this.repositorioGerencialCadastro .pesquisarEsferaPoderClienteResponsavelImovel(idImovel)); // Pesquisamos o tipo de cliente responsavel do imovel helper .setIdClienteTipo(this.repositorioGerencialCadastro .pesquisarTipoClienteClienteResponsavelImovel(idImovel)); // pesquisando a categoria // [UC0306] - Obtter principal categoria do im�vel Categoria categoria = null; categoria = this.getControladorImovel() .obterPrincipalCategoriaImovel(idImovel); if (categoria != null) { helper.setIdCategoria(categoria.getId()); // Pesquisando a principal subcategoria ImovelSubcategoria subcategoria = this .getControladorImovel() .obterPrincipalSubcategoriaComCodigoGrupo( categoria.getId(), idImovel); if (subcategoria != null) { helper.setIdSubCategoria(subcategoria.getComp_id() .getSubcategoria().getId()); if (subcategoria.getComp_id().getSubcategoria() != null && subcategoria.getComp_id() .getSubcategoria() .getCodigoGrupoSubcategoria() != null) { helper.setCodigoGrupoSubcategoria(subcategoria .getComp_id().getSubcategoria() .getCodigoGrupoSubcategoria()); } } } // Verificamos se a esfera de poder foi encontrada // [FS0002] Verificar existencia de cliente responsavel if (helper.getIdEsferaPoder().equals(0)) { Imovel imovel = new Imovel(); imovel.setId(idImovel); Cliente clienteTemp = this.getControladorImovel() .consultarClienteUsuarioImovel(imovel); if (clienteTemp != null && clienteTemp.getClienteTipo() != null && clienteTemp.getClienteTipo() .getEsferaPoder() != null) { helper.setIdEsferaPoder(clienteTemp .getClienteTipo().getEsferaPoder().getId()); } } if (helper.getIdClienteTipo().equals(0)) { Imovel imovel = new Imovel(); imovel.setId(idImovel); Cliente clienteTemp = this.getControladorImovel() .consultarClienteUsuarioImovel(imovel); if (clienteTemp != null) { helper.setIdClienteTipo(clienteTemp .getClienteTipo().getId()); } } // se ja existe um objeto igual a ele entao soma as // ligacoes e as economias no ja existente // um objeto eh igual ao outro se ele tem todos as // informacos iguals ( excecao // quantidadeEconomia, quantidadeLigacoes ) if (listaSimplificada.contains(helper)) { int posicao = listaSimplificada.indexOf(helper); ResumoMetasHelper jaCadastrado = (ResumoMetasHelper) listaSimplificada .get(posicao); // Somamos as liga��es cadastradas jaCadastrado .setQuantidadeLigacoesCadastradas(jaCadastrado .getQuantidadeLigacoesCadastradas() .intValue() + 1); // Somamos as economias jaCadastrado.setQuantidadeEconomias(jaCadastrado .getQuantidadeEconomias().intValue() + quantidadeEconomia); int[] tiposData = helper.getTipoData(); for (int tipoData : tiposData) { if (tipoData != 0) { switch (tipoData) { case ResumoMetasHelper.INIDCADOR_DATA_SUPRESSAO: // Somamos as liga��es suprimidas jaCadastrado .setQuantidadeLigacoesSuprimidas(jaCadastrado .getQuantidadeLigacoesSuprimidas() .intValue() + 1); break; case ResumoMetasHelper.INIDCADOR_DATA_CORTE: // Somamos as liga��es suprimidas jaCadastrado .setQuantidadeLigacoesCortadas(jaCadastrado .getQuantidadeLigacoesCortadas() .intValue() + 1); break; case ResumoMetasHelper.INIDCADOR_DATA_LIGACAO: jaCadastrado = setarDadosResumoMetasHelper( jaCadastrado, idImovel, anoMesReferencia); break; case ResumoMetasHelper.INIDCADOR_DATA_RELIGACAO: jaCadastrado = setarDadosResumoMetasHelper( jaCadastrado, idImovel, anoMesReferencia); break; case ResumoMetasHelper.INIDCADOR_DATA_RESTABELECIMENTO: jaCadastrado = setarDadosResumoMetasHelper( jaCadastrado, idImovel, anoMesReferencia); break; } } } } else { // Somamos as liga��es cadastradas helper .setQuantidadeLigacoesCadastradas(helper .getQuantidadeLigacoesCadastradas() .intValue() + 1); // Somamos as economias helper.setQuantidadeEconomias(helper .getQuantidadeEconomias().intValue() + quantidadeEconomia); int[] tiposData = helper.getTipoData(); for (int tipoData : tiposData) { if (tipoData != 0) { switch (tipoData) { case ResumoMetasHelper.INIDCADOR_DATA_SUPRESSAO: // Somamos as liga��es suprimidas helper .setQuantidadeLigacoesSuprimidas(helper .getQuantidadeLigacoesSuprimidas() .intValue() + 1); break; case ResumoMetasHelper.INIDCADOR_DATA_CORTE: // Somamos as liga��es suprimidas helper.setQuantidadeLigacoesCortadas(helper .getQuantidadeLigacoesCortadas() .intValue() + 1); break; case ResumoMetasHelper.INIDCADOR_DATA_LIGACAO: helper = setarDadosResumoMetasHelper( helper, idImovel, anoMesReferencia); break; case ResumoMetasHelper.INIDCADOR_DATA_RELIGACAO: helper = setarDadosResumoMetasHelper( helper, idImovel, anoMesReferencia); break; case ResumoMetasHelper.INIDCADOR_DATA_RESTABELECIMENTO: helper = setarDadosResumoMetasHelper( helper, idImovel, anoMesReferencia); break; } } } listaSimplificada.add(helper); } } } for (int i = 0; i < listaSimplificada.size(); i++) { this.repositorioGerencialCadastro.inserirResumoMetas( anoMesReferencia, (ResumoMetasHelper) listaSimplificada .get(i)); } // -------------------------------------------------------- // // Registrar o fim da execu��o da Unidade de Processamento // // -------------------------------------------------------- getControladorBatch().encerrarUnidadeProcessamentoBatch(null, idUnidadeIniciada, false); } catch (Exception ex) { // Este catch serve para interceptar qualquer exce��o que o processo // batch venha a lan�ar e garantir que a unidade de processamento do // batch ser� atualizada com o erro ocorrido System.out.println(" ERRO NO SETOR COMERCIAL " + idSetor); ex.printStackTrace(); // sessionContext.setRollbackOnly(); getControladorBatch().encerrarUnidadeProcessamentoBatch(ex, idUnidadeIniciada, true); throw new EJBException(ex); } } /** * M�todo que gera o resumo de Metas da CAERN * * [UC0570] - Gerar Resumo do consumo de agua * * @author S�vio Luiz * @date 20/07/2007 * */ private ResumoMetasHelper setarDadosResumoMetasHelper( ResumoMetasHelper resumoMetasHelper, Integer idImovel, Integer amArrecadacao) { try { // Somar ao acumulador de quantidade de liga��es ativas + 1 resumoMetasHelper.setQuantidadeLigacoesAtivas(resumoMetasHelper .getQuantidadeLigacoesAtivas() + 1); boolean existeDebito = getControladorFaturamento() .verificarDebitoMais3MesesFaturaEmAberto(amArrecadacao,idImovel); if (existeDebito) { // Somar ao acumulador de quantidade de liga��es ativas + 1 resumoMetasHelper .setQuantidadeLigacoesAtivasDebito3M(resumoMetasHelper .getQuantidadeLigacoesAtivasDebito3M() + 1); } if (resumoMetasHelper.getIdHidrometroInstalado() != null && !resumoMetasHelper.getIdHidrometroInstalado().equals("")) { // Somar ao acumulador de quantidade de liga��es ativas + 1 resumoMetasHelper .setQuantidadeLigacoesConsumoMedido(resumoMetasHelper .getQuantidadeLigacoesConsumoMedido() + 1); Integer consumoFaturadoSemLigacao = getControladorMicromedicao() .pesquisarConsumoFaturado(idImovel, LigacaoTipo.LIGACAO_AGUA, null,null, amArrecadacao); if (consumoFaturadoSemLigacao != null && consumoFaturadoSemLigacao >= 0 && consumoFaturadoSemLigacao <= 5) { // Somar ao acumulador de quantidade de liga��es ativas + 1 resumoMetasHelper .setQuantidadeLigacoesConsumoAte5M3(resumoMetasHelper .getQuantidadeLigacoesConsumoAte5M3() + 1); } Integer consumoFaturadoImovelAtual = getControladorMicromedicao() .pesquisarConsumoFaturado(idImovel, LigacaoTipo.LIGACAO_AGUA, ConsumoTipo.MEDIA_IMOVEL, ConsumoTipo.MEDIA_HIDROMETRO, amArrecadacao); Integer consumoFaturadoImovelMenos1 = getControladorMicromedicao() .pesquisarConsumoFaturado(idImovel, LigacaoTipo.LIGACAO_AGUA, ConsumoTipo.MEDIA_IMOVEL, ConsumoTipo.MEDIA_HIDROMETRO, Util.subtraiAteSeisMesesAnoMesReferencia(amArrecadacao,1)); Integer consumoFaturadoImovelMenos2 = getControladorMicromedicao() .pesquisarConsumoFaturado(idImovel, LigacaoTipo.LIGACAO_AGUA, ConsumoTipo.MEDIA_IMOVEL, ConsumoTipo.MEDIA_HIDROMETRO, Util.subtraiAteSeisMesesAnoMesReferencia(amArrecadacao,2)); Integer consumoFaturadoImovelMenos3 = getControladorMicromedicao() .pesquisarConsumoFaturado(idImovel, LigacaoTipo.LIGACAO_AGUA, ConsumoTipo.MEDIA_IMOVEL, ConsumoTipo.MEDIA_HIDROMETRO, Util.subtraiAteSeisMesesAnoMesReferencia(amArrecadacao,3)); if (consumoFaturadoImovelAtual != null && !consumoFaturadoImovelAtual.equals("") && consumoFaturadoImovelMenos1 != null && !consumoFaturadoImovelMenos1.equals("") && consumoFaturadoImovelMenos2 != null && !consumoFaturadoImovelMenos2.equals("") && consumoFaturadoImovelMenos3 != null && !consumoFaturadoImovelMenos3.equals("")) { // Somar ao acumulador de quantidade de liga��es ativas // + 1 resumoMetasHelper .setQuantidadeLigacoesConsumoMedio(resumoMetasHelper .getQuantidadeLigacoesConsumoMedio() + 1); } } else { // Somar ao acumulador de quantidade de liga��es ativas + 1 resumoMetasHelper .setQuantidadeLigacoesConsumoNaoMedido(resumoMetasHelper .getQuantidadeLigacoesConsumoNaoMedido() + 1); } } catch (Exception ex) { // Este catch serve para interceptar qualquer exce��o que o processo // batch venha a lan�ar e garantir que a unidade de processamento do // batch ser� atualizada com o erro ocorrido System.out.println(" ERRO IMOVEL " + idImovel); ex.printStackTrace(); // sessionContext.setRollbackOnly(); throw new EJBException(ex); } return resumoMetasHelper; } /** * M�todo que gera o resumo da pendencia * * [UC0335] - Gerar Resumo do Parcelamento * * @author Bruno Barros * @date 19/07/2007 * */ // public void gerarResumoPendencia( int idSetor, // int idFuncionalidadeIniciada) throws ControladorException { // // int idUnidadeIniciada = 0; // // // ------------------------- // // // // Registrar o in�cio do processamento da Unidade de // // Processamento // // do Batch // // // // ------------------------- // idUnidadeIniciada = getControladorBatch() // .iniciarUnidadeProcessamentoBatch(idFuncionalidadeIniciada, // UnidadeProcessamento.LOCALIDADE, idSetor); // // try { // // this.gerarResumoPendenciaContaGerencia(idSetor); // // getControladorBatch().encerrarUnidadeProcessamentoBatch( // idUnidadeIniciada, false); // // } catch (Exception ex) { // // Este catch serve para interceptar qualquer exce��o que o processo // // batch venha a lan�ar e garantir que a unidade de processamento do // // batch ser� atualizada com o erro ocorrido // // System.out.println( " ERRO NO SETOR " + idSetor); // // ex.printStackTrace(); // getControladorBatch().encerrarUnidadeProcessamentoBatch( // idUnidadeIniciada, true); // // throw new EJBException(ex); // } // } /** * Gera a primeira parte do resumo de pendencias [SB0001A] * * @author Bruno Barros * @date 19/07/2007 * */ // private void gerarResumoPendenciaContaGerencia( int idSetor ) throws // ControladorException, ErroRepositorioException { // System.out.println( " ***RESUMO DE PENDENCIAS DAS CONTAS POR GERENCIA - // SETOR " + idSetor + "***"); // // /** // * O sistema seleciona as contas pendentes ( a partir // * da tabela CONTA com CNTA_AMREFERENCIACONTA < // * PARM_AMREFERENCIAFATURAMENTO da tabela SISTEMA_PARAMETROS // * e ( DCST_IDATUAL = 0 ou (DCST_IDATUAL = (1,2) e // * CNTA_AMREFERENCIACONTABIL < PARM_AMREFENRECIAFATURAMENTO // * ou (DCST_IDATUAL = (3,4,5) e CNTA_AMREFERENCIACONTABIL > // * PARM_AMREFERENCIAFATURAMENTO */ // List contasPendentes = // this.repositorioGerencialCadastro.getContasPendentes( idSetor ); // // // Varremos // for ( int i = 0; i < contasPendentes.size(); i++ ){ // Object obj = contasPendentes.get(i); // // if (obj instanceof Object[]) { // Object[] linha = (Object[]) obj; // // ResumoPendenciaContasGerenciaHelper helper = new // ResumoPendenciaContasGerenciaHelper( // (Integer) linha[0], // Gerencia Regional // (Integer) linha[1], // Unidade Negocio // (Integer) linha[2], // Elo // (Integer) linha[3], // Localidade // (Integer) linha[4], // Setor Comercial // (Integer) linha[5], // Rota // (Integer) linha[6], // Quadra // (Integer) linha[7], // Codigo Setor Comercial // (Integer) linha[8], // Numero da quadra // (Integer) linha[9], // Perfil do imovel // (Integer) linha[10], // Situacao Ligacao Agua // (Integer) linha[11], // Situacao Ligacao Esgoto // (Integer) linha[12], // Perfil liga��o Agua // (Integer) linha[13], // Perfil liga��o Esgoto // (Integer) linha[14], // Volume Fixado Agua // (Integer) linha[15], // Volume Fixado Agua // (Integer) linha[16], // Volume Fixado Esgoto // new Integer(1), // (Integer) linha[17], // Ano mes de referencia documento // (Integer) linha[18]); // Referencia do vencimento da conta // // Integer idImovel = ( Integer )linha[19]; // Codigo do imovel que esta // sendo processado // // // Pesquisamos a esfera de poder do cliente responsavel // helper.setIdEsferaPoder( // this.repositorioGerencialCadastro.pesquisarEsferaPoderClienteResponsavelImovel( // idImovel ) ); // // Pesquisamos o tipo de cliente responsavel do imovel // helper.setIdTipoClienteResponsavel( // this.repositorioGerencialCadastro.pesquisarTipoClienteClienteResponsavelImovel( // idImovel ) ); // // // pesquisando a categoria // // [UC0306] - Obtter principal categoria do im�vel // Categoria categoria = null; // categoria = this.getControladorImovel() // .obterPrincipalCategoriaImovel(idImovel); // if (categoria != null) { // helper.setIdPrincipalCategoriaImovel(categoria.getId()); // // // Pesquisando a principal subcategoria // ImovelSubcategoria subcategoria = // this.getControladorImovel().obterPrincipalSubcategoria( // categoria.getId(), idImovel ); // // if ( subcategoria != null ){ // helper.setIdPrincipalSubCategoriaImovel( // subcategoria.getComp_id().getSubcategoria().getId() ); // } // } // // // Verificamos se a esfera de poder foi encontrada // // [FS0002] Verificar existencia de cliente responsavel // if ( helper.getIdEsferaPoder().equals( 0 ) ){ // Imovel imovel = new Imovel(); // imovel.setId(idImovel); // Cliente clienteTemp = // this.getControladorImovel().consultarClienteUsuarioImovel( imovel ); // if ( clienteTemp != null ){ // helper.setIdEsferaPoder( // clienteTemp.getClienteTipo().getEsferaPoder().getId() ); // } // } // if ( helper.getIdTipoClienteResponsavel().equals( 0 ) ){ // Imovel imovel = new Imovel(); // imovel.setId(idImovel); // Cliente clienteTemp = // this.getControladorImovel().consultarClienteUsuarioImovel( imovel ); // if ( clienteTemp != null ){ // helper.setIdTipoClienteResponsavel( clienteTemp.getClienteTipo().getId() // ); // } // } // } // } // } /** * M�todo que gera o resumo de Metas da CAERN * * [UC0623] - Gerar Resumo de Metas * * @author S�vio Luiz * @date 20/07/2007 * */ public void gerarResumoMetasAcumulado(int idSetor, Integer anoMesArrecadacao, int idFuncionalidadeIniciada) throws ControladorException { int idUnidadeIniciada = 0; // ------------------------- // // Registrar o in�cio do processamento da Unidade de // Processamento // do Batch // // ------------------------- idUnidadeIniciada = getControladorBatch() .iniciarUnidadeProcessamentoBatch(idFuncionalidadeIniciada, UnidadeProcessamento.SETOR_COMERCIAL, idSetor); try { List imoveisResumoConsumoAgua = this.repositorioGerencialCadastro .pesquisarDadosResumoMetasAcumulado(idSetor); List<ResumoMetasHelper> listaSimplificada = new ArrayList(); Imovel imovelObterQtdEconomia = null; // pra cada objeto obter a categoria // caso ja tenha um igual soma a quantidade de economias e a // quantidade de ligacoes for (int i = 0; i < imoveisResumoConsumoAgua.size(); i++) { Object obj = imoveisResumoConsumoAgua.get(i); if (obj instanceof Object[]) { Object[] retorno = (Object[]) obj; // Pesquisamos as quantidades de economia do imovel corrente imovelObterQtdEconomia = new Imovel(); imovelObterQtdEconomia.setId((Integer) retorno[0]); Integer quantidadeEconomia = this.getControladorImovel() .obterQuantidadeEconomias(imovelObterQtdEconomia); if (quantidadeEconomia == null) { quantidadeEconomia = 0; } // Montamos um objeto de resumo, com as informacoes do // retorno ResumoMetasHelper helper = new ResumoMetasHelper( (Integer) retorno[1], // Gerencia Regional (Integer) retorno[2], // Unidade de negocio (Integer) retorno[3], // Localidade (Integer) retorno[4], // Elo (Integer) retorno[5], // Id Setor Comercial (Integer) retorno[6], // id Rota (Integer) retorno[7], // Id Quadra (Integer) retorno[8], // Codigo do Setor Comercial (Integer) retorno[9], // Numero da quadra (Integer) retorno[10],// Perfil do imovel (Integer) retorno[11],// Situacao da ligacao da // agua (Integer) retorno[12],// Situacao da ligacao do // esgoto (Integer) retorno[13],// Perfil da ligacao de agua (Integer) retorno[14],// Perfil da ligacao de // esgoto (Date) retorno[15],// Data Liga��o (Date) retorno[16],// Data Supress�o (Date) retorno[17],// Data Corte (Date) retorno[18],// Data Religa��o (Date) retorno[19],// Perfil da ligacao de esgoto (Integer) retorno[20]// Hidrometro instalado ); Integer idImovel = (Integer) retorno[0]; // Codigo do // imovel que // esta sendo // processado // Pesquisamos a esfera de poder do cliente responsavel helper .setIdEsferaPoder(this.repositorioGerencialCadastro .pesquisarEsferaPoderClienteResponsavelImovel(idImovel)); // Pesquisamos o tipo de cliente responsavel do imovel helper .setIdClienteTipo(this.repositorioGerencialCadastro .pesquisarTipoClienteClienteResponsavelImovel(idImovel)); // pesquisando a categoria // [UC0306] - Obtter principal categoria do im�vel Categoria categoria = null; categoria = this.getControladorImovel() .obterPrincipalCategoriaImovel(idImovel); if (categoria != null) { helper.setIdCategoria(categoria.getId()); // Pesquisando a principal subcategoria ImovelSubcategoria subcategoria = this .getControladorImovel() .obterPrincipalSubcategoriaComCodigoGrupo( categoria.getId(), idImovel); if (subcategoria != null) { helper.setIdSubCategoria(subcategoria.getComp_id() .getSubcategoria().getId()); if (subcategoria.getComp_id().getSubcategoria() != null && subcategoria.getComp_id() .getSubcategoria() .getCodigoGrupoSubcategoria() != null) { helper.setCodigoGrupoSubcategoria(subcategoria .getComp_id().getSubcategoria() .getCodigoGrupoSubcategoria()); } } } // Verificamos se a esfera de poder foi encontrada // [FS0002] Verificar existencia de cliente responsavel if (helper.getIdEsferaPoder().equals(0)) { Imovel imovel = new Imovel(); imovel.setId(idImovel); Cliente clienteTemp = this.getControladorImovel() .consultarClienteUsuarioImovel(imovel); if (clienteTemp != null && clienteTemp.getClienteTipo() != null && clienteTemp.getClienteTipo() .getEsferaPoder() != null) { helper.setIdEsferaPoder(clienteTemp .getClienteTipo().getEsferaPoder().getId()); } } if (helper.getIdClienteTipo().equals(0)) { Imovel imovel = new Imovel(); imovel.setId(idImovel); Cliente clienteTemp = this.getControladorImovel() .consultarClienteUsuarioImovel(imovel); if (clienteTemp != null) { helper.setIdClienteTipo(clienteTemp .getClienteTipo().getId()); } } // se ja existe um objeto igual a ele entao soma as // ligacoes e as economias no ja existente // um objeto eh igual ao outro se ele tem todos as // informacos iguals ( excecao // quantidadeEconomia, quantidadeLigacoes ) if (listaSimplificada.contains(helper)) { int posicao = listaSimplificada.indexOf(helper); ResumoMetasHelper jaCadastrado = (ResumoMetasHelper) listaSimplificada .get(posicao); // Somamos as liga��es cadastradas if ((jaCadastrado.getIdLigacaoAguaSituacao() != null && (!jaCadastrado .getIdLigacaoAguaSituacao().equals( LigacaoAguaSituacao.POTENCIAL) && !jaCadastrado .getIdLigacaoAguaSituacao().equals( LigacaoAguaSituacao.FACTIVEL))) || (jaCadastrado.getIdLigacaoEsgotoSituacao() != null && (!jaCadastrado .getIdLigacaoEsgotoSituacao() .equals(LigacaoEsgotoSituacao.POTENCIAL) && !jaCadastrado .getIdLigacaoEsgotoSituacao().equals( LigacaoEsgotoSituacao.FACTIVEL)))) { jaCadastrado .setQuantidadeLigacoesCadastradas(jaCadastrado .getQuantidadeLigacoesCadastradas() .intValue() + 1); // Somamos as economias jaCadastrado.setQuantidadeEconomias(jaCadastrado .getQuantidadeEconomias().intValue() + quantidadeEconomia); } // Somamos as liga��es cadastradas if (jaCadastrado.getIdLigacaoAguaSituacao() != null && (jaCadastrado.getIdLigacaoAguaSituacao() .equals(LigacaoAguaSituacao.SUPR_PARC) || jaCadastrado .getIdLigacaoAguaSituacao() .equals( LigacaoAguaSituacao.SUPR_PARC_PEDIDO) || jaCadastrado .getIdLigacaoAguaSituacao().equals( LigacaoAguaSituacao.SUPRIMIDO))) { // Somamos as liga��es suprimidas jaCadastrado .setQuantidadeLigacoesSuprimidas(jaCadastrado .getQuantidadeLigacoesSuprimidas() .intValue() + 1); } // Somamos as liga��es cadastradas if (jaCadastrado.getIdLigacaoAguaSituacao() != null && (jaCadastrado.getIdLigacaoAguaSituacao() .equals(LigacaoAguaSituacao.CORTADO))) { // Somamos as liga��es suprimidas jaCadastrado .setQuantidadeLigacoesCortadas(jaCadastrado .getQuantidadeLigacoesCortadas() .intValue() + 1); } // Somamos as liga��es cadastradas if (jaCadastrado.getIdLigacaoAguaSituacao() != null && (jaCadastrado.getIdLigacaoAguaSituacao() .equals(LigacaoAguaSituacao.LIGADO)) || (jaCadastrado.getIdLigacaoEsgotoSituacao() != null && (jaCadastrado .getIdLigacaoEsgotoSituacao() .equals(LigacaoEsgotoSituacao.LIGADO)))) { jaCadastrado = setarDadosResumoMetasHelper( jaCadastrado, idImovel, anoMesArrecadacao); } } else { // Somamos as liga��es cadastradas if ((helper.getIdLigacaoAguaSituacao() != null && (!helper .getIdLigacaoAguaSituacao().equals( LigacaoAguaSituacao.POTENCIAL) && !helper .getIdLigacaoAguaSituacao().equals( LigacaoAguaSituacao.FACTIVEL))) || (helper.getIdLigacaoEsgotoSituacao() != null && (!helper .getIdLigacaoEsgotoSituacao() .equals(LigacaoEsgotoSituacao.POTENCIAL) && !helper .getIdLigacaoEsgotoSituacao().equals( LigacaoEsgotoSituacao.FACTIVEL)))) { helper.setQuantidadeLigacoesCadastradas(helper .getQuantidadeLigacoesCadastradas() .intValue() + 1); // Somamos as economias helper.setQuantidadeEconomias(helper .getQuantidadeEconomias().intValue() + quantidadeEconomia); } // Somamos as liga��es cadastradas if (helper.getIdLigacaoAguaSituacao() != null && (helper.getIdLigacaoAguaSituacao().equals( LigacaoAguaSituacao.SUPR_PARC) || helper .getIdLigacaoAguaSituacao() .equals( LigacaoAguaSituacao.SUPR_PARC_PEDIDO) || helper .getIdLigacaoAguaSituacao().equals( LigacaoAguaSituacao.SUPRIMIDO))) { // Somamos as liga��es suprimidas helper.setQuantidadeLigacoesSuprimidas(helper .getQuantidadeLigacoesSuprimidas() .intValue() + 1); } // Somamos as liga��es cadastradas if (helper.getIdLigacaoAguaSituacao() != null && (helper.getIdLigacaoAguaSituacao() .equals(LigacaoAguaSituacao.CORTADO))) { // Somamos as liga��es suprimidas helper .setQuantidadeLigacoesCortadas(helper .getQuantidadeLigacoesCortadas() .intValue() + 1); } // Somamos as liga��es cadastradas if ((helper.getIdLigacaoAguaSituacao() != null && (helper .getIdLigacaoAguaSituacao() .equals(LigacaoAguaSituacao.LIGADO))) || (helper.getIdLigacaoEsgotoSituacao() != null && (helper .getIdLigacaoEsgotoSituacao() .equals(LigacaoEsgotoSituacao.LIGADO)))) { helper = setarDadosResumoMetasHelper(helper, idImovel, anoMesArrecadacao); } listaSimplificada.add(helper); } } } for (int i = 0; i < listaSimplificada.size(); i++) { this.repositorioGerencialCadastro.inserirResumoMetasAcumulado( anoMesArrecadacao, (ResumoMetasHelper) listaSimplificada.get(i)); } // -------------------------------------------------------- // // Registrar o fim da execu��o da Unidade de Processamento // // --------------------------------------------------------n getControladorBatch().encerrarUnidadeProcessamentoBatch(null, idUnidadeIniciada, false); } catch (Exception ex) { // Este catch serve para interceptar qualquer exce��o que o // processo // batch venha a lan�ar e garantir que a unidade de processamento // do // batch ser� atualizada com o erro ocorrido System.out.println(" ERRO NO SETOR COMERCIAL " + idSetor); ex.printStackTrace(); // sessionContext.setRollbackOnly(); getControladorBatch().encerrarUnidadeProcessamentoBatch(ex, idUnidadeIniciada, true); throw new EJBException(ex); } } public Integer obterConsumoMinimoCategoria( Imovel imovel, Categoria categoria ) throws ControladorException{ Integer consumoMinimoCategoria = 0; // Selecionamos o consumo m�nimo dessa faixa try { // [UC0108] - Obter Quantidade de Economias por Categoria Short quantidadeEconomias = this.repositorioImovel.pesquisarObterQuantidadeEconomias( imovel, categoria ); Integer consumoMinimo = this.repositorioGerencialCadastro.getConsumoMinimoImovelCategoria( imovel.getId(), categoria.getId() ); consumoMinimoCategoria = quantidadeEconomias * consumoMinimo; } catch (ErroRepositorioException e) { new ControladorException("erro.sistema", e); } return consumoMinimoCategoria; } /** * M鴯do que gera resumo indicadores de comercializa磯 * * [UC0573] - Gerar Resumo Indicadores da Comercializa磯 * * @author Rafael Corrꡍ * @date 06/03/2008 * */ public void gerarResumoIndicadoresComercializacao(int idFuncionalidadeIniciada) throws ControladorException { int idUnidadeIniciada = 0; // ------------------------- // // Registrar o in�cio do processamento da Unidade de // Processamento // do Batch // // ------------------------- idUnidadeIniciada = getControladorBatch() .iniciarUnidadeProcessamentoBatch(idFuncionalidadeIniciada, UnidadeProcessamento.FUNCIONALIDADE, 0); try { Integer anoMesResumoLigacaoEconomia = this.repositorioGerencialCadastro .pesquisarMaiorAnoMesResumoLigacaoEconomia(); Integer anoMesResumoIndicadorLigacaoEconomia = this.repositorioGerencialCadastro .pesquisarMaiorAnoMesResumoIndicadorLigacaoEconomia(); // if (anoMesResumoLigacaoEconomia == null // || (anoMesResumoIndicadorLigacaoEconomia != null && anoMesResumoLigacaoEconomia // .intValue() <= anoMesResumoIndicadorLigacaoEconomia // .intValue())) { // throw new ControladorException( // "atencao.ano.mes.indicador.maior.igual.ano.mes.resumo", null, "da Comercializa磯"); // } if (anoMesResumoLigacaoEconomia != null && (anoMesResumoIndicadorLigacaoEconomia == null || anoMesResumoLigacaoEconomia .intValue() > anoMesResumoIndicadorLigacaoEconomia .intValue())) { /** * @autor Adriana Muniz * @date 14/02/2012 * * Soma um ao ano/mes referꮣia passado com parametro para o metodo de atualiza磯. **/ anoMesResumoIndicadorLigacaoEconomia = Util.somaUmMesAnoMesReferencia(anoMesResumoIndicadorLigacaoEconomia); this.repositorioGerencialCadastro.atualizarDadosResumoIndicadorLigacaoEconomia(anoMesResumoIndicadorLigacaoEconomia); } getControladorBatch().encerrarUnidadeProcessamentoBatch(null, idUnidadeIniciada, false); } catch (Exception ex) { // Este catch serve para interceptar qualquer exce��o que o processo // batch venha a lan�ar e garantir que a unidade de processamento do // batch ser� atualizada com o erro ocorrido ex.printStackTrace(); // sessionContext.setRollbackOnly(); getControladorBatch().encerrarUnidadeProcessamentoBatch(ex, idUnidadeIniciada, true); throw new EJBException(ex); } } /** * M�todo que gera o resumo do coleta esgoto * * [UC0573] - Gerar Resumo do coleta esgoto * * @author Marcio Roberto, Bruno Barros, Ivan Sergio * @date 18/09/2007, 07/02/2008, 29/07/2008, 15/08/2008 * @alteracao: 29/07/2008 - SubCategoria deve sempre ser obtida pela Categoria do Imovel. * 15/08/2008 - Alteracao no calculo do Volume Faturado. * */ public void gerarResumoColetaEsgoto(int idSetor, int idFuncionalidadeIniciada) throws ControladorException { int idUnidadeIniciada = 0; // ------------------------- // // Registrar o in�cio do processamento da Unidade de // Processamento // do Batch // // ------------------------- idUnidadeIniciada = getControladorBatch() .iniciarUnidadeProcessamentoBatch(idFuncionalidadeIniciada, UnidadeProcessamento.SETOR_COMERCIAL, idSetor); Integer anoMesReferencia = null; Integer idImovel = null; try { Integer anoMesFaturamento = getControladorUtil().pesquisarParametrosDoSistema().getAnoMesFaturamento(); List imoveisResumoColetaEsgoto = this.repositorioGerencialCadastro .getHistoricosColetaEsgoto(idSetor, anoMesFaturamento); List<ResumoColetaEsgotoHelper> listaSimplificada = new ArrayList(); //List<UnResumoColetaEsgoto> listaResumoConsumoAgua = new ArrayList(); Imovel imovelObterQtdEconomia = null; //FS0001 - Verificar existencia de dados para o ano/mes referencia informado repositorioGerencialCadastro.excluirResumo( getControladorUtil().pesquisarParametrosDoSistema().getAnoMesFaturamento(), UnResumoColetaEsgoto.class.getName(), "referencia", idSetor, false ); // pra cada objeto obter a categoria // caso ja tenha um igual soma a quantidade de economias e a // quantidade de ligacoes for (int i = 0; i < imoveisResumoColetaEsgoto.size(); i++) { Object obj = imoveisResumoColetaEsgoto.get(i); if (obj instanceof Object[]) { Object[] retorno = (Object[]) obj; // Montamos um objeto de resumo, com as informacoes do // retorno ResumoColetaEsgotoHelper helper = new ResumoColetaEsgotoHelper( (Integer) retorno[1], // Gerencia Regional (Integer) retorno[2], // Unidade de negocio (Integer) retorno[3], // Localidade (Integer) retorno[4], // Elo (Integer) retorno[5], // Id Setor Comercial (Integer) retorno[6], // id Rota (Integer) retorno[7], // Id Quadra (Integer) retorno[8], // Codigo do Setor Comercial (Integer) retorno[9], // Numero da quadra (Integer) retorno[10],// Perfil do imovel (Integer) retorno[11],// Situacao da ligacao da agua (Integer) retorno[12],// Situacao da ligacao do esgoto (Integer) retorno[13],// Perfil da ligacao de agua (Integer) retorno[14],// Perfil da ligacao de esgoto (Integer) retorno[15], // Consumo tipo (Short) retorno[24] //codigo rota ); // Imovel idImovel = (Integer) retorno[0]; // Id da Conta Integer idConta = ( Integer ) retorno[22]; Conta conta = new Conta(); conta.setId( idConta ); FiltroConta filtroConta = new FiltroConta(); filtroConta.adicionarParametro( new ParametroSimples(FiltroConta.ID, idConta)); Collection contas = Fachada.getInstancia().pesquisar(filtroConta, Conta.class.getName()); Integer motivoSituacaoFaturamento = null; if ( contas != null && !contas.isEmpty() ){ conta = (Conta)Util.retonarObjetoDeColecao(contas); motivoSituacaoFaturamento = this. repositorioGerencialCadastro.getMotivoSituacaoFaturamento( idImovel, conta.getReferencia()); } helper.setMotivoFaturamentoSituacao(motivoSituacaoFaturamento); //Indicador de Faturamento helper.setIndicadorFaturamento((Short)retorno[25]); //Situa磯 de Faturamento helper.setFaturamentoSituacao((Integer)retorno[26]); // Quantidade de Economias Integer quantidadeEconomia = 0; // Verificamos se existe economias pela conta if ( idConta != null && !idConta.equals(0)){ Collection<Categoria> colQuantEco = this.getControladorImovel().obterQuantidadeEconomiasContaCategoria( conta ); if ( colQuantEco != null && colQuantEco.size() > 0 ){ Iterator iteQuanEco = colQuantEco.iterator(); while ( iteQuanEco.hasNext() ){ Categoria catTemp = (Categoria) iteQuanEco.next(); quantidadeEconomia += catTemp.getQuantidadeEconomiasCategoria(); } } } // Caso n㯠obtenha as quantidades pela conta, pesquisamos as quantidades de economia do imovel corrente if ( quantidadeEconomia == 0 ){ imovelObterQtdEconomia = new Imovel(); imovelObterQtdEconomia.setId((Integer) retorno[0]); quantidadeEconomia = this.getControladorImovel() .obterQuantidadeEconomias(imovelObterQtdEconomia); if (quantidadeEconomia == null) { quantidadeEconomia = 0; } } // Consumo de Esgoto Integer consumoEsgoto = null; // Verificamos se o consumo de esgoto esta na conta ou no consumoHistorico if( idConta != null && !idConta.equals(0)){ consumoEsgoto = (Integer) retorno[23]; } else { consumoEsgoto = (Integer) retorno[16]; } // Pesquisamos a esfera de poder do cliente responsavel helper.setIdEsferaPoder( this.repositorioGerencialCadastro .pesquisarEsferaPoderClienteResponsavelImovel(idImovel)); // Pesquisamos o tipo de cliente responsavel do imovel helper.setIdClienteTipo( this.repositorioGerencialCadastro .pesquisarTipoClienteClienteResponsavelImovel(idImovel)); // pesquisando a categoria Categoria categoria = null; Categoria categoriaConta = null; // [UC0632] - Obter Principal Categoria da Conta // Verificamos se existe conta para este imovel if ( idConta != null && !idConta.equals(0)){ categoriaConta = this.getControladorImovel().obterPrincipalCategoriaConta( idConta ); } // Pesquisamos a categoria do imovel Categoria categoriaImovel = this.getControladorImovel() .obterPrincipalCategoriaImovel(idImovel); // Verificamos se devemos guardar a categoria da conta ou do imovel if ( categoriaConta == null ){ categoria = categoriaImovel; } else { categoria = categoriaConta; } // Pesquisamos a subcategoria if (categoria != null) { helper.setIdCategoria(categoria.getId()); // Pesquisando a principal subcategoria // Lembrando que a categoria usada para pesquisar a subcategoria e sempre a do imovel ImovelSubcategoria subcategoria = this .getControladorImovel() .obterPrincipalSubcategoria(categoriaImovel.getId(), idImovel); helper.setIdSubCategoria(subcategoria.getComp_id() .getSubcategoria().getId()); } /* // pesquisando a categoria Categoria categoria = null; // [UC0632] - Obter Principal Categoria da Conta // Verificamos se existe conta para este imovel if ( idConta != null ){ categoria = this.getControladorImovel().obterPrincipalCategoriaConta( idConta ); } // Caso n㯠encontre a categoria pela conta, seleciona pelo imovel if ( categoria == null ){ // [UC0306] - Obtter principal categoria do imovel categoria = this.getControladorImovel() .obterPrincipalCategoriaImovel(idImovel); } if (categoria != null) { helper.setIdCategoria(categoria.getId()); // Pesquisando a principal subcategoria ImovelSubcategoria subcategoria = this .getControladorImovel() .obterPrincipalSubcategoria(categoria.getId(), idImovel); if (subcategoria != null) { helper.setIdSubCategoria(subcategoria.getComp_id() .getSubcategoria().getId()); } } */ // Verificamos se a esfera de poder foi encontrada // [FS0002] Verificar existencia de cliente responsavel if (helper.getIdEsferaPoder().equals(0)) { Imovel imovel = new Imovel(); imovel.setId(idImovel); Cliente clienteTemp = this.getControladorImovel() .consultarClienteUsuarioImovel(imovel); if (clienteTemp != null) { helper.setIdEsferaPoder(clienteTemp .getClienteTipo().getEsferaPoder().getId()); } } if (helper.getIdClienteTipo().equals(0)) { Imovel imovel = new Imovel(); imovel.setId(idImovel); Cliente clienteTemp = this.getControladorImovel() .consultarClienteUsuarioImovel(imovel); if (clienteTemp != null) { helper.setIdClienteTipo(clienteTemp .getClienteTipo().getId()); } } // Ano M�s Referencia. anoMesReferencia = (Integer) retorno[17]; // [UC0307] - Obter Indicador de Exist�ncia de Hidr�metro String indicadorHidrometroString = new Integer( getControladorImovel().obterIndicadorExistenciaHidrometroImovel(idImovel)).toString(); Short indicadorHidrometro = new Short(indicadorHidrometroString); // Caso indicador de hidr�metro esteja nulo // Seta 2(dois) = N�O no indicador de // hidr�metro if (indicadorHidrometro == null) { indicadorHidrometro = new Short("2"); } helper.setIndicadorHidrometro(indicadorHidrometro); // Verificamos a existencia de poco no imovel Integer idPoco = this.repositorioGerencialCadastro .verificarExistenciaPoco(idImovel); if(idPoco == null){ idPoco = 0; } // helper.setPoco(idPoco.shortValue()); // Existencia de Hidrometro no Po�o. //Integer hidrometroInstaladoPoco = (Integer) retorno[20]; //helper.setMedidoFonteAlternativa(hidrometroInstaladoPoco.shortValue()); Imovel imovelTemp = new Imovel(); imovelTemp.setId(idImovel); imovelTemp = this.getControladorImovel() .pesquisarImovel(imovelTemp.getId()); //*************************************************** // Calcula o Volume Faturado //*************************************************** Integer valorMinimoEsgoto = 0; if (idConta != null && !idConta.equals(0)) { valorMinimoEsgoto = this.repositorioGerencialCadastro.pesquisarConsumoMinimoEsgotoConta(idConta); if (valorMinimoEsgoto == null) { valorMinimoEsgoto = 0; } }else { valorMinimoEsgoto = getControladorMicromedicao().obterConsumoMinimoLigacao(imovelTemp, null); } Integer voFaturado = valorMinimoEsgoto; short icColetaEsgotoExcedente = 2; helper.setIndicadorColetaEsgotoExcedente(icColetaEsgotoExcedente); if(consumoEsgoto > valorMinimoEsgoto){ voFaturado = consumoEsgoto; icColetaEsgotoExcedente = 1; helper.setIndicadorColetaEsgotoExcedente(icColetaEsgotoExcedente); } if(voFaturado == null ){ voFaturado = 0; } helper.setVoFaturado(voFaturado); //*************************************************** helper.setQuantidadeColetaEsgoto(consumoEsgoto); // Setamos o valor do excedente helper.setVolumeExcedente(helper .getQuantidadeColetaEsgoto() - valorMinimoEsgoto); // Caso o valor excedente seja negativo, seramos, pois nao // houve excedente. if (helper.getVolumeExcedente() <= 0) { helper.setVolumeExcedente(0); } //short icColetaEsgotoExcedente = 2; //helper.setIndicadorColetaEsgotoExcedente(icColetaEsgotoExcedente); //if(helper.getVolumeExcedente() > 0){ // icColetaEsgotoExcedente = 1; // helper.setIndicadorColetaEsgotoExcedente(icColetaEsgotoExcedente); //} // Obtemos o percentual de esgoto //System.out.println(retorno[21].getClass().getName()); float percentualEsgoto = 0f; percentualEsgoto = ((Double) retorno[19]).floatValue(); if(percentualEsgoto == 0){ percentualEsgoto = 0.0f; } helper.setPcEsgoto(percentualEsgoto); // percentual coleta BigDecimal pcColeta = (BigDecimal) retorno[21]; //pcColeta = ((Double) retorno[21]).floatValue(); //if(pcColeta == 0){ // pcColeta = 0.0f; //} helper.setPcColeta(pcColeta.floatValue()); // Indicador volume minimo esgoto //Integer icVlMinimo = (Integer) retorno[18]; // helper.setIcVlMinimoEsgoto(icVlMinimo.shortValue()); // helper if (listaSimplificada.contains(helper)) { int posicao = listaSimplificada.indexOf(helper); ResumoColetaEsgotoHelper jaCadastrado = (ResumoColetaEsgotoHelper) listaSimplificada .get(posicao); // Somamos as economias jaCadastrado.setQuantidadeEconomias(jaCadastrado .getQuantidadeEconomias().intValue() + quantidadeEconomia); // Incrementamos as ligacoes jaCadastrado.setQuantidadeLigacoes(jaCadastrado .getQuantidadeLigacoes() + 1); // Acumulamos o consumo de agua jaCadastrado.setQuantidadeColetaEsgoto(jaCadastrado .getQuantidadeColetaEsgoto().intValue() + helper.getQuantidadeColetaEsgoto()); // Acumulamos o consumo Excedente jaCadastrado.setVolumeExcedente(jaCadastrado .getVolumeExcedente().intValue() + helper.getVolumeExcedente().intValue()); // Acumulamos o consumo faturado jaCadastrado.setVoFaturado(jaCadastrado .getVoFaturado().intValue() + helper.getVoFaturado().intValue()); } else { // Incrementamos as ligacoes helper.setQuantidadeLigacoes(helper .getQuantidadeLigacoes() + 1); // Somamos as economias helper.setQuantidadeEconomias(helper .getQuantidadeEconomias().intValue() + quantidadeEconomia); // Ano Mes Referencia. helper.setAnoMesReferencia(anoMesReferencia); listaSimplificada.add(helper); } } } imoveisResumoColetaEsgoto.clear(); imoveisResumoColetaEsgoto = null; for (int i = 0; i < listaSimplificada.size(); i++) { this.repositorioGerencialCadastro.inserirResumoColetaEsgoto( anoMesReferencia, (ResumoColetaEsgotoHelper) listaSimplificada.get(i)); } // -------------------------------------------------------- // // Registrar o fim da execu��o da Unidade de Processamento // // -------------------------------------------------------- getControladorBatch().encerrarUnidadeProcessamentoBatch(null, idUnidadeIniciada, false); } catch (Exception ex) { // Este catch serve para interceptar qualquer exce��o que o processo // batch venha a lan�ar e garantir que a unidade de processamento do // batch ser� atualizada com o erro ocorrido System.out.println(" ERRO NO SETOR " + idSetor + " COLETA ESGOTO - IMOVEL " + idImovel); ex.printStackTrace(); // sessionContext.setRollbackOnly(); getControladorBatch().encerrarUnidadeProcessamentoBatch(ex, idUnidadeIniciada, true); throw new EJBException(ex); } } public void excluirResumoGerencial(Integer anoMesFaturamento, String string, String string2, int idSetor) throws ControladorException { try { this.repositorioGerencialCadastro.excluirResumo(anoMesFaturamento, string, string2, idSetor, false); } catch (ErroRepositorioException e) { new ControladorException("erro.sistema", e); } } public void excluirResumoGerencial ( int anomesreferencia , String resumoGerencial, String resumoCampoAnoMes, String resumoCampoUnidadeProcessamento, int idUnidadeProcessamento ) throws ControladorException{ try { this.repositorioGerencialCadastro.excluirResumoGerencial( anomesreferencia , resumoGerencial, resumoCampoAnoMes, resumoCampoUnidadeProcessamento, idUnidadeProcessamento ); } catch (ErroRepositorioException e) { new ControladorException("erro.sistema", e); } } public void excluirResumoGerencialSQL(Integer anoMesFaturamento, String string, String string2, int idSetor) throws ControladorException { try { this.repositorioGerencialCadastro.excluirResumoSQL(anoMesFaturamento, string, string2, idSetor, false); } catch (ErroRepositorioException e) { new ControladorException("erro.sistema", e); } } public void excluirResumoGerencialC(Integer anoMesFaturamento, String string, String string2, String string3, int idCampo) throws ControladorException { try { this.repositorioGerencialCadastro.excluirResumoGerencialC(anoMesFaturamento, string, string2, string3, idCampo); } catch (ErroRepositorioException e) { new ControladorException("erro.sistema", e); } } /** * M鴯do que gera o resumo das liga絥s e economias por ano * * Gerar Resumo das Liga絥s/Economias Por Ano * * @author Fernando Fontelles Filho * @date 29/04/2010 * [Quantidade de liga絥s cortadas mes e Quantidade de religa絥s no mes]. */ public void gerarResumoLigacoesEconomiasPorAno(int idSetor, int idFuncionalidadeIniciada) throws ControladorException { int idUnidadeIniciada = 0; // ------------------------- // // Registrar o in�o do processamento da Unidade de // Processamento // do Batch // // ------------------------- idUnidadeIniciada = getControladorBatch() .iniciarUnidadeProcessamentoBatch(idFuncionalidadeIniciada, UnidadeProcessamento.SETOR_COMERCIAL, idSetor); //Variᶥis para a pagina磯 da pesquisa de Imovel por Grupo Faturamento // ======================================================================== boolean flagTerminou = false; final int quantidadeRegistros = 10000; int numeroIndice = 0; // ======================================================================== try { Integer anoMesReferencia = getControladorUtil().pesquisarParametrosDoSistema().getAnoMesFaturamento(); //FS0001 - Verificar existencia de dados para o ano/mes referencia informado repositorioGerencialCadastro.excluirResumoSQL( anoMesReferencia, "cadastro.un_resumo_ligacao_economia_ref_2010", "rele_amreferencia", idSetor, false ); while(!flagTerminou){ List imoveisResumoLigacaoEconomias = this.repositorioGerencialCadastro .getImoveisResumoLigacaoEconomiasPorAno(idSetor,numeroIndice, quantidadeRegistros); Imovel imovelObterQtdEconomia = null; // pra cada objeto obter a categoria // caso ja tenha um igual soma a quantidade de economias e a // quantidade de ligacoes for (int i = 0; i < imoveisResumoLigacaoEconomias.size(); i++) { Object obj = imoveisResumoLigacaoEconomias.get(i); if (obj instanceof Object[]) { Object[] retorno = (Object[]) obj; //****************************************************** // Alteracao - CRC937 //****************************************************** Integer quantidadeEconomia = null; Short indicadorCondominio = (Short) retorno[20]; if (indicadorCondominio == 1) { quantidadeEconomia = 1; }else { // Pesquisamos as quantidades de economia do imovel corrente imovelObterQtdEconomia = new Imovel(); imovelObterQtdEconomia.setId((Integer) retorno[0]); quantidadeEconomia = this.getControladorImovel().obterQuantidadeEconomias(imovelObterQtdEconomia); if (quantidadeEconomia == null) { quantidadeEconomia = 0; } } //****************************************************** // Montamos um objeto de resumo, com as informacoes do // retorno ResumoLigacaoEconomiaPorAnoHelper helper = new ResumoLigacaoEconomiaPorAnoHelper( (Integer) retorno[1], // Gerencia Regional (Integer) retorno[2], // Unidade de negocio (Integer) retorno[3], // Localidade (Integer) retorno[4], // Elo (Integer) retorno[5], // Id Setor Comercial (Integer) retorno[6], // Codigo do Setor Comercial (Integer) retorno[7], // Perfil do imovel (Integer) retorno[8],// Situacao da ligacao da agua (Integer) retorno[9],// Situacao da ligacao do esgoto (Integer) retorno[10],// Perfil da ligacao de agua (Integer) retorno[11],// Perfil da ligacao de esgoto (Integer) retorno[12],// Possue hidrometro instalado ? (Integer) retorno[13],// Possue hidrometro instalado no poco ? (Integer) retorno[14],// Possue volume minimo de agua fixado ? (Integer) retorno[15],// Possue volume minimo de esgoto fixado ? (Integer) retorno[16],// Possue poco (Integer) retorno[19]); // Tipo de Tarifa de Consumo Integer idImovel = (Integer) retorno[0]; // Codigo do // imovel que // esta sendo // processado // Pesquisamos a esfera de poder do cliente responsavel helper .setIdEsfera(this.repositorioGerencialCadastro .pesquisarEsferaPoderClienteResponsavelImovel(idImovel)); // Pesquisamos o tipo de cliente responsavel do imovel helper .setIdTipoClienteResponsavel(this.repositorioGerencialCadastro .pesquisarTipoClienteClienteResponsavelImovel(idImovel)); // pesquisando a categoria // [UC0306] - Obtter principal categoria do im�vel Categoria categoria = null; categoria = this.getControladorImovel() .obterPrincipalCategoriaImovel(idImovel); if (categoria != null) { helper.setIdCategoria(categoria.getId()); // Pesquisando a principal subcategoria ImovelSubcategoria subcategoria = this .getControladorImovel() .obterPrincipalSubcategoria(categoria.getId(), idImovel); if (subcategoria != null) { helper.setIdSubCategoria(subcategoria.getComp_id() .getSubcategoria().getId()); } } // Verificamos se a esfera de poder foi encontrada // [FS0002] Verificar existencia de cliente responsavel if (helper.getIdEsfera().equals(0)) { Imovel imovel = new Imovel(); imovel.setId(idImovel); Cliente clienteTemp = this.getControladorImovel() .consultarClienteUsuarioImovel(imovel); if (clienteTemp != null) { helper.setIdEsfera(clienteTemp.getClienteTipo() .getEsferaPoder().getId()); } } if (helper.getIdTipoClienteResponsavel().equals(0)) { Imovel imovel = new Imovel(); imovel.setId(idImovel); Cliente clienteTemp = this.getControladorImovel() .consultarClienteUsuarioImovel(imovel); if (clienteTemp != null) { helper.setIdTipoClienteResponsavel(clienteTemp .getClienteTipo().getId()); } } Boolean incrementaQtdLigacoesNovasAgua = false; Boolean incrementaQtdLigacoesNovasEsgoto = false; if ( retorno[21] != null && Util.recuperaAnoMesDaData( (Date) retorno[21] ).intValue() == this.getControladorUtil().pesquisarParametrosDoSistema().getAnoMesArrecadacao().intValue() ){ //jaCadastrado.setQtdLigacoesNovasAgua(jaCadastrado.getQtdLigacoesNovasAgua() + 1 ); incrementaQtdLigacoesNovasAgua = true; } if ( retorno[22] != null && Util.recuperaAnoMesDaData( (Date) retorno[22] ).intValue() == this.getControladorUtil().pesquisarParametrosDoSistema().getAnoMesArrecadacao().intValue() ){ //jaCadastrado.setQtdLigacoesNovasEsgoto(jaCadastrado.getQtdLigacoesNovasEsgoto() + 1 ); incrementaQtdLigacoesNovasEsgoto = true; } //Atualiza os dados na base, se os dados ja estiverem cadastrados Integer atualizarResumo = this.repositorioGerencialCadastro .atualizarResumoLigacoesEconomiasPorAno(helper.getIdGerenciaRegional(), helper.getIdUnidadeNegocio(), helper.getIdLocalidade(), helper.getIdElo(), helper.getIdSetorComercial(), helper.getCodigoSetorComercial(), helper.getIdPerfilImovel(), helper.getIdEsfera(), helper.getIdTipoClienteResponsavel(), helper.getIdSituacaoLigacaoAgua(), helper.getIdSituacaoLigacaoEsgoto(), helper.getIdCategoria(), helper.getIdSubCategoria(), helper.getIdPerfilLigacaoAgua(), helper.getIdPerfilLigacaoEsgoto(), helper.getIdHidrometro().shortValue(), helper.getIdHidrometroPoco().shortValue(), helper.getIdVolFixadoAgua().shortValue(), helper.getIdVolFixadoEsgoto().shortValue(), helper.getIdPoco().shortValue(), helper.getIdTipoTarifaConsumo(), quantidadeEconomia, anoMesReferencia, incrementaQtdLigacoesNovasAgua, incrementaQtdLigacoesNovasEsgoto ); //Se nenhuma linha foi atualizada 頩nserida uma nova linha na tabela. if (atualizarResumo != null && atualizarResumo == 0){ //Somamos as economias helper.setQtdEconomias(helper.getQtdEconomias() .intValue() + quantidadeEconomia); // Incrementamos as ligacoes helper.setQtdLigacoes(helper.getQtdLigacoes() + 1); if ( retorno[21] != null && Util.recuperaAnoMesDaData( (Date) retorno[21] ).intValue() == this.getControladorUtil().pesquisarParametrosDoSistema() .getAnoMesArrecadacao().intValue() ){ helper.setQtdLigacoesNovasAgua( 1 ); } if ( retorno[22] != null && Util.recuperaAnoMesDaData( (Date) retorno[22] ).intValue() == this.getControladorUtil().pesquisarParametrosDoSistema() .getAnoMesArrecadacao().intValue() ){ helper.setQtdLigacoesNovasEsgoto( 1 ); } this.repositorioGerencialCadastro. inserirResumoLigacoesEconomiasPorAno(anoMesReferencia, helper); } } } /** * Incrementa o n? do indice da p᧩na磯 */ numeroIndice = numeroIndice + quantidadeRegistros; /** * Caso a cole磯 de imoveis retornados for menor que a * quantidade de registros seta a flag indicando que a * pagina磯 terminou. */ if (imoveisResumoLigacaoEconomias == null || imoveisResumoLigacaoEconomias.size() < quantidadeRegistros) { flagTerminou = true; } if (imoveisResumoLigacaoEconomias != null) { imoveisResumoLigacaoEconomias.clear(); imoveisResumoLigacaoEconomias = null; } }//Fim da Paginacao // -------------------------------------------------------- // // Registrar o fim da execu磯 da Unidade de Processamento // // -------------------------------------------------------- getControladorBatch().encerrarUnidadeProcessamentoBatch(null, idUnidadeIniciada, false); } catch (Exception ex) { // Este catch serve para interceptar qualquer exce��o que o processo // batch venha a lan�ar e garantir que a unidade de processamento do // batch ser� atualizada com o erro ocorrido System.out.println(" ERRO NO SETOR" + idSetor); ex.printStackTrace(); // sessionContext.setRollbackOnly(); getControladorBatch().encerrarUnidadeProcessamentoBatch(ex, idUnidadeIniciada, true); throw new EJBException(ex); } } /** * M鴯do que gera o resumo do consumo de agua por ano * *Gerar Resumo do consumo de agua por ano * * @author Fernando Fontelles * @date 24/05/10 * */ public void gerarResumoConsumoAguaPorAno(int idSetor, int idFuncionalidadeIniciada) throws ControladorException { int idUnidadeIniciada = 0; // ------------------------- // // Registrar o in�cio do processamento da Unidade de // Processamento // do Batch // // ------------------------- idUnidadeIniciada = getControladorBatch() .iniciarUnidadeProcessamentoBatch(idFuncionalidadeIniciada, UnidadeProcessamento.SETOR_COMERCIAL, idSetor); Integer anoMesReferencia = null; Integer imovelErro = null; try { List imoveisResumoConsumoAgua = this.repositorioGerencialCadastro .getHistoricosConsumoAguaPorAno(idSetor); List<ResumoConsumoAguaPorAnoHelper> listaSimplificada = new ArrayList(); Imovel imovelObterQtdEconomia = null; //FS0001 - Verificar existencia de dados para o ano/mes referencia informado repositorioGerencialCadastro.excluirResumoSQL( getControladorUtil().pesquisarParametrosDoSistema().getAnoMesFaturamento(), "micromedicao.un_resumo_consumo_agua_ref_2010", "reca_amreferencia", idSetor, false); // pra cada objeto obter a categoria // caso ja tenha um igual soma a quantidade de economias e a // quantidade de ligacoes for (int i = 0; i < imoveisResumoConsumoAgua.size(); i++) { Object obj = imoveisResumoConsumoAgua.get(i); //System.out.println( i + " de " + imoveisResumoConsumoAgua.size() + " do Setor " + idSetor ); if (obj instanceof Object[]) { Object[] retorno = (Object[]) obj; // Montamos um objeto de resumo, com as informacoes do // retorno ResumoConsumoAguaPorAnoHelper helper = new ResumoConsumoAguaPorAnoHelper( (Integer) retorno[1], // Gerencia Regional (Integer) retorno[2], // Unidade de negocio (Integer) retorno[3], // Localidade (Integer) retorno[4], // Elo (Integer) retorno[5], // Id Setor Comercial // (Integer) retorno[6], // id Rota // (Integer) retorno[7], // Id Quadra (Integer) retorno[6], // Codigo do Setor Comercial // (Integer) retorno[9], // Numero da quadra (Integer) retorno[7],// Perfil do imovel (Integer) retorno[8],// Situacao da ligacao da agua (Integer) retorno[9],// Situacao da ligacao do esgoto (Integer) retorno[10],// Perfil da ligacao de agua (Integer) retorno[11],// Perfil da ligacao de esgoto (Integer) retorno[12] // Consumo tipo ); Integer idImovel = (Integer) retorno[0]; // Codigo do imovel que esta sendo processado imovelErro = idImovel; Integer idConta = (Integer) retorno[17]; // C?o da conta que esta sendo processada Conta conta = new Conta(); conta.setId( idConta ); // Quantidade de Economias Integer quantidadeEconomia = 0; // Verificamos se existe economias pela conta if ( idConta != null ){ Collection<Categoria> colQuantEco = this.getControladorImovel().obterQuantidadeEconomiasContaCategoria( conta ); if ( colQuantEco != null && colQuantEco.size() > 0 ){ Iterator iteQuanEco = colQuantEco.iterator(); while ( iteQuanEco.hasNext() ){ Categoria catTemp = (Categoria) iteQuanEco.next(); quantidadeEconomia += catTemp.getQuantidadeEconomiasCategoria(); } } } // Caso n㯠obtenha as quantidades pela conta, pesquisamos as quantidades de economia do imovel corrente if ( quantidadeEconomia == 0 ){ imovelObterQtdEconomia = new Imovel(); imovelObterQtdEconomia.setId((Integer) retorno[0]); quantidadeEconomia = this.getControladorImovel() .obterQuantidadeEconomias(imovelObterQtdEconomia); if (quantidadeEconomia == null) { quantidadeEconomia = 0; } } // Consumo de Agua Integer consumoAgua = null; // Verificamos se o consumo de Agua esta na conta ou no consumoHistorico if( idConta != null ){ consumoAgua = (Integer) retorno[18]; } else { consumoAgua= (Integer) retorno[13]; } helper.setQuantidadeConsumoAgua( consumoAgua ); // [UC0307] - Obter Indicador de Exist�ncia de Hidr�metro String indicadorHidrometroString = new Integer( getControladorImovel().obterIndicadorExistenciaHidrometroImovel(idImovel)).toString(); Integer indicadorHidrometro = new Integer(indicadorHidrometroString); // Caso indicador de hidr�metro esteja nulo // Seta 2(dois) = N�O no indicador de // hidr�metro if (indicadorHidrometro == null) { indicadorHidrometro = 2; } helper.setIdHidrometro( indicadorHidrometro ); // Pesquisamos a esfera de poder do cliente responsavel helper .setIdEsferaPoder(this.repositorioGerencialCadastro .pesquisarEsferaPoderClienteResponsavelImovel(idImovel)); // Pesquisamos o tipo de cliente responsavel do imovel helper .setIdClienteTipo(this.repositorioGerencialCadastro .pesquisarTipoClienteClienteResponsavelImovel(idImovel)); // pesquisando a categoria Categoria categoria = null; Categoria categoriaConta = null; // [UC0632] - Obter Principal Categoria da Conta // Verificamos se existe conta para este imovel if ( idConta != null ){ categoriaConta = this.getControladorImovel().obterPrincipalCategoriaConta( idConta ); } // Pesquisamos a categoria do imovel Categoria categoriaImovel = this.getControladorImovel() .obterPrincipalCategoriaImovel(idImovel); // Verificamos se devemos guardar a categoria da conta ou do imovel if ( categoriaConta == null ){ categoria = categoriaImovel; } else { categoria = categoriaConta; } // Pesquisamos a subcategoria if (categoria != null) { helper.setIdCategoria(categoria.getId()); // Pesquisando a principal subcategoria // Lembrando que a categoria usada para pesquisar a subcategoria e sempre a do imovel ImovelSubcategoria subcategoria = this .getControladorImovel() .obterPrincipalSubcategoria(categoriaImovel.getId(), idImovel); helper.setIdSubCategoria(subcategoria.getComp_id() .getSubcategoria().getId()); } // Verificamos se a esfera de poder foi encontrada // [FS0002] Verificar existencia de cliente responsavel if (helper.getIdEsferaPoder().equals(0)) { Imovel imovel = new Imovel(); imovel.setId(idImovel); Cliente clienteTemp = this.getControladorImovel() .consultarClienteUsuarioImovel(imovel); if (clienteTemp != null) { helper.setIdEsferaPoder(clienteTemp .getClienteTipo().getEsferaPoder().getId()); } } if (helper.getIdClienteTipo().equals(0)) { Imovel imovel = new Imovel(); imovel.setId(idImovel); Cliente clienteTemp = this.getControladorImovel() .consultarClienteUsuarioImovel(imovel); if (clienteTemp != null) { helper.setIdClienteTipo(clienteTemp .getClienteTipo().getId()); } } // Calculamos o consumo excedente // [UC0105] - Obter consumo minimo ligacao // Valor minimo de consumo de agua anoMesReferencia = (Integer) retorno[15]; Imovel imovelTemp = new Imovel(); imovelTemp.setId(idImovel); imovelTemp = this.getControladorImovel() .pesquisarImovel(imovelTemp.getId()); Integer valorMinimoAgua = getControladorMicromedicao() .obterConsumoMinimoLigacao(imovelTemp, null); // Setamos o valor do excedente helper.setQuantidadeConsumoAguaExcedente(helper .getQuantidadeConsumoAgua() - valorMinimoAgua); // Caso o valor excedente seja negativo, seramos, pois nao // houve excedente. if (helper.getQuantidadeConsumoAguaExcedente() <= 0) { helper.setQuantidadeConsumoAguaExcedente(0); } // Marcamos o helper como possuindo ou n�o consumo excedente helper.setIdVolumeExcedente(helper .getQuantidadeConsumoAguaExcedente() > 0 ? 1 : 2); //********************************************************** // Verificamos as Ligacoes Faturadas //********************************************************** if (idConta != null) { helper.setIndicadorLigacaoFaturada(1); }else { helper.setIndicadorLigacaoFaturada(2); } //********************************************************** // se ja existe um objeto igual a ele entao soma as // ligacoes e as economias no ja existente // um objeto eh igual ao outro se ele tem todos as // informacos iguals ( excecao // quantidadeEconomia, quantidadeLigacoes ) if (listaSimplificada.contains(helper)) { int posicao = listaSimplificada.indexOf(helper); ResumoConsumoAguaPorAnoHelper jaCadastrado = (ResumoConsumoAguaPorAnoHelper) listaSimplificada .get(posicao); // Somamos as economias jaCadastrado.setQuantidadeEconomias(jaCadastrado .getQuantidadeEconomias().intValue() + quantidadeEconomia); // Incrementamos as ligacoes jaCadastrado.setQuantidadeLigacoes(jaCadastrado .getQuantidadeLigacoes() + 1); // Acumulamos o consumo de agua jaCadastrado.setQuantidadeConsumoAgua(jaCadastrado .getQuantidadeConsumoAgua().intValue() + helper.getQuantidadeConsumoAgua()); // Acumulamos o consumo Excedente jaCadastrado.setQuantidadeConsumoAguaExcedente( jaCadastrado.getQuantidadeConsumoAguaExcedente() + helper.getQuantidadeConsumoAguaExcedente() ); // Guardamos o volume faturado, caso este seja maior que o m�mo if ( helper.getQuantidadeConsumoAgua() > valorMinimoAgua ){ jaCadastrado.setVolumeFaturado( jaCadastrado.getVolumeFaturado() + helper.getQuantidadeConsumoAgua() ); } else { jaCadastrado.setVolumeFaturado( jaCadastrado.getVolumeFaturado() + valorMinimoAgua ); } } else { // Somamos as economias helper.setQuantidadeEconomias(helper .getQuantidadeEconomias().intValue() + quantidadeEconomia); // Incrementamos as ligacoes helper.setQuantidadeLigacoes(helper .getQuantidadeLigacoes() + 1); // Guardamos o volume faturado, caso este seja maior que o m�mo if ( helper.getQuantidadeConsumoAgua() > valorMinimoAgua ){ helper.setVolumeFaturado( helper.getQuantidadeConsumoAgua() ); } else { helper.setVolumeFaturado( valorMinimoAgua ); } listaSimplificada.add(helper); } } } for (int i = 0; i < listaSimplificada.size(); i++) { this.repositorioGerencialCadastro.inserirResumoConsumoAguaPorAno( anoMesReferencia, (ResumoConsumoAguaPorAnoHelper) listaSimplificada.get(i)); } // -------------------------------------------------------- // // Registrar o fim da execu��o da Unidade de Processamento // // -------------------------------------------------------- getControladorBatch().encerrarUnidadeProcessamentoBatch(null, idUnidadeIniciada, false); } catch (Exception ex) { // Este catch serve para interceptar qualquer exce��o que o processo // batch venha a lan�ar e garantir que a unidade de processamento do // batch ser� atualizada com o erro ocorrido System.out.println(" ERRO NO SETOR " + idSetor); System.out.println("Imovel que deu erro: "+ imovelErro); ex.printStackTrace(); sessionContext.setRollbackOnly(); getControladorBatch().encerrarUnidadeProcessamentoBatch(ex, idUnidadeIniciada, true); throw new EJBException(ex); } } /** * M鴯do que gera o resumo do coleta esgoto Por Ano * * Gerar Resumo do coleta esgoto Por Ano * * @author Fernando Fontelles Filho * @date 15/06/2010 * */ public void gerarResumoColetaEsgotoPorAno(int idSetor, int idFuncionalidadeIniciada) throws ControladorException { int idUnidadeIniciada = 0; // ------------------------- // // Registrar o in�cio do processamento da Unidade de // Processamento // do Batch // // ------------------------- idUnidadeIniciada = getControladorBatch() .iniciarUnidadeProcessamentoBatch(idFuncionalidadeIniciada, UnidadeProcessamento.SETOR_COMERCIAL, idSetor); Integer anoMesReferencia = null; Integer idImovel = null; try { Integer anoMesFaturamento = getControladorUtil(). pesquisarParametrosDoSistema().getAnoMesFaturamento(); List imoveisResumoColetaEsgoto = this.repositorioGerencialCadastro .getHistoricosColetaEsgotoPorAno(idSetor, anoMesFaturamento); List<ResumoColetaEsgotoPorAnoHelper> listaSimplificada = new ArrayList(); //List<UnResumoColetaEsgoto> listaResumoConsumoAgua = new ArrayList(); Imovel imovelObterQtdEconomia = null; //FS0001 - Verificar existencia de dados para o ano/mes referencia informado repositorioGerencialCadastro.excluirResumoSQL( getControladorUtil().pesquisarParametrosDoSistema().getAnoMesFaturamento(), "micromedicao.un_resumo_coleta_esgoto_ref_2010", "rece_amreferencia", idSetor, false ); // pra cada objeto obter a categoria // caso ja tenha um igual soma a quantidade de economias e a // quantidade de ligacoes for (int i = 0; i < imoveisResumoColetaEsgoto.size(); i++) { Object obj = imoveisResumoColetaEsgoto.get(i); if (obj instanceof Object[]) { Object[] retorno = (Object[]) obj; // Montamos um objeto de resumo, com as informacoes do // retorno ResumoColetaEsgotoPorAnoHelper helper = new ResumoColetaEsgotoPorAnoHelper( (Integer) retorno[1], // Gerencia Regional (Integer) retorno[2], // Unidade de negocio (Integer) retorno[3], // Localidade (Integer) retorno[4], // Elo (Integer) retorno[5], // Id Setor Comercial // (Integer) retorno[6], // id Rota // (Integer) retorno[7], // Id Quadra (Integer) retorno[6], // Codigo do Setor Comercial // (Integer) retorno[9], // Numero da quadra (Integer) retorno[7],// Perfil do imovel (Integer) retorno[8],// Situacao da ligacao da agua (Integer) retorno[9],// Situacao da ligacao do esgoto (Integer) retorno[10],// Perfil da ligacao de agua (Integer) retorno[11],// Perfil da ligacao de esgoto (Integer) retorno[12] // Consumo tipo // (Short) retorno[24] //codigo rota ); // Imovel idImovel = (Integer) retorno[0]; // Id da Conta Integer idConta = ( Integer ) retorno[19]; Conta conta = new Conta(); conta.setId( idConta ); FiltroConta filtroConta = new FiltroConta(); filtroConta.adicionarParametro( new ParametroSimples(FiltroConta.ID, idConta)); Collection contas = Fachada.getInstancia().pesquisar(filtroConta, Conta.class.getName()); Integer motivoSituacaoFaturamento = null; if ( contas != null && !contas.isEmpty() ){ conta = (Conta)Util.retonarObjetoDeColecao(contas); motivoSituacaoFaturamento = this. repositorioGerencialCadastro.getMotivoSituacaoFaturamento( idImovel, conta.getReferencia()); } //Motivo Situacao Faturamento helper.setMotivoFaturamentoSituacao(motivoSituacaoFaturamento); //Indicador de Faturamento helper.setIndicadorFaturamento((Short)retorno[21]); //Situa磯 de Faturamento helper.setFaturamentoSituacao((Integer)retorno[22]); // Quantidade de Economias Integer quantidadeEconomia = 0; // Verificamos se existe economias pela conta if ( idConta != null && !idConta.equals(0)){ Collection<Categoria> colQuantEco = this.getControladorImovel().obterQuantidadeEconomiasContaCategoria( conta ); if ( colQuantEco != null && colQuantEco.size() > 0 ){ Iterator iteQuanEco = colQuantEco.iterator(); while ( iteQuanEco.hasNext() ){ Categoria catTemp = (Categoria) iteQuanEco.next(); quantidadeEconomia += catTemp.getQuantidadeEconomiasCategoria(); } } } // Caso n㯠obtenha as quantidades pela conta, pesquisamos as quantidades de economia do imovel corrente if ( quantidadeEconomia == 0 ){ imovelObterQtdEconomia = new Imovel(); imovelObterQtdEconomia.setId((Integer) retorno[0]); quantidadeEconomia = this.getControladorImovel() .obterQuantidadeEconomias(imovelObterQtdEconomia); if (quantidadeEconomia == null) { quantidadeEconomia = 0; } } // Consumo de Esgoto Integer consumoEsgoto = null; // Verificamos se o consumo de esgoto esta na conta ou no consumoHistorico if( idConta != null && !idConta.equals(0)){ consumoEsgoto = (Integer) retorno[20]; } else { consumoEsgoto = (Integer) retorno[13]; } // Pesquisamos a esfera de poder do cliente responsavel helper.setIdEsferaPoder( this.repositorioGerencialCadastro .pesquisarEsferaPoderClienteResponsavelImovel(idImovel)); // Pesquisamos o tipo de cliente responsavel do imovel helper.setIdClienteTipo( this.repositorioGerencialCadastro .pesquisarTipoClienteClienteResponsavelImovel(idImovel)); // pesquisando a categoria Categoria categoria = null; Categoria categoriaConta = null; // [UC0632] - Obter Principal Categoria da Conta // Verificamos se existe conta para este imovel if ( idConta != null && !idConta.equals(0)){ categoriaConta = this.getControladorImovel().obterPrincipalCategoriaConta( idConta ); } // Pesquisamos a categoria do imovel Categoria categoriaImovel = this.getControladorImovel() .obterPrincipalCategoriaImovel(idImovel); // Verificamos se devemos guardar a categoria da conta ou do imovel if ( categoriaConta == null ){ categoria = categoriaImovel; } else { categoria = categoriaConta; } // Pesquisamos a subcategoria if (categoria != null) { helper.setIdCategoria(categoria.getId()); // Pesquisando a principal subcategoria // Lembrando que a categoria usada para pesquisar a subcategoria e sempre a do imovel ImovelSubcategoria subcategoria = this .getControladorImovel() .obterPrincipalSubcategoria(categoriaImovel.getId(), idImovel); helper.setIdSubCategoria(subcategoria.getComp_id() .getSubcategoria().getId()); } // Verificamos se a esfera de poder foi encontrada // [FS0002] Verificar existencia de cliente responsavel if (helper.getIdEsferaPoder().equals(0)) { Imovel imovel = new Imovel(); imovel.setId(idImovel); Cliente clienteTemp = this.getControladorImovel() .consultarClienteUsuarioImovel(imovel); if (clienteTemp != null) { helper.setIdEsferaPoder(clienteTemp .getClienteTipo().getEsferaPoder().getId()); } } if (helper.getIdClienteTipo().equals(0)) { Imovel imovel = new Imovel(); imovel.setId(idImovel); Cliente clienteTemp = this.getControladorImovel() .consultarClienteUsuarioImovel(imovel); if (clienteTemp != null) { helper.setIdClienteTipo(clienteTemp .getClienteTipo().getId()); } } // Ano Mes Referencia. anoMesReferencia = (Integer) retorno[14]; // [UC0307] - Obter Indicador de Exist�ncia de Hidr�metro String indicadorHidrometroString = new Integer( getControladorImovel().obterIndicadorExistenciaHidrometroImovel(idImovel)).toString(); Short indicadorHidrometro = new Short(indicadorHidrometroString); // Caso indicador de hidrometro esteja nulo // Seta 2(dois) = NAO no indicador de // hidrometro if (indicadorHidrometro == null) { indicadorHidrometro = new Short("2"); } helper.setIndicadorHidrometro(indicadorHidrometro); // Verificamos a existencia de poco no imovel Integer idPoco = this.repositorioGerencialCadastro .verificarExistenciaPoco(idImovel); if(idPoco == null){ idPoco = 0; } Imovel imovelTemp = new Imovel(); imovelTemp.setId(idImovel); imovelTemp = this.getControladorImovel() .pesquisarImovel(imovelTemp.getId()); //*************************************************** // Calcula o Volume Faturado //*************************************************** Integer valorMinimoEsgoto = 0; if (idConta != null && !idConta.equals(0)) { valorMinimoEsgoto = this.repositorioGerencialCadastro.pesquisarConsumoMinimoEsgotoConta(idConta); if (valorMinimoEsgoto == null) { valorMinimoEsgoto = 0; } }else { valorMinimoEsgoto = getControladorMicromedicao().obterConsumoMinimoLigacao(imovelTemp, null); } Integer voFaturado = valorMinimoEsgoto; short icColetaEsgotoExcedente = 2; helper.setIndicadorColetaEsgotoExcedente(icColetaEsgotoExcedente); if(consumoEsgoto > valorMinimoEsgoto){ voFaturado = consumoEsgoto; icColetaEsgotoExcedente = 1; helper.setIndicadorColetaEsgotoExcedente(icColetaEsgotoExcedente); } if(voFaturado == null ){ voFaturado = 0; } helper.setVoFaturado(voFaturado); //*************************************************** helper.setQuantidadeColetaEsgoto(consumoEsgoto); // Setamos o valor do excedente helper.setVolumeExcedente(helper .getQuantidadeColetaEsgoto() - valorMinimoEsgoto); // Caso o valor excedente seja negativo, seramos, pois nao // houve excedente. if (helper.getVolumeExcedente() <= 0) { helper.setVolumeExcedente(0); } float percentualEsgoto = 0f; percentualEsgoto = ((Double) retorno[16]).floatValue(); if(percentualEsgoto == 0){ percentualEsgoto = 0.0f; } helper.setPcEsgoto(percentualEsgoto); // percentual coleta BigDecimal pcColeta = (BigDecimal) retorno[18]; helper.setPcColeta(pcColeta.floatValue()); // helper if (listaSimplificada.contains(helper)) { int posicao = listaSimplificada.indexOf(helper); ResumoColetaEsgotoPorAnoHelper jaCadastrado = (ResumoColetaEsgotoPorAnoHelper) listaSimplificada.get(posicao); // Somamos as economias jaCadastrado.setQuantidadeEconomias(jaCadastrado .getQuantidadeEconomias().intValue() + quantidadeEconomia); // Incrementamos as ligacoes jaCadastrado.setQuantidadeLigacoes(jaCadastrado .getQuantidadeLigacoes() + 1); // Acumulamos o consumo de agua jaCadastrado.setQuantidadeColetaEsgoto(jaCadastrado .getQuantidadeColetaEsgoto().intValue() + helper.getQuantidadeColetaEsgoto()); // Acumulamos o consumo Excedente jaCadastrado.setVolumeExcedente(jaCadastrado .getVolumeExcedente().intValue() + helper.getVolumeExcedente().intValue()); // Acumulamos o consumo faturado jaCadastrado.setVoFaturado(jaCadastrado .getVoFaturado().intValue() + helper.getVoFaturado().intValue()); } else { // Incrementamos as ligacoes helper.setQuantidadeLigacoes(helper .getQuantidadeLigacoes() + 1); // Somamos as economias helper.setQuantidadeEconomias(helper .getQuantidadeEconomias().intValue() + quantidadeEconomia); // Ano Mes Referencia. helper.setAnoMesReferencia(anoMesReferencia); listaSimplificada.add(helper); } } } imoveisResumoColetaEsgoto.clear(); imoveisResumoColetaEsgoto = null; for (int i = 0; i < listaSimplificada.size(); i++) { this.repositorioGerencialCadastro.inserirResumoColetaEsgotoPorAno( anoMesReferencia, (ResumoColetaEsgotoPorAnoHelper) listaSimplificada.get(i)); } // -------------------------------------------------------- // // Registrar o fim da execucao da Unidade de Processamento // // -------------------------------------------------------- getControladorBatch().encerrarUnidadeProcessamentoBatch(null, idUnidadeIniciada, false); } catch (Exception ex) { // Este catch serve para interceptar qualquer excecaoo que o processo // batch venha a lancar e garantir que a unidade de processamento do // batch sera atualizada com o erro ocorrido System.out.println(" ERRO NO SETOR " + idSetor + " COLETA ESGOTO POR ANO - IMOVEL " + idImovel); ex.printStackTrace(); // sessionContext.setRollbackOnly(); getControladorBatch().encerrarUnidadeProcessamentoBatch(ex, idUnidadeIniciada, true); throw new EJBException(ex); } } /** * M鴯do que gera o resumo do Parcelamento PorAno * * Gerar Resumo do Parcelamento Por Ano * * @author Fernando Fontelles * @date 21/06/2010 * */ public void gerarResumoParcelamentoPorAno(int idLocalidade, int idFuncionalidadeIniciada, int anoMes) throws ControladorException { int idUnidadeIniciada = 0; // ------------------------- // // Registrar o in�cio do processamento da Unidade de // Processamento // do Batch // // ------------------------- idUnidadeIniciada = getControladorBatch() .iniciarUnidadeProcessamentoBatch(idFuncionalidadeIniciada, UnidadeProcessamento.LOCALIDADE, idLocalidade); try { System.out.println("INICIO DO RESUMO PARCELAMENTO POR ANO LOCALIDADE "+idLocalidade); List imoveisResumoParcelamento = this.repositorioGerencialCadastro .getImoveisResumoParcelamentoPorAno(idLocalidade, anoMes); List<ResumoParcelamentoPorAnoHelper> listaSimplificadaParcelamento = new ArrayList(); List<UnResumoParcelamentoPorAno> listaResumoParcelamento = new ArrayList(); UnResumoParcelamentoPorAno resumoParcelamento = null; //FS0001 - Verificar existencia de dados para o ano/mes referencia informado this.repositorioGerencialCadastro.excluirResumoGerencialC( getControladorUtil().pesquisarParametrosDoSistema().getAnoMesFaturamento(), "cobranca.un_resumo_parcelamento_ref_2010", "repa_amreferencia","loca_id", idLocalidade ); // caso ja tenha um igual soma as quantidades for (int i = 0; i < imoveisResumoParcelamento.size(); i++) { Object obj = imoveisResumoParcelamento.get(i); if (obj instanceof Object[]) { Object[] retorno = (Object[]) obj; // Pesquisamos as quantidades do imovel corrente resumoParcelamento = new UnResumoParcelamentoPorAno(); resumoParcelamento.setId((Integer) retorno[0]); // Contas Integer quantidadeContas = this.repositorioGerencialCadastro .pesquisarObterQuantidadeContas((Integer) retorno[0]); if (quantidadeContas == null) { quantidadeContas = 0; } // Guias Integer quantidadeGuias = this.repositorioGerencialCadastro .pesquisarObterQuantidadeGuias((Integer) retorno[0]); if (quantidadeGuias == null) { quantidadeGuias = 0; } // Quantidade Servicos Indiretos Short quantidadeServicosIndiretos = this.repositorioGerencialCadastro .pesquisarObterQuantidadeServicosIndiretos((Integer) retorno[0]); if (quantidadeServicosIndiretos == null) { quantidadeServicosIndiretos = 0; } // Valor das Contas BigDecimal valorContas = (BigDecimal) retorno[13]; if (valorContas == null) { valorContas = new BigDecimal(0); } // Valor Guias Pagmto BigDecimal valorGuias = (BigDecimal) retorno[14]; if (valorGuias == null) { valorGuias = new BigDecimal(0); } // Valor Servicos Indiretos BigDecimal valorServicosIndiretos = this.repositorioGerencialCadastro .pesquisarObterValorServicosIndiretos( (Integer) retorno[0], " debitoacobrar.lancamentoItemContabil.id not in (2,3)"); if (valorServicosIndiretos == null) { valorServicosIndiretos = new BigDecimal(0); } // Valor creditos BigDecimal valorCreditos = (BigDecimal) retorno[15]; if (valorCreditos == null) { valorCreditos = new BigDecimal(0); } // Valor Servicos Indiretos BigDecimal valorAcrescimoImpontualidade = (BigDecimal) retorno[22]; if(valorAcrescimoImpontualidade == null){ valorAcrescimoImpontualidade = new BigDecimal(0); } if (valorAcrescimoImpontualidade == null) { valorAcrescimoImpontualidade = new BigDecimal(0); } // Valor Sancoes BigDecimal valorSancoes = this.repositorioGerencialCadastro .pesquisarObterValorServicosIndiretos( (Integer) retorno[0], " debitoacobrar.lancamentoItemContabil.id = 3"); if (valorSancoes == null) { valorSancoes = new BigDecimal(0); } // Valor creditos BigDecimal valorDescontoAcrescimo = (BigDecimal) retorno[16]; if (valorDescontoAcrescimo == null) { valorDescontoAcrescimo = new BigDecimal(0); } // Valor Desconto Inatividade BigDecimal valorDescontoInatividade = (BigDecimal) retorno[17]; if (valorDescontoInatividade == null) { valorDescontoInatividade = new BigDecimal(0); } // Valor Desconto Antiguidade BigDecimal valorDescontoAntiguidade = (BigDecimal) retorno[18]; if (valorDescontoAntiguidade == null) { valorDescontoAntiguidade = new BigDecimal(0); } // Valor total Parcelamento BigDecimal valorTotalParcelamento = (BigDecimal) retorno[19]; if (valorTotalParcelamento == null) { valorTotalParcelamento = new BigDecimal(0); } // Ano Mes Referencia Integer anoMesRef = (Integer) retorno[20]; // valor debito a cobrar Total BigDecimal valorDebitoACobrarTotal = (BigDecimal) retorno[21]; if (valorDebitoACobrarTotal == null) { valorDebitoACobrarTotal = new BigDecimal(0); } // valor debito a cobrar Acrescimos BigDecimal valorDebitoACobrarAcrescimos = this.repositorioGerencialCadastro .pesquisarObterValorServicosIndiretos( (Integer) retorno[0], " debitoacobrar.lancamentoItemContabil.id = 2"); if (valorDebitoACobrarAcrescimos == null) { valorDebitoACobrarAcrescimos = new BigDecimal(0); } // valor debito a cobrar Acrescimos BigDecimal valorDebitoACobrarReligSancoes = new BigDecimal(0); //(BigDecimal) retorno[0]; if (valorDebitoACobrarReligSancoes == null) { valorDebitoACobrarReligSancoes = new BigDecimal(0); } // valor debitos a cobrar parcelamentos BigDecimal valorDebitoACobrarParcelamentos = (BigDecimal) retorno[23]; if (valorDebitoACobrarParcelamentos == null){ valorDebitoACobrarParcelamentos = new BigDecimal(0); } // valor entrada BigDecimal valorEntrada = (BigDecimal) retorno[24]; if (valorEntrada == null){ valorEntrada = new BigDecimal(0); } // valor juros parcelamento BigDecimal valorJurosParcelamento = (BigDecimal) retorno[25]; if (valorJurosParcelamento == null) { valorJurosParcelamento = new BigDecimal(0); } // quantidade total de parcelas Short quantidadeTotalParcelas = (Short) retorno[26]; if (quantidadeTotalParcelas == null){ quantidadeTotalParcelas = 0; } Integer consumoTarifa = (Integer) retorno[27]; if(consumoTarifa == null){ consumoTarifa = 0; } Short numeroParcelamentoConsecutivos = (Short) retorno[28]; if(numeroParcelamentoConsecutivos == null){ numeroParcelamentoConsecutivos = new Short("0"); } // pesquisando a categoria // [UC0306] - Obtter principal categoria do im�vel Integer idImovel = (Integer) retorno[1]; // Codigo do // [UC0307] - Obter Indicador de Exist�ncia de Hidr�metro String indicadorHidrometroString = new Integer( getControladorImovel().obterIndicadorExistenciaHidrometroImovel(idImovel)).toString(); Short indicadorHidrometro = new Short(indicadorHidrometroString); // Caso indicador de hidr�metro esteja nulo // Seta 2(dois) = N�O no indicador de // hidr�metro if (indicadorHidrometro == null) { indicadorHidrometro = new Short("2"); } // Montamos um objeto de resumo, com as informacoes do // retorno ResumoParcelamentoPorAnoHelper helper = new ResumoParcelamentoPorAnoHelper( (Integer) retorno[2], // Gerencia Regional (Integer) retorno[3], // Unidade de negocio (Integer) retorno[4], // Elo (Integer) retorno[5], // Localidade (Integer) retorno[6], // Id Setor Comercial // (Integer) retorno[7], // id Rota // (Integer) retorno[8], // Id Quadra (Integer) retorno[7], // Codigo do Setor Comercial // (Integer) retorno[8], // Numero da quadra (Integer) retorno[8], // Perfil do imovel (Integer) retorno[9], // Situacao da ligacao da // agua (Integer) retorno[10], // Situacao da ligacao do // esgoto (Integer) retorno[11], // Perfil ligacao agua (Integer) retorno[12], // Perfil ligacao esgoto (Integer) retorno[27], // Tarifa Consumo indicadorHidrometro, // Indicador Hidrometro numeroParcelamentoConsecutivos // Numero Parcelamentos Consecutivos // (Short) retorno[32] );//codigo rota // Pesquisamos a esfera de poder do cliente responsavel helper .setIdEsfera(this.repositorioGerencialCadastro .pesquisarEsferaPoderClienteResponsavelImovel(idImovel)); // Pesquisamos o tipo de cliente responsavel do imovel helper .setIdTipoClienteResponsavel(this.repositorioGerencialCadastro .pesquisarTipoClienteClienteResponsavelImovel(idImovel)); Categoria categoria = null; categoria = this.getControladorImovel() .obterPrincipalCategoriaImovel(idImovel); if (categoria != null) { helper.setIdCategoria(categoria.getId()); // Pesquisando a principal subcategoria ImovelSubcategoria subcategoria = this .getControladorImovel() .obterPrincipalSubcategoria(categoria.getId(), idImovel); if (subcategoria != null) { helper.setIdSubCategoria(subcategoria.getComp_id() .getSubcategoria().getId()); } } // Verificamos se a esfera de poder foi encontrada // [FS0002] Verificar existencia de cliente responsavel if (helper.getIdEsfera().equals(0)) { Imovel imovel = new Imovel(); imovel.setId(idImovel); Cliente clienteTemp = this.getControladorImovel() .consultarClienteUsuarioImovel(imovel); if (clienteTemp != null) { helper.setIdEsfera(clienteTemp.getClienteTipo() .getEsferaPoder().getId()); } } if (helper.getIdTipoClienteResponsavel().equals(0)) { Imovel imovel = new Imovel(); imovel.setId(idImovel); Cliente clienteTemp = this.getControladorImovel() .consultarClienteUsuarioImovel(imovel); if (clienteTemp != null) { helper.setIdTipoClienteResponsavel(clienteTemp .getClienteTipo().getId()); } } // se ja existe um objeto igual a ele entao soma os // valores e as quantidades ja existentes. // um objeto eh igual ao outro se ele tem todos as // informacos iguals if (listaSimplificadaParcelamento.contains(helper)) { int posicao = listaSimplificadaParcelamento .indexOf(helper); ResumoParcelamentoPorAnoHelper jaCadastrado = (ResumoParcelamentoPorAnoHelper) listaSimplificadaParcelamento .get(posicao); // Somatorios // Contas jaCadastrado.setQtdContas(jaCadastrado.getQtdContas() + quantidadeContas); // Guias jaCadastrado.setQtdGuias(jaCadastrado.getQtdGuias() + quantidadeGuias); // Servicos Indiretos jaCadastrado .setQtdServicosIndiretos((short) (jaCadastrado .getQtdServicosIndiretos() + quantidadeServicosIndiretos)); // qtdParcelamentos Short p = (((Integer) (jaCadastrado .getQtdParcelamento() + 1)).shortValue()); jaCadastrado.setQtdParcelamento(p); // Valor Contas jaCadastrado.setVlContas(jaCadastrado.getVlContas() .add(valorContas)); // Valor Guias jaCadastrado.setVlGuias(jaCadastrado.getVlGuias().add( valorGuias)); // Valor Servicos Indiretos jaCadastrado.setVlServicosIndiretos(jaCadastrado .getVlServicosIndiretos().add(valorGuias)); // Valor Creditos jaCadastrado.setVlCreditoRealizar(jaCadastrado .getVlCreditoRealizar().add(valorCreditos)); // Valor Acrescimo Impontualidade jaCadastrado.setVlAcrescimoImpontualidade(jaCadastrado .getVlAcrescimoImpontualidade().add( valorAcrescimoImpontualidade)); // Valor Sancoes jaCadastrado.setVlSancoes(jaCadastrado.getVlSancoes() .add(valorSancoes)); // Valor Desconto Acrescimo jaCadastrado.setVlDescontoAcrescimo(jaCadastrado .getVlDescontoAcrescimo().add( valorDescontoAcrescimo)); // Valor Desconto Inatividade jaCadastrado.setVlDescontoInatividade(jaCadastrado .getVlDescontoInatividade().add( valorDescontoInatividade)); // Valor Desconto Antiguidade jaCadastrado.setVlDescontoAntiguidade(jaCadastrado .getVlDescontoAntiguidade().add( valorDescontoAntiguidade)); // Valor Total Parcelamento jaCadastrado.setVlTotalParcelamento(jaCadastrado .getVlTotalParcelamento().add( valorTotalParcelamento)); // AnoMesReferencia jaCadastrado.setAnoMesReferencia(jaCadastrado .getAnoMesReferencia()); // valor debitos a cobrar total jaCadastrado.setVlDebitosACobrarTotal(jaCadastrado .getVlDebitosACobrarTotal().add(valorDebitoACobrarTotal)); // valor debitos a cobrar acrescimos jaCadastrado.setVlDebitosACobrarAcrescimos(jaCadastrado .getVlDebitosACobrarAcrescimos().add(valorDebitoACobrarAcrescimos)); // valor debitos a cobrar religsancoes jaCadastrado.setVlDebitosACobrarReligSancoes(jaCadastrado .getVlDebitosACobrarReligSancoes().add(valorDebitoACobrarReligSancoes)); // valor debitos a cobrar parcelamentos jaCadastrado.setVlDebitosACobrarParcelamentos(jaCadastrado .getVlDebitosACobrarParcelamentos().add(valorDebitoACobrarParcelamentos)); // valor entrada jaCadastrado.setVlEntrada(jaCadastrado .getVlEntrada().add(valorEntrada)); // valor juros parcelamento jaCadastrado.setVlJurosParcelamento(jaCadastrado .getVlJurosParcelamento().add(valorJurosParcelamento)); Integer qtdMediaParcelas = jaCadastrado.getQtdMediaParcelas() + quantidadeTotalParcelas; // media parcelas jaCadastrado.setQtdMediaParcelas(qtdMediaParcelas.shortValue()); Integer qtdTotalParcelas = jaCadastrado.getQtdTotalParcelas() + quantidadeTotalParcelas; // total parcelas jaCadastrado.setQtdTotalParcelas(qtdTotalParcelas.shortValue()); } else { // Somatorios // Contas helper.setQtdContas(helper.getQtdContas().intValue() + quantidadeContas); // Guias helper.setQtdGuias(helper.getQtdGuias().intValue() + quantidadeGuias); Short s = (((Integer) (helper.getQtdServicosIndiretos() + quantidadeServicosIndiretos)) .shortValue()); // Servicos Indiretos helper.setQtdServicosIndiretos(s); Short p = (((Integer) (helper.getQtdParcelamento() + 1)) .shortValue()); // qtdParcelamentos helper.setQtdParcelamento(p); // vlContas helper.setVlContas(helper.getVlContas() .add(valorContas)); // vlGuias helper.setVlGuias(helper.getVlGuias().add(valorGuias)); // vlServicosPrestados helper.setVlServicosIndiretos(helper .getVlServicosIndiretos().add( valorServicosIndiretos)); // vlCreditos helper.setVlCreditoRealizar(helper .getVlCreditoRealizar().add(valorCreditos)); // vlAcrescimoImpontualidade helper.setVlAcrescimoImpontualidade(helper .getVlAcrescimoImpontualidade().add( valorAcrescimoImpontualidade)); // vlSancoes helper.setVlSancoes(helper.getVlSancoes().add( valorSancoes)); // vlDescontoAcrescimo helper.setVlDescontoAcrescimo(helper .getVlDescontoAcrescimo().add( valorDescontoAcrescimo)); // vlDescontoInatividade helper.setVlDescontoInatividade(helper .getVlDescontoInatividade().add( valorDescontoInatividade)); // vlDescontoAntiguidade helper.setVlDescontoAntiguidade(helper .getVlDescontoAntiguidade().add( valorDescontoAntiguidade)); // vlTotalParcalamento helper.setVlTotalParcelamento(helper .getVlTotalParcelamento().add( valorTotalParcelamento)); listaSimplificadaParcelamento.add(helper); // AnoMesReferencia helper.setAnoMesReferencia(anoMesRef); // valor debitos a cobrar total helper.setVlDebitosACobrarTotal(valorDebitoACobrarTotal); // valor debitos a cobrar acrescimos helper.setVlDebitosACobrarAcrescimos(valorDebitoACobrarAcrescimos); // valor debitos a cobrar religsancoes helper.setVlDebitosACobrarReligSancoes(valorDebitoACobrarReligSancoes); // valor debitos a cobrar parcelamentos helper.setVlDebitosACobrarParcelamentos(valorDebitoACobrarParcelamentos); // valor entrada helper.setVlEntrada(valorEntrada); // valor juros parcelamento helper.setVlJurosParcelamento(valorJurosParcelamento); // media parcelas helper.setQtdMediaParcelas(quantidadeTotalParcelas); // total parcelas helper.setQtdTotalParcelas(quantidadeTotalParcelas); } } } /** * para todas as ImovelResumoParcelamentoHelper cria * ResumoParcelamento */ for (int i = 0; i < listaSimplificadaParcelamento.size(); i++) { ResumoParcelamentoPorAnoHelper helper = (ResumoParcelamentoPorAnoHelper) listaSimplificadaParcelamento .get(i); // Montamos todo o agrupamento necessario // Mes ano de referencia Integer anoMesReferencia = helper.getAnoMesReferencia(); // Gerencia regional GGerenciaRegional gerenciaRegional = null; if (helper.getIdGerenciaRegional() != null) { gerenciaRegional = new GGerenciaRegional(); gerenciaRegional.setId(helper.getIdGerenciaRegional()); } // Unidade de Negocio GUnidadeNegocio unidadeNegocio = null; if (helper.getIdUnidadeNegocio() != null) { unidadeNegocio = new GUnidadeNegocio(); unidadeNegocio.setId(helper.getIdUnidadeNegocio()); } // Localidade GLocalidade localidade = null; if (helper.getIdLocalidade() != null) { localidade = new GLocalidade(); localidade.setId(helper.getIdLocalidade()); } // Elo GLocalidade elo = null; if (helper.getIdElo() != null) { elo = new GLocalidade(); elo.setId(helper.getIdElo()); } // Setor comercial GSetorComercial setorComercial = null; if (helper.getIdSetorComercial() != null) { setorComercial = new GSetorComercial(); setorComercial.setId(helper.getIdSetorComercial()); } // Rota // GRota rota = null; // if (helper.getIdRota() != null) { // rota = new GRota(); // rota.setId(helper.getIdRota()); // rota.setCodigoRota(helper.getCodigoRota()); // } // Quadra // GQuadra quadra = null; // if (helper.getIdQuadra() != null) { // quadra = new GQuadra(); // quadra.setId(helper.getIdQuadra()); // } // Codigo do setor comercial Integer codigoSetorComercial = null; if (helper.getCodigoSetorComercial() != null) { codigoSetorComercial = (helper.getCodigoSetorComercial()); } // Numero da quadra // Integer numeroQuadra = null; // if (helper.getNumeroQuadra() != null) { // numeroQuadra = (helper.getNumeroQuadra()); // } // Perfil do imovel GImovelPerfil imovelPerfil = null; if (helper.getIdPerfilImovel() != null) { imovelPerfil = new GImovelPerfil(); imovelPerfil.setId(helper.getIdPerfilImovel()); } // Esfera de poder do cliente responsavel GEsferaPoder esferaPoder = null; if (helper.getIdEsfera() != null) { esferaPoder = new GEsferaPoder(); esferaPoder.setId(helper.getIdEsfera()); } // Tipo do cliente responsavel GClienteTipo clienteTipo = null; if (helper.getIdTipoClienteResponsavel() != null) { clienteTipo = new GClienteTipo(); clienteTipo.setId(helper.getIdTipoClienteResponsavel()); } // Situacao da ligacao de agua GLigacaoAguaSituacao ligacaoAguaSituacao = null; if (helper.getIdSituacaoLigacaoAgua() != null) { ligacaoAguaSituacao = new GLigacaoAguaSituacao(); ligacaoAguaSituacao .setId(helper.getIdSituacaoLigacaoAgua()); } // Situacao da ligacao de esgoto GLigacaoEsgotoSituacao ligacaoEsgotoSituacao = null; if (helper.getIdSituacaoLigacaoEsgoto() != null) { ligacaoEsgotoSituacao = new GLigacaoEsgotoSituacao(); ligacaoEsgotoSituacao.setId(helper .getIdSituacaoLigacaoEsgoto()); } // Categoria GCategoria categoria = null; if (helper.getIdCategoria() != null) { categoria = new GCategoria(); categoria.setId(helper.getIdCategoria()); } // Subcategoria GSubcategoria subcategoria = null; if (helper.getIdSubCategoria() != null) { subcategoria = new GSubcategoria(); subcategoria.setId(helper.getIdSubCategoria()); } // Perfil da ligacao de agua GLigacaoAguaPerfil perfilLigacaoAgua = null; if (helper.getIdPerfilLigacaoAgua() != null) { perfilLigacaoAgua = new GLigacaoAguaPerfil(); perfilLigacaoAgua.setId(helper.getIdPerfilLigacaoAgua()); } // Perfil da ligacao de esgoto GLigacaoEsgotoPerfil perfilLigacaoEsgoto = null; if (helper.getIdPerfilLigacaoEsgoto() != null) { perfilLigacaoEsgoto = new GLigacaoEsgotoPerfil(); perfilLigacaoEsgoto .setId(helper.getIdPerfilLigacaoEsgoto()); } // Quantidade Contas Integer qtdContas = helper.getQtdContas(); // Quantidade Parcelamentos Short qtdParcelamentos = helper.getQtdParcelamento(); // Quantidade Guias Integer qtdGuias = helper.getQtdGuias(); // Valor das Contas BigDecimal vlContas = helper.getVlContas(); // Valor Guias Pagmto BigDecimal vlGuias = helper.getVlGuias(); // Valor creditos BigDecimal vlCreditos = helper.getVlCreditoRealizar(); // Valor Servicos Indiretos BigDecimal vlAcrescimoImpontualidade = helper .getVlAcrescimoImpontualidade(); // Valor Sancoes //BigDecimal vlSancoes = helper.getVlSancoes(); // Valor creditos BigDecimal vlDescontoAcrescimo = helper .getVlDescontoAcrescimo(); // Valor Desconto Inatividade BigDecimal vlDescontoInatividade = helper .getVlDescontoInatividade(); // Valor Desconto Antiguidade BigDecimal vlDescontoAntiguidade = helper .getVlDescontoAntiguidade(); // Ultima Alteracao Date ultimaAlteracao = new Date(); // valor debitos a cobrar total BigDecimal vlDebitosACobrarTotal = helper.getVlDebitosACobrarTotal(); // valor debitos a cobrar acrescimos BigDecimal vlDebitosACobrarAcrescimos = helper.getVlDebitosACobrarAcrescimos(); // valor debitos a cobrar religsancoes BigDecimal vlDebitosACobrarReligSancoes = helper.getVlDebitosACobrarReligSancoes(); // valor debitos a cobrar parcelamentos BigDecimal vlDebitosACobrarParcelamentos = helper.getVlDebitosACobrarParcelamentos(); // valor entrada BigDecimal vlEntrada = helper.getVlEntrada(); // valor juros parcelamento BigDecimal vlJurosParcelamento = helper.getVlJurosParcelamento(); // media parcelas Integer qtdMediaParcelas = new BigDecimal((helper.getQtdMediaParcelas()/qtdParcelamentos)).intValue(); // total parcelas Integer qtdTotalParcelas = helper.getQtdTotalParcelas().intValue(); // Perfil da ligacao de agua GConsumoTarifa consumoTarifa = null; if (helper.getConsumoTarifa() != null) { consumoTarifa = new GConsumoTarifa(); consumoTarifa.setId(helper.getConsumoTarifa()); } Short indicadorHidrometro = helper.getIndicadorHidrometro(); Short numeroParcelamentoConsecutivosShort = helper.getNumeroParcelamentoConsecutivos(); Integer numeroParcelamentoConsecutivos = null; if(numeroParcelamentoConsecutivosShort != null){ numeroParcelamentoConsecutivos = numeroParcelamentoConsecutivosShort.intValue(); }else{ numeroParcelamentoConsecutivos = 0; } // Criamos um resumo do parcelamento UnResumoParcelamentoPorAno resumoParcelamentoGrava = new UnResumoParcelamentoPorAno( anoMesReferencia, codigoSetorComercial, /*numeroQuadra,*/ qtdContas, vlContas, vlGuias, vlCreditos, vlDescontoAcrescimo, qtdGuias, vlDescontoInatividade, vlAcrescimoImpontualidade, ultimaAlteracao, qtdParcelamentos, vlDescontoAntiguidade, subcategoria, clienteTipo, ligacaoAguaSituacao, /*quadra, */ ligacaoEsgotoSituacao, gerenciaRegional, setorComercial, perfilLigacaoAgua, imovelPerfil, unidadeNegocio, elo, localidade, perfilLigacaoEsgoto, esferaPoder, categoria, /*rota, */ vlJurosParcelamento, vlEntrada , vlDebitosACobrarParcelamentos, vlDebitosACobrarTotal, vlDebitosACobrarAcrescimos, vlDebitosACobrarReligSancoes, qtdTotalParcelas, qtdMediaParcelas, consumoTarifa, indicadorHidrometro, numeroParcelamentoConsecutivos /*, helper.getCodigoRota()*/); // Adicionamos a lista que deve ser inserida listaResumoParcelamento.add(resumoParcelamentoGrava); } this.getControladorBatch().inserirColecaoObjetoParaBatchGerencial( (Collection) listaResumoParcelamento); // -------------------------------------------------------- // // Registrar o fim da execu��o da Unidade de Processamento // // -------------------------------------------------------- getControladorBatch().encerrarUnidadeProcessamentoBatch(null, idUnidadeIniciada, false); } catch (Exception ex) { // Este catch serve para interceptar qualquer exce��o que o processo // batch venha a lan�ar e garantir que a unidade de processamento do // batch ser� atualizada com o erro ocorrido System.out.println(" ERRO NA LOCALIDADE " + idLocalidade); ex.printStackTrace(); // sessionContext.setRollbackOnly(); getControladorBatch().encerrarUnidadeProcessamentoBatch(ex, idUnidadeIniciada, true); throw new EJBException(ex); } } /*** * [UC1057] - Gerar Histograma de Agua e Esgoto Sem Quadras * @author Ivan Sergio * @date: 11/08/2010 * * @param anoMesReferencia * @param idSetor * @param idFuncionalidadeIniciada * @throws ControladorException */ public void gerarResumoHistogramaSemQuadra( int anoMesReferencia, int idSetor, int idFuncionalidadeIniciada) throws ControladorException { int idUnidadeIniciada = 0; // Registrar o inicio do Processamento do Batch idUnidadeIniciada = getControladorBatch() .iniciarUnidadeProcessamentoBatch( idFuncionalidadeIniciada, UnidadeProcessamento.SETOR_COMERCIAL, idSetor); try { System.out.println("*************************************************"); System.out.println("INICIO DO HISTOGRAMA SEM QUADRA SETOR: " + idSetor); System.out.println("*************************************************"); // [SB1000] ? Gerar Histograma para Im?s Faturados List histogramaAguaLigacao = this.repositorioGerencialCadastro.getContasHistogramaSemQuadra( idSetor, anoMesReferencia); // FS0001 - Verificar existencia de dados para o ano/mes referencia informado repositorioGerencialCadastro.excluirResumoSQL( getControladorUtil().pesquisarParametrosDoSistema().getAnoMesFaturamento(), "faturamento.histo_agua_econ_sqdra", "haes_amreferencia", idSetor, true ); repositorioGerencialCadastro.excluirResumoSQL( getControladorUtil().pesquisarParametrosDoSistema().getAnoMesFaturamento(), "faturamento.histo_agua_ligacao_sqdra", "hals_amreferencia", idSetor, true ); repositorioGerencialCadastro.excluirResumoSQL( getControladorUtil().pesquisarParametrosDoSistema().getAnoMesFaturamento(), "faturamento.histo_esgt_econ_sqdra", "hees_amreferencia", idSetor, true ); repositorioGerencialCadastro.excluirResumoSQL( getControladorUtil().pesquisarParametrosDoSistema().getAnoMesFaturamento(), "faturamento.histo_esgt_ligacao_sqdra", "hels_amreferencia", idSetor, true ); List<HistogramaAguaLigacaoSemQuadraHelper> listaSimplificadaAguaLigacao = new ArrayList<HistogramaAguaLigacaoSemQuadraHelper>(); List<HistogramaAguaEconomiaSemQuadraHelper> listaSimplificadaAguaEconomia = new ArrayList<HistogramaAguaEconomiaSemQuadraHelper>(); List<HistogramaEsgotoLigacaoSemQuadraHelper> listaSimplificadaEsgotoLigacao = new ArrayList<HistogramaEsgotoLigacaoSemQuadraHelper>(); List<HistogramaEsgotoEconomiaSemQuadraHelper> listaSimplificadaEsgotoEconomia = new ArrayList<HistogramaEsgotoEconomiaSemQuadraHelper>(); // Verifica o indicador da tarifa categoria Short indicadorTarifaCategoria = getControladorUtil().pesquisarParametrosDoSistema().getIndicadorTarifaCategoria(); for (int i = 0; i < histogramaAguaLigacao.size(); i++) { Object obj = histogramaAguaLigacao.get(i); if ( i % 100 == 0 || i == 0 ) { System.out.println("PROCESSANDO CONTA " + (i+1) + " DE " + histogramaAguaLigacao.size()); } if (obj instanceof Object[]) { HistogramaAguaLigacaoSemQuadraHelper histogramaAguaLigacaoSemQuadraHelper; HistogramaAguaEconomiaSemQuadraHelper histogramaAguaEconomiaSemQuadraHelper; HistogramaEsgotoLigacaoSemQuadraHelper histogramaEsgotoLigacaoSemQuadraHelper; HistogramaEsgotoEconomiaSemQuadraHelper histogramaEsgotoEconomiaSemQuadraHelper; Object[] retorno = (Object[]) obj; Integer idConta = (Integer) retorno[0]; Integer idImovel = (Integer) retorno[10]; // Variaveis para preenchimento dos Helper`s Integer idGerenciaRegional = (Integer) retorno[1]; Integer idUnidadeNegocio = (Integer) retorno[2]; Integer idElo = (Integer) retorno[3]; Integer idLocalidade = (Integer) retorno[4]; Integer idSetorCormecial = (Integer) retorno[5]; Integer codigoSetorComercial = (Integer) retorno[6]; Integer idConsumoTarifa = (Integer) retorno[7]; Integer idPerfilImovel = (Integer) retorno[8]; Integer idSituacaoAgua = (Integer) retorno[9]; Integer idSituacaoEsgoto = (Integer) retorno[11]; Float percentualEsgoto = ((BigDecimal) retorno[12]).floatValue(); // Verificamos se o imovel possue categoria mista //Integer idLigacaoMista = (this.repositorioGerencialCadastro // .pesquisaQuantidadeCategorias(idConta) == 1 ? 2 : 1); // Pesquisamos a esfera de poder Integer idEsferaPoder = this.repositorioGerencialCadastro .pesquisarEsferaPoderClienteResponsavelImovel(idImovel); // Verificamos se a esfera de poder foi encontrada; // [FS0002] Verificar existencia de cliente responsavel if (idEsferaPoder.equals(0)) { Imovel imovel = new Imovel(); imovel.setId(idImovel); Cliente clienteTemp = this.getControladorImovel().consultarClienteUsuarioImovel(imovel); if (clienteTemp != null) { idEsferaPoder = clienteTemp.getClienteTipo().getEsferaPoder().getId(); } } // Verificamos o consumo real AGUA Integer idConsumoReal = this.repositorioGerencialCadastro .verificarConsumoReal(idImovel); // Verificamos o consumo real ESGOTO Integer idConsumoRealEsgoto = this.repositorioGerencialCadastro .verificarConsumoRealEsgoto(idImovel); // Verificamos a existencia de hidrometro Integer idHidrometro = this.repositorioGerencialCadastro .verificarExistenciaHidrometro(idImovel); // Verificamos a existencia de poco no imovel Integer idPoco = this.repositorioGerencialCadastro .verificarExistenciaPoco(idImovel); // Verificamos a existencia de volume fixo de agua Integer idVolumeFixoAgua = this.repositorioGerencialCadastro .verificarExistenciaVolumeFixoAgua(idImovel); // Verificamos a existencia de volume fixo de esgoto Integer idVolumeFixoEsgoto = this.repositorioGerencialCadastro .verificarExistenciaVolumeFixoEsgoto(idImovel); /*********************************************************************************** ************************************************************************************ ** 2.1 Caso o indicador de tarifa da categoria = 1 (por Categoria); ************************************************************************************ ***********************************************************************************/ if (indicadorTarifaCategoria.equals(ConstantesSistema.SIM)) { // Filtra a Conta na tabela ContaCategoria por Categoria ordenando pela quantidade //de Economia da Categoria; List listaContaCategoria = this.repositorioGerencialCadastro.filtrarContaCategoriaHistogramaPorCategoria(idConta); if (listaContaCategoria != null && !listaContaCategoria.isEmpty()) { // 2.1.1 Caso a conta faturada corresponda a UMA so categoria; if (listaContaCategoria.size() == 1) { Object objContaCategoria = listaContaCategoria.get(0); Object[] retornoContaCategoria = (Object[]) objContaCategoria; Integer idCategoria = (Integer) retornoContaCategoria[0]; Integer idTipoCategoria = (Integer) retornoContaCategoria[1]; Short quantidadeEconomia = (Short) retornoContaCategoria[2]; BigDecimal valorAgua = (BigDecimal) retornoContaCategoria[3]; Integer consumoAgua = (Integer) retornoContaCategoria[4]; Integer consumoMinimoAgua = (Integer) retornoContaCategoria[5]; BigDecimal valorEsgoto = (BigDecimal) retornoContaCategoria[6]; Integer consumoEsgoto = (Integer) retornoContaCategoria[7]; Integer consumoMinimoEsgoto = (Integer) retornoContaCategoria[8]; // Pesquisamos a SubCategoria da Conta Categoria Integer idSubCategoria = this.repositorioGerencialCadastro.pesquisarSubCategoriaContaCategoria( idConta, idCategoria); //************************************************************ // Autor: Ivan Sergio // Responsavel: Edardo // Data: 22/12/2010 // Caso a subcategoria possua indicador de tarifa de consumo // diferente de 1 (SIM), deve-se atribuir o valo 0 (zero); //************************************************************ idSubCategoria = this.validarIndicadorTarifaConsumoSubcategoria(idSubCategoria); //************************************************************ // 2.1.1.1 Caso a Conta Faturada corresponda a UMA so economia; if (quantidadeEconomia.intValue() == 1) { /*************************************************************************** **************************************************************************** ** [SB0001] - Prepara Dados do Histograma para UMA Categoria e UMA Economia; **************************************************************************** ***************************************************************************/ Integer quantidadeConsumoAgua = consumoAgua; Integer quantidadeConsumoEsgoto = consumoEsgoto; Integer idLigacaoMista = 2; //*************************************************************************** // Histograma Agua Ligacao //*************************************************************************** histogramaAguaLigacaoSemQuadraHelper = this.preparaDadosHistogramaAguaLigacao( idGerenciaRegional, idUnidadeNegocio, idElo, idLocalidade, idSetorCormecial, codigoSetorComercial, idTipoCategoria, idCategoria, idSubCategoria, idLigacaoMista, idConsumoTarifa, idPerfilImovel, idEsferaPoder, idSituacaoAgua, idConsumoReal, idHidrometro, idPoco, idVolumeFixoAgua, quantidadeConsumoAgua, quantidadeEconomia, valorAgua, consumoAgua, consumoMinimoAgua); // Agrupamos o histograma agua ligacao if (!histogramaAguaLigacaoSemQuadraHelper.getValorFaturadoLigacao().equals(0f)) { if (listaSimplificadaAguaLigacao.contains(histogramaAguaLigacaoSemQuadraHelper)) { int posicao = listaSimplificadaAguaLigacao.indexOf(histogramaAguaLigacaoSemQuadraHelper); HistogramaAguaLigacaoSemQuadraHelper jaCadastrado = (HistogramaAguaLigacaoSemQuadraHelper) listaSimplificadaAguaLigacao.get(posicao); jaCadastrado.setQuantidadeLigacao(jaCadastrado.getQuantidadeLigacao() + 1); jaCadastrado.setQuantidadeEconomiaLigacao(jaCadastrado.getQuantidadeEconomiaLigacao() + histogramaAguaLigacaoSemQuadraHelper.getQuantidadeEconomiaLigacao()); BigDecimal valorFaturado = new BigDecimal( jaCadastrado.getValorFaturadoLigacao() + histogramaAguaLigacaoSemQuadraHelper.getValorFaturadoLigacao()) .setScale(2, RoundingMode.HALF_UP); jaCadastrado.setValorFaturadoLigacao(valorFaturado.floatValue()); jaCadastrado.setVolumeFaturadoLigacao(jaCadastrado.getVolumeFaturadoLigacao() + histogramaAguaLigacaoSemQuadraHelper.getVolumeFaturadoLigacao()); } else { listaSimplificadaAguaLigacao.add(histogramaAguaLigacaoSemQuadraHelper); } } //*************************************************************************** // Histograma Agua Economia //*************************************************************************** histogramaAguaEconomiaSemQuadraHelper = this.preparaDadosHistogramaAguaEconomia( idGerenciaRegional, idUnidadeNegocio, idElo, idLocalidade, idSetorCormecial, codigoSetorComercial, idTipoCategoria, idCategoria, idSubCategoria, idConsumoTarifa, idPerfilImovel, idEsferaPoder, idSituacaoAgua, idConsumoReal, idHidrometro, idPoco, idVolumeFixoAgua, quantidadeConsumoAgua, quantidadeEconomia, valorAgua, consumoAgua, consumoMinimoAgua); // Agrupamos o histograma agua por economia if (!histogramaAguaEconomiaSemQuadraHelper.getValorFaturadoEconomia().equals(0f)) { if (listaSimplificadaAguaEconomia.contains(histogramaAguaEconomiaSemQuadraHelper)) { int posicao = listaSimplificadaAguaEconomia.indexOf(histogramaAguaEconomiaSemQuadraHelper); HistogramaAguaEconomiaSemQuadraHelper jaCadastrado = (HistogramaAguaEconomiaSemQuadraHelper) listaSimplificadaAguaEconomia.get(posicao); jaCadastrado.setQuantidadeLigacoes(jaCadastrado.getQuantidadeLigacoes() + 1); jaCadastrado.setQuantidadeEconomia(jaCadastrado.getQuantidadeEconomia() + histogramaAguaEconomiaSemQuadraHelper.getQuantidadeEconomia()); BigDecimal valorFaturado = new BigDecimal( jaCadastrado.getValorFaturadoEconomia() + histogramaAguaEconomiaSemQuadraHelper.getValorFaturadoEconomia()) .setScale(2, RoundingMode.HALF_UP); jaCadastrado.setValorFaturadoEconomia(valorFaturado.floatValue()); jaCadastrado.setVolumeFaturadoEconomia(jaCadastrado.getVolumeFaturadoEconomia() + histogramaAguaEconomiaSemQuadraHelper.getVolumeFaturadoEconomia()); } else { listaSimplificadaAguaEconomia.add(histogramaAguaEconomiaSemQuadraHelper); } } //*************************************************************************** // Histograma Esgoto Ligacao //*************************************************************************** histogramaEsgotoLigacaoSemQuadraHelper = this.preparaDadosHistogramaEsgotoLigacao( idGerenciaRegional, idUnidadeNegocio, idElo, idLocalidade, idSetorCormecial, codigoSetorComercial, idTipoCategoria, idCategoria, idSubCategoria, idLigacaoMista, idConsumoTarifa, idPerfilImovel, idEsferaPoder, idSituacaoEsgoto, idConsumoRealEsgoto, idHidrometro, idPoco, idVolumeFixoEsgoto, percentualEsgoto, quantidadeConsumoEsgoto, quantidadeEconomia, valorEsgoto, consumoEsgoto, consumoMinimoEsgoto); // Agrupamos o Histograma Esgoto por Ligacao if (!histogramaEsgotoLigacaoSemQuadraHelper.getValorFaturadoLigacao().equals(0f)) { if (listaSimplificadaEsgotoLigacao.contains(histogramaEsgotoLigacaoSemQuadraHelper)) { int posicao = listaSimplificadaEsgotoLigacao.indexOf(histogramaEsgotoLigacaoSemQuadraHelper); HistogramaEsgotoLigacaoSemQuadraHelper jaCadastrado = (HistogramaEsgotoLigacaoSemQuadraHelper) listaSimplificadaEsgotoLigacao.get(posicao); jaCadastrado.setQuantidadeLigacao(jaCadastrado.getQuantidadeLigacao() + 1); jaCadastrado.setQuantidadeEconomiaLigacao(jaCadastrado.getQuantidadeEconomiaLigacao() + histogramaEsgotoLigacaoSemQuadraHelper.getQuantidadeEconomiaLigacao()); BigDecimal valorFaturado = new BigDecimal( jaCadastrado.getValorFaturadoLigacao() + histogramaEsgotoLigacaoSemQuadraHelper.getValorFaturadoLigacao()) .setScale(2, RoundingMode.HALF_UP); jaCadastrado.setValorFaturadoLigacao(valorFaturado.floatValue()); jaCadastrado.setVolumeFaturadoLigacao(jaCadastrado.getVolumeFaturadoLigacao() + histogramaEsgotoLigacaoSemQuadraHelper.getVolumeFaturadoLigacao()); } else { listaSimplificadaEsgotoLigacao.add(histogramaEsgotoLigacaoSemQuadraHelper); } } //*************************************************************************** // Histograma Esgoto Economia //*************************************************************************** histogramaEsgotoEconomiaSemQuadraHelper = this.preparaDadosHistogramaEsgotoEconomia( idGerenciaRegional, idUnidadeNegocio, idElo, idLocalidade, idSetorCormecial, codigoSetorComercial, idTipoCategoria, idCategoria, idSubCategoria, idConsumoTarifa, idPerfilImovel, idEsferaPoder, idSituacaoEsgoto, idConsumoRealEsgoto, idHidrometro, idPoco, idVolumeFixoEsgoto, percentualEsgoto, quantidadeConsumoEsgoto, quantidadeEconomia, valorEsgoto, consumoEsgoto, consumoMinimoEsgoto); // Agrupamos o histograma esgoto por economia if (!histogramaEsgotoEconomiaSemQuadraHelper.getValorFaturadoEconomia().equals(0f)) { if (listaSimplificadaEsgotoEconomia.contains(histogramaEsgotoEconomiaSemQuadraHelper)) { int posicao = listaSimplificadaEsgotoEconomia.indexOf(histogramaEsgotoEconomiaSemQuadraHelper); HistogramaEsgotoEconomiaSemQuadraHelper jaCadastrado = (HistogramaEsgotoEconomiaSemQuadraHelper) listaSimplificadaEsgotoEconomia.get(posicao); jaCadastrado.setQuantidadeEconomia(jaCadastrado.getQuantidadeEconomia() + histogramaEsgotoEconomiaSemQuadraHelper.getQuantidadeEconomia()); BigDecimal valorFaturado = new BigDecimal( jaCadastrado.getValorFaturadoEconomia() + histogramaEsgotoEconomiaSemQuadraHelper.getValorFaturadoEconomia()) .setScale(2, RoundingMode.HALF_UP); jaCadastrado.setValorFaturadoEconomia(valorFaturado.floatValue()); jaCadastrado.setVolumeFaturadoEconomia(jaCadastrado.getVolumeFaturadoEconomia() + histogramaEsgotoEconomiaSemQuadraHelper.getVolumeFaturadoEconomia()); jaCadastrado.setQuantidadeLigacoes(jaCadastrado.getQuantidadeLigacoes() + 1); } else { listaSimplificadaEsgotoEconomia.add(histogramaEsgotoEconomiaSemQuadraHelper); } } //*************************************************************************** // 2.1.1.2 Caso contrario (>1) }else if (quantidadeEconomia.intValue() > 1) { /*********************************************************************************** ************************************************************************************ ** [SB0002] - Prepara Dados do Histograma para UMA Categoria e MAIS DE UMA Economia; ************************************************************************************ ***********************************************************************************/ Integer quantidadeConsumoAgua = consumoAgua; Integer quantidadeConsumoAguaEconomia = 0; Integer idLigacaoMista = 2; if (consumoAgua != null && quantidadeEconomia.intValue() != 0) { quantidadeConsumoAguaEconomia = (consumoAgua / quantidadeEconomia.intValue()); } Integer quantidadeConsumoEsgoto = consumoEsgoto; Integer quantidadeConsumoEsgotoEconomia = 0; if (consumoEsgoto != null && quantidadeEconomia.intValue() != 0) { quantidadeConsumoEsgotoEconomia = (consumoEsgoto / quantidadeEconomia.intValue()); } //*************************************************************************** // Histograma Agua Ligacao //*************************************************************************** histogramaAguaLigacaoSemQuadraHelper = this.preparaDadosHistogramaAguaLigacao( idGerenciaRegional, idUnidadeNegocio, idElo, idLocalidade, idSetorCormecial, codigoSetorComercial, idTipoCategoria, idCategoria, idSubCategoria, idLigacaoMista, idConsumoTarifa, idPerfilImovel, idEsferaPoder, idSituacaoAgua, idConsumoReal, idHidrometro, idPoco, idVolumeFixoAgua, quantidadeConsumoAgua, quantidadeEconomia, valorAgua, consumoAgua, consumoMinimoAgua); // Agrupamos o histograma agua ligacao if (!histogramaAguaLigacaoSemQuadraHelper.getValorFaturadoLigacao().equals(0f)) { if (listaSimplificadaAguaLigacao.contains(histogramaAguaLigacaoSemQuadraHelper)) { int posicao = listaSimplificadaAguaLigacao.indexOf(histogramaAguaLigacaoSemQuadraHelper); HistogramaAguaLigacaoSemQuadraHelper jaCadastrado = (HistogramaAguaLigacaoSemQuadraHelper) listaSimplificadaAguaLigacao.get(posicao); jaCadastrado.setQuantidadeLigacao(jaCadastrado.getQuantidadeLigacao() + 1); jaCadastrado.setQuantidadeEconomiaLigacao(jaCadastrado.getQuantidadeEconomiaLigacao() + histogramaAguaLigacaoSemQuadraHelper.getQuantidadeEconomiaLigacao()); BigDecimal valorFaturado = new BigDecimal( jaCadastrado.getValorFaturadoLigacao() + histogramaAguaLigacaoSemQuadraHelper.getValorFaturadoLigacao()) .setScale(2, RoundingMode.HALF_UP); jaCadastrado.setValorFaturadoLigacao(valorFaturado.floatValue()); jaCadastrado.setVolumeFaturadoLigacao(jaCadastrado.getVolumeFaturadoLigacao() + histogramaAguaLigacaoSemQuadraHelper.getVolumeFaturadoLigacao()); } else { listaSimplificadaAguaLigacao.add(histogramaAguaLigacaoSemQuadraHelper); } } //*************************************************************************** // Histograma Agua Economia //*************************************************************************** histogramaAguaEconomiaSemQuadraHelper = this.preparaDadosHistogramaAguaEconomia( idGerenciaRegional, idUnidadeNegocio, idElo, idLocalidade, idSetorCormecial, codigoSetorComercial, idTipoCategoria, idCategoria, idSubCategoria, idConsumoTarifa, idPerfilImovel, idEsferaPoder, idSituacaoAgua, idConsumoReal, idHidrometro, idPoco, idVolumeFixoAgua, quantidadeConsumoAguaEconomia, quantidadeEconomia, valorAgua, consumoAgua, consumoMinimoAgua); // Agrupamos o histograma agua por economia if (!histogramaAguaEconomiaSemQuadraHelper.getValorFaturadoEconomia().equals(0f)) { if (listaSimplificadaAguaEconomia.contains(histogramaAguaEconomiaSemQuadraHelper)) { int posicao = listaSimplificadaAguaEconomia.indexOf(histogramaAguaEconomiaSemQuadraHelper); HistogramaAguaEconomiaSemQuadraHelper jaCadastrado = (HistogramaAguaEconomiaSemQuadraHelper) listaSimplificadaAguaEconomia.get(posicao); jaCadastrado.setQuantidadeLigacoes(jaCadastrado.getQuantidadeLigacoes() + 1); jaCadastrado.setQuantidadeEconomia(jaCadastrado.getQuantidadeEconomia() + histogramaAguaEconomiaSemQuadraHelper.getQuantidadeEconomia()); BigDecimal valorFaturado = new BigDecimal( jaCadastrado.getValorFaturadoEconomia() + histogramaAguaEconomiaSemQuadraHelper.getValorFaturadoEconomia()) .setScale(2, RoundingMode.HALF_UP); jaCadastrado.setValorFaturadoEconomia(valorFaturado.floatValue()); jaCadastrado.setVolumeFaturadoEconomia(jaCadastrado.getVolumeFaturadoEconomia() + histogramaAguaEconomiaSemQuadraHelper.getVolumeFaturadoEconomia()); } else { listaSimplificadaAguaEconomia.add(histogramaAguaEconomiaSemQuadraHelper); } } //*************************************************************************** // Histograma Esgoto Ligacao //*************************************************************************** histogramaEsgotoLigacaoSemQuadraHelper = this.preparaDadosHistogramaEsgotoLigacao( idGerenciaRegional, idUnidadeNegocio, idElo, idLocalidade, idSetorCormecial, codigoSetorComercial, idTipoCategoria, idCategoria, idSubCategoria, idLigacaoMista, idConsumoTarifa, idPerfilImovel, idEsferaPoder, idSituacaoEsgoto, idConsumoRealEsgoto, idHidrometro, idPoco, idVolumeFixoEsgoto, percentualEsgoto, quantidadeConsumoEsgoto, quantidadeEconomia, valorEsgoto, consumoEsgoto, consumoMinimoEsgoto); // Agrupamos o Histograma Esgoto por Ligacao if (!histogramaEsgotoLigacaoSemQuadraHelper.getValorFaturadoLigacao().equals(0f)) { if (listaSimplificadaEsgotoLigacao.contains(histogramaEsgotoLigacaoSemQuadraHelper)) { int posicao = listaSimplificadaEsgotoLigacao.indexOf(histogramaEsgotoLigacaoSemQuadraHelper); HistogramaEsgotoLigacaoSemQuadraHelper jaCadastrado = (HistogramaEsgotoLigacaoSemQuadraHelper) listaSimplificadaEsgotoLigacao.get(posicao); jaCadastrado.setQuantidadeLigacao(jaCadastrado.getQuantidadeLigacao() + 1); jaCadastrado.setQuantidadeEconomiaLigacao(jaCadastrado.getQuantidadeEconomiaLigacao() + histogramaEsgotoLigacaoSemQuadraHelper.getQuantidadeEconomiaLigacao()); BigDecimal valorFaturado = new BigDecimal( jaCadastrado.getValorFaturadoLigacao() + histogramaEsgotoLigacaoSemQuadraHelper.getValorFaturadoLigacao()) .setScale(2, RoundingMode.HALF_UP); jaCadastrado.setValorFaturadoLigacao(valorFaturado.floatValue()); jaCadastrado.setVolumeFaturadoLigacao(jaCadastrado.getVolumeFaturadoLigacao() + histogramaEsgotoLigacaoSemQuadraHelper.getVolumeFaturadoLigacao()); } else { listaSimplificadaEsgotoLigacao.add(histogramaEsgotoLigacaoSemQuadraHelper); } } //*************************************************************************** // Histograma Esgoto Economia //*************************************************************************** histogramaEsgotoEconomiaSemQuadraHelper = this.preparaDadosHistogramaEsgotoEconomia( idGerenciaRegional, idUnidadeNegocio, idElo, idLocalidade, idSetorCormecial, codigoSetorComercial, idTipoCategoria, idCategoria, idSubCategoria, idConsumoTarifa, idPerfilImovel, idEsferaPoder, idSituacaoEsgoto, idConsumoRealEsgoto, idHidrometro, idPoco, idVolumeFixoEsgoto, percentualEsgoto, quantidadeConsumoEsgotoEconomia, quantidadeEconomia, valorEsgoto, consumoEsgoto, consumoMinimoEsgoto); // Agrupamos o histograma esgoto por economia if (!histogramaEsgotoEconomiaSemQuadraHelper.getValorFaturadoEconomia().equals(0f)) { if (listaSimplificadaEsgotoEconomia.contains(histogramaEsgotoEconomiaSemQuadraHelper)) { int posicao = listaSimplificadaEsgotoEconomia.indexOf(histogramaEsgotoEconomiaSemQuadraHelper); HistogramaEsgotoEconomiaSemQuadraHelper jaCadastrado = (HistogramaEsgotoEconomiaSemQuadraHelper) listaSimplificadaEsgotoEconomia.get(posicao); jaCadastrado.setQuantidadeEconomia(jaCadastrado.getQuantidadeEconomia() + histogramaEsgotoEconomiaSemQuadraHelper.getQuantidadeEconomia()); BigDecimal valorFaturado = new BigDecimal( jaCadastrado.getValorFaturadoEconomia() + histogramaEsgotoEconomiaSemQuadraHelper.getValorFaturadoEconomia()) .setScale(2, RoundingMode.HALF_UP); jaCadastrado.setValorFaturadoEconomia(valorFaturado.floatValue()); jaCadastrado.setVolumeFaturadoEconomia(jaCadastrado.getVolumeFaturadoEconomia() + histogramaEsgotoEconomiaSemQuadraHelper.getVolumeFaturadoEconomia()); jaCadastrado.setQuantidadeLigacoes(jaCadastrado.getQuantidadeLigacoes() + 1); } else { listaSimplificadaEsgotoEconomia.add(histogramaEsgotoEconomiaSemQuadraHelper); } } //*************************************************************************** } // 2.1.2 Caso Contrario (a Conta faturada corresponda a MAIS DE UMA Categoria); }else if (listaContaCategoria.size() > 1) { /********************************************************************* ********************************************************************** // [SB0003] - Prepara Dados do Histograma para MAIS DE UMA Categoria; ********************************************************************** *********************************************************************/ Integer idCategoria = 0; Integer idSubCategoria = 0; Integer idTipoCategoria = 0; Short quantidadeEconomia = 0; BigDecimal valorAgua = new BigDecimal(0); Integer consumoAgua = 0; Integer consumoMinimoAgua = 0; BigDecimal valorEsgoto = new BigDecimal(0); Integer consumoEsgoto = 0; Integer consumoMinimoEsgoto = 0; Integer quantidadeConsumoAgua = 0; Integer quantidadeConsumoEsgoto = 0; for(int x = 0; x < listaContaCategoria.size(); x++) { Object objContaCategoria = listaContaCategoria.get(x); Object[] retornoContaCategoria = (Object[]) objContaCategoria; if (x == 0) { idCategoria = (Integer) retornoContaCategoria[0]; idTipoCategoria = (Integer) retornoContaCategoria[1]; // Pesquisamos a SubCategoria da Conta Categoria idSubCategoria = this.repositorioGerencialCadastro.pesquisarSubCategoriaContaCategoria( idConta, idCategoria); } Short valorQuantidadeEconomia = (Short) retornoContaCategoria[2]; quantidadeEconomia = (short) (quantidadeEconomia + valorQuantidadeEconomia); if (retornoContaCategoria[3] != null) { valorAgua = valorAgua.add((BigDecimal) retornoContaCategoria[3]); } if (retornoContaCategoria[4] != null) { quantidadeConsumoAgua += (Integer) retornoContaCategoria[4]; consumoAgua += (Integer) retornoContaCategoria[4]; } if (retornoContaCategoria[5] != null) { consumoMinimoAgua += (Integer) retornoContaCategoria[5]; } if (retornoContaCategoria[6] != null) { valorEsgoto = valorEsgoto.add((BigDecimal) retornoContaCategoria[6]); } if (retornoContaCategoria[7] != null) { quantidadeConsumoEsgoto += (Integer) retornoContaCategoria[7]; consumoEsgoto += (Integer) retornoContaCategoria[7]; } if (retornoContaCategoria[8] != null) { consumoMinimoEsgoto += (Integer) retornoContaCategoria[8]; } // Verificamos o Volume Faturado Agua if (consumoAgua != null && consumoMinimoAgua != null) { if (consumoAgua >= consumoMinimoAgua) { consumoMinimoAgua = consumoAgua; } else { consumoAgua = consumoMinimoAgua; } } // Verificamos o Volume Faturado Agua if (consumoEsgoto != null && consumoMinimoEsgoto != null) { if (consumoEsgoto >= consumoMinimoEsgoto) { consumoMinimoEsgoto = consumoEsgoto; } else { consumoEsgoto = consumoMinimoEsgoto; } } } //************************************************************ // Autor: Ivan Sergio // Responsavel: Edardo // Data: 22/12/2010 // Caso a subcategoria possua indicador de tarifa de consumo // diferente de 1 (SIM), deve-se atribuir o valo 0 (zero); //************************************************************ idSubCategoria = this.validarIndicadorTarifaConsumoSubcategoria(idSubCategoria); //************************************************************ //Integer quantidadeConsumoAgua = consumoAgua; Integer quantidadeConsumoAguaEconomia = 0; Integer idLigacaoMista = 1; if (quantidadeConsumoAgua != null && quantidadeEconomia.intValue() != 0) { quantidadeConsumoAguaEconomia = (quantidadeConsumoAgua / quantidadeEconomia.intValue()); } //Integer quantidadeConsumoEsgoto = consumoEsgoto; Integer quantidadeConsumoEsgotoEconomia = 0; if (quantidadeConsumoEsgoto != null && quantidadeEconomia.intValue() != 0) { quantidadeConsumoEsgotoEconomia = (quantidadeConsumoEsgoto / quantidadeEconomia.intValue()); } //*************************************************************************** // Histograma Agua Ligacao //*************************************************************************** histogramaAguaLigacaoSemQuadraHelper = this.preparaDadosHistogramaAguaLigacao( idGerenciaRegional, idUnidadeNegocio, idElo, idLocalidade, idSetorCormecial, codigoSetorComercial, idTipoCategoria, idCategoria, idSubCategoria, idLigacaoMista, idConsumoTarifa, idPerfilImovel, idEsferaPoder, idSituacaoAgua, idConsumoReal, idHidrometro, idPoco, idVolumeFixoAgua, quantidadeConsumoAgua, quantidadeEconomia, valorAgua, consumoAgua, consumoMinimoAgua); // Agrupamos o histograma agua ligacao if (!histogramaAguaLigacaoSemQuadraHelper.getValorFaturadoLigacao().equals(0f)) { if (listaSimplificadaAguaLigacao.contains(histogramaAguaLigacaoSemQuadraHelper)) { int posicao = listaSimplificadaAguaLigacao.indexOf(histogramaAguaLigacaoSemQuadraHelper); HistogramaAguaLigacaoSemQuadraHelper jaCadastrado = (HistogramaAguaLigacaoSemQuadraHelper) listaSimplificadaAguaLigacao.get(posicao); jaCadastrado.setQuantidadeLigacao(jaCadastrado.getQuantidadeLigacao() + 1); jaCadastrado.setQuantidadeEconomiaLigacao(jaCadastrado.getQuantidadeEconomiaLigacao() + histogramaAguaLigacaoSemQuadraHelper.getQuantidadeEconomiaLigacao()); BigDecimal valorFaturado = new BigDecimal( jaCadastrado.getValorFaturadoLigacao() + histogramaAguaLigacaoSemQuadraHelper.getValorFaturadoLigacao()) .setScale(2, RoundingMode.HALF_UP); jaCadastrado.setValorFaturadoLigacao(valorFaturado.floatValue()); jaCadastrado.setVolumeFaturadoLigacao(jaCadastrado.getVolumeFaturadoLigacao() + histogramaAguaLigacaoSemQuadraHelper.getVolumeFaturadoLigacao()); } else { listaSimplificadaAguaLigacao.add(histogramaAguaLigacaoSemQuadraHelper); } } //*************************************************************************** // Histograma Agua Economia //*************************************************************************** histogramaAguaEconomiaSemQuadraHelper = this.preparaDadosHistogramaAguaEconomia( idGerenciaRegional, idUnidadeNegocio, idElo, idLocalidade, idSetorCormecial, codigoSetorComercial, idTipoCategoria, idCategoria, idSubCategoria, idConsumoTarifa, idPerfilImovel, idEsferaPoder, idSituacaoAgua, idConsumoReal, idHidrometro, idPoco, idVolumeFixoAgua, quantidadeConsumoAguaEconomia, quantidadeEconomia, valorAgua, consumoAgua, consumoMinimoAgua); // Agrupamos o histograma agua por economia if (!histogramaAguaEconomiaSemQuadraHelper.getValorFaturadoEconomia().equals(0f)) { if (listaSimplificadaAguaEconomia.contains(histogramaAguaEconomiaSemQuadraHelper)) { int posicao = listaSimplificadaAguaEconomia.indexOf(histogramaAguaEconomiaSemQuadraHelper); HistogramaAguaEconomiaSemQuadraHelper jaCadastrado = (HistogramaAguaEconomiaSemQuadraHelper) listaSimplificadaAguaEconomia.get(posicao); jaCadastrado.setQuantidadeLigacoes(jaCadastrado.getQuantidadeLigacoes() + 1); jaCadastrado.setQuantidadeEconomia(jaCadastrado.getQuantidadeEconomia() + histogramaAguaEconomiaSemQuadraHelper.getQuantidadeEconomia()); BigDecimal valorFaturado = new BigDecimal( jaCadastrado.getValorFaturadoEconomia() + histogramaAguaEconomiaSemQuadraHelper.getValorFaturadoEconomia()) .setScale(2, RoundingMode.HALF_UP); jaCadastrado.setValorFaturadoEconomia(valorFaturado.floatValue()); jaCadastrado.setVolumeFaturadoEconomia(jaCadastrado.getVolumeFaturadoEconomia() + histogramaAguaEconomiaSemQuadraHelper.getVolumeFaturadoEconomia()); } else { listaSimplificadaAguaEconomia.add(histogramaAguaEconomiaSemQuadraHelper); } } //*************************************************************************** // Histograma Esgoto Ligacao //*************************************************************************** histogramaEsgotoLigacaoSemQuadraHelper = this.preparaDadosHistogramaEsgotoLigacao( idGerenciaRegional, idUnidadeNegocio, idElo, idLocalidade, idSetorCormecial, codigoSetorComercial, idTipoCategoria, idCategoria, idSubCategoria, idLigacaoMista, idConsumoTarifa, idPerfilImovel, idEsferaPoder, idSituacaoEsgoto, idConsumoRealEsgoto, idHidrometro, idPoco, idVolumeFixoEsgoto, percentualEsgoto, quantidadeConsumoEsgoto, quantidadeEconomia, valorEsgoto, consumoEsgoto, consumoMinimoEsgoto); // Agrupamos o Histograma Esgoto por Ligacao if (!histogramaEsgotoLigacaoSemQuadraHelper.getValorFaturadoLigacao().equals(0f)) { if (listaSimplificadaEsgotoLigacao.contains(histogramaEsgotoLigacaoSemQuadraHelper)) { int posicao = listaSimplificadaEsgotoLigacao.indexOf(histogramaEsgotoLigacaoSemQuadraHelper); HistogramaEsgotoLigacaoSemQuadraHelper jaCadastrado = (HistogramaEsgotoLigacaoSemQuadraHelper) listaSimplificadaEsgotoLigacao.get(posicao); jaCadastrado.setQuantidadeLigacao(jaCadastrado.getQuantidadeLigacao() + 1); jaCadastrado.setQuantidadeEconomiaLigacao(jaCadastrado.getQuantidadeEconomiaLigacao() + histogramaEsgotoLigacaoSemQuadraHelper.getQuantidadeEconomiaLigacao()); BigDecimal valorFaturado = new BigDecimal( jaCadastrado.getValorFaturadoLigacao() + histogramaEsgotoLigacaoSemQuadraHelper.getValorFaturadoLigacao()) .setScale(2, RoundingMode.HALF_UP); jaCadastrado.setValorFaturadoLigacao(valorFaturado.floatValue()); jaCadastrado.setVolumeFaturadoLigacao(jaCadastrado.getVolumeFaturadoLigacao() + histogramaEsgotoLigacaoSemQuadraHelper.getVolumeFaturadoLigacao()); } else { listaSimplificadaEsgotoLigacao.add(histogramaEsgotoLigacaoSemQuadraHelper); } } //*************************************************************************** // Histograma Esgoto Economia //*************************************************************************** histogramaEsgotoEconomiaSemQuadraHelper = this.preparaDadosHistogramaEsgotoEconomia( idGerenciaRegional, idUnidadeNegocio, idElo, idLocalidade, idSetorCormecial, codigoSetorComercial, idTipoCategoria, idCategoria, idSubCategoria, idConsumoTarifa, idPerfilImovel, idEsferaPoder, idSituacaoEsgoto, idConsumoRealEsgoto, idHidrometro, idPoco, idVolumeFixoEsgoto, percentualEsgoto, quantidadeConsumoEsgotoEconomia, quantidadeEconomia, valorEsgoto, consumoEsgoto, consumoMinimoEsgoto); // Agrupamos o histograma esgoto por economia if (!histogramaEsgotoEconomiaSemQuadraHelper.getValorFaturadoEconomia().equals(0f)) { if (listaSimplificadaEsgotoEconomia.contains(histogramaEsgotoEconomiaSemQuadraHelper)) { int posicao = listaSimplificadaEsgotoEconomia.indexOf(histogramaEsgotoEconomiaSemQuadraHelper); HistogramaEsgotoEconomiaSemQuadraHelper jaCadastrado = (HistogramaEsgotoEconomiaSemQuadraHelper) listaSimplificadaEsgotoEconomia.get(posicao); jaCadastrado.setQuantidadeEconomia(jaCadastrado.getQuantidadeEconomia() + histogramaEsgotoEconomiaSemQuadraHelper.getQuantidadeEconomia()); BigDecimal valorFaturado = new BigDecimal( jaCadastrado.getValorFaturadoEconomia() + histogramaEsgotoEconomiaSemQuadraHelper.getValorFaturadoEconomia()) .setScale(2, RoundingMode.HALF_UP); jaCadastrado.setValorFaturadoEconomia(valorFaturado.floatValue()); jaCadastrado.setVolumeFaturadoEconomia(jaCadastrado.getVolumeFaturadoEconomia() + histogramaEsgotoEconomiaSemQuadraHelper.getVolumeFaturadoEconomia()); jaCadastrado.setQuantidadeLigacoes(jaCadastrado.getQuantidadeLigacoes() + 1); } else { listaSimplificadaEsgotoEconomia.add(histogramaEsgotoEconomiaSemQuadraHelper); } } } } /*************************************************************************************** **************************************************************************************** ** 2.2 Caso o indicador de tarifa da categoria = 2 (por SubCategoria) **************************************************************************************** ***************************************************************************************/ } else if (indicadorTarifaCategoria.equals(ConstantesSistema.NAO)) { // Filtra a Conta na tabela ContaCategoria por SubCategoria ordenando pela quantidade //de Economia da SubCategoria; List listaContaCategoria = this.repositorioGerencialCadastro.filtrarContaCategoriaHistograma(idConta); if (listaContaCategoria != null && !listaContaCategoria.isEmpty()) { // 2.2.1 Caso a conta faturada corresponda a UMA so SUBCATEGORIA; if (listaContaCategoria.size() == 1) { Object objContaCategoria = listaContaCategoria.get(0); Object[] retornoContaCategoria = (Object[]) objContaCategoria; Integer idCategoria = (Integer) retornoContaCategoria[0]; Integer idTipoCategoria = (Integer) retornoContaCategoria[1]; Short quantidadeEconomia = (Short) retornoContaCategoria[2]; BigDecimal valorAgua = (BigDecimal) retornoContaCategoria[3]; Integer consumoAgua = (Integer) retornoContaCategoria[4]; Integer consumoMinimoAgua = (Integer) retornoContaCategoria[5]; BigDecimal valorEsgoto = (BigDecimal) retornoContaCategoria[6]; Integer consumoEsgoto = (Integer) retornoContaCategoria[7]; Integer consumoMinimoEsgoto = (Integer) retornoContaCategoria[8]; Integer idSubCategoria = (Integer) retornoContaCategoria[9]; //************************************************************ // Autor: Ivan Sergio // Responsavel: Edardo // Data: 22/12/2010 // Caso a subcategoria possua indicador de tarifa de consumo // diferente de 1 (SIM), deve-se atribuir o valo 0 (zero); //************************************************************ idSubCategoria = this.validarIndicadorTarifaConsumoSubcategoria(idSubCategoria); //************************************************************ // 2.2.1.1 Caso a Conta Faturada corresponda a UMA so Economia; if (quantidadeEconomia.intValue() == 1) { /****************************************************************************** ******************************************************************************* ** [SB0010] - Prepara Dados do Histograma para UMA SubCategoria e UMA Economia; ******************************************************************************* ******************************************************************************/ Integer quantidadeConsumoAgua = consumoAgua; Integer quantidadeConsumoEsgoto = consumoEsgoto; Integer idLigacaoMista = 2; //*************************************************************************** // Histograma Agua Ligacao //*************************************************************************** histogramaAguaLigacaoSemQuadraHelper = this.preparaDadosHistogramaAguaLigacao( idGerenciaRegional, idUnidadeNegocio, idElo, idLocalidade, idSetorCormecial, codigoSetorComercial, idTipoCategoria, idCategoria, idSubCategoria, idLigacaoMista, idConsumoTarifa, idPerfilImovel, idEsferaPoder, idSituacaoAgua, idConsumoReal, idHidrometro, idPoco, idVolumeFixoAgua, quantidadeConsumoAgua, quantidadeEconomia, valorAgua, consumoAgua, consumoMinimoAgua); // Agrupamos o histograma agua ligacao if (!histogramaAguaLigacaoSemQuadraHelper.getValorFaturadoLigacao().equals(0f)) { if (listaSimplificadaAguaLigacao.contains(histogramaAguaLigacaoSemQuadraHelper)) { int posicao = listaSimplificadaAguaLigacao.indexOf(histogramaAguaLigacaoSemQuadraHelper); HistogramaAguaLigacaoSemQuadraHelper jaCadastrado = (HistogramaAguaLigacaoSemQuadraHelper) listaSimplificadaAguaLigacao.get(posicao); jaCadastrado.setQuantidadeLigacao(jaCadastrado.getQuantidadeLigacao() + 1); jaCadastrado.setQuantidadeEconomiaLigacao(jaCadastrado.getQuantidadeEconomiaLigacao() + histogramaAguaLigacaoSemQuadraHelper.getQuantidadeEconomiaLigacao()); BigDecimal valorFaturado = new BigDecimal( jaCadastrado.getValorFaturadoLigacao() + histogramaAguaLigacaoSemQuadraHelper.getValorFaturadoLigacao()) .setScale(2, RoundingMode.HALF_UP); jaCadastrado.setValorFaturadoLigacao(valorFaturado.floatValue()); jaCadastrado.setVolumeFaturadoLigacao(jaCadastrado.getVolumeFaturadoLigacao() + histogramaAguaLigacaoSemQuadraHelper.getVolumeFaturadoLigacao()); } else { listaSimplificadaAguaLigacao.add(histogramaAguaLigacaoSemQuadraHelper); } } //*************************************************************************** // Histograma Agua Economia //*************************************************************************** histogramaAguaEconomiaSemQuadraHelper = this.preparaDadosHistogramaAguaEconomia( idGerenciaRegional, idUnidadeNegocio, idElo, idLocalidade, idSetorCormecial, codigoSetorComercial, idTipoCategoria, idCategoria, idSubCategoria, idConsumoTarifa, idPerfilImovel, idEsferaPoder, idSituacaoAgua, idConsumoReal, idHidrometro, idPoco, idVolumeFixoAgua, quantidadeConsumoAgua, quantidadeEconomia, valorAgua, consumoAgua, consumoMinimoAgua); // Agrupamos o histograma agua por economia if (!histogramaAguaEconomiaSemQuadraHelper.getValorFaturadoEconomia().equals(0f)) { if (listaSimplificadaAguaEconomia.contains(histogramaAguaEconomiaSemQuadraHelper)) { int posicao = listaSimplificadaAguaEconomia.indexOf(histogramaAguaEconomiaSemQuadraHelper); HistogramaAguaEconomiaSemQuadraHelper jaCadastrado = (HistogramaAguaEconomiaSemQuadraHelper) listaSimplificadaAguaEconomia.get(posicao); jaCadastrado.setQuantidadeLigacoes(jaCadastrado.getQuantidadeLigacoes() + 1); jaCadastrado.setQuantidadeEconomia(jaCadastrado.getQuantidadeEconomia() + histogramaAguaEconomiaSemQuadraHelper.getQuantidadeEconomia()); BigDecimal valorFaturado = new BigDecimal( jaCadastrado.getValorFaturadoEconomia() + histogramaAguaEconomiaSemQuadraHelper.getValorFaturadoEconomia()) .setScale(2, RoundingMode.HALF_UP); jaCadastrado.setValorFaturadoEconomia(valorFaturado.floatValue()); jaCadastrado.setVolumeFaturadoEconomia(jaCadastrado.getVolumeFaturadoEconomia() + histogramaAguaEconomiaSemQuadraHelper.getVolumeFaturadoEconomia()); } else { listaSimplificadaAguaEconomia.add(histogramaAguaEconomiaSemQuadraHelper); } } //*************************************************************************** // Histograma Esgoto Ligacao //*************************************************************************** histogramaEsgotoLigacaoSemQuadraHelper = this.preparaDadosHistogramaEsgotoLigacao( idGerenciaRegional, idUnidadeNegocio, idElo, idLocalidade, idSetorCormecial, codigoSetorComercial, idTipoCategoria, idCategoria, idSubCategoria, idLigacaoMista, idConsumoTarifa, idPerfilImovel, idEsferaPoder, idSituacaoEsgoto, idConsumoRealEsgoto, idHidrometro, idPoco, idVolumeFixoEsgoto, percentualEsgoto, quantidadeConsumoEsgoto, quantidadeEconomia, valorEsgoto, consumoEsgoto, consumoMinimoEsgoto); // Agrupamos o Histograma Esgoto por Ligacao if (!histogramaEsgotoLigacaoSemQuadraHelper.getValorFaturadoLigacao().equals(0f)) { if (listaSimplificadaEsgotoLigacao.contains(histogramaEsgotoLigacaoSemQuadraHelper)) { int posicao = listaSimplificadaEsgotoLigacao.indexOf(histogramaEsgotoLigacaoSemQuadraHelper); HistogramaEsgotoLigacaoSemQuadraHelper jaCadastrado = (HistogramaEsgotoLigacaoSemQuadraHelper) listaSimplificadaEsgotoLigacao.get(posicao); jaCadastrado.setQuantidadeLigacao(jaCadastrado.getQuantidadeLigacao() + 1); jaCadastrado.setQuantidadeEconomiaLigacao(jaCadastrado.getQuantidadeEconomiaLigacao() + histogramaEsgotoLigacaoSemQuadraHelper.getQuantidadeEconomiaLigacao()); BigDecimal valorFaturado = new BigDecimal( jaCadastrado.getValorFaturadoLigacao() + histogramaEsgotoLigacaoSemQuadraHelper.getValorFaturadoLigacao()) .setScale(2, RoundingMode.HALF_UP); jaCadastrado.setValorFaturadoLigacao(valorFaturado.floatValue()); jaCadastrado.setVolumeFaturadoLigacao(jaCadastrado.getVolumeFaturadoLigacao() + histogramaEsgotoLigacaoSemQuadraHelper.getVolumeFaturadoLigacao()); } else { listaSimplificadaEsgotoLigacao.add(histogramaEsgotoLigacaoSemQuadraHelper); } } //*************************************************************************** // Histograma Esgoto Economia //*************************************************************************** histogramaEsgotoEconomiaSemQuadraHelper = this.preparaDadosHistogramaEsgotoEconomia( idGerenciaRegional, idUnidadeNegocio, idElo, idLocalidade, idSetorCormecial, codigoSetorComercial, idTipoCategoria, idCategoria, idSubCategoria, idConsumoTarifa, idPerfilImovel, idEsferaPoder, idSituacaoEsgoto, idConsumoRealEsgoto, idHidrometro, idPoco, idVolumeFixoEsgoto, percentualEsgoto, quantidadeConsumoEsgoto, quantidadeEconomia, valorEsgoto, consumoEsgoto, consumoMinimoEsgoto); // Agrupamos o histograma esgoto por economia if (!histogramaEsgotoEconomiaSemQuadraHelper.getValorFaturadoEconomia().equals(0f)) { if (listaSimplificadaEsgotoEconomia.contains(histogramaEsgotoEconomiaSemQuadraHelper)) { int posicao = listaSimplificadaEsgotoEconomia.indexOf(histogramaEsgotoEconomiaSemQuadraHelper); HistogramaEsgotoEconomiaSemQuadraHelper jaCadastrado = (HistogramaEsgotoEconomiaSemQuadraHelper) listaSimplificadaEsgotoEconomia.get(posicao); jaCadastrado.setQuantidadeEconomia(jaCadastrado.getQuantidadeEconomia() + histogramaEsgotoEconomiaSemQuadraHelper.getQuantidadeEconomia()); BigDecimal valorFaturado = new BigDecimal( jaCadastrado.getValorFaturadoEconomia() + histogramaEsgotoEconomiaSemQuadraHelper.getValorFaturadoEconomia()) .setScale(2, RoundingMode.HALF_UP); jaCadastrado.setValorFaturadoEconomia(valorFaturado.floatValue()); jaCadastrado.setVolumeFaturadoEconomia(jaCadastrado.getVolumeFaturadoEconomia() + histogramaEsgotoEconomiaSemQuadraHelper.getVolumeFaturadoEconomia()); jaCadastrado.setQuantidadeLigacoes(jaCadastrado.getQuantidadeLigacoes() + 1); } else { listaSimplificadaEsgotoEconomia.add(histogramaEsgotoEconomiaSemQuadraHelper); } } //*************************************************************************** // 2.2.1.2 Caso contrario (>1) }else if (quantidadeEconomia.intValue() > 1) { /************************************************************************************** *************************************************************************************** // [SB0011] - Prepara Dados do Histograma para UMA SubCategoria e MAIS DE UMA Economia; *************************************************************************************** **************************************************************************************/ Integer quantidadeConsumoAgua = consumoAgua; Integer quantidadeConsumoAguaEconomia = 0; Integer idLigacaoMista = 2; if (consumoAgua != null && quantidadeEconomia.intValue() != 0) { quantidadeConsumoAguaEconomia = (consumoAgua / quantidadeEconomia.intValue()); } Integer quantidadeConsumoEsgoto = consumoEsgoto; Integer quantidadeConsumoEsgotoEconomia = 0; if (consumoEsgoto != null && quantidadeEconomia.intValue() != 0) { quantidadeConsumoEsgotoEconomia = (consumoEsgoto / quantidadeEconomia.intValue()); } //*************************************************************************** // Histograma Agua Ligacao //*************************************************************************** histogramaAguaLigacaoSemQuadraHelper = this.preparaDadosHistogramaAguaLigacao( idGerenciaRegional, idUnidadeNegocio, idElo, idLocalidade, idSetorCormecial, codigoSetorComercial, idTipoCategoria, idCategoria, idSubCategoria, idLigacaoMista, idConsumoTarifa, idPerfilImovel, idEsferaPoder, idSituacaoAgua, idConsumoReal, idHidrometro, idPoco, idVolumeFixoAgua, quantidadeConsumoAgua, quantidadeEconomia, valorAgua, consumoAgua, consumoMinimoAgua); // Agrupamos o histograma agua ligacao if (!histogramaAguaLigacaoSemQuadraHelper.getValorFaturadoLigacao().equals(0f)) { if (listaSimplificadaAguaLigacao.contains(histogramaAguaLigacaoSemQuadraHelper)) { int posicao = listaSimplificadaAguaLigacao.indexOf(histogramaAguaLigacaoSemQuadraHelper); HistogramaAguaLigacaoSemQuadraHelper jaCadastrado = (HistogramaAguaLigacaoSemQuadraHelper) listaSimplificadaAguaLigacao.get(posicao); jaCadastrado.setQuantidadeLigacao(jaCadastrado.getQuantidadeLigacao() + 1); jaCadastrado.setQuantidadeEconomiaLigacao(jaCadastrado.getQuantidadeEconomiaLigacao() + histogramaAguaLigacaoSemQuadraHelper.getQuantidadeEconomiaLigacao()); BigDecimal valorFaturado = new BigDecimal( jaCadastrado.getValorFaturadoLigacao() + histogramaAguaLigacaoSemQuadraHelper.getValorFaturadoLigacao()) .setScale(2, RoundingMode.HALF_UP); jaCadastrado.setValorFaturadoLigacao(valorFaturado.floatValue()); jaCadastrado.setVolumeFaturadoLigacao(jaCadastrado.getVolumeFaturadoLigacao() + histogramaAguaLigacaoSemQuadraHelper.getVolumeFaturadoLigacao()); } else { listaSimplificadaAguaLigacao.add(histogramaAguaLigacaoSemQuadraHelper); } } //*************************************************************************** // Histograma Agua Economia //*************************************************************************** histogramaAguaEconomiaSemQuadraHelper = this.preparaDadosHistogramaAguaEconomia( idGerenciaRegional, idUnidadeNegocio, idElo, idLocalidade, idSetorCormecial, codigoSetorComercial, idTipoCategoria, idCategoria, idSubCategoria, idConsumoTarifa, idPerfilImovel, idEsferaPoder, idSituacaoAgua, idConsumoReal, idHidrometro, idPoco, idVolumeFixoAgua, quantidadeConsumoAguaEconomia, quantidadeEconomia, valorAgua, consumoAgua, consumoMinimoAgua); // Agrupamos o histograma agua por economia if (!histogramaAguaEconomiaSemQuadraHelper.getValorFaturadoEconomia().equals(0f)) { if (listaSimplificadaAguaEconomia.contains(histogramaAguaEconomiaSemQuadraHelper)) { int posicao = listaSimplificadaAguaEconomia.indexOf(histogramaAguaEconomiaSemQuadraHelper); HistogramaAguaEconomiaSemQuadraHelper jaCadastrado = (HistogramaAguaEconomiaSemQuadraHelper) listaSimplificadaAguaEconomia.get(posicao); jaCadastrado.setQuantidadeLigacoes(jaCadastrado.getQuantidadeLigacoes() + 1); jaCadastrado.setQuantidadeEconomia(jaCadastrado.getQuantidadeEconomia() + histogramaAguaEconomiaSemQuadraHelper.getQuantidadeEconomia()); BigDecimal valorFaturado = new BigDecimal( jaCadastrado.getValorFaturadoEconomia() + histogramaAguaEconomiaSemQuadraHelper.getValorFaturadoEconomia()) .setScale(2, RoundingMode.HALF_UP); jaCadastrado.setValorFaturadoEconomia(valorFaturado.floatValue()); jaCadastrado.setVolumeFaturadoEconomia(jaCadastrado.getVolumeFaturadoEconomia() + histogramaAguaEconomiaSemQuadraHelper.getVolumeFaturadoEconomia()); } else { listaSimplificadaAguaEconomia.add(histogramaAguaEconomiaSemQuadraHelper); } } //*************************************************************************** // Histograma Esgoto Ligacao //*************************************************************************** histogramaEsgotoLigacaoSemQuadraHelper = this.preparaDadosHistogramaEsgotoLigacao( idGerenciaRegional, idUnidadeNegocio, idElo, idLocalidade, idSetorCormecial, codigoSetorComercial, idTipoCategoria, idCategoria, idSubCategoria, idLigacaoMista, idConsumoTarifa, idPerfilImovel, idEsferaPoder, idSituacaoEsgoto, idConsumoRealEsgoto, idHidrometro, idPoco, idVolumeFixoEsgoto, percentualEsgoto, quantidadeConsumoEsgoto, quantidadeEconomia, valorEsgoto, consumoEsgoto, consumoMinimoEsgoto); // Agrupamos o Histograma Esgoto por Ligacao if (!histogramaEsgotoLigacaoSemQuadraHelper.getValorFaturadoLigacao().equals(0f)) { if (listaSimplificadaEsgotoLigacao.contains(histogramaEsgotoLigacaoSemQuadraHelper)) { int posicao = listaSimplificadaEsgotoLigacao.indexOf(histogramaEsgotoLigacaoSemQuadraHelper); HistogramaEsgotoLigacaoSemQuadraHelper jaCadastrado = (HistogramaEsgotoLigacaoSemQuadraHelper) listaSimplificadaEsgotoLigacao.get(posicao); jaCadastrado.setQuantidadeLigacao(jaCadastrado.getQuantidadeLigacao() + 1); jaCadastrado.setQuantidadeEconomiaLigacao(jaCadastrado.getQuantidadeEconomiaLigacao() + histogramaEsgotoLigacaoSemQuadraHelper.getQuantidadeEconomiaLigacao()); BigDecimal valorFaturado = new BigDecimal( jaCadastrado.getValorFaturadoLigacao() + histogramaEsgotoLigacaoSemQuadraHelper.getValorFaturadoLigacao()) .setScale(2, RoundingMode.HALF_UP); jaCadastrado.setValorFaturadoLigacao(valorFaturado.floatValue()); jaCadastrado.setVolumeFaturadoLigacao(jaCadastrado.getVolumeFaturadoLigacao() + histogramaEsgotoLigacaoSemQuadraHelper.getVolumeFaturadoLigacao()); } else { listaSimplificadaEsgotoLigacao.add(histogramaEsgotoLigacaoSemQuadraHelper); } } //*************************************************************************** // Histograma Esgoto Economia //*************************************************************************** histogramaEsgotoEconomiaSemQuadraHelper = this.preparaDadosHistogramaEsgotoEconomia( idGerenciaRegional, idUnidadeNegocio, idElo, idLocalidade, idSetorCormecial, codigoSetorComercial, idTipoCategoria, idCategoria, idSubCategoria, idConsumoTarifa, idPerfilImovel, idEsferaPoder, idSituacaoEsgoto, idConsumoRealEsgoto, idHidrometro, idPoco, idVolumeFixoEsgoto, percentualEsgoto, quantidadeConsumoEsgotoEconomia, quantidadeEconomia, valorEsgoto, consumoEsgoto, consumoMinimoEsgoto); // Agrupamos o histograma esgoto por economia if (!histogramaEsgotoEconomiaSemQuadraHelper.getValorFaturadoEconomia().equals(0f)) { if (listaSimplificadaEsgotoEconomia.contains(histogramaEsgotoEconomiaSemQuadraHelper)) { int posicao = listaSimplificadaEsgotoEconomia.indexOf(histogramaEsgotoEconomiaSemQuadraHelper); HistogramaEsgotoEconomiaSemQuadraHelper jaCadastrado = (HistogramaEsgotoEconomiaSemQuadraHelper) listaSimplificadaEsgotoEconomia.get(posicao); jaCadastrado.setQuantidadeEconomia(jaCadastrado.getQuantidadeEconomia() + histogramaEsgotoEconomiaSemQuadraHelper.getQuantidadeEconomia()); BigDecimal valorFaturado = new BigDecimal( jaCadastrado.getValorFaturadoEconomia() + histogramaEsgotoEconomiaSemQuadraHelper.getValorFaturadoEconomia()) .setScale(2, RoundingMode.HALF_UP); jaCadastrado.setValorFaturadoEconomia(valorFaturado.floatValue()); jaCadastrado.setVolumeFaturadoEconomia(jaCadastrado.getVolumeFaturadoEconomia() + histogramaEsgotoEconomiaSemQuadraHelper.getVolumeFaturadoEconomia()); jaCadastrado.setQuantidadeLigacoes(jaCadastrado.getQuantidadeLigacoes() + 1); } else { listaSimplificadaEsgotoEconomia.add(histogramaEsgotoEconomiaSemQuadraHelper); } } //*************************************************************************** } // 2.2.2 Caso contrario, a conta faturada corresponda a MAIS DE UMA SUBCATEGORIA; }else if (listaContaCategoria.size() > 1) { /*********************************************************************** ************************************************************************ // [SB0012] - Prepara Dados do Histograma para MAIS DE UMA SubCategoria; ************************************************************************ ***********************************************************************/ // Identificamos a categoria principal Categoria contaCategoriaPrincipal = this.repositorioGerencialCadastro.obterPrincipalCategoriaConta(idConta); Integer idCategoria = contaCategoriaPrincipal.getId(); Integer idTipoCategoria = 0; Integer idSubCategoria = 0; Short quantidadeEconomia = 0; BigDecimal valorAgua = new BigDecimal(0); Integer consumoAgua = 0; Integer consumoMinimoAgua = 0; BigDecimal valorEsgoto = new BigDecimal(0); Integer consumoEsgoto = 0; Integer consumoMinimoEsgoto = 0; // Utilizado para verificar ligacoes mistas Integer idCategoriaAtual = null; Integer idCategoriaAnterior = 0; Integer idLigacaoMista = 2; Integer quantidadeConsumoAgua = 0; Integer quantidadeConsumoEsgoto = 0; for(int x = 0; x < listaContaCategoria.size(); x++) { Object objContaCategoria = listaContaCategoria.get(x); Object[] retornoContaCategoria = (Object[]) objContaCategoria; idCategoriaAtual = (Integer) retornoContaCategoria[0]; if (!idCategoriaAtual.equals(idCategoriaAnterior) && !idCategoriaAnterior.equals(0)) { idLigacaoMista = 1; } idCategoriaAnterior = idCategoriaAtual; // Seleciona o Tipo e a SubCategoria da Principal Categoria da ContaCategoria if (idCategoria.equals((Integer) retornoContaCategoria[0])) { // Caso ja encontrado nao preenche mais; if (idTipoCategoria.equals(0)) { idTipoCategoria = (Integer) retornoContaCategoria[1]; idSubCategoria = (Integer) retornoContaCategoria[9]; } } Short valorQuantidadeEconomia = (Short) retornoContaCategoria[2]; quantidadeEconomia = (short) (quantidadeEconomia + valorQuantidadeEconomia); if (retornoContaCategoria[3] != null) { valorAgua = valorAgua.add((BigDecimal) retornoContaCategoria[3]); } if (retornoContaCategoria[4] != null) { quantidadeConsumoAgua += (Integer) retornoContaCategoria[4]; consumoAgua += (Integer) retornoContaCategoria[4]; } if (retornoContaCategoria[5] != null) { consumoMinimoAgua += (Integer) retornoContaCategoria[5]; } if (retornoContaCategoria[6] != null) { valorEsgoto = valorEsgoto.add((BigDecimal) retornoContaCategoria[6]); } if (retornoContaCategoria[7] != null) { quantidadeConsumoEsgoto += (Integer) retornoContaCategoria[7]; consumoEsgoto += (Integer) retornoContaCategoria[7]; } if (retornoContaCategoria[8] != null) { consumoMinimoEsgoto += (Integer) retornoContaCategoria[8]; } // Verificamos o Volume Faturado Agua if (consumoAgua != null && consumoMinimoAgua != null) { if (consumoAgua >= consumoMinimoAgua) { consumoMinimoAgua = consumoAgua; } else { consumoAgua = consumoMinimoAgua; } } // Verificamos o Volume Faturado Agua if (consumoEsgoto != null && consumoMinimoEsgoto != null) { if (consumoEsgoto >= consumoMinimoEsgoto) { consumoMinimoEsgoto = consumoEsgoto; } else { consumoEsgoto = consumoMinimoEsgoto; } } } //************************************************************ // Autor: Ivan Sergio // Responsavel: Edardo // Data: 22/12/2010 // Caso a subcategoria possua indicador de tarifa de consumo // diferente de 1 (SIM), deve-se atribuir o valo 0 (zero); //************************************************************ idSubCategoria = this.validarIndicadorTarifaConsumoSubcategoria(idSubCategoria); //************************************************************ //Integer quantidadeConsumoAgua = consumoAgua; Integer quantidadeConsumoAguaEconomia = 0; if (quantidadeConsumoAgua != null && quantidadeEconomia.intValue() != 0) { quantidadeConsumoAguaEconomia = (quantidadeConsumoAgua / quantidadeEconomia.intValue()); } //Integer quantidadeConsumoEsgoto = consumoEsgoto; Integer quantidadeConsumoEsgotoEconomia = 0; if (quantidadeConsumoEsgoto != null && quantidadeEconomia.intValue() != 0) { quantidadeConsumoEsgotoEconomia = (quantidadeConsumoEsgoto / quantidadeEconomia.intValue()); } //*************************************************************************** // Histograma Agua Ligacao //*************************************************************************** histogramaAguaLigacaoSemQuadraHelper = this.preparaDadosHistogramaAguaLigacao( idGerenciaRegional, idUnidadeNegocio, idElo, idLocalidade, idSetorCormecial, codigoSetorComercial, idTipoCategoria, idCategoria, idSubCategoria, idLigacaoMista, idConsumoTarifa, idPerfilImovel, idEsferaPoder, idSituacaoAgua, idConsumoReal, idHidrometro, idPoco, idVolumeFixoAgua, quantidadeConsumoAgua, quantidadeEconomia, valorAgua, consumoAgua, consumoMinimoAgua); // Agrupamos o histograma agua ligacao if (!histogramaAguaLigacaoSemQuadraHelper.getValorFaturadoLigacao().equals(0f)) { if (listaSimplificadaAguaLigacao.contains(histogramaAguaLigacaoSemQuadraHelper)) { int posicao = listaSimplificadaAguaLigacao.indexOf(histogramaAguaLigacaoSemQuadraHelper); HistogramaAguaLigacaoSemQuadraHelper jaCadastrado = (HistogramaAguaLigacaoSemQuadraHelper) listaSimplificadaAguaLigacao.get(posicao); jaCadastrado.setQuantidadeLigacao(jaCadastrado.getQuantidadeLigacao() + 1); jaCadastrado.setQuantidadeEconomiaLigacao(jaCadastrado.getQuantidadeEconomiaLigacao() + histogramaAguaLigacaoSemQuadraHelper.getQuantidadeEconomiaLigacao()); BigDecimal valorFaturado = new BigDecimal( jaCadastrado.getValorFaturadoLigacao() + histogramaAguaLigacaoSemQuadraHelper.getValorFaturadoLigacao()) .setScale(2, RoundingMode.HALF_UP); jaCadastrado.setValorFaturadoLigacao(valorFaturado.floatValue()); jaCadastrado.setVolumeFaturadoLigacao(jaCadastrado.getVolumeFaturadoLigacao() + histogramaAguaLigacaoSemQuadraHelper.getVolumeFaturadoLigacao()); } else { listaSimplificadaAguaLigacao.add(histogramaAguaLigacaoSemQuadraHelper); } } //*************************************************************************** // Histograma Agua Economia //*************************************************************************** histogramaAguaEconomiaSemQuadraHelper = this.preparaDadosHistogramaAguaEconomia( idGerenciaRegional, idUnidadeNegocio, idElo, idLocalidade, idSetorCormecial, codigoSetorComercial, idTipoCategoria, idCategoria, idSubCategoria, idConsumoTarifa, idPerfilImovel, idEsferaPoder, idSituacaoAgua, idConsumoReal, idHidrometro, idPoco, idVolumeFixoAgua, quantidadeConsumoAguaEconomia, quantidadeEconomia, valorAgua, consumoAgua, consumoMinimoAgua); // Agrupamos o histograma agua por economia if (!histogramaAguaEconomiaSemQuadraHelper.getValorFaturadoEconomia().equals(0f)) { if (listaSimplificadaAguaEconomia.contains(histogramaAguaEconomiaSemQuadraHelper)) { int posicao = listaSimplificadaAguaEconomia.indexOf(histogramaAguaEconomiaSemQuadraHelper); HistogramaAguaEconomiaSemQuadraHelper jaCadastrado = (HistogramaAguaEconomiaSemQuadraHelper) listaSimplificadaAguaEconomia.get(posicao); jaCadastrado.setQuantidadeLigacoes(jaCadastrado.getQuantidadeLigacoes() + 1); jaCadastrado.setQuantidadeEconomia(jaCadastrado.getQuantidadeEconomia() + histogramaAguaEconomiaSemQuadraHelper.getQuantidadeEconomia()); BigDecimal valorFaturado = new BigDecimal( jaCadastrado.getValorFaturadoEconomia() + histogramaAguaEconomiaSemQuadraHelper.getValorFaturadoEconomia()) .setScale(2, RoundingMode.HALF_UP); jaCadastrado.setValorFaturadoEconomia(valorFaturado.floatValue()); jaCadastrado.setVolumeFaturadoEconomia(jaCadastrado.getVolumeFaturadoEconomia() + histogramaAguaEconomiaSemQuadraHelper.getVolumeFaturadoEconomia()); } else { listaSimplificadaAguaEconomia.add(histogramaAguaEconomiaSemQuadraHelper); } } //*************************************************************************** // Histograma Esgoto Ligacao //*************************************************************************** histogramaEsgotoLigacaoSemQuadraHelper = this.preparaDadosHistogramaEsgotoLigacao( idGerenciaRegional, idUnidadeNegocio, idElo, idLocalidade, idSetorCormecial, codigoSetorComercial, idTipoCategoria, idCategoria, idSubCategoria, idLigacaoMista, idConsumoTarifa, idPerfilImovel, idEsferaPoder, idSituacaoEsgoto, idConsumoRealEsgoto, idHidrometro, idPoco, idVolumeFixoEsgoto, percentualEsgoto, quantidadeConsumoEsgoto, quantidadeEconomia, valorEsgoto, consumoEsgoto, consumoMinimoEsgoto); // Agrupamos o Histograma Esgoto por Ligacao if (!histogramaEsgotoLigacaoSemQuadraHelper.getValorFaturadoLigacao().equals(0f)) { if (listaSimplificadaEsgotoLigacao.contains(histogramaEsgotoLigacaoSemQuadraHelper)) { int posicao = listaSimplificadaEsgotoLigacao.indexOf(histogramaEsgotoLigacaoSemQuadraHelper); HistogramaEsgotoLigacaoSemQuadraHelper jaCadastrado = (HistogramaEsgotoLigacaoSemQuadraHelper) listaSimplificadaEsgotoLigacao.get(posicao); jaCadastrado.setQuantidadeLigacao(jaCadastrado.getQuantidadeLigacao() + 1); jaCadastrado.setQuantidadeEconomiaLigacao(jaCadastrado.getQuantidadeEconomiaLigacao() + histogramaEsgotoLigacaoSemQuadraHelper.getQuantidadeEconomiaLigacao()); BigDecimal valorFaturado = new BigDecimal( jaCadastrado.getValorFaturadoLigacao() + histogramaEsgotoLigacaoSemQuadraHelper.getValorFaturadoLigacao()) .setScale(2, RoundingMode.HALF_UP); jaCadastrado.setValorFaturadoLigacao(valorFaturado.floatValue()); jaCadastrado.setVolumeFaturadoLigacao(jaCadastrado.getVolumeFaturadoLigacao() + histogramaEsgotoLigacaoSemQuadraHelper.getVolumeFaturadoLigacao()); } else { listaSimplificadaEsgotoLigacao.add(histogramaEsgotoLigacaoSemQuadraHelper); } } //*************************************************************************** // Histograma Esgoto Economia //*************************************************************************** histogramaEsgotoEconomiaSemQuadraHelper = this.preparaDadosHistogramaEsgotoEconomia( idGerenciaRegional, idUnidadeNegocio, idElo, idLocalidade, idSetorCormecial, codigoSetorComercial, idTipoCategoria, idCategoria, idSubCategoria, idConsumoTarifa, idPerfilImovel, idEsferaPoder, idSituacaoEsgoto, idConsumoRealEsgoto, idHidrometro, idPoco, idVolumeFixoEsgoto, percentualEsgoto, quantidadeConsumoEsgotoEconomia, quantidadeEconomia, valorEsgoto, consumoEsgoto, consumoMinimoEsgoto); // Agrupamos o histograma esgoto por economia if (!histogramaEsgotoEconomiaSemQuadraHelper.getValorFaturadoEconomia().equals(0f)) { if (listaSimplificadaEsgotoEconomia.contains(histogramaEsgotoEconomiaSemQuadraHelper)) { int posicao = listaSimplificadaEsgotoEconomia.indexOf(histogramaEsgotoEconomiaSemQuadraHelper); HistogramaEsgotoEconomiaSemQuadraHelper jaCadastrado = (HistogramaEsgotoEconomiaSemQuadraHelper) listaSimplificadaEsgotoEconomia.get(posicao); jaCadastrado.setQuantidadeEconomia(jaCadastrado.getQuantidadeEconomia() + histogramaEsgotoEconomiaSemQuadraHelper.getQuantidadeEconomia()); BigDecimal valorFaturado = new BigDecimal( jaCadastrado.getValorFaturadoEconomia() + histogramaEsgotoEconomiaSemQuadraHelper.getValorFaturadoEconomia()) .setScale(2, RoundingMode.HALF_UP); jaCadastrado.setValorFaturadoEconomia(valorFaturado.floatValue()); jaCadastrado.setVolumeFaturadoEconomia(jaCadastrado.getVolumeFaturadoEconomia() + histogramaEsgotoEconomiaSemQuadraHelper.getVolumeFaturadoEconomia()); jaCadastrado.setQuantidadeLigacoes(jaCadastrado.getQuantidadeLigacoes() + 1); } else { listaSimplificadaEsgotoEconomia.add(histogramaEsgotoEconomiaSemQuadraHelper); } } } } } } } /**************************************************************** * Inseri Histograma Agua Ligacao ****************************************************************/ System.out.println("HISTOGRAMA - INSERINDO AGUA LIGACAO: " + listaSimplificadaAguaLigacao.size() + " registros."); for (int i = 0; i < listaSimplificadaAguaLigacao.size(); i++) { this.repositorioGerencialCadastro.inserirHistogramaAguaLigacaoSemQuadra( anoMesReferencia, (HistogramaAguaLigacaoSemQuadraHelper) listaSimplificadaAguaLigacao.get(i)); } /**************************************************************** * Inseri Histograma Agua Economia ****************************************************************/ System.out.println("HISTOGRAMA - INSERINDO AGUA ECONOMIA: " + listaSimplificadaAguaEconomia.size() + " registros."); for (int i = 0; i < listaSimplificadaAguaEconomia.size(); i++) { this.repositorioGerencialCadastro.inserirHistogramaAguaEconomimaSemQuadra( anoMesReferencia, (HistogramaAguaEconomiaSemQuadraHelper) listaSimplificadaAguaEconomia.get(i)); } /**************************************************************** * Inseri Histograma Esgoto Ligacao ****************************************************************/ System.out.println("HISTOGRAMA - INSERINDO ESGOTO LIGACAO: " + listaSimplificadaEsgotoLigacao.size() + " registros."); for (int i = 0; i < listaSimplificadaEsgotoLigacao.size(); i++) { this.repositorioGerencialCadastro.inserirHistogramaEsgotoLigacaoSemQuadra( anoMesReferencia, (HistogramaEsgotoLigacaoSemQuadraHelper) listaSimplificadaEsgotoLigacao.get(i)); } /**************************************************************** * Inseri Histograma Esgoto Economia ****************************************************************/ System.out.println("HISTOGRAMA - INSERINDO ESGOTO ECONOMIA: " + listaSimplificadaEsgotoEconomia.size() + " registros."); for (int i = 0; i < listaSimplificadaEsgotoEconomia.size(); i++) { this.repositorioGerencialCadastro.inserirHistogramaEsgotoEconomiaSemQuadra( anoMesReferencia, (HistogramaEsgotoEconomiaSemQuadraHelper) listaSimplificadaEsgotoEconomia.get(i)); } this.gerarResumoHistogramaImoveisNaoFaturadosSemQuadra( anoMesReferencia, idSetor, idFuncionalidadeIniciada); getControladorBatch().encerrarUnidadeProcessamentoBatch(null, idUnidadeIniciada, false); } catch (Exception ex) { System.out.println(" ERRO NO SETOR COMERCIAL " + idSetor); ex.printStackTrace(); getControladorBatch().encerrarUnidadeProcessamentoBatch(ex, idUnidadeIniciada, true); throw new EJBException(ex); } } /*** * [UC1057] - Gerar Histograma de Agua e Esgoto Sem Quadras * [SB0001] - Prepara Dados do Histograma Agua Ligacao * @author Ivan Sergio * @date: 13/08/2010 * * @param idGerenciaRegional * @param idUnidadeNegocio * @param idElo * @param idLocalidade * @param idSetorCormecial * @param codigoSetorComercial * @param idTipoCategoria * @param idCategoria * @param idSubcategoria * @param idLigacaoMista * @param idConsumoTarifa * @param idPerfilImovel * @param idEsferaPoder * @param idSituacaoAgua * @param idConsumoReal * @param idHidrometro * @param idPoco * @param idVolumeFixoAgua * @param quantidadeConsumoAgua * @param quantidadeEconomia * @param valorAgua * @param consumoAgua * @param consumoMinimoAgua * @return * @throws ControladorException */ private HistogramaAguaLigacaoSemQuadraHelper preparaDadosHistogramaAguaLigacao( Integer idGerenciaRegional, Integer idUnidadeNegocio, Integer idElo, Integer idLocalidade, Integer idSetorCormecial, Integer codigoSetorComercial, Integer idTipoCategoria, Integer idCategoria, Integer idSubcategoria, Integer idLigacaoMista, Integer idConsumoTarifa, Integer idPerfilImovel, Integer idEsferaPoder, Integer idSituacaoAgua, Integer idConsumoReal, Integer idHidrometro, Integer idPoco, Integer idVolumeFixoAgua, Integer quantidadeConsumoAgua, Short quantidadeEconomia, BigDecimal valorAgua, Integer consumoAgua, Integer consumoMinimoAgua) throws ControladorException { HistogramaAguaLigacaoSemQuadraHelper histogramaAguaLigacaoSemQuadraHelper = new HistogramaAguaLigacaoSemQuadraHelper( idGerenciaRegional, idUnidadeNegocio, idElo, idLocalidade, idSetorCormecial, codigoSetorComercial, idTipoCategoria, idCategoria, idSubcategoria, idLigacaoMista, idConsumoTarifa, idPerfilImovel, idEsferaPoder, idSituacaoAgua, idConsumoReal, idHidrometro, idPoco, idVolumeFixoAgua, quantidadeConsumoAgua); try { //********************************************************************************************** // Prepara dados Agua if (valorAgua != null && !valorAgua.equals("0.00")) { histogramaAguaLigacaoSemQuadraHelper.setQuantidadeLigacao(1); histogramaAguaLigacaoSemQuadraHelper.setQuantidadeEconomiaLigacao(quantidadeEconomia.intValue()); histogramaAguaLigacaoSemQuadraHelper.setValorFaturadoLigacao(valorAgua.floatValue()); // [SB0004] - Obter Volume Faturado Agua; Integer volumeFaturadoAguaLigacao = 0; if (consumoAgua != null && consumoMinimoAgua != null) { if (consumoAgua >= consumoMinimoAgua) { volumeFaturadoAguaLigacao = consumoAgua; } else { volumeFaturadoAguaLigacao = consumoMinimoAgua; } } histogramaAguaLigacaoSemQuadraHelper.setVolumeFaturadoLigacao(volumeFaturadoAguaLigacao); } //********************************************************************************************** } catch (Exception ex) { ex.printStackTrace(); throw new EJBException(ex); } return histogramaAguaLigacaoSemQuadraHelper; } /*** * [UC1057] - Gerar Histograma de Agua e Esgoto Sem Quadras * [SB0001] - Prepara Dados do Histograma Agua Economia * @author Ivan Sergio * @date: 13/08/2010 * * @param idGerenciaRegional * @param idUnidadeNegocio * @param idElo * @param idLocalidade * @param idSetorCormecial * @param codigoSetorComercial * @param idTipoCategoria * @param idCategoria * @param idSubCategoria * @param idConsumoTarifa * @param idPerfilImovel * @param idEsferaPoder * @param idSituacaoAgua * @param idConsumoReal * @param idHidrometro * @param idPoco * @param idVolumeFixoAgua * @param quantidadeConsumoAgua * @param quantidadeEconomia * @param valorAgua * @param consumoAgua * @param consumoMinimoAgua * @return * @throws ControladorException */ private HistogramaAguaEconomiaSemQuadraHelper preparaDadosHistogramaAguaEconomia( Integer idGerenciaRegional, Integer idUnidadeNegocio, Integer idElo, Integer idLocalidade, Integer idSetorCormecial, Integer codigoSetorComercial, Integer idTipoCategoria, Integer idCategoria, Integer idSubCategoria, Integer idConsumoTarifa, Integer idPerfilImovel, Integer idEsferaPoder, Integer idSituacaoAgua, Integer idConsumoReal, Integer idHidrometro, Integer idPoco, Integer idVolumeFixoAgua, Integer quantidadeConsumoAgua, Short quantidadeEconomia, BigDecimal valorAgua, Integer consumoAgua, Integer consumoMinimoAgua) throws ControladorException { HistogramaAguaEconomiaSemQuadraHelper histogramaAguaEconomiaSemQuadraHelper = new HistogramaAguaEconomiaSemQuadraHelper( idGerenciaRegional, idUnidadeNegocio, idElo, idLocalidade, idSetorCormecial, codigoSetorComercial, idTipoCategoria, idCategoria, idSubCategoria, idConsumoTarifa, idPerfilImovel, idEsferaPoder, idSituacaoAgua, idConsumoReal, idHidrometro, idPoco, idVolumeFixoAgua, quantidadeConsumoAgua, 0); try { //********************************************************************************************** // Prepara dados Agua //********************************************************************************************** if (valorAgua != null && !valorAgua.equals("0.00")) { histogramaAguaEconomiaSemQuadraHelper.setQuantidadeLigacoes(1); histogramaAguaEconomiaSemQuadraHelper.setQuantidadeEconomia(quantidadeEconomia.intValue()); histogramaAguaEconomiaSemQuadraHelper.setValorFaturadoEconomia(valorAgua.floatValue()); // [SB0004] - Obter Volume Faturado Agua; Integer volumeFaturadoAguaEconomia = 0; if (consumoAgua != null && consumoMinimoAgua != null) { if (consumoAgua >= consumoMinimoAgua) { volumeFaturadoAguaEconomia = consumoAgua; } else { volumeFaturadoAguaEconomia = consumoMinimoAgua; } } histogramaAguaEconomiaSemQuadraHelper.setVolumeFaturadoEconomia(volumeFaturadoAguaEconomia); } //********************************************************************************************** } catch (Exception ex) { ex.printStackTrace(); throw new EJBException(ex); } return histogramaAguaEconomiaSemQuadraHelper; } /*** * [UC1057] - Gerar Histograma de Agua e Esgoto Sem Quadras * [SB0001] - Prepara Dados do Histograma Esgoto Ligacao * @author Ivan Sergio * @date: 13/08/2010 * * @param idGerenciaRegional * @param idUnidadeNegocio * @param idElo * @param idLocalidade * @param idSetorCormecial * @param codigoSetorComercial * @param idTipoCategoria * @param idCategoria * @param idSubCategoria * @param idLigacaoMista * @param idConsumoTarifa * @param idPerfilImovel * @param idEsferaPoder * @param idSituacaoEsgoto * @param idConsumoRealEsgoto * @param idHidrometro * @param idPoco * @param idVolumeFixoEsgoto * @param percentualEsgoto * @param quantidadeConsumoEsgoto * @param quantidadeEconomia * @param valorEsgoto * @param consumoEsgoto * @param consumoMinimoEsgoto * @return * @throws ControladorException */ private HistogramaEsgotoLigacaoSemQuadraHelper preparaDadosHistogramaEsgotoLigacao( Integer idGerenciaRegional, Integer idUnidadeNegocio, Integer idElo, Integer idLocalidade, Integer idSetorCormecial, Integer codigoSetorComercial, Integer idTipoCategoria, Integer idCategoria, Integer idSubCategoria, Integer idLigacaoMista, Integer idConsumoTarifa, Integer idPerfilImovel, Integer idEsferaPoder, Integer idSituacaoEsgoto, Integer idConsumoRealEsgoto, Integer idHidrometro, Integer idPoco, Integer idVolumeFixoEsgoto, Float percentualEsgoto, Integer quantidadeConsumoEsgoto, Short quantidadeEconomia, BigDecimal valorEsgoto, Integer consumoEsgoto, Integer consumoMinimoEsgoto) throws ControladorException { HistogramaEsgotoLigacaoSemQuadraHelper histogramaEsgotoLigacaoSemQuadraHelper = new HistogramaEsgotoLigacaoSemQuadraHelper( idGerenciaRegional, idUnidadeNegocio, idElo, idLocalidade, idSetorCormecial, codigoSetorComercial, idTipoCategoria, idCategoria, idSubCategoria, idLigacaoMista, idConsumoTarifa, idPerfilImovel, idEsferaPoder, idSituacaoEsgoto, idConsumoRealEsgoto, idHidrometro, idPoco, idVolumeFixoEsgoto, percentualEsgoto, quantidadeConsumoEsgoto); try { //********************************************************************************************** // Prepara dados Esgoto //********************************************************************************************** if (valorEsgoto != null && !valorEsgoto.equals("0.00")) { histogramaEsgotoLigacaoSemQuadraHelper.setQuantidadeLigacao(1); histogramaEsgotoLigacaoSemQuadraHelper.setQuantidadeEconomiaLigacao(quantidadeEconomia.intValue()); histogramaEsgotoLigacaoSemQuadraHelper.setValorFaturadoLigacao(valorEsgoto.floatValue()); // [SB0005] - Obter Volume Faturado Esgoto; Integer volumeFaturadoEsgotoLigacao = 0; if (consumoEsgoto != null && consumoMinimoEsgoto != null) { if (consumoEsgoto >= consumoMinimoEsgoto) { volumeFaturadoEsgotoLigacao = consumoEsgoto; } else { volumeFaturadoEsgotoLigacao = consumoMinimoEsgoto; } } histogramaEsgotoLigacaoSemQuadraHelper.setVolumeFaturadoLigacao(volumeFaturadoEsgotoLigacao); } //********************************************************************************************** } catch (Exception ex) { ex.printStackTrace(); throw new EJBException(ex); } return histogramaEsgotoLigacaoSemQuadraHelper; } /*** * [UC1057] - Gerar Histograma de Agua e Esgoto Sem Quadras * [SB0001] - Prepara Dados do Histograma Esgoto Economia * @author Ivan Sergio * @date: 13/08/2010 * * @param idGerenciaRegional * @param idUnidadeNegocio * @param idElo * @param idLocalidade * @param idSetorCormecial * @param codigoSetorComercial * @param idTipoCategoria * @param idCategoria * @param idSubCategoria * @param idConsumoTarifa * @param idPerfilImovel * @param idEsferaPoder * @param idSituacaoEsgoto * @param idConsumoRealEsgoto * @param idHidrometro * @param idPoco * @param idVolumeFixoEsgoto * @param percentualEsgoto * @param quantidadeConsumoEsgoto * @param quantidadeEconomia * @param valorEsgoto * @param consumoEsgoto * @param consumoMinimoEsgoto * @return * @throws ControladorException */ private HistogramaEsgotoEconomiaSemQuadraHelper preparaDadosHistogramaEsgotoEconomia( Integer idGerenciaRegional, Integer idUnidadeNegocio, Integer idElo, Integer idLocalidade, Integer idSetorCormecial, Integer codigoSetorComercial, Integer idTipoCategoria, Integer idCategoria, Integer idSubCategoria, Integer idConsumoTarifa, Integer idPerfilImovel, Integer idEsferaPoder, Integer idSituacaoEsgoto, Integer idConsumoRealEsgoto, Integer idHidrometro, Integer idPoco, Integer idVolumeFixoEsgoto, Float percentualEsgoto, Integer quantidadeConsumoEsgoto, Short quantidadeEconomia, BigDecimal valorEsgoto, Integer consumoEsgoto, Integer consumoMinimoEsgoto) throws ControladorException { HistogramaEsgotoEconomiaSemQuadraHelper histogramaEsgotoEconomiaSemQuadraHelper = new HistogramaEsgotoEconomiaSemQuadraHelper( idGerenciaRegional, idUnidadeNegocio, idElo, idLocalidade, idSetorCormecial, codigoSetorComercial, idTipoCategoria, idCategoria, idSubCategoria, idConsumoTarifa, idPerfilImovel, idEsferaPoder, idSituacaoEsgoto, idConsumoRealEsgoto, idHidrometro, idPoco, idVolumeFixoEsgoto, percentualEsgoto, quantidadeConsumoEsgoto, 0); try { //********************************************************************************************** // Prepara dados Esgoto //********************************************************************************************** if (valorEsgoto != null && !valorEsgoto.equals("0.00")) { histogramaEsgotoEconomiaSemQuadraHelper.setQuantidadeLigacoes(1); histogramaEsgotoEconomiaSemQuadraHelper.setQuantidadeEconomia(quantidadeEconomia.intValue()); histogramaEsgotoEconomiaSemQuadraHelper.setValorFaturadoEconomia(valorEsgoto.floatValue()); // [SB0005] - Obter Volume Faturado Esgoto; Integer volumeFaturadoEsgotoEconomia = 0; if (consumoEsgoto != null && consumoMinimoEsgoto != null) { if (consumoEsgoto >= consumoMinimoEsgoto) { volumeFaturadoEsgotoEconomia = consumoEsgoto; } else { volumeFaturadoEsgotoEconomia = consumoMinimoEsgoto; } } histogramaEsgotoEconomiaSemQuadraHelper.setVolumeFaturadoEconomia(volumeFaturadoEsgotoEconomia); } //********************************************************************************************** } catch (Exception ex) { ex.printStackTrace(); throw new EJBException(ex); } return histogramaEsgotoEconomiaSemQuadraHelper; } /** * [UC1057] Gerar Histograma de Agua e Esgoto Sem Quadra * [SB2000] Gerar Histograma Imoveis Nao Faturados * @author Ivan Sergio * @date 19/08/2010 * * @param anoMesReferencia * @param idSetor * @param unidadeIniciada * @throws ControladorException */ public void gerarResumoHistogramaImoveisNaoFaturadosSemQuadra( int anoMesReferencia, int idSetor, int unidadeIniciada) throws ControladorException { try{ // selecionamos o consumo historico List consumoHistoricoHistograma = this.repositorioGerencialCadastro .getConsumoHistoricoImoveisNaoFaturadosSemQuadra(idSetor, anoMesReferencia); List<HistogramaAguaLigacaoSemQuadraHelper> listaSimplificadaAguaLigacao = new ArrayList<HistogramaAguaLigacaoSemQuadraHelper>(); List<HistogramaAguaEconomiaSemQuadraHelper> listaSimplificadaAguaEconomia = new ArrayList<HistogramaAguaEconomiaSemQuadraHelper>(); List<HistogramaEsgotoLigacaoSemQuadraHelper> listaSimplificadaEsgotoLigacao = new ArrayList<HistogramaEsgotoLigacaoSemQuadraHelper>(); List<HistogramaEsgotoEconomiaSemQuadraHelper> listaSimplificadaEsgotoEconomia = new ArrayList<HistogramaEsgotoEconomiaSemQuadraHelper>(); for (int i = 0; i < consumoHistoricoHistograma.size(); i++) { Object obj = consumoHistoricoHistograma.get(i); if (obj instanceof Object[]) { HistogramaAguaLigacaoSemQuadraHelper histogramaAguaLigacaoSemQuadraHelper; HistogramaAguaEconomiaSemQuadraHelper histogramaAguaEconomiaSemQuadraHelper; HistogramaEsgotoLigacaoSemQuadraHelper histogramaEsgotoLigacaoSemQuadraHelper; HistogramaEsgotoEconomiaSemQuadraHelper histogramaEsgotoEconomiaSemQuadraHelper; Object[] retorno = (Object[]) obj; Integer idImovel = (Integer) retorno[9]; Imovel imovel = new Imovel(); imovel.setId(idImovel); // Selecionamos todas as categorias distintas do imovel Collection colCategoriaImovel = this.repositorioGerencialCadastro.getCategoriasImovelDistintas( idImovel ); Iterator iteCategoriaImovel = colCategoriaImovel.iterator(); Integer consumoMinimoMes = 0; Integer consumoFaturadoMes = 0; Integer ligacaoMista = 0; // Obtemos o consumo m�nimo de cada categoria do imovel while ( iteCategoriaImovel.hasNext() ){ Categoria categoria = ( Categoria ) iteCategoriaImovel.next(); categoria.setConsumoMinimo( this.obterConsumoMinimoCategoria( imovel, categoria ) ); consumoMinimoMes += categoria.getConsumoMinimo(); ligacaoMista++; } ligacaoMista = ( ligacaoMista == 1 ? 2 : 1 ); // Selecionamos o consumo faturado do mes consumoFaturadoMes = (Integer) retorno[13]; Short quantidadeEconomiasImovel = (Short) retorno[11]; List<Long> consumosImovelporCategoria = new ArrayList<Long>(); List<Short> quantidadeEconomiasImovelporCategoria = new ArrayList<Short>(); Categoria categoriaPrincipal = null; Short quantidadeEconomiasAnterior = 0; // Obtemos o consumo do imovel para cada categoria e selecionamos // a principal categoria do imovel iteCategoriaImovel = colCategoriaImovel.iterator(); while( iteCategoriaImovel.hasNext() ){ Categoria categoria = ( Categoria ) iteCategoriaImovel.next(); long fator = ( consumoFaturadoMes - consumoMinimoMes ) / quantidadeEconomiasImovel; Short quantidadeEconomias = this.repositorioImovel.pesquisarObterQuantidadeEconomias( imovel, categoria ); long consumoImovelCategoria = categoria.getConsumoMinimo() + fator * quantidadeEconomias; consumosImovelporCategoria.add( consumoImovelCategoria ); quantidadeEconomiasImovelporCategoria.add( quantidadeEconomias ); // Selecionamos a categoria principal if ( categoriaPrincipal == null || quantidadeEconomias > quantidadeEconomiasAnterior ){ categoriaPrincipal = categoria; } quantidadeEconomiasAnterior = quantidadeEconomias; } // Variaveis para preenchimento dos Helper`s Integer idGerenciaRegional = (Integer) retorno[0]; Integer idUnidadeNegocio = (Integer) retorno[1]; Integer idElo = (Integer) retorno[2]; Integer idLocalidade = (Integer) retorno[3]; Integer idSetorCormecial = (Integer) retorno[4]; Integer codigoSetorComercial = (Integer) retorno[5]; // Verificamos se o imovel possue categoria mista Integer idConsumoTarifa = (Integer) retorno[6]; Integer idPerfilImovel = (Integer) retorno[7]; // Pesquisamos a esfera de poder Integer idEsferaPoder = this.repositorioGerencialCadastro .pesquisarEsferaPoderClienteResponsavelImovel(idImovel); // Verificamos se a esfera de poder foi encontrada // [FS0002] Verificar existencia de cliente responsavel if (idEsferaPoder.equals(0)) { Cliente clienteTemp = this.getControladorImovel() .consultarClienteUsuarioImovel(imovel); if (clienteTemp != null) { idEsferaPoder = clienteTemp.getClienteTipo() .getEsferaPoder().getId(); } } // Obtemos o percentual de esgoto Float percentualEsgoto = ( ( retorno[16] ) == null ? 0 : ( ( BigDecimal )retorno[16] ).floatValue() ); Integer idSituacaoAgua = (Integer) retorno[8]; Integer idSituacaoEsgoto = (Integer) retorno[10]; Integer idTipoLigacao = (Integer) retorno[12]; // Verificamos o consumo real Integer idConsumoReal = ( ( ( Integer ) retorno[15] ).equals( 1 ) ? 1 : 2 ); // Verificamos a existencia de hidrometro Integer idHidrometro = this.repositorioGerencialCadastro.verificarExistenciaHidrometro(idImovel); // Verificamos a existencia de poco no imovel Integer idPoco = ( retorno[14] != null && !( ( Integer ) retorno[14] ).equals( 0 ) ? 1 : 2 ); Integer idVolumeFixoAgua = this.repositorioGerencialCadastro.verificarExistenciaVolumeFixoAgua(idImovel); Integer idVolumeFixoEsgoto = this.repositorioGerencialCadastro.verificarExistenciaVolumeFixoEsgoto(idImovel); // Valores a serem calculados Integer quantidadeLigacaoAgua = 0; Integer quantidadeEconomiaLigacaoAgua = 0; Short quantidadeEconomiaLigacaoEsgoto = 0; Integer quantidadeEconomiaAgua = 0; Integer quantidadeEconomiaEsgoto = 0; Integer volumeFaturadoLigacaoAgua = 0; Long volumeFaturadoEconomiaAgua = 0l; Integer quantidadeLigacaoEsgoto = 0; Integer volumeFaturadoLigacaoEsgoto = 0; Long volumeFaturadoEconomiaEsgoto = 0l; Integer quantidadeConsumoAgua = 0; Integer quantidadeConsumoEsgoto = 0; Integer index = 0; iteCategoriaImovel = colCategoriaImovel.iterator(); while (iteCategoriaImovel.hasNext()) { // Verificamos se quantidade de economias dessa conta eh // maior do que a anterior Categoria categoria = (Categoria) iteCategoriaImovel .next(); if ( idTipoLigacao.equals( LigacaoTipo.LIGACAO_AGUA ) ){ /** ***** FIM DADOS PARA A TABELA HISTOGRAMA AGUA LIGACAO ******* **/ quantidadeLigacaoAgua++; quantidadeEconomiaLigacaoAgua += ( Short ) quantidadeEconomiasImovelporCategoria.get( index ); // Obtemos o consumo faturado de agua // Se o consumo de agua for menor do que o minimo * as // economias // Devemos pegar o minimo if ( ( Long ) consumosImovelporCategoria.get( index ) < categoria.getConsumoMinimo() ){ volumeFaturadoLigacaoAgua += categoria.getConsumoMinimo(); } else { volumeFaturadoLigacaoAgua += consumosImovelporCategoria.get( index ).intValue(); } quantidadeConsumoAgua += consumosImovelporCategoria.get( index ).intValue(); /** ***** FIM DADOS PARA A TABELA HISTOGRAMA AGUA LIGACAO ******* **/ /** **** DADOS PARA A TABELA HISTOGRAMA AGUA ECONOMIA ****** **/ quantidadeEconomiaAgua += ( Short ) quantidadeEconomiasImovelporCategoria.get( index ); // Obtemos o consumo faturado de agua // Se o consumo de agua for menor do que o minimo * as // economias // Devemos pegar o minimo if ( ( Long ) consumosImovelporCategoria.get( index ) < categoria.getConsumoMinimo() ){ volumeFaturadoEconomiaAgua += categoria.getConsumoMinimo(); } else { volumeFaturadoEconomiaAgua += consumosImovelporCategoria.get( index ); // quantidadeEconomiasImovelporCategoria.get( index ); } /** **** FIM DADOS PARA A TABELA HISTOGRAMA AGUA ECONOMIA ****** **/ } if ( idTipoLigacao.equals( LigacaoTipo.LIGACAO_ESGOTO ) ){ /** ***** DADOS PARA A TABELA HISTOGRAMA ESGOTO LIGACAO ****** **/ quantidadeLigacaoEsgoto++; quantidadeEconomiaLigacaoEsgoto = ( Short ) quantidadeEconomiasImovelporCategoria.get( index ); // Obtemos o consumo faturado de esgoto // Se o consumo de esgoto for menor do que o minimo * as // economias // Devemos pegar o minimo if ( ( Long ) consumosImovelporCategoria.get( index ) < categoria.getConsumoMinimo() ){ volumeFaturadoLigacaoEsgoto += categoria.getConsumoMinimo(); } else { volumeFaturadoLigacaoEsgoto += ( ( Long ) consumosImovelporCategoria.get( index ) ).intValue(); } quantidadeConsumoEsgoto += consumosImovelporCategoria.get( index ).intValue(); /** ***** FIM DADOS PARA A TABELA HISTOGRAMA ESGOTO LIGACAO ****** **/ /** **** DADOS PARA A TABELA HISTOGRAMA ESGOTO ECONOMIA ****** **/ quantidadeEconomiaEsgoto += ( Short ) quantidadeEconomiasImovelporCategoria.get( index ); // Obtemos o consumo faturado de agua // Se o consumo de agua for menor do que o minimo * as // economias // Devemos pegar o minimo if ( ( Long ) consumosImovelporCategoria.get( index ) < categoria.getConsumoMinimo() ){ volumeFaturadoEconomiaEsgoto += categoria.getConsumoMinimo(); } else { volumeFaturadoEconomiaEsgoto += consumosImovelporCategoria.get( index ); // quantidadeEconomiasImovelporCategoria.get( index ); } /** **** FIM DADOS PARA A TABELA HISTOGRAMA AGUA ECONOMIA ****** **/ } } if ( idTipoLigacao.equals( LigacaoTipo.LIGACAO_AGUA ) ){ // Criamos um helper para os histograma de agua por ligacao histogramaAguaLigacaoSemQuadraHelper = new HistogramaAguaLigacaoSemQuadraHelper( idGerenciaRegional, idUnidadeNegocio, idElo, idLocalidade, idSetorCormecial, codigoSetorComercial, categoriaPrincipal.getCategoriaTipo().getId(), categoriaPrincipal.getId(), 0, ligacaoMista, idConsumoTarifa, idPerfilImovel, idEsferaPoder, idSituacaoAgua, idConsumoReal, idHidrometro, idPoco, idVolumeFixoAgua, quantidadeConsumoAgua); if (listaSimplificadaAguaLigacao.contains(histogramaAguaLigacaoSemQuadraHelper)) { int posicao = listaSimplificadaAguaLigacao.indexOf(histogramaAguaLigacaoSemQuadraHelper); HistogramaAguaLigacaoSemQuadraHelper jaCadastrado = (HistogramaAguaLigacaoSemQuadraHelper) listaSimplificadaAguaLigacao.get(posicao); jaCadastrado.setQuantidadeLigacao( jaCadastrado.getQuantidadeLigacao() + quantidadeLigacaoAgua); jaCadastrado.setQuantidadeEconomiaLigacao( jaCadastrado.getQuantidadeEconomiaLigacao() + quantidadeEconomiaLigacaoAgua); jaCadastrado.setVolumeFaturadoLigacao( jaCadastrado.getVolumeFaturadoLigacao() + volumeFaturadoLigacaoAgua); } else { histogramaAguaLigacaoSemQuadraHelper.setQuantidadeLigacao(quantidadeLigacaoAgua); histogramaAguaLigacaoSemQuadraHelper.setQuantidadeEconomiaLigacao( quantidadeEconomiaLigacaoAgua); histogramaAguaLigacaoSemQuadraHelper.setValorFaturadoLigacao( 0f ); histogramaAguaLigacaoSemQuadraHelper.setVolumeFaturadoLigacao( volumeFaturadoLigacaoAgua); listaSimplificadaAguaLigacao.add(histogramaAguaLigacaoSemQuadraHelper); } // Criamos um helper para os histograma de agua por economia histogramaAguaEconomiaSemQuadraHelper = new HistogramaAguaEconomiaSemQuadraHelper( idGerenciaRegional, idUnidadeNegocio, idElo, idLocalidade, idSetorCormecial, codigoSetorComercial, categoriaPrincipal.getCategoriaTipo().getId(), categoriaPrincipal.getId(), 0, idConsumoTarifa, idPerfilImovel, idEsferaPoder, idSituacaoAgua, idConsumoReal, idHidrometro, idPoco, idVolumeFixoAgua, quantidadeConsumoAgua, quantidadeLigacaoAgua); if (listaSimplificadaAguaEconomia.contains(histogramaAguaEconomiaSemQuadraHelper)) { int posicao = listaSimplificadaAguaEconomia.indexOf( histogramaAguaEconomiaSemQuadraHelper); HistogramaAguaEconomiaSemQuadraHelper jaCadastrado = (HistogramaAguaEconomiaSemQuadraHelper) listaSimplificadaAguaEconomia.get(posicao); jaCadastrado.setQuantidadeEconomia( jaCadastrado.getQuantidadeEconomia() + quantidadeEconomiaAgua); jaCadastrado.setVolumeFaturadoEconomia( (Integer)jaCadastrado.getVolumeFaturadoEconomia().intValue() + volumeFaturadoEconomiaAgua.intValue()); jaCadastrado.setQuantidadeLigacoes( jaCadastrado.getQuantidadeLigacoes() + quantidadeLigacaoAgua); } else { histogramaAguaEconomiaSemQuadraHelper.setQuantidadeEconomia( quantidadeEconomiaAgua); histogramaAguaEconomiaSemQuadraHelper.setValorFaturadoEconomia( 0f ); histogramaAguaEconomiaSemQuadraHelper.setVolumeFaturadoEconomia( volumeFaturadoEconomiaAgua.intValue()); listaSimplificadaAguaEconomia.add(histogramaAguaEconomiaSemQuadraHelper); } } if ( idTipoLigacao.equals( LigacaoTipo.LIGACAO_ESGOTO ) ){ // Criamos um helper para os histograma de Esgoto por ligacao histogramaEsgotoLigacaoSemQuadraHelper = new HistogramaEsgotoLigacaoSemQuadraHelper( idGerenciaRegional, idUnidadeNegocio, idElo, idLocalidade, idSetorCormecial, codigoSetorComercial, categoriaPrincipal.getCategoriaTipo().getId(), categoriaPrincipal.getId(), 0, ligacaoMista, idConsumoTarifa, idPerfilImovel, idEsferaPoder, idSituacaoEsgoto, idConsumoReal, idHidrometro, idPoco, idVolumeFixoEsgoto, percentualEsgoto, quantidadeConsumoEsgoto); if (listaSimplificadaEsgotoLigacao.contains(histogramaEsgotoLigacaoSemQuadraHelper)) { int posicao = listaSimplificadaEsgotoLigacao.indexOf( histogramaEsgotoLigacaoSemQuadraHelper); HistogramaEsgotoLigacaoSemQuadraHelper jaCadastrado = (HistogramaEsgotoLigacaoSemQuadraHelper) listaSimplificadaEsgotoLigacao.get( posicao); jaCadastrado.setQuantidadeLigacao(jaCadastrado.getQuantidadeLigacao() + quantidadeLigacaoEsgoto); jaCadastrado.setQuantidadeEconomiaLigacao(jaCadastrado.getQuantidadeEconomiaLigacao() + quantidadeEconomiaLigacaoEsgoto); jaCadastrado.setVolumeFaturadoLigacao(jaCadastrado.getVolumeFaturadoLigacao() + volumeFaturadoLigacaoEsgoto); } else { histogramaEsgotoLigacaoSemQuadraHelper .setQuantidadeLigacao(quantidadeLigacaoEsgoto); histogramaEsgotoLigacaoSemQuadraHelper .setQuantidadeEconomiaLigacao(quantidadeEconomiaLigacaoEsgoto.intValue()); histogramaEsgotoLigacaoSemQuadraHelper .setValorFaturadoLigacao( 0f ); histogramaEsgotoLigacaoSemQuadraHelper .setVolumeFaturadoLigacao(volumeFaturadoLigacaoEsgoto); listaSimplificadaEsgotoLigacao .add(histogramaEsgotoLigacaoSemQuadraHelper); } // Criamos um helper para os histograma de Esgoto por Economia histogramaEsgotoEconomiaSemQuadraHelper = new HistogramaEsgotoEconomiaSemQuadraHelper( idGerenciaRegional, idUnidadeNegocio, idElo, idLocalidade, idSetorCormecial, codigoSetorComercial, categoriaPrincipal.getCategoriaTipo().getId(), categoriaPrincipal.getId(), 0, idConsumoTarifa, idPerfilImovel, idEsferaPoder, idSituacaoEsgoto, idConsumoReal, idHidrometro, idPoco, idVolumeFixoEsgoto, percentualEsgoto, quantidadeConsumoEsgoto, quantidadeLigacaoEsgoto); // Agrupamos o histograma esgoto por economia if (listaSimplificadaEsgotoEconomia.contains(histogramaEsgotoEconomiaSemQuadraHelper)) { int posicao = listaSimplificadaEsgotoEconomia.indexOf( histogramaEsgotoEconomiaSemQuadraHelper); HistogramaEsgotoEconomiaSemQuadraHelper jaCadastrado = (HistogramaEsgotoEconomiaSemQuadraHelper) listaSimplificadaEsgotoEconomia.get( posicao); jaCadastrado.setQuantidadeEconomia(jaCadastrado.getQuantidadeEconomia() + quantidadeEconomiaEsgoto); jaCadastrado.setVolumeFaturadoEconomia( ( (Integer) jaCadastrado .getVolumeFaturadoEconomia().intValue() + volumeFaturadoEconomiaEsgoto.intValue() ) ); jaCadastrado.setQuantidadeLigacoes( jaCadastrado.getQuantidadeLigacoes() + quantidadeLigacaoEsgoto); } else { histogramaEsgotoEconomiaSemQuadraHelper .setQuantidadeEconomia(quantidadeEconomiaEsgoto); histogramaEsgotoEconomiaSemQuadraHelper .setValorFaturadoEconomia( 0f ); histogramaEsgotoEconomiaSemQuadraHelper .setVolumeFaturadoEconomia(volumeFaturadoEconomiaEsgoto.intValue()); listaSimplificadaEsgotoEconomia .add(histogramaEsgotoEconomiaSemQuadraHelper); } } } } System.out.println("HISTOGRAMA NAO FATURADOS - INSERINDO AGUA LIGACAO: " + listaSimplificadaAguaLigacao.size() + " registros."); for (int j = 0; j < listaSimplificadaAguaLigacao.size(); j++) { this.repositorioGerencialCadastro.inserirHistogramaAguaLigacaoSemQuadra( anoMesReferencia, (HistogramaAguaLigacaoSemQuadraHelper) listaSimplificadaAguaLigacao.get(j)); } System.out.println("HISTOGRAMA NAO FATURADOS - INSERINDO AGUA ECONOMIA: " + listaSimplificadaAguaEconomia.size() + " registros."); for (int j = 0; j < listaSimplificadaAguaEconomia.size(); j++) { this.repositorioGerencialCadastro.inserirHistogramaAguaEconomimaSemQuadra( anoMesReferencia, (HistogramaAguaEconomiaSemQuadraHelper) listaSimplificadaAguaEconomia.get(j)); } System.out.println("HISTOGRAMA NAO FATURADOS - INSERINDO ESGOTO LIGACAO: " + listaSimplificadaEsgotoLigacao.size() + " registros."); for (int j = 0; j < listaSimplificadaEsgotoLigacao.size(); j++) { this.repositorioGerencialCadastro.inserirHistogramaEsgotoLigacaoSemQuadra( anoMesReferencia, (HistogramaEsgotoLigacaoSemQuadraHelper) listaSimplificadaEsgotoLigacao.get(j)); } System.out.println("HISTOGRAMA NAO FATURADOS - INSERINDO ESGOTO ECONOMIA: " + listaSimplificadaEsgotoEconomia.size() + " registros."); for (int j = 0; j < listaSimplificadaEsgotoEconomia.size(); j++) { this.repositorioGerencialCadastro.inserirHistogramaEsgotoEconomiaSemQuadra( anoMesReferencia, (HistogramaEsgotoEconomiaSemQuadraHelper) listaSimplificadaEsgotoEconomia.get(j)); } } catch (Exception ex) { System.out.println(" ERRO NO SETOR COMERCIAL " + idSetor); ex.printStackTrace(); throw new EJBException(ex); } } /** * [UC1057] - Gerar Histograma de Agua e Esgoto Sem Quadras * @author Ivan Sergio * @date: 22/12/2010 * * @param idSubcategoria * @return */ private Integer validarIndicadorTarifaConsumoSubcategoria(Integer idSubCategoria) throws ControladorException { try { FiltroSubCategoria filtroSubCategoria = new FiltroSubCategoria(); filtroSubCategoria.adicionarParametro(new ParametroSimples( FiltroSubCategoria.ID, idSubCategoria)); filtroSubCategoria.adicionarParametro(new ParametroSimples( FiltroSubCategoria.INDICADOR_TARIFA_CONSUMO, ConstantesSistema.SIM)); Subcategoria subcategoria = (Subcategoria) Util.retonarObjetoDeColecao( this.getControladorUtil().pesquisar(filtroSubCategoria, Subcategoria.class.getName())); if (subcategoria == null) { idSubCategoria = 0; } } catch (Exception ex) { ex.printStackTrace(); throw new EJBException(ex); } return idSubCategoria; } }