Example usage for org.hibernate SQLQuery addScalar

List of usage examples for org.hibernate SQLQuery addScalar

Introduction

In this page you can find the example usage for org.hibernate SQLQuery addScalar.

Prototype

SQLQuery<T> addScalar(String columnAlias, Type type);

Source Link

Document

Declare a scalar query result.

Usage

From source file:eu.europa.ec.fisheries.uvms.spatial.service.dao.PostgresUtilsDao.java

License:Open Source License

@Override
public MultiPoint generatePoints(String wkt, Integer numberOfPoints) {

    Query nativeQuery = em.createNativeQuery("SELECT ST_GeneratePoints(ST_GeomFromText(:wkt), :nbrPoints);");

    nativeQuery.setParameter("wkt", wkt);
    nativeQuery.setParameter("nbrPoints", numberOfPoints);

    SQLQuery unwrap = nativeQuery.unwrap(SQLQuery.class);

    unwrap.addScalar("st_generatepoints", GeometryType.INSTANCE);

    Object singleResult = nativeQuery.getSingleResult();

    Geometry geometry = (Geometry) singleResult;
    return (MultiPoint) geometry;
}

From source file:gcom.atendimentopublico.RepositorioAtendimentoPublicoHBM.java

License:Open Source License

/**
 * [UC1177] Gerar Relatrio de Ordens de Servio por Situao
 * /*from w  w  w  . j  a v  a 2s . c  o m*/
 * O segundo parmetro (boletimGerado)  um booleano que
 * indica se para um dado grupo de cobrana e um ms referencia
 * foi gerado um boletim de medio.
 * 
 * @author Diogo Peixoto
 * @date 09/06/2011
 * 
 * @param FiltrarRelatorioOSSituacaoHelper
 * @param boletimGerado
 * @return Collection<FiltrarRelatorioOSSituacaoHelper>
 * @throws ErroRepositorioException
 */
