Obrigada a Todos ficou assim:
[code]
@Name(value = “agendaConsultaService”)
public class MarcacaoConsultaServiceImpl extends AppServiceImpl<AgendaConsulta> implements MarcacaoConsultaService {
private static final long serialVersionUID = 1L;
@SuppressWarnings("unchecked")
public List<String> pesquisarPorParamentrosComDistinct(AgendaConsulta agendaConsulta, String propriedadeDistinct) throws Exception {
try {
Criteria criteria = createCriteria(agendaConsulta, MatchMode.ANYWHERE);
criteria.setProjection( Projections.distinct( Projections.property( propriedadeDistinct ) ) );
return criteria.list();
} catch (Exception ex) {
ex.printStackTrace();
}
return null;
}
@SuppressWarnings("unchecked")
public List<Uf> buscarUf() throws Exception{
try {
Session session = getSession();
StringBuilder hql = new StringBuilder();
hql.append(" select uf from Uf uf");
Query query= session.createQuery(hql.toString());
return query.list();
} catch (Exception e) {
throw new Exception("Erro ao buscar ufs: " + e.getMessage());
}
}
@SuppressWarnings("unchecked")
public List<Filial> buscarFiliais(Uf uf) throws Exception{
try {
Session session = getSession();
StringBuilder hql = new StringBuilder();
hql.append(" select distinct f from Filial f, EnderecoPessoa ep, Uf uf, Pessoa p " +
" where p.codigoPessoa = ep.pessoa.codigoPessoa" +
" and ep.uf.codigo = uf.codigo " +
" and f.pessoa.codigoPessoa = p.codigoPessoa" +
" and uf.codigo = :codigoUf");
Query query= session.createQuery(hql.toString());
query.setParameter("codigoUf", uf.getCodigo());
return query.list();
} catch (Exception e) {
throw new Exception("Erro ao buscar filiais: " + e.getMessage());
}
}
@SuppressWarnings("unchecked")
public List<PrestadorJuridico> buscarPrestadoresJuridicos(Filial filial) throws Exception{
try {
Session session = getSession();
StringBuilder hql = new StringBuilder();
hql.append(" select distinct pj from PrestadorJuridico pj, EnderecoPessoa ep , Pessoa p " +
" where pj.pessoa.codigoPessoa = p.codigoPessoa "+
" and ep.pessoa.codigoPessoa = pj.pessoa.codigoPessoa " +
" and pj.filial.codigo = :codigoFilial ");
Query query= session.createQuery(hql.toString());
query.setParameter("codigoFilial", filial.getCodigo());
query.setMaxResults(50);
return query.list();
} catch (Exception e) {
throw new Exception("Erro ao buscar prestadores juridicos: " + e.getMessage());
}
}
@SuppressWarnings("unchecked")
public List<Especialidade> buscarEspecialidades(PrestadorJuridico prestadorJuridico) throws Exception{
try {
Session session = getSession();
StringBuilder hql = new StringBuilder();
hql.append(" select distinct e from Especialidade e, HorarioMedico hm " +
" where hm.especialidade.codigo = e.codigo" +
" and hm.prestadorJuridico.pessoa.codigoPessoa = :codigoPrestador order by e.descricao");
Query query= session.createQuery(hql.toString());
query.setParameter("codigoPrestador", prestadorJuridico.getPessoa().getCodigoPessoa());
return query.list();
} catch (Exception e) {
throw new Exception("Erro ao buscar especialidades: " + e.getMessage());
}
}
@SuppressWarnings("unchecked")
public List<PrestadorFisico> buscarMedicos(PrestadorJuridico prestadorJuridico, Especialidade especialidade) throws Exception{
try {
Session session = getSession();
StringBuilder hql = new StringBuilder();
hql.append(" select distinct pf from Especialidade e, PrestadorFisico pf, HorarioMedico hm " +
" where hm.prestadorJuridico.pessoa.codigoPessoa = :codigoPrestador " +
" and hm.especialidade.codigo = :codigoEspecialidade");
Query query= session.createQuery(hql.toString());
query.setParameter("codigoPrestador", prestadorJuridico.getPessoa().getCodigoPessoa());
query.setParameter("codigoEspecialidade", especialidade.getCodigo());
return query.list();
} catch (Exception e) {
throw new Exception("Erro ao buscar medicos: " + e.getMessage());
}
}
@SuppressWarnings("unchecked")
public List<ResultadoConsulta> buscarAgendaPorUf() throws Exception{
List<ResultadoConsulta> lista = new ArrayList<ResultadoConsulta>();
try {
Session session = getSession();
StringBuilder sql = new StringBuilder();
sql.append("select " +
" cd_uf, "
+ getSqlComun() +
" and dt_consulta between sysdate and sysdate + 7 " +
" group by cd_uf " );
Query query = session.createSQLQuery(sql.toString());
query.setResultTransformer(Transformers.aliasToBean(ResultadoConsulta.class));
lista = query.list();
} catch (Exception e) {
throw new Exception("Erro ao buscar medicos: " + e.getMessage());
}
return lista;
}
@SuppressWarnings("unchecked")
public List<ResultadoConsulta> buscarAgendaPorFilial(ResultadoConsulta resultadoConsulta) throws Exception{
List<ResultadoConsulta> lista = new ArrayList<ResultadoConsulta>();
try {
Session session = getSession();
StringBuilder sql = new StringBuilder();
sql.append(" select ");
sql.append(" cd_uf, ");
sql.append(" cd_filial, ");
sql.append(" nm_filial, ");
sql.append(" " + getSqlComun() + " ");
if(resultadoConsulta.getCD_UF() != null)
sql.append(" and cd_uf = '" + resultadoConsulta.getCD_UF() + "' ");
sql.append(" and dt_consulta between sysdate and sysdate + 7 ");
sql.append(" group by cd_uf, cd_filial, nm_filial" );
Query query = session.createSQLQuery(sql.toString());
query.setResultTransformer(Transformers.aliasToBean(ResultadoConsulta.class));
lista = query.list();
} catch (Exception e) {
throw new Exception("Erro ao buscar medicos: " + e.getMessage());
}
return lista;
}
@SuppressWarnings("unchecked")
public List<ResultadoConsulta> buscarAgendaPorLocalidade(ResultadoConsulta resultadoConsulta) throws Exception{
List<ResultadoConsulta> lista = new ArrayList<ResultadoConsulta>();
try {
Session session = getSession();
StringBuilder sql = new StringBuilder();
sql.append(" select " );
sql.append(" cd_uf, " );
sql.append(" cd_filial, " );
sql.append(" nm_filial, " );
sql.append(" cd_prestador_juridico, " );
sql.append(" nm_prestador_juridico, " );
sql.append(" " + getSqlComun() + " ");
if( resultadoConsulta.getCD_FILIAL() != null)
sql.append(" and cd_filial = " + resultadoConsulta.getCD_FILIAL() + " " );
sql.append(" and dt_consulta between sysdate and sysdate + 7 " );
sql.append(" group by cd_uf, cd_filial, nm_filial, cd_prestador_juridico, nm_prestador_juridico " );
Query query = session.createSQLQuery(sql.toString());
query.setResultTransformer(Transformers.aliasToBean(ResultadoConsulta.class));
lista = query.list();
} catch (Exception e) {
throw new Exception("Erro ao buscar medicos: " + e.getMessage());
}
return lista;
}
@SuppressWarnings("unchecked")
public List<ResultadoConsulta> buscarAgendaPorEspecialidade(ResultadoConsulta resultadoConsulta) throws Exception{
List<ResultadoConsulta> lista = new ArrayList<ResultadoConsulta>();
try {
Session session = getSession();
StringBuilder sql = new StringBuilder();
sql.append(" select " );
sql.append(" cd_uf, " );
sql.append(" cd_filial, " );
sql.append(" nm_filial, " );
sql.append(" cd_prestador_juridico, " );
sql.append(" nm_prestador_juridico, " );
sql.append(" cd_especialidade, " );
sql.append(" nm_especialidade, " );
sql.append(" " + getSqlComun() + " ");
if(resultadoConsulta.getCD_PRESTADOR_JURIDICO() != null)
sql.append(" and cd_prestador_juridico = " + resultadoConsulta.getCD_PRESTADOR_JURIDICO() +"" );
sql.append(" and dt_consulta between sysdate and sysdate + 7 " );
sql.append(" group by cd_uf, cd_filial, nm_filial, cd_prestador_juridico, nm_prestador_juridico, cd_especialidade, nm_especialidade " );
Query query = session.createSQLQuery(sql.toString());
query.setResultTransformer(Transformers.aliasToBean(ResultadoConsulta.class));
lista = query.list();
} catch (Exception e) {
throw new Exception("Erro ao buscar medicos: " + e.getMessage());
}
return lista;
}
@SuppressWarnings("unchecked")
public List<ResultadoConsulta> buscarAgendaPorMedico(ResultadoConsulta resultadoConsulta) throws Exception{
List<ResultadoConsulta> lista = new ArrayList<ResultadoConsulta>();
try {
Session session = getSession();
StringBuilder sql = new StringBuilder();
sql.append(" select " );
sql.append(" cd_uf," );
sql.append(" cd_filial," );
sql.append(" nm_filial, " );
sql.append(" cd_prestador_juridico, " );
sql.append(" nm_prestador_juridico, " );
sql.append(" cd_especialidade, " );
sql.append(" nm_especialidade, " );
sql.append(" cd_prestador_fisico, " );
sql.append(" nm_prestador_fisico, " );
sql.append(" " + getSqlComun() + " ");
if( resultadoConsulta.getCD_ESPECIALIDADE() != null)
sql.append(" and cd_especialidade = " + resultadoConsulta.getCD_ESPECIALIDADE() +" ");
sql.append(" and dt_consulta between sysdate and sysdate + 7 " );
sql.append(" group by cd_uf, cd_filial, nm_filial, cd_prestador_juridico, nm_prestador_juridico, " );
sql.append(" cd_especialidade, nm_especialidade, cd_prestador_fisico, nm_prestador_fisico " );
Query query = session.createSQLQuery(sql.toString());
query.setResultTransformer(Transformers.aliasToBean(ResultadoConsulta.class));
lista = query.list();
} catch (Exception e) {
throw new Exception("Erro ao buscar medicos: " + e.getMessage());
}
return lista;
}
public String getSqlComun(){
StringBuilder sql = new StringBuilder();
sql.append(" min(dt_disponib_agenda) dt_min_disponib_agenda, " +
" max(dt_disponib_agenda) dt_max_disponib_agenda, " +
" min(dt_marcacao_consulta) dt_min_marcacao_consulta, " +
" max(dt_marcacao_consulta) dt_max_marcacao_consulta, " +
" sum(decode(dt_marcacao_consulta,null,1,0)) qtd_consultas_abertas, " +
" sum(decode((nvl(dt_marcacao_consulta,dt_disponib_agenda) - dt_disponib_agenda),0,0,1)) qtd_consultas_efetivadas, " +
" ( sum(decode(dt_marcacao_consulta,null,1,0)) + " +
" sum(decode((nvl(dt_marcacao_consulta,dt_disponib_agenda) - dt_disponib_agenda),0,0,1)) " +
" ) qtd_consultas, " +
" sum(nvl(dt_marcacao_consulta,dt_disponib_agenda) - dt_disponib_agenda) velocidade_dias, " +
" sum((nvl(dt_marcacao_consulta,dt_disponib_agenda) - dt_disponib_agenda)/24) velocidade_horas, " +
" sum((nvl(dt_marcacao_consulta,dt_disponib_agenda) - dt_disponib_agenda)/1440) velocidade_minutos " +
" , " +
" case " +
" when sum(decode((nvl(dt_marcacao_consulta,dt_disponib_agenda) - dt_disponib_agenda),0,0,1)) <> 0 then " +
" ( sum(nvl(dt_marcacao_consulta,dt_disponib_agenda) - dt_disponib_agenda) / " +
" sum(decode((nvl(dt_marcacao_consulta,dt_disponib_agenda) - dt_disponib_agenda),0,0,1)) " +
" ) " +
" else " +
" 0 " +
" end media_velocid_dias_consulta, " +
" case " +
" when sum(decode((nvl(dt_marcacao_consulta,dt_disponib_agenda) - dt_disponib_agenda),0,0,1)) <> 0 then " +
" ( sum((nvl(dt_marcacao_consulta,dt_disponib_agenda) - dt_disponib_agenda)/24) / " +
" sum(decode((nvl(dt_marcacao_consulta,dt_disponib_agenda) - dt_disponib_agenda),0,0,1)) " +
" ) " +
" else " +
" 0 " +
" end media_velocid_horas_consulta " +
" from tb_agenda_consulta " +
" where (fl_ex_pf = 0 and fl_ex_pj = 0 and fl_ex_fil = 0 and fl_ex_tot = 0) " +
" and cd_uf is not null " );
return sql.toString();
}
}[/code]