/**
   * < <Descrição do método>>
   *
   * @param bairros Description of the Parameter
   * @param bairroParametros Description of the Parameter
   * @return Descrição do retorno
   * @exception RelatorioVazioException Descrição da exceção
   */
  public Object executar() throws TarefaException {

    // public Map<Integer, byte[]> gerarRelatorioBairroManter(
    // Collection bairros,
    // Bairro bairroParametros,
    // int tipoFormatoRelatorio)
    //
    // throws RelatorioVazioException {

    Collection colecaoResumosAnormalidadeLeitura =
        (Collection) getParametro("colecaoResumosAnormalidadeLeitura");
    int opcaoTotalizacao = ((Integer) getParametro("opcaoTotalizacao")).intValue();
    int tipoFormatoRelatorio = (Integer) getParametro("tipoFormatoRelatorio");

    Fachada fachada = Fachada.getInstancia();

    // String tipoQuebra = null;

    // valor de retorno
    byte[] retorno = null;

    // coleção de beans do relatório
    List relatorioBeans = new ArrayList();

    Collection relatorioQuadraBeans = new ArrayList();

    Collection relatorioAnormalidadeBeans = new ArrayList();

    Collection relatorioAnormalidadeAguaBeans = new ArrayList();

    Collection relatorioAnormalidadeEsgotoBeans = new ArrayList();

    RelatorioResumoAnormalidadeLeituraSetorComercialBean relatorioBean = null;

    RelatorioResumoAnormalidadeLeituraQuadraBean relatorioQuadraBean = null;

    RelatorioResumoAnormalidadeLeituraLocalidadeBean relatorioLocalidadeBean = null;

    RelatorioResumoAnormalidadeLeituraEloBean relatorioEloBean = null;

    RelatorioResumoAnormalidadeLeituraGerenciaRegionalBean relatorioGerenciaRegionalBean = null;

    RelatorioResumoAnormalidadeLeituraEstadoBean relatorioEstadoBean = null;

    RelatorioResumoAnormalidadeLeituraAnormalidadeBean relatorioAnormalidadeBean = null;

    String nomeRelatorio = "";

    String numeroQuadra = null;
    // se a coleção de parâmetros da analise não for vazia
    if (colecaoResumosAnormalidadeLeitura != null && !colecaoResumosAnormalidadeLeitura.isEmpty()) {
      // coloca a coleção de parâmetros da analise no iterator
      Iterator colecaoResumosAnormalidadeLeituraIterator =
          colecaoResumosAnormalidadeLeitura.iterator();

      BigDecimal percentual = new BigDecimal("0.00");

      // int totalEstadoAgua = 0;
      // int totalEstadoEsgoto = 0;

      // laço para criar a coleção de parâmetros da analise

      ResumoAnormalidadeConsultaHelper resumoAnormalidadeConsultaHelper = null;

      if (opcaoTotalizacao == ConstantesSistema.CODIGO_SETOR_COMERCIAL) {

        nomeRelatorio = ConstantesRelatorios.RELATORIO_RESUMO_ANORMALIDADE_LEITURA_SETOR;

        Integer totalSetorComercialAgua = null;
        Integer totalSetorComercialPoco = null;
        String codigoSetorComercial = null;
        String descricaoSetorComercial = null;
        String descricaoLocalidade = null;

        while (colecaoResumosAnormalidadeLeituraIterator.hasNext()) {

          resumoAnormalidadeConsultaHelper =
              (ResumoAnormalidadeConsultaHelper) colecaoResumosAnormalidadeLeituraIterator.next();

          if (codigoSetorComercial == null) {
            codigoSetorComercial = resumoAnormalidadeConsultaHelper.getCodigoSetorComercial();
            descricaoSetorComercial = resumoAnormalidadeConsultaHelper.getDescricaoSetorComercial();
          }

          if (descricaoLocalidade == null) {
            descricaoLocalidade = resumoAnormalidadeConsultaHelper.getDescricaoLocalidade();
          }

          if (totalSetorComercialAgua == null) {
            if (resumoAnormalidadeConsultaHelper
                .getIdMedicaoTipo()
                .equals(MedicaoTipo.LIGACAO_AGUA.toString())) {
              totalSetorComercialAgua =
                  new Integer(resumoAnormalidadeConsultaHelper.getQuantidadeMedicao());
            }
          }

          if (totalSetorComercialPoco == null) {
            if (resumoAnormalidadeConsultaHelper
                .getIdMedicaoTipo()
                .equals(MedicaoTipo.POCO.toString())) {
              totalSetorComercialPoco =
                  new Integer(resumoAnormalidadeConsultaHelper.getQuantidadeMedicao());
            }
          }

          if (resumoAnormalidadeConsultaHelper
              .getIdMedicaoTipo()
              .equals(MedicaoTipo.LIGACAO_AGUA.toString())) {

            percentual =
                (new BigDecimal(resumoAnormalidadeConsultaHelper.getQuantidadeMedicao()))
                    .divide(new BigDecimal(totalSetorComercialAgua), 4, RoundingMode.HALF_UP);
            percentual = percentual.multiply(new BigDecimal("100"));

            relatorioAnormalidadeBean =
                new RelatorioResumoAnormalidadeLeituraAnormalidadeBean(
                    resumoAnormalidadeConsultaHelper.getDescricaoLeituraAnormalidadeFaturada(),
                    resumoAnormalidadeConsultaHelper.getQuantidadeMedicao(),
                    Util.formatarMoedaReal(percentual));

            relatorioAnormalidadeAguaBeans.add(relatorioAnormalidadeBean);

          } else {
            percentual =
                (new BigDecimal(resumoAnormalidadeConsultaHelper.getQuantidadeMedicao()))
                    .divide(new BigDecimal(totalSetorComercialPoco), 4, RoundingMode.HALF_UP);
            percentual = percentual.multiply(new BigDecimal("100"));

            relatorioAnormalidadeBean =
                new RelatorioResumoAnormalidadeLeituraAnormalidadeBean(
                    resumoAnormalidadeConsultaHelper.getDescricaoLeituraAnormalidadeFaturada(),
                    resumoAnormalidadeConsultaHelper.getQuantidadeMedicao(),
                    Util.formatarMoedaReal(percentual));

            relatorioAnormalidadeEsgotoBeans.add(relatorioAnormalidadeBean);
          }
        }

        if (relatorioAnormalidadeAguaBeans != null && !relatorioAnormalidadeAguaBeans.isEmpty()) {

          relatorioBean =
              new RelatorioResumoAnormalidadeLeituraSetorComercialBean(
                  descricaoLocalidade,
                  codigoSetorComercial + " - " + descricaoSetorComercial,
                  null,
                  "ÁGUA",
                  relatorioAnormalidadeAguaBeans);

          relatorioBeans.add(relatorioBean);
        }

        if (relatorioAnormalidadeEsgotoBeans != null
            && !relatorioAnormalidadeEsgotoBeans.isEmpty()) {
          relatorioBean =
              new RelatorioResumoAnormalidadeLeituraSetorComercialBean(
                  descricaoLocalidade,
                  codigoSetorComercial + " - " + descricaoSetorComercial,
                  null,
                  "POÇO",
                  relatorioAnormalidadeEsgotoBeans);

          relatorioBeans.add(relatorioBean);
        }

      } else if (opcaoTotalizacao == ConstantesSistema.CODIGO_SETOR_COMERCIAL_QUADRA) {

        nomeRelatorio = ConstantesRelatorios.RELATORIO_RESUMO_ANORMALIDADE_LEITURA_SETOR;

        Integer totalSetorComercialAgua = null;
        Integer totalSetorComercialPoco = null;
        Integer totalQuadraAgua = null;
        Integer totalQuadraPoco = null;

        String codigoSetorComercial = null;
        String descricaoSetorComercial = null;
        String descricaoLocalidade = null;

        while (colecaoResumosAnormalidadeLeituraIterator.hasNext()) {

          if (resumoAnormalidadeConsultaHelper != null) {
            codigoSetorComercial = resumoAnormalidadeConsultaHelper.getCodigoSetorComercial();
            descricaoSetorComercial = resumoAnormalidadeConsultaHelper.getDescricaoSetorComercial();
          }

          resumoAnormalidadeConsultaHelper =
              (ResumoAnormalidadeConsultaHelper) colecaoResumosAnormalidadeLeituraIterator.next();

          if (codigoSetorComercial == null) {
            codigoSetorComercial = resumoAnormalidadeConsultaHelper.getCodigoSetorComercial();
            descricaoSetorComercial = resumoAnormalidadeConsultaHelper.getDescricaoSetorComercial();
          }

          if (numeroQuadra == null) {
            numeroQuadra = resumoAnormalidadeConsultaHelper.getNumeroQuadra();
          }

          if (descricaoLocalidade == null) {
            descricaoLocalidade = resumoAnormalidadeConsultaHelper.getDescricaoLocalidade();
          }

          // if (codigoSetorComercial
          // .equalsIgnoreCase(resumoAnormalidadeConsultaHelper
          // .getCodigoSetorComercial())) {

          if (!resumoAnormalidadeConsultaHelper.getNumeroQuadra().equalsIgnoreCase("-1")) {

            if (totalQuadraAgua == null) {
              if (resumoAnormalidadeConsultaHelper
                  .getIdMedicaoTipo()
                  .equals(MedicaoTipo.LIGACAO_AGUA.toString())) {
                totalQuadraAgua =
                    new Integer(resumoAnormalidadeConsultaHelper.getQuantidadeMedicao());
              }
            }

            if (totalQuadraPoco == null) {
              if (resumoAnormalidadeConsultaHelper
                  .getIdMedicaoTipo()
                  .equals(MedicaoTipo.POCO.toString())) {
                totalQuadraPoco =
                    new Integer(resumoAnormalidadeConsultaHelper.getQuantidadeMedicao());
              }
            }

            if (resumoAnormalidadeConsultaHelper
                .getIdMedicaoTipo()
                .equals(MedicaoTipo.LIGACAO_AGUA.toString())) {
              percentual =
                  (new BigDecimal(resumoAnormalidadeConsultaHelper.getQuantidadeMedicao()))
                      .divide(new BigDecimal(totalQuadraAgua), 4, RoundingMode.HALF_UP);
              percentual = percentual.multiply(new BigDecimal("100"));
            } else {
              percentual =
                  (new BigDecimal(resumoAnormalidadeConsultaHelper.getQuantidadeMedicao()))
                      .divide(new BigDecimal(totalQuadraPoco), 4, RoundingMode.HALF_UP);
              percentual = percentual.multiply(new BigDecimal("100"));
            }

            relatorioQuadraBean =
                new RelatorioResumoAnormalidadeLeituraQuadraBean(
                    resumoAnormalidadeConsultaHelper.getDescricaoLocalidade(),
                    resumoAnormalidadeConsultaHelper.getCodigoSetorComercial()
                        + " - "
                        + resumoAnormalidadeConsultaHelper.getDescricaoSetorComercial(),
                    resumoAnormalidadeConsultaHelper.getNumeroQuadra(),
                    resumoAnormalidadeConsultaHelper.getIdMedicaoTipo(),
                    resumoAnormalidadeConsultaHelper.getDescricaoLeituraAnormalidadeFaturada(),
                    resumoAnormalidadeConsultaHelper.getQuantidadeMedicao(),
                    Util.formatarMoedaReal(percentual));

            relatorioQuadraBeans.add(relatorioQuadraBean);

          } else {

            if (totalSetorComercialAgua == null) {
              if (resumoAnormalidadeConsultaHelper
                  .getIdMedicaoTipo()
                  .equals(MedicaoTipo.LIGACAO_AGUA.toString())) {
                totalSetorComercialAgua =
                    new Integer(resumoAnormalidadeConsultaHelper.getQuantidadeMedicao());
              }
            }

            if (totalSetorComercialPoco == null) {
              if (resumoAnormalidadeConsultaHelper
                  .getIdMedicaoTipo()
                  .equals(MedicaoTipo.POCO.toString())) {
                totalSetorComercialPoco =
                    new Integer(resumoAnormalidadeConsultaHelper.getQuantidadeMedicao());
              }
            }

            if (resumoAnormalidadeConsultaHelper
                .getIdMedicaoTipo()
                .equals(MedicaoTipo.LIGACAO_AGUA.toString())) {

              percentual =
                  (new BigDecimal(resumoAnormalidadeConsultaHelper.getQuantidadeMedicao()))
                      .divide(new BigDecimal(totalSetorComercialAgua), 4, RoundingMode.HALF_UP);
              percentual = percentual.multiply(new BigDecimal("100"));

              relatorioAnormalidadeBean =
                  new RelatorioResumoAnormalidadeLeituraAnormalidadeBean(
                      resumoAnormalidadeConsultaHelper.getDescricaoLeituraAnormalidadeFaturada(),
                      resumoAnormalidadeConsultaHelper.getQuantidadeMedicao(),
                      Util.formatarMoedaReal(percentual));

              relatorioAnormalidadeAguaBeans.add(relatorioAnormalidadeBean);

            } else {
              percentual =
                  (new BigDecimal(resumoAnormalidadeConsultaHelper.getQuantidadeMedicao()))
                      .divide(new BigDecimal(totalSetorComercialPoco), 4, RoundingMode.HALF_UP);
              percentual = percentual.multiply(new BigDecimal("100"));

              relatorioAnormalidadeBean =
                  new RelatorioResumoAnormalidadeLeituraAnormalidadeBean(
                      resumoAnormalidadeConsultaHelper.getDescricaoLeituraAnormalidadeFaturada(),
                      resumoAnormalidadeConsultaHelper.getQuantidadeMedicao(),
                      Util.formatarMoedaReal(percentual));

              relatorioAnormalidadeEsgotoBeans.add(relatorioAnormalidadeBean);
            }
          }
        } // else {

        /*
         * if (totalSetorComercial == null) { totalSetorComercial =
         * resumoAnormalidadeLeitura .getQuantidadeMedicao(); }
         *
         * percentual = (new BigDecimal(resumoAnormalidadeLeitura
         * .getQuantidadeMedicao())).divide( new
         * BigDecimal(totalSetorComercial)).multiply( new
         * BigDecimal("100.00"));
         */

        if (relatorioAnormalidadeAguaBeans != null && !relatorioAnormalidadeAguaBeans.isEmpty()) {

          relatorioBean =
              new RelatorioResumoAnormalidadeLeituraSetorComercialBean(
                  descricaoLocalidade,
                  codigoSetorComercial + " - " + descricaoSetorComercial,
                  numeroQuadra,
                  "ÁGUA",
                  relatorioQuadraBeans,
                  relatorioAnormalidadeBeans);

          relatorioBeans.add(relatorioBean);
        }

        if (relatorioAnormalidadeEsgotoBeans != null
            && !relatorioAnormalidadeEsgotoBeans.isEmpty()) {

          relatorioBean =
              new RelatorioResumoAnormalidadeLeituraSetorComercialBean(
                  descricaoLocalidade,
                  codigoSetorComercial + " - " + descricaoSetorComercial,
                  numeroQuadra,
                  "POÇO",
                  relatorioQuadraBeans,
                  relatorioAnormalidadeBeans);

          relatorioBeans.add(relatorioBean);
        }

        relatorioQuadraBeans.clear();

      } else if (opcaoTotalizacao == ConstantesSistema.CODIGO_QUADRA) {

        nomeRelatorio = ConstantesRelatorios.RELATORIO_RESUMO_ANORMALIDADE_LEITURA_QUADRA;

        Integer totalQuadraAgua = null;
        Integer totalQuadraPoco = null;

        while (colecaoResumosAnormalidadeLeituraIterator.hasNext()) {

          resumoAnormalidadeConsultaHelper =
              (ResumoAnormalidadeConsultaHelper) colecaoResumosAnormalidadeLeituraIterator.next();

          if (totalQuadraAgua == null) {
            if (resumoAnormalidadeConsultaHelper
                .getIdMedicaoTipo()
                .equals(MedicaoTipo.LIGACAO_AGUA.toString())) {
              totalQuadraAgua =
                  new Integer(resumoAnormalidadeConsultaHelper.getQuantidadeMedicao());
            }
          }

          if (totalQuadraPoco == null) {
            if (resumoAnormalidadeConsultaHelper
                .getIdMedicaoTipo()
                .equals(MedicaoTipo.POCO.toString())) {
              totalQuadraPoco =
                  new Integer(resumoAnormalidadeConsultaHelper.getQuantidadeMedicao());
            }
          }

          if (resumoAnormalidadeConsultaHelper
              .getIdMedicaoTipo()
              .equals(MedicaoTipo.LIGACAO_AGUA.toString())) {
            percentual =
                (new BigDecimal(resumoAnormalidadeConsultaHelper.getQuantidadeMedicao()))
                    .divide(new BigDecimal(totalQuadraAgua), 4, RoundingMode.HALF_UP);
            percentual = percentual.multiply(new BigDecimal("100"));

            relatorioQuadraBean =
                new RelatorioResumoAnormalidadeLeituraQuadraBean(
                    resumoAnormalidadeConsultaHelper.getDescricaoLocalidade(),
                    resumoAnormalidadeConsultaHelper.getCodigoSetorComercial()
                        + " - "
                        + resumoAnormalidadeConsultaHelper.getDescricaoSetorComercial(),
                    resumoAnormalidadeConsultaHelper.getNumeroQuadra(),
                    "ÁGUA",
                    resumoAnormalidadeConsultaHelper.getDescricaoLeituraAnormalidadeFaturada(),
                    resumoAnormalidadeConsultaHelper.getQuantidadeMedicao(),
                    Util.formatarMoedaReal(percentual));

          } else {
            percentual =
                (new BigDecimal(resumoAnormalidadeConsultaHelper.getQuantidadeMedicao()))
                    .divide(new BigDecimal(totalQuadraPoco), 4, RoundingMode.HALF_UP);
            percentual = percentual.multiply(new BigDecimal("100"));

            relatorioQuadraBean =
                new RelatorioResumoAnormalidadeLeituraQuadraBean(
                    resumoAnormalidadeConsultaHelper.getDescricaoLocalidade(),
                    resumoAnormalidadeConsultaHelper.getCodigoSetorComercial()
                        + " - "
                        + resumoAnormalidadeConsultaHelper.getDescricaoSetorComercial(),
                    resumoAnormalidadeConsultaHelper.getNumeroQuadra(),
                    "POÇO",
                    resumoAnormalidadeConsultaHelper.getDescricaoLeituraAnormalidadeFaturada(),
                    resumoAnormalidadeConsultaHelper.getQuantidadeMedicao(),
                    Util.formatarMoedaReal(percentual));
          }
          relatorioBeans.add(relatorioQuadraBean);
        }

      } else if (opcaoTotalizacao == ConstantesSistema.CODIGO_LOCALIDADE) {

        nomeRelatorio = ConstantesRelatorios.RELATORIO_RESUMO_ANORMALIDADE_LEITURA_LOCALIDADE;

        Integer totalLocalidadeAgua = null;
        Integer totalLocalidadePoco = null;
        String idLocalidade = null;
        String descricaoLocalidade = null;

        while (colecaoResumosAnormalidadeLeituraIterator.hasNext()) {

          resumoAnormalidadeConsultaHelper =
              (ResumoAnormalidadeConsultaHelper) colecaoResumosAnormalidadeLeituraIterator.next();

          if (idLocalidade == null) {
            idLocalidade = resumoAnormalidadeConsultaHelper.getIdLocalidade();
            descricaoLocalidade = resumoAnormalidadeConsultaHelper.getDescricaoLocalidade();
          }

          if (descricaoLocalidade == null) {
            descricaoLocalidade = resumoAnormalidadeConsultaHelper.getDescricaoLocalidade();
          }

          if (totalLocalidadeAgua == null) {
            if (resumoAnormalidadeConsultaHelper
                .getIdMedicaoTipo()
                .equals(MedicaoTipo.LIGACAO_AGUA.toString())) {
              totalLocalidadeAgua =
                  new Integer(resumoAnormalidadeConsultaHelper.getQuantidadeMedicao());
            }
          }

          if (totalLocalidadePoco == null) {
            if (resumoAnormalidadeConsultaHelper
                .getIdMedicaoTipo()
                .equals(MedicaoTipo.POCO.toString())) {
              totalLocalidadePoco =
                  new Integer(resumoAnormalidadeConsultaHelper.getQuantidadeMedicao());
            }
          }

          if (resumoAnormalidadeConsultaHelper
              .getIdMedicaoTipo()
              .equals(MedicaoTipo.LIGACAO_AGUA.toString())) {

            percentual =
                (new BigDecimal(resumoAnormalidadeConsultaHelper.getQuantidadeMedicao()))
                    .divide(new BigDecimal(totalLocalidadeAgua), 4, RoundingMode.HALF_UP);
            percentual = percentual.multiply(new BigDecimal("100"));

            relatorioAnormalidadeBean =
                new RelatorioResumoAnormalidadeLeituraAnormalidadeBean(
                    resumoAnormalidadeConsultaHelper.getDescricaoLeituraAnormalidadeFaturada(),
                    resumoAnormalidadeConsultaHelper.getQuantidadeMedicao(),
                    Util.formatarMoedaReal(percentual));

            relatorioAnormalidadeAguaBeans.add(relatorioAnormalidadeBean);

          } else {
            percentual =
                (new BigDecimal(resumoAnormalidadeConsultaHelper.getQuantidadeMedicao()))
                    .divide(new BigDecimal(totalLocalidadePoco), 4, RoundingMode.HALF_UP);
            percentual = percentual.multiply(new BigDecimal("100"));

            relatorioAnormalidadeBean =
                new RelatorioResumoAnormalidadeLeituraAnormalidadeBean(
                    resumoAnormalidadeConsultaHelper.getDescricaoLeituraAnormalidadeFaturada(),
                    resumoAnormalidadeConsultaHelper.getQuantidadeMedicao(),
                    Util.formatarMoedaReal(percentual));

            relatorioAnormalidadeEsgotoBeans.add(relatorioAnormalidadeBean);
          }
        }

        if (relatorioAnormalidadeAguaBeans != null && !relatorioAnormalidadeAguaBeans.isEmpty()) {

          relatorioLocalidadeBean =
              new RelatorioResumoAnormalidadeLeituraLocalidadeBean(
                  idLocalidade + " - " + descricaoLocalidade,
                  null,
                  "ÁGUA",
                  relatorioAnormalidadeAguaBeans);

          relatorioBeans.add(relatorioLocalidadeBean);
        }

        if (relatorioAnormalidadeEsgotoBeans != null
            && !relatorioAnormalidadeEsgotoBeans.isEmpty()) {
          relatorioLocalidadeBean =
              new RelatorioResumoAnormalidadeLeituraLocalidadeBean(
                  idLocalidade + " - " + descricaoLocalidade,
                  null,
                  "POÇO",
                  relatorioAnormalidadeEsgotoBeans);

          relatorioBeans.add(relatorioBean);
        }

      } else if (opcaoTotalizacao == ConstantesSistema.CODIGO_ELO_POLO) {

        nomeRelatorio = ConstantesRelatorios.RELATORIO_RESUMO_ANORMALIDADE_LEITURA_ELO;

        Integer totalEloAgua = null;
        Integer totalEloPoco = null;
        String idElo = null;
        String descricaoElo = null;

        while (colecaoResumosAnormalidadeLeituraIterator.hasNext()) {

          resumoAnormalidadeConsultaHelper =
              (ResumoAnormalidadeConsultaHelper) colecaoResumosAnormalidadeLeituraIterator.next();

          if (idElo == null) {
            idElo = resumoAnormalidadeConsultaHelper.getIdElo();
            descricaoElo = resumoAnormalidadeConsultaHelper.getDescricaoElo();
          }

          if (descricaoElo == null) {
            descricaoElo = resumoAnormalidadeConsultaHelper.getDescricaoLocalidade();
          }

          if (totalEloAgua == null) {
            if (resumoAnormalidadeConsultaHelper
                .getIdMedicaoTipo()
                .equals(MedicaoTipo.LIGACAO_AGUA.toString())) {
              totalEloAgua = new Integer(resumoAnormalidadeConsultaHelper.getQuantidadeMedicao());
            }
          }

          if (totalEloPoco == null) {
            if (resumoAnormalidadeConsultaHelper
                .getIdMedicaoTipo()
                .equals(MedicaoTipo.POCO.toString())) {
              totalEloPoco = new Integer(resumoAnormalidadeConsultaHelper.getQuantidadeMedicao());
            }
          }

          if (resumoAnormalidadeConsultaHelper
              .getIdMedicaoTipo()
              .equals(MedicaoTipo.LIGACAO_AGUA.toString())) {

            percentual =
                (new BigDecimal(resumoAnormalidadeConsultaHelper.getQuantidadeMedicao()))
                    .divide(new BigDecimal(totalEloAgua), 4, RoundingMode.HALF_UP);
            percentual = percentual.multiply(new BigDecimal("100"));

            relatorioAnormalidadeBean =
                new RelatorioResumoAnormalidadeLeituraAnormalidadeBean(
                    resumoAnormalidadeConsultaHelper.getDescricaoLeituraAnormalidadeFaturada(),
                    resumoAnormalidadeConsultaHelper.getQuantidadeMedicao(),
                    Util.formatarMoedaReal(percentual));

            relatorioAnormalidadeAguaBeans.add(relatorioAnormalidadeBean);

          } else {
            percentual =
                (new BigDecimal(resumoAnormalidadeConsultaHelper.getQuantidadeMedicao()))
                    .divide(new BigDecimal(totalEloPoco), 4, RoundingMode.HALF_UP);
            percentual = percentual.multiply(new BigDecimal("100"));

            relatorioAnormalidadeBean =
                new RelatorioResumoAnormalidadeLeituraAnormalidadeBean(
                    resumoAnormalidadeConsultaHelper.getDescricaoLeituraAnormalidadeFaturada(),
                    resumoAnormalidadeConsultaHelper.getQuantidadeMedicao(),
                    Util.formatarMoedaReal(percentual));

            relatorioAnormalidadeEsgotoBeans.add(relatorioAnormalidadeBean);
          }
        }

        if (relatorioAnormalidadeAguaBeans != null && !relatorioAnormalidadeAguaBeans.isEmpty()) {

          relatorioEloBean =
              new RelatorioResumoAnormalidadeLeituraEloBean(
                  idElo + " - " + descricaoElo, null, "ÁGUA", relatorioAnormalidadeAguaBeans);

          relatorioBeans.add(relatorioEloBean);
        }

        if (relatorioAnormalidadeEsgotoBeans != null
            && !relatorioAnormalidadeEsgotoBeans.isEmpty()) {
          relatorioEloBean =
              new RelatorioResumoAnormalidadeLeituraEloBean(
                  idElo + " - " + descricaoElo, null, "POÇO", relatorioAnormalidadeEsgotoBeans);

          relatorioBeans.add(relatorioEloBean);
        }

      } else if (opcaoTotalizacao == ConstantesSistema.CODIGO_GERENCIA_REGIONAL) {

        nomeRelatorio = ConstantesRelatorios.RELATORIO_RESUMO_ANORMALIDADE_LEITURA_GERENCIA;

        Integer totalGerenciaRegionalAgua = null;
        Integer totalGerenciaRegionalPoco = null;
        String idGerenciaRegional = null;
        String descricaoGerenciaRegional = null;

        while (colecaoResumosAnormalidadeLeituraIterator.hasNext()) {

          resumoAnormalidadeConsultaHelper =
              (ResumoAnormalidadeConsultaHelper) colecaoResumosAnormalidadeLeituraIterator.next();

          if (idGerenciaRegional == null) {
            idGerenciaRegional = resumoAnormalidadeConsultaHelper.getIdElo();
            descricaoGerenciaRegional =
                resumoAnormalidadeConsultaHelper.getDescricaoGerenciaRegional();
          }

          if (descricaoGerenciaRegional == null) {
            descricaoGerenciaRegional =
                resumoAnormalidadeConsultaHelper.getDescricaoGerenciaRegional();
          }

          if (totalGerenciaRegionalAgua == null) {
            if (resumoAnormalidadeConsultaHelper
                .getIdMedicaoTipo()
                .equals(MedicaoTipo.LIGACAO_AGUA.toString())) {
              totalGerenciaRegionalAgua =
                  new Integer(resumoAnormalidadeConsultaHelper.getQuantidadeMedicao());
            }
          }

          if (totalGerenciaRegionalPoco == null) {
            if (resumoAnormalidadeConsultaHelper
                .getIdMedicaoTipo()
                .equals(MedicaoTipo.POCO.toString())) {
              totalGerenciaRegionalPoco =
                  new Integer(resumoAnormalidadeConsultaHelper.getQuantidadeMedicao());
            }
          }

          if (resumoAnormalidadeConsultaHelper
              .getIdMedicaoTipo()
              .equals(MedicaoTipo.LIGACAO_AGUA.toString())) {

            percentual =
                (new BigDecimal(resumoAnormalidadeConsultaHelper.getQuantidadeMedicao()))
                    .divide(new BigDecimal(totalGerenciaRegionalAgua), 4, RoundingMode.HALF_UP);
            percentual = percentual.multiply(new BigDecimal("100"));

            relatorioAnormalidadeBean =
                new RelatorioResumoAnormalidadeLeituraAnormalidadeBean(
                    resumoAnormalidadeConsultaHelper.getDescricaoLeituraAnormalidadeFaturada(),
                    resumoAnormalidadeConsultaHelper.getQuantidadeMedicao(),
                    Util.formatarMoedaReal(percentual));

            relatorioAnormalidadeAguaBeans.add(relatorioAnormalidadeBean);

          } else {
            percentual =
                (new BigDecimal(resumoAnormalidadeConsultaHelper.getQuantidadeMedicao()))
                    .divide(new BigDecimal(totalGerenciaRegionalPoco), 4, RoundingMode.HALF_UP);
            percentual = percentual.multiply(new BigDecimal("100"));

            relatorioAnormalidadeBean =
                new RelatorioResumoAnormalidadeLeituraAnormalidadeBean(
                    resumoAnormalidadeConsultaHelper.getDescricaoLeituraAnormalidadeFaturada(),
                    resumoAnormalidadeConsultaHelper.getQuantidadeMedicao(),
                    Util.formatarMoedaReal(percentual));

            relatorioAnormalidadeEsgotoBeans.add(relatorioAnormalidadeBean);
          }
        }

        if (relatorioAnormalidadeAguaBeans != null && !relatorioAnormalidadeAguaBeans.isEmpty()) {

          relatorioGerenciaRegionalBean =
              new RelatorioResumoAnormalidadeLeituraGerenciaRegionalBean(
                  idGerenciaRegional + " - " + descricaoGerenciaRegional,
                  null,
                  "ÁGUA",
                  relatorioAnormalidadeAguaBeans);

          relatorioBeans.add(relatorioGerenciaRegionalBean);
        }

        if (relatorioAnormalidadeEsgotoBeans != null
            && !relatorioAnormalidadeEsgotoBeans.isEmpty()) {
          relatorioGerenciaRegionalBean =
              new RelatorioResumoAnormalidadeLeituraGerenciaRegionalBean(
                  idGerenciaRegional + " - " + descricaoGerenciaRegional,
                  null,
                  "POÇO",
                  relatorioAnormalidadeEsgotoBeans);

          relatorioBeans.add(relatorioGerenciaRegionalBean);
        }

      } else if (opcaoTotalizacao == ConstantesSistema.CODIGO_ESTADO) {

        nomeRelatorio = ConstantesRelatorios.RELATORIO_RESUMO_ANORMALIDADE_LEITURA_ESTADO;

        Integer totalEstadoAgua = null;
        Integer totalEstadoPoco = null;

        while (colecaoResumosAnormalidadeLeituraIterator.hasNext()) {

          resumoAnormalidadeConsultaHelper =
              (ResumoAnormalidadeConsultaHelper) colecaoResumosAnormalidadeLeituraIterator.next();

          if (totalEstadoAgua == null) {
            if (resumoAnormalidadeConsultaHelper
                .getIdMedicaoTipo()
                .equals(MedicaoTipo.LIGACAO_AGUA.toString())) {
              totalEstadoAgua =
                  new Integer(resumoAnormalidadeConsultaHelper.getQuantidadeMedicao());
            }
          }

          if (totalEstadoPoco == null) {
            if (resumoAnormalidadeConsultaHelper
                .getIdMedicaoTipo()
                .equals(MedicaoTipo.POCO.toString())) {
              totalEstadoPoco =
                  new Integer(resumoAnormalidadeConsultaHelper.getQuantidadeMedicao());
            }
          }

          if (resumoAnormalidadeConsultaHelper
              .getIdMedicaoTipo()
              .equals(MedicaoTipo.LIGACAO_AGUA.toString())) {

            percentual =
                (new BigDecimal(resumoAnormalidadeConsultaHelper.getQuantidadeMedicao()))
                    .divide(new BigDecimal(totalEstadoAgua), 4, RoundingMode.HALF_UP);
            percentual = percentual.multiply(new BigDecimal("100"));

            relatorioAnormalidadeBean =
                new RelatorioResumoAnormalidadeLeituraAnormalidadeBean(
                    resumoAnormalidadeConsultaHelper.getDescricaoLeituraAnormalidadeFaturada(),
                    resumoAnormalidadeConsultaHelper.getQuantidadeMedicao(),
                    Util.formatarMoedaReal(percentual));

            relatorioAnormalidadeAguaBeans.add(relatorioAnormalidadeBean);

          } else {
            percentual =
                (new BigDecimal(resumoAnormalidadeConsultaHelper.getQuantidadeMedicao()))
                    .divide(new BigDecimal(totalEstadoPoco), 4, RoundingMode.HALF_UP);
            percentual = percentual.multiply(new BigDecimal("100"));

            relatorioAnormalidadeBean =
                new RelatorioResumoAnormalidadeLeituraAnormalidadeBean(
                    resumoAnormalidadeConsultaHelper.getDescricaoLeituraAnormalidadeFaturada(),
                    resumoAnormalidadeConsultaHelper.getQuantidadeMedicao(),
                    Util.formatarMoedaReal(percentual));

            relatorioAnormalidadeEsgotoBeans.add(relatorioAnormalidadeBean);
          }
        }

        if (relatorioAnormalidadeAguaBeans != null && !relatorioAnormalidadeAguaBeans.isEmpty()) {

          relatorioEstadoBean =
              new RelatorioResumoAnormalidadeLeituraEstadoBean(
                  "PERNAMBUCO", null, "ÁGUA", relatorioAnormalidadeAguaBeans);

          relatorioBeans.add(relatorioEstadoBean);
        }

        if (relatorioAnormalidadeEsgotoBeans != null
            && !relatorioAnormalidadeEsgotoBeans.isEmpty()) {
          relatorioEstadoBean =
              new RelatorioResumoAnormalidadeLeituraEstadoBean(
                  "PERNAMBUCO", null, "POÇO", relatorioAnormalidadeEsgotoBeans);

          relatorioBeans.add(relatorioEstadoBean);
        }
      }
    }

    /*
     * relatorioBean = new RelatorioResumoAnormalidadeLeituraBean(
     * "Pernambuco", resumoAnormalidadeLeitura.getGerenciaRegional()
     * .getId().toString(), resumoAnormalidadeLeitura
     * .getGerenciaRegional().getNomeAbreviado(),
     * resumoAnormalidadeLeitura.getLocalidade()
     * .getLocalidade().getId().toString(),
     * resumoAnormalidadeLeitura.getLocalidade()
     * .getLocalidade().getDescricao(),
     * resumoAnormalidadeLeitura.getLocalidade().getId() .toString(),
     * resumoAnormalidadeLeitura .getLocalidade().getDescricao(), null,
     * null, null,
     * resumoAnormalidadeLeitura.getMedicaoTipo().getDescricao(),
     * resumoAnormalidadeLeitura .getLeituraAnormalidade().getDescricao(),
     * resumoAnormalidadeLeitura.getQuantidadeMedicao() .toString(),
     * Util.formatarMoedaReal(percentual));
     */
    // adiciona o bean a coleção
    // if (totalEstadoAgua != 0) {
    // relatorioBean = new RelatorioResumoAnormalidadeLeituraBean(
    // "Pernambuco", null, null,
    // null,
    // null,
    // null, null, null, null,
    // null, "LIGACAO DE AGUA", "TOTAL DE ANORMALIDADE",
    // "" + totalEstadoAgua, Util.formatarMoedaReal(percentual));
    // relatorioBeans.add(relatorioBean);
    // }
    // if (totalEstadoEsgoto != 0) {
    // relatorioBean = new RelatorioResumoAnormalidadeLeituraBean(
    // "Pernambuco", null, null,
    // null,
    // null,
    // null, null, null, null,
    // null, "POCO", "TOTAL DE ANORMALIDADE",
    // "" + totalEstadoAgua,
    // Util.formatarMoedaReal(percentual));
    // relatorioBeans.add(relatorioBean);
    // }
    // __________________________________________________________________
    // Parâmetros do relatório
    Map parametros = new HashMap();

    SistemaParametro sistemaParametro = fachada.pesquisarParametrosDoSistema();

    parametros.put("imagem", sistemaParametro.getImagemRelatorio());

    parametros.put("tipoQuebra", "" + opcaoTotalizacao);

    // adiciona os parâmetros do relatório
    // adiciona o laudo da análise

    // cria uma instância do dataSource do relatório
    RelatorioDataSource ds = new RelatorioDataSource(relatorioBeans);

    // if(opcaoTotalizacao == ConstantesSistema.CODIGO_ESTADO
    // || opcaoTotalizacao == ConstantesSistema.CODIGO_ESTADO_ELO_POLO
    // || opcaoTotalizacao ==
    // ConstantesSistema.CODIGO_ESTADO_GERENCIA_REGIONAL
    // || opcaoTotalizacao ==
    // ConstantesSistema.CODIGO_ESTADO_GRUPO_FATURAMENTO
    // || opcaoTotalizacao ==
    // ConstantesSistema.CODIGO_ESTADO_LOCALIDADE){
    //
    // retorno = gerarRelatorio(
    // ConstantesRelatorios.RELATORIO_RESUMO_ANORMALIDADE_LEITURA_ESTADO,
    // parametros, ds);
    //
    // }else if(opcaoTotalizacao ==
    // ConstantesSistema.CODIGO_GERENCIA_REGIONAL){
    //
    // }

    retorno = gerarRelatorio(nomeRelatorio, parametros, ds, tipoFormatoRelatorio);

    // retorna o relatório gerado
    return retorno;
  }
  /**
   * [UC0393] Atualizar Valor de Cobrança do Serviço
   *
   * <p>Este caso de uso permite alterar um valor de cobrança de serviço
   *
   * @author Rômulo Aurélio - Hugo Loenardo
   * @date 31/10/2006 - 22/04/2010
   * @param actionMapping
   * @param actionForm
   * @param httpServletRequest
   * @param httpServletResponse
   * @return
   */
  public ActionForward execute(
      ActionMapping actionMapping,
      ActionForm actionForm,
      HttpServletRequest httpServletRequest,
      HttpServletResponse httpServletResponse) {

    // Seta o mapeamento de retorno
    ActionForward retorno = actionMapping.findForward("atualizarValorCobrancaServico");

    HttpSession sessao = httpServletRequest.getSession(false);

    AtualizarValorCobrancaServicoActionForm form =
        (AtualizarValorCobrancaServicoActionForm) actionForm;

    Fachada fachada = Fachada.getInstancia();

    ServicoCobrancaValor servicoCobrancaValor = null;

    String idServicoCobrancaValor = (String) sessao.getAttribute("idRegistroAtualizar");

    if (idServicoCobrancaValor != null && !idServicoCobrancaValor.equals("")) {

      FiltroServicoCobrancaValor filtroServicoCobrancaValor = new FiltroServicoCobrancaValor();

      filtroServicoCobrancaValor.adicionarCaminhoParaCarregamentoEntidade("servicoTipo");
      filtroServicoCobrancaValor.adicionarCaminhoParaCarregamentoEntidade(
          FiltroServicoCobrancaValor.CATEGORIA_ENTIDADE);
      filtroServicoCobrancaValor.adicionarCaminhoParaCarregamentoEntidade(
          FiltroServicoCobrancaValor.SUBCATEGORIA_ENTIDADE);
      filtroServicoCobrancaValor.adicionarParametro(
          new ParametroSimples(FiltroServicoCobrancaValor.ID, new Integer(idServicoCobrancaValor)));

      servicoCobrancaValor =
          (ServicoCobrancaValor)
              fachada
                  .pesquisar(filtroServicoCobrancaValor, ServicoCobrancaValor.class.getName())
                  .iterator()
                  .next();

      idServicoCobrancaValor = servicoCobrancaValor.getId().toString();
    }

    if (servicoCobrancaValor == null) {

      FiltroServicoCobrancaValor filtroServicoCobrancaValor = new FiltroServicoCobrancaValor();

      filtroServicoCobrancaValor.adicionarCaminhoParaCarregamentoEntidade("servicoTipo");
      filtroServicoCobrancaValor.adicionarCaminhoParaCarregamentoEntidade(
          FiltroServicoCobrancaValor.CATEGORIA_ENTIDADE);
      filtroServicoCobrancaValor.adicionarCaminhoParaCarregamentoEntidade(
          FiltroServicoCobrancaValor.SUBCATEGORIA_ENTIDADE);
      filtroServicoCobrancaValor.adicionarParametro(
          new ParametroSimples(
              FiltroServicoCobrancaValor.ID, new Integer(form.getIdServicoCobrancaValor())));

      servicoCobrancaValor =
          (ServicoCobrancaValor)
              fachada
                  .pesquisar(filtroServicoCobrancaValor, ServicoCobrancaValor.class.getName())
                  .iterator()
                  .next();
    }

    if ((httpServletRequest.getParameter("manter") != null
            && httpServletRequest.getParameter("manter").toString().equals("sim"))
        || (httpServletRequest.getAttribute("manter") != null
            && httpServletRequest.getAttribute("manter").toString().equals("sim"))) {

      form.setIdServicoCobrancaValor(servicoCobrancaValor.getId().toString());
      form.setTipoServico(servicoCobrancaValor.getServicoTipo().getId().toString());
      form.setNomeTipoServico(servicoCobrancaValor.getServicoTipo().getDescricao());
      form.setIndicadorMedido("" + servicoCobrancaValor.getIndicadorMedido());
      form.setIndicativoTipoSevicoEconomias(
          servicoCobrancaValor.getIndicadorConsideraEconomias().toString());

      String dataVigenciaInicial = Util.formatarData(servicoCobrancaValor.getDataVigenciaInicial());
      String dataVigenciaFinal = Util.formatarData(servicoCobrancaValor.getDataVigenciaFinal());
      String valorServico = Util.formatarMoedaReal(servicoCobrancaValor.getValor());

      if (servicoCobrancaValor.getId() != null && !servicoCobrancaValor.getId().equals("")) {
        form.setIdServicoCobrancaValor(servicoCobrancaValor.getId().toString());
      }

      if (servicoCobrancaValor.getServicoTipo().getId() != null
          && !servicoCobrancaValor.getServicoTipo().getId().equals("")) {
        form.setTipoServico(servicoCobrancaValor.getServicoTipo().getId().toString());
      }

      if (servicoCobrancaValor.getServicoTipo().getDescricao() != null
          && !servicoCobrancaValor.getServicoTipo().getDescricao().equals("")) {

        form.setNomeTipoServico(servicoCobrancaValor.getServicoTipo().getDescricao());
      }

      if (servicoCobrancaValor.getSubCategoria() != null
              && !servicoCobrancaValor.getSubCategoria().getId().equals("-1")
              && form.getIdSubCategoria() == null
          || (httpServletRequest.getParameter("desfazer") != null
              && httpServletRequest.getParameter("desfazer").toString().equalsIgnoreCase("S"))) {

        form.setIdSubCategoria(servicoCobrancaValor.getSubCategoria().getId().toString());
      }

      if (servicoCobrancaValor.getCategoria() != null
              && !servicoCobrancaValor.getCategoria().getId().equals("-1")
              && form.getIdCategoria() == null
          || (httpServletRequest.getParameter("desfazer") != null
              && httpServletRequest.getParameter("desfazer").toString().equalsIgnoreCase("S"))) {

        form.setIdCategoria(servicoCobrancaValor.getCategoria().getId().toString());
      }

      if (servicoCobrancaValor.getHidrometroCapacidade() != null
          && servicoCobrancaValor.getHidrometroCapacidade().getId() != null
          && !servicoCobrancaValor.getHidrometroCapacidade().getId().equals("")) {

        form.setCapacidadeHidrometro(
            servicoCobrancaValor.getHidrometroCapacidade().getId().toString());
      }

      if (servicoCobrancaValor.getImovelPerfil() != null
          && servicoCobrancaValor.getImovelPerfil().getId() != null
          && !servicoCobrancaValor.getImovelPerfil().getId().equals("-1")) {

        form.setPerfilImovel(servicoCobrancaValor.getImovelPerfil().getId().toString());
        form.setIndicadorMedido("" + servicoCobrancaValor.getIndicadorMedido());
      }

      if (servicoCobrancaValor.getSubCategoria() != null
          && servicoCobrancaValor.getSubCategoria().getId() != null
          && !servicoCobrancaValor.getSubCategoria().getId().equals("-1")) {

        form.setIdSubCategoria(servicoCobrancaValor.getSubCategoria().getId().toString());
      }

      if (servicoCobrancaValor.getValor() != null && !servicoCobrancaValor.getValor().equals("")) {

        form.setValorServico(valorServico);
      }

      if (servicoCobrancaValor.getDataVigenciaInicial() != null
          && !servicoCobrancaValor.getDataVigenciaInicial().equals("")) {

        form.setDataVigenciaInicial(dataVigenciaInicial);
      }

      if (servicoCobrancaValor.getDataVigenciaFinal() != null
          && !servicoCobrancaValor.getDataVigenciaFinal().equals("")) {

        form.setDataVigenciaFinal(dataVigenciaFinal);
      }

      if (servicoCobrancaValor.getIndicadorConsideraEconomias() != null
          && !servicoCobrancaValor.getIndicadorConsideraEconomias().equals("")) {

        form.setIndicativoTipoSevicoEconomias(
            servicoCobrancaValor.getIndicadorConsideraEconomias().toString());
      }

      if (servicoCobrancaValor.getQuantidadeEconomiasInicial() != null
          && !servicoCobrancaValor.getQuantidadeEconomiasInicial().equals("")) {

        form.setQuantidadeEconomiasInicial(
            servicoCobrancaValor.getQuantidadeEconomiasInicial().toString());
      }

      if (servicoCobrancaValor.getQuantidadeEconomiasFinal() != null
          && !servicoCobrancaValor.getQuantidadeEconomiasFinal().equals("")) {

        form.setQuantidadeEconomiasFinal(
            servicoCobrancaValor.getQuantidadeEconomiasFinal().toString());
      }
      if (servicoCobrancaValor.getIndicadorGeracaoDebito() != null
          && !servicoCobrancaValor.getIndicadorConsideraEconomias().toString().equals("")) {
        form.setIndicadorGeracaoDebito(servicoCobrancaValor.getIndicadorGeracaoDebito().toString());
      }
    }

    Date timeStamp = servicoCobrancaValor.getUltimaAlteracao();

    sessao.setAttribute("idServicoCobrancaValor", idServicoCobrancaValor);
    sessao.setAttribute("servicoCobrancaValor", servicoCobrancaValor);
    sessao.setAttribute("timeStamp", timeStamp);
    sessao.setAttribute("servicoTipo", servicoCobrancaValor.getServicoTipo());
    sessao.setAttribute("subCategoria", servicoCobrancaValor.getSubCategoria());
    sessao.setAttribute("imovelPerfil", servicoCobrancaValor.getImovelPerfil());
    sessao.setAttribute("indicadorMedido", servicoCobrancaValor.getIndicadorMedido());
    sessao.setAttribute("hidrometroCapacidade", servicoCobrancaValor.getHidrometroCapacidade());
    sessao.setAttribute("valor", servicoCobrancaValor.getValor());
    sessao.setAttribute("dataVigenciaInicial", servicoCobrancaValor.getDataVigenciaInicial());
    sessao.setAttribute("dataVigenciaFinal", servicoCobrancaValor.getDataVigenciaFinal());
    sessao.setAttribute(
        "indicadorConsideraEconomias", servicoCobrancaValor.getIndicadorConsideraEconomias());
    sessao.setAttribute(
        "quantidadeEconomiasInicial", servicoCobrancaValor.getQuantidadeEconomiasInicial());
    sessao.setAttribute(
        "quantidadeEconomiasFinal", servicoCobrancaValor.getQuantidadeEconomiasFinal());

    httpServletRequest.setAttribute("idServicoCobrancaValor", form.getIdServicoCobrancaValor());

    // Pesquisar Categoria
    this.pesquisarCategoria(httpServletRequest, form);

    // pesquisar SubCategoria
    this.pesquisarSubCategoria(httpServletRequest, form);

    if (form.getIndicadorMedido() != null
        && form.getIndicadorMedido().equals(ConstantesSistema.SIM.toString())) {
      if ((form.getIdCategoria() != null
              && !form.getIdCategoria().equals(ConstantesSistema.NUMERO_NAO_INFORMADO + ""))
          || (form.getIdSubCategoria() != null
              && !form.getIdSubCategoria().equals(ConstantesSistema.NUMERO_NAO_INFORMADO + ""))) {
        sessao.setAttribute("capacidadeObrigatoria", "sim");
      } else {
        sessao.setAttribute("capacidadeObrigatoria", "nao");
      }
    } else {
      sessao.setAttribute("capacidadeObrigatoria", "nao");
    }

    if (form.getIndicadorGeracaoDebito() != null
        && form.getIndicadorGeracaoDebito().equals(ConstantesSistema.SIM.toString())) {
      sessao.setAttribute("valorObrigatorio", "sim");
    } else {
      sessao.setAttribute("valorObrigatorio", "nao");
    }

    return retorno;
  }
  public ActionForward execute(
      ActionMapping actionMapping,
      ActionForm actionForm,
      HttpServletRequest httpServletRequest,
      HttpServletResponse httpServletResponse) {

    ActionForward retorno = actionMapping.findForward("exibirConsultarItensMovimentoArrecadador");

    HttpSession sessao = getSessao(httpServletRequest);

    PesquisarItensMovimentoArrecadadorActionForm pesquisarItensMovimentoArrecadadorActionForm =
        (PesquisarItensMovimentoArrecadadorActionForm) actionForm;

    String idArrecadadorMovimento =
        pesquisarItensMovimentoArrecadadorActionForm.getIdArrecadadorMovimento();

    Fachada fachada = Fachada.getInstancia();

    ArrecadadorMovimento arrecadadorMovimento = new ArrecadadorMovimento();
    arrecadadorMovimento.setId(new Integer(idArrecadadorMovimento));

    Integer idImovel = null;
    String retornoImovel = "";
    if (pesquisarItensMovimentoArrecadadorActionForm.getMatriculaImovel() != null
        && !pesquisarItensMovimentoArrecadadorActionForm.getMatriculaImovel().equals("")) {
      idImovel = new Integer(pesquisarItensMovimentoArrecadadorActionForm.getMatriculaImovel());

      retornoImovel = fachada.pesquisarInscricaoImovel(idImovel);
      if (retornoImovel == null || retornoImovel.equalsIgnoreCase("")) {
        throw new ActionServletException("atencao.imovel.inexistente");
      }
    } else {
      sessao.removeAttribute("valorDadosMovimento");
      sessao.removeAttribute("valorDadosPagamento");
    }

    String nomeArrecadador = "";

    Collection<Object[]> nomeArrecadadorNomeAgencia = null;

    if (idArrecadadorMovimento != null) {
      nomeArrecadadorNomeAgencia =
          fachada.consultarNomeArrecadadorNomeAgencia(idArrecadadorMovimento);

      Iterator iteDados = nomeArrecadadorNomeAgencia.iterator();

      while (iteDados.hasNext()) {

        String dados = (String) iteDados.next();

        if (dados != null) {

          if (dados != null) {
            nomeArrecadador = (String) dados;
          }
        }
      }
    }

    sessao.setAttribute("nomeArrecadador", nomeArrecadador);

    Short indicadorAceitacao = null;
    if (pesquisarItensMovimentoArrecadadorActionForm.getIndicadorAceitacao() != null
        && !pesquisarItensMovimentoArrecadadorActionForm.getIndicadorAceitacao().equals("")
        && !pesquisarItensMovimentoArrecadadorActionForm.getIndicadorAceitacao().equals("3")
        && !pesquisarItensMovimentoArrecadadorActionForm
            .getIndicadorAceitacao()
            .equals("" + ConstantesSistema.NUMERO_NAO_INFORMADO)) {

      indicadorAceitacao =
          new Short(pesquisarItensMovimentoArrecadadorActionForm.getIndicadorAceitacao());
    }

    String descricaoOcorrencia = null;
    if (pesquisarItensMovimentoArrecadadorActionForm.getDescricaoOcorrencia() != null
        && !pesquisarItensMovimentoArrecadadorActionForm.getDescricaoOcorrencia().equals("")
        && !pesquisarItensMovimentoArrecadadorActionForm.getDescricaoOcorrencia().equals("3")
        && !pesquisarItensMovimentoArrecadadorActionForm
            .getDescricaoOcorrencia()
            .equals("" + ConstantesSistema.NUMERO_NAO_INFORMADO)) {

      descricaoOcorrencia = pesquisarItensMovimentoArrecadadorActionForm.getDescricaoOcorrencia();
    }

    // ------------ Forma de Arrecadacao --------------- Kássia Albuquerque

    String codigoArrecadacaoForma = null;
    if (pesquisarItensMovimentoArrecadadorActionForm.getFormaArrecadacao() != null
        && !pesquisarItensMovimentoArrecadadorActionForm.getFormaArrecadacao().equals("")
        && !pesquisarItensMovimentoArrecadadorActionForm
            .getFormaArrecadacao()
            .equalsIgnoreCase("" + ConstantesSistema.NUMERO_NAO_INFORMADO)) {

      FiltroArrecadacaoForma filtroArrecadacaoForma = new FiltroArrecadacaoForma();

      filtroArrecadacaoForma.adicionarParametro(
          new ParametroSimples(
              FiltroArrecadacaoForma.CODIGO,
              pesquisarItensMovimentoArrecadadorActionForm.getFormaArrecadacao()));

      Collection<ArrecadacaoForma> colecaoArrecadacaoForma =
          fachada.pesquisar(filtroArrecadacaoForma, ArrecadacaoForma.class.getName());

      if (colecaoArrecadacaoForma != null && !colecaoArrecadacaoForma.isEmpty()) {

        ArrecadacaoForma arrecadacaoForma =
            (ArrecadacaoForma) colecaoArrecadacaoForma.iterator().next();
        codigoArrecadacaoForma = arrecadacaoForma.getCodigoArrecadacaoForma();
        String descricaoArrecadacao = arrecadacaoForma.getDescricao();

        pesquisarItensMovimentoArrecadadorActionForm.setDescricaoFormaArrecadacao(
            descricaoArrecadacao);
      }
    }

    Short indicadorDiferencaValorMovimentoValorPagamento =
        Short.parseShort(
            pesquisarItensMovimentoArrecadadorActionForm
                .getIndicadorDiferencaValorMovimentoValorPagamento());

    Collection colecaoArrecadadorMovimentoItemHelper =
        fachada.consultarItensMovimentoArrecadador(
            arrecadadorMovimento,
            idImovel,
            indicadorAceitacao,
            descricaoOcorrencia,
            codigoArrecadacaoForma,
            indicadorDiferencaValorMovimentoValorPagamento);

    // ------------- Agrupando os valores Totais do Movimento e do Pagamento ------- Kássia
    // Albuquerque

    ArrecadadorMovimentoItemHelper helper = null;
    BigDecimal valorDadosMovimento = new BigDecimal("0.00");
    BigDecimal valorDadosPagamento = new BigDecimal("0.00");

    if (colecaoArrecadadorMovimentoItemHelper != null
        && !colecaoArrecadadorMovimentoItemHelper.isEmpty()) {

      Iterator colecaoArrecadadorMovimentoItemHelperIterator =
          colecaoArrecadadorMovimentoItemHelper.iterator();
      // percorre a colecao de debito a cobrar somando o valor para obter um valor total
      while (colecaoArrecadadorMovimentoItemHelperIterator.hasNext()) {

        helper =
            (ArrecadadorMovimentoItemHelper) colecaoArrecadadorMovimentoItemHelperIterator.next();

        if (helper.getVlMovimento() != null && !helper.getVlMovimento().equals("")) {

          valorDadosMovimento =
              valorDadosMovimento.add(
                  Util.formatarMoedaRealparaBigDecimal(helper.getVlMovimento()));
        }

        if (helper.getVlPagamento() != null && !helper.getVlPagamento().equals("")) {

          valorDadosPagamento =
              valorDadosPagamento.add(
                  Util.formatarMoedaRealparaBigDecimal(helper.getVlPagamento()));
        }
      }

      sessao.setAttribute("valorDadosMovimento", Util.formatarMoedaReal(valorDadosMovimento));
      sessao.setAttribute("valorDadosPagamento", Util.formatarMoedaReal(valorDadosPagamento));
    }

    httpServletRequest.setAttribute(
        "colecaoArrecadadorMovimentoItemHelper", colecaoArrecadadorMovimentoItemHelper);

    pesquisarItensMovimentoArrecadadorActionForm.setColecaoArrecadadorMovimentoItem(
        colecaoArrecadadorMovimentoItemHelper);

    return retorno;
  }