public Collection<Object[]> filtrarRelatorioOSSituacao(FiltrarRelatorioOSSituacaoHelper helper,
        boolean boletimGerado) throws ErroRepositorioException {
    Collection<Object[]> relatorios = new ArrayList<Object[]>();

    /*
     * Esse mtodo pesquisa as ordens de servio por situao. O helper do parmetro
     * possui a situao da os com os seguintes valores:
     * 
     * 1 Descontadas
     * 2 Encerradas
     * 3 Executadas
     * 4 Fiscalizadas
     * 5 Justificadas
     * 6 Penalizadas por Fiscalizao
     * 7 Penalizadas por Decurso de Prazo
     * 8 Todas
      * 9 Encerradas com Execuo
     * 10 Encerradas por Decurso de Prazo
     * 11 Pendentes
     * 12 Fiscalizadas Boletim No Gerado
     * 13 Todas Boletim No Gerado
     * 
     */
    Session session = HibernateUtil.getSession();
    String consulta = "";
    Map<String, Object> parameters = new HashMap<String, Object>();
    StringBuilder sb = new StringBuilder();
    StringBuilder sbParametrosOpcionais = new StringBuilder();
    String clausulaWhere = "";
    String groupBy = "";
    String orderBy = "";

    try {
        if (!helper.getSituacaoOS().equals("2") && !helper.getSituacaoOS().equals("4")
                && !helper.getSituacaoOS().equals("8") && !helper.getSituacaoOS().equals("13")) {
            sb.append(this.filtrarRelatorioOSSituacaoSelect(helper, boletimGerado, false, null));
            sb.append("FROM atendimentopublico.ordem_servico orse ");
        }

        //Descontadas
        if (helper.getSituacaoOS().equals("1")) {
            sb.append(this.filtrarRelatorioOSSituacaoDescontadas());
            parameters.put("situacaoOS", "DESCONTADAS");

            //Executadas
        } else if (helper.getSituacaoOS().equals("3")) {
            sb.append(this.filtrarRelatorioOSSituacaoExecutadas());
            parameters.put("situacaoOS", "EXECUTADAS");

            //Justificadas
        } else if (helper.getSituacaoOS().equals("5")) {
            sb.append(this.filtrarRelatorioOSSituacaoJustificadas());
            parameters.put("situacaoOS", "JUSTIFICADAS");

            //Penalizadas por fiscalizao   
        } else if (helper.getSituacaoOS().equals("6")) {
            sb.append(this.filtrarRelatorioOSSituacaoPenalizadaFiscalizacao());
            parameters.put("situacaoOS", "PENALIZADAS POR FISCALIZAO");

            //Penalizadas por Decurso de Prazo
        } else if (helper.getSituacaoOS().equals("7")) {
            sb.append(this.filtrarRelatorioOSSituacaoPenalizadaDecursoPrazo());
            parameters.put("situacaoOS", "PENALIZADAS POR DECURSO DE PRAZO");

            //Encerradas com Execuo
        } else if (helper.getSituacaoOS().equals("9")) {
            sb.append(this.filtrarRelatorioOSSituacaoBoletimNaoGerado());
            clausulaWhere += " AND orse.orse_cdsituacao = 2 AND orse.amen_id != 32 AND encmt.amen_icexecucao = 1 ";
            parameters.put("situacaoOS", "ENCERRADAS COM EXECUO");

            //Pendentes
        } else if (helper.getSituacaoOS().equals("11")) {
            sb.append(this.filtrarRelatorioOSSituacaoBoletimNaoGerado());
            clausulaWhere += " AND orse.orse_cdsituacao = 1 ";
            parameters.put("situacaoOS", "PENDENTES");

            //Fiscalizadas Boletim No Gerado   
        } else if (helper.getSituacaoOS().equals("12")) {
            sb.append(this.filtrarRelatorioOSSituacaoBoletimNaoGerado());
            sb.append(
                    "INNER JOIN atendimentopublico.ordem_servico orseRef ON orseRef.orse_idreferencia = orse.orse_id ");
            parameters.put("situacaoOS", "FISCALIZADAS");

            //Encerradas com decurso de prazo
        } else if (helper.getSituacaoOS().equals("10")) {
            sb.append(this.filtrarRelatorioOSSituacaoBoletimNaoGerado());
            clausulaWhere += " AND orse.orse_cdsituacao = 2 AND orse.amen_id = 32 ";
            parameters.put("situacaoOS", "ENCERRADAS COM DECURSO DE PRAZO");
        }

        if (helper.getOpcaoOSCobranca() != null
                && helper.getOpcaoOSCobranca().equalsIgnoreCase("naoCobradasAutomaticamente")) {
            sbParametrosOpcionais.append(
                    "INNER JOIN atendimentopublico.fiscaliz_sit_serv_a_cob fiscACobrar ON orse.fzst_id = fiscACobrar.fzst_id ");
            clausulaWhere += " AND NOT EXISTS (SELECT dbtCo.imov_id ";
            clausulaWhere += "FROM faturamento.debito_a_cobrar dbtCo ";
            clausulaWhere += "WHERE dbtCo.imov_id = orse.imov_id AND dbtCo.dbtp_id = fiscACobrar.dbtp_id AND dbtCo.dbac_tmatudebito = orse.orse_tmencerramento) ";
            clausulaWhere += " AND NOT EXISTS (SELECT dbtHist.imov_id ";
            clausulaWhere += " FROM faturamento.deb_a_cobrar_hist dbtHist ";
            clausulaWhere += " WHERE dbtHist.imov_id = orse.imov_id AND dbtHist.dbtp_id = fiscACobrar.dbtp_id AND dbtHist.dahi_tmatudebito = orse.orse_tmencerramento) ";
        }

        if (helper.getServicoTipo() != null) {
            clausulaWhere += " AND orse.svtp_id = :servicoTipo ";
            parameters.put("servicoTipo", helper.getServicoTipo().getId());
        }

        boolean existeLocalidade;
        existeLocalidade = (helper.getLocalidade() != null ? existeLocalidade = true : false);
        // Localidade
        if (existeLocalidade) {
            sbParametrosOpcionais.append("INNER JOIN cadastro.localidade loca ON loca.loca_id = imov.loca_id ");
            clausulaWhere += " AND loca.loca_id = :idLocalidade ";
            parameters.put("idLocalidade", helper.getLocalidade().getId());
        }

        if (helper.getEloPolo() != null) {
            // Elo Polo
            if (!existeLocalidade) {
                sbParametrosOpcionais
                        .append("INNER JOIN cadastro.localidade loca ON loca.loca_id = imov.loca_id ");
                existeLocalidade = true;
            }
            clausulaWhere += " AND loca.loca_cdelo = :idEloPolo ";
            parameters.put("idEloPolo", helper.getEloPolo().getId());
        }

        // Gerncia Regional
        GerenciaRegional gerencia = helper.getGerenciaRegional();
        if (gerencia != null) {
            if (existeLocalidade) {
                sbParametrosOpcionais
                        .append("INNER JOIN cadastro.gerencia_regional ger ON ger.greg_id = loca.greg_id ");
            } else {
                sbParametrosOpcionais
                        .append("INNER JOIN cadastro.localidade loca ON loca.loca_id = imov.loca_id ");
                sbParametrosOpcionais
                        .append("INNER JOIN cadastro.gerencia_regional ger ON ger.greg_id = loca.greg_id ");
                existeLocalidade = true;
            }
            clausulaWhere += " AND ger.greg_id = :idGerencia ";
            parameters.put("idGerencia", gerencia.getId());
        }

        // Unidade Negcio
        UnidadeNegocio unidade = helper.getUnidadeNegocio();
        if (unidade != null) {
            if (existeLocalidade) {
                sbParametrosOpcionais
                        .append("INNER JOIN cadastro.unidade_negocio uni ON uni.uneg_id = loca.uneg_id ");
            } else {
                sbParametrosOpcionais
                        .append("INNER JOIN cadastro.localidade loca ON loca.loca_id = imov.loca_id ");
                sbParametrosOpcionais
                        .append("INNER JOIN cadastro.unidade_negocio uni ON uni.uneg_id = loca.uneg_id ");
            }
            clausulaWhere += " AND uni.uneg_id = :idUnidade ";
            parameters.put("idUnidade", unidade.getId());
        }

        // Setor Comercial
        if (helper.getSetorComercial() != null) {
            sbParametrosOpcionais
                    .append("INNER JOIN cadastro.setor_comercial setor ON setor.stcm_id = imov.stcm_id ");
            clausulaWhere += " AND setor.stcm_id = :idSetor ";
            parameters.put("idSetor", helper.getSetorComercial().getId());
        }

        // Quadra
        if (helper.getQuadra() != null) {
            sbParametrosOpcionais.append("INNER JOIN cadastro.quadra quadra ON quadra.qdra_id = imov.qdra_id ");
            clausulaWhere += " AND quadra.qdra_id = :idQuadra ";
            parameters.put("idQuadra", helper.getQuadra().getId());
        }

        if (helper.getSituacaoOS().equals("2")) {
            if (helper.getOpcaoRelatorio().equals("1")) {
                sb.append("SELECT DISTINCT aux.numeroOS, ");
                sb.append("aux.matriculaImovel, ");
                sb.append("aux.tipoServico, ");
                sb.append("aux.dataEncerramento, ");
                sb.append("aux.naoCobrada, ");
                sb.append("aux.valorConsumoFraudado, ");
                sb.append("aux.valorMulta, ");
                sb.append("aux.motivoEncerramento, ");
                sb.append("aux.retornoFiscalizacao, ");
                sb.append("aux.parecerEncerramento, ");
                sb.append("aux.situacaoOS ");
            } else if (helper.getOpcaoRelatorio().equals("2")) {
                sb.append("SELECT DISTINCT aux.tipoServico, ");
                sb.append("aux.motivoEncerramento, ");
                sb.append("aux.retornoFiscalizacao, ");
                sb.append("aux.situacaoOS AS situacaoOS, ");
                sb.append("SUM(aux.quantidade) AS quantidade ");
            }
            sb.append("FROM (");
            sb.append(this.filtrarRelatorioOSSituacaoSelect(helper, boletimGerado, true, null));
            sb.append("FROM atendimentopublico.ordem_servico orse ");
            sb.append(this.filtrarRelatorioOSSituacaoExecutadas());
            sb.append(sbParametrosOpcionais.toString());
            if (!clausulaWhere.trim().equals("")) {
                sb.append(" WHERE ");
                clausulaWhere = clausulaWhere.replaceFirst("AND", "");
                sb.append(clausulaWhere);
            }
            sb.append(" UNION ALL ");
            sb.append(this.filtrarRelatorioOSSituacaoSelect(helper, boletimGerado, true, null));
            sb.append("FROM atendimentopublico.ordem_servico orse ");
            sb.append(this.filtrarRelatorioOSSituacaoJustificadas());
            sb.append(sbParametrosOpcionais.toString());
            if (!clausulaWhere.trim().equals("")) {
                sb.append(" WHERE ");
                clausulaWhere = clausulaWhere.replaceFirst("AND", "");
                sb.append(clausulaWhere);
            }
            sb.append(") aux");
            parameters.put("situacaoOS", "ENCERRADAS");
        } else if (helper.getSituacaoOS().equals("4")) {
            sb.append(this.filtrarRelatorioOSSituacaoSelect(helper, boletimGerado, false, null));
            sb.append("FROM atendimentopublico.ordem_servico orse ");
            sb.append(this.filtrarRelatorioOSSituacaoFiscalizadas(helper, boletimGerado,
                    sbParametrosOpcionais.toString(), clausulaWhere));
            parameters.put("situacaoOS", "FISCALIZADAS");
        } else if (helper.getSituacaoOS().equals("8") || helper.getSituacaoOS().equals("13")) {
            sb.append(this.filtrarRelatorioOSSituacaoTodas(helper, boletimGerado,
                    sbParametrosOpcionais.toString(), clausulaWhere));
        } else {
            sb.append(sbParametrosOpcionais.toString());
        }

        if (!clausulaWhere.equals("") && !helper.getSituacaoOS().equals("2")
                && !helper.getSituacaoOS().equals("4") && !helper.getSituacaoOS().equals("8")
                && !helper.getSituacaoOS().equals("13")) {
            /*
             * Este trecho do cdigo retira o primeiro AND da clusula where e adiciona espao em branco
             * na ltima comparao para no dar erro na query.
             * Ex: 'WHERE AND os.orse_id' => 'WHERE os.orse_id '
             */
            sb.append("WHERE ");
            clausulaWhere = clausulaWhere.trim();
            clausulaWhere = clausulaWhere.replaceFirst("AND", "");
            clausulaWhere += " ";
            sb.append(clausulaWhere);
        }

        //Caso seja o relatrio sinttico
        if (helper.getOpcaoRelatorio().equals("2") && !helper.getSituacaoOS().equals("8")
                && !helper.getSituacaoOS().equals("13")) {
            groupBy += " GROUP BY tipoServico, motivoEncerramento, retornoFiscalizacao, situacaoOS ";
            orderBy += " ORDER BY tipoServico, motivoEncerramento, retornoFiscalizacao ";

            if (!helper.getSituacaoOS().equals("2")) {
                sb.append(") temp");
            }
        }

        sb.append(groupBy);
        sb.append(orderBy);

        consulta = sb.toString();
        SQLQuery sqlQuery = session.createSQLQuery(consulta);
        sqlQuery.setInteger("amReferencia", helper.getDataReferencia());
        sqlQuery.setInteger("cobrancaGrupoID", helper.getIdGrupoCobranca());

        if (helper.getOpcaoRelatorio().equalsIgnoreCase("1")) {
            sqlQuery = sqlQuery.addScalar("numeroOS", Hibernate.INTEGER)
                    .addScalar("matriculaImovel", Hibernate.INTEGER).addScalar("tipoServico", Hibernate.STRING)
                    .addScalar("dataEncerramento", Hibernate.DATE).addScalar("naoCobrada", Hibernate.STRING)
                    .addScalar("valorConsumoFraudado", Hibernate.BIG_DECIMAL)
                    .addScalar("valorMulta", Hibernate.BIG_DECIMAL)
                    .addScalar("motivoEncerramento", Hibernate.STRING)
                    .addScalar("retornoFiscalizacao", Hibernate.STRING)
                    .addScalar("parecerEncerramento", Hibernate.STRING)
                    .addScalar("situacaoOS", Hibernate.STRING);
        } else {

            sqlQuery = sqlQuery.addScalar("tipoServico", Hibernate.STRING)
                    .addScalar("motivoEncerramento", Hibernate.STRING)
                    .addScalar("retornoFiscalizacao", Hibernate.STRING)
                    .addScalar("situacaoOS", Hibernate.STRING).addScalar("quantidade", Hibernate.INTEGER);
        }

        //ITERA OS PARAMETROS E COLOCA 
        // OS MESMOS NA QUERY
        Set<String> set = parameters.keySet();
        Iterator<String> iterMap = set.iterator();
        while (iterMap.hasNext()) {
            String key = iterMap.next();
            sqlQuery.setParameter(key, parameters.get(key));
        }
        relatorios = sqlQuery.list();
    } catch (HibernateException e) {
        throw new ErroRepositorioException(e, "Erro no Hibernate");
    } finally {
        HibernateUtil.closeSession(session);
    }
    return relatorios;
}

From source file:gcom.atendimentopublico.RepositorioAtendimentoPublicoHBM.java

License:Open Source License

/**
 * [UC1178] Gerar Relatrio de Acompanhamento dos Boletins de Medio
 * /*from  w w  w.  j  a  v a  2  s  .  c  o  m*/
 * O segundo parmetro (relatorioDefinitivo)  um booleano que
 * indica se o relatrio  definitivo ou no, pois o resultado
 * da query  diferente para os relatrios definitivos e os
 * no-definitivos
 * 
 * @author Diogo Peixoto
 * @date 26/07/2011
 * 
 * @param FiltrarRelatorioAcompanhamentoBoletimMedicaoHelper
 * @param relatorioDefinitivo
 * @return Collection<Object[]>
 * @throws ErroRepositorioException
 */
public Collection<Object[]> filtrarRelatorioAcompanhamentoBoletimMedicao(
        FiltrarRelatorioAcompanhamentoBoletimMedicaoHelper filtro, boolean relatorioDefinitivo)
        throws ErroRepositorioException {

    Collection<Object[]> relatorios = new ArrayList<Object[]>();
    Session session = HibernateUtil.getSession();
    StringBuilder sb = new StringBuilder();

    try {
        sb.append("SELECT itensServico.idItemServico, ");//0 - ID Item Servio
        sb.append("itensServico.descricaoServico, ");//1 - Descrio Item Servio
        sb.append("itensServico.quantidadeOrcada, ");//2 - Quantidade Orada
        sb.append("itensServico.valorUnitario, ");//3 - Valor Unitrio
        sb.append("sum(itensServico.quantidade) as quantidadeItem, ");//4 - Quantidade do Item
        sb.append("(itensServico.valorUnitario * sum(itensServico.quantidade)) as valorItem, ");//5 - Valor Item
        sb.append("itensServico.unidadeItem, ");//6 - Unidade do Item
        sb.append("itensServico.valorOrcado, ");//7 - Valor Orcado
        sb.append("sum(itensServico.valorMedidoPeriodo) AS valorMedidoPeriodo ");//8 - Valor medido no perodo
        sb.append("FROM (SELECT ");
        sb.append("itse.itse_id AS idItemServico, ");
        sb.append("itse.itse_dsitemservico AS descricaoServico, ");
        sb.append("itsc.itsc_qtorcadaitemservico AS quantidadeOrcada, ");
        sb.append("1 AS quantidade, ");
        sb.append("itsc.itsc_vlitemservcontr AS valorUnitario, ");
        sb.append("(CASE WHEN itse.itse_cdconstantecalculo IN (3, 7, 9, 11, 13, 4, 8, 10, 12, 14) THEN 'UND' ");
        sb.append("WHEN itse.itse_cdconstantecalculo IN (15, 16, 17) THEN 'M2' ");
        sb.append("ELSE '' END) AS unidadeItem, ");
        sb.append("itsc.itsc_vlorcadoitemservico AS valorOrcado, ");
        sb.append("cbex.cbex_vlservico AS valorMedidoPeriodo ");
        sb.append("FROM cobranca.cobr_boletim_exec cbex ");
        sb.append(
                "INNER JOIN cobranca.cobr_boletim_medicao cobm ON (cbex.cobm_id = cobm.cobm_id AND cobm.cobm_amreferencia = :amReferencia) ");
        sb.append(
                "INNER JOIN micromedicao.contrato_empresa_servico cese ON (cobm.cese_id = cese.cese_id AND cese.cese_id = :idContrato) ");
        sb.append("INNER JOIN atendimentopublico.ordem_servico orse ON (cbex.orse_id = orse.orse_id) ");
        sb.append(
                "INNER JOIN micromedicao.item_servico_contrato itsc ON (cese.cese_id = itsc.cese_id AND orse.svtp_id = itsc.svtp_id) ");
        sb.append("INNER JOIN micromedicao.item_servico itse ON (itsc.itse_id = itse.itse_id) ");
        sb.append(
                "LEFT OUTER JOIN atendimentopublico.ordem_servico_boletim orbo ON (cbex.orse_id = orbo.orse_id) ");
        sb.append("WHERE (itse.itse_cdconstantecalculo IN (2,6) AND orbo.orbo_icpavimento = 3) ");
        sb.append("OR (itse.itse_cdconstantecalculo IN (3,7,9,11,13) AND orbo.orbo_icpavimento = 2) ");
        sb.append("OR (itse.itse_cdconstantecalculo IN (4,8,10,12,14) AND orbo.orbo_icpavimento = 1) ");
        sb.append("OR (itse.itse_cdconstantecalculo IN (1,5) OR itse.itse_cdconstantecalculo > 14) ");
        sb.append("ORDER BY idItemServico) itensServico ");
        sb.append(
                "GROUP BY idItemServico, descricaoServico, quantidadeOrcada, valorUnitario, unidadeItem, valorOrcado ");
        sb.append("ORDER BY idItemServico ");

        SQLQuery sqlQuery = session.createSQLQuery(sb.toString());

        sqlQuery = sqlQuery.addScalar("idItemServico", Hibernate.INTEGER)
                .addScalar("descricaoServico", Hibernate.STRING)
                .addScalar("quantidadeOrcada", Hibernate.BIG_DECIMAL)
                .addScalar("valorUnitario", Hibernate.BIG_DECIMAL)
                .addScalar("quantidadeItem", Hibernate.INTEGER).addScalar("valorItem", Hibernate.BIG_DECIMAL)
                .addScalar("unidadeItem", Hibernate.STRING).addScalar("valorOrcado", Hibernate.BIG_DECIMAL)
                .addScalar("valorMedidoPeriodo", Hibernate.BIG_DECIMAL);

        sqlQuery.setInteger("idContrato", filtro.getIdContratoEmpresaServico());
        sqlQuery.setInteger("amReferencia", filtro.getMesAnoReferencia());

        relatorios = sqlQuery.list();

    } catch (HibernateException e) {
        throw new ErroRepositorioException(e, "Erro no Hibernate");
    } finally {
        HibernateUtil.closeSession(session);
    }
    return relatorios;
}

From source file:gcom.atendimentopublico.RepositorioAtendimentoPublicoHBM.java

License:Open Source License

/**
 * [UC1178] Gerar Relatrio de Acompanhamento dos Boletins de Medio
 * /*  w w w .j a v  a 2 s  .c o m*/
 * Mtodo que vai retornar as quantidades acumuladas e os valores acumulados
 * no perodo para gerao do relatrio de acompanhamento do boletim de medio.
 * 
 * @author Diogo Peixoto
 * @date 01/08/2011
 * 
 * @param FiltrarRelatorioAcompanhamentoBoletimMedicaoHelper
 * @param relatorioDefinitivo
 * @return Collection<Object[]>
 * @throws ErroRepositorioException
 */
public Collection<Object[]> filtrarRelatorioAcompanhamentoBoletimMedicaoAcumuladas(
        FiltrarRelatorioAcompanhamentoBoletimMedicaoHelper filtro) throws ErroRepositorioException {

    Collection<Object[]> relatorios = new ArrayList<Object[]>();
    Session session = HibernateUtil.getSession();
    StringBuilder sb = new StringBuilder();

    try {
        sb.append("SELECT itensServico.idItemServico, ");//0 - ID Item Servio
        sb.append("itensServico.descricaoServico, ");//1 - Descrio Item Servio
        sb.append("sum(itensServico.quantidade) as quantidadeAcumuladaPeriodo, ");//2 - Quantidade Acumulada Perodo
        sb.append("sum(itensServico.valorMedidoPeriodo) AS valorAcumuladoPeriodo ");//3 - Valor Acumulado Perodo
        sb.append("FROM (SELECT ");
        sb.append("itse.itse_id AS idItemServico, ");
        sb.append("itse.itse_dsitemservico AS descricaoServico, ");
        sb.append("1 AS quantidade, ");
        sb.append("cbex.cbex_vlservico AS valorMedidoPeriodo ");
        sb.append("FROM cobranca.cobr_boletim_exec cbex ");
        sb.append("INNER JOIN cobranca.cobr_boletim_medicao cobm ON (cbex.cobm_id = cobm.cobm_id) ");
        sb.append(
                "INNER JOIN micromedicao.contrato_empresa_servico cese ON (cobm.cese_id = cese.cese_id AND cese.cese_id = :idContrato) ");
        sb.append("INNER JOIN atendimentopublico.ordem_servico orse ON (cbex.orse_id = orse.orse_id) ");
        sb.append(
                "INNER JOIN micromedicao.item_servico_contrato itsc ON (cese.cese_id = itsc.cese_id AND orse.svtp_id = itsc.svtp_id) ");
        sb.append("INNER JOIN micromedicao.item_servico itse ON (itsc.itse_id = itse.itse_id) ");
        sb.append(
                "LEFT OUTER JOIN atendimentopublico.ordem_servico_boletim orbo ON (cbex.orse_id = orbo.orse_id) ");
        sb.append("WHERE (itse.itse_cdconstantecalculo IN (2,6) AND orbo.orbo_icpavimento = 3) ");
        sb.append("OR (itse.itse_cdconstantecalculo IN (3,7,9,11,13) AND orbo.orbo_icpavimento = 2) ");
        sb.append("OR (itse.itse_cdconstantecalculo IN (4,8,10,12,14) AND orbo.orbo_icpavimento = 1) ");
        sb.append("OR (itse.itse_cdconstantecalculo IN (1,5) OR itse.itse_cdconstantecalculo > 14) ");
        sb.append("ORDER BY idItemServico) itensServico ");
        sb.append("GROUP BY idItemServico, descricaoServico ");
        sb.append("ORDER BY idItemServico ");

        SQLQuery sqlQuery = session.createSQLQuery(sb.toString());

        sqlQuery = sqlQuery.addScalar("idItemServico", Hibernate.INTEGER)
                .addScalar("descricaoServico", Hibernate.STRING)
                .addScalar("quantidadeAcumuladaPeriodo", Hibernate.INTEGER)
                .addScalar("valorAcumuladoPeriodo", Hibernate.BIG_DECIMAL);

        sqlQuery.setInteger("idContrato", filtro.getIdContratoEmpresaServico());

        relatorios = sqlQuery.list();

    } catch (HibernateException e) {
        throw new ErroRepositorioException(e, "Erro no Hibernate");
    } finally {
        HibernateUtil.closeSession(session);
    }
    return relatorios;
}

From source file:gcom.atendimentopublico.RepositorioAtendimentoPublicoHBM.java

License:Open Source License

private Collection<BigDecimal> filtrarRelatorioAcompanhamentoBoletimMedicaoPenalidadesOSFiscalizacao(
        FiltrarRelatorioAcompanhamentoBoletimMedicaoHelper filtro) throws ErroRepositorioException {

    Collection<Object[]> relatorios = new ArrayList<Object[]>();
    Collection<BigDecimal> retorno = new ArrayList<BigDecimal>();
    Session session = HibernateUtil.getSession();
    StringBuilder sb = new StringBuilder();

    try {/* w w w .j av a2  s .c  o  m*/
        sb.append("SELECT ");
        sb.append("SUM((SELECT cbde.cbde_vldesconto ");
        sb.append("FROM atendimentopublico.ordem_servico orse ");
        sb.append("WHERE orse.orse_id = cbde.orse_id AND orse.amen_id = 32)) AS penalidadeOS, ");//0 - Penalidade OS

        sb.append("SUM((SELECT cbde.cbde_vldesconto ");
        sb.append("FROM atendimentopublico.ordem_servico orse ");
        sb.append("WHERE orse.orse_id = cbde.orse_id AND orse.amen_id != 32)) AS penalidadeFiscalizacao ");//0 - Penalidade Fiscalizao

        sb.append("FROM cobranca.COBR_BOLETIM_DESC cbde ");
        sb.append(
                "INNER JOIN cobranca.cobr_boletim_medicao cobm on (cbde.cobm_id = cobm.cobm_id and cobm.cobm_amreferencia = :amReferencia) ");
        sb.append(
                "INNER JOIN micromedicao.CONTRATO_EMPRESA_SERVICO cese on (cobm.cese_id = cese.cese_id and cese.cese_id = :idContrato) ");

        SQLQuery sqlQuery = session.createSQLQuery(sb.toString());

        sqlQuery = sqlQuery.addScalar("penalidadeOS", Hibernate.BIG_DECIMAL).addScalar("penalidadeFiscalizacao",
                Hibernate.BIG_DECIMAL);

        sqlQuery.setInteger("idContrato", filtro.getIdContratoEmpresaServico());
        sqlQuery.setInteger("amReferencia", filtro.getMesAnoReferencia());

        relatorios = sqlQuery.list();

        Object[] penalidades = relatorios.iterator().next();
        BigDecimal penalidadeOS = new BigDecimal("0.00");
        if (penalidades[0] != null) {
            penalidadeOS = (BigDecimal) penalidades[0];
        }
        BigDecimal penalidadeFiscalizacao = new BigDecimal("0.00");
        if (penalidades[1] != null) {
            penalidadeFiscalizacao = (BigDecimal) penalidades[1];
        }
        retorno.add(penalidadeOS);
        retorno.add(penalidadeFiscalizacao);
    } catch (HibernateException e) {
        throw new ErroRepositorioException(e, "Erro no Hibernate");
    } finally {
        HibernateUtil.closeSession(session);
    }
    return retorno;
}

From source file:gcom.atendimentopublico.RepositorioAtendimentoPublicoHBM.java

License:Open Source License

private Collection<BigDecimal> filtrarRelatorioAcompanhamentoBoletimMedicaoPenalidadesCorteSupressaoNaoRealizacaoServico(
        FiltrarRelatorioAcompanhamentoBoletimMedicaoHelper filtro) throws ErroRepositorioException {

    Collection<Object[]> relatorios = new ArrayList<Object[]>();
    Collection<BigDecimal> retorno = new ArrayList<BigDecimal>();
    Session session = HibernateUtil.getSession();
    StringBuilder sb = new StringBuilder();

    try {/*from  w  w w .java 2 s .  c o m*/
        sb.append("SELECT ");
        sb.append("SUM((SELECT (cbex.cbex_vlservico) * 2 ");
        sb.append("FROM cobranca.motivo_nao_aceit_enc_os mnac ");
        sb.append(
                "WHERE caon.mnac_id = mnac.mnac_id and mnac.mnac_nnmultdesccortesupindev IS NOT NULL)) AS penalidadeCorteSupressao, ");
        sb.append("SUM((SELECT (cbex.cbex_vlservico) * 2 ");
        sb.append("FROM cobranca.motivo_nao_aceit_enc_os mnac ");
        sb.append(
                "WHERE caon.mnac_id = mnac.mnac_id and mnac.mnac_nnmultdescservnaoexec IS NOT NULL)) AS penalidadeNaoRealizacaoServico ");
        sb.append("FROM cobranca.cobr_boletim_exec cbex ");
        sb.append(
                "INNER JOIN cobranca.cobr_boletim_medicao cobm on (cbex.cobm_id = cobm.cobm_id and cobm.cobm_amreferencia = :amReferencia) ");
        sb.append(
                "INNER JOIN micromedicao.contrato_empresa_servico cese on (cobm.cese_id = cese.cese_id and cese.cese_id = :idContrato) ");
        sb.append("INNER JOIN cobranca.cob_ac_os_nao_aceitas caon on (cbex.orse_id = caon.orse_id) ");

        SQLQuery sqlQuery = session.createSQLQuery(sb.toString());

        sqlQuery = sqlQuery.addScalar("penalidadeCorteSupressao", Hibernate.BIG_DECIMAL)
                .addScalar("penalidadeNaoRealizacaoServico", Hibernate.BIG_DECIMAL);

        sqlQuery.setInteger("idContrato", filtro.getIdContratoEmpresaServico());
        sqlQuery.setInteger("amReferencia", filtro.getMesAnoReferencia());

        relatorios = sqlQuery.list();

        Object[] penalidades = relatorios.iterator().next();
        BigDecimal penalidadeCorteSupressao = new BigDecimal("0.00");
        if (penalidades[0] != null) {
            penalidadeCorteSupressao = (BigDecimal) penalidades[0];
        }
        BigDecimal penalidadeNaoRealizacaoServicos = new BigDecimal("0.00");
        if (penalidades[1] != null) {
            penalidadeNaoRealizacaoServicos = (BigDecimal) penalidades[1];
        }
        retorno.add(penalidadeCorteSupressao);
        retorno.add(penalidadeNaoRealizacaoServicos);

    } catch (HibernateException e) {
        throw new ErroRepositorioException(e, "Erro no Hibernate");
    } finally {
        HibernateUtil.closeSession(session);
    }
    return retorno;
}

From source file:gcom.atendimentopublico.RepositorioAtendimentoPublicoHBM.java

License:Open Source License

/**
 * [UC1178] Gerar Relatrio de Acompanhamento dos Boletins de Medio
 * /*from w ww. ja  v a  2 s.c o m*/
 * @author Diogo Peixoto
 * @date 28/07/2011
 * 
 * @param FiltrarRelatorioAcompanhamentoBoletimMedicaoHelper
 * @param relatorioDefinitivo
 * @return Quantidade de OS Executadas para determinado boletim de medio
 * @throws ErroRepositorioException
 */
public Integer pesquisarQuantidadeOSExecutadas(FiltrarRelatorioAcompanhamentoBoletimMedicaoHelper filtro)
        throws ErroRepositorioException {

    Session session = HibernateUtil.getSession();
    StringBuilder sb = new StringBuilder();
    Integer qtdeOSExecutadas = 0;

    try {
        sb.append("SELECT COUNT(execu.orse_id) AS quantidade ");
        sb.append("FROM cobranca.cobr_boletim_exec execu ");
        sb.append(
                "INNER JOIN cobranca.cobr_boletim_medicao med ON execu.cobm_id = med.cobm_id AND med.cobm_amreferencia = :amReferencia ");
        sb.append("AND med.cese_id = :idContrato ");

        String consulta = sb.toString();
        SQLQuery sqlQuery = session.createSQLQuery(consulta);
        sqlQuery = sqlQuery.addScalar("quantidade", Hibernate.INTEGER);

        sqlQuery.setInteger("idContrato", filtro.getIdContratoEmpresaServico());
        sqlQuery.setInteger("amReferencia", filtro.getMesAnoReferencia());

        qtdeOSExecutadas = (Integer) sqlQuery.uniqueResult();

    } catch (HibernateException e) {
        throw new ErroRepositorioException(e, "Erro no Hibernate");
    } finally {
        HibernateUtil.closeSession(session);
    }
    return qtdeOSExecutadas;
}

From source file:gcom.atendimentopublico.RepositorioAtendimentoPublicoHBM.java

License:Open Source License

/**
 * [UC1178] Gerar Relatrio de Acompanhamento dos Boletins de Medio
 * //from   w w  w  .  j a  v  a2  s .  c  om
 * @author Diogo Peixoto
 * @date 28/07/2011
 * 
 * @param FiltrarRelatorioAcompanhamentoBoletimMedicaoHelper
 * @param relatorioDefinitivo
 * @return Quantidade de OS Penalizadas para determinado boletim de medio
 * @throws ErroRepositorioException
 */
public Integer pesquisarQuantidadeOSPenalizadas(FiltrarRelatorioAcompanhamentoBoletimMedicaoHelper filtro)
        throws ErroRepositorioException {

    Session session = HibernateUtil.getSession();
    StringBuilder sb = new StringBuilder();
    Integer qtdeOSPenalizadas = 0;

    try {
        sb.append("SELECT COUNT(desco.orse_id) AS quantidade ");
        sb.append("FROM cobranca.cobr_boletim_desc desco ");
        sb.append(
                "INNER JOIN cobranca.cobr_boletim_medicao med ON med.cobm_id = desco.cobm_id AND med.cobm_amreferencia = :amReferencia ");
        sb.append("AND med.cese_id = :idContrato ");

        String consulta = sb.toString();
        SQLQuery sqlQuery = session.createSQLQuery(consulta);
        sqlQuery = sqlQuery.addScalar("quantidade", Hibernate.INTEGER);

        sqlQuery.setInteger("idContrato", filtro.getIdContratoEmpresaServico());
        sqlQuery.setInteger("amReferencia", filtro.getMesAnoReferencia());

        qtdeOSPenalizadas = (Integer) sqlQuery.uniqueResult();

    } catch (HibernateException e) {
        throw new ErroRepositorioException(e, "Erro no Hibernate");
    } finally {
        HibernateUtil.closeSession(session);
    }
    return qtdeOSPenalizadas;
}

From source file:gcom.atendimentopublico.RepositorioAtendimentoPublicoHBM.java

License:Open Source License

/**
 * [UC1178] Gerar Relatrio de Acompanhamento dos Boletins de Medio
 * //from   ww  w.  j  a v  a2 s  .c  o  m
 * @author Diogo Peixoto
 * @date 01/08/2011
 * 
 * @param FiltrarRelatorioAcompanhamentoBoletimMedicaoHelper
 * @return Taxa de Sucesso do Boletim de Medio
 * 
 * @throws ErroRepositorioException
 */
public BigDecimal pesquisarTaxaSucessoBoletimMedicao(FiltrarRelatorioAcompanhamentoBoletimMedicaoHelper filtro)
        throws ErroRepositorioException {

    Session session = HibernateUtil.getSession();
    StringBuilder sb = new StringBuilder();
    BigDecimal taxaSucesso = new BigDecimal("0.00");

    try {
        sb.append("SELECT sum(cbsu.CBSU_VLTXSUCESSO) AS taxaSucesso ");
        sb.append("FROM cobranca.COBR_BOLETIM_SUCESSO cbsu ");
        sb.append(
                "INNER JOIN cobranca.cobr_boletim_medicao cobm on (cbsu.cobm_id = cobm.cobm_id and cobm.cobm_amreferencia = :amReferencia) ");
        sb.append(
                "INNER JOIN micromedicao.contrato_empresa_servico cese on (cobm.cese_id = cese.cese_id and cese.cese_id = :idContrato) ");

        String consulta = sb.toString();
        SQLQuery sqlQuery = session.createSQLQuery(consulta);
        sqlQuery = sqlQuery.addScalar("taxaSucesso", Hibernate.BIG_DECIMAL);

        sqlQuery.setInteger("amReferencia", filtro.getMesAnoReferencia());
        sqlQuery.setInteger("idContrato", filtro.getIdContratoEmpresaServico());

        taxaSucesso = (BigDecimal) sqlQuery.uniqueResult();

    } catch (HibernateException e) {
        throw new ErroRepositorioException(e, "Erro no Hibernate");
    } finally {
        HibernateUtil.closeSession(session);
    }
    return taxaSucesso;
}

From source file:gcom.atendimentopublico.RepositorioAtendimentoPublicoHBM.java

License:Open Source License

public boolean gruposIniciaodsJaForamEncerrados(FiltrarRelatorioAcompanhamentoBoletimMedicaoHelper filtro)
        throws ErroRepositorioException {

    Session sessao = HibernateUtil.getSession();

    boolean encerrado = true;
    StringBuilder sb = new StringBuilder();
    sb.append("SELECT acao.caac_tmrealizacao AS dataRealizacao ");
    sb.append("FROM cobranca.cobranca_acao_ativ_crg acao ");
    sb.append("INNER JOIN cobranca.cobranca_acao_cronograma cron ON cron.cbcr_id = acao.cbcr_id ");
    sb.append(/*from  w  w w  .j  a  v a  2s.c o  m*/
            "INNER JOIN cobranca.cobranca_grupo_crg_mes mes ON mes.cbcm_id = cron.cbcm_id AND mes.cbcm_amreferencia = :amReferencia ");
    sb.append("INNER JOIN cobranca.cobranca_grupo grupo ON grupo.cbgr_id = mes.cbgr_id ");
    sb.append(
            "INNER JOIN micromedicao.contrato_empresa_servico cont ON cont.cese_id = grupo.cese_id AND grupo.cese_id = :numeroContrato");

    SQLQuery query = sessao.createSQLQuery(sb.toString());
    query.setInteger("amReferencia", filtro.getMesAnoReferencia());
    query.setInteger("numeroContrato", filtro.getIdContratoEmpresaServico());
    query.addScalar("dataRealizacao", Hibernate.DATE);

    List<Date> retorno = (List<Date>) query.list();

    /*Verifica se existe alguma data igual a NULL, se existe  porque os grupos iniciados
     * no foram executados.
     */
    for (Date date : retorno) {
        if (date == null) {
            encerrado = false;
            break;
        }
    }
    return encerrado;
}