package br.com.centralit.citcorpore.integracao;
import java.math.BigDecimal;
import java.sql.Date;
import java.sql.Timestamp;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import org.apache.commons.lang.StringUtils;
import br.com.centralit.bpm.dto.ElementoFluxoDTO;
import br.com.centralit.bpm.dto.TarefaFluxoDTO;
import br.com.centralit.bpm.util.Enumerados.SituacaoItemTrabalho;
import br.com.centralit.citcorpore.bean.BaseConhecimentoDTO;
import br.com.centralit.citcorpore.bean.CalendarioDTO;
import br.com.centralit.citcorpore.bean.CausaIncidenteDTO;
import br.com.centralit.citcorpore.bean.ContratoDTO;
import br.com.centralit.citcorpore.bean.EmpregadoDTO;
import br.com.centralit.citcorpore.bean.GerenciamentoServicosDTO;
import br.com.centralit.citcorpore.bean.GrupoDTO;
import br.com.centralit.citcorpore.bean.JornadaTrabalhoDTO;
import br.com.centralit.citcorpore.bean.PesquisaSolicitacaoServicoDTO;
import br.com.centralit.citcorpore.bean.RelatorioCausaSolucaoDTO;
import br.com.centralit.citcorpore.bean.RelatorioDocumentacaoDeFuncionalidadesNovasOuAlteradasNoPeriodoDTO;
import br.com.centralit.citcorpore.bean.RelatorioEficaciaTesteDTO;
import br.com.centralit.citcorpore.bean.RelatorioIncidentesNaoResolvidosDTO;
import br.com.centralit.citcorpore.bean.RelatorioKpiProdutividadeDTO;
import br.com.centralit.citcorpore.bean.RelatorioQuantitativoRetornoDTO;
import br.com.centralit.citcorpore.bean.RelatorioQuantitativoSolicitacaoDTO;
import br.com.centralit.citcorpore.bean.RelatorioQuantitativoSolicitacaoProblemaPorServicoDTO;
import br.com.centralit.citcorpore.bean.RelatorioSolicitacaoPorExecutanteDTO;
import br.com.centralit.citcorpore.bean.ServicoDTO;
import br.com.centralit.citcorpore.bean.SolicitacaoServicoDTO;
import br.com.centralit.citcorpore.bean.UnidadeDTO;
import br.com.centralit.citcorpore.bean.UsuarioDTO;
import br.com.centralit.citcorpore.negocio.CalendarioServiceEjb;
import br.com.centralit.citcorpore.util.CITCorporeUtil;
import br.com.centralit.citcorpore.util.Enumerados;
import br.com.centralit.citcorpore.util.Enumerados.ParametroSistema;
import br.com.centralit.citcorpore.util.Enumerados.SituacaoSLA;
import br.com.centralit.citcorpore.util.Enumerados.SituacaoSolicitacaoServico;
import br.com.centralit.citcorpore.util.Enumerados.TipoSolicitacaoServico;
import br.com.centralit.citcorpore.util.ParametroUtil;
import br.com.centralit.citcorpore.util.Util;
import br.com.citframework.dto.IDto;
import br.com.citframework.excecao.PersistenceException;
import br.com.citframework.excecao.ServiceException;
import br.com.citframework.integracao.Condition;
import br.com.citframework.integracao.CrudDaoDefaultImpl;
import br.com.citframework.integracao.Field;
import br.com.citframework.integracao.Order;
import br.com.citframework.integracao.TransactionControler;
import br.com.citframework.util.Constantes;
import br.com.citframework.util.SQLConfig;
import br.com.citframework.util.UtilDatas;
import br.com.citframework.util.UtilStrings;
@SuppressWarnings({ "unchecked", "rawtypes" })
public class SolicitacaoServicoDao extends CrudDaoDefaultImpl {
public static String strSGBDPrincipal = null;
private static final String TABLE_NAME = "solicitacaoservico";
public SolicitacaoServicoDao() {
super(Constantes.getValue("DATABASE_ALIAS"), null);
}
/**
* Adicona o filtro de pesquisa de solicita��o a pagina��o dos itens Precisa ser adicionado na lista de tarefas e na pagina��o dos itens
*
* @param sql
* @param gerenciamentoBean
* @throws Exception
*/
public void adicionarFiltroPesquisa(StringBuilder sql, GerenciamentoServicosDTO gerenciamentoBean, List parametros) throws Exception {
if (gerenciamentoBean != null) {
if (gerenciamentoBean.getIdSolicitacao() != null && !gerenciamentoBean.getIdSolicitacao().equals(new Integer(-1))) {
sql.append(" AND sol.idSolicitacaoServico = ? ");
parametros.add(gerenciamentoBean.getIdSolicitacao());
}
if (gerenciamentoBean.getIdSolicitante() != null && !gerenciamentoBean.getIdSolicitante().equals(new Integer(-1))) {
sql.append(" AND sol.idSolicitante = ? ");
parametros.add(gerenciamentoBean.getIdSolicitante());
}
if (gerenciamentoBean.getIdTipo() != null && !gerenciamentoBean.getIdTipo().equals(new Integer(-1))) {
sql.append(" AND sol.idTipoDemandaServico = ? ");
parametros.add(gerenciamentoBean.getIdTipo());
}
if (gerenciamentoBean.getIdContrato() != null && !gerenciamentoBean.getIdContrato().equals(new Integer(-1))) {
sql.append(" AND c.idcontrato = ? ");
parametros.add(gerenciamentoBean.getIdContrato());
}
if (gerenciamentoBean.getIdGrupoAtual() != null && !gerenciamentoBean.getIdGrupoAtual().equals(new Integer(-1))) {
// Hack para itens sem atribui��o)
if (gerenciamentoBean.getIdGrupoAtual().equals(new Integer(0))) {
sql.append(" AND sol.idGrupoAtual is null ");
} else {
sql.append(" AND sol.idGrupoAtual = ? ");
parametros.add(gerenciamentoBean.getIdGrupoAtual());
}
}
if (gerenciamentoBean.getPalavraChave() != null && !StringUtils.isEmpty(gerenciamentoBean.getPalavraChave())) {
/*
* Rodrigo Pecci Acorse - 27/01/2014 10h30 - #132118 Adicionado % nos likes para melhor o resultado das buscas por palavra chave.
*/
sql.append(" AND ( ");
sql.append(" sol.descricao like ? ");
parametros.add("%" + gerenciamentoBean.getPalavraChave() + "%");
sql.append(" OR s.nomeServico like ? ");
parametros.add("%" + gerenciamentoBean.getPalavraChave() + "%");
sql.append(" OR e1.nome like ? ");
parametros.add("%" + gerenciamentoBean.getPalavraChave() + "%");
sql.append(" OR g1.sigla like ? ");
parametros.add("%" + gerenciamentoBean.getPalavraChave() + "%");
sql.append(") ");
}
if (gerenciamentoBean.getSituacao() != null && StringUtils.isNotBlank(gerenciamentoBean.getSituacao())) {
sql.append(" AND sol.situacao = ? ");
parametros.add(gerenciamentoBean.getSituacao());
}
}
}
public void atualizaDataHoraCaptura(SolicitacaoServicoDTO solicitacaoDto) {
StringBuilder sql = new StringBuilder();
sql.append("UPDATE " + getTableName() + " SET dataHoraCaptura = ? WHERE idsolicitacaoservico = ?");
Object[] params = { solicitacaoDto.getDataHoraCaptura(), solicitacaoDto.getIdSolicitacaoServico() };
try {
this.execUpdate(sql.toString(), params);
} catch (PersistenceException e) {
System.out.println("Problemas com atualiza��o da solicitacaoServico.");
e.printStackTrace();
}
}
public void atualizaIdTarefaEncerramento(SolicitacaoServicoDTO solicitacaoServicoDto) {
StringBuilder sql = new StringBuilder();
Object[] params = null;
if (solicitacaoServicoDto.getIdTarefaEncerramento() != null) {
sql.append("UPDATE " + getTableName() + " SET idTarefaEncerramento = ? WHERE idsolicitacaoservico = ?");
params = new Object[] { solicitacaoServicoDto.getIdTarefaEncerramento(), solicitacaoServicoDto.getIdSolicitacaoServico() };
} else {
sql.append("UPDATE " + getTableName() + " SET idTarefaEncerramento = null WHERE idsolicitacaoservico = ?");
params = new Object[] { solicitacaoServicoDto.getIdSolicitacaoServico() };
}
try {
this.execUpdate(sql.toString(), params);
} catch (PersistenceException e) {
System.out.println("Problemas com atualiza��o da tarefa de encerramento da solicita��o.");
e.printStackTrace();
}
}
public void atualizaIdUltimaAprovacao(SolicitacaoServicoDTO solicitacaoServicoDto) throws Exception {
StringBuilder sql = new StringBuilder();
sql.append("UPDATE " + getTableName() + " SET idultimaaprovacao = ? WHERE idsolicitacaoservico = ?");
Object[] params = { solicitacaoServicoDto.getIdUltimaAprovacao(), solicitacaoServicoDto.getIdSolicitacaoServico() };
try {
this.execUpdate(sql.toString(), params);
} catch (PersistenceException e) {
System.out.println("Problemas na aprova��o da solicitacao de servi�o.");
e.printStackTrace();
}
}
public void atualizaIdUsuarioResponsavel(SolicitacaoServicoDTO solicitacaoServicoDto) throws Exception {
StringBuilder sql = new StringBuilder();
sql.append("UPDATE " + getTableName() + " SET idusuarioresponsavelatual = ? WHERE (idsolicitacaoservico = ?)");
Object[] params = { solicitacaoServicoDto.getIdUsuarioResponsavelAtual(), solicitacaoServicoDto.getIdSolicitacaoServico() };
try {
this.execUpdate(sql.toString(), params);
} catch (PersistenceException e) {
System.out.println("Problemas com atualiza��o da solicitacaoServico.");
e.printStackTrace();
}
}
public void atualizaSituacao(SolicitacaoServicoDTO solicitacaoServicoDto) throws Exception {
StringBuilder sql = new StringBuilder();
sql.append("UPDATE " + getTableName() + " SET situacao = ? WHERE (idsolicitacaoservico = ?)");
Object[] params = { solicitacaoServicoDto.getSituacao(), solicitacaoServicoDto.getIdSolicitacaoServico() };
try {
this.execUpdate(sql.toString(), params);
} catch (PersistenceException e) {
System.out.println("Problemas com atualiza��o da solicitacaoServico.");
e.printStackTrace();
}
}
public void atualizaUrgenciaImpacto(SolicitacaoServicoDTO solicitacaoServicoDto) throws Exception {
StringBuilder sql = new StringBuilder();
sql.append("UPDATE " + getTableName() + " SET urgencia = ?, impacto = ?, idprioridade = ? WHERE (idsolicitacaoservico = ?)");
Object[] params = { solicitacaoServicoDto.getUrgencia(), solicitacaoServicoDto.getImpacto(), solicitacaoServicoDto.getIdPrioridade(), solicitacaoServicoDto.getIdSolicitacaoServico() };
try {
this.execUpdate(sql.toString(), params);
} catch (PersistenceException e) {
System.out.println("Problemas com atualiza��o da solicitacaoServico.");
e.printStackTrace();
}
}
public SolicitacaoServicoDTO buscarNumeroItemTrabalhoPorNumeroSolicitacao(int idSolicitacao) throws Exception {
List parametro = new ArrayList();
List listRetorno = new ArrayList();
List list = new ArrayList();
StringBuilder sql = new StringBuilder();
sql.append("SELECT bpm_itemtrabalhofluxo.iditemtrabalho as idItemFluxoTrabalho FROM ");
sql.append("solicitacaoservico solicitacaoservico ");
sql.append("INNER JOIN execucaosolicitacao ON execucaosolicitacao.idsolicitacaoservico = solicitacaoservico.idsolicitacaoservico ");
sql.append("INNER JOIN bpm_itemtrabalhofluxo ON execucaosolicitacao.idinstanciafluxo = bpm_itemtrabalhofluxo.idinstancia ");
sql.append("INNER JOIN usuario ON bpm_itemtrabalhofluxo.idresponsavelatual = usuario.idusuario WHERE solicitacaoservico.idsolicitacaoservico = ? ");
if (CITCorporeUtil.SGBD_PRINCIPAL.trim().toUpperCase().equalsIgnoreCase(SQLConfig.SQLSERVER)) {
sql.append("ORDER BY bpm_itemtrabalhofluxo.iditemtrabalho desc TOP 1 ");
} else if (CITCorporeUtil.SGBD_PRINCIPAL.trim().toUpperCase().equalsIgnoreCase(SQLConfig.ORACLE)) {
sql.append("ORDER BY bpm_itemtrabalhofluxo.iditemtrabalho desc ROWNUM 1 ");
} else if (((CITCorporeUtil.SGBD_PRINCIPAL.trim().toUpperCase().equalsIgnoreCase(SQLConfig.POSTGRESQL)) || (CITCorporeUtil.SGBD_PRINCIPAL.trim().toUpperCase()
.equalsIgnoreCase(SQLConfig.MYSQL)))) {
sql.append(" ORDER BY bpm_itemtrabalhofluxo.iditemtrabalho desc LIMIT 1 ");
}
parametro.add(idSolicitacao);
list = this.execSQL(sql.toString(), parametro.toArray());
listRetorno.add("idItemFluxoTrabalho");
if (list != null && !list.isEmpty()) {
return (SolicitacaoServicoDTO) this.listConvertion(getBean(), list, listRetorno).get(0);
} else {
return null;
}
}
public boolean confirmaEncerramento(RelatorioQuantitativoRetornoDTO relatorioQuantitativoRetornoDTO, Integer idElemento) throws Exception {
List parametro = new ArrayList();
StringBuilder sb = new StringBuilder();
sb.append("select * ");
sb.append("from bpm_itemtrabalhofluxo ");
sb.append("where idinstancia = ? ");
sb.append("and idelemento = ? ");
parametro.add(relatorioQuantitativoRetornoDTO.getIdInstancia());
parametro.add(idElemento);
List listaDados = this.execSQL(sb.toString(), parametro.toArray());
if (listaDados != null && listaDados.size() == 1) {
return true;
} else {
return false;
}
}
public boolean existeSolicitacaoServico(SolicitacaoServicoDTO solicitacaoservico) throws Exception {
List parametro = new ArrayList();
List list = new ArrayList();
String sql = "select idsolicitacaoservico From " + getTableName() + " where idsolicitacaoservico = ?";
parametro.add(solicitacaoservico.getIdSolicitacaoServico());
list = this.execSQL(sql, parametro.toArray());
if (list != null && !list.isEmpty()) {
return true;
} else {
return false;
}
}
public List<TarefaFluxoDTO> filtrarElementosDaLista(Collection<TarefaFluxoDTO> listTarefa, GerenciamentoServicosDTO dto) throws Exception {
String tipoVisualizacao = dto.getTipoVisualizacao() == null ? "" : dto.getTipoVisualizacao();
String situacaoSla = dto.getSituacaoSla() == null ? "" : dto.getSituacaoSla();
List<TarefaFluxoDTO> listaRetornoTipoVisualizacao = new ArrayList<TarefaFluxoDTO>();
List<TarefaFluxoDTO> listaRetornoSituacaoSla = new ArrayList<TarefaFluxoDTO>();
List<TarefaFluxoDTO> listaRetornoFinal = new ArrayList<TarefaFluxoDTO>();
// tipo de visualiza��o
for (TarefaFluxoDTO tarefaFluxoDTO : listTarefa) {
if (tipoVisualizacao.equals("possoExecutar")) {
if (tarefaFluxoDTO.isSomenteAcompanhamento() == false) {
listaRetornoTipoVisualizacao.add(tarefaFluxoDTO);
}
} else if (tipoVisualizacao.equals("possoVisualizar")) {
if (tarefaFluxoDTO.isSomenteAcompanhamento() == true) {
listaRetornoTipoVisualizacao.add(tarefaFluxoDTO);
}
} else {
listaRetornoTipoVisualizacao.add(tarefaFluxoDTO);
}
}
// tipo de Sla
for (TarefaFluxoDTO tarefaFluxoDTO : listaRetornoTipoVisualizacao) {
SolicitacaoServicoDTO solicitacaoDto = (SolicitacaoServicoDTO) tarefaFluxoDTO.getSolicitacaoDto();
ElementoFluxoDTO eletmentoFluxoDto = tarefaFluxoDTO.getElementoFluxoDto();
boolean aCombinar;
if ((solicitacaoDto.getPrazoHH().equals(0) || solicitacaoDto.getPrazoHH() == null) && (solicitacaoDto.getPrazoMM().equals(0) || solicitacaoDto.getPrazoMM() == null)
&& !solicitacaoDto.getSituacao().equals(SituacaoSolicitacaoServico.Suspensa.name())) {
aCombinar = true;
} else {
aCombinar = false;
}
if (situacaoSla.equals("vencido")) {
if (tarefaFluxoDTO.getDataHoraFinalizacao() != null) {
if (tarefaFluxoDTO.getDataHoraLimite() != null && tarefaFluxoDTO.getDataHoraFinalizacao().after(tarefaFluxoDTO.getDataHoraLimite())
&& !solicitacaoDto.getSituacao().equalsIgnoreCase(SituacaoSolicitacaoServico.Suspensa.name()) && solicitacaoDto.getSituacaoSLA().equals(SituacaoSLA.A.name())
&& aCombinar != true) {
listaRetornoSituacaoSla.add(tarefaFluxoDTO);
}
} else {
if (tarefaFluxoDTO.getDataHoraLimite() != null) {
if (UtilDatas.getDataHoraAtual().compareTo(tarefaFluxoDTO.getDataHoraLimite()) > 0
&& !solicitacaoDto.getSituacao().equalsIgnoreCase(SituacaoSolicitacaoServico.Suspensa.name()) && solicitacaoDto.getSituacaoSLA().equals("A") && aCombinar != true) {
listaRetornoSituacaoSla.add(tarefaFluxoDTO);
}
// foi definido que a regra n�o � pra trazer solicita��es suspensas, mesmo que estejam suspensas e vencidas
// else if (solicitacaoDto.getSituacaoSLA() != null && solicitacaoDto.getSituacaoSLA().equalsIgnoreCase(SituacaoSLA.S.name())
// && solicitacaoDto.getDataHoraSuspensaoSLA().compareTo(solicitacaoDto.getDataHoraLimite()) > 0) {
// listaRetornoSituacaoSla.add(tarefaFluxoDTO);
// }
}
}
} else if (situacaoSla.equals("aguardandoAprovacao")) {
if (eletmentoFluxoDto != null && eletmentoFluxoDto.getDocumentacao() != null && eletmentoFluxoDto.getDocumentacao().equalsIgnoreCase("Aprovar requisi��o")) {// Compara��o feita com o nome da tarefa que est� no Banco
listaRetornoSituacaoSla.add(tarefaFluxoDTO);
}
} else if (situacaoSla.equals("avencer30min")) {
if (tarefaFluxoDTO.getDataHoraLimite() != null) {
if (!UtilDatas.getDataHoraAtual().after(tarefaFluxoDTO.getDataHoraLimite()) && !solicitacaoDto.getSituacao().equalsIgnoreCase(SituacaoSolicitacaoServico.Suspensa.name())
&& solicitacaoDto.getSituacaoSLA().equals("A") && aCombinar != true) {
double minutos = ((UtilDatas.calculaDiferencaTempoEmMilisegundos(tarefaFluxoDTO.getDataHoraLimite(), UtilDatas.getDataHoraAtual()) / 1000) / 60);
if (minutos <= 30) {
listaRetornoSituacaoSla.add(tarefaFluxoDTO);
}
}
}
} else if (situacaoSla.equals("avencer60min")) {
if (tarefaFluxoDTO.getDataHoraLimite() != null) {
if (!UtilDatas.getDataHoraAtual().after(tarefaFluxoDTO.getDataHoraLimite()) && !solicitacaoDto.getSituacao().equalsIgnoreCase(SituacaoSolicitacaoServico.Suspensa.name())
&& solicitacaoDto.getSituacaoSLA().equals("A") && aCombinar != true) {
long minutos = ((UtilDatas.calculaDiferencaTempoEmMilisegundos(tarefaFluxoDTO.getDataHoraLimite(), UtilDatas.getDataHoraAtual()) / 1000) / 60);
if (minutos <= 60) {
listaRetornoSituacaoSla.add(tarefaFluxoDTO);
}
}
}
} else if (situacaoSla.equals("avencer90min")) {
if (tarefaFluxoDTO.getDataHoraLimite() != null) {
if (!UtilDatas.getDataHoraAtual().after(tarefaFluxoDTO.getDataHoraLimite()) && !solicitacaoDto.getSituacao().equalsIgnoreCase(SituacaoSolicitacaoServico.Suspensa.name())
&& solicitacaoDto.getSituacaoSLA().equals("A") && aCombinar != true) {
double minutos = ((UtilDatas.calculaDiferencaTempoEmMilisegundos(tarefaFluxoDTO.getDataHoraLimite(), UtilDatas.getDataHoraAtual()) / 1000) / 60);
if (minutos <= 90) {
listaRetornoSituacaoSla.add(tarefaFluxoDTO);
}
}
}
} else if (situacaoSla.equals("avencer2h")) {
if (tarefaFluxoDTO.getDataHoraLimite() != null) {
if (!UtilDatas.getDataHoraAtual().after(tarefaFluxoDTO.getDataHoraLimite()) && !solicitacaoDto.getSituacao().equalsIgnoreCase(SituacaoSolicitacaoServico.Suspensa.name())
&& solicitacaoDto.getSituacaoSLA().equals("A") && aCombinar != true) {
double minutos = ((UtilDatas.calculaDiferencaTempoEmMilisegundos(tarefaFluxoDTO.getDataHoraLimite(), UtilDatas.getDataHoraAtual()) / 1000) / 60);
if (minutos <= 120) {
listaRetornoSituacaoSla.add(tarefaFluxoDTO);
}
}
}
} else if (situacaoSla.equals("avencer3h")) {
if (tarefaFluxoDTO.getDataHoraLimite() != null) {
if (!UtilDatas.getDataHoraAtual().after(tarefaFluxoDTO.getDataHoraLimite()) && !solicitacaoDto.getSituacao().equalsIgnoreCase(SituacaoSolicitacaoServico.Suspensa.name())
&& solicitacaoDto.getSituacaoSLA().equals("A") && aCombinar != true) {
double minutos = ((UtilDatas.calculaDiferencaTempoEmMilisegundos(tarefaFluxoDTO.getDataHoraLimite(), UtilDatas.getDataHoraAtual()) / 1000) / 60);
if (minutos <= 180) {
listaRetornoSituacaoSla.add(tarefaFluxoDTO);
}
}
}
} else if (situacaoSla.equals("avencerHoje")) {
if (tarefaFluxoDTO.getDataHoraLimite() != null) {
Date DataAtual = UtilDatas.getDataAtual();
Date DataLimit = new Date(tarefaFluxoDTO.getDataHoraLimite().getTime());
if (DataAtual.toString().equals(DataLimit.toString()) && !solicitacaoDto.getSituacao().equalsIgnoreCase(SituacaoSolicitacaoServico.Suspensa.name())
&& solicitacaoDto.getSituacaoSLA().equals("A") && aCombinar != true) {
if (!UtilDatas.getDataHoraAtual().after(tarefaFluxoDTO.getDataHoraLimite())) {
listaRetornoSituacaoSla.add(tarefaFluxoDTO);
}
}
}
} else if (situacaoSla.equals("avencerProxDiaUtil")) {
CalendarioServiceEjb serviceCalendario = new CalendarioServiceEjb();
CalendarioServiceEjb calendarioService = new CalendarioServiceEjb();
CalendarioDTO calendarioDto = calendarioService.recuperaCalendario(solicitacaoDto.getIdCalendario());
JornadaTrabalhoDTO jornadaDtoVerificaSeExiste = null;
Timestamp diaUtilSeguinte = null;
int cont = 0;
do {
if (cont == 0) {
cont = 1;
diaUtilSeguinte = serviceCalendario.incrementaDias(UtilDatas.getDataHoraAtual(), 1);
} else {
diaUtilSeguinte = serviceCalendario.incrementaDias(diaUtilSeguinte, 1);
}
Date dataRef = new Date(diaUtilSeguinte.getTime());
jornadaDtoVerificaSeExiste = calendarioService.recuperaJornada(calendarioDto, dataRef, Util.getHoraDbl(UtilDatas.getHoraHHMM(diaUtilSeguinte)));
} while (jornadaDtoVerificaSeExiste == null);
if (tarefaFluxoDTO.getDataHoraLimite() != null) {
Date DataDiaSeguinte = new Date(diaUtilSeguinte.getTime());
Date DataLimit = new Date(tarefaFluxoDTO.getDataHoraLimite().getTime());
Date DataAtual = UtilDatas.getDataAtual();
if (jornadaDtoVerificaSeExiste != null && (DataDiaSeguinte.toString().equals(DataLimit.toString())) || (DataAtual.toString().equals(DataLimit.toString()))
&& !solicitacaoDto.getSituacao().equalsIgnoreCase(SituacaoSolicitacaoServico.Suspensa.name()) && solicitacaoDto.getSituacaoSLA().equals("A") && aCombinar != true) {
if (!UtilDatas.getDataHoraAtual().after(tarefaFluxoDTO.getDataHoraLimite())) {
listaRetornoSituacaoSla.add(tarefaFluxoDTO);
}
}
}
} else {
listaRetornoSituacaoSla.add(tarefaFluxoDTO);
}
}
listaRetornoFinal = listaRetornoSituacaoSla;
return listaRetornoFinal;
}
/**
* @param lista
* @param dto
* @return
* @throws Exception
* @author bruno.aquino Filtra a lista de Solicita��es de Acordo com os Filtros Selecionados
*/
public void filtroExternoDosElementos(StringBuilder sql, GerenciamentoServicosDTO dto) throws Exception {
String tipoVisualizacao = dto.getTipoVisualizacao() == null ? "" : dto.getTipoVisualizacao();
String situacaoSla = dto.getSituacaoSla() == null ? "" : dto.getSituacaoSla();
/* tipo de visualiza��o */
if (tipoVisualizacao.equals("possoExecutar")) {
sql.append("");
} else if (tipoVisualizacao.equals("possoVisualizar")) {
sql.append("");
}
/* tipo de Sla */
if (situacaoSla.equals("vencido")) {
sql.append(" and sol.datahoralimite<CURRENT_TIMESTAMP ");
} else if (situacaoSla.equals("aguardandoAprovacao")) {
sql.append("");
} else if (situacaoSla.equals("avencer30min")) {
Date dt = new Date(System.currentTimeMillis());
sql.append(" and " + dt.getTime() + " - sol.datahoralimite");
} else if (situacaoSla.equals("avencer60min")) {
sql.append("");
} else if (situacaoSla.equals("avencer90min")) {
sql.append("");
} else if (situacaoSla.equals("avencer2h")) {
sql.append("");
} else if (situacaoSla.equals("avencer3h")) {
sql.append("");
} else if (situacaoSla.equals("avencerHoje")) {
sql.append("");
} else if (situacaoSla.equals("avencerProxDiaUtil")) {
sql.append("");
}
}
@Override
public Collection find(IDto solicitacaoServicoDTO) throws PersistenceException {
List ordenacao = new ArrayList();
ordenacao.add(new Order("idSolicitacaoServico"));
return super.find(solicitacaoServicoDTO, ordenacao);
}
public Collection<SolicitacaoServicoDTO> findByCodigoExterno(String codigoExterno) throws Exception {
List condicao = new ArrayList();
condicao.add(new Condition("codigoExterno", "=", codigoExterno));
return super.findByCondition(condicao, null);
}
/**
* Retorna Solicita��es de Servi�o associadas a Base de Conhecimento.
*
* @param baseConhecimentoDto
* @return List<SolicitacaoServicoDTO>
* @throws Exception
* @author Vadoilo Damasceno
*/
public List<SolicitacaoServicoDTO> findByConhecimento(BaseConhecimentoDTO baseConhecimentoDto) throws Exception {
List parametro = new ArrayList();
List listRetorno = new ArrayList();
List list = new ArrayList();
StringBuilder sql = new StringBuilder();
sql.append("select solicitacaoservico.idsolicitacaoservico, servico.nomeservico ");
sql.append("from solicitacaoservico ");
sql.append("inner join conhecimentosolicitacaoservico on solicitacaoservico.idsolicitacaoservico = conhecimentosolicitacaoservico.idsolicitacaoservico ");
sql.append("inner join servicocontrato on solicitacaoservico.idservicocontrato = servicocontrato.idservicocontrato ");
sql.append("inner join servico on servicocontrato.idservico = servico.idservico ");
sql.append("where conhecimentosolicitacaoservico.idbaseconhecimento = ? ");
parametro.add(baseConhecimentoDto.getIdBaseConhecimento());
list = this.execSQL(sql.toString(), parametro.toArray());
listRetorno.add("idSolicitacaoServico");
listRetorno.add("nomeServico");
if (list != null && !list.isEmpty()) {
return this.listConvertion(getBean(), list, listRetorno);
} else {
return null;
}
}
public Collection<SolicitacaoServicoDTO> findByIdContratoPaginada(PesquisaSolicitacaoServicoDTO pesquisaSolicitacaoServicoDto, String paginacao, Integer pagAtual, Integer pagAtualAux,
Integer totalPag, Integer quantidadePaginator, String campoPesquisa) throws Exception {
if (strSGBDPrincipal == null) {
strSGBDPrincipal = CITCorporeUtil.SGBD_PRINCIPAL;
strSGBDPrincipal = UtilStrings.nullToVazio(strSGBDPrincipal).trim();
}
List listRetorno = new ArrayList();
StringBuilder sql = new StringBuilder();
List listaTotal = new ArrayList();
List parametros = new ArrayList();
List parametros2 = new ArrayList();
List parametros3 = new ArrayList();
/*
* Desenvolvedor: Rodrigo Pecci - Data: 25/10/2013 - Hor�rio: 10h00min - ID Citsmart: 120770 Motivo/Coment�rio: A tabela origematendimento, faseservico e empregados estava utilizando INNER
* JOIN, isso fazia com que as solicita��es que n�o possuem origem contrato, fase ou solicitante n�o fossem retornadas. Alterado para LEFT JOIN
*/
// sql para Postgres e Mysql
sql.append("SELECT tempoAtendimentoHH,tempoAtendimentoMM,datahorainicio, datahorafim, idsolicitacaoservico, nomeservico, unidade.nome, CASE WHEN solicitacaoservico.situacao = 'EmAndamento' THEN 'Em Andamento' ELSE solicitacaoservico.situacao END AS situacao, dataHoraSolicitacao, dataHoraLimite, nomeTipoDemandaServico, prazohh, prazomm, ");
sql.append("solicitacaoservico.descricaoSemFormatacao, resposta, grupo.sigla, seqreabertura, empregado.nome, faseservico.nomefase, origematendimento.descricao,prioridade.nomeprioridade, usuario.nome, contratos.numero, idUsuarioResponsavelAtual ");
sql.append("FROM solicitacaoservico ");
sql.append("INNER JOIN tipodemandaservico ON solicitacaoservico.idtipodemandaservico = tipodemandaservico.idtipodemandaservico ");
sql.append("INNER JOIN servicocontrato ON solicitacaoservico.idservicocontrato = servicocontrato.idservicocontrato ");
if (pesquisaSolicitacaoServicoDto.getIdContrato() != null) {
sql.append("AND (idcontrato = ?) ");
parametros.add(pesquisaSolicitacaoServicoDto.getIdContrato());
}
sql.append("INNER JOIN servico ON servicocontrato.idservico = servico.idservico LEFT OUTER JOIN grupo ON grupo.idgrupo = solicitacaoservico.idgrupoatual ");
sql.append("INNER JOIN contratos ON servicocontrato.idcontrato = contratos.idcontrato ");
sql.append("LEFT JOIN empregados empregado ON empregado.idempregado = solicitacaoservico.idsolicitante ");
sql.append("INNER JOIN usuario usuario on usuario.idusuario = solicitacaoservico.idresponsavel ");
sql.append("LEFT JOIN faseservico faseservico ON faseservico.idfase = solicitacaoservico.idfaseAtual ");
sql.append("LEFT JOIN origematendimento origematendimento ON origematendimento.idorigem = solicitacaoservico.idorigem ");
sql.append("INNER JOIN prioridade prioridade ON prioridade.idprioridade = solicitacaoservico.idprioridade ");
sql.append("LEFT JOIN unidade unidade ON unidade.idunidade = solicitacaoservico.idunidade ");
sql.append("LEFT JOIN contatosolicitacaoservico contatosolicitacaoservico ON contatosolicitacaoservico.idcontatosolicitacaoservico = solicitacaoservico.idcontatosolicitacaoservico ");
sql.append("WHERE (UPPER(tipodemandaservico.classificacao) = UPPER('*') OR '*' = '*') ");
if (pesquisaSolicitacaoServicoDto.getIdSolicitacaoServicoPesquisa() != null) {
sql.append("AND (solicitacaoservico.idSolicitacaoServico = ?) ");
parametros.add(pesquisaSolicitacaoServicoDto.getIdSolicitacaoServicoPesquisa());
}
if (pesquisaSolicitacaoServicoDto.getIdServico() != null) {
sql.append("AND (servicocontrato.idservico = ?) ");
parametros.add(pesquisaSolicitacaoServicoDto.getIdServico());
}
if (pesquisaSolicitacaoServicoDto.getIdPrioridade() != null) {
sql.append("AND (solicitacaoservico.idprioridade = ? ) ");
parametros.add(pesquisaSolicitacaoServicoDto.getIdPrioridade());
}
if (pesquisaSolicitacaoServicoDto.getIdOrigem() != null) {
sql.append("AND (solicitacaoservico.idorigem = ? ) ");
parametros.add(pesquisaSolicitacaoServicoDto.getIdOrigem());
}
if (pesquisaSolicitacaoServicoDto.getIdUnidade() != null) {
sql.append("AND (solicitacaoservico.idunidade = ? ) ");
parametros.add(pesquisaSolicitacaoServicoDto.getIdUnidade());
}
if (pesquisaSolicitacaoServicoDto.getIdLocalidade() != null) {
sql.append("AND (contatosolicitacaoservico.idlocalidade = ? ) ");
parametros.add(pesquisaSolicitacaoServicoDto.getIdLocalidade());
}
if (pesquisaSolicitacaoServicoDto.getIdFaseAtual() != null) {
sql.append("AND (solicitacaoservico.idfaseatual = ? ) ");
parametros.add(pesquisaSolicitacaoServicoDto.getIdFaseAtual());
}
if (pesquisaSolicitacaoServicoDto.getIdGrupoAtual() != null) {
sql.append("AND (solicitacaoservico.idgrupoatual = ? ) ");
parametros.add(pesquisaSolicitacaoServicoDto.getIdGrupoAtual());
}
if (pesquisaSolicitacaoServicoDto.getSituacao() != null && !pesquisaSolicitacaoServicoDto.getSituacao().equalsIgnoreCase("")) {
sql.append("AND (solicitacaoservico.situacao = ? ) ");
parametros.add(pesquisaSolicitacaoServicoDto.getSituacao());
}
if (pesquisaSolicitacaoServicoDto.getIdSolicitante() != null) {
sql.append("AND (solicitacaoservico.idsolicitante = ? ) ");
parametros.add(pesquisaSolicitacaoServicoDto.getIdSolicitante());
}
if (pesquisaSolicitacaoServicoDto.getIdItemConfiguracao() != null) {
sql.append("AND (solicitacaoservico.iditemconfiguracao = ? ) ");
parametros.add(pesquisaSolicitacaoServicoDto.getIdItemConfiguracao());
}
if (pesquisaSolicitacaoServicoDto.getIdTipoDemandaServico() != null) {
sql.append("AND (solicitacaoservico.idTipoDemandaServico = ? ) ");
parametros.add(pesquisaSolicitacaoServicoDto.getIdTipoDemandaServico());
}
if (pesquisaSolicitacaoServicoDto.getIdResponsavel() != null) {
sql.append("AND (solicitacaoservico.idResponsavel = ? ) ");
parametros.add(pesquisaSolicitacaoServicoDto.getIdResponsavel());
}
if (pesquisaSolicitacaoServicoDto.getIdUsuarioResponsavelAtual() != null) {
sql.append("AND (solicitacaoservico.idusuarioresponsavelatual = ? ) ");
parametros.add(pesquisaSolicitacaoServicoDto.getIdUsuarioResponsavelAtual());
}
if (pesquisaSolicitacaoServicoDto.getIdServico() != null) {
sql.append("AND (servico.idservico = ? ) ");
parametros.add(pesquisaSolicitacaoServicoDto.getIdServico());
}
if (pesquisaSolicitacaoServicoDto.getPalavraChave() != null && !pesquisaSolicitacaoServicoDto.getPalavraChave().equalsIgnoreCase("")) {
if (strSGBDPrincipal.equalsIgnoreCase("SQLSERVER")) {
sql.append("AND (solicitacaoservico.descricao like '%" + pesquisaSolicitacaoServicoDto.getPalavraChave() + "%') ");
// parametros.add(pesquisaSolicitacaoServicoDto.getPalavraChave());
} else {
sql.append("AND (UPPER(solicitacaoservico.descricao) like UPPER('%" + pesquisaSolicitacaoServicoDto.getPalavraChave() + "%') ) ");
}
}
if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.ORACLE)) {
sql.append("AND (to_char(solicitacaoservico.datahorasolicitacao, 'YYYY-MM-DD') BETWEEN ? AND ? )");
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
parametros.add(formatter.format(pesquisaSolicitacaoServicoDto.getDataInicio()));
parametros.add(formatter.format(pesquisaSolicitacaoServicoDto.getDataFim()));
} else {
sql.append("AND (solicitacaoservico.datahorasolicitacao BETWEEN ? AND ?) ");
parametros.add(pesquisaSolicitacaoServicoDto.getDataInicio());
parametros.add(transformaHoraFinal(pesquisaSolicitacaoServicoDto.getDataFim()));
}
if (pesquisaSolicitacaoServicoDto.getDataInicioFechamento() != null && !StringUtils.equalsIgnoreCase(pesquisaSolicitacaoServicoDto.getDataInicioFechamento().toString(), "1970-01-01")) {
if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.ORACLE)) {
sql.append("AND (to_char(solicitacaoservico.datahorasolicitacao, 'YYYY-MM-DD') BETWEEN ? AND ? )");
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
parametros.add(formatter.format(pesquisaSolicitacaoServicoDto.getDataInicioFechamento()));
parametros.add(formatter.format(pesquisaSolicitacaoServicoDto.getDataFimFechamento()));
} else {
sql.append("AND (solicitacaoservico.datahorafim BETWEEN ? AND ?) ");
parametros.add(pesquisaSolicitacaoServicoDto.getDataInicioFechamento());
parametros.add(transformaHoraFinal(pesquisaSolicitacaoServicoDto.getDataFimFechamento()));
}
}
if (pesquisaSolicitacaoServicoDto.getOrdenacao() != null) {
sql.append(" ORDER BY " + pesquisaSolicitacaoServicoDto.getOrdenacao() + "");
}
listaTotal = this.execSQL(sql.toString(), parametros.toArray());
if (quantidadePaginator != null) {
if (strSGBDPrincipal.equalsIgnoreCase("POSTGRESQL") || strSGBDPrincipal.equalsIgnoreCase("POSTGRES")) {
sql.append(" LIMIT " + quantidadePaginator + " OFFSET " + pagAtual);
} else if (strSGBDPrincipal.equalsIgnoreCase("MYSQL")) {
sql.append(" LIMIT " + pagAtual + ", " + quantidadePaginator);
}
// para Oracle o sql de pagina��o � diferente
else if (strSGBDPrincipal.equalsIgnoreCase("ORACLE")) {
Integer quantidadePaginator2 = new Integer(0);
sql.setLength(0);
quantidadePaginator2 = quantidadePaginator + pagAtual;
/*
* Desenvolvedor: Rodrigo Pecci - Data: 25/10/2013 - Hor�rio: 10h00min - ID Citsmart: 120770 Motivo/Coment�rio: A tabela origematendimento, faseservico e empregados estava utilizando
* INNER JOIN, isso fazia com que as solicita��es que n�o possuem origem contrato, fase ou solicitante n�o fossem retornadas. Alterado para LEFT JOIN
*/
sql.append("SELECT tempoAtendimentoHH,tempoAtendimentoMM,datahorainicio, datahorafim, idsolicitacaoservico, nomeservico, unidade.nome AS NOMEUNIDADE, CASE WHEN solicitacaoservico.situacao = 'EmAndamento' THEN 'Em Andamento' ELSE solicitacaoservico.situacao END AS situacao, dataHoraSolicitacao, dataHoraLimite, nomeTipoDemandaServico, prazohh, prazomm, ");
sql.append("solicitacaoservico.descricaoSemFormatacao, resposta, grupo.sigla, seqreabertura, empregado.nome AS NOMEEMPREGADO, faseservico.nomefase, origematendimento.descricao,prioridade.nomeprioridade, usuario.nome AS NOMEUSUARIO, contratos.numero, idUsuarioResponsavelAtual ");
sql.append("FROM solicitacaoservico ");
sql.append("INNER JOIN tipodemandaservico ON solicitacaoservico.idtipodemandaservico = tipodemandaservico.idtipodemandaservico ");
sql.append("INNER JOIN servicocontrato ON solicitacaoservico.idservicocontrato = servicocontrato.idservicocontrato ");
if (pesquisaSolicitacaoServicoDto.getIdContrato() != null) {
sql.append("AND (idcontrato = ?) ");
parametros2.add(pesquisaSolicitacaoServicoDto.getIdContrato());
}
sql.append("INNER JOIN servico ON servicocontrato.idservico = servico.idservico LEFT OUTER JOIN grupo ON grupo.idgrupo = solicitacaoservico.idgrupoatual ");
sql.append("INNER JOIN contratos ON servicocontrato.idcontrato = contratos.idcontrato ");
sql.append("LEFT JOIN empregados empregado ON empregado.idempregado = solicitacaoservico.idsolicitante ");
sql.append("inner join usuario usuario on usuario.idusuario = solicitacaoservico.idresponsavel ");
sql.append("LEFT JOIN faseservico faseservico ON faseservico.idfase = solicitacaoservico.idfaseAtual ");
sql.append("LEFT JOIN origematendimento origematendimento ON origematendimento.idorigem = solicitacaoservico.idorigem ");
sql.append("INNER JOIN prioridade prioridade ON prioridade.idprioridade = solicitacaoservico.idprioridade ");
sql.append("LEFT JOIN unidade unidade ON unidade.idunidade = solicitacaoservico.idunidade ");
sql.append("LEFT JOIN contatosolicitacaoservico contatosolicitacaoservico ON contatosolicitacaoservico.idcontatosolicitacaoservico = solicitacaoservico.idcontatosolicitacaoservico ");
sql.append("WHERE (UPPER(tipodemandaservico.classificacao) = UPPER('*') OR '*' = '*') ");
if (pesquisaSolicitacaoServicoDto.getIdSolicitacaoServicoPesquisa() != null) {
sql.append("AND (solicitacaoservico.idSolicitacaoServico = ?) ");
parametros2.add(pesquisaSolicitacaoServicoDto.getIdSolicitacaoServicoPesquisa());
}
if (pesquisaSolicitacaoServicoDto.getIdServico() != null) {
sql.append("AND (servicocontrato.idservico = ?) ");
parametros2.add(pesquisaSolicitacaoServicoDto.getIdServico());
}
if (pesquisaSolicitacaoServicoDto.getIdPrioridade() != null) {
sql.append("AND (solicitacaoservico.idprioridade = ? ) ");
parametros2.add(pesquisaSolicitacaoServicoDto.getIdPrioridade());
}
if (pesquisaSolicitacaoServicoDto.getIdOrigem() != null) {
sql.append("AND (solicitacaoservico.idorigem = ? ) ");
parametros2.add(pesquisaSolicitacaoServicoDto.getIdOrigem());
}
if (pesquisaSolicitacaoServicoDto.getIdUnidade() != null) {
sql.append("AND (solicitacaoservico.idunidade = ? ) ");
parametros2.add(pesquisaSolicitacaoServicoDto.getIdUnidade());
}
if (pesquisaSolicitacaoServicoDto.getIdLocalidade() != null) {
sql.append("AND (contatosolicitacaoservico.idlocalidade = ? ) ");
parametros2.add(pesquisaSolicitacaoServicoDto.getIdLocalidade());
}
if (pesquisaSolicitacaoServicoDto.getIdFaseAtual() != null) {
sql.append("AND (solicitacaoservico.idfaseatual = ? ) ");
parametros2.add(pesquisaSolicitacaoServicoDto.getIdFaseAtual());
}
if (pesquisaSolicitacaoServicoDto.getIdGrupoAtual() != null) {
sql.append("AND (solicitacaoservico.idgrupoatual = ? ) ");
parametros2.add(pesquisaSolicitacaoServicoDto.getIdGrupoAtual());
}
if (pesquisaSolicitacaoServicoDto.getSituacao() != null && !pesquisaSolicitacaoServicoDto.getSituacao().equalsIgnoreCase("")) {
sql.append("AND (solicitacaoservico.situacao = ? ) ");
parametros2.add(pesquisaSolicitacaoServicoDto.getSituacao());
}
if (pesquisaSolicitacaoServicoDto.getIdSolicitante() != null) {
sql.append("AND (solicitacaoservico.idsolicitante = ? ) ");
parametros2.add(pesquisaSolicitacaoServicoDto.getIdSolicitante());
}
if (pesquisaSolicitacaoServicoDto.getIdItemConfiguracao() != null) {
sql.append("AND (solicitacaoservico.iditemconfiguracao = ? ) ");
parametros2.add(pesquisaSolicitacaoServicoDto.getIdItemConfiguracao());
}
if (pesquisaSolicitacaoServicoDto.getIdTipoDemandaServico() != null) {
sql.append("AND (solicitacaoservico.idTipoDemandaServico = ? ) ");
parametros2.add(pesquisaSolicitacaoServicoDto.getIdTipoDemandaServico());
}
if (pesquisaSolicitacaoServicoDto.getIdResponsavel() != null) {
sql.append("AND (solicitacaoservico.idResponsavel = ? ) ");
parametros2.add(pesquisaSolicitacaoServicoDto.getIdResponsavel());
}
if (pesquisaSolicitacaoServicoDto.getIdUsuarioResponsavelAtual() != null) {
sql.append("AND (solicitacaoservico.idusuarioresponsavelatual = ? ) ");
parametros2.add(pesquisaSolicitacaoServicoDto.getIdUsuarioResponsavelAtual());
}
if (pesquisaSolicitacaoServicoDto.getIdServico() != null) {
sql.append("AND (servico.idservico = ? ) ");
parametros2.add(pesquisaSolicitacaoServicoDto.getIdServico());
}
if (pesquisaSolicitacaoServicoDto.getPalavraChave() != null && !pesquisaSolicitacaoServicoDto.getPalavraChave().equalsIgnoreCase("")) {
sql.append("AND (UPPER(solicitacaoservico.descricao) like UPPER('%" + pesquisaSolicitacaoServicoDto.getPalavraChave() + "%') ) ");
// parametros.add(pesquisaSolicitacaoServicoDto.getPalavraChave());
}
if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.ORACLE)) {
sql.append("AND (to_char(solicitacaoservico.datahorasolicitacao, 'YYYY-MM-DD') BETWEEN ? AND ? )");
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
parametros2.add(formatter.format(pesquisaSolicitacaoServicoDto.getDataInicio()));
parametros2.add(formatter.format(pesquisaSolicitacaoServicoDto.getDataFim()));
}
if (pesquisaSolicitacaoServicoDto.getDataInicioFechamento() != null && !StringUtils.equalsIgnoreCase(pesquisaSolicitacaoServicoDto.getDataInicioFechamento().toString(), "1970-01-01")) {
if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.ORACLE)) {
sql.append("AND (to_char(solicitacaoservico.datahorasolicitacao, 'YYYY-MM-DD') BETWEEN ? AND ? )");
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
parametros2.add(formatter.format(pesquisaSolicitacaoServicoDto.getDataInicioFechamento()));
parametros2.add(formatter.format(pesquisaSolicitacaoServicoDto.getDataFimFechamento()));
}
}
/*
* Desenvolvedor: Rodrigo Pecci - Data: 25/10/2013 - Hor�rio: 10h00min - ID Citsmart: 120770 Motivo/Coment�rio: A tabela origematendimento, faseservico e empregados estava utilizando
* INNER JOIN, isso fazia com que as solicita��es que n�o possuem origem contrato, fase ou solicitante n�o fossem retornadas. Alterado para LEFT JOIN
*/
sql.append(" AND IDSOLICITACAOSERVICO IN(SELECT IDSOLICITACAOSERVICO FROM(SELECT row_.*, ROWNUM ROWNUM_ FROM (SELECT COUNT(*) OVER() AS TOTALROWCOUNT, ");
sql.append(" tempoAtendimentoMM,datahorainicio, datahorafim, idsolicitacaoservico, nomeservico, unidade.nome AS NOMEUNIDADE, CASE WHEN solicitacaoservico.situacao = 'EmAndamento' THEN 'Em Andamento' ELSE solicitacaoservico.situacao END AS situacao, dataHoraSolicitacao, dataHoraLimite, nomeTipoDemandaServico, prazohh, prazomm, ");
sql.append("solicitacaoservico.descricaoSemFormatacao, resposta, grupo.sigla, seqreabertura, empregado.nome AS NOMEEMPREGADO, faseservico.nomefase, origematendimento.descricao,prioridade.nomeprioridade, usuario.nome AS NOMEUSUARIO, contratos.numero, idUsuarioResponsavelAtual ");
sql.append("FROM solicitacaoservico ");
sql.append("INNER JOIN tipodemandaservico ON solicitacaoservico.idtipodemandaservico = tipodemandaservico.idtipodemandaservico ");
sql.append("INNER JOIN servicocontrato ON solicitacaoservico.idservicocontrato = servicocontrato.idservicocontrato ");
if (pesquisaSolicitacaoServicoDto.getIdContrato() != null) {
sql.append("AND (idcontrato = ?) ");
parametros2.add(pesquisaSolicitacaoServicoDto.getIdContrato());
}
sql.append("INNER JOIN servico ON servicocontrato.idservico = servico.idservico LEFT OUTER JOIN grupo ON grupo.idgrupo = solicitacaoservico.idgrupoatual ");
sql.append("INNER JOIN contratos ON servicocontrato.idcontrato = contratos.idcontrato ");
sql.append("LEFT JOIN empregados empregado ON empregado.idempregado = solicitacaoservico.idsolicitante ");
sql.append("inner join usuario usuario on usuario.idusuario = solicitacaoservico.idresponsavel ");
sql.append("LEFT JOIN faseservico faseservico ON faseservico.idfase = solicitacaoservico.idfaseAtual ");
sql.append("LEFT JOIN origematendimento origematendimento ON origematendimento.idorigem = solicitacaoservico.idorigem ");
sql.append("INNER JOIN prioridade prioridade ON prioridade.idprioridade = solicitacaoservico.idprioridade ");
sql.append("LEFT JOIN unidade unidade ON unidade.idunidade = solicitacaoservico.idunidade ");
sql.append("LEFT JOIN contatosolicitacaoservico contatosolicitacaoservico ON contatosolicitacaoservico.idcontatosolicitacaoservico = solicitacaoservico.idcontatosolicitacaoservico ");
sql.append("WHERE (UPPER(tipodemandaservico.classificacao) = UPPER('*') OR '*' = '*') ");
if (pesquisaSolicitacaoServicoDto.getIdSolicitacaoServicoPesquisa() != null) {
sql.append("AND (solicitacaoservico.idSolicitacaoServico = ?) ");
parametros2.add(pesquisaSolicitacaoServicoDto.getIdSolicitacaoServicoPesquisa());
}
if (pesquisaSolicitacaoServicoDto.getIdServico() != null) {
sql.append("AND (servicocontrato.idservico = ?) ");
parametros2.add(pesquisaSolicitacaoServicoDto.getIdServico());
}
if (pesquisaSolicitacaoServicoDto.getIdPrioridade() != null) {
sql.append("AND (solicitacaoservico.idprioridade = ? ) ");
parametros2.add(pesquisaSolicitacaoServicoDto.getIdPrioridade());
}
if (pesquisaSolicitacaoServicoDto.getIdOrigem() != null) {
sql.append("AND (solicitacaoservico.idorigem = ? ) ");
parametros2.add(pesquisaSolicitacaoServicoDto.getIdOrigem());
}
if (pesquisaSolicitacaoServicoDto.getIdUnidade() != null) {
sql.append("AND (solicitacaoservico.idunidade = ? ) ");
parametros2.add(pesquisaSolicitacaoServicoDto.getIdUnidade());
}
if (pesquisaSolicitacaoServicoDto.getIdLocalidade() != null) {
sql.append("AND (contatosolicitacaoservico.idlocalidade = ? ) ");
parametros2.add(pesquisaSolicitacaoServicoDto.getIdLocalidade());
}
if (pesquisaSolicitacaoServicoDto.getIdFaseAtual() != null) {
sql.append("AND (solicitacaoservico.idfaseatual = ? ) ");
parametros2.add(pesquisaSolicitacaoServicoDto.getIdFaseAtual());
}
if (pesquisaSolicitacaoServicoDto.getIdGrupoAtual() != null) {
sql.append("AND (solicitacaoservico.idgrupoatual = ? ) ");
parametros2.add(pesquisaSolicitacaoServicoDto.getIdGrupoAtual());
}
if (pesquisaSolicitacaoServicoDto.getSituacao() != null && !pesquisaSolicitacaoServicoDto.getSituacao().equalsIgnoreCase("")) {
sql.append("AND (solicitacaoservico.situacao = ? ) ");
parametros2.add(pesquisaSolicitacaoServicoDto.getSituacao());
}
if (pesquisaSolicitacaoServicoDto.getIdSolicitante() != null) {
sql.append("AND (solicitacaoservico.idsolicitante = ? ) ");
parametros2.add(pesquisaSolicitacaoServicoDto.getIdSolicitante());
}
if (pesquisaSolicitacaoServicoDto.getIdItemConfiguracao() != null) {
sql.append("AND (solicitacaoservico.iditemconfiguracao = ? ) ");
parametros2.add(pesquisaSolicitacaoServicoDto.getIdItemConfiguracao());
}
if (pesquisaSolicitacaoServicoDto.getIdTipoDemandaServico() != null) {
sql.append("AND (solicitacaoservico.idTipoDemandaServico = ? ) ");
parametros2.add(pesquisaSolicitacaoServicoDto.getIdTipoDemandaServico());
}
if (pesquisaSolicitacaoServicoDto.getIdResponsavel() != null) {
sql.append("AND (solicitacaoservico.idResponsavel = ? ) ");
parametros2.add(pesquisaSolicitacaoServicoDto.getIdResponsavel());
}
if (pesquisaSolicitacaoServicoDto.getIdUsuarioResponsavelAtual() != null) {
sql.append("AND (solicitacaoservico.idusuarioresponsavelatual = ? ) ");
parametros2.add(pesquisaSolicitacaoServicoDto.getIdUsuarioResponsavelAtual());
}
if (pesquisaSolicitacaoServicoDto.getIdServico() != null) {
sql.append("AND (servico.idservico = ? ) ");
parametros2.add(pesquisaSolicitacaoServicoDto.getIdServico());
}
if (pesquisaSolicitacaoServicoDto.getPalavraChave() != null && !pesquisaSolicitacaoServicoDto.getPalavraChave().equalsIgnoreCase("")) {
sql.append("AND (UPPER(solicitacaoservico.descricao) like UPPER('%" + pesquisaSolicitacaoServicoDto.getPalavraChave() + "%') ) ");
// parametros.add(pesquisaSolicitacaoServicoDto.getPalavraChave());
}
if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.ORACLE)) {
sql.append("AND (to_char(solicitacaoservico.datahorasolicitacao, 'YYYY-MM-DD') BETWEEN ? AND ? )");
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
parametros2.add(formatter.format(pesquisaSolicitacaoServicoDto.getDataInicio()));
parametros2.add(formatter.format(pesquisaSolicitacaoServicoDto.getDataFim()));
}
if (pesquisaSolicitacaoServicoDto.getDataInicioFechamento() != null && !StringUtils.equalsIgnoreCase(pesquisaSolicitacaoServicoDto.getDataInicioFechamento().toString(), "1970-01-01")) {
if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.ORACLE)) {
sql.append("AND (to_char(solicitacaoservico.datahorasolicitacao, 'YYYY-MM-DD') BETWEEN ? AND ? )");
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
parametros2.add(formatter.format(pesquisaSolicitacaoServicoDto.getDataInicioFechamento()));
parametros2.add(formatter.format(pesquisaSolicitacaoServicoDto.getDataFimFechamento()));
}
}
if (pesquisaSolicitacaoServicoDto.getOrdenacao() != null) {
sql.append(" ORDER BY " + pesquisaSolicitacaoServicoDto.getOrdenacao() + "");
}
sql.append(") row_ WHERE ROWNUM <= " + quantidadePaginator2 + " ) WHERE ROWNUM_ > " + pagAtual + ")");
}
// para sqlserver o sql � diferente
else if (strSGBDPrincipal.equalsIgnoreCase("sqlserver")) {
Integer quantidadePaginator2 = new Integer(0);
sql.setLength(0);
quantidadePaginator2 = quantidadePaginator + pagAtual;
/*
* Desenvolvedor: Rodrigo Pecci - Data: 25/10/2013 - Hor�rio: 10h00min - ID Citsmart: 120770 Motivo/Coment�rio: A tabela origematendimento, faseservico e empregados estava utilizando
* INNER JOIN, isso fazia com que as solicita��es que n�o possuem origem contrato, fase ou solicitante n�o fossem retornadas. Alterado para LEFT JOIN
*/
sql.append(";WITH TabelaTemporaria AS ( ");
sql.append(" SELECT tempoatendimentoHH, tempoAtendimentoMM,datahorainicio, datahorafim, idsolicitacaoservico, nomeservico, unidade.nome as nomeunidade, ");
sql.append(" CASE WHEN solicitacaoservico.situacao = 'EmAndamento' THEN 'Em Andamento' ELSE solicitacaoservico.situacao END AS situacao, dataHoraSolicitacao, dataHoraLimite, ");
sql.append(" nomeTipoDemandaServico, prazohh, prazomm, solicitacaoservico.descricaoSemFormatacao, resposta, grupo.sigla, seqreabertura, empregado.nome as nomeempregado, faseservico.nomefase, ");
sql.append(" origematendimento.descricao,prioridade.nomeprioridade, usuario.nome as nomeusuario, contratos.numero, idUsuarioResponsavelAtual, ROW_NUMBER() OVER (ORDER BY solicitacaoservico.idsolicitacaoservico) AS Row ");
sql.append(" FROM solicitacaoservico ");
sql.append(" INNER JOIN tipodemandaservico ON solicitacaoservico.idtipodemandaservico = tipodemandaservico.idtipodemandaservico ");
sql.append(" INNER JOIN servicocontrato ON solicitacaoservico.idservicocontrato = servicocontrato.idservicocontrato ");
sql.append(" INNER JOIN servico ON servicocontrato.idservico = servico.idservico ");
sql.append(" LEFT OUTER JOIN grupo ON grupo.idgrupo = solicitacaoservico.idgrupoatual ");
sql.append(" INNER JOIN contratos ON servicocontrato.idcontrato = contratos.idcontrato ");
sql.append(" LEFT JOIN empregados empregado ON empregado.idempregado = solicitacaoservico.idsolicitante ");
sql.append(" inner join usuario usuario on usuario.idusuario = solicitacaoservico.idresponsavel ");
sql.append(" LEFT JOIN faseservico faseservico ON faseservico.idfase = solicitacaoservico.idfaseAtual ");
sql.append(" LEFT JOIN origematendimento origematendimento ON origematendimento.idorigem = solicitacaoservico.idorigem ");
sql.append(" INNER JOIN prioridade prioridade ON prioridade.idprioridade = solicitacaoservico.idprioridade ");
sql.append(" LEFT JOIN unidade unidade ON unidade.idunidade = solicitacaoservico.idunidade ");
sql.append(" LEFT JOIN contatosolicitacaoservico contatosolicitacaoservico ON contatosolicitacaoservico.idcontatosolicitacaoservico = solicitacaoservico.idcontatosolicitacaoservico ");
sql.append(" WHERE (UPPER(tipodemandaservico.classificacao) = UPPER('*') OR '*' = '*') ");
if (pesquisaSolicitacaoServicoDto.getIdSolicitacaoServicoPesquisa() != null) {
sql.append("AND (solicitacaoservico.idSolicitacaoServico = ?) ");
parametros3.add(pesquisaSolicitacaoServicoDto.getIdSolicitacaoServicoPesquisa());
}
if (pesquisaSolicitacaoServicoDto.getIdServico() != null) {
sql.append("AND (servicocontrato.idservico = ?) ");
parametros3.add(pesquisaSolicitacaoServicoDto.getIdServico());
}
if (pesquisaSolicitacaoServicoDto.getIdPrioridade() != null) {
sql.append("AND (solicitacaoservico.idprioridade = ? ) ");
parametros3.add(pesquisaSolicitacaoServicoDto.getIdPrioridade());
}
if (pesquisaSolicitacaoServicoDto.getIdOrigem() != null) {
sql.append("AND (solicitacaoservico.idorigem = ? ) ");
parametros3.add(pesquisaSolicitacaoServicoDto.getIdOrigem());
}
if (pesquisaSolicitacaoServicoDto.getIdUnidade() != null) {
sql.append("AND (solicitacaoservico.idunidade = ? ) ");
parametros3.add(pesquisaSolicitacaoServicoDto.getIdUnidade());
}
if (pesquisaSolicitacaoServicoDto.getIdLocalidade() != null) {
sql.append("AND (contatosolicitacaoservico.idlocalidade = ? ) ");
parametros3.add(pesquisaSolicitacaoServicoDto.getIdLocalidade());
}
if (pesquisaSolicitacaoServicoDto.getIdFaseAtual() != null) {
sql.append("AND (solicitacaoservico.idfaseatual = ? ) ");
parametros3.add(pesquisaSolicitacaoServicoDto.getIdFaseAtual());
}
if (pesquisaSolicitacaoServicoDto.getIdGrupoAtual() != null) {
sql.append("AND (solicitacaoservico.idgrupoatual = ? ) ");
parametros3.add(pesquisaSolicitacaoServicoDto.getIdGrupoAtual());
}
if (pesquisaSolicitacaoServicoDto.getSituacao() != null && !pesquisaSolicitacaoServicoDto.getSituacao().equalsIgnoreCase("")) {
sql.append("AND (solicitacaoservico.situacao = ? ) ");
parametros3.add(pesquisaSolicitacaoServicoDto.getSituacao());
}
if (pesquisaSolicitacaoServicoDto.getIdSolicitante() != null) {
sql.append("AND (solicitacaoservico.idsolicitante = ? ) ");
parametros3.add(pesquisaSolicitacaoServicoDto.getIdSolicitante());
}
if (pesquisaSolicitacaoServicoDto.getIdItemConfiguracao() != null) {
sql.append("AND (solicitacaoservico.iditemconfiguracao = ? ) ");
parametros3.add(pesquisaSolicitacaoServicoDto.getIdItemConfiguracao());
}
if (pesquisaSolicitacaoServicoDto.getIdTipoDemandaServico() != null) {
sql.append("AND (solicitacaoservico.idTipoDemandaServico = ? ) ");
parametros3.add(pesquisaSolicitacaoServicoDto.getIdTipoDemandaServico());
}
if (pesquisaSolicitacaoServicoDto.getIdResponsavel() != null) {
sql.append("AND (solicitacaoservico.idResponsavel = ? ) ");
parametros3.add(pesquisaSolicitacaoServicoDto.getIdResponsavel());
}
if (pesquisaSolicitacaoServicoDto.getIdUsuarioResponsavelAtual() != null) {
sql.append("AND (solicitacaoservico.idusuarioresponsavelatual = ? ) ");
parametros3.add(pesquisaSolicitacaoServicoDto.getIdUsuarioResponsavelAtual());
}
if (pesquisaSolicitacaoServicoDto.getIdServico() != null) {
sql.append("AND (servico.idservico = ? ) ");
parametros3.add(pesquisaSolicitacaoServicoDto.getIdServico());
}
if (pesquisaSolicitacaoServicoDto.getPalavraChave() != null && !pesquisaSolicitacaoServicoDto.getPalavraChave().equalsIgnoreCase("")) {
sql.append("AND (solicitacaoservico.descricao like '%" + pesquisaSolicitacaoServicoDto.getPalavraChave() + "%' ) ");
}
if (pesquisaSolicitacaoServicoDto.getDataInicioFechamento() != null && !StringUtils.equalsIgnoreCase(pesquisaSolicitacaoServicoDto.getDataInicioFechamento().toString(), "1970-01-01")) {
sql.append(" AND (solicitacaoservico.datahorafim BETWEEN ? AND ?) ");
parametros3.add(pesquisaSolicitacaoServicoDto.getDataInicioFechamento());
parametros3.add(pesquisaSolicitacaoServicoDto.getDataFimFechamento());
}
sql.append("AND (solicitacaoservico.datahorasolicitacao BETWEEN ? AND ?) ");
parametros3.add(pesquisaSolicitacaoServicoDto.getDataInicio());
parametros3.add(transformaHoraFinal(pesquisaSolicitacaoServicoDto.getDataFim()));
sql.append(" ) SELECT * FROM TabelaTemporaria WHERE Row>" + pagAtual + " and Row<" + (quantidadePaginator2 + 1) + " ");
}
}
if (listaTotal != null) {
pesquisaSolicitacaoServicoDto.setTotalItens(listaTotal.size());
if (listaTotal.size() > quantidadePaginator) {
totalPag = ((listaTotal.size() / quantidadePaginator));
if (listaTotal.size() % quantidadePaginator != 0) {
totalPag = totalPag + 1;
}
} else {
totalPag = 1;
}
}
pesquisaSolicitacaoServicoDto.setTotalPagina(totalPag);
List lista;
if (strSGBDPrincipal.equalsIgnoreCase("ORACLE")) {
lista = execSQL(sql.toString().toUpperCase(), parametros2.toArray());
} else if (strSGBDPrincipal.equalsIgnoreCase("SQLSERVER")) {
lista = execSQL(sql.toString().toUpperCase(), parametros3.toArray());
} else {
lista = execSQL(sql.toString().toUpperCase(), parametros.toArray());
}
if (lista == null || lista.size() == 0) {
TransactionControler tc = this.getTransactionControler();
if (tc != null) {
tc.close();
}
return null;
}
List result = new ArrayList();
if (lista == null || lista.size() == 0) {
TransactionControler tc = this.getTransactionControler();
if (tc != null) {
tc.close();
}
return result;
}
TransactionControler tc = this.getTransactionControler();
if (tc != null) {
tc.close();
}
listRetorno.add("tempoAtendimentoHH");
listRetorno.add("tempoAtendimentoMM");
listRetorno.add("dataHoraInicio");
listRetorno.add("dataHoraFim");
listRetorno.add("idSolicitacaoServico");
listRetorno.add("nomeServico");
listRetorno.add("nomeUnidadeSolicitante");
listRetorno.add("situacao");
listRetorno.add("dataHoraSolicitacao");
listRetorno.add("dataHoraLimite");
listRetorno.add("nomeTipoDemandaServico");
listRetorno.add("prazoHH");
listRetorno.add("prazoMM");
listRetorno.add("descricaoSemFormatacao");
listRetorno.add("resposta");
listRetorno.add("siglaGrupo");
listRetorno.add("seqReabertura");
listRetorno.add("nomeSolicitante");
listRetorno.add("faseAtual");
listRetorno.add("origem");
listRetorno.add("prioridade");
listRetorno.add("responsavel");
listRetorno.add("contrato");
listRetorno.add("idUsuarioResponsavelAtual");
List listaSolicitacoes = engine.listConvertion(getBean(), lista, listRetorno);
return listaSolicitacoes;
}
public Collection<SolicitacaoServicoDTO> findByIdContratoPaginada(PesquisaSolicitacaoServicoDTO pesquisaSolicitacaoServicoDto, String paginacao, Integer pagAtual, Integer pagAtualAux,
Integer totalPag, Integer quantidadePaginator, String campoPesquisa, Collection<UnidadeDTO> unidadesColaborador) throws Exception {
if (strSGBDPrincipal == null) {
strSGBDPrincipal = CITCorporeUtil.SGBD_PRINCIPAL;
strSGBDPrincipal = UtilStrings.nullToVazio(strSGBDPrincipal).trim();
}
List listRetorno = new ArrayList();
StringBuilder sql = new StringBuilder();
List listaTotal = new ArrayList();
List parametros = new ArrayList();
List parametros2 = new ArrayList();
List parametros3 = new ArrayList();
/*
* Desenvolvedor: Rodrigo Pecci - Data: 25/10/2013 - Hor�rio: 10h00min - ID Citsmart: 120770 Motivo/Coment�rio: A tabela origematendimento, faseservico e empregados estava utilizando INNER
* JOIN, isso fazia com que as solicita��es que n�o possuem origem contrato, fase ou solicitante n�o fossem retornadas. Alterado para LEFT JOIN
*/
// sql para Postgres e Mysql
sql.append("SELECT tempoAtendimentoHH,tempoAtendimentoMM,datahorainicio, datahorafim, idsolicitacaoservico, nomeservico, unidade.nome, CASE WHEN solicitacaoservico.situacao = 'EmAndamento' THEN 'Em Andamento' ELSE solicitacaoservico.situacao END AS situacao, dataHoraSolicitacao, dataHoraLimite, nomeTipoDemandaServico, prazohh, prazomm, ");
sql.append("solicitacaoservico.descricaoSemFormatacao, resposta, grupo.sigla, seqreabertura, empregado.nome, faseservico.nomefase, origematendimento.descricao,prioridade.nomeprioridade, usuario.nome, contratos.numero, idUsuarioResponsavelAtual ");
sql.append("FROM solicitacaoservico ");
sql.append("INNER JOIN tipodemandaservico ON solicitacaoservico.idtipodemandaservico = tipodemandaservico.idtipodemandaservico ");
sql.append("INNER JOIN servicocontrato ON solicitacaoservico.idservicocontrato = servicocontrato.idservicocontrato ");
if (pesquisaSolicitacaoServicoDto.getIdContrato() != null) {
sql.append("AND (idcontrato = ?) ");
parametros.add(pesquisaSolicitacaoServicoDto.getIdContrato());
}
sql.append("INNER JOIN servico ON servicocontrato.idservico = servico.idservico LEFT OUTER JOIN grupo ON grupo.idgrupo = solicitacaoservico.idgrupoatual ");
sql.append("INNER JOIN contratos ON servicocontrato.idcontrato = contratos.idcontrato ");
sql.append("LEFT JOIN empregados empregado ON empregado.idempregado = solicitacaoservico.idsolicitante ");
sql.append("INNER JOIN usuario usuario on usuario.idusuario = solicitacaoservico.idresponsavel ");
sql.append("LEFT JOIN faseservico faseservico ON faseservico.idfase = solicitacaoservico.idfaseAtual ");
sql.append("LEFT JOIN origematendimento origematendimento ON origematendimento.idorigem = solicitacaoservico.idorigem ");
sql.append("INNER JOIN prioridade prioridade ON prioridade.idprioridade = solicitacaoservico.idprioridade ");
sql.append("LEFT JOIN unidade unidade ON unidade.idunidade = solicitacaoservico.idunidade ");
sql.append("LEFT JOIN contatosolicitacaoservico contatosolicitacaoservico ON contatosolicitacaoservico.idcontatosolicitacaoservico = solicitacaoservico.idcontatosolicitacaoservico ");
sql.append("WHERE (UPPER(tipodemandaservico.classificacao) = UPPER('*') OR '*' = '*') ");
if (pesquisaSolicitacaoServicoDto.getIdSolicitacaoServicoPesquisa() != null) {
sql.append("AND (solicitacaoservico.idSolicitacaoServico = ?) ");
parametros.add(pesquisaSolicitacaoServicoDto.getIdSolicitacaoServicoPesquisa());
}
if (pesquisaSolicitacaoServicoDto.getIdServico() != null) {
sql.append("AND (servicocontrato.idservico = ?) ");
parametros.add(pesquisaSolicitacaoServicoDto.getIdServico());
}
if (pesquisaSolicitacaoServicoDto.getIdPrioridade() != null) {
sql.append("AND (solicitacaoservico.idprioridade = ? ) ");
parametros.add(pesquisaSolicitacaoServicoDto.getIdPrioridade());
}
if (pesquisaSolicitacaoServicoDto.getIdOrigem() != null) {
sql.append("AND (solicitacaoservico.idorigem = ? ) ");
parametros.add(pesquisaSolicitacaoServicoDto.getIdOrigem());
}
if (pesquisaSolicitacaoServicoDto.getIdUnidade() != null) {
sql.append("AND (solicitacaoservico.idunidade = ? ) ");
parametros.add(pesquisaSolicitacaoServicoDto.getIdUnidade());
}
if (pesquisaSolicitacaoServicoDto.getIdLocalidade() != null) {
sql.append("AND (contatosolicitacaoservico.idlocalidade = ? ) ");
parametros.add(pesquisaSolicitacaoServicoDto.getIdLocalidade());
}
if (pesquisaSolicitacaoServicoDto.getIdFaseAtual() != null) {
sql.append("AND (solicitacaoservico.idfaseatual = ? ) ");
parametros.add(pesquisaSolicitacaoServicoDto.getIdFaseAtual());
}
if (pesquisaSolicitacaoServicoDto.getIdGrupoAtual() != null) {
sql.append("AND (solicitacaoservico.idgrupoatual = ? ) ");
parametros.add(pesquisaSolicitacaoServicoDto.getIdGrupoAtual());
}
if (pesquisaSolicitacaoServicoDto.getSituacao() != null && !pesquisaSolicitacaoServicoDto.getSituacao().equalsIgnoreCase("")) {
sql.append("AND (solicitacaoservico.situacao = ? ) ");
parametros.add(pesquisaSolicitacaoServicoDto.getSituacao());
}
if (pesquisaSolicitacaoServicoDto.getIdSolicitante() != null) {
sql.append("AND (solicitacaoservico.idsolicitante = ? ) ");
parametros.add(pesquisaSolicitacaoServicoDto.getIdSolicitante());
}
if (pesquisaSolicitacaoServicoDto.getIdItemConfiguracao() != null) {
sql.append("AND (solicitacaoservico.iditemconfiguracao = ? ) ");
parametros.add(pesquisaSolicitacaoServicoDto.getIdItemConfiguracao());
}
if (pesquisaSolicitacaoServicoDto.getIdTipoDemandaServico() != null) {
sql.append("AND (solicitacaoservico.idTipoDemandaServico = ? ) ");
parametros.add(pesquisaSolicitacaoServicoDto.getIdTipoDemandaServico());
}
if (pesquisaSolicitacaoServicoDto.getIdResponsavel() != null) {
sql.append("AND (solicitacaoservico.idResponsavel = ? ) ");
parametros.add(pesquisaSolicitacaoServicoDto.getIdResponsavel());
}
if (pesquisaSolicitacaoServicoDto.getIdUsuarioResponsavelAtual() != null) {
sql.append("AND (solicitacaoservico.idusuarioresponsavelatual = ? ) ");
parametros.add(pesquisaSolicitacaoServicoDto.getIdUsuarioResponsavelAtual());
}
if (pesquisaSolicitacaoServicoDto.getIdServico() != null) {
sql.append("AND (servico.idservico = ? ) ");
parametros.add(pesquisaSolicitacaoServicoDto.getIdServico());
}
if (pesquisaSolicitacaoServicoDto.getPalavraChave() != null && !pesquisaSolicitacaoServicoDto.getPalavraChave().equalsIgnoreCase("")) {
if (strSGBDPrincipal.equalsIgnoreCase("SQLSERVER")) {
sql.append("AND (solicitacaoservico.descricao like '%" + pesquisaSolicitacaoServicoDto.getPalavraChave() + "%') ");
// parametros.add(pesquisaSolicitacaoServicoDto.getPalavraChave());
} else {
sql.append("AND (UPPER(solicitacaoservico.descricao) like UPPER('%" + pesquisaSolicitacaoServicoDto.getPalavraChave() + "%') ) ");
}
}
if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.ORACLE)) {
sql.append("AND (to_char(solicitacaoservico.datahorasolicitacao, 'YYYY-MM-DD') BETWEEN ? AND ? )");
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
parametros.add(formatter.format(pesquisaSolicitacaoServicoDto.getDataInicio()));
parametros.add(formatter.format(pesquisaSolicitacaoServicoDto.getDataFim()));
} else {
sql.append("AND (solicitacaoservico.datahorasolicitacao BETWEEN ? AND ?) ");
parametros.add(pesquisaSolicitacaoServicoDto.getDataInicio());
parametros.add(transformaHoraFinal(pesquisaSolicitacaoServicoDto.getDataFim()));
}
if (pesquisaSolicitacaoServicoDto.getDataInicioFechamento() != null && !StringUtils.equalsIgnoreCase(pesquisaSolicitacaoServicoDto.getDataInicioFechamento().toString(), "1970-01-01")) {
if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.ORACLE)) {
sql.append("AND (to_char(solicitacaoservico.datahorasolicitacao, 'YYYY-MM-DD') BETWEEN ? AND ? )");
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
parametros.add(formatter.format(pesquisaSolicitacaoServicoDto.getDataInicioFechamento()));
parametros.add(formatter.format(pesquisaSolicitacaoServicoDto.getDataFimFechamento()));
} else {
sql.append("AND (solicitacaoservico.datahorafim BETWEEN ? AND ?) ");
parametros.add(pesquisaSolicitacaoServicoDto.getDataInicioFechamento());
parametros.add(transformaHoraFinal(pesquisaSolicitacaoServicoDto.getDataFimFechamento()));
}
}
/**
* @author Cristian: obt�m as unidades que o usu�rio logado tem permiss�o para acessar
*/
if ((unidadesColaborador!=null) && (unidadesColaborador.size()>0)) {
sql.append("AND (solicitacaoservico.idunidade in ( ");
StringBuilder sb = new StringBuilder();
for (UnidadeDTO n : unidadesColaborador) {
if (sb.length() > 0) sb.append(',');
sb.append(String.valueOf(n.getIdUnidade()));
}
sql.append(sb.toString()+") ) ");
}
if ((pesquisaSolicitacaoServicoDto.getOrdenacao() != null) && (pesquisaSolicitacaoServicoDto.getOrdenacao().trim().isEmpty()==false)) {
sql.append(" ORDER BY " + pesquisaSolicitacaoServicoDto.getOrdenacao() + "");
}
listaTotal = this.execSQL(sql.toString(), parametros.toArray());
if (quantidadePaginator != null) {
if (strSGBDPrincipal.equalsIgnoreCase("POSTGRESQL") || strSGBDPrincipal.equalsIgnoreCase("POSTGRES")) {
sql.append(" LIMIT " + quantidadePaginator + " OFFSET " + pagAtual);
} else if (strSGBDPrincipal.equalsIgnoreCase("MYSQL")) {
sql.append(" LIMIT " + pagAtual + ", " + quantidadePaginator);
}
// para Oracle o sql de pagina��o � diferente
else if (strSGBDPrincipal.equalsIgnoreCase("ORACLE")) {
Integer quantidadePaginator2 = new Integer(0);
sql.setLength(0);
quantidadePaginator2 = quantidadePaginator + pagAtual;
/*
* Desenvolvedor: Rodrigo Pecci - Data: 25/10/2013 - Hor�rio: 10h00min - ID Citsmart: 120770 Motivo/Coment�rio: A tabela origematendimento, faseservico e empregados estava utilizando
* INNER JOIN, isso fazia com que as solicita��es que n�o possuem origem contrato, fase ou solicitante n�o fossem retornadas. Alterado para LEFT JOIN
*/
sql.append("SELECT tempoAtendimentoHH,tempoAtendimentoMM,datahorainicio, datahorafim, idsolicitacaoservico, nomeservico, unidade.nome AS NOMEUNIDADE, CASE WHEN solicitacaoservico.situacao = 'EmAndamento' THEN 'Em Andamento' ELSE solicitacaoservico.situacao END AS situacao, dataHoraSolicitacao, dataHoraLimite, nomeTipoDemandaServico, prazohh, prazomm, ");
sql.append("solicitacaoservico.descricaoSemFormatacao, resposta, grupo.sigla, seqreabertura, empregado.nome AS NOMEEMPREGADO, faseservico.nomefase, origematendimento.descricao,prioridade.nomeprioridade, usuario.nome AS NOMEUSUARIO, contratos.numero, idUsuarioResponsavelAtual ");
sql.append("FROM solicitacaoservico ");
sql.append("INNER JOIN tipodemandaservico ON solicitacaoservico.idtipodemandaservico = tipodemandaservico.idtipodemandaservico ");
sql.append("INNER JOIN servicocontrato ON solicitacaoservico.idservicocontrato = servicocontrato.idservicocontrato ");
if (pesquisaSolicitacaoServicoDto.getIdContrato() != null) {
sql.append("AND (idcontrato = ?) ");
parametros2.add(pesquisaSolicitacaoServicoDto.getIdContrato());
}
sql.append("INNER JOIN servico ON servicocontrato.idservico = servico.idservico LEFT OUTER JOIN grupo ON grupo.idgrupo = solicitacaoservico.idgrupoatual ");
sql.append("INNER JOIN contratos ON servicocontrato.idcontrato = contratos.idcontrato ");
sql.append("LEFT JOIN empregados empregado ON empregado.idempregado = solicitacaoservico.idsolicitante ");
sql.append("inner join usuario usuario on usuario.idusuario = solicitacaoservico.idresponsavel ");
sql.append("LEFT JOIN faseservico faseservico ON faseservico.idfase = solicitacaoservico.idfaseAtual ");
sql.append("LEFT JOIN origematendimento origematendimento ON origematendimento.idorigem = solicitacaoservico.idorigem ");
sql.append("INNER JOIN prioridade prioridade ON prioridade.idprioridade = solicitacaoservico.idprioridade ");
sql.append("LEFT JOIN unidade unidade ON unidade.idunidade = solicitacaoservico.idunidade ");
sql.append("LEFT JOIN contatosolicitacaoservico contatosolicitacaoservico ON contatosolicitacaoservico.idcontatosolicitacaoservico = solicitacaoservico.idcontatosolicitacaoservico ");
sql.append("WHERE (UPPER(tipodemandaservico.classificacao) = UPPER('*') OR '*' = '*') ");
if (pesquisaSolicitacaoServicoDto.getIdSolicitacaoServicoPesquisa() != null) {
sql.append("AND (solicitacaoservico.idSolicitacaoServico = ?) ");
parametros2.add(pesquisaSolicitacaoServicoDto.getIdSolicitacaoServicoPesquisa());
}
if (pesquisaSolicitacaoServicoDto.getIdServico() != null) {
sql.append("AND (servicocontrato.idservico = ?) ");
parametros2.add(pesquisaSolicitacaoServicoDto.getIdServico());
}
if (pesquisaSolicitacaoServicoDto.getIdPrioridade() != null) {
sql.append("AND (solicitacaoservico.idprioridade = ? ) ");
parametros2.add(pesquisaSolicitacaoServicoDto.getIdPrioridade());
}
if (pesquisaSolicitacaoServicoDto.getIdOrigem() != null) {
sql.append("AND (solicitacaoservico.idorigem = ? ) ");
parametros2.add(pesquisaSolicitacaoServicoDto.getIdOrigem());
}
if (pesquisaSolicitacaoServicoDto.getIdUnidade() != null) {
sql.append("AND (solicitacaoservico.idunidade = ? ) ");
parametros2.add(pesquisaSolicitacaoServicoDto.getIdUnidade());
}
if (pesquisaSolicitacaoServicoDto.getIdLocalidade() != null) {
sql.append("AND (contatosolicitacaoservico.idlocalidade = ? ) ");
parametros2.add(pesquisaSolicitacaoServicoDto.getIdLocalidade());
}
if (pesquisaSolicitacaoServicoDto.getIdFaseAtual() != null) {
sql.append("AND (solicitacaoservico.idfaseatual = ? ) ");
parametros2.add(pesquisaSolicitacaoServicoDto.getIdFaseAtual());
}
if (pesquisaSolicitacaoServicoDto.getIdGrupoAtual() != null) {
sql.append("AND (solicitacaoservico.idgrupoatual = ? ) ");
parametros2.add(pesquisaSolicitacaoServicoDto.getIdGrupoAtual());
}
if (pesquisaSolicitacaoServicoDto.getSituacao() != null && !pesquisaSolicitacaoServicoDto.getSituacao().equalsIgnoreCase("")) {
sql.append("AND (solicitacaoservico.situacao = ? ) ");
parametros2.add(pesquisaSolicitacaoServicoDto.getSituacao());
}
if (pesquisaSolicitacaoServicoDto.getIdSolicitante() != null) {
sql.append("AND (solicitacaoservico.idsolicitante = ? ) ");
parametros2.add(pesquisaSolicitacaoServicoDto.getIdSolicitante());
}
if (pesquisaSolicitacaoServicoDto.getIdItemConfiguracao() != null) {
sql.append("AND (solicitacaoservico.iditemconfiguracao = ? ) ");
parametros2.add(pesquisaSolicitacaoServicoDto.getIdItemConfiguracao());
}
if (pesquisaSolicitacaoServicoDto.getIdTipoDemandaServico() != null) {
sql.append("AND (solicitacaoservico.idTipoDemandaServico = ? ) ");
parametros2.add(pesquisaSolicitacaoServicoDto.getIdTipoDemandaServico());
}
if (pesquisaSolicitacaoServicoDto.getIdResponsavel() != null) {
sql.append("AND (solicitacaoservico.idResponsavel = ? ) ");
parametros2.add(pesquisaSolicitacaoServicoDto.getIdResponsavel());
}
if (pesquisaSolicitacaoServicoDto.getIdUsuarioResponsavelAtual() != null) {
sql.append("AND (solicitacaoservico.idusuarioresponsavelatual = ? ) ");
parametros2.add(pesquisaSolicitacaoServicoDto.getIdUsuarioResponsavelAtual());
}
if (pesquisaSolicitacaoServicoDto.getIdServico() != null) {
sql.append("AND (servico.idservico = ? ) ");
parametros2.add(pesquisaSolicitacaoServicoDto.getIdServico());
}
if (pesquisaSolicitacaoServicoDto.getPalavraChave() != null && !pesquisaSolicitacaoServicoDto.getPalavraChave().equalsIgnoreCase("")) {
sql.append("AND (UPPER(solicitacaoservico.descricao) like UPPER('%" + pesquisaSolicitacaoServicoDto.getPalavraChave() + "%') ) ");
// parametros.add(pesquisaSolicitacaoServicoDto.getPalavraChave());
}
if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.ORACLE)) {
sql.append("AND (to_char(solicitacaoservico.datahorasolicitacao, 'YYYY-MM-DD') BETWEEN ? AND ? )");
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
parametros2.add(formatter.format(pesquisaSolicitacaoServicoDto.getDataInicio()));
parametros2.add(formatter.format(pesquisaSolicitacaoServicoDto.getDataFim()));
}
if (pesquisaSolicitacaoServicoDto.getDataInicioFechamento() != null && !StringUtils.equalsIgnoreCase(pesquisaSolicitacaoServicoDto.getDataInicioFechamento().toString(), "1970-01-01")) {
if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.ORACLE)) {
sql.append("AND (to_char(solicitacaoservico.datahorasolicitacao, 'YYYY-MM-DD') BETWEEN ? AND ? )");
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
parametros2.add(formatter.format(pesquisaSolicitacaoServicoDto.getDataInicioFechamento()));
parametros2.add(formatter.format(pesquisaSolicitacaoServicoDto.getDataFimFechamento()));
}
}
/*
* Desenvolvedor: Rodrigo Pecci - Data: 25/10/2013 - Hor�rio: 10h00min - ID Citsmart: 120770 Motivo/Coment�rio: A tabela origematendimento, faseservico e empregados estava utilizando
* INNER JOIN, isso fazia com que as solicita��es que n�o possuem origem contrato, fase ou solicitante n�o fossem retornadas. Alterado para LEFT JOIN
*/
sql.append(" AND IDSOLICITACAOSERVICO IN(SELECT IDSOLICITACAOSERVICO FROM(SELECT row_.*, ROWNUM ROWNUM_ FROM (SELECT COUNT(*) OVER() AS TOTALROWCOUNT, ");
sql.append(" tempoAtendimentoMM,datahorainicio, datahorafim, idsolicitacaoservico, nomeservico, unidade.nome AS NOMEUNIDADE, CASE WHEN solicitacaoservico.situacao = 'EmAndamento' THEN 'Em Andamento' ELSE solicitacaoservico.situacao END AS situacao, dataHoraSolicitacao, dataHoraLimite, nomeTipoDemandaServico, prazohh, prazomm, ");
sql.append("solicitacaoservico.descricaoSemFormatacao, resposta, grupo.sigla, seqreabertura, empregado.nome AS NOMEEMPREGADO, faseservico.nomefase, origematendimento.descricao,prioridade.nomeprioridade, usuario.nome AS NOMEUSUARIO, contratos.numero, idUsuarioResponsavelAtual ");
sql.append("FROM solicitacaoservico ");
sql.append("INNER JOIN tipodemandaservico ON solicitacaoservico.idtipodemandaservico = tipodemandaservico.idtipodemandaservico ");
sql.append("INNER JOIN servicocontrato ON solicitacaoservico.idservicocontrato = servicocontrato.idservicocontrato ");
if (pesquisaSolicitacaoServicoDto.getIdContrato() != null) {
sql.append("AND (idcontrato = ?) ");
parametros2.add(pesquisaSolicitacaoServicoDto.getIdContrato());
}
sql.append("INNER JOIN servico ON servicocontrato.idservico = servico.idservico LEFT OUTER JOIN grupo ON grupo.idgrupo = solicitacaoservico.idgrupoatual ");
sql.append("INNER JOIN contratos ON servicocontrato.idcontrato = contratos.idcontrato ");
sql.append("LEFT JOIN empregados empregado ON empregado.idempregado = solicitacaoservico.idsolicitante ");
sql.append("inner join usuario usuario on usuario.idusuario = solicitacaoservico.idresponsavel ");
sql.append("LEFT JOIN faseservico faseservico ON faseservico.idfase = solicitacaoservico.idfaseAtual ");
sql.append("LEFT JOIN origematendimento origematendimento ON origematendimento.idorigem = solicitacaoservico.idorigem ");
sql.append("INNER JOIN prioridade prioridade ON prioridade.idprioridade = solicitacaoservico.idprioridade ");
sql.append("LEFT JOIN unidade unidade ON unidade.idunidade = solicitacaoservico.idunidade ");
sql.append("LEFT JOIN contatosolicitacaoservico contatosolicitacaoservico ON contatosolicitacaoservico.idcontatosolicitacaoservico = solicitacaoservico.idcontatosolicitacaoservico ");
sql.append("WHERE (UPPER(tipodemandaservico.classificacao) = UPPER('*') OR '*' = '*') ");
if (pesquisaSolicitacaoServicoDto.getIdSolicitacaoServicoPesquisa() != null) {
sql.append("AND (solicitacaoservico.idSolicitacaoServico = ?) ");
parametros2.add(pesquisaSolicitacaoServicoDto.getIdSolicitacaoServicoPesquisa());
}
if (pesquisaSolicitacaoServicoDto.getIdServico() != null) {
sql.append("AND (servicocontrato.idservico = ?) ");
parametros2.add(pesquisaSolicitacaoServicoDto.getIdServico());
}
if (pesquisaSolicitacaoServicoDto.getIdPrioridade() != null) {
sql.append("AND (solicitacaoservico.idprioridade = ? ) ");
parametros2.add(pesquisaSolicitacaoServicoDto.getIdPrioridade());
}
if (pesquisaSolicitacaoServicoDto.getIdOrigem() != null) {
sql.append("AND (solicitacaoservico.idorigem = ? ) ");
parametros2.add(pesquisaSolicitacaoServicoDto.getIdOrigem());
}
if (pesquisaSolicitacaoServicoDto.getIdUnidade() != null) {
sql.append("AND (solicitacaoservico.idunidade = ? ) ");
parametros2.add(pesquisaSolicitacaoServicoDto.getIdUnidade());
}
if (pesquisaSolicitacaoServicoDto.getIdLocalidade() != null) {
sql.append("AND (contatosolicitacaoservico.idlocalidade = ? ) ");
parametros2.add(pesquisaSolicitacaoServicoDto.getIdLocalidade());
}
if (pesquisaSolicitacaoServicoDto.getIdFaseAtual() != null) {
sql.append("AND (solicitacaoservico.idfaseatual = ? ) ");
parametros2.add(pesquisaSolicitacaoServicoDto.getIdFaseAtual());
}
if (pesquisaSolicitacaoServicoDto.getIdGrupoAtual() != null) {
sql.append("AND (solicitacaoservico.idgrupoatual = ? ) ");
parametros2.add(pesquisaSolicitacaoServicoDto.getIdGrupoAtual());
}
if (pesquisaSolicitacaoServicoDto.getSituacao() != null && !pesquisaSolicitacaoServicoDto.getSituacao().equalsIgnoreCase("")) {
sql.append("AND (solicitacaoservico.situacao = ? ) ");
parametros2.add(pesquisaSolicitacaoServicoDto.getSituacao());
}
if (pesquisaSolicitacaoServicoDto.getIdSolicitante() != null) {
sql.append("AND (solicitacaoservico.idsolicitante = ? ) ");
parametros2.add(pesquisaSolicitacaoServicoDto.getIdSolicitante());
}
if (pesquisaSolicitacaoServicoDto.getIdItemConfiguracao() != null) {
sql.append("AND (solicitacaoservico.iditemconfiguracao = ? ) ");
parametros2.add(pesquisaSolicitacaoServicoDto.getIdItemConfiguracao());
}
if (pesquisaSolicitacaoServicoDto.getIdTipoDemandaServico() != null) {
sql.append("AND (solicitacaoservico.idTipoDemandaServico = ? ) ");
parametros2.add(pesquisaSolicitacaoServicoDto.getIdTipoDemandaServico());
}
if (pesquisaSolicitacaoServicoDto.getIdResponsavel() != null) {
sql.append("AND (solicitacaoservico.idResponsavel = ? ) ");
parametros2.add(pesquisaSolicitacaoServicoDto.getIdResponsavel());
}
if (pesquisaSolicitacaoServicoDto.getIdUsuarioResponsavelAtual() != null) {
sql.append("AND (solicitacaoservico.idusuarioresponsavelatual = ? ) ");
parametros2.add(pesquisaSolicitacaoServicoDto.getIdUsuarioResponsavelAtual());
}
if (pesquisaSolicitacaoServicoDto.getIdServico() != null) {
sql.append("AND (servico.idservico = ? ) ");
parametros2.add(pesquisaSolicitacaoServicoDto.getIdServico());
}
if (pesquisaSolicitacaoServicoDto.getPalavraChave() != null && !pesquisaSolicitacaoServicoDto.getPalavraChave().equalsIgnoreCase("")) {
sql.append("AND (UPPER(solicitacaoservico.descricao) like UPPER('%" + pesquisaSolicitacaoServicoDto.getPalavraChave() + "%') ) ");
// parametros.add(pesquisaSolicitacaoServicoDto.getPalavraChave());
}
if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.ORACLE)) {
sql.append("AND (to_char(solicitacaoservico.datahorasolicitacao, 'YYYY-MM-DD') BETWEEN ? AND ? )");
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
parametros2.add(formatter.format(pesquisaSolicitacaoServicoDto.getDataInicio()));
parametros2.add(formatter.format(pesquisaSolicitacaoServicoDto.getDataFim()));
}
if (pesquisaSolicitacaoServicoDto.getDataInicioFechamento() != null && !StringUtils.equalsIgnoreCase(pesquisaSolicitacaoServicoDto.getDataInicioFechamento().toString(), "1970-01-01")) {
if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.ORACLE)) {
sql.append("AND (to_char(solicitacaoservico.datahorasolicitacao, 'YYYY-MM-DD') BETWEEN ? AND ? )");
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
parametros2.add(formatter.format(pesquisaSolicitacaoServicoDto.getDataInicioFechamento()));
parametros2.add(formatter.format(pesquisaSolicitacaoServicoDto.getDataFimFechamento()));
}
}
if (pesquisaSolicitacaoServicoDto.getOrdenacao() != null) {
sql.append(" ORDER BY " + pesquisaSolicitacaoServicoDto.getOrdenacao() + "");
}
sql.append(") row_ WHERE ROWNUM <= " + quantidadePaginator2 + " ) WHERE ROWNUM_ > " + pagAtual + ")");
}
// para sqlserver o sql � diferente
else if (strSGBDPrincipal.equalsIgnoreCase("sqlserver")) {
Integer quantidadePaginator2 = new Integer(0);
sql.setLength(0);
quantidadePaginator2 = quantidadePaginator + pagAtual;
/*
* Desenvolvedor: Rodrigo Pecci - Data: 25/10/2013 - Hor�rio: 10h00min - ID Citsmart: 120770 Motivo/Coment�rio: A tabela origematendimento, faseservico e empregados estava utilizando
* INNER JOIN, isso fazia com que as solicita��es que n�o possuem origem contrato, fase ou solicitante n�o fossem retornadas. Alterado para LEFT JOIN
*/
sql.append(";WITH TabelaTemporaria AS ( ");
sql.append(" SELECT tempoatendimentoHH, tempoAtendimentoMM,datahorainicio, datahorafim, idsolicitacaoservico, nomeservico, unidade.nome as nomeunidade, ");
sql.append(" CASE WHEN solicitacaoservico.situacao = 'EmAndamento' THEN 'Em Andamento' ELSE solicitacaoservico.situacao END AS situacao, dataHoraSolicitacao, dataHoraLimite, ");
sql.append(" nomeTipoDemandaServico, prazohh, prazomm, solicitacaoservico.descricaoSemFormatacao, resposta, grupo.sigla, seqreabertura, empregado.nome as nomeempregado, faseservico.nomefase, ");
sql.append(" origematendimento.descricao,prioridade.nomeprioridade, usuario.nome as nomeusuario, contratos.numero, idUsuarioResponsavelAtual, ROW_NUMBER() OVER (ORDER BY solicitacaoservico.idsolicitacaoservico) AS Row ");
sql.append(" FROM solicitacaoservico ");
sql.append(" INNER JOIN tipodemandaservico ON solicitacaoservico.idtipodemandaservico = tipodemandaservico.idtipodemandaservico ");
sql.append(" INNER JOIN servicocontrato ON solicitacaoservico.idservicocontrato = servicocontrato.idservicocontrato ");
sql.append(" INNER JOIN servico ON servicocontrato.idservico = servico.idservico ");
sql.append(" LEFT OUTER JOIN grupo ON grupo.idgrupo = solicitacaoservico.idgrupoatual ");
sql.append(" INNER JOIN contratos ON servicocontrato.idcontrato = contratos.idcontrato ");
sql.append(" LEFT JOIN empregados empregado ON empregado.idempregado = solicitacaoservico.idsolicitante ");
sql.append(" inner join usuario usuario on usuario.idusuario = solicitacaoservico.idresponsavel ");
sql.append(" LEFT JOIN faseservico faseservico ON faseservico.idfase = solicitacaoservico.idfaseAtual ");
sql.append(" LEFT JOIN origematendimento origematendimento ON origematendimento.idorigem = solicitacaoservico.idorigem ");
sql.append(" INNER JOIN prioridade prioridade ON prioridade.idprioridade = solicitacaoservico.idprioridade ");
sql.append(" LEFT JOIN unidade unidade ON unidade.idunidade = solicitacaoservico.idunidade ");
sql.append(" LEFT JOIN contatosolicitacaoservico contatosolicitacaoservico ON contatosolicitacaoservico.idcontatosolicitacaoservico = solicitacaoservico.idcontatosolicitacaoservico ");
sql.append(" WHERE (UPPER(tipodemandaservico.classificacao) = UPPER('*') OR '*' = '*') ");
if (pesquisaSolicitacaoServicoDto.getIdSolicitacaoServicoPesquisa() != null) {
sql.append("AND (solicitacaoservico.idSolicitacaoServico = ?) ");
parametros3.add(pesquisaSolicitacaoServicoDto.getIdSolicitacaoServicoPesquisa());
}
if (pesquisaSolicitacaoServicoDto.getIdServico() != null) {
sql.append("AND (servicocontrato.idservico = ?) ");
parametros3.add(pesquisaSolicitacaoServicoDto.getIdServico());
}
if (pesquisaSolicitacaoServicoDto.getIdPrioridade() != null) {
sql.append("AND (solicitacaoservico.idprioridade = ? ) ");
parametros3.add(pesquisaSolicitacaoServicoDto.getIdPrioridade());
}
if (pesquisaSolicitacaoServicoDto.getIdOrigem() != null) {
sql.append("AND (solicitacaoservico.idorigem = ? ) ");
parametros3.add(pesquisaSolicitacaoServicoDto.getIdOrigem());
}
if (pesquisaSolicitacaoServicoDto.getIdUnidade() != null) {
sql.append("AND (solicitacaoservico.idunidade = ? ) ");
parametros3.add(pesquisaSolicitacaoServicoDto.getIdUnidade());
}
if (pesquisaSolicitacaoServicoDto.getIdLocalidade() != null) {
sql.append("AND (contatosolicitacaoservico.idlocalidade = ? ) ");
parametros3.add(pesquisaSolicitacaoServicoDto.getIdLocalidade());
}
if (pesquisaSolicitacaoServicoDto.getIdFaseAtual() != null) {
sql.append("AND (solicitacaoservico.idfaseatual = ? ) ");
parametros3.add(pesquisaSolicitacaoServicoDto.getIdFaseAtual());
}
if (pesquisaSolicitacaoServicoDto.getIdGrupoAtual() != null) {
sql.append("AND (solicitacaoservico.idgrupoatual = ? ) ");
parametros3.add(pesquisaSolicitacaoServicoDto.getIdGrupoAtual());
}
if (pesquisaSolicitacaoServicoDto.getSituacao() != null && !pesquisaSolicitacaoServicoDto.getSituacao().equalsIgnoreCase("")) {
sql.append("AND (solicitacaoservico.situacao = ? ) ");
parametros3.add(pesquisaSolicitacaoServicoDto.getSituacao());
}
if (pesquisaSolicitacaoServicoDto.getIdSolicitante() != null) {
sql.append("AND (solicitacaoservico.idsolicitante = ? ) ");
parametros3.add(pesquisaSolicitacaoServicoDto.getIdSolicitante());
}
if (pesquisaSolicitacaoServicoDto.getIdItemConfiguracao() != null) {
sql.append("AND (solicitacaoservico.iditemconfiguracao = ? ) ");
parametros3.add(pesquisaSolicitacaoServicoDto.getIdItemConfiguracao());
}
if (pesquisaSolicitacaoServicoDto.getIdTipoDemandaServico() != null) {
sql.append("AND (solicitacaoservico.idTipoDemandaServico = ? ) ");
parametros3.add(pesquisaSolicitacaoServicoDto.getIdTipoDemandaServico());
}
if (pesquisaSolicitacaoServicoDto.getIdResponsavel() != null) {
sql.append("AND (solicitacaoservico.idResponsavel = ? ) ");
parametros3.add(pesquisaSolicitacaoServicoDto.getIdResponsavel());
}
if (pesquisaSolicitacaoServicoDto.getIdUsuarioResponsavelAtual() != null) {
sql.append("AND (solicitacaoservico.idusuarioresponsavelatual = ? ) ");
parametros3.add(pesquisaSolicitacaoServicoDto.getIdUsuarioResponsavelAtual());
}
if (pesquisaSolicitacaoServicoDto.getIdServico() != null) {
sql.append("AND (servico.idservico = ? ) ");
parametros3.add(pesquisaSolicitacaoServicoDto.getIdServico());
}
if (pesquisaSolicitacaoServicoDto.getPalavraChave() != null && !pesquisaSolicitacaoServicoDto.getPalavraChave().equalsIgnoreCase("")) {
sql.append("AND (solicitacaoservico.descricao like '%" + pesquisaSolicitacaoServicoDto.getPalavraChave() + "%' ) ");
}
if (pesquisaSolicitacaoServicoDto.getDataInicioFechamento() != null && !StringUtils.equalsIgnoreCase(pesquisaSolicitacaoServicoDto.getDataInicioFechamento().toString(), "1970-01-01")) {
sql.append(" AND (solicitacaoservico.datahorafim BETWEEN ? AND ?) ");
parametros3.add(pesquisaSolicitacaoServicoDto.getDataInicioFechamento());
parametros3.add(pesquisaSolicitacaoServicoDto.getDataFimFechamento());
}
sql.append("AND (solicitacaoservico.datahorasolicitacao BETWEEN ? AND ?) ");
parametros3.add(pesquisaSolicitacaoServicoDto.getDataInicio());
parametros3.add(transformaHoraFinal(pesquisaSolicitacaoServicoDto.getDataFim()));
sql.append(" ) SELECT * FROM TabelaTemporaria WHERE Row>" + pagAtual + " and Row<" + (quantidadePaginator2 + 1) + " ");
}
}
if (listaTotal != null) {
pesquisaSolicitacaoServicoDto.setTotalItens(listaTotal.size());
if (listaTotal.size() > quantidadePaginator) {
totalPag = ((listaTotal.size() / quantidadePaginator));
if (listaTotal.size() % quantidadePaginator != 0) {
totalPag = totalPag + 1;
}
} else {
totalPag = 1;
}
}
pesquisaSolicitacaoServicoDto.setTotalPagina(totalPag);
List lista;
if (strSGBDPrincipal.equalsIgnoreCase("ORACLE")) {
lista = execSQL(sql.toString().toUpperCase(), parametros2.toArray());
} else if (strSGBDPrincipal.equalsIgnoreCase("SQLSERVER")) {
lista = execSQL(sql.toString().toUpperCase(), parametros3.toArray());
} else {
lista = execSQL(sql.toString().toUpperCase(), parametros.toArray());
}
if (lista == null || lista.size() == 0) {
TransactionControler tc = this.getTransactionControler();
if (tc != null) {
tc.close();
}
return null;
}
List result = new ArrayList();
if (lista == null || lista.size() == 0) {
TransactionControler tc = this.getTransactionControler();
if (tc != null) {
tc.close();
}
return result;
}
TransactionControler tc = this.getTransactionControler();
if (tc != null) {
tc.close();
}
listRetorno.add("tempoAtendimentoHH");
listRetorno.add("tempoAtendimentoMM");
listRetorno.add("dataHoraInicio");
listRetorno.add("dataHoraFim");
listRetorno.add("idSolicitacaoServico");
listRetorno.add("nomeServico");
listRetorno.add("nomeUnidadeSolicitante");
listRetorno.add("situacao");
listRetorno.add("dataHoraSolicitacao");
listRetorno.add("dataHoraLimite");
listRetorno.add("nomeTipoDemandaServico");
listRetorno.add("prazoHH");
listRetorno.add("prazoMM");
listRetorno.add("descricaoSemFormatacao");
listRetorno.add("resposta");
listRetorno.add("siglaGrupo");
listRetorno.add("seqReabertura");
listRetorno.add("nomeSolicitante");
listRetorno.add("faseAtual");
listRetorno.add("origem");
listRetorno.add("prioridade");
listRetorno.add("responsavel");
listRetorno.add("contrato");
listRetorno.add("idUsuarioResponsavelAtual");
List listaSolicitacoes = engine.listConvertion(getBean(), lista, listRetorno);
return listaSolicitacoes;
}
public Collection<SolicitacaoServicoDTO> findByIdGrupo(Integer idGrupo) throws Exception {
List parametro = new ArrayList();
List listRetorno = new ArrayList();
List list = new ArrayList();
StringBuilder sql = new StringBuilder();
sql.append("select sol.idsolicitacaoservico, sol.situacao from solicitacaoservico sol where sol.idgrupoatual = ? and (sol.prazohh <> 0 or sol.prazomm <> 0) and situacao <> 'Cancelada'");
parametro.add(idGrupo);
list = this.execSQL(sql.toString(), parametro.toArray());
listRetorno.add("idSolicitacaoServico");
listRetorno.add("situacao");
if (list != null && !list.isEmpty()) {
return this.listConvertion(getBean(), list, listRetorno);
} else {
return null;
}
}
public Collection<SolicitacaoServicoDTO> findByIdGrupoEDataAlta(Integer idGrupo, Date dataInicio, Date dataFim) throws Exception {
List parametro = new ArrayList();
List listRetorno = new ArrayList();
List list = new ArrayList();
StringBuilder sql = new StringBuilder();
sql.append("select sol.idsolicitacaoservico, sol.situacao, sol.idprioridade, sol.urgencia from solicitacaoservico sol "
+ "inner join servicocontrato sc on sc.idservicocontrato = sol.idservicocontrato " + "inner join grupo g on sc.idgrupoexecutor = g.idgrupo "
+ "where g.idgrupo = ? and datahorainiciosla between ? and ? and urgencia like ? and (sol.prazohh <> 0 or sol.prazomm <> 0) and situacao <> 'Cancelada'");
parametro.add(idGrupo);
parametro.add(dataInicio);
parametro.add(dataFim);
parametro.add("A");
list = this.execSQL(sql.toString(), parametro.toArray());
listRetorno.add("idSolicitacaoServico");
listRetorno.add("situacao");
listRetorno.add("idPrioridade");
listRetorno.add("urgencia");
if (list != null && !list.isEmpty()) {
return this.listConvertion(getBean(), list, listRetorno);
} else {
return null;
}
}
public Collection<SolicitacaoServicoDTO> findByIdGrupoEDataAtendidasAlta(Integer idGrupo, Date dataInicio, Date dataFim) throws Exception {
List parametro = new ArrayList();
List listRetorno = new ArrayList();
List list = new ArrayList();
Date dataAtual = UtilDatas.getDataAtual();
StringBuilder sql = new StringBuilder();
sql.append("select sol.idsolicitacaoservico, sol.situacao, sol.idprioridade, sol.urgencia from solicitacaoservico sol "
+ "inner join servicocontrato sc on sc.idservicocontrato = sol.idservicocontrato "
+ "inner join grupo g on sc.idgrupoexecutor = g.idgrupo "
+ "where g.idgrupo = ? and datahorainiciosla between ? and ? and urgencia like ? and datahorafim < datahoralimite and (sol.prazohh <> 0 or sol.prazomm <> 0) and situacao <> 'Cancelada' "
+ "and situacao <> 'Suspensa' and (datahoralimite < ?)");
parametro.add(idGrupo);
parametro.add(dataInicio);
parametro.add(dataFim);
parametro.add("A");
parametro.add(dataAtual);
list = this.execSQL(sql.toString(), parametro.toArray());
listRetorno.add("idSolicitacaoServico");
listRetorno.add("situacao");
listRetorno.add("idPrioridade");
listRetorno.add("urgencia");
if (list != null && !list.isEmpty()) {
return this.listConvertion(getBean(), list, listRetorno);
} else {
return null;
}
}
public Collection<SolicitacaoServicoDTO> findByIdGrupoEDataAtendidasBaixa(Integer idGrupo, Date dataInicio, Date dataFim) throws Exception {
List parametro = new ArrayList();
List listRetorno = new ArrayList();
List list = new ArrayList();
Date dataAtual = UtilDatas.getDataAtual();
StringBuilder sql = new StringBuilder();
sql.append("select sol.idsolicitacaoservico, sol.situacao, sol.idprioridade, sol.urgencia from solicitacaoservico sol "
+ "inner join servicocontrato sc on sc.idservicocontrato = sol.idservicocontrato "
+ "inner join grupo g on sc.idgrupoexecutor = g.idgrupo "
+ "where g.idgrupo = ? and datahorainiciosla between ? and ? and urgencia like ? and datahorafim < datahoralimite and (sol.prazohh <> 0 or sol.prazomm <> 0) and situacao <> 'Cancelada' "
+ "and situacao <> 'Suspensa' and (datahoralimite < ?)");
parametro.add(idGrupo);
parametro.add(dataInicio);
parametro.add(dataFim);
parametro.add("B");
parametro.add(dataAtual);
list = this.execSQL(sql.toString(), parametro.toArray());
listRetorno.add("idSolicitacaoServico");
listRetorno.add("situacao");
listRetorno.add("idPrioridade");
listRetorno.add("urgencia");
if (list != null && !list.isEmpty()) {
return this.listConvertion(getBean(), list, listRetorno);
} else {
return null;
}
}
public Collection<SolicitacaoServicoDTO> findByIdGrupoEDataAtendidasMedia(Integer idGrupo, Date dataInicio, Date dataFim) throws Exception {
List parametro = new ArrayList();
List listRetorno = new ArrayList();
List list = new ArrayList();
Date dataAtual = UtilDatas.getDataAtual();
StringBuilder sql = new StringBuilder();
sql.append("select sol.idsolicitacaoservico, sol.situacao, sol.idprioridade, sol.urgencia from solicitacaoservico sol "
+ "inner join servicocontrato sc on sc.idservicocontrato = sol.idservicocontrato "
+ "inner join grupo g on sc.idgrupoexecutor = g.idgrupo "
+ "where g.idgrupo = ? and datahorainiciosla between ? and ? and urgencia like ? and datahorafim < datahoralimite and (sol.prazohh <> 0 or sol.prazomm <> 0) and situacao <> 'Cancelada' "
+ "and situacao <> 'Suspensa' and (datahoralimite < ?)");
parametro.add(idGrupo);
parametro.add(dataInicio);
parametro.add(dataFim);
parametro.add("M");
parametro.add(dataAtual);
list = this.execSQL(sql.toString(), parametro.toArray());
listRetorno.add("idSolicitacaoServico");
listRetorno.add("situacao");
listRetorno.add("idPrioridade");
listRetorno.add("urgencia");
if (list != null && !list.isEmpty()) {
return this.listConvertion(getBean(), list, listRetorno);
} else {
return null;
}
}
public Collection<SolicitacaoServicoDTO> findByIdGrupoEDataAtendidasTotal(Integer idGrupo, Date dataInicio, Date dataFim) throws Exception {
List parametro = new ArrayList();
List listRetorno = new ArrayList();
List list = new ArrayList();
Date dataAtual = UtilDatas.getDataAtual();
StringBuilder sql = new StringBuilder();
sql.append("select sol.idsolicitacaoservico, sol.situacao, sol.idprioridade from solicitacaoservico sol " + "inner join servicocontrato sc on sc.idservicocontrato = sol.idservicocontrato "
+ "inner join grupo g on sc.idgrupoexecutor = g.idgrupo "
+ "where g.idgrupo = ? and datahorainiciosla between ? and ? and datahorafim < datahoralimite and (sol.prazohh <> 0 or sol.prazomm <> 0) and situacao <> 'Cancelada' "
+ "and situacao <> 'Suspensa' and (datahoralimite < ?)");
parametro.add(idGrupo);
parametro.add(dataInicio);
parametro.add(dataFim);
parametro.add(dataAtual);
list = this.execSQL(sql.toString(), parametro.toArray());
listRetorno.add("idSolicitacaoServico");
listRetorno.add("situacao");
listRetorno.add("idPrioridade");
if (list != null && !list.isEmpty()) {
return this.listConvertion(getBean(), list, listRetorno);
} else {
return null;
}
}
public Collection<SolicitacaoServicoDTO> findByIdGrupoEDataAtrasadasTotal(Integer idGrupo, Date dataInicio, Date dataFim) throws Exception {
List parametro = new ArrayList();
List listRetorno = new ArrayList();
List list = new ArrayList();
Date dataAtual = UtilDatas.getDataAtual();
StringBuilder sql = new StringBuilder();
sql.append("select sol.idsolicitacaoservico from solicitacaoservico sol " + "inner join servicocontrato sc on sc.idservicocontrato = sol.idservicocontrato "
+ "inner join grupo g on sc.idgrupoexecutor = g.idgrupo " + "where g.idgrupo = ? and datahorainiciosla between ? and ? "
+ "and (datahorafim > datahoralimite or (datahorafim is null and datahoralimite > ?)) "
+ "and (sol.prazohh <> 0 or sol.prazomm <> 0) and situacao <> 'Cancelada' and situacao <> 'Suspensa' " + "and (datahoralimite < ?)");
parametro.add(idGrupo);
parametro.add(dataInicio);
parametro.add(dataFim);
parametro.add(dataAtual);
parametro.add(dataAtual);
list = this.execSQL(sql.toString(), parametro.toArray());
listRetorno.add("idSolicitacaoServico");
if (list != null && !list.isEmpty()) {
return this.listConvertion(getBean(), list, listRetorno);
} else {
return null;
}
}
public Collection<SolicitacaoServicoDTO> findByIdGrupoEDataBaixa(Integer idGrupo, Date dataInicio, Date dataFim) throws Exception {
List parametro = new ArrayList();
List listRetorno = new ArrayList();
List list = new ArrayList();
StringBuilder sql = new StringBuilder();
sql.append("select sol.idsolicitacaoservico, sol.situacao, sol.idprioridade, sol.urgencia from solicitacaoservico sol "
+ "inner join servicocontrato sc on sc.idservicocontrato = sol.idservicocontrato " + "inner join grupo g on sc.idgrupoexecutor = g.idgrupo "
+ "where g.idgrupo = ? and datahorainiciosla between ? and ? and urgencia like ? and (sol.prazohh <> 0 or sol.prazomm <> 0) and situacao <> 'Cancelada'");
parametro.add(idGrupo);
parametro.add(dataInicio);
parametro.add(dataFim);
parametro.add("B");
list = this.execSQL(sql.toString(), parametro.toArray());
listRetorno.add("idSolicitacaoServico");
listRetorno.add("situacao");
listRetorno.add("idPrioridade");
listRetorno.add("urgencia");
if (list != null && !list.isEmpty()) {
return this.listConvertion(getBean(), list, listRetorno);
} else {
return null;
}
}
public Collection<SolicitacaoServicoDTO> findByIdGrupoEDataMedia(Integer idGrupo, Date dataInicio, Date dataFim) throws Exception {
List parametro = new ArrayList();
List listRetorno = new ArrayList();
List list = new ArrayList();
StringBuilder sql = new StringBuilder();
sql.append("select sol.idsolicitacaoservico, sol.situacao, sol.idprioridade, sol.urgencia from solicitacaoservico sol "
+ "inner join servicocontrato sc on sc.idservicocontrato = sol.idservicocontrato " + "inner join grupo g on sc.idgrupoexecutor = g.idgrupo "
+ "where g.idgrupo = ? and datahorainiciosla between ? and ? and urgencia like ? and (sol.prazohh <> 0 or sol.prazomm <> 0) and situacao <> 'Cancelada' order by idsolicitacaoservico ");
parametro.add(idGrupo);
parametro.add(dataInicio);
parametro.add(dataFim);
parametro.add("M");
list = this.execSQL(sql.toString(), parametro.toArray());
listRetorno.add("idSolicitacaoServico");
listRetorno.add("situacao");
listRetorno.add("idPrioridade");
listRetorno.add("urgencia");
if (list != null && !list.isEmpty()) {
return this.listConvertion(getBean(), list, listRetorno);
} else {
return null;
}
}
public Collection<SolicitacaoServicoDTO> findByIdGrupoEDataSuspensasTotal(Integer idGrupo, Date dataInicio, Date dataFim) throws Exception {
List parametro = new ArrayList();
List listRetorno = new ArrayList();
List list = new ArrayList();
StringBuilder sql = new StringBuilder();
sql.append("select sol.idsolicitacaoservico, sol.situacao, sol.idprioridade, sol.urgencia, sol.datahorafim, sol.datahoralimite from solicitacaoservico sol "
+ "inner join servicocontrato sc on sc.idservicocontrato = sol.idservicocontrato " + "inner join grupo g on sc.idgrupoexecutor = g.idgrupo "
+ "where g.idgrupo = ? and datahorainiciosla between ? and ? and situacao = 'Suspensa'");
parametro.add(idGrupo);
parametro.add(dataInicio);
parametro.add(dataFim);
list = this.execSQL(sql.toString(), parametro.toArray());
listRetorno.add("idSolicitacaoServico");
listRetorno.add("situacao");
listRetorno.add("idPrioridade");
listRetorno.add("urgencia");
listRetorno.add("dataHoraFim");
listRetorno.add("dataHoraLimite");
if (list != null && !list.isEmpty()) {
return this.listConvertion(getBean(), list, listRetorno);
} else {
return null;
}
}
public Collection<SolicitacaoServicoDTO> findByIdGrupoEDataTotal(Integer idGrupo, Date dataInicio, Date dataFim) throws Exception {
List parametro = new ArrayList();
List listRetorno = new ArrayList();
List list = new ArrayList();
StringBuilder sql = new StringBuilder();
sql.append("select sol.idsolicitacaoservico, sol.situacao, sol.idprioridade, sol.urgencia, sol.datahorafim, sol.datahoralimite from solicitacaoservico sol "
+ "inner join servicocontrato sc on sc.idservicocontrato = sol.idservicocontrato " + "inner join grupo g on sc.idgrupoexecutor = g.idgrupo "
+ "where g.idgrupo = ? and datahorainiciosla between ? and ? and datahoralimite < ? and (sol.prazohh <> 0 or sol.prazomm <> 0) and situacao <> 'Cancelada'");
parametro.add(idGrupo);
parametro.add(dataInicio);
parametro.add(dataFim);
parametro.add(UtilDatas.getDataHoraAtual());
list = this.execSQL(sql.toString(), parametro.toArray());
listRetorno.add("idSolicitacaoServico");
listRetorno.add("situacao");
listRetorno.add("idPrioridade");
listRetorno.add("urgencia");
listRetorno.add("dataHoraFim");
listRetorno.add("dataHoraLimite");
if (list != null && !list.isEmpty()) {
return this.listConvertion(getBean(), list, listRetorno);
} else {
return null;
}
}
public Collection<SolicitacaoServicoDTO> findByIdPessoaEData(Integer idGrupo, Integer idPessoa, Date dataInicio, Date dataFim) throws Exception {
List parametro = new ArrayList();
List listRetorno = new ArrayList();
List list = new ArrayList();
StringBuilder sql = new StringBuilder();
sql.append("select sol.idsolicitacaoservico, sol.situacao, sol.idprioridade, sol.urgencia, sol.datahorafim, sol.datahoralimite from solicitacaoservico sol "
+ "inner join servicocontrato sc on sc.idservicocontrato = sol.idservicocontrato " + "inner join grupo g on sc.idgrupoexecutor = g.idgrupo " + "where g.idgrupo = ? "
+ "and datahorainiciosla between ? and ? and idresponsavel = ?");
parametro.add(idGrupo);
parametro.add(dataInicio);
parametro.add(dataFim);
parametro.add(idPessoa);
list = this.execSQL(sql.toString(), parametro.toArray());
listRetorno.add("idSolicitacaoServico");
listRetorno.add("situacao");
listRetorno.add("idPrioridade");
listRetorno.add("urgencia");
listRetorno.add("dataHoraFim");
listRetorno.add("dataHoraLimite");
if (list != null && !list.isEmpty()) {
return this.listConvertion(getBean(), list, listRetorno);
} else {
return null;
}
}
public Collection<SolicitacaoServicoDTO> findByIdPessoaEData(Integer idGrupo, String login, String nome, Date dataInicio, Date dataFim) throws Exception {
List parametro = new ArrayList();
List listRetorno = new ArrayList();
List list = new ArrayList();
StringBuilder sql = new StringBuilder();
sql.append("select distinct sol.idsolicitacaoservico, sol.situacao, sol.idprioridade, sol.urgencia, sol.datahorafim, sol.datahoralimite from solicitacaoservico sol "
+ "inner join servicocontrato sc on sc.idservicocontrato = sol.idservicocontrato " + "inner join grupo g on sc.idgrupoexecutor = g.idgrupo "
+ "inner join ocorrenciasolicitacao o on sol.idsolicitacaoservico = o.idsolicitacaoservico " + "where g.idgrupo = ? " + "and datahorainiciosla between ? and ? "
+ "and (o.registradopor like ? or o.registradopor like ?) " + "and o.ocorrencia like 'Execu��o da tarefa \"Desenvolvimento\"' "
+ "and o.descricao like '%Registro de Execu��o%' and (sol.prazohh <> 0 or sol.prazomm <> 0) and situacao <> 'Cancelada'");
parametro.add(idGrupo);
parametro.add(dataInicio);
parametro.add(dataFim);
parametro.add(login);
parametro.add(nome);
list = this.execSQL(sql.toString(), parametro.toArray());
listRetorno.add("idSolicitacaoServico");
listRetorno.add("situacao");
listRetorno.add("idPrioridade");
listRetorno.add("urgencia");
listRetorno.add("dataHoraFim");
listRetorno.add("dataHoraLimite");
if (list != null && !list.isEmpty()) {
return this.listConvertion(getBean(), list, listRetorno);
} else {
return null;
}
}
public Collection<SolicitacaoServicoDTO> findByIdPessoaEDataAtendidas(Integer idGrupo, Integer idPessoa, Date dataInicio, Date dataFim) throws Exception {
List parametro = new ArrayList();
List listRetorno = new ArrayList();
List list = new ArrayList();
StringBuilder sql = new StringBuilder();
sql.append("select sol.idsolicitacaoservico, sol.situacao, sol.idprioridade, sol.urgencia, sol.datahorafim, sol.datahoralimite from solicitacaoservico sol "
+ "inner join servicocontrato sc on sc.idservicocontrato = sol.idservicocontrato " + "inner join grupo g on sc.idgrupoexecutor = g.idgrupo "
+ "where g.idgrupo = ? and datahorainiciosla between ? and ? and datahorafim < datahoralimite and sol.idresponsavel = ?");
parametro.add(idGrupo);
parametro.add(dataInicio);
parametro.add(dataFim);
parametro.add(idPessoa);
list = this.execSQL(sql.toString(), parametro.toArray());
listRetorno.add("idSolicitacaoServico");
listRetorno.add("situacao");
listRetorno.add("idPrioridade");
listRetorno.add("urgencia");
listRetorno.add("dataHoraFim");
listRetorno.add("dataHoraLimite");
if (list != null && !list.isEmpty()) {
return this.listConvertion(getBean(), list, listRetorno);
} else {
return null;
}
}
public Collection<SolicitacaoServicoDTO> findByIdPessoaEDataAtendidas(Integer idGrupo, String login, String nome, Date dataInicio, Date dataFim) throws Exception {
List parametro = new ArrayList();
List listRetorno = new ArrayList();
List list = new ArrayList();
StringBuilder sql = new StringBuilder();
sql.append("select distinct sol.idsolicitacaoservico, sol.situacao, sol.idprioridade, sol.urgencia, sol.datahorafim, sol.datahoralimite from solicitacaoservico sol "
+ "inner join servicocontrato sc on sc.idservicocontrato = sol.idservicocontrato " + "inner join grupo g on sc.idgrupoexecutor = g.idgrupo "
+ "inner join ocorrenciasolicitacao o on sol.idsolicitacaoservico = o.idsolicitacaoservico "
+ "where g.idgrupo = ? and datahorainiciosla between ? and ? and datahorafim < datahoralimite " + "and (o.registradopor like ? or o.registradopor like ?) "
+ "and o.ocorrencia like 'Execu��o da tarefa \"Desenvolvimento\"' "
+ "and o.descricao like '%Registro de Execu��o%' and (sol.prazohh <> 0 or sol.prazomm <> 0) and situacao <> 'Cancelada'");
parametro.add(idGrupo);
parametro.add(dataInicio);
parametro.add(dataFim);
parametro.add(login);
parametro.add(nome);
list = this.execSQL(sql.toString(), parametro.toArray());
listRetorno.add("idSolicitacaoServico");
listRetorno.add("situacao");
listRetorno.add("idPrioridade");
listRetorno.add("urgencia");
listRetorno.add("dataHoraFim");
listRetorno.add("dataHoraLimite");
if (list != null && !list.isEmpty()) {
return this.listConvertion(getBean(), list, listRetorno);
} else {
return null;
}
}
public Collection<SolicitacaoServicoDTO> findByIdPessoaEDataNaoAtendidas(Integer idGrupo, Date dataInicio, Date dataFim) throws Exception {
List parametro = new ArrayList();
List listRetorno = new ArrayList();
List list = new ArrayList();
StringBuilder sql = new StringBuilder();
sql.append("select sol.idResponsavel, sol.idsolicitacaoservico, sol.situacao, sol.idprioridade, sol.urgencia from solicitacaoservico sol "
+ "inner join servicocontrato sc on sc.idservicocontrato = sol.idservicocontrato " + "inner join grupo g on sc.idgrupoexecutor = g.idgrupo " + "where g.idgrupo = ? "
+ "and datahorainiciosla between ? and ? and datahoralimite > ? and (sol.prazohh <> 0 or sol.prazomm <> 0) and situacao <> 'Cancelada'");
parametro.add(idGrupo);
parametro.add(dataInicio);
parametro.add(dataFim);
parametro.add(UtilDatas.getDataHoraAtual());
list = this.execSQL(sql.toString(), parametro.toArray());
listRetorno.add("idResponsavel");
listRetorno.add("idSolicitacaoServico");
listRetorno.add("situacao");
listRetorno.add("idPrioridade");
listRetorno.add("urgencia");
if (list != null && !list.isEmpty()) {
return this.listConvertion(getBean(), list, listRetorno);
} else {
return null;
}
}
public Collection<SolicitacaoServicoDTO> findByIdSolicitacaoPai(Integer idSolicitacaoPai) throws Exception {
List condicao = new ArrayList();
condicao.add(new Condition("idSolicitacaoPai", "=", idSolicitacaoPai));
return super.findByCondition(condicao, null);
}
/**
* Retorna a solicita��o de servico pelo id
*
* @param idSolicitacaoServico
* @return
* @throws Exception
*/
public SolicitacaoServicoDTO findByIdSolicitacaoServico(Integer idSolicitacaoServico) throws Exception {
List parametro = new ArrayList();
List listRetorno = new ArrayList();
List list = new ArrayList();
StringBuilder sql = new StringBuilder();
sql.append("select sol.idsolicitacaoservico, ser.nomeservico , sol.situacao from solicitacaoservico sol inner join servicocontrato "
+ "sercont on sol.idservicocontrato = sercont.idservicocontrato inner join servico ser on ser.idservico = sercont.idservico " + "where sol.idsolicitacaoservico = ?");
parametro.add(idSolicitacaoServico);
list = this.execSQL(sql.toString(), parametro.toArray());
listRetorno.add("idSolicitacaoServico");
listRetorno.add("nomeServico");
listRetorno.add("situacao");
if (list != null && !list.isEmpty()) {
return (SolicitacaoServicoDTO) this.listConvertion(getBean(), list, listRetorno).get(0);
} else {
return null;
}
}
/**
* Executando em: sqlServer, mySql e POstgreSQL
**/
public Collection<SolicitacaoServicoDTO> findByServico(Integer idServico) throws Exception {
List parametro = new ArrayList();
List fields = new ArrayList();
List list = new ArrayList();
String sql = " select nometiposervico, nomeservico, nomecategoriaservico, idServico from servico " + "inner join tiposervico on servico.idtiposervico = tiposervico.idtiposervico "
+ "inner join categoriaservico on servico.idcategoriaservico = categoriaservico.idcategoriaservico " + "where ";
if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.POSTGRESQL)) {
sql += "UPPER(servico.deleted) <> 'Y' ";
} else {
sql += "servico.deleted <> 'y' ";
}
sql += "and situacao = 'A' and servico.idServico = ? and dispportal = 'S' order by nomecategoriaservico ";
parametro.add(idServico);
list = this.execSQL(sql, parametro.toArray());
fields.add("nomeTipoServico");
fields.add("nomeServico");
fields.add("nomeCategoriaServico");
fields.add("idServico");
if (list != null && !list.isEmpty()) {
return this.listConvertion(getBean(), list, fields);
} else {
return null;
}
}
/**
* Executando em: sqlServer, mySql e POstgreSQL
**/
public Collection<SolicitacaoServicoDTO> findByServico(Integer idServico, String nome) throws Exception {
List parametro = new ArrayList();
List fields = new ArrayList();
List list = new ArrayList();
String sql = " select nometiposervico, nomeservico, nomecategoriaservico, idServico from servico " + "inner join tiposervico on servico.idtiposervico = tiposervico.idtiposervico "
+ "inner join categoriaservico on servico.idcategoriaservico = categoriaservico.idcategoriaservico " + "where ";
if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.POSTGRESQL)) {
sql += "UPPER(servico.deleted) <> 'Y' ";
} else {
sql += "servico.deleted <> 'y' ";
}
sql += "and situacao = 'A' and servico.idServico = ? and dispportal = 'S' and servico.nomeservico like '%" + nome + "%' order by nomecategoriaservico ";
parametro.add(idServico);
list = this.execSQL(sql, parametro.toArray());
fields.add("nomeTipoServico");
fields.add("nomeServico");
fields.add("nomeCategoriaServico");
fields.add("idServico");
if (list != null && !list.isEmpty()) {
return this.listConvertion(getBean(), list, fields);
} else {
return null;
}
}
public SolicitacaoServicoDTO findInfosCriacaoProblemaByIdSolServico(SolicitacaoServicoDTO solServico) throws Exception {
Object[] params = new Object[] { solServico.getIdSolicitacaoServico() };
List listRetorno = new ArrayList();
StringBuilder sql = new StringBuilder();
sql.append("select C.NOMECONTATO, C.TELEFONECONTATO, C.EMAILCONTATO, SE.IDCONTRATO " + " from solicitacaoservico S "
+ " INNER JOIN CONTATOSOLICITACAOSERVICO C ON S.idcontatosolicitacaoservico= C.idcontatosolicitacaoservico "
+ " INNER JOIN SERVICOCONTRATO SE ON S.IDSERVICOCONTRATO = SE.IDSERVICOCONTRATO " + " WHERE S.IDSOLICITACAOSERVICO = ?");
listRetorno.add("nomecontato");
listRetorno.add("telefonecontato");
listRetorno.add("emailcontato");
listRetorno.add("idContrato");
List list = this.execSQL(sql.toString(), params);
if (list != null && !list.isEmpty()) {
return (SolicitacaoServicoDTO) this.listConvertion(getBean(), list, listRetorno).get(0);
} else {
return null;
}
}
public Collection<SolicitacaoServicoDTO> findResponsavelAtual(Integer idSolicitacaoServico) throws Exception {
StringBuilder sql = new StringBuilder();
List parametro = new ArrayList();
List list = new ArrayList();
sql.append("SELECT bpm_itemtrabalhofluxo.idresponsavelatual ");
sql.append("FROM solicitacaoservico solicitacaoservico ");
sql.append("INNER JOIN execucaosolicitacao execucaosolicitacao ");
sql.append("ON execucaosolicitacao.idsolicitacaoservico = solicitacaoservico.idsolicitacaoservico ");
sql.append("INNER JOIN bpm_itemtrabalhofluxo bpm_itemtrabalhofluxo ");
sql.append("ON bpm_itemtrabalhofluxo.idinstancia = execucaosolicitacao.idinstanciafluxo ");
sql.append("WHERE solicitacaoservico.idsolicitacaoservico = ? ");
sql.append("AND bpm_itemtrabalhofluxo.datahorafinalizacao is null ");
sql.append("AND bpm_itemtrabalhofluxo.idresponsavelatual is not null ");
parametro.add(idSolicitacaoServico);
list = this.execSQL(sql.toString(), parametro.toArray());
List listRetorno = new ArrayList();
listRetorno.add("idUsuarioResponsavelAtual");
List result = engine.listConvertion(getBean(), list, listRetorno);
if (result != null && !result.isEmpty()) {
return result;
} else {
return null;
}
}
public ArrayList<SolicitacaoServicoDTO> findSolicitacoesServicosUsuario(Integer idUsuario, String status, String campoBusca) throws Exception {
List listRetorno = new ArrayList();
List list = new ArrayList();
StringBuilder sql = new StringBuilder();
sql.append("select idSolicitacaoServico");
sql.append(" from solicitacaoservico");
sql.append(" where 1=1 ");
if (idUsuario != null) {
sql.append(" and idSolicitante = " + idUsuario.toString());
} else {
return null;
}
if (status != null && !status.isEmpty()) {
sql.append(" and situacao like '" + status + "'");
}
if (campoBusca != null && !campoBusca.isEmpty()) {
sql.append(" and (upper(descricao) like upper('%" + campoBusca + "%')");
sql.append(" or upper(descricao) like upper('%" + Util.encodeHTML(campoBusca) + "%')");
sql.append(" or upper(resposta) like upper('%" + campoBusca + "%')");
sql.append(" or upper(resposta) like upper('%" + Util.encodeHTML(campoBusca) + "%')");
if (isInteger(campoBusca)) {
sql.append(" or idSolicitacaoServico = " + campoBusca);
}
sql.append(")");
}
list = this.execSQL(sql.toString(), null);
listRetorno.add("idSolicitacaoServico");
if (list != null && !list.isEmpty()) {
return (ArrayList<SolicitacaoServicoDTO>) this.listConvertion(getBean(), list, listRetorno);
} else {
return null;
}
}
@Override
public Class<SolicitacaoServicoDTO> getBean() {
return SolicitacaoServicoDTO.class;
}
protected List<String> getColunasRestoreAll() {
final List<String> listRetorno = new ArrayList<>();
listRetorno.add("idSolicitacaoServico");
listRetorno.add("idbaseconhecimento");
listRetorno.add("idServicoContrato");
listRetorno.add("idSolicitante");
listRetorno.add("idItemConfiguracao");
listRetorno.add("idItemConfiguracaoFilho");
listRetorno.add("idTipodemandaServico");
listRetorno.add("idContatoSolicitacaoServico");
listRetorno.add("idOrigem");
listRetorno.add("idResponsavel");
listRetorno.add("idTipoProblema");
listRetorno.add("idPrioridade");
listRetorno.add("idUnidade");
listRetorno.add("idFaseAtual");
listRetorno.add("idGrupoAtual");
listRetorno.add("dataHoraSolicitacao");
listRetorno.add("dataHoraLimite");
listRetorno.add("atendimentoPresencial");
listRetorno.add("prazoCapturaHH");
listRetorno.add("prazoCapturaMM");
listRetorno.add("prazoHH");
listRetorno.add("prazoMM");
listRetorno.add("descricao");
listRetorno.add("resposta");
listRetorno.add("dataHoraInicio");
listRetorno.add("dataHoraFim");
listRetorno.add("situacao");
listRetorno.add("idSolicitacaoPai");
listRetorno.add("detalhamentoCausa");
listRetorno.add("idCausaIncidente");
listRetorno.add("idCategoriaSolucao");
listRetorno.add("seqReabertura");
listRetorno.add("enviaEmailCriacao");
listRetorno.add("enviaEmailFinalizacao");
listRetorno.add("enviaEmailAcoes");
listRetorno.add("idGrupoNivel1");
listRetorno.add("solucaoTemporaria");
listRetorno.add("houveMudanca");
listRetorno.add("slaACombinar");
listRetorno.add("prazohhAnterior");
listRetorno.add("prazommAnterior");
listRetorno.add("idCalendario");
listRetorno.add("tempoDecorridoHH");
listRetorno.add("tempoDecorridoMM");
listRetorno.add("dataHoraSuspensao");
listRetorno.add("dataHoraReativacao");
listRetorno.add("impacto");
listRetorno.add("urgencia");
listRetorno.add("dataHoraCaptura");
listRetorno.add("tempoCapturaHH");
listRetorno.add("tempoCapturaMM");
listRetorno.add("tempoAtrasoHH");
listRetorno.add("tempoAtrasoMM");
listRetorno.add("tempoAtendimentoHH");
listRetorno.add("tempoAtendimentoMM");
listRetorno.add("idAcordoNivelServico");
listRetorno.add("idUltimaAprovacao");
listRetorno.add("dataHoraInicioSLA");
listRetorno.add("dataHoraSuspensaoSLA");
listRetorno.add("dataHoraReativacaoSLA");
listRetorno.add("situacaoSLA");
listRetorno.add("idTarefaEncerramento");
listRetorno.add("aprovacao");
listRetorno.add("idServico");
listRetorno.add("servico");
listRetorno.add("idTipoDemandaServico");
listRetorno.add("demanda");
listRetorno.add("idContrato");
listRetorno.add("contrato");
listRetorno.add("solicitante");
listRetorno.add("nomeUnidadeSolicitante");
listRetorno.add("responsavel");
listRetorno.add("nomeUnidadeResponsavel");
listRetorno.add("origem");
listRetorno.add("prioridade");
listRetorno.add("faseAtual");
listRetorno.add("grupoAtual");
listRetorno.add("grupoNivel1");
listRetorno.add("nomecontato");
listRetorno.add("emailcontato");
listRetorno.add("telefonecontato");
listRetorno.add("observacao");
listRetorno.add("idLocalidade");
listRetorno.add("idSolicitacaoRelacionada");
listRetorno.add("emailResponsavel");
return listRetorno;
}
/**
* Executando em: sqlServer, mySql e POstgreSQL
**/
public Collection getEmAndamentoParaTratamentoBatch() throws Exception {
String sql = "SELECT s.idsolicitacaoservico, s.idAcordoNivelServico, ans.tempoauto, ans.idprioridadeauto1, ans.idgrupo1, s.idprioridade FROM solicitacaoservico s "
+ "INNER JOIN acordonivelservico ans on ans.idacordonivelservico = s.idacordonivelservico " + "where UPPER(s.situacao) not in ('FECHADA', 'CANCELADA', 'RESOLVIDA', 'SUSPENSA') ";
List listDados = this.execSQL(sql, null);
if (listDados != null) {
List fields = new ArrayList();
fields.add("idSolicitacaoServico");
fields.add("idAcordoNivelServico");
fields.add("tempoAuto");
fields.add("idPrioridadeAuto1");
fields.add("idGrupo1");
fields.add("idPrioridade");
List lstReturn = this.listConvertion(SolicitacaoServicoDTO.class, listDados, fields);
return lstReturn;
}
return null;
}
@Override
public Collection<Field> getFields() {
Collection<Field> listFields = new ArrayList<>();
listFields.add(new Field("idSolicitacaoServico", "idSolicitacaoServico", true, true, false, false));
listFields.add(new Field("idbaseconhecimento", "idBaseConhecimento", false, false, false, false));
listFields.add(new Field("idServicoContrato", "idServicoContrato", false, false, false, false));
listFields.add(new Field("idSolicitante", "idSolicitante", false, false, false, false));
listFields.add(new Field("idItemConfiguracao", "idItemConfiguracao", false, false, false, false));
listFields.add(new Field("idItemConfiguracaoFilho", "idItemConfiguracaoFilho", false, false, false, false));
listFields.add(new Field("idtipodemandaservico", "idTipoDemandaServico", false, false, false, false));
listFields.add(new Field("idcontatosolicitacaoservico", "idContatoSolicitacaoServico", false, false, false, false));
listFields.add(new Field("idOrigem", "idOrigem", false, false, false, false));
listFields.add(new Field("idResponsavel", "idResponsavel", false, false, false, false));
listFields.add(new Field("idTipoProblema", "idTipoProblema", false, false, false, false));
listFields.add(new Field("idPrioridade", "idPrioridade", false, false, false, false));
listFields.add(new Field("idUnidade", "idUnidade", false, false, false, false));
listFields.add(new Field("idFaseAtual", "idFaseAtual", false, false, false, false));
listFields.add(new Field("idGrupoAtual", "idGrupoAtual", false, false, false, false));
listFields.add(new Field("dataHoraSolicitacao", "dataHoraSolicitacao", false, false, false, false));
listFields.add(new Field("dataHoraLimite", "dataHoraLimite", false, false, false, false));
listFields.add(new Field("atendimentoPresencial", "atendimentoPresencial", false, false, false, false));
listFields.add(new Field("prazoCapturaHH", "prazoCapturaHH", false, false, false, false));
listFields.add(new Field("prazoCapturaMM", "prazoCapturaMM", false, false, false, false));
listFields.add(new Field("prazoHH", "prazoHH", false, false, false, false));
listFields.add(new Field("prazoMM", "prazoMM", false, false, false, false));
listFields.add(new Field("descricao", "descricao", false, false, false, false));
listFields.add(new Field("resposta", "resposta", false, false, false, false));
listFields.add(new Field("dataHoraInicio", "dataHoraInicio", false, false, false, false));
listFields.add(new Field("dataHoraFim", "dataHoraFim", false, false, false, false));
listFields.add(new Field("situacao", "situacao", false, false, false, false));
listFields.add(new Field("idSolicitacaoPai", "idSolicitacaoPai", false, false, false, false));
listFields.add(new Field("detalhamentoCausa", "detalhamentoCausa", false, false, false, false));
listFields.add(new Field("idCausaIncidente", "idCausaIncidente", false, false, false, false));
listFields.add(new Field("idCategoriaSolucao", "idCategoriaSolucao", false, false, false, false));
listFields.add(new Field("seqreabertura", "seqReabertura", false, false, false, false));
listFields.add(new Field("enviaEmailCriacao", "enviaEmailCriacao", false, false, false, false));
listFields.add(new Field("enviaEmailFinalizacao", "enviaEmailFinalizacao", false, false, false, false));
listFields.add(new Field("enviaEmailAcoes", "enviaEmailAcoes", false, false, false, false));
listFields.add(new Field("idgruponivel1", "idGrupoNivel1", false, false, false, false));
listFields.add(new Field("solucaoTemporaria", "solucaoTemporaria", false, false, false, false));
listFields.add(new Field("houveMudanca", "houveMudanca", false, false, false, false));
listFields.add(new Field("slaACombinar", "slaACombinar", false, false, false, false));
listFields.add(new Field("prazohhAnterior", "prazohhAnterior", false, false, false, false));
listFields.add(new Field("prazommAnterior", "prazommAnterior", false, false, false, false));
listFields.add(new Field("idCalendario", "idCalendario", false, false, false, false));
listFields.add(new Field("tempoDecorridoHH", "tempoDecorridoHH", false, false, false, false));
listFields.add(new Field("tempoDecorridoMM", "tempoDecorridoMM", false, false, false, false));
listFields.add(new Field("dataHoraSuspensao", "dataHoraSuspensao", false, false, false, false));
listFields.add(new Field("dataHoraReativacao", "dataHoraReativacao", false, false, false, false));
listFields.add(new Field("impacto", "impacto", false, false, false, false));
listFields.add(new Field("urgencia", "urgencia", false, false, false, false));
listFields.add(new Field("dataHoraCaptura", "dataHoraCaptura", false, false, false, false));
listFields.add(new Field("tempoCapturaHH", "tempoCapturaHH", false, false, false, false));
listFields.add(new Field("tempoCapturaMM", "tempoCapturaMM", false, false, false, false));
listFields.add(new Field("tempoAtrasoHH", "tempoAtrasoHH", false, false, false, false));
listFields.add(new Field("tempoAtrasoMM", "tempoAtrasoMM", false, false, false, false));
listFields.add(new Field("tempoAtendimentoHH", "tempoAtendimentoHH", false, false, false, false));
listFields.add(new Field("tempoAtendimentoMM", "tempoAtendimentoMM", false, false, false, false));
listFields.add(new Field("idAcordoNivelServico", "idAcordoNivelServico", false, false, false, false));
listFields.add(new Field("idSolicitacaoRelacionada", "idSolicitacaoRelacionada", false, false, false, false));
listFields.add(new Field("descricaosemformatacao", "descricaoSemFormatacao", false, false, false, false));
listFields.add(new Field("idUltimaAprovacao", "idUltimaAprovacao", false, false, false, false));
listFields.add(new Field("dataHoraInicioSLA", "dataHoraInicioSLA", false, false, false, false));
listFields.add(new Field("situacaoSLA", "situacaoSLA", false, false, false, false));
listFields.add(new Field("dataHoraSuspensaoSLA", "dataHoraSuspensaoSLA", false, false, false, false));
listFields.add(new Field("dataHoraReativacaoSLA", "dataHoraReativacaoSLA", false, false, false, false));
listFields.add(new Field("idTarefaEncerramento", "idTarefaEncerramento", false, false, false, false));
listFields.add(new Field("codigoExterno", "codigoExterno", false, false, false, false));
listFields.add(new Field("vencendo", "vencendo", false, false, false, false));
listFields.add(new Field("criouproblemaautomatico", "criouproblemaautomatico", false, false, false, false));
listFields.add(new Field("idUsuarioResponsavelAtual", "idUsuarioResponsavelAtual", false, false, false, false));
listFields.add(new Field("latitude", "latitude", false, false, false, false));
listFields.add(new Field("longitude", "longitude", false, false, false, false));
return listFields;
}
/**
* Executando em: sqlServer, mySql e POstgreSQL
**/
public Collection<SolicitacaoServicoDTO> getHistoricoByIdSolicitacao(Integer idSolicitacao) throws Exception {
List listRetorno = new ArrayList();
String sql = "";
sql = "select s.idsolicitacaoservico, ";
sql += " e.seqreabertura, ";
sql += " h.datahora, ";
sql += " u.login responsavel, ";
sql += " h.acao, ";
sql += " l.documentacao as tarefa, ";
sql += " gd.sigla as atribuido_grupo, ";
sql += " ud.login as atribuido_usuario ";
sql += "from bpm_historicoitemtrabalho h ";
sql += " inner join bpm_itemtrabalhofluxo i ";
sql += " on h.iditemtrabalho = i.iditemtrabalho ";
sql += " inner join bpm_elementofluxo l ";
sql += " on l.idelemento = i.idelemento ";
sql += " inner join bpm_instanciafluxo f ";
sql += " on f.idinstancia = i.idinstancia ";
sql += " inner join execucaosolicitacao e ";
sql += " on e.idinstanciafluxo = i.idinstancia ";
sql += " inner join solicitacaoservico s ";
sql += " on s.idsolicitacaoservico = i.idinstancia ";
sql += " left outer join usuario u ";
sql += " on u.idusuario = h.idresponsavel ";
sql += " left outer join usuario ud ";
sql += " on ud.idusuario = h.idusuario ";
sql += " left outer join grupo gd ";
sql += " on gd.idgrupo = h.idgrupo ";
sql += " where h.acao in ('Iniciar', 'Executar', 'Delegar') ";
sql += " and s.idsolicitacaoservico = ? ";
sql += " order by s.idsolicitacaoservico, h.datahora, u.login ";
List lista = new ArrayList();
List lstParms = new ArrayList();
lstParms.add(idSolicitacao);
lista = this.execSQL(sql, lstParms.toArray());
listRetorno.add("idSolicitacaoServico");
listRetorno.add("seqReabertura");
listRetorno.add("dataHora");
listRetorno.add("responsavel");
listRetorno.add("acaoFluxo");
listRetorno.add("tarefa");
listRetorno.add("siglaGrupo");
listRetorno.add("nomeUsuario");
List listSolicitacoes = engine.listConvertion(getBean(), lista, listRetorno);
return listSolicitacoes;
}
/**
* Executando em: sqlServer, mySql e POstgreSQL
**/
public Integer getQuantidadeByIdServico(int idServico) throws Exception {
List parametro = new ArrayList();
String sql = "SELECT count(*) FROM solicitacaoservico ss, servicocontrato sc " + "where ss.idservicocontrato = sc.idservicocontrato and sc.idservico = ?";
parametro.add(idServico);
List resultado = this.execSQL(sql.toString(), parametro.toArray());
List<String> listRetorno = new ArrayList<String>();
listRetorno.add("quantidade");
List result = engine.listConvertion(SolicitacaoServicoDTO.class, resultado, listRetorno);
SolicitacaoServicoDTO solicitacaoServicoDTO = (SolicitacaoServicoDTO) result.get(0);
return solicitacaoServicoDTO.getQuantidade();
}
public Integer getQuantidadeByIdServicoContrato(int idServicoContrato) throws Exception {
List parametro = new ArrayList();
String sql = "SELECT count(*) FROM solicitacaoservico ss, servicocontrato sc " + "where ss.idservicocontrato = sc.idservicocontrato and sc.idServicoContrato = ?";
parametro.add(idServicoContrato);
List resultado = this.execSQL(sql.toString(), parametro.toArray());
List<String> listRetorno = new ArrayList<String>();
listRetorno.add("quantidade");
List result = engine.listConvertion(SolicitacaoServicoDTO.class, resultado, listRetorno);
SolicitacaoServicoDTO solicitacaoServicoDTO = (SolicitacaoServicoDTO) result.get(0);
return solicitacaoServicoDTO.getQuantidade();
}
/**
* Executando em: sqlServer, mySql e POstgreSQL
**/
private String getSQLRestoreAll() {
StringBuilder sql = new StringBuilder();
sql.append("SELECT sol.idSolicitacaoServico, sol.idbaseconhecimento, sol.idServicoContrato, sol.idSolicitante, ");
sql.append(" sol.idItemConfiguracao, sol.idItemConfiguracaoFilho, sol.idtipodemandaservico, sol.idcontatosolicitacaoservico, ");
sql.append(" sol.idOrigem, sol.idResponsavel, sol.idTipoProblema, sol.idPrioridade, sol.idUnidade, sol.idFaseAtual, ");
sql.append(" sol.idGrupoAtual, sol.dataHoraSolicitacao, sol.dataHoraLimite, sol.atendimentoPresencial, sol.prazoCapturaHH, sol.prazoCapturaMM, ");
sql.append(" sol.prazoHH, sol.prazoMM, sol.descricao, sol.resposta, sol.dataHoraInicio, sol.dataHoraFim, sol.situacao, ");
sql.append(" sol.idSolicitacaoPai, sol.detalhamentoCausa, sol.idCausaIncidente, sol.idCategoriaSolucao, ");
sql.append(" sol.seqreabertura, sol.enviaEmailCriacao, sol.enviaEmailFinalizacao, sol.enviaEmailAcoes, ");
sql.append(" sol.idgruponivel1, sol.solucaoTemporaria, sol.houveMudanca, sol.slaACombinar, sol.prazohhAnterior, ");
sql.append(" sol.prazommAnterior, sol.idCalendario, sol.tempoDecorridoHH, sol.tempoDecorridoMM, sol.dataHoraSuspensao, ");
sql.append(" sol.dataHoraReativacao, sol.impacto, sol.urgencia, sol.dataHoraCaptura, sol.tempoCapturaHH, sol.tempoCapturaMM, ");
sql.append(" sol.tempoAtrasoHH, sol.tempoAtrasoMM, sol.tempoAtendimentoHH, sol.tempoAtendimentoMM, sol.idacordonivelservico, ");
sql.append(" sol.idultimaaprovacao, sol.datahorainiciosla, sol.datahorasuspensaosla, sol.datahorareativacaosla, sol.situacaosla, sol.idtarefaencerramento, ");
sql.append(" aprov.aprovacao, s.idservico, s.nomeServico, td.idTipoDemandaServico, td.nomeTipoDemandaServico, c.idContrato, c.numero, e1.nome, u1.nome, ");
sql.append(" e2.nome, u2.nome, oa.descricao, p.nomeprioridade, fs.nomefase, ");
sql.append(" g1.sigla, g2.sigla, cs.nomecontato, cs.emailcontato, cs.telefonecontato, cs.localizacaofisica ,cs.idlocalidade,sol.idSolicitacaoRelacionada, e3.email as emailResponsavel ");
sql.append(" FROM solicitacaoservico sol ");
sql.append(" LEFT JOIN servicocontrato sc ON sc.idservicocontrato = sol.idservicocontrato ");
sql.append(" LEFT JOIN contratos c ON c.idcontrato = sc.idcontrato ");
sql.append(" LEFT JOIN servico s ON s.idservico = sc.idservico ");
sql.append(" LEFT JOIN tipodemandaservico td ON td.idtipodemandaservico = s.idtipodemandaservico ");
sql.append(" LEFT JOIN empregados e1 ON e1.idempregado = sol.idsolicitante ");
sql.append(" LEFT JOIN unidade u1 ON u1.idunidade = e1.idunidade ");
sql.append(" LEFT JOIN usuario usu ON usu.idusuario = sol.idresponsavel ");
sql.append(" LEFT JOIN empregados e2 ON e2.idempregado = usu.idempregado ");
sql.append(" LEFT JOIN unidade u2 ON u2.idunidade = e2.idunidade ");
sql.append(" LEFT JOIN origematendimento oa ON oa.idorigem = sol.idorigem ");
sql.append(" LEFT JOIN prioridade p ON p.idprioridade = sol.idprioridade ");
sql.append(" LEFT JOIN faseservico fs ON fs.idfase = sol.idfaseatual ");
sql.append(" LEFT JOIN grupo g1 ON g1.idgrupo = sol.idgrupoatual ");
sql.append(" LEFT JOIN grupo g2 ON g2.idgrupo = sol.idgruponivel1 ");
sql.append(" LEFT JOIN empregados e3 ON e3.idempregado = sol.idresponsavel ");
sql.append(" LEFT JOIN contatosolicitacaoservico cs ON cs.idcontatosolicitacaoservico = sol.idcontatosolicitacaoservico ");
sql.append(" LEFT JOIN aprovacaosolicitacaoservico aprov ON aprov.idaprovacaosolicitacaoservico = sol.idultimaaprovacao ");
return sql.toString();
}
@Override
public String getTableName() {
return TABLE_NAME;
}
public boolean hasSolicitacoesServicosUsuario(Integer idUsuario, String status) throws Exception {
StringBuilder sql = new StringBuilder();
sql.append("select idSolicitacaoServico");
sql.append(" from solicitacaoservico");
sql.append(" where idSolicitante = " + idUsuario.toString());
if (status != null && !status.isEmpty()) {
sql.append(" and situacao like '%" + status + "%'");
}
List list = this.execSQL(sql.toString(), null);
return (list != null && !list.isEmpty());
}
public Collection incidentesPorContrato(Integer idContrato) throws Exception {
StringBuilder sql = new StringBuilder();
List parametro = new ArrayList();
List listRetorno = new ArrayList();
sql.append(" SELECT idsolicitacaoservico, nomeservico, contratos.numero ,empregado.nome, usuario.nome");
sql.append(" FROM solicitacaoservico");
sql.append(" INNER JOIN servicocontrato ON solicitacaoservico.idservicocontrato = servicocontrato.idservicocontrato");
sql.append(" AND (idcontrato = ?)");
sql.append(" INNER JOIN servico ON servicocontrato.idservico = servico.idservico LEFT OUTER JOIN grupo ON grupo.idgrupo = solicitacaoservico.idgrupoatual");
sql.append(" INNER JOIN contratos ON servicocontrato.idcontrato = contratos.idcontrato");
sql.append(" INNER JOIN empregados empregado ON empregado.idempregado = solicitacaoservico.idsolicitante");
sql.append(" INNER JOIN usuario usuario on usuario.idusuario = solicitacaoservico.idresponsavel");
parametro.add(idContrato);
listRetorno.add("idSolicitacaoServico");
listRetorno.add("nomeServico");
listRetorno.add("numero");
listRetorno.add("nome");
listRetorno.add("nomeUsu");
List list = execSQL(sql.toString(), parametro.toArray());
List result = engine.listConvertion(SolicitacaoServicoDTO.class, list, listRetorno);
if (result != null && !result.isEmpty()) {
return result;
} else {
return null;
}
}
public boolean isInteger(String input) {
try {
Integer.parseInt(input);
return true;
} catch (Exception e) {
return false;
}
}
public void limpaDataReativacao(SolicitacaoServicoDTO solicitacaoDto) {
StringBuilder sql = new StringBuilder();
sql.append("UPDATE " + getTableName() + " SET dataHoraReativacao = NULL WHERE idsolicitacaoservico = ?");
Object[] params = { solicitacaoDto.getIdSolicitacaoServico() };
try {
this.execUpdate(sql.toString(), params);
} catch (PersistenceException e) {
System.out.println("Problemas com atualiza��o da solicitacaoServico.");
e.printStackTrace();
}
}
@Override
public Collection list() throws PersistenceException {
List list = new ArrayList();
list.add(new Order("idSolicitacaoServico"));
return super.list(list);
}
public SolicitacaoServicoDTO restoreByIdTarefa(Integer idTarefa) throws Exception {
final List<Integer> parametro = new ArrayList<>();
StringBuilder sb = new StringBuilder();
sb.append("SELECT ");
for (String fildesDB : this.getListNamesFieldDB()) {
sb.append("solicitacao.");
sb.append(fildesDB);
sb.append(", ");
}
sb.append(" bpm_itemtrabalhofluxo.iditemtrabalho FROM bpm_itemtrabalhofluxo bpm_itemtrabalhofluxo ");
sb.append("INNER JOIN execucaosolicitacao execucaosolicitacao ");
sb.append("ON execucaosolicitacao.idinstanciafluxo = bpm_itemtrabalhofluxo.idinstancia ");
sb.append("INNER JOIN solicitacaoservico solicitacao on execucaosolicitacao.idsolicitacaoservico = solicitacao.idsolicitacaoservico ");
sb.append("WHERE bpm_itemtrabalhofluxo.iditemtrabalho = ? ");
parametro.add(idTarefa);
List dados = this.execSQL(sb.toString(), parametro.toArray());
if (dados != null && !dados.isEmpty()) {
List<SolicitacaoServicoDTO> listRestore = listConvertion(getBean(), dados, this.getListFields());
return (SolicitacaoServicoDTO) listRestore.get(0);
}
return null;
}
private List getListFields() {
final List<String> listFields = getListNamesFieldClass();
listFields.add("idTarefa");
return listFields;
}
public SolicitacaoServicoDTO listaIdItemTrabalho(Integer idInstancia) throws Exception {
List parametro = new ArrayList();
StringBuilder sb = new StringBuilder();
sb.append("SELECT bpm_itemtrabalhofluxo.iditemtrabalho ");
sb.append("FROM bpm_itemtrabalhofluxo bpm_itemtrabalhofluxo ");
sb.append("INNER JOIN execucaosolicitacao execucaosolicitacao ");
sb.append("ON execucaosolicitacao.idinstanciafluxo = bpm_itemtrabalhofluxo.idinstancia ");
sb.append("WHERE bpm_itemtrabalhofluxo.situacao LIKE 'Disponivel' ");
sb.append("AND execucaosolicitacao.idsolicitacaoservico = ? ");
parametro.add(idInstancia);
List lista = this.execSQL(sb.toString(), parametro.toArray());
List<String> listRetorno = new ArrayList<String>();
listRetorno.add("idItemTrabalho");
List result = engine.listConvertion(SolicitacaoServicoDTO.class, lista, listRetorno);
return (SolicitacaoServicoDTO) result.get(0);
}
public Collection<SolicitacaoServicoDTO> listaIDSolicitacaoNaoRespondida(Date dataLimite) throws Exception {
List parametro = new ArrayList();
List listRetorno = new ArrayList();
List list = new ArrayList();
Collection<SolicitacaoServicoDTO> solicitacoes = new ArrayList();
StringBuilder sql = new StringBuilder();
sql.append("select idsolicitacaoservico from (");
sql.append("select solicitacaoservico.idsolicitacaoservico ");
sql.append("from solicitacaoservico ");
sql.append("INNER JOIN execucaosolicitacao ON execucaosolicitacao.idsolicitacaoservico = solicitacaoservico.idsolicitacaoservico ");
sql.append("left join pesquisasatisfacao on solicitacaoservico.idsolicitacaoservico=pesquisasatisfacao.idsolicitacaoservico ");
sql.append("where (solicitacaoservico.datahorafim <= ?) and (pesquisasatisfacao.idsolicitacaoservico is null)) as s;");
parametro.add(transformaHoraFinal(dataLimite));
list = this.execSQL(sql.toString(), parametro.toArray());
listRetorno.add("idSolicitacaoServico");
if (list != null && !list.isEmpty()) {
solicitacoes = this.listConvertion(getBean(), list, listRetorno);
}
return solicitacoes;
}
/**
* Executando em: sqlServer, mySql e POstgreSQL
**/
public Collection<SolicitacaoServicoDTO> listAllIncidentes(Integer idEmpregado) throws Exception {
List parametro = new ArrayList();
List fields = new ArrayList();
List list = new ArrayList();
String sql = "SELECT solicitacaoservico.idSolicitacaoServico, solicitacaoservico.dataHoraSolicitacao, solicitacaoservico.dataHoraLimite, "
+ "solicitacaoservico.Situacao, faseservico.nomeFase as faseAtual, prioridade.nomePrioridade " + "FROM solicitacaoservico "
+ "INNER JOIN faseservico ON solicitacaoservico.idfaseatual = faseservico.idfase "
+ "INNER JOIN prioridade ON solicitacaoservico.idprioridade = prioridade.idprioridade WHERE solicitacaoservico.idSolicitante = ?";
parametro.add(idEmpregado);
list = this.execSQL(sql, parametro.toArray());
fields.add("idSolicitacaoServico");
fields.add("dataHoraSolicitacao");
fields.add("dataHoraLimite");
fields.add("situacao");
fields.add("faseAtual");
fields.add("prioridade");
if (list != null && !list.isEmpty()) {
return this.listConvertion(getBean(), list, fields);
} else {
return null;
}
}
/**
* Executando em: sqlServer, mySql e POstgreSQL
**/
public Collection<SolicitacaoServicoDTO> listAllServicos() throws Exception {
List parametro = new ArrayList();
List fields = new ArrayList();
List list = new ArrayList();
String sql = "select nometiposervico, nomeservico, nomecategoriaservico, idServico from servico " + "inner join tiposervico on servico.idtiposervico = tiposervico.idtiposervico "
+ "inner join categoriaservico on servico.idcategoriaservico = categoriaservico.idcategoriaservico " + "where ";
if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.POSTGRESQL)) {
sql += "UPPER(servico.deleted) <> 'Y' ";
} else {
sql += "servico.deleted <> 'y' ";
}
sql += "and situacao = 'A' and dispportal = 'S' order by nomecategoriaservico ";
list = this.execSQL(sql, parametro.toArray());
fields.add("nomeTipoServico");
fields.add("nomeServico");
fields.add("nomeCategoriaServico");
fields.add("idServico");
if (list != null && !list.isEmpty()) {
return this.listConvertion(getBean(), list, fields);
} else {
return null;
}
}
/**
* Executando em: sqlServer, mySql e POstgreSQL
**/
public Collection<SolicitacaoServicoDTO> listAllServicosLikeNomeServico(String nome) throws Exception {
List parametro = new ArrayList();
List fields = new ArrayList();
List list = new ArrayList();
String sql = " select nometiposervico, nomeservico, nomecategoriaservico, idServico from servico " + "inner join tiposervico on servico.idtiposervico = tiposervico.idtiposervico "
+ "inner join categoriaservico on servico.idcategoriaservico = categoriaservico.idcategoriaservico " + "where ";
if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.POSTGRESQL)) {
sql += "UPPER(servico.deleted) <> 'Y' ";
} else {
sql += "servico.deleted <> 'y' ";
}
sql += "and situacao = 'A' and dispportal = 'S' and servico.nomeservico like '%" + nome + "%' order by nomecategoriaservico ";
list = this.execSQL(sql, parametro.toArray());
fields.add("nomeTipoServico");
fields.add("nomeServico");
fields.add("nomeCategoriaServico");
fields.add("idServico");
if (list != null && !list.isEmpty()) {
return this.listConvertion(getBean(), list, fields);
} else {
return null;
}
}
public Collection<RelatorioQuantitativoSolicitacaoDTO> listaQuantidadeSolicitacaoPorFase(SolicitacaoServicoDTO solicitacaoDto) throws Exception {
List listRetorno = new ArrayList();
List parametro = new ArrayList();
StringBuilder sql = new StringBuilder();
sql.append("select fase.nomefase, count(*) from " + getTableName() + " solicitacaoservico ");
sql.append("inner join faseservico fase on solicitacaoservico.idfaseatual = fase.idfase ");
sql.append("INNER JOIN execucaosolicitacao es ON es.idsolicitacaoservico = solicitacaoservico.idsolicitacaoservico ");
sql.append("inner join servicocontrato servicocontrato on solicitacaoservico.idservicocontrato = servicocontrato.idservicocontrato ");
if ("usuarioVip".equals(solicitacaoDto.getTipoUsuario()) || "usuarioNormal".equals(solicitacaoDto.getTipoUsuario())) {
sql.append("INNER JOIN empregados empregados ");
sql.append(" ON empregados.idempregado = solicitacaoservico.idsolicitante ");
sql.append("INNER JOIN prioridadeservicounidade prioridadeservicounidade ");
sql.append(" ON prioridadeservicounidade.idservicocontrato = solicitacaoservico.idservicocontrato ");
sql.append(" AND prioridadeservicounidade.idunidade = empregados.idunidade ");
}
if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.ORACLE)) {
sql.append("where to_char(solicitacaoservico.datahorasolicitacao, 'YYYY-MM-DD') BETWEEN ? AND ? ");
} else {
sql.append("where solicitacaoservico.datahorasolicitacao BETWEEN ? AND ? ");
}
if ("usuarioVip".equals(solicitacaoDto.getTipoUsuario())) {
sql.append(" and prioridadeservicounidade.idprioridade = 1 ");
} else if ("usuarioNormal".equals(solicitacaoDto.getTipoUsuario())) {
sql.append(" and prioridadeservicounidade.idprioridade <> 1 ");
}
if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.ORACLE)) {
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
parametro.add(formatter.format(solicitacaoDto.getDataInicio()));
parametro.add(formatter.format(solicitacaoDto.getDataFim()));
} else {
parametro.add(solicitacaoDto.getDataInicio());
parametro.add(transformaHoraFinal(solicitacaoDto.getDataFim()));
}
/*
* Desenvolvedor: Rodrigo Pecci - Data: 25/10/2013 - Hor�rio: 14h21min - ID Citsmart: 120770 Motivo/Coment�rio: Removida a condi��o que n�o exibia solicita��es com contrato de servi�os que
* foram deletados. Todos devem ser exibidos.
*/
if (solicitacaoDto.getIdContrato() != null) {
sql.append("AND servicocontrato.idcontrato = ? ");
parametro.add(solicitacaoDto.getIdContrato());
}
if (solicitacaoDto.getSituacao() != null && !solicitacaoDto.getSituacao().isEmpty()) {
sql.append("AND solicitacaoservico.situacao = ? ");
parametro.add(solicitacaoDto.getSituacao());
}
/*
* Desenvolvedor: Rodrigo Pecci - Data: 25/10/2013 - Hor�rio: 14h17min - ID Citsmart: 120770 Motivo/Coment�rio: Adicionado "AND solicitacaoservico.idtipodemandaservico is not null" para evitar
* retornar solicita��es de servi�o sem tipo demanda (inconsistentes)
*/
sql.append(" AND solicitacaoservico.idtipodemandaservico is not null ");
sql.append(" group by fase.nomefase");
List lista = new ArrayList();
lista = this.execSQL(sql.toString(), parametro.toArray());
listRetorno.add("fase");
listRetorno.add("quantidadeFase");
if (lista != null && !lista.isEmpty()) {
List listaQuantidadeSolicitacaoPorPrioridade = engine.listConvertion(RelatorioQuantitativoSolicitacaoDTO.class, lista, listRetorno);
return listaQuantidadeSolicitacaoPorPrioridade;
} else {
return null;
}
}
public Collection<RelatorioQuantitativoSolicitacaoDTO> listaQuantidadeSolicitacaoPorGrupo(SolicitacaoServicoDTO solicitacaoDto) throws Exception {
List listRetorno = new ArrayList();
List parametro = new ArrayList();
List listaQuantidadeSolicitacaoPorGrupo = new ArrayList();
StringBuilder sql = new StringBuilder();
/*
* Desenvolvedor: Rodrigo Pecci - Data: 23/10/2013 - Hor�rio: 10h47min - ID Citsmart: 120770 Motivo/Coment�rio: O grupo estava utilizando INNER JOIN e quando n�o existia relacionamento o
* resultado do grupo n�o era retornado.
*/
sql.append("select (CASE WHEN grupo.sigla IS NULL THEN 'SEM ATRIBUI��O' ELSE grupo.sigla end), servico.nomeservico, count(*) from solicitacaoservico solicitacaoservico ");
sql.append("left join grupo grupo on solicitacaoservico.idgrupoatual = grupo.idgrupo ");
sql.append("INNER JOIN execucaosolicitacao es ON es.idsolicitacaoservico = solicitacaoservico.idsolicitacaoservico ");
sql.append("inner join servicocontrato servicocontrato on solicitacaoservico.idservicocontrato = servicocontrato.idservicocontrato ");
sql.append("inner join servico servico on servico.idservico = servicocontrato.idservico ");
if ("usuarioVip".equals(solicitacaoDto.getTipoUsuario()) || "usuarioNormal".equals(solicitacaoDto.getTipoUsuario())) {
sql.append("left join prioridadeservicounidade prioridadeservicounidade on prioridadeservicounidade.idservicocontrato = solicitacaoservico.idservicocontrato ");
}
if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.ORACLE)) {
sql.append("where to_char(solicitacaoservico.datahorasolicitacao, 'YYYY-MM-DD') BETWEEN ? AND ? ");
} else {
sql.append("where solicitacaoservico.datahorasolicitacao BETWEEN ? AND ? ");
}
if ("usuarioVip".equals(solicitacaoDto.getTipoUsuario())) {
sql.append(" and prioridadeservicounidade.idprioridade = 1 ");
} else if ("usuarioNormal".equals(solicitacaoDto.getTipoUsuario())) {
sql.append(" and prioridadeservicounidade.idprioridade <> 1 ");
}
if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.ORACLE)) {
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
parametro.add(formatter.format(solicitacaoDto.getDataInicio()));
parametro.add(formatter.format(solicitacaoDto.getDataFim()));
} else {
parametro.add(solicitacaoDto.getDataInicio());
parametro.add(transformaHoraFinal(solicitacaoDto.getDataFim()));
}
/*
* Desenvolvedor: Rodrigo Pecci - Data: 25/10/2013 - Hor�rio: 14h21min - ID Citsmart: 120770 Motivo/Coment�rio: Removida a condi��o que n�o exibia solicita��es com contrato de servi�os que
* foram deletados. Todos devem ser exibidos.
*/
if (solicitacaoDto.getIdContrato() != null) {
sql.append("AND servicocontrato.idcontrato = ? ");
parametro.add(solicitacaoDto.getIdContrato());
}
if (solicitacaoDto.getSituacao() != null && !solicitacaoDto.getSituacao().isEmpty()) {
sql.append("AND solicitacaoservico.situacao = ? ");
parametro.add(solicitacaoDto.getSituacao());
}
/*
* Desenvolvedor: Rodrigo Pecci - Data: 25/10/2013 - Hor�rio: 14h17min - ID Citsmart: 120770 Motivo/Coment�rio: Adicionado "AND solicitacaoservico.idtipodemandaservico is not null" para evitar
* retornar solicita��es de servi�o sem tipo demanda (inconsistentes)
*/
sql.append(" AND solicitacaoservico.idtipodemandaservico is not null ");
sql.append(" group by grupo.sigla, servico.nomeservico");
sql.append(" order by grupo.sigla, servico.nomeservico");
List lista = new ArrayList();
lista = this.execSQL(sql.toString(), parametro.toArray());
listRetorno.add("grupo");
listRetorno.add("servico");
listRetorno.add("quantidadeServico");
if (lista != null && !lista.isEmpty()) {
listaQuantidadeSolicitacaoPorGrupo = engine.listConvertion(RelatorioQuantitativoSolicitacaoDTO.class, lista, listRetorno);
}
return listaQuantidadeSolicitacaoPorGrupo;
}
public Collection<RelatorioQuantitativoSolicitacaoDTO> listaQuantidadeSolicitacaoPorHoraAbertura(SolicitacaoServicoDTO solicitacaoDto) throws Exception {
List listRetorno = new ArrayList();
List parametro = new ArrayList();
StringBuilder sql = new StringBuilder();
if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.SQLSERVER)) {
sql.append("select datepart(hour, solicitacaoservico.datahorasolicitacao) as int, count(*) from " + getTableName() + " solicitacaoservico ");
} else if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.POSTGRESQL)) {
sql.append("select cast(extract(hour from solicitacaoservico.datahorasolicitacao) as int), count(*) from " + getTableName() + " solicitacaoservico ");
} else if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.ORACLE)) {
sql.append("select to_char(solicitacaoservico.datahorasolicitacao, 'hh24') datahorasolicitacao, count(*) from " + getTableName() + " solicitacaoservico ");
} else {
sql.append("select extract(hour from solicitacaoservico.datahorasolicitacao), count(*) from " + getTableName() + " solicitacaoservico ");
}
// if (solicitacaoDto.getIdContrato() != null) {
sql.append("INNER JOIN execucaosolicitacao es ON es.idsolicitacaoservico = solicitacaoservico.idsolicitacaoservico ");
sql.append("inner join servicocontrato servicocontrato on solicitacaoservico.idservicocontrato = servicocontrato.idservicocontrato ");
// }
if ("usuarioVip".equals(solicitacaoDto.getTipoUsuario()) || "usuarioNormal".equals(solicitacaoDto.getTipoUsuario())) {
sql.append("INNER JOIN empregados empregados ");
sql.append(" ON empregados.idempregado = solicitacaoservico.idsolicitante ");
sql.append("INNER JOIN prioridadeservicounidade prioridadeservicounidade ");
sql.append(" ON prioridadeservicounidade.idservicocontrato = solicitacaoservico.idservicocontrato ");
sql.append(" AND prioridadeservicounidade.idunidade = empregados.idunidade ");
}
if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.ORACLE)) {
sql.append("where to_char(solicitacaoservico.datahorasolicitacao, 'YYYY-MM-DD') BETWEEN ? AND ? ");
} else {
sql.append("where solicitacaoservico.datahorasolicitacao BETWEEN ? AND ? ");
}
if ("usuarioVip".equals(solicitacaoDto.getTipoUsuario())) {
sql.append(" and prioridadeservicounidade.idprioridade = 1 ");
} else if ("usuarioNormal".equals(solicitacaoDto.getTipoUsuario())) {
sql.append(" and prioridadeservicounidade.idprioridade <> 1 ");
}
if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.ORACLE)) {
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
parametro.add(formatter.format(solicitacaoDto.getDataInicio()));
parametro.add(formatter.format(solicitacaoDto.getDataFim()));
} else {
parametro.add(solicitacaoDto.getDataInicio());
parametro.add(transformaHoraFinal(solicitacaoDto.getDataFim()));
}
/*
* Desenvolvedor: Rodrigo Pecci - Data: 25/10/2013 - Hor�rio: 14h21min - ID Citsmart: 120770 Motivo/Coment�rio: Removida a condi��o que n�o exibia solicita��es com contrato de servi�os que
* foram deletados. Todos devem ser exibidos.
*/
if (solicitacaoDto.getIdContrato() != null) {
sql.append("AND servicocontrato.idcontrato = ? ");
parametro.add(solicitacaoDto.getIdContrato());
}
if (solicitacaoDto.getSituacao() != null && !solicitacaoDto.getSituacao().isEmpty()) {
sql.append("AND solicitacaoservico.situacao = ? ");
parametro.add(solicitacaoDto.getSituacao());
}
/*
* Desenvolvedor: Rodrigo Pecci - Data: 25/10/2013 - Hor�rio: 14h17min - ID Citsmart: 120770 Motivo/Coment�rio: Adicionado "AND solicitacaoservico.idtipodemandaservico is not null" para evitar
* retornar solicita��es de servi�o sem tipo demanda (inconsistentes)
*/
sql.append(" AND solicitacaoservico.idtipodemandaservico is not null ");
if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.SQLSERVER)) {
sql.append("group by datepart(hour, solicitacaoservico.datahorasolicitacao)");
} else if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.ORACLE)) {
sql.append(" group by solicitacaoservico.datahorasolicitacao ");
} else {
sql.append(" group by extract(hour from solicitacaoservico.datahorasolicitacao)");
}
List lista = new ArrayList();
lista = this.execSQL(sql.toString(), parametro.toArray());
listRetorno.add("horaAbertura");
listRetorno.add("quantidadeHoraAbertura");
if (lista != null && !lista.isEmpty()) {
List listaQuantidadeSolicitacaoPorTipo = engine.listConvertion(RelatorioQuantitativoSolicitacaoDTO.class, lista, listRetorno);
return listaQuantidadeSolicitacaoPorTipo;
} else {
return null;
}
}
/**
* Retorna a quantidade de solicita��es separado por item de configura��o.
*
* @param solicitacaoDto
* @return Collection<RelatorioQuantitativoSolicitacaoDTO>
* @throws Exception
* @author rodrigo.acorse - Data: 23/10/2013 - Hor�rio: 10h47min - ID Citsmart: 120770
*/
public Collection<RelatorioQuantitativoSolicitacaoDTO> listaQuantidadeSolicitacaoPorItemConfiguracao(SolicitacaoServicoDTO solicitacaoDto) throws Exception {
List listRetorno = new ArrayList();
List parametro = new ArrayList();
StringBuilder sql = new StringBuilder();
/*
* Desenvolvedor: Rodrigo Pecci - Data: 23/10/2013 - Hor�rio: 10h47min - ID Citsmart: 120770 Motivo/Coment�rio: O item de configura��o estava utilizando INNER JOIN e quando n�o existia
* relacionamento o resultado do item n�o era retornado.
*/
sql.append("select (CASE WHEN itemconfiguracao.identificacao IS NULL THEN 'SEM ATRIBUI��O' ELSE itemconfiguracao.identificacao end), count(*) from solicitacaoservico solicitacaoservico ");
sql.append("left join itemconfiguracao itemconfiguracao on solicitacaoservico.iditemconfiguracao = itemconfiguracao.iditemconfiguracao ");
sql.append("INNER JOIN execucaosolicitacao es ON es.idsolicitacaoservico = solicitacaoservico.idsolicitacaoservico ");
sql.append("inner join servicocontrato servicocontrato on solicitacaoservico.idservicocontrato = servicocontrato.idservicocontrato ");
if ("usuarioVip".equals(solicitacaoDto.getTipoUsuario()) || "usuarioNormal".equals(solicitacaoDto.getTipoUsuario())) {
sql.append("INNER JOIN empregados empregados ");
sql.append(" ON empregados.idempregado = solicitacaoservico.idsolicitante ");
sql.append("INNER JOIN prioridadeservicounidade prioridadeservicounidade ");
sql.append(" ON prioridadeservicounidade.idservicocontrato = solicitacaoservico.idservicocontrato ");
sql.append(" AND prioridadeservicounidade.idunidade = empregados.idunidade ");
}
if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.ORACLE)) {
sql.append("where to_char(solicitacaoservico.datahorasolicitacao, 'YYYY-MM-DD') BETWEEN ? AND ? ");
} else {
sql.append("where solicitacaoservico.datahorasolicitacao BETWEEN ? AND ? ");
}
if ("usuarioVip".equals(solicitacaoDto.getTipoUsuario())) {
sql.append(" and prioridadeservicounidade.idprioridade = 1 ");
} else if ("usuarioNormal".equals(solicitacaoDto.getTipoUsuario())) {
sql.append(" and prioridadeservicounidade.idprioridade <> 1 ");
}
if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.ORACLE)) {
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
parametro.add(formatter.format(solicitacaoDto.getDataInicio()));
parametro.add(formatter.format(solicitacaoDto.getDataFim()));
} else {
parametro.add(solicitacaoDto.getDataInicio());
parametro.add(transformaHoraFinal(solicitacaoDto.getDataFim()));
}
/*
* Desenvolvedor: Rodrigo Pecci - Data: 25/10/2013 - Hor�rio: 14h21min - ID Citsmart: 120770 Motivo/Coment�rio: Removida a condi��o que n�o exibia solicita��es com contrato de servi�os que
* foram deletados. Todos devem ser exibidos.
*/
if (solicitacaoDto.getIdContrato() != null) {
sql.append("AND servicocontrato.idcontrato = ? ");
parametro.add(solicitacaoDto.getIdContrato());
}
if (solicitacaoDto.getSituacao() != null && !solicitacaoDto.getSituacao().isEmpty()) {
sql.append("AND solicitacaoservico.situacao = ? ");
parametro.add(solicitacaoDto.getSituacao());
}
/*
* Desenvolvedor: Rodrigo Pecci - Data: 25/10/2013 - Hor�rio: 14h17min - ID Citsmart: 120770 Motivo/Coment�rio: Adicionado "AND solicitacaoservico.idtipodemandaservico is not null" para evitar
* retornar solicita��es de servi�o sem tipo demanda (inconsistentes)
*/
sql.append(" AND solicitacaoservico.idtipodemandaservico is not null ");
sql.append(" group by itemconfiguracao.identificacao ");
List lista = new ArrayList();
lista = this.execSQL(sql.toString(), parametro.toArray());
listRetorno.add("itemConfiguracao");
listRetorno.add("quantidadeItemConfiguracao");
if (lista != null && !lista.isEmpty()) {
List listaQuantidadeSolicitacaoPorItemConfiguracao = engine.listConvertion(RelatorioQuantitativoSolicitacaoDTO.class, lista, listRetorno);
return listaQuantidadeSolicitacaoPorItemConfiguracao;
} else {
return null;
}
}
/**
* Retorna a quantidade de solicita��es separado por item de configura��o. Alterado o script para mostrar todas os servi�os com a origem fazia com o nome 'SEM ATRIBUI��O'
*
* @param solicitacaoDto
* @return Collection<RelatorioQuantitativoSolicitacaoDTO>
* @throws Exception
* @author bruno.aquino - Data: 23/10/2013 - Hor�rio: 15h32min - ID Citsmart: 120770|122034
*/
public Collection<RelatorioQuantitativoSolicitacaoDTO> listaQuantidadeSolicitacaoPorOrigem(SolicitacaoServicoDTO solicitacaoDto) throws Exception {
List listRetorno = new ArrayList();
List parametro = new ArrayList();
StringBuilder sql = new StringBuilder();
sql.append("select (CASE WHEN origem.descricao IS NULL THEN 'SEM ATRIBUI��O' ELSE origem.descricao end), count(*) from " + getTableName() + " solicitacaoservico ");
sql.append("left join origematendimento origem on solicitacaoservico.idorigem = origem.idorigem ");
// if (solicitacaoDto.getIdContrato() != null) {
sql.append("INNER JOIN execucaosolicitacao es ON es.idsolicitacaoservico = solicitacaoservico.idsolicitacaoservico ");
sql.append("inner join servicocontrato servicocontrato on solicitacaoservico.idservicocontrato = servicocontrato.idservicocontrato ");
// }
if ("usuarioVip".equals(solicitacaoDto.getTipoUsuario()) || "usuarioNormal".equals(solicitacaoDto.getTipoUsuario())) {
sql.append("INNER JOIN empregados empregados ");
sql.append(" ON empregados.idempregado = solicitacaoservico.idsolicitante ");
sql.append("INNER JOIN prioridadeservicounidade prioridadeservicounidade ");
sql.append(" ON prioridadeservicounidade.idservicocontrato = solicitacaoservico.idservicocontrato ");
sql.append(" AND prioridadeservicounidade.idunidade = empregados.idunidade ");
}
if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.ORACLE)) {
sql.append("where to_char(solicitacaoservico.datahorasolicitacao, 'YYYY-MM-DD') BETWEEN ? AND ? ");
} else {
sql.append("where solicitacaoservico.datahorasolicitacao BETWEEN ? AND ? ");
}
if ("usuarioVip".equals(solicitacaoDto.getTipoUsuario())) {
sql.append(" and prioridadeservicounidade.idprioridade = 1 ");
} else if ("usuarioNormal".equals(solicitacaoDto.getTipoUsuario())) {
sql.append(" and prioridadeservicounidade.idprioridade <> 1 ");
}
if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.ORACLE)) {
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
parametro.add(formatter.format(solicitacaoDto.getDataInicio()));
parametro.add(formatter.format(solicitacaoDto.getDataFim()));
} else {
parametro.add(solicitacaoDto.getDataInicio());
parametro.add(transformaHoraFinal(solicitacaoDto.getDataFim()));
}
/*
* Desenvolvedor: Rodrigo Pecci - Data: 25/10/2013 - Hor�rio: 14h21min - ID Citsmart: 120770 Motivo/Coment�rio: Removida a condi��o que n�o exibia solicita��es com contrato de servi�os que
* foram deletados. Todos devem ser exibidos.
*/
if (solicitacaoDto.getIdContrato() != null) {
sql.append("AND servicocontrato.idcontrato = ? ");
parametro.add(solicitacaoDto.getIdContrato());
}
if (solicitacaoDto.getSituacao() != null && !solicitacaoDto.getSituacao().isEmpty()) {
sql.append("AND solicitacaoservico.situacao = ? ");
parametro.add(solicitacaoDto.getSituacao());
}
/*
* Desenvolvedor: Rodrigo Pecci - Data: 25/10/2013 - Hor�rio: 14h17min - ID Citsmart: 120770 Motivo/Coment�rio: Adicionado "AND solicitacaoservico.idtipodemandaservico is not null" para evitar
* retornar solicita��es de servi�o sem tipo demanda (inconsistentes)
*/
sql.append(" AND solicitacaoservico.idtipodemandaservico is not null ");
sql.append(" group by origem.descricao");
List lista = new ArrayList();
lista = this.execSQL(sql.toString(), parametro.toArray());
listRetorno.add("origem");
listRetorno.add("quantidadeOrigem");
if (lista != null && !lista.isEmpty()) {
List listaQuantidadeSolicitacaoPorOrigem = engine.listConvertion(RelatorioQuantitativoSolicitacaoDTO.class, lista, listRetorno);
return listaQuantidadeSolicitacaoPorOrigem;
} else {
return null;
}
}
/**
* Retorna a quantidade de solicita��es de servi�o por pesquisa de satisfa��o
*
* @param solicitacaoDto
* @return Collection<RelatorioQuantitativoSolicitacaoDTO>
* @throws Exception
*/
public Collection<RelatorioQuantitativoSolicitacaoDTO> listaQuantidadeSolicitacaoPorPesquisaSatisfacao(SolicitacaoServicoDTO solicitacaoDto) throws Exception {
List listRetorno = new ArrayList();
List parametro = new ArrayList();
List listaQuantidadeSolicitacaoPorGrupo = new ArrayList();
StringBuilder sql = new StringBuilder();
sql.append("select (CASE WHEN grupo.sigla IS NULL THEN 'SEM ATRIBUI��O' ELSE grupo.sigla end), servico.nomeservico, count(*) from solicitacaoservico solicitacaoservico ");
sql.append("inner join pesquisasatisfacao pesquisasatisfacao on pesquisasatisfacao.idsolicitacaoservico = solicitacaoservico.idsolicitacaoservico ");
sql.append("left join grupo grupo on solicitacaoservico.idgrupoatual = grupo.idgrupo ");
sql.append("INNER JOIN execucaosolicitacao es ON es.idsolicitacaoservico = solicitacaoservico.idsolicitacaoservico ");
sql.append("inner join servicocontrato servicocontrato on solicitacaoservico.idservicocontrato = servicocontrato.idservicocontrato ");
sql.append("inner join servico servico on servico.idservico = servicocontrato.idservico ");
if ("usuarioVip".equals(solicitacaoDto.getTipoUsuario()) || "usuarioNormal".equals(solicitacaoDto.getTipoUsuario())) {
sql.append("left join prioridadeservicounidade prioridadeservicounidade on prioridadeservicounidade.idservicocontrato = solicitacaoservico.idservicocontrato ");
}
if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.ORACLE)) {
sql.append("where to_char(solicitacaoservico.datahorasolicitacao, 'YYYY-MM-DD') BETWEEN ? AND ? ");
} else {
sql.append("where solicitacaoservico.datahorasolicitacao BETWEEN ? AND ? ");
}
if ("usuarioVip".equals(solicitacaoDto.getTipoUsuario())) {
sql.append(" and prioridadeservicounidade.idprioridade = 1 ");
} else if ("usuarioNormal".equals(solicitacaoDto.getTipoUsuario())) {
sql.append(" and prioridadeservicounidade.idprioridade <> 1 ");
}
if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.ORACLE)) {
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
parametro.add(formatter.format(solicitacaoDto.getDataInicio()));
parametro.add(formatter.format(solicitacaoDto.getDataFim()));
} else {
parametro.add(solicitacaoDto.getDataInicio());
parametro.add(transformaHoraFinal(solicitacaoDto.getDataFim()));
}
/*
* Desenvolvedor: Rodrigo Pecci - Data: 25/10/2013 - Hor�rio: 14h21min - ID Citsmart: 120770 Motivo/Coment�rio: Removida a condi��o que n�o exibia solicita��es com contrato de servi�os que
* foram deletados. Todos devem ser exibidos.
*/
if (solicitacaoDto.getIdContrato() != null) {
sql.append("AND servicocontrato.idcontrato = ? ");
parametro.add(solicitacaoDto.getIdContrato());
}
if (solicitacaoDto.getSituacao() != null && !solicitacaoDto.getSituacao().isEmpty()) {
sql.append("AND solicitacaoservico.situacao = ? ");
parametro.add(solicitacaoDto.getSituacao());
}
/*
* Desenvolvedor: Rodrigo Pecci - Data: 25/10/2013 - Hor�rio: 14h17min - ID Citsmart: 120770 Motivo/Coment�rio: Adicionado "AND solicitacaoservico.idtipodemandaservico is not null" para evitar
* retornar solicita��es de servi�o sem tipo demanda (inconsistentes)
*/
sql.append(" AND solicitacaoservico.idtipodemandaservico is not null ");
sql.append(" group by grupo.sigla, servico.nomeservico");
sql.append(" order by grupo.sigla, servico.nomeservico");
List lista = new ArrayList();
lista = this.execSQL(sql.toString(), parametro.toArray());
listRetorno.add("grupoPesquisaSatisfacao");
listRetorno.add("servicoPesquisaSatisfacao");
listRetorno.add("quantidadePesquisaSatisfacao");
if (lista != null && !lista.isEmpty()) {
listaQuantidadeSolicitacaoPorGrupo = engine.listConvertion(RelatorioQuantitativoSolicitacaoDTO.class, lista, listRetorno);
}
return listaQuantidadeSolicitacaoPorGrupo;
}
public Collection<RelatorioQuantitativoSolicitacaoDTO> listaQuantidadeSolicitacaoPorPrioridade(SolicitacaoServicoDTO solicitacaoDto) throws Exception {
List listRetorno = new ArrayList();
List parametro = new ArrayList();
StringBuilder sql = new StringBuilder();
sql.append("select prioridade.nomeprioridade, count(*) from " + getTableName() + " solicitacaoservico ");
sql.append("inner join prioridade prioridade on solicitacaoservico.idprioridade = prioridade.idprioridade ");
// if (solicitacaoDto.getIdContrato() != null) {
sql.append("INNER JOIN execucaosolicitacao es ON es.idsolicitacaoservico = solicitacaoservico.idsolicitacaoservico ");
sql.append("inner join servicocontrato servicocontrato on solicitacaoservico.idservicocontrato = servicocontrato.idservicocontrato ");
// }
if ("usuarioVip".equals(solicitacaoDto.getTipoUsuario()) || "usuarioNormal".equals(solicitacaoDto.getTipoUsuario())) {
sql.append("INNER JOIN empregados empregados ");
sql.append(" ON empregados.idempregado = solicitacaoservico.idsolicitante ");
sql.append("INNER JOIN prioridadeservicounidade prioridadeservicounidade ");
sql.append(" ON prioridadeservicounidade.idservicocontrato = solicitacaoservico.idservicocontrato ");
sql.append(" AND prioridadeservicounidade.idunidade = empregados.idunidade ");
}
if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.ORACLE)) {
sql.append("where to_char(solicitacaoservico.datahorasolicitacao, 'YYYY-MM-DD') BETWEEN ? AND ? ");
} else {
sql.append("where solicitacaoservico.datahorasolicitacao BETWEEN ? AND ? ");
}
if ("usuarioVip".equals(solicitacaoDto.getTipoUsuario())) {
sql.append(" and prioridadeservicounidade.idprioridade = 1 ");
} else if ("usuarioNormal".equals(solicitacaoDto.getTipoUsuario())) {
sql.append(" and prioridadeservicounidade.idprioridade <> 1 ");
}
if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.ORACLE)) {
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
parametro.add(formatter.format(solicitacaoDto.getDataInicio()));
parametro.add(formatter.format(solicitacaoDto.getDataFim()));
} else {
parametro.add(solicitacaoDto.getDataInicio());
parametro.add(transformaHoraFinal(solicitacaoDto.getDataFim()));
}
/*
* Desenvolvedor: Rodrigo Pecci - Data: 25/10/2013 - Hor�rio: 14h21min - ID Citsmart: 120770 Motivo/Coment�rio: Removida a condi��o que n�o exibia solicita��es com contrato de servi�os que
* foram deletados. Todos devem ser exibidos.
*/
if (solicitacaoDto.getIdContrato() != null) {
sql.append("AND servicocontrato.idcontrato = ? ");
parametro.add(solicitacaoDto.getIdContrato());
}
if (solicitacaoDto.getSituacao() != null && !solicitacaoDto.getSituacao().isEmpty()) {
sql.append("AND solicitacaoservico.situacao = ? ");
parametro.add(solicitacaoDto.getSituacao());
}
/*
* Desenvolvedor: Rodrigo Pecci - Data: 25/10/2013 - Hor�rio: 14h17min - ID Citsmart: 120770 Motivo/Coment�rio: Adicionado "AND solicitacaoservico.idtipodemandaservico is not null" para evitar
* retornar solicita��es de servi�o sem tipo demanda (inconsistentes)
*/
sql.append(" AND solicitacaoservico.idtipodemandaservico is not null ");
sql.append(" group by prioridade.nomeprioridade");
List lista = new ArrayList();
lista = this.execSQL(sql.toString(), parametro.toArray());
listRetorno.add("prioridade");
listRetorno.add("quantidadePrioridade");
if (lista != null && !lista.isEmpty()) {
List listaQuantidadeSolicitacaoPorPrioridade = engine.listConvertion(RelatorioQuantitativoSolicitacaoDTO.class, lista, listRetorno);
return listaQuantidadeSolicitacaoPorPrioridade;
} else {
return null;
}
}
public Collection<RelatorioQuantitativoSolicitacaoDTO> listaQuantidadeSolicitacaoPorResponsavel(SolicitacaoServicoDTO solicitacaoDto) throws Exception {
List listRetorno = new ArrayList();
List parametro = new ArrayList();
StringBuilder sql = new StringBuilder();
sql.append("select ");
sql.append(" ltrim(usuario.nome), count(*) ");
sql.append("from ");
sql.append(" solicitacaoservico solicitacaoservico ");
sql.append("inner join ");
sql.append(" execucaosolicitacao execucaosolicitacao on execucaosolicitacao.idsolicitacaoservico = solicitacaoservico.idsolicitacaoservico ");
sql.append("inner join ");
sql.append(" bpm_itemtrabalhofluxo bpm_itemtrabalhofluxo ON bpm_itemtrabalhofluxo.idinstancia = execucaosolicitacao.idinstanciafluxo ");
sql.append("inner join ");
sql.append(" usuario usuario ON bpm_itemtrabalhofluxo.idresponsavelatual = usuario.idusuario ");
sql.append("inner join ");
sql.append(" servicocontrato servicocontrato on solicitacaoservico.idservicocontrato = servicocontrato.idservicocontrato ");
if ("usuarioVip".equals(solicitacaoDto.getTipoUsuario()) || "usuarioNormal".equals(solicitacaoDto.getTipoUsuario())) {
sql.append("inner join ");
sql.append(" empregados empregados on empregados.idempregado = solicitacaoservico.idsolicitante ");
sql.append("inner join prioridadeservicounidade prioridadeservicounidade ");
sql.append(" on prioridadeservicounidade.idservicocontrato = solicitacaoservico.idservicocontrato and prioridadeservicounidade.idunidade = empregados.idunidade ");
}
if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.ORACLE)) {
sql.append("where to_char(solicitacaoservico.datahorasolicitacao, 'YYYY-MM-DD') BETWEEN ? AND ? ");
} else {
sql.append("where solicitacaoservico.datahorasolicitacao BETWEEN ? AND ? ");
}
if ("usuarioVip".equals(solicitacaoDto.getTipoUsuario())) {
sql.append(" and prioridadeservicounidade.idprioridade = 1 ");
} else if ("usuarioNormal".equals(solicitacaoDto.getTipoUsuario())) {
sql.append(" and prioridadeservicounidade.idprioridade <> 1 ");
}
if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.ORACLE)) {
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
parametro.add(formatter.format(solicitacaoDto.getDataInicio()));
parametro.add(formatter.format(solicitacaoDto.getDataFim()));
} else {
parametro.add(solicitacaoDto.getDataInicio());
parametro.add(transformaHoraFinal(solicitacaoDto.getDataFim()));
}
/*
* Desenvolvedor: Rodrigo Pecci - Data: 25/10/2013 - Hor�rio: 14h21min - ID Citsmart: 120770 Motivo/Coment�rio: Removida a condi��o que n�o exibia solicita��es com contrato de servi�os que
* foram deletados. Todos devem ser exibidos.
*/
if (solicitacaoDto.getIdContrato() != null) {
sql.append("AND servicocontrato.idcontrato = ? ");
parametro.add(solicitacaoDto.getIdContrato());
}
if (solicitacaoDto.getSituacao() != null && !solicitacaoDto.getSituacao().isEmpty()) {
sql.append("AND solicitacaoservico.situacao = ? ");
parametro.add(solicitacaoDto.getSituacao());
}
/*
* Desenvolvedor: Rodrigo Pecci - Data: 25/10/2013 - Hor�rio: 14h17min - ID Citsmart: 120770 Motivo/Coment�rio: Adicionado "AND solicitacaoservico.idtipodemandaservico is not null" para evitar
* retornar solicita��es de servi�o sem tipo demanda (inconsistentes)
*/
sql.append(" and solicitacaoservico.idtipodemandaservico is not null ");
sql.append(" and bpm_itemtrabalhofluxo.situacao in ( '"+SituacaoItemTrabalho.Executado+"' , '"+SituacaoItemTrabalho.EmAndamento+"' ) ");
sql.append(" and bpm_itemtrabalhofluxo.datahorafinalizacao is null ");
sql.append(" group by usuario.nome order by ltrim(usuario.nome) ");
List lista = new ArrayList();
lista = this.execSQL(sql.toString(), parametro.toArray());
listRetorno.add("responsavel");
listRetorno.add("quantidadeResponsavel");
if (lista != null && !lista.isEmpty()) {
List listaQuantidadeSolicitacaoSolicitante = engine.listConvertion(RelatorioQuantitativoSolicitacaoDTO.class, lista, listRetorno);
return listaQuantidadeSolicitacaoSolicitante;
} else {
return null;
}
}
/* Seleciona o servico e a quantidade de servicos dentro das solicita��es por contrato */
public Collection<RelatorioQuantitativoSolicitacaoDTO> listaQuantidadeSolicitacaoPorServico(SolicitacaoServicoDTO solicitacaoServicoDto) throws Exception {
StringBuilder sql = new StringBuilder();
List parametro = new ArrayList();
List listRetorno = new ArrayList();
/*
* Desenvolvedor: Rodrigo Pecci - Data: 31/10/2013 - Hor�rio: 15h35min - ID Citsmart: 120770 Motivo/Coment�rio: Foi adicionado um join com o fluxo de trabalho e novas cl�usulas foram no where
* para garantir a consist�ncia do relat�rio.
*/
if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.SQLSERVER)) {
sql.append("select * from (SELECT nomeServico, tiposervico.nometiposervico, servicocontrato.idServico, count(servicocontrato.idServico) cont, ");
sql.append(" ROW_NUMBER() OVER(order by servicocontrato.idServico) as RowNum ");
} else {
sql.append("select * from (SELECT nomeServico, tiposervico.nometiposervico, servicocontrato.idServico, count(servicocontrato.idServico) cont ");
}
sql.append("FROM " + getTableName() + " solicitacaoservico ");
sql.append("INNER JOIN execucaosolicitacao es ON es.idsolicitacaoservico = solicitacaoservico.idsolicitacaoservico ");
sql.append("INNER JOIN servicocontrato ON solicitacaoservico.idservicocontrato = servicocontrato.idservicocontrato ");
sql.append("INNER JOIN servico ON servicocontrato.idservico = servico.idservico ");
sql.append("INNER JOIN tiposervico ON tiposervico.idtiposervico = servico.idtiposervico ");
sql.append("INNER JOIN contratos ON servicocontrato.idcontrato = contratos.idcontrato ");
if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.ORACLE)) {
sql.append("where to_char(solicitacaoservico.datahorasolicitacao, 'YYYY-MM-DD') BETWEEN ? AND ? ");
} else {
sql.append("where solicitacaoservico.datahorasolicitacao BETWEEN ? AND ? ");
}
/*
* Apenas registros de contratos n�o exclu�dos
*/
sql.append("and (upper(contratos.deleted) = 'N' or contratos.deleted is null) ");
if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.ORACLE)) {
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
parametro.add(formatter.format(solicitacaoServicoDto.getDataInicio()));
parametro.add(formatter.format(solicitacaoServicoDto.getDataFim()));
} else {
parametro.add(solicitacaoServicoDto.getDataInicio());
parametro.add(transformaHoraFinal(solicitacaoServicoDto.getDataFim()));
}
/*
* Desenvolvedor: Rodrigo Pecci - Data: 25/10/2013 - Hor�rio: 14h21min - ID Citsmart: 120770 Motivo/Coment�rio: Removida a condi��o que n�o exibia solicita��es com contrato de servi�os que
* foram deletados. Todos devem ser exibidos.
*/
if (solicitacaoServicoDto.getIdContrato() != null) {
sql.append("AND solicitacaoservico.idservicocontrato in (select servicocontrato.idservicocontrato from servicocontrato servicocontrato where servicocontrato.idcontrato = ?) ");
parametro.add(solicitacaoServicoDto.getIdContrato());
}
/*
* Desenvolvedor: Rodrigo Pecci - Data: 25/10/2013 - Hor�rio: 14h17min - ID Citsmart: 120770 Motivo/Coment�rio: Adicionado "AND solicitacaoservico.idtipodemandaservico is not null" para evitar
* retornar solicita��es de servi�o sem tipo demanda (inconsistentes)
*/
sql.append(" AND solicitacaoservico.idtipodemandaservico is not null ");
/*
* Desenvolvedor: Thiago Matias - Data: 29/10/2013 - Hor�rio: 11h00 - ID Citsmart: 122025 Motivo/Coment�rio: Adicionado
* "AND solicitacaoservico.situacao != 'EmAndamento' AND solicitacaoservico.situacao != 'Suspensa'" para n�o retornar solicita��es de servi�o em andamento ou suspensa
*/
sql.append(" AND solicitacaoservico.situacao in ('Fechada', 'Cancelada', 'Resolvida') ");
if (solicitacaoServicoDto.getNumeroRegistros() == null || solicitacaoServicoDto.getNumeroRegistros().equals("")) {
if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.SQLSERVER)) {
sql.append(" GROUP BY nomeServico, tiposervico.nometiposervico, servicocontrato.idServico ) as aux ORDER BY cont DESC");
} else {
sql.append(" GROUP BY nomeServico, tiposervico.nometiposervico, servicocontrato.idServico ORDER BY cont DESC) aux");
}
} else {
if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.ORACLE)) {
sql.append(" GROUP BY nomeServico, tiposervico.nometiposervico, servicocontrato.idServico ORDER BY cont DESC) aux where rownum <= " + solicitacaoServicoDto.getNumeroRegistros() + " ");
} else if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.SQLSERVER)) {
sql.append("GROUP BY nomeservico, servicocontrato.idServico,tiposervico.nometiposervico ) as solicitacaoservico where solicitacaoservico.RowNum BETWEEN 1 and "
+ solicitacaoServicoDto.getNumeroRegistros() + " ");
} else {
sql.append(" GROUP BY nomeservico, servicocontrato.idServico,tiposervico.nometiposervico ORDER BY cont DESC) aux LIMIT " + solicitacaoServicoDto.getNumeroRegistros() + " ");
}
}
List list = execSQL(sql.toString(), parametro.toArray());
listRetorno.add("nomeServico");
listRetorno.add("nometiposervico");
listRetorno.add("idServico");
listRetorno.add("quantidadeServico");
if (list != null && !list.isEmpty()) {
List listaQuantidadeSolicitacaoServico = this.listConvertion(RelatorioQuantitativoSolicitacaoDTO.class, list, listRetorno);
return listaQuantidadeSolicitacaoServico;
}
return null;
}
public Collection<RelatorioQuantitativoSolicitacaoDTO> listaQuantidadeSolicitacaoPorSituacao(SolicitacaoServicoDTO solicitacaoDto) throws Exception {
List listRetorno = new ArrayList();
List parametro = new ArrayList();
StringBuilder sql = new StringBuilder();
sql.append("select solicitacaoservico.situacao, count(*) from " + getTableName() + " solicitacaoservico ");
sql.append("INNER JOIN execucaosolicitacao es ON es.idsolicitacaoservico = solicitacaoservico.idsolicitacaoservico ");
sql.append("inner join servicocontrato servicocontrato on solicitacaoservico.idservicocontrato = servicocontrato.idservicocontrato ");
if ("usuarioVip".equals(solicitacaoDto.getTipoUsuario()) || "usuarioNormal".equals(solicitacaoDto.getTipoUsuario())) {
sql.append("INNER JOIN empregados empregados ");
sql.append(" ON empregados.idempregado = solicitacaoservico.idsolicitante ");
sql.append("INNER JOIN prioridadeservicounidade prioridadeservicounidade ");
sql.append(" ON prioridadeservicounidade.idservicocontrato = solicitacaoservico.idservicocontrato ");
sql.append(" AND prioridadeservicounidade.idunidade = empregados.idunidade ");
}
if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.ORACLE)) {
sql.append("where to_char(solicitacaoservico.datahorasolicitacao, 'YYYY-MM-DD') BETWEEN ? AND ? ");
} else {
sql.append("where solicitacaoservico.datahorasolicitacao BETWEEN ? AND ? ");
}
if ("usuarioVip".equals(solicitacaoDto.getTipoUsuario())) {
sql.append(" and prioridadeservicounidade.idprioridade = 1 ");
} else if ("usuarioNormal".equals(solicitacaoDto.getTipoUsuario())) {
sql.append(" and prioridadeservicounidade.idprioridade <> 1 ");
}
if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.ORACLE)) {
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
parametro.add(formatter.format(solicitacaoDto.getDataInicio()));
parametro.add(formatter.format(solicitacaoDto.getDataFim()));
} else {
parametro.add(solicitacaoDto.getDataInicio());
parametro.add(transformaHoraFinal(solicitacaoDto.getDataFim()));
}
/*
* Desenvolvedor: Rodrigo Pecci - Data: 25/10/2013 - Hor�rio: 14h21min - ID Citsmart: 120770 Motivo/Coment�rio: Removida a condi��o que n�o exibia solicita��es com contrato de servi�os que
* foram deletados. Todos devem ser exibidos.
*/
if (solicitacaoDto.getIdContrato() != null) {
sql.append("AND servicocontrato.idcontrato = ? ");
parametro.add(solicitacaoDto.getIdContrato());
}
/*
* Desenvolvedor: Rodrigo Pecci - Data: 25/10/2013 - Hor�rio: 14h17min - ID Citsmart: 120770 Motivo/Coment�rio: Adicionado "AND solicitacaoservico.idtipodemandaservico is not null" para evitar
* retornar solicita��es de servi�o sem tipo demanda (inconsistentes)
*/
sql.append(" AND solicitacaoservico.idtipodemandaservico is not null ");
sql.append(" group by solicitacaoservico.situacao");
List lista = new ArrayList();
lista = this.execSQL(sql.toString(), parametro.toArray());
listRetorno.add("situacao");
listRetorno.add("quantidadeSituacao");
if (lista != null && !lista.isEmpty()) {
List listaQuantidadeSolicitacaoPorSituacao = engine.listConvertion(RelatorioQuantitativoSolicitacaoDTO.class, lista, listRetorno);
return listaQuantidadeSolicitacaoPorSituacao;
} else {
return null;
}
}
public List<RelatorioQuantitativoSolicitacaoDTO> listaQuantidadeSolicitacaoPorSituacaoSLA(SolicitacaoServicoDTO solicitacaoDto) throws Exception {
List listRetorno = new ArrayList();
List listaQuantidadeSolicitacaoPorPrioridade = new ArrayList();
List parametro = new ArrayList();
// String dataInicio = solicitacaoDto.getDataInicio().toString();
// String dataFim = (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.ORACLE) ? solicitacaoDto.getDataFim() : transformaHoraFinal(solicitacaoDto.getDataFim())).toString();
StringBuilder from_where = new StringBuilder();
from_where.append("FROM " + getTableName() + " solicitacaoservico ");
from_where.append("INNER JOIN execucaosolicitacao exs ON exs.idsolicitacaoservico = solicitacaoservico.idsolicitacaoservico ");
if (solicitacaoDto.getIdContrato() != null) {
from_where.append("INNER JOIN servicocontrato servicocontrato ON solicitacaoservico.idservicocontrato = servicocontrato.idservicocontrato ");
}
if ("usuarioVip".equals(solicitacaoDto.getTipoUsuario()) || "usuarioNormal".equals(solicitacaoDto.getTipoUsuario())) {
from_where.append("INNER JOIN empregados empregados ");
from_where.append(" ON empregados.idempregado = solicitacaoservico.idsolicitante ");
from_where.append("INNER JOIN prioridadeservicounidade prioridadeservicounidade ");
from_where.append(" ON prioridadeservicounidade.idservicocontrato = solicitacaoservico.idservicocontrato ");
from_where.append(" AND prioridadeservicounidade.idunidade = empregados.idunidade ");
}
if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.ORACLE)) {
from_where.append("where to_char(solicitacaoservico.datahorasolicitacao, 'YYYY-MM-DD') BETWEEN ? AND ? ");
} else {
from_where.append("where solicitacaoservico.datahorasolicitacao BETWEEN ? AND ? ");
}
if ("usuarioVip".equals(solicitacaoDto.getTipoUsuario())) {
from_where.append("AND prioridadeservicounidade.idprioridade = 1 ");
} else if ("usuarioNormal".equals(solicitacaoDto.getTipoUsuario())) {
from_where.append("AND prioridadeservicounidade.idprioridade <> 1 ");
}
/*
* Desenvolvedor: Rodrigo Pecci - Data: 25/10/2013 - Hor�rio: 14h21min - ID Citsmart: 120770 Motivo/Coment�rio: Removida a condi��o que n�o exibia solicita��es com contrato de servi�os que
* foram deletados. Todos devem ser exibidos.
*/
if (solicitacaoDto.getIdContrato() != null) {
from_where.append("AND servicocontrato.idcontrato = " + solicitacaoDto.getIdContrato() + " ");
}
if (solicitacaoDto.getSituacao() != null && !solicitacaoDto.getSituacao().isEmpty()) {
from_where.append("AND solicitacaoservico.situacao LIKE '" + solicitacaoDto.getSituacao() + "' ");
}
/*
* Desenvolvedor: Rodrigo Pecci - Data: 25/10/2013 - Hor�rio: 14h17min - ID Citsmart: 120770 Motivo/Coment�rio: Adicionado "AND solicitacaoservico.idtipodemandaservico is not null" para evitar
* retornar solicita��es de servi�o sem tipo demanda (inconsistentes)
*/
from_where.append(" AND solicitacaoservico.idtipodemandaservico is not null ");
StringBuilder sql = new StringBuilder();
// quantidade de solcitacoes ATRASADAS
sql.append("SELECT Count(*), 'a' ");
sql.append(from_where);
sql.append(" AND CASE ");
sql.append(" WHEN solicitacaoservico.datahorafim IS NOT NULL THEN solicitacaoservico.datahorafim ");
sql.append(" ELSE CURRENT_TIMESTAMP ");
sql.append(" END > solicitacaoservico.datahoralimite ");
sql.append("UNION ");
// quantidade de solcitacoes DENTRO DO PRAZO
sql.append("SELECT Count(*), 'b' ");
sql.append(from_where);
sql.append(" AND CASE ");
sql.append(" WHEN solicitacaoservico.datahorafim IS NOT NULL THEN solicitacaoservico.datahorafim ");
sql.append(" ELSE CURRENT_TIMESTAMP ");
sql.append(" END <= solicitacaoservico.datahoralimite ");
if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.ORACLE)) {
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
parametro.add(formatter.format(solicitacaoDto.getDataInicio()));
parametro.add(formatter.format(solicitacaoDto.getDataFim()));
parametro.add(formatter.format(solicitacaoDto.getDataInicio()));
parametro.add(formatter.format(solicitacaoDto.getDataFim()));
} else {
parametro.add(solicitacaoDto.getDataInicio());
parametro.add(transformaHoraFinal(solicitacaoDto.getDataFim()));
parametro.add(solicitacaoDto.getDataInicio());
parametro.add(transformaHoraFinal(solicitacaoDto.getDataFim()));
}
List lista = new ArrayList();
lista = this.execSQL(sql.toString(), parametro.toArray());
// List lista = this.execSQL(sql.toString(), null);
listRetorno.add("quantidadeSituacaoSLA");
if (lista != null && !lista.isEmpty()) {
listaQuantidadeSolicitacaoPorPrioridade = engine.listConvertion(RelatorioQuantitativoSolicitacaoDTO.class, lista, listRetorno);
}
return listaQuantidadeSolicitacaoPorPrioridade;
}
public Collection<RelatorioQuantitativoSolicitacaoDTO> listaQuantidadeSolicitacaoPorSolicitante(SolicitacaoServicoDTO solicitacaoDto) throws Exception {
List listRetorno = new ArrayList();
List parametro = new ArrayList();
StringBuilder sql = new StringBuilder();
sql.append("select ltrim(empregado.nome), count(*) from solicitacaoservico solicitacaoservico ");
sql.append("inner join empregados empregado on solicitacaoservico.idsolicitante = empregado.idempregado ");
/*
* if (solicitacaoDto.getIdContrato() != null) { sql.append("inner join servicocontrato servicocontrato on solicitacaoservico.idservicocontrato = servicocontrato.idservicocontrato "); }
*/
sql.append("INNER JOIN execucaosolicitacao es ON es.idsolicitacaoservico = solicitacaoservico.idsolicitacaoservico ");
sql.append("inner join servicocontrato servicocontrato on solicitacaoservico.idservicocontrato = servicocontrato.idservicocontrato ");
if ("usuarioVip".equals(solicitacaoDto.getTipoUsuario()) || "usuarioNormal".equals(solicitacaoDto.getTipoUsuario())) {
sql.append("INNER JOIN empregados empregados ");
sql.append(" ON empregados.idempregado = solicitacaoservico.idsolicitante ");
sql.append("INNER JOIN prioridadeservicounidade prioridadeservicounidade ");
sql.append(" ON prioridadeservicounidade.idservicocontrato = solicitacaoservico.idservicocontrato ");
sql.append(" AND prioridadeservicounidade.idunidade = empregados.idunidade ");
}
if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.ORACLE)) {
sql.append("where solicitacaoservico.idsolicitante = empregado.idempregado AND to_char(solicitacaoservico.datahorasolicitacao, 'YYYY-MM-DD') BETWEEN ? AND ? ");
} else if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.SQLSERVER)) {
sql.append("where solicitacaoservico.idsolicitante = empregado.idempregado AND solicitacaoservico.datahorasolicitacao BETWEEN ? AND ? ");
} else {
sql.append("where solicitacaoservico.idsolicitante = empregado.idempregado AND solicitacaoservico.datahorasolicitacao BETWEEN ? AND ? ");
}
if ("usuarioVip".equals(solicitacaoDto.getTipoUsuario())) {
sql.append(" and prioridadeservicounidade.idprioridade = 1 ");
} else if ("usuarioNormal".equals(solicitacaoDto.getTipoUsuario())) {
sql.append(" and prioridadeservicounidade.idprioridade <> 1 ");
}
if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.ORACLE)) {
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
parametro.add(formatter.format(solicitacaoDto.getDataInicio()));
parametro.add(formatter.format(solicitacaoDto.getDataFim()));
} else {
parametro.add(solicitacaoDto.getDataInicio());
parametro.add(transformaHoraFinal(solicitacaoDto.getDataFim()));
}
/*
* Desenvolvedor: Rodrigo Pecci - Data: 25/10/2013 - Hor�rio: 14h21min - ID Citsmart: 120770 Motivo/Coment�rio: Removida a condi��o que n�o exibia solicita��es com contrato de servi�os que
* foram deletados. Todos devem ser exibidos.
*/
if (solicitacaoDto.getIdContrato() != null) {
sql.append("AND servicocontrato.idcontrato = ? ");
parametro.add(solicitacaoDto.getIdContrato());
}
if (solicitacaoDto.getSituacao() != null && !solicitacaoDto.getSituacao().isEmpty()) {
sql.append("AND solicitacaoservico.situacao = ? ");
parametro.add(solicitacaoDto.getSituacao());
}
/*
* Desenvolvedor: Rodrigo Pecci - Data: 25/10/2013 - Hor�rio: 14h17min - ID Citsmart: 120770 Motivo/Coment�rio: Adicionado "AND solicitacaoservico.idtipodemandaservico is not null" para evitar
* retornar solicita��es de servi�o sem tipo demanda (inconsistentes)
*/
sql.append(" AND solicitacaoservico.idtipodemandaservico is not null ");
sql.append(" group by empregado.nome order by ltrim(empregado.nome) ");
List lista = new ArrayList();
lista = this.execSQL(sql.toString(), parametro.toArray());
listRetorno.add("solicitante");
listRetorno.add("quantidadeSolicitante");
if (lista != null && !lista.isEmpty()) {
List listaQuantidadeSolicitacaoSolicitante = engine.listConvertion(RelatorioQuantitativoSolicitacaoDTO.class, lista, listRetorno);
return listaQuantidadeSolicitacaoSolicitante;
} else {
return null;
}
}
public Collection<RelatorioQuantitativoSolicitacaoDTO> listaQuantidadeSolicitacaoPorTipo(SolicitacaoServicoDTO solicitacaoDto) throws Exception {
List listRetorno = new ArrayList();
List parametro = new ArrayList();
StringBuilder sql = new StringBuilder();
sql.append("select tipodemandaservico.nometipodemandaservico, count(*) from " + getTableName() + " solicitacaoservico ");
// if (solicitacaoDto.getIdContrato() != null) {
sql.append("INNER JOIN execucaosolicitacao es ON es.idsolicitacaoservico = solicitacaoservico.idsolicitacaoservico ");
sql.append("inner join servicocontrato servicocontrato on solicitacaoservico.idservicocontrato = servicocontrato.idservicocontrato ");
// }
sql.append("inner join tipodemandaservico tipodemandaservico on solicitacaoservico.idtipodemandaservico = tipodemandaservico.idtipodemandaservico ");
if ("usuarioVip".equals(solicitacaoDto.getTipoUsuario()) || "usuarioNormal".equals(solicitacaoDto.getTipoUsuario())) {
sql.append("INNER JOIN empregados empregados ");
sql.append(" ON empregados.idempregado = solicitacaoservico.idsolicitante ");
sql.append("INNER JOIN prioridadeservicounidade prioridadeservicounidade ");
sql.append(" ON prioridadeservicounidade.idservicocontrato = solicitacaoservico.idservicocontrato ");
sql.append(" AND prioridadeservicounidade.idunidade = empregados.idunidade ");
}
if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.ORACLE)) {
sql.append("where to_char(solicitacaoservico.datahorasolicitacao, 'YYYY-MM-DD') BETWEEN ? AND ? ");
} else if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.SQLSERVER)) {
sql.append("where solicitacaoservico.datahorasolicitacao BETWEEN ? AND ? ");
} else {
sql.append("where solicitacaoservico.datahorasolicitacao BETWEEN ? AND ? ");
}
if ("usuarioVip".equals(solicitacaoDto.getTipoUsuario())) {
sql.append(" and prioridadeservicounidade.idprioridade = 1 ");
} else if ("usuarioNormal".equals(solicitacaoDto.getTipoUsuario())) {
sql.append(" and prioridadeservicounidade.idprioridade <> 1 ");
}
if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.ORACLE)) {
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
parametro.add(formatter.format(solicitacaoDto.getDataInicio()));
parametro.add(formatter.format(solicitacaoDto.getDataFim()));
} else {
parametro.add(solicitacaoDto.getDataInicio());
parametro.add(transformaHoraFinal(solicitacaoDto.getDataFim()));
}
/*
* Desenvolvedor: Rodrigo Pecci - Data: 25/10/2013 - Hor�rio: 14h21min - ID Citsmart: 120770 Motivo/Coment�rio: Removida a condi��o que n�o exibia solicita��es com contrato de servi�os que
* foram deletados. Todos devem ser exibidos.
*/
if (solicitacaoDto.getIdContrato() != null) {
sql.append("AND servicocontrato.idcontrato = ? ");
parametro.add(solicitacaoDto.getIdContrato());
}
if (solicitacaoDto.getSituacao() != null && !solicitacaoDto.getSituacao().isEmpty()) {
sql.append("AND solicitacaoservico.situacao = ? ");
parametro.add(solicitacaoDto.getSituacao());
}
sql.append(" group by tipodemandaservico.nometipodemandaservico");
List lista = new ArrayList();
lista = this.execSQL(sql.toString(), parametro.toArray());
listRetorno.add("tipo");
listRetorno.add("quantidadeTipo");
if (lista != null && !lista.isEmpty()) {
List listaQuantidadeSolicitacaoPorTipo = engine.listConvertion(RelatorioQuantitativoSolicitacaoDTO.class, lista, listRetorno);
return listaQuantidadeSolicitacaoPorTipo;
} else {
return null;
}
}
public Collection<RelatorioQuantitativoSolicitacaoDTO> listaQuantidadeSolicitacaoPorTipoServico(SolicitacaoServicoDTO solicitacaoDto) throws Exception {
List listRetorno = new ArrayList();
List parametro = new ArrayList();
StringBuilder sql = new StringBuilder();
sql.append("select tiposervico.nometiposervico, count(*) from " + getTableName() + " solicitacaoservico ");
sql.append("INNER JOIN execucaosolicitacao es ON es.idsolicitacaoservico = solicitacaoservico.idsolicitacaoservico ");
sql.append("inner join servicocontrato servicocontrato on solicitacaoservico.idservicocontrato = servicocontrato.idservicocontrato ");
sql.append("inner join servico servico on servico.idservico = servicocontrato.idservico ");
sql.append("inner join tiposervico tiposervico on tiposervico.idtiposervico = servico.idtiposervico ");
if ("usuarioVip".equals(solicitacaoDto.getTipoUsuario()) || "usuarioNormal".equals(solicitacaoDto.getTipoUsuario())) {
sql.append("left join prioridadeservicounidade prioridadeservicounidade on prioridadeservicounidade.idservicocontrato = solicitacaoservico.idservicocontrato ");
}
if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.ORACLE)) {
sql.append("where to_char(solicitacaoservico.datahorasolicitacao, 'YYYY-MM-DD') BETWEEN ? AND ? ");
} else {
sql.append("where solicitacaoservico.datahorasolicitacao BETWEEN ? AND ? ");
}
if ("usuarioVip".equals(solicitacaoDto.getTipoUsuario())) {
sql.append(" and prioridadeservicounidade.idprioridade = 1 ");
} else if ("usuarioNormal".equals(solicitacaoDto.getTipoUsuario())) {
sql.append(" and prioridadeservicounidade.idprioridade <> 1 ");
}
if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.ORACLE)) {
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
parametro.add(formatter.format(solicitacaoDto.getDataInicio()));
parametro.add(formatter.format(solicitacaoDto.getDataFim()));
} else {
parametro.add(solicitacaoDto.getDataInicio());
parametro.add(transformaHoraFinal(solicitacaoDto.getDataFim()));
}
/*
* Desenvolvedor: Rodrigo Pecci - Data: 25/10/2013 - Hor�rio: 14h21min - ID Citsmart: 120770 Motivo/Coment�rio: Removida a condi��o que n�o exibia solicita��es com contrato de servi�os que
* foram deletados. Todos devem ser exibidos.
*/
if (solicitacaoDto.getIdContrato() != null) {
sql.append("AND servicocontrato.idcontrato = ? ");
parametro.add(solicitacaoDto.getIdContrato());
}
if (solicitacaoDto.getSituacao() != null && !solicitacaoDto.getSituacao().isEmpty()) {
sql.append("AND solicitacaoservico.situacao = ? ");
parametro.add(solicitacaoDto.getSituacao());
}
/*
* Desenvolvedor: Rodrigo Pecci - Data: 25/10/2013 - Hor�rio: 14h17min - ID Citsmart: 120770 Motivo/Coment�rio: Adicionado "AND solicitacaoservico.idtipodemandaservico is not null" para evitar
* retornar solicita��es de servi�o sem tipo demanda (inconsistentes)
*/
sql.append(" AND solicitacaoservico.idtipodemandaservico is not null ");
sql.append(" group by tiposervico.nometiposervico");
List lista = new ArrayList();
lista = this.execSQL(sql.toString(), parametro.toArray());
listRetorno.add("tipoServico");
listRetorno.add("quantidadeTipoServico");
if (lista != null && !lista.isEmpty()) {
List listaQuantidadeSolicitacaoPorPrioridade = engine.listConvertion(RelatorioQuantitativoSolicitacaoDTO.class, lista, listRetorno);
return listaQuantidadeSolicitacaoPorPrioridade;
} else {
return null;
}
}
public Collection<SolicitacaoServicoDTO> listarSLA() throws Exception {
StringBuilder sql = new StringBuilder();
sql.append("select distinct prazohh, prazomm from solicitacaoservico order by prazohh,prazomm");
List lista = this.execSQL(sql.toString(), null);
List<String> listRetorno = new ArrayList<String>();
listRetorno.add("prazoHH");
listRetorno.add("prazoMM");
List result = engine.listConvertion(SolicitacaoServicoDTO.class, lista, listRetorno);
if (result != null) {
return result;
} else {
return null;
}
}
public Collection<SolicitacaoServicoDTO> listarSolicitacoesAbertasEmAndamentoPorGrupo(int idGrupoAtual, String situacaoSla) throws Exception {
List parametro = new ArrayList();
List listRetorno = new ArrayList();
List list = new ArrayList();
StringBuilder sql = new StringBuilder();
sql.append("SELECT * from solicitacaoservico ss,tipodemandaservico td where situacao LIKE 'EmAndamento' AND ss.datahorafim IS NULL AND ss.idgrupoatual = ? AND situacaosla LIKE ? AND td.classificacao LIKE 'R'");
parametro.add(idGrupoAtual);
parametro.add(situacaoSla);
list = this.execSQL(sql.toString(), parametro.toArray());
listRetorno.add("idSolicitacaoServico");
if (list != null && !list.isEmpty()) {
return this.listConvertion(getBean(), list, listRetorno);
} else {
return null;
}
}
public Collection<SolicitacaoServicoDTO> listarSolicitacoesMultadasSuspensasPorGrupo(int idGrupoAtual, String situacaoSla) throws Exception {
List parametro = new ArrayList();
List listRetorno = new ArrayList();
List list = new ArrayList();
StringBuilder sql = new StringBuilder();
sql.append("SELECT * from solicitacaoservico ss,tipodemandaservico td where situacao like 'Suspensa' and ss.datahorafim is null and ss.idgrupoatual = ? and td.classificacao LIKE 'R' and situacaosla LIKE ?");
parametro.add(idGrupoAtual);
parametro.add(situacaoSla);
list = this.execSQL(sql.toString(), parametro.toArray());
listRetorno.add("idSolicitacaoServico");
if (list != null && !list.isEmpty()) {
return this.listConvertion(getBean(), list, listRetorno);
} else {
return null;
}
}
public String listaServico(int idsolicitacaoservico) throws Exception {
List parametro = new ArrayList();
String sql = "SELECT s.nomeservico FROM solicitacaoservico ss, servicocontrato sc, servico s "
+ "where ss.idservicocontrato = sc.idservicocontrato and sc.idservico = s.idservico and ss.idsolicitacaoservico = ?";
parametro.add(idsolicitacaoservico);
List resultado = this.execSQL(sql.toString(), parametro.toArray());
List<String> listRetorno = new ArrayList<String>();
listRetorno.add("servico");
List result = engine.listConvertion(SolicitacaoServicoDTO.class, resultado, listRetorno);
SolicitacaoServicoDTO solicitacaoServicoDTO = (SolicitacaoServicoDTO) result.get(0);
String servico = solicitacaoServicoDTO.getServico();
return servico;
}
/**
* Retorna uma lista de Servi�os que estejam associada a uma solicita��o servi�o.
*
* @param relatorioAnaliseServicoDto
* @return Collection<RelatorioAnaliseServicoDTO>
* @throws Exception
* @author thays.araujo
*/
public Collection<RelatorioQuantitativoSolicitacaoProblemaPorServicoDTO> listaServicoPorSolicitacaoServico(RelatorioQuantitativoSolicitacaoProblemaPorServicoDTO relatorioAnaliseServicoDto)
throws Exception {
List parametro = new ArrayList();
StringBuilder sql = new StringBuilder();
sql.append("select servicocontrato.idServico from solicitacaoservico solicitacaoservico ");
sql.append("INNER JOIN servicocontrato ON solicitacaoservico.idservicocontrato = servicocontrato.idservicocontrato ");
sql.append("INNER JOIN servico ON servicocontrato.idservico = servico.idservico ");
sql.append("INNER JOIN contratos ON servicocontrato.idcontrato = contratos.idcontrato ");
if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.ORACLE)) {
sql.append("where to_char(solicitacaoservico.datahorasolicitacao, 'YYYY-MM-DD') BETWEEN ? AND ? ");
} else {
sql.append("where solicitacaoservico.datahorasolicitacao BETWEEN ? AND ? ");
}
if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.ORACLE)) {
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
parametro.add(formatter.format(relatorioAnaliseServicoDto.getDataInicio()));
parametro.add(formatter.format(relatorioAnaliseServicoDto.getDataFim()));
} else {
parametro.add(relatorioAnaliseServicoDto.getDataInicio());
parametro.add(transformaHoraFinal(relatorioAnaliseServicoDto.getDataFim()));
}
if (relatorioAnaliseServicoDto.getIdContrato() != null) {
sql.append(" and contratos.idcontrato = ? ");
parametro.add(relatorioAnaliseServicoDto.getIdContrato());
}
sql.append("group by servicocontrato.idServico ");
List lista = this.execSQL(sql.toString(), parametro.toArray());
List<String> listRetorno = new ArrayList<String>();
listRetorno.add("idServico");
if (lista != null && !lista.isEmpty()) {
Collection<RelatorioQuantitativoSolicitacaoProblemaPorServicoDTO> listaServicoPorSolicitacaoServico = new ArrayList<RelatorioQuantitativoSolicitacaoProblemaPorServicoDTO>();
listaServicoPorSolicitacaoServico = engine.listConvertion(RelatorioQuantitativoSolicitacaoProblemaPorServicoDTO.class, lista, listRetorno);
return listaServicoPorSolicitacaoServico;
} else {
return null;
}
}
public Collection<RelatorioQuantitativoSolicitacaoDTO> listaServicosAbertosAprovados(SolicitacaoServicoDTO solicitacaoServicoDto) throws Exception {
StringBuilder sql = new StringBuilder();
List parametro = new ArrayList();
List listRetorno = new ArrayList();
/**
* Checa se h� limite para pesquisa
* @author thyen.chang
*/
boolean seLimita = !solicitacaoServicoDto.getTopList().equals(0);
/**
* Limita pesquisa no SQLServer
* @author thyen.chang
*/
sql.append("select ");
if ((seLimita)&&(CITCorporeUtil.SGBD_PRINCIPAL.trim().toUpperCase().equalsIgnoreCase(SQLConfig.SQLSERVER))){
sql.append("TOP "+solicitacaoServicoDto.getTopList().toString()+" ");
}
sql.append("solicitacaoservico.idsolicitacaoservico, servico.nomeservico,empregados.nome,solicitacaoservico.datahorasolicitacao, solicitacaoservico.situacao, contratos.numero ");
sql.append(" from solicitacaoservico ");
sql.append(" inner join servicocontrato ");
sql.append(" on solicitacaoservico.idservicocontrato = servicocontrato.idservicocontrato ");
sql.append(" inner join servico ");
sql.append(" on servicocontrato.idservico = servico.idservico ");
sql.append(" inner join contratos ");
sql.append(" on contratos.idcontrato = servicocontrato.idcontrato ");
sql.append(" and (upper(contratos.deleted) = 'N' or contratos.deleted is null) ");
sql.append(" inner join empregados ");
sql.append(" on solicitacaoservico.idsolicitante = empregados.idempregado ");
/*
* Aprovado
*/
if (solicitacaoServicoDto.getSituacaoAprovacao().equals("1")) {
sql.append("INNER JOIN aprovacaosolicitacaoservico aprovacaosolicitacaoservico ");
sql.append("ON aprovacaosolicitacaoservico.idaprovacaosolicitacaoservico = solicitacaoservico.idultimaaprovacao ");
sql.append("WHERE ");
/**
* Limita pesquisa no Oracle
* @author thyen.chang
*/
if ((seLimita)&&(CITCorporeUtil.SGBD_PRINCIPAL.trim().toUpperCase().equalsIgnoreCase(SQLConfig.ORACLE))){
sql.append(" ROWNUM <= ? AND ");
parametro.add(solicitacaoServicoDto.getTopList());
}
sql.append("aprovacaosolicitacaoservico.aprovacao = 'A' ");
}
/*
* Reprovado
*/
if (solicitacaoServicoDto.getSituacaoAprovacao().equals("2")) {
sql.append("INNER JOIN execucaosolicitacao execucaosolicitacao ");
sql.append("ON execucaosolicitacao.idsolicitacaoservico = solicitacaoservico.idsolicitacaoservico ");
sql.append("INNER JOIN bpm_itemtrabalhofluxo bpm_itemtrabalhofluxo ");
sql.append("ON bpm_itemtrabalhofluxo.idinstancia = execucaosolicitacao.idinstanciafluxo ");
sql.append("INNER JOIN bpm_elementofluxo bpm_elementofluxo ");
sql.append("ON bpm_elementofluxo.idelemento = bpm_itemtrabalhofluxo.idelemento ");
sql.append("WHERE ");
/**
* Limita pesquisa no Oracle
* @author thyen.chang
*/
if ((seLimita)&&(CITCorporeUtil.SGBD_PRINCIPAL.trim().toUpperCase().equalsIgnoreCase(SQLConfig.ORACLE))){
sql.append(" ROWNUM <= ? AND ");
parametro.add(solicitacaoServicoDto.getTopList());
}
sql.append("bpm_elementofluxo.documentacao like 'Aprovar solicita��o' ");
sql.append("AND bpm_itemtrabalhofluxo.situacao NOT IN ( 'Executado', 'Cancelado' ) ");
}
if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.ORACLE)) {
sql.append("and to_char(solicitacaoservico.datahorasolicitacao, 'YYYY-MM-DD') BETWEEN ? AND ? ");
} else {
sql.append("and solicitacaoservico.datahorasolicitacao BETWEEN ? AND ? ");
}
if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.ORACLE)) {
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
parametro.add(formatter.format(solicitacaoServicoDto.getDataInicio()));
parametro.add(formatter.format(solicitacaoServicoDto.getDataFim()));
} else {
parametro.add(solicitacaoServicoDto.getDataInicio());
parametro.add(transformaHoraFinal(solicitacaoServicoDto.getDataFim()));
}
if (solicitacaoServicoDto.getIdContrato() != null) {
sql.append("AND solicitacaoservico.idservicocontrato in (select servicocontrato.idservicocontrato from servicocontrato servicocontrato where servicocontrato.idcontrato = ?) ");
parametro.add(solicitacaoServicoDto.getIdContrato());
}
sql.append("ORDER BY solicitacaoservico.idsolicitacaoservico");
/**
* Limita pesquisa no Postgres e MySQL
* @author thyen.chang]
*/
if((seLimita) && ((CITCorporeUtil.SGBD_PRINCIPAL.trim().toUpperCase().equalsIgnoreCase(SQLConfig.POSTGRESQL))||(CITCorporeUtil.SGBD_PRINCIPAL.trim().toUpperCase().equalsIgnoreCase(SQLConfig.MYSQL))) ){
sql.append(" LIMIT ? ");
parametro.add(solicitacaoServicoDto.getTopList());
}
List list = execSQL(sql.toString(), parametro.toArray());
listRetorno.add("idSolicitacaoServico");
listRetorno.add("nomeServico");
listRetorno.add("nome");
listRetorno.add("dataHoraSolicitacao");
listRetorno.add("situacao");
listRetorno.add("numero");
if (list != null && !list.isEmpty()) {
List listaQuantidadeSolicitacaoServico = this.listConvertion(RelatorioQuantitativoSolicitacaoDTO.class, list, listRetorno);
return listaQuantidadeSolicitacaoServico;
}
return null;
}
public Collection<SolicitacaoServicoDTO> listaServicosPorResponsavelNoPeriodo(RelatorioKpiProdutividadeDTO dto) throws Exception {
List parametro = new ArrayList();
List listRetorno = new ArrayList();
List list = new ArrayList();
StringBuilder sql = new StringBuilder();
sql.append("SELECT solicitacaoservico.idsolicitacaoservico, solicitacaoservico.datahorainicio, solicitacaoservico.datahoralimite, solicitacaoservico.dataHoraFim,solicitacaoservico.prazohh, solicitacaoservico.prazomm ,solicitacaoservico.idtipodemandaservico, servico.nomeServico, servico.idservico ");
sql.append("FROM solicitacaoservico " + "INNER JOIN servicocontrato ON servicocontrato.idservicocontrato = solicitacaoservico.idservicocontrato "
+ "INNER JOIN servico ON servicocontrato.idservico = servico.idservico "
+ "INNER JOIN execucaosolicitacao ON execucaosolicitacao.idsolicitacaoservico = solicitacaoservico.idsolicitacaoservico "
+ "INNER JOIN bpm_itemtrabalhofluxo ON execucaosolicitacao.idinstanciafluxo = bpm_itemtrabalhofluxo.idinstancia " + "WHERE " + "bpm_itemtrabalhofluxo.idresponsavelatual = ? "
+ "AND solicitacaoservico.datahorainicio BETWEEN ? AND ? ");
parametro.add(Integer.valueOf(dto.getFuncionario()));
parametro.add(dto.getDataInicio());
parametro.add(dto.getDataFim());
if (dto.getCheckMostrarIncidentes() != null && dto.getCheckMostrarRequisicoes() == null) {
sql.append("and solicitacaoservico.idtipodemandaservico = ? ;");
parametro.add(2);
} else if (dto.getCheckMostrarIncidentes() == null && dto.getCheckMostrarRequisicoes() != null) {
sql.append("and solicitacaoservico.idtipodemandaservico = ? ;");
parametro.add(1);
} else {
sql.append(";");
}
list = this.execSQL(sql.toString(), parametro.toArray());
listRetorno.add("idSolicitacaoServico");
listRetorno.add("dataHoraInicio");
listRetorno.add("dataHoraLimite");
listRetorno.add("dataHoraFim");
listRetorno.add("prazoHH");
listRetorno.add("prazoMM");
listRetorno.add("idTipoDemandaServico");
listRetorno.add("nomeServico");
listRetorno.add("idServico");
if (list != null && !list.isEmpty()) {
return this.listConvertion(getBean(), list, listRetorno);
} else {
return null;
}
}
public Collection<SolicitacaoServicoDTO> listaServicosPorAbertosParaDocumentacao(Date dataIncio, Date dataFim, boolean mostrarIncidentes, boolean mostrarRequisicoes) throws Exception {
List parametro = new ArrayList();
List listRetorno = new ArrayList();
List list = new ArrayList();
StringBuilder sql = new StringBuilder();
sql.append("SELECT DISTINCT solicitacaoservico.idsolicitacaoservico, solicitacaoservico.datahorainicio, solicitacaoservico.datahoralimite, solicitacaoservico.dataHoraFim,solicitacaoservico.prazohh, solicitacaoservico.prazomm ,solicitacaoservico.idtipodemandaservico, servico.nomeServico, servico.idservico, solicitacaoservico.situacao ");
sql.append("FROM solicitacaoservico solicitacaoservico"
+ " INNER JOIN servicocontrato ON servicocontrato.idservicocontrato = solicitacaoservico.idservicocontrato "
+ "Inner JOIN tipodemandaservico ON tipodemandaservico.idtipodemandaservico = solicitacaoservico.idtipodemandaservico "
+ " INNER JOIN execucaosolicitacao ON execucaosolicitacao.idsolicitacaoservico = solicitacaoservico.idsolicitacaoservico INNER JOIN bpm_itemtrabalhofluxo ON execucaosolicitacao.idinstanciafluxo = bpm_itemtrabalhofluxo.idinstancia "
+ " INNER JOIN servico ON servicocontrato.idservico = servico.idservico WHERE "
+ " (servico.nomeServico like 'Fabrica.Sistemas.Documentacao.Manutencao.Corretiva' or servico.nomeServico LIKE 'Fabrica.Sistemas.Documentacao.Manutencao.Evolutiva') "
+ " AND solicitacaoservico.datahorainicio BETWEEN ? AND ? ");
parametro.add(dataIncio);
Timestamp dtfim = this.transformaHoraFinal(dataFim);
parametro.add(dtfim);
if (mostrarIncidentes == true && mostrarRequisicoes == false) {
sql.append(" and tipodemandaservico.classificacao like ? ");
parametro.add("I");
} else if (mostrarIncidentes == false && mostrarRequisicoes == true) {
sql.append(" and tipodemandaservico.classificacao like ? ");
parametro.add("R");
} else if (mostrarIncidentes == true && mostrarRequisicoes == true) {
sql.append(" And (tipodemandaservico.classificacao like ? or tipodemandaservico.classificacao like ? ) ");
parametro.add("I");
parametro.add("R");
}
list = this.execSQL(sql.toString(), parametro.toArray());
listRetorno.add("idSolicitacaoServico");
listRetorno.add("dataHoraInicio");
listRetorno.add("dataHoraLimite");
listRetorno.add("dataHoraFim");
listRetorno.add("prazoHH");
listRetorno.add("prazoMM");
listRetorno.add("idTipoDemandaServico");
listRetorno.add("nomeServico");
listRetorno.add("idServico");
listRetorno.add("situacao");
if (list != null && !list.isEmpty()) {
return this.listConvertion(getBean(), list, listRetorno);
} else {
return null;
}
}
public Collection<SolicitacaoServicoDTO> listaServicosPorAbertosPelotesteParaValidacao(Date dataIncio, Date dataFim, boolean mostrarIncidentes, boolean mostrarRequisicoes) throws Exception {
List parametro = new ArrayList();
List listRetorno = new ArrayList();
List list = new ArrayList();
StringBuilder sql = new StringBuilder();
sql.append("SELECT DISTINCT solicitacaoservico.idsolicitacaoservico, solicitacaoservico.datahorainicio, solicitacaoservico.datahoralimite, solicitacaoservico.dataHoraFim,solicitacaoservico.prazohh,"
+ " solicitacaoservico.prazomm ,solicitacaoservico.idtipodemandaservico, servico.nomeServico, servico.idservico, solicitacaoservico.situacao,solicitacaoservico.idsolicitante ");
sql.append(" FROM solicitacaoservico solicitacaoservico"
+ " INNER JOIN servicocontrato ON servicocontrato.idservicocontrato = solicitacaoservico.idservicocontrato "
+ "Inner JOIN tipodemandaservico ON tipodemandaservico.idtipodemandaservico = solicitacaoservico.idtipodemandaservico "
+ " INNER JOIN execucaosolicitacao ON execucaosolicitacao.idsolicitacaoservico = solicitacaoservico.idsolicitacaoservico INNER JOIN bpm_itemtrabalhofluxo ON execucaosolicitacao.idinstanciafluxo = bpm_itemtrabalhofluxo.idinstancia "
+ " INNER JOIN servico ON servicocontrato.idservico = servico.idservico WHERE (servico.nomeServico LIKE '"
+ ParametroUtil.getValorParametroCitSmartHashMap(ParametroSistema.SERVICO_TIPO_REQUISICAO_TESTE, "Homolocacao.Release.Evolutiva.Aplicativo") + "') "
+ " AND solicitacaoservico.datahorainicio BETWEEN ? AND ? ");
parametro.add(dataIncio);
Timestamp dtfim = this.transformaHoraFinal(dataFim);
parametro.add(dtfim);
if (mostrarIncidentes == true && mostrarRequisicoes == false) {
sql.append(" and tipodemandaservico.classificacao like ? ");
parametro.add("I");
} else if (mostrarIncidentes == false && mostrarRequisicoes == true) {
sql.append(" and tipodemandaservico.classificacao like ? ");
parametro.add("R");
} else if (mostrarIncidentes == true && mostrarRequisicoes == true) {
sql.append(" And (tipodemandaservico.classificacao like ? or tipodemandaservico.classificacao like ? ) ");
parametro.add("I");
parametro.add("R");
}
list = this.execSQL(sql.toString(), parametro.toArray());
listRetorno.add("idSolicitacaoServico");
listRetorno.add("dataHoraInicio");
listRetorno.add("dataHoraLimite");
listRetorno.add("dataHoraFim");
listRetorno.add("prazoHH");
listRetorno.add("prazoMM");
listRetorno.add("idTipoDemandaServico");
listRetorno.add("nomeServico");
listRetorno.add("idServico");
listRetorno.add("situacao");
listRetorno.add("idSolicitante");
if (list != null && !list.isEmpty()) {
return this.listConvertion(getBean(), list, listRetorno);
} else {
return null;
}
}
public Collection<SolicitacaoServicoDTO> listaServicosPorResponsavelNoPeriodo(Date dataIncio, Date dataFim, int idFuncionario, boolean mostrarIncidentes, boolean mostrarRequisicoes,String situacao)
throws Exception {
List parametro = new ArrayList();
List listRetorno = new ArrayList();
List list = new ArrayList();
StringBuilder sql = new StringBuilder();
sql.append("SELECT DISTINCT solicitacaoservico.idsolicitacaoservico, solicitacaoservico.datahorainicio, solicitacaoservico.datahoralimite, solicitacaoservico.dataHoraFim,solicitacaoservico.prazohh, solicitacaoservico.prazomm ,solicitacaoservico.idtipodemandaservico, servico.nomeServico, servico.idservico ");
sql.append("FROM solicitacaoservico " + "INNER JOIN servicocontrato ON servicocontrato.idservicocontrato = solicitacaoservico.idservicocontrato "
+ "INNER JOIN servico ON servicocontrato.idservico = servico.idservico "
+ "INNER JOIN execucaosolicitacao ON execucaosolicitacao.idsolicitacaoservico = solicitacaoservico.idsolicitacaoservico "
+ "Inner JOIN tipodemandaservico ON tipodemandaservico.idtipodemandaservico = solicitacaoservico.idtipodemandaservico "
+ "INNER JOIN bpm_itemtrabalhofluxo ON execucaosolicitacao.idinstanciafluxo = bpm_itemtrabalhofluxo.idinstancia "
+ "INNER JOIN bpm_elementofluxo ON bpm_elementofluxo.idelemento = bpm_itemtrabalhofluxo.idelemento "
+ "WHERE " + "bpm_itemtrabalhofluxo.idresponsavelatual = ? AND "
+ "bpm_elementofluxo.nome like '%"+ParametroUtil.getValorParametroCitSmartHashMap(ParametroSistema.BPM_ELEMENTO_EXECUCAO, "Atender solicita")
+ "%' AND solicitacaoservico.datahorainicio BETWEEN ? AND ? ");
parametro.add(idFuncionario);/*%Atender solicitacao%Trabalhos*/
parametro.add(dataIncio);
Timestamp dtfim = this.transformaHoraFinal(dataFim);
parametro.add(dtfim);
if (mostrarIncidentes == true && mostrarRequisicoes == false) {
sql.append(" and tipodemandaservico.classificacao like ? ");
parametro.add("I");
} else if (mostrarIncidentes == false && mostrarRequisicoes == true) {
sql.append(" and tipodemandaservico.classificacao like ? ");
parametro.add("R");
} else if (mostrarIncidentes == true && mostrarRequisicoes == true) {
sql.append(" And (tipodemandaservico.classificacao like ? or tipodemandaservico.classificacao like ? ) ");
parametro.add("R");
parametro.add("I");
}
if(!situacao.equalsIgnoreCase("")){
sql.append(" and solicitacaoservico.situacao like ? ");
parametro.add(situacao);
}else{
sql.append(" and (solicitacaoservico.situacao like 'Fechada' or solicitacaoservico.situacao like 'Cancelada' or solicitacaoservico.situacao like 'Resolvida' ) ");
}
list = this.execSQL(sql.toString(), parametro.toArray());
listRetorno.add("idSolicitacaoServico");
listRetorno.add("dataHoraInicio");
listRetorno.add("dataHoraLimite");
listRetorno.add("dataHoraFim");
listRetorno.add("prazoHH");
listRetorno.add("prazoMM");
listRetorno.add("idTipoDemandaServico");
listRetorno.add("nomeServico");
listRetorno.add("idServico");
if (list != null && !list.isEmpty()) {
return this.listConvertion(getBean(), list, listRetorno);
} else {
return null;
}
}
public Collection<SolicitacaoServicoDTO> listaServicosPorResponsavelNoPeriodoDocumentacao(Date dataIncio, Date dataFim, int idFuncionario, boolean mostrarIncidentes, boolean mostrarRequisicoes)
throws Exception {
List parametro = new ArrayList();
List listRetorno = new ArrayList();
List list = new ArrayList();
StringBuilder sql = new StringBuilder();
sql.append("SELECT DISTINCT solicitacaoservico.idsolicitacaoservico, solicitacaoservico.datahorainicio, solicitacaoservico.datahoralimite, solicitacaoservico.dataHoraFim,solicitacaoservico.prazohh, solicitacaoservico.prazomm ,solicitacaoservico.idtipodemandaservico, servico.nomeServico, servico.idservico, solicitacaoservico.situacao ");
sql.append("FROM solicitacaoservico solicitacaoservico" + " INNER JOIN servicocontrato ON servicocontrato.idservicocontrato = solicitacaoservico.idservicocontrato"
+ " INNER JOIN execucaosolicitacao ON execucaosolicitacao.idsolicitacaoservico = solicitacaoservico.idsolicitacaoservico "
+ " INNER JOIN bpm_itemtrabalhofluxo ON execucaosolicitacao.idinstanciafluxo = bpm_itemtrabalhofluxo.idinstancia"
+ "Inner JOIN tipodemandaservico ON tipodemandaservico.idtipodemandaservico = solicitacaoservico.idtipodemandaservico "
+ " INNER JOIN servico ON servicocontrato.idservico = servico.idservico WHERE solicitacaoservico.situacao not LIKE 'EmAndamento' and "
+ " bpm_itemtrabalhofluxo.idresponsavelatual = ? "
+ " AND (servico.nomeServico like 'Fabrica.Sistemas.Documentacao.Manutencao.Corretiva' or servico.nomeServico LIKE 'Fabrica.Sistemas.Documentacao.Manutencao.Evolutiva' )"
+ " AND solicitacaoservico.datahorainicio BETWEEN ? AND ? ");
parametro.add(idFuncionario);
parametro.add(dataIncio);
Timestamp dtfim = this.transformaHoraFinal(dataFim);
parametro.add(dtfim);
if (mostrarIncidentes == true && mostrarRequisicoes == false) {
sql.append(" and tipodemandaservico.classificacao like ? ");
parametro.add("I");
} else if (mostrarIncidentes == false && mostrarRequisicoes == true) {
sql.append(" and tipodemandaservico.classificacao like ? ");
parametro.add("R");
} else if (mostrarIncidentes == true && mostrarRequisicoes == true) {
sql.append(" And (tipodemandaservico.classificacao like = ? or tipodemandaservico.classificacao like = ? ) ");
parametro.add("I");
parametro.add("R");
}
list = this.execSQL(sql.toString(), parametro.toArray());
listRetorno.add("idSolicitacaoServico");
listRetorno.add("dataHoraInicio");
listRetorno.add("dataHoraLimite");
listRetorno.add("dataHoraFim");
listRetorno.add("prazoHH");
listRetorno.add("prazoMM");
listRetorno.add("idTipoDemandaServico");
listRetorno.add("nomeServico");
listRetorno.add("idServico");
listRetorno.add("situacao");
if (list != null && !list.isEmpty()) {
return this.listConvertion(getBean(), list, listRetorno);
} else {
return null;
}
}
public Collection<SolicitacaoServicoDTO> listaServicosPorResponsavelNoPeriodoDocumentacaoPorServico(Date dataIncio, Date dataFim, int idFuncionario, boolean mostrarIncidentes,
boolean mostrarRequisicoes, String listaIdsServicosHomologacaoDocumentacao) throws Exception {
List parametro = new ArrayList();
List listRetorno = new ArrayList();
List list = new ArrayList();
StringBuilder sql = new StringBuilder();
sql.append("SELECT DISTINCT solicitacaoservico.idsolicitacaoservico, solicitacaoservico.datahorainicio, solicitacaoservico.datahoralimite, solicitacaoservico.dataHoraFim,solicitacaoservico.prazohh, solicitacaoservico.prazomm ,solicitacaoservico.idtipodemandaservico, servico.nomeServico, servico.idservico, solicitacaoservico.situacao ");
sql.append("FROM solicitacaoservico solicitacaoservico" + " INNER JOIN servicocontrato ON servicocontrato.idservicocontrato = solicitacaoservico.idservicocontrato"
+ " INNER JOIN execucaosolicitacao ON execucaosolicitacao.idsolicitacaoservico = solicitacaoservico.idsolicitacaoservico "
+ "Inner JOIN tipodemandaservico ON tipodemandaservico.idtipodemandaservico = solicitacaoservico.idtipodemandaservico "
+ " INNER JOIN bpm_itemtrabalhofluxo ON execucaosolicitacao.idinstanciafluxo = bpm_itemtrabalhofluxo.idinstancia"
+ " INNER JOIN servico ON servicocontrato.idservico = servico.idservico WHERE solicitacaoservico.situacao not LIKE 'EmAndamento' and "
+ " bpm_itemtrabalhofluxo.idresponsavelatual = ? " + " AND solicitacaoservico.datahorainicio BETWEEN ? AND ? AND ");
parametro.add(idFuncionario);
parametro.add(dataIncio);
Timestamp dtfim = this.transformaHoraFinal(dataFim);
parametro.add(dtfim);
int aux = 1;
String[] listaIdServicos = null;
if (listaIdsServicosHomologacaoDocumentacao != null && listaIdsServicosHomologacaoDocumentacao.contains(";")) {
listaIdServicos = listaIdsServicosHomologacaoDocumentacao.split(";");
sql.append(" ( ");
for (int i = 0; i < listaIdServicos.length; i++) {
if (listaIdServicos.length > aux) {
sql.append(" servico.idservico = ? or ");
parametro.add(listaIdServicos[i]);
} else {
sql.append(" servico.idservico = ? ");
parametro.add(listaIdServicos[i]);
}
aux++;
}
sql.append(" ) ");
} else {
sql.append(" (servico.idservico = ? ) ");
parametro.add(listaIdsServicosHomologacaoDocumentacao);
}
if (mostrarIncidentes == true && mostrarRequisicoes == false) {
sql.append(" and tipodemandaservico.classificacao like ? ");
parametro.add("I");
} else if (mostrarIncidentes == false && mostrarRequisicoes == true) {
sql.append(" and tipodemandaservico.classificacao like ? ");
parametro.add("R");
} else if (mostrarIncidentes == true && mostrarRequisicoes == true) {
sql.append(" And (tipodemandaservico.classificacao like ? or tipodemandaservico.classificacao like ? ) ");
parametro.add(1);
parametro.add(3);
}
list = this.execSQL(sql.toString(), parametro.toArray());
listRetorno.add("idSolicitacaoServico");
listRetorno.add("dataHoraInicio");
listRetorno.add("dataHoraLimite");
listRetorno.add("dataHoraFim");
listRetorno.add("prazoHH");
listRetorno.add("prazoMM");
listRetorno.add("idTipoDemandaServico");
listRetorno.add("nomeServico");
listRetorno.add("idServico");
listRetorno.add("situacao");
if (list != null && !list.isEmpty()) {
return this.listConvertion(getBean(), list, listRetorno);
} else {
return null;
}
}
public Collection<SolicitacaoServicoDTO> listaServicosPorSolicitanteNoPeriodoEnviadosAoteste(Date dataIncio, Date dataFim, int idFuncionario, boolean mostrarIncidentes, boolean mostrarRequisicoes)
throws Exception {
List parametro = new ArrayList();
List listRetorno = new ArrayList();
List list = new ArrayList();
StringBuilder sql = new StringBuilder();
sql.append("SELECT solicitacaoservico.idsolicitacaoservico, solicitacaoservico.datahorainicio, solicitacaoservico.datahoralimite, solicitacaoservico.dataHoraFim,solicitacaoservico.prazohh, solicitacaoservico.prazomm ,solicitacaoservico.idtipodemandaservico, servico.nomeServico, servico.idservico, solicitacaoservico.situacao ");
sql.append("FROM solicitacaoservico solicitacaoservico"
+ " INNER JOIN servicocontrato ON servicocontrato.idservicocontrato = solicitacaoservico.idservicocontrato "
+ "Inner JOIN tipodemandaservico ON tipodemandaservico.idtipodemandaservico = solicitacaoservico.idtipodemandaservico "
+ " INNER JOIN servico ON servicocontrato.idservico = servico.idservico WHERE "
+ " solicitacaoservico.idsolicitante = ? "
+ " AND (servico.nomeServico like 'Fabrica.Sistemas.Testes.Manutencao.Corretiva' or servico.nomeServico LIKE 'Fabrica.Sistemas.Testes.Manutencao.Evolutiva' or servico.nomeServico LIKE 'Fabrica.Sistemas.Testes.Incidente') "
+ " AND solicitacaoservico.datahorainicio BETWEEN ? AND ? ");
parametro.add(idFuncionario);
parametro.add(dataIncio);
Timestamp dtfim = this.transformaHoraFinal(dataFim);
parametro.add(dtfim);
if (mostrarIncidentes == true && mostrarRequisicoes == false) {
sql.append(" and tipodemandaservico.classificacao like ? ");
parametro.add("I");
} else if (mostrarIncidentes == false && mostrarRequisicoes == true) {
sql.append(" and tipodemandaservico.classificacao like ? ");
parametro.add("R");
} else if (mostrarIncidentes == true && mostrarRequisicoes == true) {
sql.append(" And (tipodemandaservico.classificacao like ? or tipodemandaservico.classificacao like ? ) ");
parametro.add(1);
parametro.add(3);
}
list = this.execSQL(sql.toString(), parametro.toArray());
listRetorno.add("idSolicitacaoServico");
listRetorno.add("dataHoraInicio");
listRetorno.add("dataHoraLimite");
listRetorno.add("dataHoraFim");
listRetorno.add("prazoHH");
listRetorno.add("prazoMM");
listRetorno.add("idTipoDemandaServico");
listRetorno.add("nomeServico");
listRetorno.add("idServico");
listRetorno.add("situacao");
if (list != null && !list.isEmpty()) {
return this.listConvertion(getBean(), list, listRetorno);
} else {
return null;
}
}
public Collection<RelatorioQuantitativoRetornoDTO> listaServicosRetorno(SolicitacaoServicoDTO solicitacaoServicoDTO, String grupoRetorno) throws Exception {
List parametro = new ArrayList();
StringBuilder sql = new StringBuilder();
sql.append("select distinct bpm_itemtrabalhofluxo.idinstancia,ocorrenciasolicitacao.idsolicitacaoservico,bpm_itemtrabalhofluxo.iditemtrabalho,bpm_elementofluxo.idelemento,bpm_elementofluxo.idfluxo ");
sql.append("from bpm_itemtrabalhofluxo ");
sql.append("INNER JOIN bpm_elementofluxo bpm_elementofluxo ");
sql.append("ON bpm_elementofluxo.idelemento = bpm_itemtrabalhofluxo.idelemento ");
sql.append("INNER JOIN execucaosolicitacao execucaosolicitacao ");
sql.append("ON bpm_itemtrabalhofluxo.idinstancia = execucaosolicitacao.idinstanciafluxo ");
sql.append("INNER JOIN ocorrenciasolicitacao ocorrenciasolicitacao ");
sql.append("ON ocorrenciasolicitacao.idsolicitacaoservico = execucaosolicitacao.idsolicitacaoservico ");
sql.append("INNER JOIN solicitacaoservico solicitacaoservico ");
sql.append("ON solicitacaoservico.idsolicitacaoservico = ocorrenciasolicitacao.idsolicitacaoservico ");
sql.append("INNER JOIN historicosolicitacaoservico historicosolicitacaoservico ");
sql.append("ON historicosolicitacaoservico.idocorrencia = ocorrenciasolicitacao.idocorrencia ");
sql.append("WHERE bpm_elementofluxo.nome like '" + grupoRetorno + "' ");
sql.append("AND ocorrenciasolicitacao.ocorrencia IS NOT NULL ");
if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.ORACLE)) {
sql.append(" AND to_char(solicitacaoservico.datahorasolicitacao, 'YYYY-MM-DD') BETWEEN ? AND ? ");
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
parametro.add(formatter.format(solicitacaoServicoDTO.getDataInicio()));
parametro.add(formatter.format(solicitacaoServicoDTO.getDataFim()));
} else {
sql.append(" AND solicitacaoservico.datahorasolicitacao BETWEEN ? AND ? ");
parametro.add(solicitacaoServicoDTO.getDataInicio());
parametro.add(transformaHoraFinal(solicitacaoServicoDTO.getDataFim()));
}
sql.append("AND bpm_itemtrabalhofluxo.idinstancia in( ");
sql.append("select idinstancia from ( ");
sql.append("select bpm_itemtrabalhofluxo.idinstancia,ocorrenciasolicitacao.idsolicitacaoservico,bpm_itemtrabalhofluxo.iditemtrabalho ");
sql.append("from bpm_itemtrabalhofluxo ");
sql.append("INNER JOIN bpm_elementofluxo bpm_elementofluxo ");
sql.append("ON bpm_elementofluxo.idelemento = bpm_itemtrabalhofluxo.idelemento ");
sql.append("INNER JOIN execucaosolicitacao execucaosolicitacao ");
sql.append("ON bpm_itemtrabalhofluxo.idinstancia = execucaosolicitacao.idinstanciafluxo ");
sql.append("INNER JOIN ocorrenciasolicitacao ocorrenciasolicitacao ");
sql.append("ON ocorrenciasolicitacao.idsolicitacaoservico = execucaosolicitacao.idsolicitacaoservico ");
sql.append("INNER JOIN solicitacaoservico solicitacaoservico ");
sql.append("ON solicitacaoservico.idsolicitacaoservico = ocorrenciasolicitacao.idsolicitacaoservico ");
sql.append("INNER JOIN historicosolicitacaoservico historicosolicitacaoservico ");
sql.append("ON historicosolicitacaoservico.idocorrencia = ocorrenciasolicitacao.idocorrencia ");
sql.append("WHERE bpm_elementofluxo.nome like '" + grupoRetorno + "' ");
sql.append("AND ocorrenciasolicitacao.ocorrencia IS NOT NULL ");
if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.ORACLE)) {
sql.append(" AND to_char(solicitacaoservico.datahorasolicitacao, 'YYYY-MM-DD') BETWEEN ? AND ? ");
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
parametro.add(formatter.format(solicitacaoServicoDTO.getDataInicio()));
parametro.add(formatter.format(solicitacaoServicoDTO.getDataFim()));
} else {
sql.append(" AND solicitacaoservico.datahorasolicitacao BETWEEN ? AND ? ");
parametro.add(solicitacaoServicoDTO.getDataInicio());
parametro.add(transformaHoraFinal(solicitacaoServicoDTO.getDataFim()));
}
if (solicitacaoServicoDTO != null && solicitacaoServicoDTO.getIdGrupoAtual() != null && !StringUtils.isNotBlank(solicitacaoServicoDTO.getIdGrupoAtual().toString())) {
sql.append(" AND historicosolicitacaoservico.idgrupo = ? ");
parametro.add(solicitacaoServicoDTO.getIdGrupoAtual());
}
sql.append("group by bpm_itemtrabalhofluxo.iditemtrabalho, bpm_itemtrabalhofluxo.idinstancia,ocorrenciasolicitacao.idsolicitacaoservico ) ");
sql.append("as tabela ");
sql.append("group by idinstancia ");
sql.append("having count(idinstancia) > 1) ");
List lista = this.execSQL(sql.toString(), parametro.toArray());
List<String> listRetorno = new ArrayList<String>();
listRetorno.add("idInstancia");
listRetorno.add("idSolicitacaoServico");
listRetorno.add("idItemTrabalho");
listRetorno.add("idElemento");
listRetorno.add("idFluxo");
if (lista != null && !lista.isEmpty()) {
Collection<RelatorioQuantitativoRetornoDTO> listaQuantitativoRetorno = new ArrayList<RelatorioQuantitativoRetornoDTO>();
listaQuantitativoRetorno = engine.listConvertion(RelatorioQuantitativoRetornoDTO.class, lista, listRetorno);
return listaQuantitativoRetorno;
} else {
return null;
}
}
public Collection<RelatorioQuantitativoRetornoDTO> listaServicosRetornoNomeResponsavel(RelatorioQuantitativoRetornoDTO relatorioQuantitativoRetornoDTO) throws Exception {
List parametro = new ArrayList();
StringBuilder sql = new StringBuilder();
sql.append("SELECT usuario.nome,bpm_itemtrabalhofluxo.idresponsavelatual ");
sql.append("FROM bpm_itemtrabalhofluxo bpm_itemtrabalhofluxo ");
sql.append("INNER JOIN ocorrenciasolicitacao ocorrenciasolicitacao ");
sql.append("ON ocorrenciasolicitacao.idocorrencia = ? ");
sql.append("INNER JOIN usuario usuario ");
sql.append("ON usuario.idusuario = bpm_itemtrabalhofluxo.idresponsavelatual ");
sql.append("WHERE bpm_itemtrabalhofluxo.iditemtrabalho < ocorrenciasolicitacao.iditemtrabalho ");
sql.append("AND bpm_itemtrabalhofluxo.idinstancia = ? ");
sql.append("ORDER BY bpm_itemtrabalhofluxo.iditemtrabalho DESC LIMIT 1; ");
parametro.add(relatorioQuantitativoRetornoDTO.getIdOcorrencia());
parametro.add(relatorioQuantitativoRetornoDTO.getIdInstancia());
List lista = this.execSQL(sql.toString(), parametro.toArray());
List<String> listRetorno = new ArrayList<String>();
listRetorno.add("nome");
listRetorno.add("idUsuario");
Collection<RelatorioQuantitativoRetornoDTO> listaQuantitativoRetorno = new ArrayList<RelatorioQuantitativoRetornoDTO>();
listaQuantitativoRetorno = engine.listConvertion(RelatorioQuantitativoRetornoDTO.class, lista, listRetorno);
return listaQuantitativoRetorno;
}
public Collection<SolicitacaoServicoDTO> listaSolicitacaoPorBaseConhecimento(SolicitacaoServicoDTO solicitacao) throws Exception {
StringBuilder sql = new StringBuilder();
List parametro = new ArrayList();
List listRetorno = new ArrayList();
/*
* Desenvolvedor: Rodrigo Pecci - Data: 25/10/2013 - Hor�rio: 10h00min - ID Citsmart: 120770 Motivo/Coment�rio: A tabela origematendimento, faseservico e empregados estava utilizando INNER
* JOIN, isso fazia com que as solicita��es que n�o possuem origem contrato, fase ou solicitante n�o fossem retornadas. Alterado para LEFT JOIN
*/
sql.append("SELECT solicitacaoservico.idbaseconhecimento,solicitacaoservico.idsolicitacaoservico,tempoAtendimentoHH,tempoAtendimentoMM, ");
sql.append("datahorainicio, datahorafim,nomeservico, solicitacaoservico.situacao, dataHoraSolicitacao, dataHoraLimite, nomeTipoDemandaServico, prazohh, ");
sql.append("prazomm, solicitacaoservico.descricao, resposta, grupo.sigla, seqreabertura, empregado.nome, faseservico.nomefase, origematendimento.descricao,prioridade.nomeprioridade ");
sql.append(" FROM solicitacaoservico ");
sql.append("INNER JOIN tipodemandaservico ON solicitacaoservico.idtipodemandaservico = tipodemandaservico.idtipodemandaservico ");
sql.append("INNER JOIN servicocontrato ON solicitacaoservico.idservicocontrato = servicocontrato.idservicocontrato ");
sql.append("INNER JOIN servico ON servicocontrato.idservico = servico.idservico ");
sql.append("LEFT OUTER JOIN grupo ON grupo.idgrupo = solicitacaoservico.idgrupoatual ");
sql.append("LEFT JOIN empregados empregado ON empregado.idempregado = solicitacaoservico.idsolicitante ");
sql.append("LEFT JOIN faseservico faseservico ON faseservico.idfase = solicitacaoservico.idfaseAtual ");
sql.append("LEFT JOIN origematendimento origematendimento ON origematendimento.idorigem = solicitacaoservico.idorigem ");
sql.append("INNER JOIN prioridade prioridade ON prioridade.idprioridade = solicitacaoservico.idprioridade ");
sql.append("where solicitacaoservico.idbaseconhecimento = ?");
parametro.add(solicitacao.getIdBaseConhecimento());
listRetorno.add("idBaseConhecimento");
listRetorno.add("idSolicitacaoServico");
listRetorno.add("tempoAtendimentoHH");
listRetorno.add("tempoAtendimentoMM");
listRetorno.add("dataHoraInicio");
listRetorno.add("dataHoraFim");
listRetorno.add("nomeServico");
listRetorno.add("situacao");
listRetorno.add("dataHoraSolicitacao");
listRetorno.add("dataHoraLimite");
listRetorno.add("nomeTipoDemandaServico");
listRetorno.add("prazoHH");
listRetorno.add("prazoMM");
listRetorno.add("descricao");
listRetorno.add("resposta");
listRetorno.add("siglaGrupo");
listRetorno.add("seqReabertura");
listRetorno.add("nomeSolicitante");
listRetorno.add("faseAtual");
listRetorno.add("origem");
listRetorno.add("prioridade");
List list = execSQL(sql.toString(), parametro.toArray());
if (list != null && !list.isEmpty()) {
Collection<SolicitacaoServicoDTO> listaSolicitacaoServicoPorBaseConhecimento = this.listConvertion(SolicitacaoServicoDTO.class, list, listRetorno);
return listaSolicitacaoServicoPorBaseConhecimento;
}
return null;
}
/**
* Retorna uma lista de solicitacao servi�o de acordo com os parametro passados com o principal objetivo de trazer somente solicita��es fechadas ou canceladas. Foi adicionado o seguinte trecho de
* c�digo no script 'and solicitacaoservico.idtipodemandaservico is not null' para n�o deixar mostrar na lista do relat�rio os dados que estiverem com o campo idtipodemandaservico vazio.
*
* @param relatorioSolicitacaoPorSolucionarDto
* @return Collection
* @throws Exception
* @author thays.araujo
* @author bruno.aquino - Data: 24/10/2013 - Hor�rio: 14h24min - ID Citsmart: 122034
*/
public Collection<RelatorioSolicitacaoPorExecutanteDTO> listaSolicitacaoPorExecutante(RelatorioSolicitacaoPorExecutanteDTO relatorioSolicitacaoPorSolucionarDto) throws Exception {
List parametro = new ArrayList();
List listRetorno = new ArrayList();
List list = new ArrayList();
/**
* Checa de h� limite para pesquisa
* @author thyen.chang
*/
boolean seLimita = !relatorioSolicitacaoPorSolucionarDto.getTopList().equals(0);
StringBuilder sql = new StringBuilder();
sql.append("select ");
/**
* Limita pesquisa no SQLServer
* @author thyen.chang
*/
if ((seLimita)&&(CITCorporeUtil.SGBD_PRINCIPAL.trim().toUpperCase().equalsIgnoreCase(SQLConfig.SQLSERVER))){
sql.append("TOP "+relatorioSolicitacaoPorSolucionarDto.getTopList().toString()+" ");
}
sql.append("solicitacaoservico.idsolicitacaoservico, servico.nomeservico, usuario.nome, solicitacaoservico.situacao from solicitacaoservico ");
sql.append("inner join servicocontrato on servicocontrato.idservicocontrato = solicitacaoservico.idservicocontrato ");
sql.append("inner join servico on servicocontrato.idservico = servico.idservico ");
sql.append("inner join contratos ");
sql.append(" on contratos.idcontrato = servicocontrato.idcontrato ");
sql.append(" and (upper(contratos.deleted) = 'N' or contratos.deleted is null) ");
sql.append("left join bpm_itemtrabalhofluxo on bpm_itemtrabalhofluxo.iditemtrabalho = solicitacaoservico.idtarefaencerramento ");
sql.append("left join usuario on usuario.idusuario = bpm_itemtrabalhofluxo.idresponsavelatual ");
if (relatorioSolicitacaoPorSolucionarDto.getDataInicio() != null) {
if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.ORACLE)) {
sql.append("where ");
/**
* Limita pesquisa no Oracle
* @author thyen.chang
*/
if(seLimita){
sql.append(" ROWNUM <= ? AND ");
parametro.add(relatorioSolicitacaoPorSolucionarDto.getTopList());
}
sql.append("to_char(solicitacaoservico.datahorafim, 'YYYY-MM-DD') BETWEEN ? AND ? ");
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
parametro.add(formatter.format(relatorioSolicitacaoPorSolucionarDto.getDataInicio()));
parametro.add(formatter.format(relatorioSolicitacaoPorSolucionarDto.getDataFim()));
} else {
sql.append("where solicitacaoservico.datahorafim BETWEEN ? AND ? ");
parametro.add(relatorioSolicitacaoPorSolucionarDto.getDataInicio());
parametro.add(transformaHoraFinal(relatorioSolicitacaoPorSolucionarDto.getDataFim()));
}
}
if (relatorioSolicitacaoPorSolucionarDto.getIdSolicitacaoServico() != null) {
if (relatorioSolicitacaoPorSolucionarDto.getDataInicio() == null) {
sql.append(" where solicitacaoservico.idsolicitacaoservico = ? ");
parametro.add(relatorioSolicitacaoPorSolucionarDto.getIdSolicitacaoServico());
} else {
sql.append("and solicitacaoservico.idsolicitacaoservico = ? ");
parametro.add(relatorioSolicitacaoPorSolucionarDto.getIdSolicitacaoServico());
}
}
if (relatorioSolicitacaoPorSolucionarDto.getIdResponsavelAtual() != null) {
sql.append("and bpm_itemtrabalhofluxo.idresponsavelatual = ? ");
parametro.add(relatorioSolicitacaoPorSolucionarDto.getIdResponsavelAtual());
}
if (relatorioSolicitacaoPorSolucionarDto.getIdContrato() != null) {
sql.append("and servicocontrato.idcontrato = ? ");
parametro.add(relatorioSolicitacaoPorSolucionarDto.getIdContrato());
}
sql.append(" and solicitacaoservico.idtipodemandaservico is not null ");
sql.append(" and solicitacaoservico.situacao in ('Fechada', 'Cancelada', 'Resolvida') ");
sql.append(" ORDER BY usuario.nome ");
/**
* Limita pesquisa no Postgres e MySQL
* @author thyen.chang
*/
if((seLimita) && ((CITCorporeUtil.SGBD_PRINCIPAL.trim().toUpperCase().equalsIgnoreCase(SQLConfig.POSTGRESQL))||(CITCorporeUtil.SGBD_PRINCIPAL.trim().toUpperCase().equalsIgnoreCase(SQLConfig.MYSQL))) ){
sql.append(" LIMIT ? ");
parametro.add(relatorioSolicitacaoPorSolucionarDto.getTopList());
}
list = this.execSQL(sql.toString(), parametro.toArray());
listRetorno.add("idSolicitacaoServico");
listRetorno.add("nomeServico");
listRetorno.add("nomeResponsavelAtual");
listRetorno.add("situacao");
if (list != null && !list.isEmpty()) {
Collection<RelatorioSolicitacaoPorExecutanteDTO> listaSolicitacaoPorExecutante;
listaSolicitacaoPorExecutante = this.listConvertion(RelatorioSolicitacaoPorExecutanteDTO.class, list, listRetorno);
return listaSolicitacaoPorExecutante;
} else {
return null;
}
}
/**
* Retorna Solicita��o servico de acordo com criterios passados.
*
* @return Collection<SolicitacaoServicoDTO>
* @throws Exception
* @author thays.araujo
*/
public Collection<SolicitacaoServicoDTO> listaSolicitacaoServicoPorCriterios(PesquisaSolicitacaoServicoDTO pesquisaSolicitacaoServicoDto) throws Exception {
List listRetorno = new ArrayList();
StringBuilder sql = new StringBuilder();
List lista = new ArrayList();
List parametros = new ArrayList();
/*
* Desenvolvedor: Rodrigo Pecci - Data: 25/10/2013 - Hor�rio: 10h00min - ID Citsmart: 120770 Motivo/Coment�rio: A tabela origematendimento e faseservico estava utilizando INNER JOIN, isso
* fazia com que as solicita��es que n�o possuem origem contrato ou fase n�o fossem retornadas. Alterado para LEFT JOIN
*/
/* String SGBD = CITCorporeUtil.SGBD_PRINCIPAL; */
sql.append("SELECT ");
sql.append("tempoAtendimentoHH,tempoAtendimentoMM,solicitacaoservico.datahorainicio, solicitacaoservico.datahorafim, solicitacaoservico.idsolicitacaoservico, "
+ "nomeservico, unidade.nome, solicitacaoservico.situacao, dataHoraSolicitacao, dataHoraLimite, nomeTipoDemandaServico, "
+ "solicitacaoservico.prazohh, solicitacaoservico.prazomm, ");
sql.append("solicitacaoservico.descricaoSemFormatacao, resposta, grupo.sigla, solicitacaoservico.seqreabertura, empregado.nome, "
+ "faseservico.nomefase, origematendimento.descricao,prioridade.nomeprioridade, usuario.nome, contratos.numero, idUsuarioResponsavelAtual, ");
sql.append("grupo.nome, localidade.nomelocalidade, u.nome AS responsavelAtual, itf.iditemtrabalho as idtarefa, "
+ "ef.nome AS nometarefa ");
sql.append(montaSql(parametros, pesquisaSolicitacaoServicoDto, 0, true));
/*sql.append("GROUP BY solicitacaoservico.idsolicitacaoservico, servico.nomeservico, unidade.nome, tipodemandaservico.nometipodemandaservico, "
+ " grupo.sigla, empregado.nome, faseservico.nomefase, origematendimento.descricao, prioridade.nomeprioridade, usuario.nome, "
+ " contratos.numero, grupo.nome, localidade.nomelocalidade, u.nome ");*/
lista = this.execSQL(sql.toString(), parametros.toArray());
listRetorno.add("tempoAtendimentoHH");
listRetorno.add("tempoAtendimentoMM");
listRetorno.add("dataHoraInicio");
listRetorno.add("dataHoraFim");
listRetorno.add("idSolicitacaoServico");
listRetorno.add("nomeServico");
listRetorno.add("nomeUnidadeSolicitante");
listRetorno.add("situacao");
listRetorno.add("dataHoraSolicitacao");
listRetorno.add("dataHoraLimite");
listRetorno.add("nomeTipoDemandaServico");
listRetorno.add("prazoHH");
listRetorno.add("prazoMM");
listRetorno.add("descricaoSemFormatacao");
listRetorno.add("resposta");
listRetorno.add("siglaGrupo");
listRetorno.add("seqReabertura");
listRetorno.add("nomeSolicitante");
listRetorno.add("faseAtual");
listRetorno.add("origem");
listRetorno.add("prioridade");
listRetorno.add("responsavel");
listRetorno.add("contrato");
listRetorno.add("idUsuarioResponsavelAtual");
listRetorno.add("grupoAtual");
listRetorno.add("localidade");
listRetorno.add("responsavelAtual");
listRetorno.add("idTarefa");
listRetorno.add("nomeTarefa");
List listaSolicitacoes = engine.listConvertion(getBean(), lista, listRetorno);
return listaSolicitacoes;
}
public Collection<SolicitacaoServicoDTO> listaSolicitacaoServicoPorServicoContrato(Integer idServicoContratoContabil) throws Exception {
List condicao = new ArrayList();
StringBuilder sql = new StringBuilder();
List listRetorno = new ArrayList();
listRetorno.add("idSolicitacaoServico");
listRetorno.add("descricao");
sql.append("select sol.idsolicitacaoservico,sol.descricao from solicitacaoservico sol ");
sql.append("inner join servicocontrato on sol.idservicocontrato = servicocontrato.idservicocontrato ");
sql.append("inner join servico on servicocontrato.idservico = servico.idservico ");
if(idServicoContratoContabil!=null){
sql.append("where servico.idservico = ? and sol.situacao = ? ");
condicao.add(idServicoContratoContabil);
condicao.add(Enumerados.SituacaoSolicitacaoServico.Fechada.toString());
}
List lista = new ArrayList();
lista = this.execSQL(sql.toString(), condicao.toArray());
if(lista!=null){
Collection<SolicitacaoServicoDTO> listaSolicitacaoServicoPorServicoContrato = engine.listConvertion(SolicitacaoServicoDTO.class, lista, listRetorno);
return listaSolicitacaoServicoPorServicoContrato;
}
return null;
/*condicao.add(new Condition("idServicoContrato", "=", idServicoContratoContabil.intValue()));
condicao.add(new Condition("situacao", "=", Enumerados.SituacaoSolicitacaoServico.Fechada.toString()));*/
/*List ordenacao = new ArrayList();
ordenacao.add(new Order("idSolicitacaoServico"));
return super.findByCondition(condicao, ordenacao);*/
}
/**
* Retorna uma lista de Solicita��es Servi�os e Problemas de acordo com o idServi�o passado.
*
* @param relatorioAnaliseServicoDto
* @return Collection<RelatorioAnaliseServicoDTO>
* @throws Exception
* @author thays.araujo
*/
public Collection<RelatorioQuantitativoSolicitacaoProblemaPorServicoDTO> listaSolicitacaoServicoProblemaPorServico(RelatorioQuantitativoSolicitacaoProblemaPorServicoDTO relatorioAnaliseServicoDto)
throws Exception {
List parametro = new ArrayList();
StringBuilder sql = new StringBuilder();
sql.append("select solicitacaoservico.idsolicitacaoservico, problema.idproblema,servico.nomeServico from solicitacaoservico solicitacaoservico ");
sql.append("inner join servicocontrato on solicitacaoservico.idservicocontrato = servicocontrato.idservicocontrato ");
sql.append("INNER JOIN servico ON servicocontrato.idservico = servico.idservico ");
sql.append("left join solicitacaoservicoproblema on solicitacaoservicoproblema.idsolicitacaoservico = solicitacaoservico.idsolicitacaoservico ");
sql.append("left join problema on problema.idproblema = solicitacaoservicoproblema.idproblema ");
if (relatorioAnaliseServicoDto.getIdServico() != null) {
sql.append(" where servicocontrato.idservico = ? ");
parametro.add(relatorioAnaliseServicoDto.getIdServico());
}
sql.append("group by problema.idproblema,solicitacaoservico.idsolicitacaoservico,servico.nomeServico ");
List lista = this.execSQL(sql.toString(), parametro.toArray());
List<String> listRetorno = new ArrayList<String>();
listRetorno.add("idSolicitacaoServico");
listRetorno.add("idProblema");
listRetorno.add("servico");
if (lista != null && !lista.isEmpty()) {
Collection<RelatorioQuantitativoSolicitacaoProblemaPorServicoDTO> listaServicoPorSolicitacaoServico = new ArrayList<RelatorioQuantitativoSolicitacaoProblemaPorServicoDTO>();
listaServicoPorSolicitacaoServico = engine.listConvertion(RelatorioQuantitativoSolicitacaoProblemaPorServicoDTO.class, lista, listRetorno);
return listaServicoPorSolicitacaoServico;
} else {
return null;
}
}
/**
* Lista todas as solicita��es pelo id do empregado, inclusive as solicita��es resolvidas
*
* @param pgAtual
* @param qtdPaginacao
* @param gerenciamentoBean
* @return
* @throws Exception
*/
public Collection<SolicitacaoServicoDTO> listaSolicitacoesPorIdEmpregado(Integer pgAtual, Integer qtdPaginacao, GerenciamentoServicosDTO gerenciamentoBean, Collection<ContratoDTO> listContratoUsuarioLogado) throws Exception {
String ordernarPor = gerenciamentoBean.getOrdenarPor() == null ? "" : gerenciamentoBean.getOrdenarPor();
String direcaoOrdenacao = gerenciamentoBean.getDirecaoOrdenacao() == null ? "" : gerenciamentoBean.getDirecaoOrdenacao() + " ";
if (ordernarPor.equals("NSolicitacao")) {
ordernarPor = " ORDER BY sol.idsolicitacaoservico ";
} else if (ordernarPor.equals("servico")) {
ordernarPor = " ORDER BY nomeservico ";
} else if (ordernarPor.equals("responsavel")) {
ordernarPor = " ORDER BY e2.nome ";
} else if (ordernarPor.equals("prioridade")) {
ordernarPor = " ORDER BY sol.idprioridade ";
} else if (ordernarPor.equals("situacao")) {
ordernarPor = " ORDER BY sol.situacao ";
} else if (ordernarPor.equals("descricao")) {
ordernarPor = " ORDER BY sol.descricao ";
} else if (ordernarPor.equals("dataHoraLimite")) {
ordernarPor = " ORDER BY sol.datahoralimite ";
} else if (ordernarPor.equals("dataHoraLimiteCriacao")) {
ordernarPor = " ORDER BY sol.datahorasolicitacao ";
} else {
ordernarPor = " ORDER BY sol.idresponsavel ";
}
ordernarPor += direcaoOrdenacao;
List listRetorno = new ArrayList();
listRetorno.add("idSolicitacaoServico");
listRetorno.add("idbaseconhecimento");
listRetorno.add("idServicoContrato");
listRetorno.add("idSolicitante");
listRetorno.add("idItemConfiguracao");
listRetorno.add("idItemConfiguracaoFilho");
listRetorno.add("idTipodemandaServico");
listRetorno.add("idContatoSolicitacaoServico");
listRetorno.add("idOrigem");
listRetorno.add("idResponsavel");
listRetorno.add("idTipoProblema");
listRetorno.add("idPrioridade");
listRetorno.add("idUnidade");
listRetorno.add("idFaseAtual");
listRetorno.add("idGrupoAtual");
listRetorno.add("dataHoraSolicitacao");
listRetorno.add("dataHoraLimite");
listRetorno.add("atendimentoPresencial");
listRetorno.add("prazoCapturaHH");
listRetorno.add("prazoCapturaMM");
listRetorno.add("prazoHH");
listRetorno.add("prazoMM");
listRetorno.add("descricao");
listRetorno.add("resposta");
listRetorno.add("dataHoraInicio");
listRetorno.add("dataHoraFim");
listRetorno.add("situacao");
listRetorno.add("idSolicitacaoPai");
listRetorno.add("detalhamentoCausa");
listRetorno.add("idCausaIncidente");
listRetorno.add("idCategoriaSolucao");
listRetorno.add("seqReabertura");
listRetorno.add("enviaEmailCriacao");
listRetorno.add("enviaEmailFinalizacao");
listRetorno.add("enviaEmailAcoes");
listRetorno.add("idGrupoNivel1");
listRetorno.add("solucaoTemporaria");
listRetorno.add("houveMudanca");
listRetorno.add("slaACombinar");
listRetorno.add("prazohhAnterior");
listRetorno.add("prazommAnterior");
listRetorno.add("idCalendario");
listRetorno.add("tempoDecorridoHH");
listRetorno.add("tempoDecorridoMM");
listRetorno.add("dataHoraSuspensao");
listRetorno.add("dataHoraReativacao");
listRetorno.add("impacto");
listRetorno.add("urgencia");
listRetorno.add("dataHoraCaptura");
listRetorno.add("tempoCapturaHH");
listRetorno.add("tempoCapturaMM");
listRetorno.add("tempoAtrasoHH");
listRetorno.add("tempoAtrasoMM");
listRetorno.add("tempoAtendimentoHH");
listRetorno.add("tempoAtendimentoMM");
listRetorno.add("idAcordoNivelServico");
listRetorno.add("idUltimaAprovacao");
listRetorno.add("dataHoraInicioSLA");
listRetorno.add("dataHoraSuspensaoSLA");
listRetorno.add("dataHoraReativacaoSLA");
listRetorno.add("situacaoSLA");
listRetorno.add("aprovacao");
listRetorno.add("idServico");
listRetorno.add("servico");
listRetorno.add("idTipoDemandaServico");
listRetorno.add("demanda");
listRetorno.add("idContrato");
listRetorno.add("contrato");
listRetorno.add("solicitante");
listRetorno.add("nomeUnidadeSolicitante");
listRetorno.add("responsavel");
listRetorno.add("nomeUnidadeResponsavel");
listRetorno.add("origem");
listRetorno.add("prioridade");
listRetorno.add("faseAtual");
listRetorno.add("grupoAtual");
listRetorno.add("grupoNivel1");
listRetorno.add("nomecontato");
listRetorno.add("emailcontato");
listRetorno.add("telefonecontato");
listRetorno.add("observacao");
listRetorno.add("idLocalidade");
listRetorno.add("idInstanciaFluxo");
StringBuilder sql = new StringBuilder();
List parametros = new ArrayList();
if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.SQLSERVER)) {
sql.append(" ;WITH TabelaTemporaria AS ( ");
}
sql.append("SELECT sol.idSolicitacaoServico, sol.idbaseconhecimento, sol.idServicoContrato, sol.idSolicitante, ");
sql.append(" sol.idItemConfiguracao, sol.idItemConfiguracaoFilho, sol.idtipodemandaservico, sol.idcontatosolicitacaoservico, ");
sql.append(" sol.idOrigem, sol.idResponsavel, sol.idTipoProblema, sol.idPrioridade, sol.idUnidade, sol.idFaseAtual, ");
sql.append(" sol.idGrupoAtual, sol.dataHoraSolicitacao, sol.dataHoraLimite, sol.atendimentoPresencial, sol.prazoCapturaHH, sol.prazoCapturaMM, ");
sql.append(" sol.prazoHH, sol.prazoMM, sol.descricao, sol.resposta, sol.dataHoraInicio, sol.dataHoraFim, sol.situacao, ");
sql.append(" sol.idSolicitacaoPai, sol.detalhamentoCausa, sol.idCausaIncidente, sol.idCategoriaSolucao, ");
sql.append(" sol.seqreabertura, sol.enviaEmailCriacao, sol.enviaEmailFinalizacao, sol.enviaEmailAcoes, ");
sql.append(" sol.idgruponivel1, sol.solucaoTemporaria, sol.houveMudanca, sol.slaACombinar, sol.prazohhAnterior, ");
sql.append(" sol.prazommAnterior, sol.idCalendario, sol.tempoDecorridoHH, sol.tempoDecorridoMM, sol.dataHoraSuspensao, ");
sql.append(" sol.dataHoraReativacao, sol.impacto, sol.urgencia, sol.dataHoraCaptura, sol.tempoCapturaHH, sol.tempoCapturaMM, ");
sql.append(" sol.tempoAtrasoHH, sol.tempoAtrasoMM, sol.tempoAtendimentoHH, sol.tempoAtendimentoMM, sol.idacordonivelservico, ");
sql.append(" sol.idultimaaprovacao, sol.datahorainiciosla, sol.datahorasuspensaosla, sol.datahorareativacaosla, sol.situacaosla, aprov.aprovacao, ");
sql.append(" s.idservico, s.nomeServico, td.idTipoDemandaServico as idtipodemandaservico2, td.nomeTipoDemandaServico, c.idContrato, c.numero, e1.nome, u1.nome as nomeUnidade1, ");
sql.append(" e2.nome as nomeResponsavel, u2.nome as nomeUnidade2, oa.descricao as descricao2, p.nomeprioridade, fs.nomefase, ");
sql.append(" g1.sigla, g2.sigla as siglaGupo2, cs.nomecontato, cs.emailcontato, cs.telefonecontato, cs.localizacaofisica ,cs.idlocalidade , es.idInstanciaFluxo ");
if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.SQLSERVER)) {
sql.append(" , ROW_NUMBER() OVER (ORDER BY sol.idsolicitacaoservico) AS Row ");
}
sql.append(" FROM solicitacaoservico sol ");
sql.append(" LEFT JOIN servicocontrato sc ON sc.idservicocontrato = sol.idservicocontrato ");
sql.append(" LEFT JOIN contratos c ON c.idcontrato = sc.idcontrato ");
sql.append(" LEFT JOIN servico s ON s.idservico = sc.idservico ");
sql.append(" LEFT JOIN tipodemandaservico td ON td.idtipodemandaservico = s.idtipodemandaservico ");
sql.append(" LEFT JOIN empregados e1 ON e1.idempregado = sol.idsolicitante ");
sql.append(" LEFT JOIN unidade u1 ON u1.idunidade = e1.idunidade ");
sql.append(" LEFT JOIN usuario usu ON usu.idusuario = sol.idresponsavel ");
sql.append(" LEFT JOIN empregados e2 ON e2.idempregado = usu.idempregado ");
sql.append(" LEFT JOIN unidade u2 ON u2.idunidade = e2.idunidade ");
sql.append(" LEFT JOIN origematendimento oa ON oa.idorigem = sol.idorigem ");
sql.append(" LEFT JOIN prioridade p ON p.idprioridade = sol.idprioridade ");
sql.append(" LEFT JOIN faseservico fs ON fs.idfase = sol.idfaseatual ");
sql.append(" LEFT JOIN grupo g1 ON g1.idgrupo = sol.idgrupoatual ");
sql.append(" LEFT JOIN grupo g2 ON g2.idgrupo = sol.idgruponivel1 ");
sql.append(" LEFT JOIN contatosolicitacaoservico cs ON cs.idcontatosolicitacaoservico = sol.idcontatosolicitacaoservico ");
sql.append(" LEFT JOIN aprovacaosolicitacaoservico aprov ON aprov.idaprovacaosolicitacaoservico = sol.idultimaaprovacao ");
sql.append(" INNER JOIN execucaosolicitacao es ON es.idsolicitacaoservico = sol.idsolicitacaoservico ");
sql.append("WHERE sol.idsolicitacaopai is null ");
if (listContratoUsuarioLogado != null && !listContratoUsuarioLogado.isEmpty()) {
// FILTRA CONTRATO DO USU�RIO LOGADO - S� retorna as Solicita��es dos Contratos em que o usu�rio logado est� inserido.
if (listContratoUsuarioLogado != null && !listContratoUsuarioLogado.isEmpty()) {
sql.append(" AND c.idcontrato in ( ");
boolean verifica = true;
for (ContratoDTO contrato : listContratoUsuarioLogado) {
if (verifica) {
sql.append(contrato.getIdContrato());
verifica = false;
} else {
sql.append(",");
sql.append(contrato.getIdContrato());
}
}
sql.append(" )");
}
}
// Adiciona o filtro de pesquisa caso houver filtro
adicionarFiltroPesquisa(sql, gerenciamentoBean, parametros);
if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.POSTGRESQL)) {
Integer pgTotal = pgAtual * qtdPaginacao;
if (pgTotal > 0) {
pgAtual = pgTotal - qtdPaginacao;
}
// sql.append(" ORDER BY sol.idSolicitacaoServico LIMIT " + qtdPaginacao + " OFFSET " + pgAtual);
sql.append(ordernarPor + " LIMIT " + qtdPaginacao + " OFFSET " + pgAtual);
}
if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.MYSQL)) {
Integer pgTotal = pgAtual * qtdPaginacao;
if (pgTotal > 0) {
pgAtual = pgTotal - qtdPaginacao;
}
// sql.append(" LIMIT " + pgAtual + ", " + qtdPaginacao);
sql.append(ordernarPor + " LIMIT " + pgAtual + ", " + qtdPaginacao);
}
if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.SQLSERVER)) {
Integer quantidadePaginator2 = new Integer(0);
if (pgAtual > 0) {
quantidadePaginator2 = qtdPaginacao * pgAtual;
pgAtual = (pgAtual * qtdPaginacao) - qtdPaginacao;
} else {
quantidadePaginator2 = qtdPaginacao;
pgAtual = 0;
}
sql.append(" ) SELECT * FROM TabelaTemporaria WHERE Row> " + pgAtual + " and Row<" + (quantidadePaginator2 + 1) + " ");
}
String sqlOracle = "";
if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.ORACLE)) {
Integer quantidadePaginator2 = new Integer(0);
if (pgAtual > 1) {
quantidadePaginator2 = qtdPaginacao * pgAtual;
pgAtual = (pgAtual * qtdPaginacao) - qtdPaginacao;
pgAtual = pgAtual + 1;
} else {
quantidadePaginator2 = qtdPaginacao;
pgAtual = 0;
}
int intInicio = pgAtual;
int intLimite = quantidadePaginator2;
sqlOracle = sql + ordernarPor;
sqlOracle = paginacaoOracle(sql.toString(), intInicio, intLimite);
}
List lista = new ArrayList();
if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.ORACLE)) {
lista = this.execSQL(sqlOracle, parametros.toArray());
} else {
lista = this.execSQL(sql.toString(), parametros.toArray());
}
if (lista != null && !lista.isEmpty()) {
return engine.listConvertion(SolicitacaoServicoDTO.class, lista, listRetorno);
} else {
return null;
}
}
/**
* Lista todas as solicita��es pelo id do empregado, inclusive as solicita��es resolvidas
* Este m�todo inclui o par�metro "situacao", que permite o filtro das solicita��es por situa��� (Fechado, Em Andamento, etc.)
*
* @param pgAtual
* @param qtdPaginacao
* @param gerenciamentoBean
* @return
* @throws Exception
*/
public Collection<SolicitacaoServicoDTO> listaSolicitacoesPorIdEmpregado(Integer pgAtual, Integer qtdPaginacao, GerenciamentoServicosDTO gerenciamentoBean, Collection<ContratoDTO> listContratoUsuarioLogado, String[] filtro) throws Exception {
List listRetorno = new ArrayList();
listRetorno.add("idSolicitacaoServico");
listRetorno.add("idbaseconhecimento");
listRetorno.add("idServicoContrato");
listRetorno.add("idSolicitante");
listRetorno.add("idItemConfiguracao");
listRetorno.add("idItemConfiguracaoFilho");
listRetorno.add("idTipodemandaServico");
listRetorno.add("idContatoSolicitacaoServico");
listRetorno.add("idOrigem");
listRetorno.add("idResponsavel");
listRetorno.add("idTipoProblema");
listRetorno.add("idPrioridade");
listRetorno.add("idUnidade");
listRetorno.add("idFaseAtual");
listRetorno.add("idGrupoAtual");
listRetorno.add("dataHoraSolicitacao");
listRetorno.add("dataHoraLimite");
listRetorno.add("atendimentoPresencial");
listRetorno.add("prazoCapturaHH");
listRetorno.add("prazoCapturaMM");
listRetorno.add("prazoHH");
listRetorno.add("prazoMM");
listRetorno.add("descricao");
listRetorno.add("resposta");
listRetorno.add("dataHoraInicio");
listRetorno.add("dataHoraFim");
listRetorno.add("situacao");
listRetorno.add("idSolicitacaoPai");
listRetorno.add("detalhamentoCausa");
listRetorno.add("idCausaIncidente");
listRetorno.add("idCategoriaSolucao");
listRetorno.add("seqReabertura");
listRetorno.add("enviaEmailCriacao");
listRetorno.add("enviaEmailFinalizacao");
listRetorno.add("enviaEmailAcoes");
listRetorno.add("idGrupoNivel1");
listRetorno.add("solucaoTemporaria");
listRetorno.add("houveMudanca");
listRetorno.add("slaACombinar");
listRetorno.add("prazohhAnterior");
listRetorno.add("prazommAnterior");
listRetorno.add("idCalendario");
listRetorno.add("tempoDecorridoHH");
listRetorno.add("tempoDecorridoMM");
listRetorno.add("dataHoraSuspensao");
listRetorno.add("dataHoraReativacao");
listRetorno.add("impacto");
listRetorno.add("urgencia");
listRetorno.add("dataHoraCaptura");
listRetorno.add("tempoCapturaHH");
listRetorno.add("tempoCapturaMM");
listRetorno.add("tempoAtrasoHH");
listRetorno.add("tempoAtrasoMM");
listRetorno.add("tempoAtendimentoHH");
listRetorno.add("tempoAtendimentoMM");
listRetorno.add("idAcordoNivelServico");
listRetorno.add("idUltimaAprovacao");
listRetorno.add("dataHoraInicioSLA");
listRetorno.add("dataHoraSuspensaoSLA");
listRetorno.add("dataHoraReativacaoSLA");
listRetorno.add("situacaoSLA");
listRetorno.add("aprovacao");
listRetorno.add("idServico");
listRetorno.add("servico");
listRetorno.add("idTipoDemandaServico");
listRetorno.add("demanda");
listRetorno.add("idContrato");
listRetorno.add("contrato");
listRetorno.add("solicitante");
listRetorno.add("nomeUnidadeSolicitante");
listRetorno.add("responsavel");
listRetorno.add("nomeUnidadeResponsavel");
listRetorno.add("origem");
listRetorno.add("prioridade");
listRetorno.add("faseAtual");
listRetorno.add("grupoAtual");
listRetorno.add("grupoNivel1");
listRetorno.add("nomecontato");
listRetorno.add("emailcontato");
listRetorno.add("telefonecontato");
listRetorno.add("observacao");
listRetorno.add("idLocalidade");
listRetorno.add("idInstanciaFluxo");
StringBuilder sql = new StringBuilder();
List parametros = new ArrayList();
if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.SQLSERVER)) {
sql.append(" ;WITH TabelaTemporaria AS ( ");
}
sql.append("SELECT sol.idSolicitacaoServico, sol.idbaseconhecimento, sol.idServicoContrato, sol.idSolicitante, ");
sql.append(" sol.idItemConfiguracao, sol.idItemConfiguracaoFilho, sol.idtipodemandaservico, sol.idcontatosolicitacaoservico, ");
sql.append(" sol.idOrigem, sol.idResponsavel, sol.idTipoProblema, sol.idPrioridade, sol.idUnidade, sol.idFaseAtual, ");
sql.append(" sol.idGrupoAtual, sol.dataHoraSolicitacao, sol.dataHoraLimite, sol.atendimentoPresencial, sol.prazoCapturaHH, sol.prazoCapturaMM, ");
sql.append(" sol.prazoHH, sol.prazoMM, sol.descricao, sol.resposta, sol.dataHoraInicio, sol.dataHoraFim, sol.situacao, ");
sql.append(" sol.idSolicitacaoPai, sol.detalhamentoCausa, sol.idCausaIncidente, sol.idCategoriaSolucao, ");
sql.append(" sol.seqreabertura, sol.enviaEmailCriacao, sol.enviaEmailFinalizacao, sol.enviaEmailAcoes, ");
sql.append(" sol.idgruponivel1, sol.solucaoTemporaria, sol.houveMudanca, sol.slaACombinar, sol.prazohhAnterior, ");
sql.append(" sol.prazommAnterior, sol.idCalendario, sol.tempoDecorridoHH, sol.tempoDecorridoMM, sol.dataHoraSuspensao, ");
sql.append(" sol.dataHoraReativacao, sol.impacto, sol.urgencia, sol.dataHoraCaptura, sol.tempoCapturaHH, sol.tempoCapturaMM, ");
sql.append(" sol.tempoAtrasoHH, sol.tempoAtrasoMM, sol.tempoAtendimentoHH, sol.tempoAtendimentoMM, sol.idacordonivelservico, ");
sql.append(" sol.idultimaaprovacao, sol.datahorainiciosla, sol.datahorasuspensaosla, sol.datahorareativacaosla, sol.situacaosla, aprov.aprovacao, ");
sql.append(" s.idservico, s.nomeServico, td.idTipoDemandaServico as idtipodemandaservico2, td.nomeTipoDemandaServico, c.idContrato, c.numero, e1.nome, u1.nome as nomeUnidade1, ");
sql.append(" e2.nome as nomeResponsavel, u2.nome as nomeUnidade2, oa.descricao as descricao2, p.nomeprioridade, fs.nomefase, ");
sql.append(" g1.sigla, g2.sigla as siglaGupo2, cs.nomecontato, cs.emailcontato, cs.telefonecontato, cs.localizacaofisica ,cs.idlocalidade , es.idInstanciaFluxo ");
if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.SQLSERVER)) {
sql.append(" , ROW_NUMBER() OVER (ORDER BY sol.idsolicitacaoservico) AS Row ");
}
sql.append(" FROM solicitacaoservico sol ");
sql.append(" LEFT JOIN servicocontrato sc ON sc.idservicocontrato = sol.idservicocontrato ");
sql.append(" LEFT JOIN contratos c ON c.idcontrato = sc.idcontrato ");
sql.append(" LEFT JOIN servico s ON s.idservico = sc.idservico ");
sql.append(" LEFT JOIN tipodemandaservico td ON td.idtipodemandaservico = s.idtipodemandaservico ");
sql.append(" LEFT JOIN empregados e1 ON e1.idempregado = sol.idsolicitante ");
sql.append(" LEFT JOIN unidade u1 ON u1.idunidade = e1.idunidade ");
sql.append(" LEFT JOIN usuario usu ON usu.idusuario = sol.idresponsavel ");
sql.append(" LEFT JOIN empregados e2 ON e2.idempregado = usu.idempregado ");
sql.append(" LEFT JOIN unidade u2 ON u2.idunidade = e2.idunidade ");
sql.append(" LEFT JOIN origematendimento oa ON oa.idorigem = sol.idorigem ");
sql.append(" LEFT JOIN prioridade p ON p.idprioridade = sol.idprioridade ");
sql.append(" LEFT JOIN faseservico fs ON fs.idfase = sol.idfaseatual ");
sql.append(" LEFT JOIN grupo g1 ON g1.idgrupo = sol.idgrupoatual ");
sql.append(" LEFT JOIN grupo g2 ON g2.idgrupo = sol.idgruponivel1 ");
sql.append(" LEFT JOIN contatosolicitacaoservico cs ON cs.idcontatosolicitacaoservico = sol.idcontatosolicitacaoservico ");
sql.append(" LEFT JOIN aprovacaosolicitacaoservico aprov ON aprov.idaprovacaosolicitacaoservico = sol.idultimaaprovacao ");
sql.append(" INNER JOIN execucaosolicitacao es ON es.idsolicitacaoservico = sol.idsolicitacaoservico ");
sql.append("WHERE sol.idsolicitacaopai is null ");
if (listContratoUsuarioLogado != null && !listContratoUsuarioLogado.isEmpty()) {
// FILTRA CONTRATO DO USU�RIO LOGADO - S� retorna as Solicita��es dos Contratos em que o usu�rio logado est� inserido.
if (listContratoUsuarioLogado != null && !listContratoUsuarioLogado.isEmpty()) {
sql.append(" AND c.idcontrato in ( ");
boolean verifica = true;
for (ContratoDTO contrato : listContratoUsuarioLogado) {
if (verifica) {
sql.append(contrato.getIdContrato());
verifica = false;
} else {
sql.append(",");
sql.append(contrato.getIdContrato());
}
}
sql.append(" )");
}
}
/**
* Cristian em 03/12/2014: Implemnta��o do filtro por situa��o
*/
String stringDelimitada = UtilStrings.StringArrayParaStringDelimitadaComVirgula(filtro);
sql.append(" AND sol.situacao in ("+stringDelimitada+") ");
// Adiciona o filtro de pesquisa caso houver filtro
adicionarFiltroPesquisa(sql, gerenciamentoBean, parametros);
if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.POSTGRESQL)) {
Integer pgTotal = pgAtual * qtdPaginacao;
if (pgTotal > 0) {
pgAtual = pgTotal - qtdPaginacao;
}
sql.append(" ORDER BY sol.idSolicitacaoServico LIMIT " + qtdPaginacao + " OFFSET " + pgAtual);
}
if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.MYSQL)) {
Integer pgTotal = pgAtual * qtdPaginacao;
if (pgTotal > 0) {
pgAtual = pgTotal - qtdPaginacao;
}
sql.append(" LIMIT " + pgAtual + ", " + qtdPaginacao);
}
if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.SQLSERVER)) {
Integer quantidadePaginator2 = new Integer(0);
if (pgAtual > 0) {
quantidadePaginator2 = qtdPaginacao * pgAtual;
pgAtual = (pgAtual * qtdPaginacao) - qtdPaginacao;
} else {
quantidadePaginator2 = qtdPaginacao;
pgAtual = 0;
}
sql.append(" ) SELECT * FROM TabelaTemporaria WHERE Row> " + pgAtual + " and Row<" + (quantidadePaginator2 + 1) + " ");
}
String sqlOracle = "";
if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.ORACLE)) {
Integer quantidadePaginator2 = new Integer(0);
if (pgAtual > 1) {
quantidadePaginator2 = qtdPaginacao * pgAtual;
pgAtual = (pgAtual * qtdPaginacao) - qtdPaginacao;
pgAtual = pgAtual + 1;
} else {
quantidadePaginator2 = qtdPaginacao;
pgAtual = 0;
}
int intInicio = pgAtual;
int intLimite = quantidadePaginator2;
sqlOracle = paginacaoOracle(sql.toString(), intInicio, intLimite);
}
List lista = new ArrayList();
if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.ORACLE)) {
lista = this.execSQL(sqlOracle, parametros.toArray());
} else {
lista = this.execSQL(sql.toString(), parametros.toArray());
}
if (lista != null && !lista.isEmpty()) {
return engine.listConvertion(SolicitacaoServicoDTO.class, lista, listRetorno);
} else {
return null;
}
}
public Collection listaSolicitacoesSemPesquisaSatisfacao() throws Exception {
List listRetorno = new ArrayList();
List parametro = new ArrayList();
StringBuilder sql = new StringBuilder();
sql.append("select idsolicitacaoservico from " + getTableName() + " solicitacaoservico ");
sql.append("where solicitacaoservico.idsolicitacaoservico NOT IN (select idsolicitacaoservico from pesquisasatisfacao) ");
sql.append(" and UPPER(situacao) = 'FECHADA' ");
List lista = new ArrayList();
lista = this.execSQL(sql.toString(), parametro.toArray());
listRetorno.add("idSolicitacaoServico");
if (lista != null && !lista.isEmpty()) {
List listaResult = engine.listConvertion(SolicitacaoServicoDTO.class, lista, listRetorno);
return listaResult;
} else {
return null;
}
}
public Collection<SolicitacaoServicoDTO> listBySituacao(SituacaoSolicitacaoServico situacao) throws Exception {
List condicao = new ArrayList();
condicao.add(new Condition("situacao", "=", situacao.name()));
return super.findByCondition(condicao, null);
}
public Collection<SolicitacaoServicoDTO> listByTarefas(Collection<TarefaFluxoDTO> listTarefa) throws Exception {
List listRetorno = new ArrayList();
listRetorno.add("idSolicitacaoServico");
listRetorno.add("idbaseconhecimento");
listRetorno.add("idServicoContrato");
listRetorno.add("idSolicitante");
listRetorno.add("idItemConfiguracao");
listRetorno.add("idItemConfiguracaoFilho");
listRetorno.add("idTipodemandaServico");
listRetorno.add("idContatoSolicitacaoServico");
listRetorno.add("idOrigem");
listRetorno.add("idResponsavel");
listRetorno.add("idTipoProblema");
listRetorno.add("idPrioridade");
listRetorno.add("idUnidade");
listRetorno.add("idFaseAtual");
listRetorno.add("idGrupoAtual");
listRetorno.add("dataHoraSolicitacao");
listRetorno.add("dataHoraLimite");
listRetorno.add("atendimentoPresencial");
listRetorno.add("prazoCapturaHH");
listRetorno.add("prazoCapturaMM");
listRetorno.add("prazoHH");
listRetorno.add("prazoMM");
listRetorno.add("descricao");
listRetorno.add("resposta");
listRetorno.add("dataHoraInicio");
listRetorno.add("dataHoraFim");
listRetorno.add("situacao");
listRetorno.add("idSolicitacaoPai");
listRetorno.add("detalhamentoCausa");
listRetorno.add("idCausaIncidente");
listRetorno.add("idCategoriaSolucao");
listRetorno.add("seqReabertura");
listRetorno.add("enviaEmailCriacao");
listRetorno.add("enviaEmailFinalizacao");
listRetorno.add("enviaEmailAcoes");
listRetorno.add("idGrupoNivel1");
listRetorno.add("solucaoTemporaria");
listRetorno.add("houveMudanca");
listRetorno.add("slaACombinar");
listRetorno.add("prazohhAnterior");
listRetorno.add("prazommAnterior");
listRetorno.add("idCalendario");
listRetorno.add("tempoDecorridoHH");
listRetorno.add("tempoDecorridoMM");
listRetorno.add("dataHoraSuspensao");
listRetorno.add("dataHoraReativacao");
listRetorno.add("impacto");
listRetorno.add("urgencia");
listRetorno.add("dataHoraCaptura");
listRetorno.add("tempoCapturaHH");
listRetorno.add("tempoCapturaMM");
listRetorno.add("tempoAtrasoHH");
listRetorno.add("tempoAtrasoMM");
listRetorno.add("tempoAtendimentoHH");
listRetorno.add("tempoAtendimentoMM");
listRetorno.add("idAcordoNivelServico");
listRetorno.add("idUltimaAprovacao");
listRetorno.add("dataHoraInicioSLA");
listRetorno.add("dataHoraSuspensaoSLA");
listRetorno.add("dataHoraReativacaoSLA");
listRetorno.add("situacaoSLA");
listRetorno.add("aprovacao");
listRetorno.add("idServico");
listRetorno.add("servico");
listRetorno.add("idTipoDemandaServico");
listRetorno.add("demanda");
listRetorno.add("idContrato");
listRetorno.add("contrato");
listRetorno.add("solicitante");
listRetorno.add("nomeUnidadeSolicitante");
listRetorno.add("responsavel");
listRetorno.add("nomeUnidadeResponsavel");
listRetorno.add("origem");
listRetorno.add("prioridade");
listRetorno.add("faseAtual");
listRetorno.add("grupoAtual");
listRetorno.add("grupoNivel1");
listRetorno.add("nomecontato");
listRetorno.add("emailcontato");
listRetorno.add("telefonecontato");
listRetorno.add("observacao");
listRetorno.add("idLocalidade");
listRetorno.add("idInstanciaFluxo");
listRetorno.add("vencendo");
StringBuilder sql = new StringBuilder();
sql.append("SELECT sol.idSolicitacaoServico, sol.idbaseconhecimento, sol.idServicoContrato, sol.idSolicitante, ");
sql.append(" sol.idItemConfiguracao, sol.idItemConfiguracaoFilho, sol.idtipodemandaservico, sol.idcontatosolicitacaoservico, ");
sql.append(" sol.idOrigem, sol.idResponsavel, sol.idTipoProblema, sol.idPrioridade, sol.idUnidade, sol.idFaseAtual, ");
sql.append(" sol.idGrupoAtual, sol.dataHoraSolicitacao, sol.dataHoraLimite, sol.atendimentoPresencial, sol.prazoCapturaHH, sol.prazoCapturaMM, ");
sql.append(" sol.prazoHH, sol.prazoMM, sol.descricao, sol.resposta, sol.dataHoraInicio, sol.dataHoraFim, sol.situacao, ");
sql.append(" sol.idSolicitacaoPai, sol.detalhamentoCausa, sol.idCausaIncidente, sol.idCategoriaSolucao, ");
sql.append(" sol.seqreabertura, sol.enviaEmailCriacao, sol.enviaEmailFinalizacao, sol.enviaEmailAcoes, ");
sql.append(" sol.idgruponivel1, sol.solucaoTemporaria, sol.houveMudanca, sol.slaACombinar, sol.prazohhAnterior, ");
sql.append(" sol.prazommAnterior, sol.idCalendario, sol.tempoDecorridoHH, sol.tempoDecorridoMM, sol.dataHoraSuspensao, ");
sql.append(" sol.dataHoraReativacao, sol.impacto, sol.urgencia, sol.dataHoraCaptura, sol.tempoCapturaHH, sol.tempoCapturaMM, ");
sql.append(" sol.tempoAtrasoHH, sol.tempoAtrasoMM, sol.tempoAtendimentoHH, sol.tempoAtendimentoMM, sol.idacordonivelservico, ");
sql.append(" sol.idultimaaprovacao, sol.datahorainiciosla, sol.datahorasuspensaosla, sol.datahorareativacaosla, sol.situacaosla, aprov.aprovacao, ");
sql.append(" s.idservico, s.nomeServico, td.idTipoDemandaServico, td.nomeTipoDemandaServico, c.idContrato, c.numero, e1.nome, u1.nome, ");
sql.append(" e2.nome, u2.nome, oa.descricao, p.nomeprioridade, fs.nomefase, ");
sql.append(" g1.sigla, g2.sigla, cs.nomecontato, cs.emailcontato, cs.telefonecontato, cs.localizacaofisica ,cs.idlocalidade , es.idInstanciaFluxo, sol.vencendo ");
sql.append(" FROM solicitacaoservico sol ");
sql.append(" LEFT JOIN servicocontrato sc ON sc.idservicocontrato = sol.idservicocontrato ");
sql.append(" LEFT JOIN contratos c ON c.idcontrato = sc.idcontrato ");
sql.append(" LEFT JOIN servico s ON s.idservico = sc.idservico ");
sql.append(" LEFT JOIN tipodemandaservico td ON td.idtipodemandaservico = s.idtipodemandaservico ");
sql.append(" LEFT JOIN empregados e1 ON e1.idempregado = sol.idsolicitante ");
sql.append(" LEFT JOIN unidade u1 ON u1.idunidade = e1.idunidade ");
sql.append(" LEFT JOIN usuario usu ON usu.idusuario = sol.idresponsavel ");
sql.append(" LEFT JOIN empregados e2 ON e2.idempregado = usu.idempregado ");
sql.append(" LEFT JOIN unidade u2 ON u2.idunidade = e2.idunidade ");
sql.append(" LEFT JOIN origematendimento oa ON oa.idorigem = sol.idorigem ");
sql.append(" LEFT JOIN prioridade p ON p.idprioridade = sol.idprioridade ");
sql.append(" LEFT JOIN faseservico fs ON fs.idfase = sol.idfaseatual ");
sql.append(" LEFT JOIN grupo g1 ON g1.idgrupo = sol.idgrupoatual ");
sql.append(" LEFT JOIN grupo g2 ON g2.idgrupo = sol.idgruponivel1 ");
sql.append(" LEFT JOIN contatosolicitacaoservico cs ON cs.idcontatosolicitacaoservico = sol.idcontatosolicitacaoservico ");
sql.append(" LEFT JOIN aprovacaosolicitacaoservico aprov ON aprov.idaprovacaosolicitacaoservico = sol.idultimaaprovacao ");
sql.append(" INNER JOIN execucaosolicitacao es ON es.idsolicitacaoservico = sol.idsolicitacaoservico ");
sql.append("WHERE sol.idsolicitacaopai is null ");
if (listTarefa != null && !listTarefa.isEmpty()) {
// Hack oracle
if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.ORACLE)) {
sql.append("and es.idInstanciaFluxo in ( select * from table(sys.odcinumberlist( ");
} else {
sql.append("and es.idInstanciaFluxo in ( ");
}
int size = listTarefa.size();
int max = 1;
int aux = 0;
int CONSTANT = 999;
// Hack oracle
if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.ORACLE)) {
for (TarefaFluxoDTO tarefaFluxoDto : listTarefa) {
aux += 1;
sql.append(tarefaFluxoDto.getIdInstancia());
if (aux == size) {
sql.append(")))");
} else if (aux > (CONSTANT * (max - 1)) && aux <= (CONSTANT * max)) {
sql.append(")) union select * from table(sys.odcinumberlist( ");
max++;
} else {
sql.append(",");
}
}
} else {
for (TarefaFluxoDTO tarefaFluxoDto : listTarefa) {
aux += 1;
sql.append(tarefaFluxoDto.getIdInstancia());
if (aux == size) {
sql.append(")");
} else {
sql.append(",");
}
}
}
} else {
return null;
}
List lista = new ArrayList();
lista = this.execSQL(sql.toString(), null);
if (lista != null && !lista.isEmpty()) {
return engine.listConvertion(SolicitacaoServicoDTO.class, lista, listRetorno);
} else {
return null;
}
}
/**
* Utilizado para a RENDERIZA��O do GR�FICO, pois no Gr�fico n�o � necess�rio a utiliza��o de Pagina��o. Esta consulta considera o Login do Usu�rio Logado, os Contratos em que est� inserido e os
* Filtros Selecionados na tela de Gerenciamento de Servi�os.
*
* @param listTarefa
* @param gerenciamentoBean
* @param listContratoUsuarioLogado
* @return Collection<SolicitacaoServicoDTO>
* @throws Exception
* @author valdoilo.damasceno
* @since 05.11.2013
*/
public Collection<SolicitacaoServicoDTO> listByTarefas(Collection<TarefaFluxoDTO> listTarefa, GerenciamentoServicosDTO gerenciamentoBean, Collection<ContratoDTO> listContratoUsuarioLogado)
throws Exception {
List listRetorno = new ArrayList();
listRetorno.add("idSolicitacaoServico");
listRetorno.add("idbaseconhecimento");
listRetorno.add("idServicoContrato");
listRetorno.add("idSolicitante");
listRetorno.add("idItemConfiguracao");
listRetorno.add("idItemConfiguracaoFilho");
listRetorno.add("idTipodemandaServico");
listRetorno.add("idContatoSolicitacaoServico");
listRetorno.add("idOrigem");
listRetorno.add("idResponsavel");
listRetorno.add("idTipoProblema");
listRetorno.add("idPrioridade");
listRetorno.add("idUnidade");
listRetorno.add("idFaseAtual");
listRetorno.add("idGrupoAtual");
listRetorno.add("dataHoraSolicitacao");
listRetorno.add("dataHoraLimite");
listRetorno.add("atendimentoPresencial");
listRetorno.add("prazoCapturaHH");
listRetorno.add("prazoCapturaMM");
listRetorno.add("prazoHH");
listRetorno.add("prazoMM");
listRetorno.add("descricao");
listRetorno.add("resposta");
listRetorno.add("dataHoraInicio");
listRetorno.add("dataHoraFim");
listRetorno.add("situacao");
listRetorno.add("idSolicitacaoPai");
listRetorno.add("detalhamentoCausa");
listRetorno.add("idCausaIncidente");
listRetorno.add("idCategoriaSolucao");
listRetorno.add("seqReabertura");
listRetorno.add("enviaEmailCriacao");
listRetorno.add("enviaEmailFinalizacao");
listRetorno.add("enviaEmailAcoes");
listRetorno.add("idGrupoNivel1");
listRetorno.add("solucaoTemporaria");
listRetorno.add("houveMudanca");
listRetorno.add("slaACombinar");
listRetorno.add("prazohhAnterior");
listRetorno.add("prazommAnterior");
listRetorno.add("idCalendario");
listRetorno.add("tempoDecorridoHH");
listRetorno.add("tempoDecorridoMM");
listRetorno.add("dataHoraSuspensao");
listRetorno.add("dataHoraReativacao");
listRetorno.add("impacto");
listRetorno.add("urgencia");
listRetorno.add("dataHoraCaptura");
listRetorno.add("tempoCapturaHH");
listRetorno.add("tempoCapturaMM");
listRetorno.add("tempoAtrasoHH");
listRetorno.add("tempoAtrasoMM");
listRetorno.add("tempoAtendimentoHH");
listRetorno.add("tempoAtendimentoMM");
listRetorno.add("idAcordoNivelServico");
listRetorno.add("idUltimaAprovacao");
listRetorno.add("dataHoraInicioSLA");
listRetorno.add("dataHoraSuspensaoSLA");
listRetorno.add("dataHoraReativacaoSLA");
listRetorno.add("situacaoSLA");
listRetorno.add("aprovacao");
listRetorno.add("idServico");
listRetorno.add("servico");
listRetorno.add("idTipoDemandaServico");
listRetorno.add("demanda");
listRetorno.add("idContrato");
listRetorno.add("contrato");
listRetorno.add("solicitante");
listRetorno.add("nomeUnidadeSolicitante");
listRetorno.add("responsavel");
listRetorno.add("nomeUnidadeResponsavel");
listRetorno.add("origem");
listRetorno.add("prioridade");
listRetorno.add("faseAtual");
listRetorno.add("grupoAtual");
listRetorno.add("grupoNivel1");
listRetorno.add("nomecontato");
listRetorno.add("emailcontato");
listRetorno.add("telefonecontato");
listRetorno.add("observacao");
listRetorno.add("idLocalidade");
listRetorno.add("idInstanciaFluxo");
listRetorno.add("vencendo");
listRetorno.add("idTarefa");
StringBuilder sql = new StringBuilder();
List parametros = new ArrayList();
sql.append("SELECT sol.idSolicitacaoServico, sol.idbaseconhecimento, sol.idServicoContrato, sol.idSolicitante, ");
sql.append(" sol.idItemConfiguracao, sol.idItemConfiguracaoFilho, sol.idtipodemandaservico, sol.idcontatosolicitacaoservico, ");
sql.append(" sol.idOrigem, sol.idResponsavel, sol.idTipoProblema, sol.idPrioridade, sol.idUnidade, sol.idFaseAtual, ");
sql.append(" sol.idGrupoAtual, sol.dataHoraSolicitacao, sol.dataHoraLimite, sol.atendimentoPresencial, sol.prazoCapturaHH, sol.prazoCapturaMM, ");
sql.append(" sol.prazoHH, sol.prazoMM, sol.descricao, sol.resposta, sol.dataHoraInicio, sol.dataHoraFim, sol.situacao, ");
sql.append(" sol.idSolicitacaoPai, sol.detalhamentoCausa, sol.idCausaIncidente, sol.idCategoriaSolucao, ");
sql.append(" sol.seqreabertura, sol.enviaEmailCriacao, sol.enviaEmailFinalizacao, sol.enviaEmailAcoes, ");
sql.append(" sol.idgruponivel1, sol.solucaoTemporaria, sol.houveMudanca, sol.slaACombinar, sol.prazohhAnterior, ");
sql.append(" sol.prazommAnterior, sol.idCalendario, sol.tempoDecorridoHH, sol.tempoDecorridoMM, sol.dataHoraSuspensao, ");
sql.append(" sol.dataHoraReativacao, sol.impacto, sol.urgencia, sol.dataHoraCaptura, sol.tempoCapturaHH, sol.tempoCapturaMM, ");
sql.append(" sol.tempoAtrasoHH, sol.tempoAtrasoMM, sol.tempoAtendimentoHH, sol.tempoAtendimentoMM, sol.idacordonivelservico, ");
sql.append(" sol.idultimaaprovacao, sol.datahorainiciosla, sol.datahorasuspensaosla, sol.datahorareativacaosla, sol.situacaosla, aprov.aprovacao, ");
sql.append(" s.idservico, s.nomeServico, td.idTipoDemandaServico, td.nomeTipoDemandaServico, c.idContrato, c.numero, e1.nome, u1.nome, ");
sql.append(" e2.nome, u2.nome, oa.descricao, p.nomeprioridade, fs.nomefase, ");
sql.append(" g1.sigla, g2.sigla, cs.nomecontato, cs.emailcontato, cs.telefonecontato, cs.localizacaofisica ,cs.idlocalidade , es.idInstanciaFluxo, sol.vencendo, it.iditemtrabalho ");
sql.append(" FROM solicitacaoservico sol ");
sql.append(" LEFT JOIN servicocontrato sc ON sc.idservicocontrato = sol.idservicocontrato ");
sql.append(" LEFT JOIN contratos c ON c.idcontrato = sc.idcontrato ");
sql.append(" LEFT JOIN servico s ON s.idservico = sc.idservico ");
sql.append(" LEFT JOIN tipodemandaservico td ON td.idtipodemandaservico = s.idtipodemandaservico ");
sql.append(" LEFT JOIN empregados e1 ON e1.idempregado = sol.idsolicitante ");
sql.append(" LEFT JOIN unidade u1 ON u1.idunidade = e1.idunidade ");
sql.append(" LEFT JOIN usuario usu ON usu.idusuario = sol.idresponsavel ");
sql.append(" LEFT JOIN empregados e2 ON e2.idempregado = usu.idempregado ");
sql.append(" LEFT JOIN unidade u2 ON u2.idunidade = e2.idunidade ");
sql.append(" LEFT JOIN origematendimento oa ON oa.idorigem = sol.idorigem ");
sql.append(" LEFT JOIN prioridade p ON p.idprioridade = sol.idprioridade ");
sql.append(" LEFT JOIN faseservico fs ON fs.idfase = sol.idfaseatual ");
sql.append(" LEFT JOIN grupo g1 ON g1.idgrupo = sol.idgrupoatual ");
sql.append(" LEFT JOIN grupo g2 ON g2.idgrupo = sol.idgruponivel1 ");
sql.append(" LEFT JOIN contatosolicitacaoservico cs ON cs.idcontatosolicitacaoservico = sol.idcontatosolicitacaoservico ");
sql.append(" LEFT JOIN aprovacaosolicitacaoservico aprov ON aprov.idaprovacaosolicitacaoservico = sol.idultimaaprovacao ");
sql.append(" INNER JOIN execucaosolicitacao es ON es.idsolicitacaoservico = sol.idsolicitacaoservico ");
sql.append(" INNER JOIN bpm_itemtrabalhofluxo it ON it.idinstancia = es.idinstanciafluxo ");
sql.append(" WHERE sol.idsolicitacaopai is null ");
if (listTarefa != null && !listTarefa.isEmpty() && listContratoUsuarioLogado != null && !listContratoUsuarioLogado.isEmpty()) {
// Hack oracle
if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.ORACLE)) {
sql.append("and it.iditemtrabalho in ( select * from table(sys.odcinumberlist( ");
} else {
sql.append("and it.iditemtrabalho in ( ");
}
int size = listTarefa.size();
int max = 1;
int aux = 0;
int CONSTANT = 999;
// Hack oracle
if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.ORACLE)) {
for (TarefaFluxoDTO tarefaFluxoDto : listTarefa) {
aux += 1;
sql.append(tarefaFluxoDto.getIdItemTrabalho());
if (aux == size) {
sql.append(")))");
} else if (aux > (CONSTANT * (max - 1)) && aux <= (CONSTANT * max)) {
sql.append(")) union select * from table(sys.odcinumberlist( ");
max++;
} else {
sql.append(",");
}
}
} else {
for (TarefaFluxoDTO tarefaFluxoDto : listTarefa) {
aux += 1;
sql.append(tarefaFluxoDto.getIdItemTrabalho());
if (aux == size) {
sql.append(")");
} else {
sql.append(",");
}
}
}
// FILTRA CONTRATO DO USU�RIO LOGADO - S� retorna as Solicita��es dos Contratos em que o usu�rio logado est� inserido.
if (listContratoUsuarioLogado != null && !listContratoUsuarioLogado.isEmpty()) {
sql.append(" AND c.idcontrato in ( ");
boolean verifica = true;
for (ContratoDTO contrato : listContratoUsuarioLogado) {
if (verifica) {
sql.append(contrato.getIdContrato());
verifica = false;
} else {
sql.append(",");
sql.append(contrato.getIdContrato());
}
}
sql.append(" )");
}
} else {
return null;
}
// Adiciona o filtro de pesquisa caso houver filtro
adicionarFiltroPesquisa(sql, gerenciamentoBean, parametros);
List lista = new ArrayList();
lista = this.execSQL(sql.toString(), parametros.toArray());
if (lista != null && !lista.isEmpty()) {
return engine.listConvertion(SolicitacaoServicoDTO.class, lista, listRetorno);
} else {
return null;
}
}
@SuppressWarnings("unused")
public Collection<SolicitacaoServicoDTO> listByTarefas(Collection<TarefaFluxoDTO> listTarefa, Integer pgAtual, Integer qtdPaginacao) throws Exception {
List listRetorno = new ArrayList();
listRetorno.add("idSolicitacaoServico");
listRetorno.add("idbaseconhecimento");
listRetorno.add("idServicoContrato");
listRetorno.add("idSolicitante");
listRetorno.add("idItemConfiguracao");
listRetorno.add("idItemConfiguracaoFilho");
listRetorno.add("idTipodemandaServico");
listRetorno.add("idContatoSolicitacaoServico");
listRetorno.add("idOrigem");
listRetorno.add("idResponsavel");
listRetorno.add("idTipoProblema");
listRetorno.add("idPrioridade");
listRetorno.add("idUnidade");
listRetorno.add("idFaseAtual");
listRetorno.add("idGrupoAtual");
listRetorno.add("dataHoraSolicitacao");
listRetorno.add("dataHoraLimite");
listRetorno.add("atendimentoPresencial");
listRetorno.add("prazoCapturaHH");
listRetorno.add("prazoCapturaMM");
listRetorno.add("prazoHH");
listRetorno.add("prazoMM");
listRetorno.add("descricao");
listRetorno.add("resposta");
listRetorno.add("dataHoraInicio");
listRetorno.add("dataHoraFim");
listRetorno.add("situacao");
listRetorno.add("idSolicitacaoPai");
listRetorno.add("detalhamentoCausa");
listRetorno.add("idCausaIncidente");
listRetorno.add("idCategoriaSolucao");
listRetorno.add("seqReabertura");
listRetorno.add("enviaEmailCriacao");
listRetorno.add("enviaEmailFinalizacao");
listRetorno.add("enviaEmailAcoes");
listRetorno.add("idGrupoNivel1");
listRetorno.add("solucaoTemporaria");
listRetorno.add("houveMudanca");
listRetorno.add("slaACombinar");
listRetorno.add("prazohhAnterior");
listRetorno.add("prazommAnterior");
listRetorno.add("idCalendario");
listRetorno.add("tempoDecorridoHH");
listRetorno.add("tempoDecorridoMM");
listRetorno.add("dataHoraSuspensao");
listRetorno.add("dataHoraReativacao");
listRetorno.add("impacto");
listRetorno.add("urgencia");
listRetorno.add("dataHoraCaptura");
listRetorno.add("tempoCapturaHH");
listRetorno.add("tempoCapturaMM");
listRetorno.add("tempoAtrasoHH");
listRetorno.add("tempoAtrasoMM");
listRetorno.add("tempoAtendimentoHH");
listRetorno.add("tempoAtendimentoMM");
listRetorno.add("idAcordoNivelServico");
listRetorno.add("idUltimaAprovacao");
listRetorno.add("dataHoraInicioSLA");
listRetorno.add("dataHoraSuspensaoSLA");
listRetorno.add("dataHoraReativacaoSLA");
listRetorno.add("situacaoSLA");
listRetorno.add("aprovacao");
listRetorno.add("idServico");
listRetorno.add("servico");
listRetorno.add("idTipoDemandaServico");
listRetorno.add("demanda");
listRetorno.add("idContrato");
listRetorno.add("contrato");
listRetorno.add("solicitante");
listRetorno.add("nomeUnidadeSolicitante");
listRetorno.add("responsavel");
listRetorno.add("nomeUnidadeResponsavel");
listRetorno.add("origem");
listRetorno.add("prioridade");
listRetorno.add("faseAtual");
listRetorno.add("grupoAtual");
listRetorno.add("grupoNivel1");
listRetorno.add("nomecontato");
listRetorno.add("emailcontato");
listRetorno.add("telefonecontato");
listRetorno.add("observacao");
listRetorno.add("idLocalidade");
listRetorno.add("idInstanciaFluxo");
StringBuilder sql = new StringBuilder();
if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.SQLSERVER)) {
sql.append(" ;WITH TabelaTemporaria AS ( ");
}
sql.append("SELECT sol.idSolicitacaoServico, sol.idbaseconhecimento, sol.idServicoContrato, sol.idSolicitante, ");
sql.append(" sol.idItemConfiguracao, sol.idItemConfiguracaoFilho, sol.idtipodemandaservico, sol.idcontatosolicitacaoservico, ");
sql.append(" sol.idOrigem, sol.idResponsavel, sol.idTipoProblema, sol.idPrioridade, sol.idUnidade, sol.idFaseAtual, ");
sql.append(" sol.idGrupoAtual, sol.dataHoraSolicitacao, sol.dataHoraLimite, sol.atendimentoPresencial, sol.prazoCapturaHH, sol.prazoCapturaMM, ");
sql.append(" sol.prazoHH, sol.prazoMM, sol.descricao, sol.resposta, sol.dataHoraInicio, sol.dataHoraFim, sol.situacao, ");
sql.append(" sol.idSolicitacaoPai, sol.detalhamentoCausa, sol.idCausaIncidente, sol.idCategoriaSolucao, ");
sql.append(" sol.seqreabertura, sol.enviaEmailCriacao, sol.enviaEmailFinalizacao, sol.enviaEmailAcoes, ");
sql.append(" sol.idgruponivel1, sol.solucaoTemporaria, sol.houveMudanca, sol.slaACombinar, sol.prazohhAnterior, ");
sql.append(" sol.prazommAnterior, sol.idCalendario, sol.tempoDecorridoHH, sol.tempoDecorridoMM, sol.dataHoraSuspensao, ");
sql.append(" sol.dataHoraReativacao, sol.impacto, sol.urgencia, sol.dataHoraCaptura, sol.tempoCapturaHH, sol.tempoCapturaMM, ");
sql.append(" sol.tempoAtrasoHH, sol.tempoAtrasoMM, sol.tempoAtendimentoHH, sol.tempoAtendimentoMM, sol.idacordonivelservico, ");
sql.append(" sol.idultimaaprovacao, sol.datahorainiciosla, sol.datahorasuspensaosla, sol.datahorareativacaosla, sol.situacaosla, aprov.aprovacao, ");
sql.append(" s.idservico, s.nomeServico, td.idTipoDemandaServico as idtipodemandaservico2, td.nomeTipoDemandaServico, c.idContrato, c.numero, e1.nome, u1.nome as nomeUnidade1, ");
sql.append(" e2.nome as nomeResponsavel, u2.nome as nomeUnidade2, oa.descricao as descricao2, p.nomeprioridade, fs.nomefase, ");
sql.append(" g1.sigla, g2.sigla as siglaGupo2, cs.nomecontato, cs.emailcontato, cs.telefonecontato, cs.localizacaofisica ,cs.idlocalidade , es.idInstanciaFluxo ");
if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.SQLSERVER)) {
sql.append(" , ROW_NUMBER() OVER (ORDER BY sol.idsolicitacaoservico) AS Row ");
}
sql.append(" FROM solicitacaoservico sol ");
sql.append(" LEFT JOIN servicocontrato sc ON sc.idservicocontrato = sol.idservicocontrato ");
sql.append(" LEFT JOIN contratos c ON c.idcontrato = sc.idcontrato ");
sql.append(" LEFT JOIN servico s ON s.idservico = sc.idservico ");
sql.append(" LEFT JOIN tipodemandaservico td ON td.idtipodemandaservico = s.idtipodemandaservico ");
sql.append(" LEFT JOIN empregados e1 ON e1.idempregado = sol.idsolicitante ");
sql.append(" LEFT JOIN unidade u1 ON u1.idunidade = e1.idunidade ");
sql.append(" LEFT JOIN usuario usu ON usu.idusuario = sol.idresponsavel ");
sql.append(" LEFT JOIN empregados e2 ON e2.idempregado = usu.idempregado ");
sql.append(" LEFT JOIN unidade u2 ON u2.idunidade = e2.idunidade ");
sql.append(" LEFT JOIN origematendimento oa ON oa.idorigem = sol.idorigem ");
sql.append(" LEFT JOIN prioridade p ON p.idprioridade = sol.idprioridade ");
sql.append(" LEFT JOIN faseservico fs ON fs.idfase = sol.idfaseatual ");
sql.append(" LEFT JOIN grupo g1 ON g1.idgrupo = sol.idgrupoatual ");
sql.append(" LEFT JOIN grupo g2 ON g2.idgrupo = sol.idgruponivel1 ");
sql.append(" LEFT JOIN contatosolicitacaoservico cs ON cs.idcontatosolicitacaoservico = sol.idcontatosolicitacaoservico ");
sql.append(" LEFT JOIN aprovacaosolicitacaoservico aprov ON aprov.idaprovacaosolicitacaoservico = sol.idultimaaprovacao ");
sql.append(" INNER JOIN execucaosolicitacao es ON es.idsolicitacaoservico = sol.idsolicitacaoservico ");
sql.append("WHERE sol.idsolicitacaopai is null ");
int qtdIds = 0;
if (listTarefa != null && !listTarefa.isEmpty()) {
// Hack oracle
if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.ORACLE)) {
sql.append("and es.idInstanciaFluxo in ( select * from table(sys.odcinumberlist( ");
} else {
sql.append("and es.idInstanciaFluxo in ( ");
}
int size = listTarefa.size();
int max = 1;
int aux = 0;
int CONSTANT = 999;
// Hack oracle
if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.ORACLE)) {
for (TarefaFluxoDTO tarefaFluxoDto : listTarefa) {
aux += 1;
sql.append(tarefaFluxoDto.getIdInstancia());
if (aux == size) {
sql.append(")))");
} else if (aux > (CONSTANT * (max - 1)) && aux <= (CONSTANT * max)) {
sql.append(")) union select * from table(sys.odcinumberlist( ");
qtdIds++;
max++;
} else {
sql.append(",");
}
}
} else {
for (TarefaFluxoDTO tarefaFluxoDto : listTarefa) {
aux += 1;
sql.append(tarefaFluxoDto.getIdInstancia());
if (aux == size) {
sql.append(")");
} else {
sql.append(",");
}
}
}
} else {
return null;
}
if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.POSTGRESQL)) {
Integer pgTotal = pgAtual * qtdPaginacao;
pgAtual = pgTotal - qtdPaginacao;
sql.append(" ORDER BY sol.idSolicitacaoServico LIMIT " + qtdPaginacao + " OFFSET " + pgAtual);
}
if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.MYSQL)) {
Integer pgTotal = pgAtual * qtdPaginacao;
pgAtual = pgTotal - qtdPaginacao;
sql.append(" LIMIT " + pgAtual + ", " + qtdPaginacao);
}
if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.SQLSERVER)) {
Integer quantidadePaginator2 = new Integer(0);
if (pgAtual > 0) {
quantidadePaginator2 = qtdPaginacao * pgAtual;
pgAtual = (pgAtual * qtdPaginacao) - qtdPaginacao;
} else {
quantidadePaginator2 = qtdPaginacao;
pgAtual = 0;
}
sql.append(" ) SELECT * FROM TabelaTemporaria WHERE Row> " + pgAtual + " and Row<" + (quantidadePaginator2 + 1) + " ");
}
String sqlOracle = "";
if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.ORACLE)) {
Integer quantidadePaginator2 = new Integer(0);
if (pgAtual > 1) {
quantidadePaginator2 = qtdPaginacao * pgAtual;
pgAtual = (pgAtual * qtdPaginacao) - qtdPaginacao;
pgAtual = pgAtual + 1;
} else {
quantidadePaginator2 = qtdPaginacao;
pgAtual = 0;
}
int intInicio = pgAtual;
int intLimite = quantidadePaginator2;
sqlOracle = paginacaoOracle(sql.toString(), intInicio, intLimite);
}
List lista = new ArrayList();
if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.ORACLE)) {
lista = this.execSQL(sqlOracle, null);
} else {
lista = this.execSQL(sql.toString(), null);
}
if (lista != null && !lista.isEmpty()) {
return engine.listConvertion(SolicitacaoServicoDTO.class, lista, listRetorno);
} else {
return null;
}
}
/**
* Retorna a Lista de TarefaDTO com SolicitacaoServidoDTO de acordo com o Login, Lista de Contratos do Usu�rio Logado e os Filtros Selecionados na Tela de Gerenciamento de Servi�os.
*
* @param listTarefas
* @param qtdAtual
* @param qtdAPaginacao
* @param gerenciamentoBean
* @param listContratoUsuarioLogado
* @return Collection<SolicitacaoServicoDTO>
* @throws Exception
* @author valdoilo.damasceno
* @since 05.11.2013
*/
public Collection<SolicitacaoServicoDTO> listByTarefas(Collection<TarefaFluxoDTO> listTarefa, Integer pgAtual, Integer qtdPaginacao, GerenciamentoServicosDTO gerenciamentoBean,
Collection<ContratoDTO> listContratoUsuarioLogado) throws Exception {
String ordernarPor = gerenciamentoBean.getOrdenarPor() == null ? "" : gerenciamentoBean.getOrdenarPor();
if (ordernarPor.equals("NSolicitacao")) {
ordernarPor = " ORDER BY sol.idsolicitacaoservico ";
} else if (ordernarPor.equals("servico")) {
ordernarPor = " ORDER BY nomeservico ";
} else if (ordernarPor.equals("responsavel")) {
ordernarPor = " ORDER BY e2.nome ";
} else if (ordernarPor.equals("prioridade")) {
ordernarPor = " ORDER BY sol.idprioridade ";
} else if (ordernarPor.equals("situacao")) {
ordernarPor = " ORDER BY sol.situacao ";
} else if (ordernarPor.equals("descricao")) {
ordernarPor = " ORDER BY sol.descricao ";
} else if (ordernarPor.equals("dataHoraLimite")) {
ordernarPor = " ORDER BY sol.datahoralimite ";
} else if (ordernarPor.equals("dataHoraLimiteCriacao")) {
ordernarPor = " ORDER BY sol.datahorasolicitacao ";
} else {
ordernarPor = " ORDER BY sol.idresponsavel ";
}
List listRetorno = new ArrayList();
listRetorno.add("idSolicitacaoServico");
listRetorno.add("idbaseconhecimento");
listRetorno.add("idServicoContrato");
listRetorno.add("idSolicitante");
listRetorno.add("idItemConfiguracao");
listRetorno.add("idItemConfiguracaoFilho");
listRetorno.add("idTipodemandaServico");
listRetorno.add("idContatoSolicitacaoServico");
listRetorno.add("idOrigem");
listRetorno.add("idResponsavel");
listRetorno.add("idTipoProblema");
listRetorno.add("idPrioridade");
listRetorno.add("idUnidade");
listRetorno.add("idFaseAtual");
listRetorno.add("idGrupoAtual");
listRetorno.add("dataHoraSolicitacao");
listRetorno.add("dataHoraLimite");
listRetorno.add("atendimentoPresencial");
listRetorno.add("prazoCapturaHH");
listRetorno.add("prazoCapturaMM");
listRetorno.add("prazoHH");
listRetorno.add("prazoMM");
listRetorno.add("descricao");
listRetorno.add("resposta");
listRetorno.add("dataHoraInicio");
listRetorno.add("dataHoraFim");
listRetorno.add("situacao");
listRetorno.add("idSolicitacaoPai");
listRetorno.add("detalhamentoCausa");
listRetorno.add("idCausaIncidente");
listRetorno.add("idCategoriaSolucao");
listRetorno.add("seqReabertura");
listRetorno.add("enviaEmailCriacao");
listRetorno.add("enviaEmailFinalizacao");
listRetorno.add("enviaEmailAcoes");
listRetorno.add("idGrupoNivel1");
listRetorno.add("solucaoTemporaria");
listRetorno.add("houveMudanca");
listRetorno.add("slaACombinar");
listRetorno.add("prazohhAnterior");
listRetorno.add("prazommAnterior");
listRetorno.add("idCalendario");
listRetorno.add("tempoDecorridoHH");
listRetorno.add("tempoDecorridoMM");
listRetorno.add("dataHoraSuspensao");
listRetorno.add("dataHoraReativacao");
listRetorno.add("impacto");
listRetorno.add("urgencia");
listRetorno.add("dataHoraCaptura");
listRetorno.add("tempoCapturaHH");
listRetorno.add("tempoCapturaMM");
listRetorno.add("tempoAtrasoHH");
listRetorno.add("tempoAtrasoMM");
listRetorno.add("tempoAtendimentoHH");
listRetorno.add("tempoAtendimentoMM");
listRetorno.add("idAcordoNivelServico");
listRetorno.add("idUltimaAprovacao");
listRetorno.add("dataHoraInicioSLA");
listRetorno.add("dataHoraSuspensaoSLA");
listRetorno.add("dataHoraReativacaoSLA");
listRetorno.add("situacaoSLA");
listRetorno.add("aprovacao");
listRetorno.add("idServico");
listRetorno.add("servico");
listRetorno.add("idTipoDemandaServico");
listRetorno.add("demanda");
listRetorno.add("idContrato");
listRetorno.add("contrato");
listRetorno.add("solicitante");
listRetorno.add("nomeUnidadeSolicitante");
listRetorno.add("responsavel");
listRetorno.add("nomeUnidadeResponsavel");
listRetorno.add("origem");
listRetorno.add("prioridade");
listRetorno.add("faseAtual");
listRetorno.add("grupoAtual");
listRetorno.add("grupoNivel1");
listRetorno.add("nomecontato");
listRetorno.add("emailcontato");
listRetorno.add("telefonecontato");
listRetorno.add("observacao");
listRetorno.add("idLocalidade");
listRetorno.add("idInstanciaFluxo");
listRetorno.add("vencendo");
listRetorno.add("idTarefa");
listRetorno.add("idSolicitacaoRelacionada");
listRetorno.add("qtdefilhas");
listRetorno.add("qtdeItensConfiguracaoRelacionados");
StringBuilder sql = new StringBuilder();
List parametros = new ArrayList();
if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.SQLSERVER)) {
sql.append(" ;WITH TabelaTemporaria AS ( ");
}
sql.append("SELECT sol.idSolicitacaoServico, sol.idbaseconhecimento, sol.idServicoContrato, sol.idSolicitante, ");
sql.append(" sol.idItemConfiguracao, sol.idItemConfiguracaoFilho, sol.idtipodemandaservico, sol.idcontatosolicitacaoservico, ");
sql.append(" sol.idOrigem, sol.idResponsavel, sol.idTipoProblema, sol.idPrioridade, sol.idUnidade, sol.idFaseAtual, ");
sql.append(" sol.idGrupoAtual, sol.dataHoraSolicitacao, sol.dataHoraLimite, sol.atendimentoPresencial, sol.prazoCapturaHH, sol.prazoCapturaMM, ");
sql.append(" sol.prazoHH, sol.prazoMM, sol.descricao, sol.resposta, sol.dataHoraInicio, sol.dataHoraFim, sol.situacao, ");
sql.append(" sol.idSolicitacaoPai, sol.detalhamentoCausa, sol.idCausaIncidente, sol.idCategoriaSolucao, ");
sql.append(" sol.seqreabertura, sol.enviaEmailCriacao, sol.enviaEmailFinalizacao, sol.enviaEmailAcoes, ");
sql.append(" sol.idgruponivel1, sol.solucaoTemporaria, sol.houveMudanca, sol.slaACombinar, sol.prazohhAnterior, ");
sql.append(" sol.prazommAnterior, sol.idCalendario, sol.tempoDecorridoHH, sol.tempoDecorridoMM, sol.dataHoraSuspensao, ");
sql.append(" sol.dataHoraReativacao, sol.impacto, sol.urgencia, sol.dataHoraCaptura, sol.tempoCapturaHH, sol.tempoCapturaMM, ");
sql.append(" sol.tempoAtrasoHH, sol.tempoAtrasoMM, sol.tempoAtendimentoHH, sol.tempoAtendimentoMM, sol.idacordonivelservico, ");
sql.append(" sol.idultimaaprovacao, sol.datahorainiciosla, sol.datahorasuspensaosla, sol.datahorareativacaosla, sol.situacaosla, aprov.aprovacao, ");
sql.append(" s.idservico, s.nomeServico, td.idTipoDemandaServico as idtipodemandaservico2, td.nomeTipoDemandaServico, c.idContrato, c.numero, e1.nome, u1.nome as nomeUnidade1, ");
sql.append(" e2.nome as nomeResponsavel, u2.nome as nomeUnidade2, oa.descricao as descricao2, p.nomeprioridade, fs.nomefase, ");
sql.append(" g1.sigla, g2.sigla as siglaGupo2, cs.nomecontato, cs.emailcontato, cs.telefonecontato, cs.localizacaofisica ,cs.idlocalidade , es.idInstanciaFluxo, sol.vencendo, it.iditemtrabalho, sol.idSolicitacaoRelacionada, soma.qtdefilhas, totalItensConfiguracao.qtdeItensConfiguracaoRelacionados ");
if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.SQLSERVER)) {
sql.append(" , ROW_NUMBER() OVER (" + ordernarPor + ") AS Row ");
}
sql.append(" FROM solicitacaoservico sol ");
sql.append(" LEFT JOIN servicocontrato sc ON sc.idservicocontrato = sol.idservicocontrato ");
sql.append(" LEFT JOIN contratos c ON c.idcontrato = sc.idcontrato ");
sql.append(" LEFT JOIN servico s ON s.idservico = sc.idservico ");
sql.append(" LEFT JOIN tipodemandaservico td ON td.idtipodemandaservico = s.idtipodemandaservico ");
sql.append(" LEFT JOIN empregados e1 ON e1.idempregado = sol.idsolicitante ");
sql.append(" LEFT JOIN unidade u1 ON u1.idunidade = e1.idunidade ");
sql.append(" LEFT JOIN usuario usu ON usu.idusuario = sol.idresponsavel ");
sql.append(" LEFT JOIN empregados e2 ON e2.idempregado = usu.idempregado ");
sql.append(" LEFT JOIN unidade u2 ON u2.idunidade = e2.idunidade ");
sql.append(" LEFT JOIN origematendimento oa ON oa.idorigem = sol.idorigem ");
sql.append(" LEFT JOIN prioridade p ON p.idprioridade = sol.idprioridade ");
sql.append(" LEFT JOIN faseservico fs ON fs.idfase = sol.idfaseatual ");
sql.append(" LEFT JOIN grupo g1 ON g1.idgrupo = sol.idgrupoatual ");
sql.append(" LEFT JOIN grupo g2 ON g2.idgrupo = sol.idgruponivel1 ");
sql.append(" LEFT JOIN contatosolicitacaoservico cs ON cs.idcontatosolicitacaoservico = sol.idcontatosolicitacaoservico ");
sql.append(" LEFT JOIN aprovacaosolicitacaoservico aprov ON aprov.idaprovacaosolicitacaoservico = sol.idultimaaprovacao ");
sql.append(" INNER JOIN execucaosolicitacao es ON es.idsolicitacaoservico = sol.idsolicitacaoservico ");
sql.append(" INNER JOIN bpm_itemtrabalhofluxo it ON it.idinstancia = es.idinstanciafluxo ");
sql.append(" left join (select idSolicitacaoRelacionada, COUNT(idsolicitacaoservico) as qtdefilhas from solicitacaoservico"
+ " WHERE idSolicitacaoRelacionada is not null group by idSolicitacaoRelacionada) as soma on soma.idSolicitacaoRelacionada = sol.idsolicitacaoservico ");
sql.append(" LEFT JOIN ( SELECT idSolicitacaoservico, COUNT(idSolicitacaoservico) AS qtdeItensConfiguracaoRelacionados FROM itemcfgsolicitacaoserv sol INNER JOIN itemconfiguracao item ON item.iditemconfiguracao = sol.iditemconfiguracao"
+ " GROUP BY idSolicitacaoservico) AS totalItensConfiguracao ON totalItensConfiguracao.idSolicitacaoservico = sol.idsolicitacaoservico ");
sql.append(" WHERE sol.idsolicitacaopai is null ");
List<TarefaFluxoDTO> listaFiltrada = filtrarElementosDaLista(listTarefa, gerenciamentoBean);
int size = listaFiltrada.size();
if (size != 0) {
// Hack oracle
if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.ORACLE)) {
sql.append("and it.iditemtrabalho in ( select * from table(sys.odcinumberlist( ");
} else {
sql.append("and it.iditemtrabalho in ( ");
}
int max = 1;
int aux = 1;
int CONSTANT = 999;
if (size != 0) {
// Hack oracle
if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.ORACLE)) {
for (TarefaFluxoDTO tarefaFluxoDto : listaFiltrada) {
aux += 1;
sql.append(tarefaFluxoDto.getIdItemTrabalho());
// Modelo antigo
// if (aux == size) {
if (aux > size) {
sql.append(")))");
} else if (aux > (CONSTANT * (max - 1)) && aux <= (CONSTANT * max)) {
sql.append(")) union select * from table(sys.odcinumberlist( ");
max++;
} else {
sql.append(",");
}
}
} else {
for (TarefaFluxoDTO tarefaFluxoDto : listaFiltrada) {
sql.append(tarefaFluxoDto.getIdItemTrabalho());
if (aux == size) {
sql.append(")");
} else {
sql.append(",");
}
aux += 1;
}
}
}
// FILTRA CONTRATO DO USU�RIO LOGADO - S� retorna as Solicita��es dos Contratos em que o usu�rio logado est� inserido.
if (listContratoUsuarioLogado != null && !listContratoUsuarioLogado.isEmpty()) {
sql.append(" AND c.idcontrato in ( ");
boolean verifica = true;
for (ContratoDTO contrato : listContratoUsuarioLogado) {
if (verifica) {
sql.append(contrato.getIdContrato());
verifica = false;
} else {
sql.append(",");
sql.append(contrato.getIdContrato());
}
}
sql.append(" )");
}
} else {
return null;
}
// Adiciona o filtro de pesquisa caso houver filtro
adicionarFiltroPesquisa(sql, gerenciamentoBean, parametros);
if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.POSTGRESQL)) {
Integer pgTotal = pgAtual * qtdPaginacao;
if (pgTotal > 0) {
pgAtual = pgTotal - qtdPaginacao;
}
sql.append(ordernarPor + " LIMIT " + qtdPaginacao + " OFFSET " + pgAtual);
}
if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.MYSQL)) {
Integer pgTotal = pgAtual * qtdPaginacao;
if (pgTotal > 0) {
pgAtual = pgTotal - qtdPaginacao;
}
sql.append(ordernarPor + " LIMIT " + pgAtual + ", " + qtdPaginacao);
}
if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.SQLSERVER)) {
Integer quantidadePaginator2 = new Integer(0);
if (pgAtual > 0) {
quantidadePaginator2 = qtdPaginacao * pgAtual;
pgAtual = (pgAtual * qtdPaginacao) - qtdPaginacao;
} else {
quantidadePaginator2 = qtdPaginacao;
pgAtual = 0;
}
sql.append(" ) SELECT * FROM TabelaTemporaria WHERE Row> " + pgAtual + " and Row<" + (quantidadePaginator2 + 1) + " ");
}
String sqlOracle = "";
if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.ORACLE)) {
Integer quantidadePaginator2 = new Integer(0);
if (pgAtual > 1) {
quantidadePaginator2 = qtdPaginacao * pgAtual;
pgAtual = (pgAtual * qtdPaginacao) - qtdPaginacao;
pgAtual = pgAtual + 1;
} else {
quantidadePaginator2 = qtdPaginacao;
pgAtual = 0;
}
int intInicio = pgAtual;
int intLimite = quantidadePaginator2;
// Modelo antigo
// sqlOracle = sqlOracle + ordernarPor;
sqlOracle = sql + ordernarPor;
sqlOracle = "SELECT * FROM (SELECT PAGING.*, ROWNUM PAGING_RN FROM" + " (" + sqlOracle + ") PAGING WHERE (ROWNUM <= " + intLimite + "))" + " WHERE (PAGING_RN >= " + intInicio + ") ";
}
List lista = new ArrayList();
if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.ORACLE)) {
lista = this.execSQL(sqlOracle, parametros.toArray());
} else {
lista = this.execSQL(sql.toString(), parametros.toArray());
}
if (lista != null && !lista.isEmpty()) {
return engine.listConvertion(SolicitacaoServicoDTO.class, lista, listRetorno);
} else {
return null;
}
}
public Collection<SolicitacaoServicoDTO> listByTarefas(Collection<TarefaFluxoDTO> listTarefa, TipoSolicitacaoServico[] tiposSolicitacao) throws Exception {
boolean bIncidentes = false;
boolean bRequisicoes = false;
boolean bCompras = false;
boolean bViagens = false;
boolean bRH = false;
if (tiposSolicitacao != null) {
for (TipoSolicitacaoServico tipo : tiposSolicitacao) {
if (!bIncidentes && tipo.equals(TipoSolicitacaoServico.INCIDENTE)) {
bIncidentes = true;
}
if (!bRequisicoes && tipo.equals(TipoSolicitacaoServico.REQUISICAO)) {
bRequisicoes = true;
}
if (!bCompras && tipo.equals(TipoSolicitacaoServico.COMPRA)) {
bCompras = true;
}
if (!bViagens && tipo.equals(TipoSolicitacaoServico.VIAGEM)) {
bViagens = true;
}
if (!bRH && tipo.equals(TipoSolicitacaoServico.RH)) {
bRH = true;
}
}
}
List listRetorno = new ArrayList();
listRetorno.add("idSolicitacaoServico");
listRetorno.add("idbaseconhecimento");
listRetorno.add("idServicoContrato");
listRetorno.add("idSolicitante");
listRetorno.add("idItemConfiguracao");
listRetorno.add("idItemConfiguracaoFilho");
listRetorno.add("idTipodemandaServico");
listRetorno.add("idContatoSolicitacaoServico");
listRetorno.add("idOrigem");
listRetorno.add("idResponsavel");
listRetorno.add("idTipoProblema");
listRetorno.add("idPrioridade");
listRetorno.add("idUnidade");
listRetorno.add("idFaseAtual");
listRetorno.add("idGrupoAtual");
listRetorno.add("dataHoraSolicitacao");
listRetorno.add("dataHoraLimite");
listRetorno.add("atendimentoPresencial");
listRetorno.add("prazoCapturaHH");
listRetorno.add("prazoCapturaMM");
listRetorno.add("prazoHH");
listRetorno.add("prazoMM");
listRetorno.add("descricao");
listRetorno.add("resposta");
listRetorno.add("dataHoraInicio");
listRetorno.add("dataHoraFim");
listRetorno.add("situacao");
listRetorno.add("idSolicitacaoPai");
listRetorno.add("detalhamentoCausa");
listRetorno.add("idCausaIncidente");
listRetorno.add("idCategoriaSolucao");
listRetorno.add("seqReabertura");
listRetorno.add("enviaEmailCriacao");
listRetorno.add("enviaEmailFinalizacao");
listRetorno.add("enviaEmailAcoes");
listRetorno.add("idGrupoNivel1");
listRetorno.add("solucaoTemporaria");
listRetorno.add("houveMudanca");
listRetorno.add("slaACombinar");
listRetorno.add("prazohhAnterior");
listRetorno.add("prazommAnterior");
listRetorno.add("idCalendario");
listRetorno.add("tempoDecorridoHH");
listRetorno.add("tempoDecorridoMM");
listRetorno.add("dataHoraSuspensao");
listRetorno.add("dataHoraReativacao");
listRetorno.add("impacto");
listRetorno.add("urgencia");
listRetorno.add("dataHoraCaptura");
listRetorno.add("tempoCapturaHH");
listRetorno.add("tempoCapturaMM");
listRetorno.add("tempoAtrasoHH");
listRetorno.add("tempoAtrasoMM");
listRetorno.add("tempoAtendimentoHH");
listRetorno.add("tempoAtendimentoMM");
listRetorno.add("idAcordoNivelServico");
listRetorno.add("idUltimaAprovacao");
listRetorno.add("dataHoraInicioSLA");
listRetorno.add("dataHoraSuspensaoSLA");
listRetorno.add("dataHoraReativacaoSLA");
listRetorno.add("situacaoSLA");
listRetorno.add("aprovacao");
listRetorno.add("idServico");
listRetorno.add("servico");
listRetorno.add("idTipoDemandaServico");
listRetorno.add("demanda");
listRetorno.add("idContrato");
listRetorno.add("contrato");
listRetorno.add("solicitante");
listRetorno.add("nomeUnidadeSolicitante");
listRetorno.add("responsavel");
listRetorno.add("nomeUnidadeResponsavel");
listRetorno.add("origem");
listRetorno.add("prioridade");
listRetorno.add("faseAtual");
listRetorno.add("grupoAtual");
listRetorno.add("grupoNivel1");
listRetorno.add("nomecontato");
listRetorno.add("emailcontato");
listRetorno.add("telefonecontato");
listRetorno.add("observacao");
listRetorno.add("idLocalidade");
listRetorno.add("idInstanciaFluxo");
listRetorno.add("idRequisicaoProduto");
listRetorno.add("idRequisicaoViagem");
listRetorno.add("idRequisicaoPessoal");
listRetorno.add("classificacao");
StringBuilder sql = new StringBuilder();
sql.append("SELECT sol.idSolicitacaoServico, sol.idbaseconhecimento, sol.idServicoContrato, sol.idSolicitante, ");
sql.append(" sol.idItemConfiguracao, sol.idItemConfiguracaoFilho, sol.idtipodemandaservico, sol.idcontatosolicitacaoservico, ");
sql.append(" sol.idOrigem, sol.idResponsavel, sol.idTipoProblema, sol.idPrioridade, sol.idUnidade, sol.idFaseAtual, ");
sql.append(" sol.idGrupoAtual, sol.dataHoraSolicitacao, sol.dataHoraLimite, sol.atendimentoPresencial, sol.prazoCapturaHH, sol.prazoCapturaMM, ");
sql.append(" sol.prazoHH, sol.prazoMM, sol.descricao, sol.resposta, sol.dataHoraInicio, sol.dataHoraFim, sol.situacao, ");
sql.append(" sol.idSolicitacaoPai, sol.detalhamentoCausa, sol.idCausaIncidente, sol.idCategoriaSolucao, ");
sql.append(" sol.seqreabertura, sol.enviaEmailCriacao, sol.enviaEmailFinalizacao, sol.enviaEmailAcoes, ");
sql.append(" sol.idgruponivel1, sol.solucaoTemporaria, sol.houveMudanca, sol.slaACombinar, sol.prazohhAnterior, ");
sql.append(" sol.prazommAnterior, sol.idCalendario, sol.tempoDecorridoHH, sol.tempoDecorridoMM, sol.dataHoraSuspensao, ");
sql.append(" sol.dataHoraReativacao, sol.impacto, sol.urgencia, sol.dataHoraCaptura, sol.tempoCapturaHH, sol.tempoCapturaMM, ");
sql.append(" sol.tempoAtrasoHH, sol.tempoAtrasoMM, sol.tempoAtendimentoHH, sol.tempoAtendimentoMM, sol.idacordonivelservico, ");
sql.append(" sol.idultimaaprovacao, sol.datahorainiciosla, sol.datahorasuspensaosla, sol.datahorareativacaosla, sol.situacaosla, aprov.aprovacao, ");
sql.append(" s.idservico, s.nomeServico, td.idTipoDemandaServico, td.nomeTipoDemandaServico, c.idContrato, c.numero, e1.nome, u1.nome, ");
sql.append(" e2.nome, u2.nome, oa.descricao, p.nomeprioridade, fs.nomefase, ");
sql.append(" g1.sigla, g2.sigla, cs.nomecontato, cs.emailcontato, cs.telefonecontato, cs.localizacaofisica ,cs.idlocalidade , es.idInstanciaFluxo, ");
sql.append(" reqprod.idsolicitacaoservico, reqviagem.idsolicitacaoservico, reqrh.idsolicitacaoservico, td.classificacao");
sql.append(" FROM solicitacaoservico sol ");
sql.append(" LEFT JOIN servicocontrato sc ON sc.idservicocontrato = sol.idservicocontrato ");
sql.append(" LEFT JOIN contratos c ON c.idcontrato = sc.idcontrato ");
sql.append(" LEFT JOIN servico s ON s.idservico = sc.idservico ");
sql.append(" LEFT JOIN tipodemandaservico td ON td.idtipodemandaservico = s.idtipodemandaservico ");
sql.append(" LEFT JOIN empregados e1 ON e1.idempregado = sol.idsolicitante ");
sql.append(" LEFT JOIN unidade u1 ON u1.idunidade = e1.idunidade ");
sql.append(" LEFT JOIN usuario usu ON usu.idusuario = sol.idresponsavel ");
sql.append(" LEFT JOIN empregados e2 ON e2.idempregado = usu.idempregado ");
sql.append(" LEFT JOIN unidade u2 ON u2.idunidade = e2.idunidade ");
sql.append(" LEFT JOIN origematendimento oa ON oa.idorigem = sol.idorigem ");
sql.append(" LEFT JOIN prioridade p ON p.idprioridade = sol.idprioridade ");
sql.append(" LEFT JOIN faseservico fs ON fs.idfase = sol.idfaseatual ");
sql.append(" LEFT JOIN grupo g1 ON g1.idgrupo = sol.idgrupoatual ");
sql.append(" LEFT JOIN grupo g2 ON g2.idgrupo = sol.idgruponivel1 ");
sql.append(" LEFT JOIN contatosolicitacaoservico cs ON cs.idcontatosolicitacaoservico = sol.idcontatosolicitacaoservico ");
sql.append(" LEFT JOIN aprovacaosolicitacaoservico aprov ON aprov.idaprovacaosolicitacaoservico = sol.idultimaaprovacao ");
sql.append(" LEFT JOIN requisicaoproduto reqprod ON reqprod.idsolicitacaoservico = sol.idsolicitacaoservico ");
sql.append(" LEFT JOIN rh_requisicaopessoal reqrh ON reqrh.idsolicitacaoservico = sol.idsolicitacaoservico ");
sql.append(" LEFT JOIN requisicaoviagem reqviagem ON reqviagem.idsolicitacaoservico = sol.idsolicitacaoservico ");
sql.append(" INNER JOIN execucaosolicitacao es ON es.idsolicitacaoservico = sol.idsolicitacaoservico ");
sql.append("WHERE sol.idsolicitacaopai is null ");
boolean bFiltrouTipos = false;
if (bIncidentes) {
if (bIncidentes) {
sql.append(" AND (td.classificacao = 'I' ");
}
bFiltrouTipos = true;
}
if (bRequisicoes) {
if (bFiltrouTipos) {
sql.append(" OR ");
} else {
sql.append(" AND (");
}
sql.append(" reqprod.idsolicitacaoservico IS NULL AND reqviagem.idsolicitacaoservico IS NULL AND reqrh.idsolicitacaoservico IS NULL AND td.classificacao = 'R' ");
bFiltrouTipos = true;
}
if (bCompras) {
if (bFiltrouTipos) {
sql.append(" OR ");
} else {
sql.append(" AND (");
}
sql.append(" reqprod.idsolicitacaoservico IS NOT NULL ");
bFiltrouTipos = true;
}
if (bViagens) {
if (bFiltrouTipos) {
sql.append(" OR ");
} else {
sql.append(" AND (");
}
sql.append(" reqviagem.idsolicitacaoservico IS NOT NULL ");
bFiltrouTipos = true;
}
if (bRH) {
if (bFiltrouTipos) {
sql.append(" OR ");
} else {
sql.append(" AND (");
}
sql.append(" reqrh.idsolicitacaoservico IS NOT NULL ");
bFiltrouTipos = true;
}
if (bFiltrouTipos) {
sql.append(") ");
}
if (listTarefa != null && !listTarefa.isEmpty()) {
// Hack oracle
if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.ORACLE)) {
sql.append("and es.idInstanciaFluxo in ( select * from table(sys.odcinumberlist( ");
} else {
sql.append("and es.idInstanciaFluxo in ( ");
}
int size = listTarefa.size();
int max = 1;
int aux = 0;
int CONSTANT = 999;
// Hack oracle
if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.ORACLE)) {
for (TarefaFluxoDTO tarefaFluxoDto : listTarefa) {
aux += 1;
sql.append(tarefaFluxoDto.getIdInstancia());
if (aux == size) {
sql.append(")))");
} else if (aux > (CONSTANT * (max - 1)) && aux <= (CONSTANT * max)) {
sql.append(")) union select * from table(sys.odcinumberlist( ");
max++;
} else {
sql.append(",");
}
}
} else {
for (TarefaFluxoDTO tarefaFluxoDto : listTarefa) {
aux += 1;
sql.append(tarefaFluxoDto.getIdInstancia());
if (aux == size) {
sql.append(")");
} else {
sql.append(",");
}
}
}
} else {
return null;
}
List lista = new ArrayList();
lista = this.execSQL(sql.toString(), null);
Collection<SolicitacaoServicoDTO> result = null;
if (lista != null && !lista.isEmpty()) {
result = engine.listConvertion(SolicitacaoServicoDTO.class, lista, listRetorno);
}
if (result != null) {
for (SolicitacaoServicoDTO solicitacaoDto : result) {
if (solicitacaoDto.getIdRequisicaoProduto() != null) {
solicitacaoDto.setTipoSolicitacao(TipoSolicitacaoServico.COMPRA);
} else if (solicitacaoDto.getIdRequisicaoViagem() != null) {
solicitacaoDto.setTipoSolicitacao(TipoSolicitacaoServico.VIAGEM);
} else if (solicitacaoDto.getIdRequisicaoPessoal() != null) {
solicitacaoDto.setTipoSolicitacao(TipoSolicitacaoServico.RH);
} else if (solicitacaoDto.getClassificacao() != null && solicitacaoDto.getClassificacao().equalsIgnoreCase("R")) {
solicitacaoDto.setTipoSolicitacao(TipoSolicitacaoServico.REQUISICAO);
} else {
solicitacaoDto.setTipoSolicitacao(TipoSolicitacaoServico.INCIDENTE);
}
}
}
return result;
}
public SolicitacaoServicoDTO listIdentificacao(Integer idItemConfiguracao) throws Exception {
List parametro = new ArrayList();
StringBuilder sb = new StringBuilder();
sb.append("select identificacao from ITEMCONFIGURACAO where iditemconfiguracao = " + idItemConfiguracao + " ");
List lista = this.execSQL(sb.toString(), parametro.toArray());
List<String> listRetorno = new ArrayList<String>();
listRetorno.add("itemConfiguracao");
List result = engine.listConvertion(SolicitacaoServicoDTO.class, lista, listRetorno);
return (SolicitacaoServicoDTO) result.get(0);
}
public Collection<SolicitacaoServicoDTO> listIncidentesNaoFinalizados() throws Exception {
List parametro = new ArrayList();
List listRetorno = new ArrayList();
StringBuilder sql = new StringBuilder();
sql.append("SELECT idsolicitacaoservico, situacao, datahorasolicitacao, datahoralimite, nometipodemandaservico, datahorafim ");
sql.append("FROM solicitacaoservico ");
sql.append("INNER JOIN tipodemandaservico ");
sql.append("ON solicitacaoservico.idtipodemandaservico = tipodemandaservico.idtipodemandaservico ");
sql.append("LEFT OUTER JOIN usuario ");
sql.append("ON solicitacaoservico.idresponsavel = usuario.idusuario ");
sql.append("LEFT OUTER JOIN grupo ");
sql.append("ON solicitacaoservico.idgrupoatual = grupo.idgrupo ");
sql.append("WHERE tipodemandaservico.classificacao LIKE 'I' AND ");
sql.append("(UPPER(solicitacaoservico.situacao) <> 'FECHADA' AND UPPER(solicitacaoservico.situacao) <> 'CANCELADA' ");
sql.append(" AND UPPER(solicitacaoservico.situacao) <> 'RECLASSIFICADA')");
List lista = new ArrayList();
lista = this.execSQL(sql.toString(), parametro.toArray());
listRetorno.add("idSolicitacaoServico");
listRetorno.add("situacao");
listRetorno.add("dataHoraSolicitacao");
listRetorno.add("dataHoraLimite");
listRetorno.add("nomeTipoDemandaServico");
listRetorno.add("dataHoraFim");
List listSolicitacoes = engine.listConvertion(getBean(), lista, listRetorno);
return listSolicitacoes;
}
/**
* Retorna Solicita�ões de Servi�os de acordo com o Tipo de Demanda e Usu�rio.
*
* @param tipoDemandaServico
* @param grupoSeguranca
* @param usuario
* @return <code>Collection<SolicitacaoServicoDTO></code>
* @throws Exception
* @author valdoilo
*/
public Collection<SolicitacaoServicoDTO> listSolicitacaoServico(String tipoDemandaServico, GrupoDTO grupoSeguranca, UsuarioDTO usuario, Date dataInicio, Date dataFim, String situacao)
throws Exception {
List parametro = new ArrayList();
List listRetorno = new ArrayList();
StringBuilder sql = new StringBuilder();
sql.append("SELECT idsolicitacaoservico, situacao, datahorasolicitacao, datahoralimite, nometipodemandaservico, datahorafim ");
sql.append("FROM solicitacaoservico ");
sql.append("INNER JOIN tipodemandaservico ");
sql.append("ON solicitacaoservico.idtipodemandaservico = tipodemandaservico.idtipodemandaservico ");
sql.append("LEFT OUTER JOIN usuario ");
sql.append("ON solicitacaoservico.idresponsavel = usuario.idusuario ");
sql.append("LEFT OUTER JOIN grupo ");
sql.append("ON solicitacaoservico.idgrupoatual = grupo.idgrupo ");
boolean aux = false;
if (tipoDemandaServico != null && !tipoDemandaServico.trim().isEmpty()) {
sql.append("WHERE ");
sql.append("tipodemandaservico.classificacao LIKE ? ");
aux = true;
parametro.add(tipoDemandaServico);
}
if (grupoSeguranca != null && grupoSeguranca.getIdGrupo() != null) {
if (aux) {
sql.append("AND grupo.idgrupo = ? ");
} else {
sql.append("WHERE ");
sql.append("grupo.idgrupo = ? ");
aux = true;
}
parametro.add(grupoSeguranca.getIdGrupo());
}
if (usuario != null) {
if (aux) {
sql.append("AND usuario.idusuario = ? ");
} else {
sql.append("WHERE ");
sql.append("usuario.idusuario = ? ");
aux = true;
}
parametro.add(usuario.getIdUsuario());
}
if (situacao != null && !situacao.equalsIgnoreCase("")) {
if (aux) {
sql.append("AND solicitacaoservico.situacao = ? ");
} else {
sql.append("WHERE ");
sql.append("solicitacaoservico.situacao = ? ");
aux = true;
}
parametro.add(situacao);
}
if (aux) {
sql.append("AND ");
} else {
sql.append("WHERE ");
}
sql.append(" (solicitacaoservico.datahorasolicitacao BETWEEN ? AND ?)");
parametro.add(dataInicio);
parametro.add(dataFim);
List lista = new ArrayList();
lista = this.execSQL(sql.toString(), parametro.toArray());
listRetorno.add("idSolicitacaoServico");
listRetorno.add("situacao");
listRetorno.add("dataHoraSolicitacao");
listRetorno.add("dataHoraLimite");
listRetorno.add("nomeTipoDemandaServico");
listRetorno.add("dataHoraFim");
List listSolicitacoes = engine.listConvertion(getBean(), lista, listRetorno);
return listSolicitacoes;
}
/**
* Retorna Solicita�ões de Servi�os de acordo com criterios passados.
*
* @return <code>Collection<SolicitacaoServicoDTO></code>
* @throws Exception
* @author emauri
*/
public Collection<SolicitacaoServicoDTO> listSolicitacaoServicoByCriterios(Collection colCriterios) throws Exception {
List listRetorno = new ArrayList();
/*
* Desenvolvedor: Rodrigo Pecci - Data: 25/10/2013 - Hor�rio: 10h00min - ID Citsmart: 120770 Motivo/Coment�rio: A tabela origematendimento, faseservico e empregados estava utilizando INNER
* JOIN, isso fazia com que as solicita��es que n�o possuem origem contrato, fase ou solicitante n�o fossem retornadas. Alterado para LEFT JOIN
*/
/* String SGBD = CITCorporeUtil.SGBD_PRINCIPAL; */
String sql = "SELECT tempoAtendimentoHH,tempoAtendimentoMM,datahorainicio, datahorafim, idsolicitacaoservico, nomeservico, CASE WHEN solicitacaoservico.situacao = 'EmAndamento' THEN 'Em Andamento' ELSE solicitacaoservico.situacao END AS situacao, dataHoraSolicitacao, dataHoraLimite, nomeTipoDemandaServico, prazohh, prazomm, "
+ "solicitacaoservico.descricao, resposta, grupo.sigla, seqreabertura, empregado.nome, faseservico.nomefase, origematendimento.descricao,prioridade.nomeprioridade, usuario.nome, contratos.numero "
+ "FROM solicitacaoservico "
+ "INNER JOIN tipodemandaservico ON solicitacaoservico.idtipodemandaservico = tipodemandaservico.idtipodemandaservico "
+ "INNER JOIN servicocontrato ON solicitacaoservico.idservicocontrato = servicocontrato.idservicocontrato AND (idcontrato = {PARAM.idContrato} OR {PARAM.idContrato} = -1 )"
+ "INNER JOIN servico ON servicocontrato.idservico = servico.idservico LEFT OUTER JOIN grupo ON grupo.idgrupo = solicitacaoservico.idgrupoatual "
+ "INNER JOIN contratos ON servicocontrato.idcontrato = contratos.idcontrato "
+ "LEFT JOIN empregados empregado ON empregado.idempregado = solicitacaoservico.idsolicitante "
+ "inner join usuario usuario on usuario.idusuario = solicitacaoservico.idresponsavel "
+ "LEFT JOIN faseservico faseservico ON faseservico.idfase = solicitacaoservico.idfaseAtual "
+ "LEFT JOIN origematendimento origematendimento ON origematendimento.idorigem = solicitacaoservico.idorigem "
+ "INNER JOIN prioridade prioridade ON prioridade.idprioridade = solicitacaoservico.idprioridade "
+ "LEFT JOIN unidade unidade ON unidade.idunidade = solicitacaoservico.idunidade "
+ "WHERE (UPPER(tipodemandaservico.classificacao) = UPPER('{PARAM.classificacao}') OR '{PARAM.classificacao}' = '*') "
+ "AND (solicitacaoservico.idSolicitacaoServico = {PARAM.idSolicitacaoServico} OR {PARAM.idSolicitacaoServico} = -1) "
+ "AND (servicocontrato.idservico = {PARAM.idServico} OR {PARAM.idServico} = -1) "
+ "AND (solicitacaoservico.idprioridade = {PARAM.idPrioridade} OR {PARAM.idPrioridade} = -1) "
+ "AND (solicitacaoservico.idorigem = {PARAM.idOrigem} OR {PARAM.idOrigem} = -1) "
+ "AND (solicitacaoservico.idunidade = {PARAM.idUnidade} OR {PARAM.idUnidade} = -1) "
+ "AND (solicitacaoservico.idfaseatual = {PARAM.idFaseAtual} OR {PARAM.idFaseAtual} = -1) "
+ "AND (solicitacaoservico.idgrupoatual = {PARAM.idGrupoAtual} OR {PARAM.idGrupoAtual} = -1) "
+ "AND (UPPER(solicitacaoservico.situacao) = UPPER('{PARAM.situacao}') OR UPPER('{PARAM.situacao}') = '*') "
+ "AND (solicitacaoservico.idsolicitante = {PARAM.idsolicitante} OR {PARAM.idsolicitante} = -1) "
+ "AND (solicitacaoservico.iditemconfiguracao = {PARAM.iditemconfiguracao} OR {PARAM.iditemconfiguracao} = -1) "
+ "AND (solicitacaoservico.idTipoDemandaServico = {PARAM.idTipoDemandaServico} OR {PARAM.idTipoDemandaServico} = -1) "
+ "AND (solicitacaoservico.idResponsavel = {PARAM.idResponsavel} OR {PARAM.idResponsavel} = -1) "
+ "AND (servico.idservico = {PARAM.idServico1} OR {PARAM.idServico1} = -1) "
+ "AND (UPPER(solicitacaoservico.descricao) like UPPER('%{PARAM.palavraChave}%') OR UPPER(servico.nomeservico) like UPPER('%{PARAM.palavraChave}%')) "
+ "AND (solicitacaoservico.datahorasolicitacao BETWEEN ? AND ?) " + " ORDER BY {PARAM.ordenacao}";
Date dataInicio = null;
Timestamp dataFim = null;
Date dataInicioFechamento = null;
Timestamp dataFimFechamento = null;
for (Iterator it = colCriterios.iterator(); it.hasNext();) {
Condition condition = (Condition) it.next();
if (condition.getFiledClass().equalsIgnoreCase("dataInicial")) {
dataInicio = (Date) condition.getValue();
} else if (condition.getFiledClass().equalsIgnoreCase("dataFinal")) {
Object obj = condition.getValue();
if (Date.class.isInstance(obj)) {
dataFim = new Timestamp(((Date) obj).getTime());
} else if (Timestamp.class.isInstance(obj)) {
dataFim = (Timestamp) condition.getValue();
}
} else {
sql = sql.replaceAll("\\{PARAM." + condition.getFiledClass() + "\\}", "" + condition.getValue());
}
}
List lista = new ArrayList();
List parametros = new ArrayList();
parametros.add(dataInicio);
parametros.add(dataFim);
parametros.add(dataInicioFechamento);
parametros.add(dataFimFechamento);
lista = this.execSQL(sql, parametros.toArray());
listRetorno.add("tempoAtendimentoHH");
listRetorno.add("tempoAtendimentoMM");
listRetorno.add("dataHoraInicio");
listRetorno.add("dataHoraFim");
listRetorno.add("idSolicitacaoServico");
listRetorno.add("nomeServico");
listRetorno.add("situacao");
listRetorno.add("dataHoraSolicitacao");
listRetorno.add("dataHoraLimite");
listRetorno.add("nomeTipoDemandaServico");
listRetorno.add("prazoHH");
listRetorno.add("prazoMM");
listRetorno.add("descricao");
listRetorno.add("resposta");
listRetorno.add("siglaGrupo");
listRetorno.add("seqReabertura");
listRetorno.add("nomeSolicitante");
listRetorno.add("faseAtual");
listRetorno.add("origem");
listRetorno.add("prioridade");
listRetorno.add("responsavel");
listRetorno.add("contrato");
List listSolicitacoes = engine.listConvertion(getBean(), lista, listRetorno);
return listSolicitacoes;
}
public List<SolicitacaoServicoDTO> listSolicitacaoServicoByItemConfiguracao(Integer idItemConfiguracao) throws Exception {
List parametro = new ArrayList();
StringBuilder sb = new StringBuilder();
sb.append("SELECT sol.idsolicitacaoservico, ser.nomeServico, tempoAtendimentoHH, tempoAtendimentoMM, datahorainicio, datahorafim, ");
/**Alterado select [...] nome para emp.nome para evitar conflitos com novo campo nome na tabela itemconfiguracao
*
* @author thyen.chang
*/
sb.append(" sol.situacao, dataHoraSolicitacao, dataHoraLimite, sol.descricao, emp.nome ");
sb.append(" FROM solicitacaoservico sol ");
sb.append(" INNER JOIN itemcfgsolicitacaoserv itemc ON sol.idsolicitacaoservico = itemc.idsolicitacaoservico ");
sb.append(" INNER JOIN itemconfiguracao item ON itemc.iditemconfiguracao = item.iditemconfiguracao ");
sb.append(" INNER JOIN servicocontrato ON sol.idservicocontrato = servicocontrato.idservicocontrato ");
sb.append(" INNER JOIN servico ser ON servicocontrato.idservico = ser.idservico ");
sb.append(" INNER JOIN empregados emp ON emp.idempregado = sol.idsolicitante ");
/**
* Regra modificada para trazer todos os incidentes independente do status - Solicitante Emauri
*
* @author flavio.santana 20/11/2013 17:14
*/
// sb.append(" where situacao = 'EmAndamento' and item.iditemconfiguracao = ? ");
sb.append(" where item.iditemconfiguracao = ? ");
sb.append(" ORDER BY dataHoraSolicitacao DESC ");
/**
* A regra relacionada ao status estava comentada
*
* @author flavio.santana 25/10/2013 14:00
*/
parametro.add(idItemConfiguracao);
List lista = this.execSQL(sb.toString(), parametro.toArray());
List<String> listRetorno = new ArrayList<String>();
listRetorno.add("idSolicitacaoServico");
listRetorno.add("nomeServico");
listRetorno.add("tempoAtendimentoHH");
listRetorno.add("tempoAtendimentoMM");
listRetorno.add("dataHoraInicio");
listRetorno.add("dataHoraFim");
listRetorno.add("situacao");
listRetorno.add("dataHoraSolicitacao");
listRetorno.add("dataHoraLimite");
listRetorno.add("descricao");
listRetorno.add("nomeSolicitante");
List result = engine.listConvertion(SolicitacaoServicoDTO.class, lista, listRetorno);
return result;
}
public Collection<SolicitacaoServicoDTO> listSolicitacaoServicoEmAndamento(Integer idSolicitacaoServico) {
ArrayList<Condition> condicoes = new ArrayList<Condition>();
List<Order> ordenacao = new ArrayList<Order>();
condicoes.add(new Condition("idSolicitacaoPai", "IS", null));
condicoes.add(new Condition("situacao", "=", "EmAndamento"));
condicoes.add(new Condition("idSolicitacaoServico", "<>", idSolicitacaoServico));
ordenacao.add(new Order("idSolicitacaoServico"));
Collection<SolicitacaoServicoDTO> listSolicitacoesPai = new ArrayList<SolicitacaoServicoDTO>();
try {
listSolicitacoesPai = this.findByCondition(condicoes, ordenacao);
} catch (Exception e) {
e.printStackTrace();
}
return listSolicitacoesPai;
}
public Collection<SolicitacaoServicoDTO> listSolicitacaoServicoNaoFinalizadas() throws Exception {
List parametro = new ArrayList();
List listRetorno = new ArrayList();
StringBuilder sql = new StringBuilder();
sql.append("SELECT idsolicitacaoservico, situacao, datahorasolicitacao, datahoralimite, nometipodemandaservico, datahorafim ");
sql.append("FROM solicitacaoservico ");
sql.append("INNER JOIN tipodemandaservico ");
sql.append("ON solicitacaoservico.idtipodemandaservico = tipodemandaservico.idtipodemandaservico ");
sql.append("LEFT OUTER JOIN usuario ");
sql.append("ON solicitacaoservico.idresponsavel = usuario.idusuario ");
sql.append("LEFT OUTER JOIN grupo ");
sql.append("ON solicitacaoservico.idgrupoatual = grupo.idgrupo ");
sql.append("WHERE ");
sql.append("(UPPER(solicitacaoservico.situacao) <> 'FECHADA' AND UPPER(solicitacaoservico.situacao) <> 'CANCELADA' ");
sql.append(" AND UPPER(solicitacaoservico.situacao) <> 'RECLASSIFICADA')");
List lista = new ArrayList();
lista = this.execSQL(sql.toString(), parametro.toArray());
listRetorno.add("idSolicitacaoServico");
listRetorno.add("situacao");
listRetorno.add("dataHoraSolicitacao");
listRetorno.add("dataHoraLimite");
listRetorno.add("nomeTipoDemandaServico");
listRetorno.add("dataHoraFim");
List listSolicitacoes = engine.listConvertion(getBean(), lista, listRetorno);
return listSolicitacoes;
}
public Collection<SolicitacaoServicoDTO> listSolicitacaoServicoRelacionada(int idSolicitacaoPai) {
ArrayList<Condition> condicoes = new ArrayList<Condition>();
List<Order> ordenacao = new ArrayList<Order>();
condicoes.add(new Condition("idSolicitacaoPai", "=", idSolicitacaoPai));
ordenacao.add(new Order("idSolicitacaoServico"));
Collection<SolicitacaoServicoDTO> listSolicitacoesPai = new ArrayList<SolicitacaoServicoDTO>();
try {
listSolicitacoesPai = this.findByCondition(condicoes, ordenacao);
} catch (Exception e) {
e.printStackTrace();
}
return listSolicitacoesPai;
}
public Collection<SolicitacaoServicoDTO> listSolicitacaoServicoRelacionadaPai(int idSolicitacaoRelacionada) {
ArrayList<Condition> condicoes = new ArrayList<Condition>();
List<Order> ordenacao = new ArrayList<Order>();
condicoes.add(new Condition("idSolicitacaoRelacionada", "=", idSolicitacaoRelacionada));
ordenacao.add(new Order("idSolicitacaoServico"));
Collection<SolicitacaoServicoDTO> listSolicitacoesPai = new ArrayList<SolicitacaoServicoDTO>();
try {
listSolicitacoesPai = this.findByCondition(condicoes, ordenacao);
} catch (Exception e) {
e.printStackTrace();
}
return listSolicitacoesPai;
}
public Collection listSolicitacoesByRegra() throws Exception {
List listRetorno = new ArrayList();
StringBuilder sql = new StringBuilder();
sql.append("SELECT distinct (s.idsolicitacaoservico), s.idAcordoNivelServico, ans.tempoauto, ans.idprioridadeauto1, ans.idgrupo1, s.impacto, s.urgencia, ");
sql.append("s.idprioridade, s.datahoralimite, regra1.idcontrato as idcontrato, regra2.idservico as idservico, regra3.idsolicitante as idsolicitante, ");
sql.append("regra4.idgrupo as idgrupo, regra5.idtipodemandaservico as idtipodemandaservico, s.vencendo, s.criouProblemaAutomatico, s.datahorasolicitacao, s.datahoralimite, s.prazohh, s.prazomm ");
sql.append("FROM solicitacaoservico s ");
sql.append("INNER JOIN servicocontrato servicocontrato on servicocontrato.idservicocontrato = s.idservicocontrato ");
sql.append("INNER JOIN servico servico on servico.idservico = servicocontrato.idservico ");
sql.append("INNER JOIN contratos contratos on contratos.idcontrato = servicocontrato.idcontrato ");
sql.append("INNER JOIN acordonivelservico ans on ans.idacordonivelservico = s.idacordonivelservico ");
sql.append("INNER JOIN empregados solicitante on solicitante.idempregado = s.idsolicitante ");
sql.append("INNER JOIN tipodemandaservico tipodemandaservico on tipodemandaservico.idtipodemandaservico = s.idtipodemandaservico ");
sql.append("LEFT JOIN grupo grupo on grupo.idgrupo = s.idgrupoatual ");
sql.append("LEFT JOIN regraescalonamento regra1 on regra1.idcontrato = contratos.idcontrato ");
sql.append("LEFT JOIN regraescalonamento regra2 on regra2.idservico = servico.idservico ");
sql.append("LEFT JOIN regraescalonamento regra3 on regra3.idsolicitante = solicitante.idempregado ");
sql.append("LEFT JOIN regraescalonamento regra4 on regra4.idgrupo = grupo.idgrupo ");
sql.append("LEFT JOIN regraescalonamento regra5 on regra5.idtipodemandaservico = tipodemandaservico.idtipodemandaservico ");
sql.append("WHERE UPPER(s.situacao) not in ('FECHADA', 'CANCELADA', 'RESOLVIDA', 'SUSPENSA') ");
listRetorno.add("idSolicitacaoServico");
listRetorno.add("idAcordoNivelServico");
listRetorno.add("tempoAuto");
listRetorno.add("idPrioridadeAuto1");
listRetorno.add("idGrupo1");
listRetorno.add("impacto");
listRetorno.add("urgencia");
listRetorno.add("idPrioridade");
listRetorno.add("dataHoraLimite");
listRetorno.add("idContrato");
listRetorno.add("idServico");
listRetorno.add("idSolicitante");
listRetorno.add("idGrupo");
listRetorno.add("idTipoDemandaServico");
listRetorno.add("vencendo");
listRetorno.add("criouProblemaAutomatico");
listRetorno.add("dataHoraSolicitacao");
listRetorno.add("dataHoraLimite");
listRetorno.add("prazoHH");
listRetorno.add("prazoMM");
List list = this.execSQL(sql.toString(), null);
if (list != null && !list.isEmpty()) {
return this.listConvertion(getBean(), list, listRetorno);
} else {
return null;
}
}
public Collection<SolicitacaoServicoDTO> listSolicitacoesFilhas() throws Exception {
List condicao = new ArrayList();
condicao.add(new Condition("idSolicitacaoPai", "is not", null));
return super.findByCondition(condicao, null);
}
public SolicitacaoServicoDTO obterQuantidadeSolicitacoesServico(Integer idServicoContrato, java.util.Date dataInicio, java.util.Date dataFim) throws Exception {
List parametros = new ArrayList();
StringBuilder sql = new StringBuilder();
sql.append(" select ");
sql.append(" count(ss.idsolicitacaoservico) quantidade ");
sql.append(" from ");
sql.append(" solicitacaoservico ss ");
sql.append(" inner join ");
sql.append(" servicocontrato sc on sc.idservicocontrato = ss.idservicocontrato ");
sql.append(" where ");
sql.append(" ss.idservicocontrato in (select vsc2.idservicocontrato from valorservicocontrato vsc2 where vsc2.idvalorservicocontrato = ?) ");
sql.append(" and ");
sql.append(" ss.datahorainicio between ? and ? and UPPER(ss.situacao) = 'FECHADA'");
parametros.add(idServicoContrato);
/*
* int dia = UtilDatas.getDiaMesAno(dataInicio, 1); int mes = UtilDatas.getDiaMesAno(dataInicio, 2); int ano = UtilDatas.getDiaMesAno(dataInicio, 3);
*/
/* parametros.add(String.format("%d-%d-%d 00:00:00", ano, mes, dia)); */
parametros.add(dataInicio);
/*
* dia = UtilDatas.getDiaMesAno(dataFim, 1); mes = UtilDatas.getDiaMesAno(dataFim, 2); ano = UtilDatas.getDiaMesAno(dataFim, 3);
*/
/* parametros.add(String.format("%d-%d-%d 23:59:59", ano, mes, dia)); */
parametros.add(transformaHoraFinal((Date) dataFim));
List lista = new ArrayList();
lista = this.execSQL(sql.toString(), parametros.toArray());
List<String> listRetorno = new ArrayList<String>();
listRetorno.add("quantidade");
List result = engine.listConvertion(SolicitacaoServicoDTO.class, lista, listRetorno);
if (result != null && !result.isEmpty()) {
return (SolicitacaoServicoDTO) result.get(0);
} else {
return null;
}
}
public List<SolicitacaoServicoDTO> obterSolicitacoesServico(Date dataInicio, Date dataFim, int idContrato, int idServico) throws Exception {
List<SolicitacaoServicoDTO> solicitacoesServicoDTO = null;
StringBuilder sql = new StringBuilder();
sql.append(" select ");
sql.append(" ss.idsolicitacaoservico, s.nomeservico, ss.datahorainicio, ss.datahorafim, vsc.datainicio, vsc.datafim ");
sql.append(" from ");
sql.append(" solicitacaoservico ss ");
sql.append(" inner join ");
sql.append(" servicocontrato sc on sc.idservicocontrato = ss.idservicocontrato ");
sql.append(" inner join ");
sql.append(" valorservicocontrato vsc on vsc.idservicocontrato = sc.idservicocontrato ");
sql.append(" inner join ");
sql.append(" contratos c on c.idcontrato = sc.idcontrato ");
sql.append(" inner join ");
sql.append(" servico s on s.idservico = sc.idservico ");
sql.append(" where ");
sql.append(" c.idcontrato = ? and ");
sql.append(" s.idservico = ? and ");
sql.append(" ss.datahorainicio between ? and ? and ");
sql.append(" UPPER(ss.situacao) = 'FECHADA' ");
sql.append(" group by ");
sql.append(" ss.idsolicitacaoservico, ");
sql.append(" s.nomeservico, ");
sql.append(" ss.datahorainicio, ");
sql.append(" ss.datahorafim, ");
sql.append(" vsc.valorServico, ");
sql.append(" vsc.datainicio, ");
sql.append(" vsc.datafim");
Object[] params = { dataInicio, transformaHoraFinal(dataFim), idContrato, idServico };
try {
solicitacoesServicoDTO = this.execSQL(sql.toString(), params);
} catch (PersistenceException e) {
System.out.println("Problemas com atualiza��o da solicitacaoServico.");
e.printStackTrace();
}
return solicitacoesServicoDTO;
}
public String paginacaoOracle(String strSQL, int intInicio, int intLimite) {
strSQL = strSQL + " order by sol.idsolicitacaoservico ";
return "SELECT * FROM (SELECT PAGING.*, ROWNUM PAGING_RN FROM" + " (" + strSQL + ") PAGING WHERE (ROWNUM <= " + intLimite + "))" + " WHERE (PAGING_RN >= " + intInicio + ") ";
}
@SuppressWarnings("unused")
public Integer qtdTipoDemandaPrioridade(List<TarefaFluxoDTO> listTarefa, Integer idTipoDemandaServico, Integer idPrioridade) throws Exception {
StringBuilder sql = new StringBuilder();
Integer total = 0;
sql.append("SELECT COUNT(*) as quantidade ");
sql.append(" FROM solicitacaoservico sol ");
sql.append(" LEFT JOIN servicocontrato sc ON sc.idservicocontrato = sol.idservicocontrato ");
sql.append(" LEFT JOIN contratos c ON c.idcontrato = sc.idcontrato ");
sql.append(" LEFT JOIN servico s ON s.idservico = sc.idservico ");
sql.append(" LEFT JOIN tipodemandaservico td ON td.idtipodemandaservico = s.idtipodemandaservico ");
sql.append(" LEFT JOIN empregados e1 ON e1.idempregado = sol.idsolicitante ");
sql.append(" LEFT JOIN unidade u1 ON u1.idunidade = e1.idunidade ");
sql.append(" LEFT JOIN usuario usu ON usu.idusuario = sol.idresponsavel ");
sql.append(" LEFT JOIN empregados e2 ON e2.idempregado = usu.idempregado ");
sql.append(" LEFT JOIN unidade u2 ON u2.idunidade = e2.idunidade ");
sql.append(" LEFT JOIN origematendimento oa ON oa.idorigem = sol.idorigem ");
sql.append(" LEFT JOIN prioridade p ON p.idprioridade = sol.idprioridade ");
sql.append(" LEFT JOIN faseservico fs ON fs.idfase = sol.idfaseatual ");
sql.append(" LEFT JOIN grupo g1 ON g1.idgrupo = sol.idgrupoatual ");
sql.append(" LEFT JOIN grupo g2 ON g2.idgrupo = sol.idgruponivel1 ");
sql.append(" LEFT JOIN contatosolicitacaoservico cs ON cs.idcontatosolicitacaoservico = sol.idcontatosolicitacaoservico ");
sql.append(" LEFT JOIN aprovacaosolicitacaoservico aprov ON aprov.idaprovacaosolicitacaoservico = sol.idultimaaprovacao ");
sql.append(" INNER JOIN execucaosolicitacao es ON es.idsolicitacaoservico = sol.idsolicitacaoservico ");
sql.append("WHERE sol.idsolicitacaopai is null ");
int qtdIds = 0;
if (listTarefa != null && !listTarefa.isEmpty()) {
// Hack oracle
if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.ORACLE)) {
sql.append("and es.idInstanciaFluxo in ( select * from table(sys.odcinumberlist( ");
} else {
sql.append("and es.idInstanciaFluxo in ( ");
}
int size = listTarefa.size();
int max = 1;
int aux = 0;
int CONSTANT = 999;
// Hack oracle
if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.ORACLE)) {
for (TarefaFluxoDTO tarefaFluxoDto : listTarefa) {
aux += 1;
sql.append(tarefaFluxoDto.getIdInstancia());
if (aux == size) {
sql.append(")))");
} else if (aux > (CONSTANT * (max - 1)) && aux <= (CONSTANT * max)) {
sql.append(")) union select * from table(sys.odcinumberlist( ");
qtdIds++;
max++;
} else {
sql.append(",");
}
}
} else {
for (TarefaFluxoDTO tarefaFluxoDto : listTarefa) {
aux += 1;
sql.append(tarefaFluxoDto.getIdInstancia());
if (aux == size) {
sql.append(")");
} else {
sql.append(",");
}
}
}
if (idTipoDemandaServico > 0) {
sql.append(" AND s.idtipodemandaservico = " + idTipoDemandaServico);
}
if (idPrioridade > 0) {
sql.append(" AND sol.idprioridade = " + idPrioridade);
}
Long quantidadeLong = 0l;
BigDecimal totalLinhaBigDecimal;
Integer totalLinhaInteger;
List lista = new ArrayList();
lista = this.execSQL(sql.toString(), null);
if (lista != null) {
Object[] listObject = (Object[]) lista.get(0);
if (listObject != null && listObject.length > 0) {
if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.POSTGRESQL) || CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.MYSQL)) {
quantidadeLong = (Long) listObject[0];
}
if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.ORACLE)) {
totalLinhaBigDecimal = (BigDecimal) listObject[0];
quantidadeLong = totalLinhaBigDecimal.longValue();
}
if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.SQLSERVER)) {
totalLinhaInteger = (Integer) listObject[0];
quantidadeLong = Long.valueOf(totalLinhaInteger);
}
}
}
total = Integer.valueOf(quantidadeLong.toString());
} else {
return null;
}
return total;
}
public Collection<SolicitacaoServicoDTO> quantidadeSolicitacaoPorBaseConhecimento(SolicitacaoServicoDTO solicitacao) throws Exception {
StringBuilder sql = new StringBuilder();
List parametro = new ArrayList();
List listRetorno = new ArrayList();
sql.append("select idbaseconhecimento,count(idbaseconhecimento) from solicitacaoservico where idbaseconhecimento = ? group by idbaseconhecimento");
parametro.add(solicitacao.getIdBaseConhecimento());
listRetorno.add("idBaseConhecimento");
listRetorno.add("quantidade");
List list = execSQL(sql.toString(), parametro.toArray());
if (list != null && !list.isEmpty()) {
Collection<SolicitacaoServicoDTO> listaQuantidadeSolicitacaoServicoPorBaseConhecimento = this.listConvertion(SolicitacaoServicoDTO.class, list, listRetorno);
return listaQuantidadeSolicitacaoServicoPorBaseConhecimento;
/*
* for(SolicitacaoServicoDTO solicitacaoDto : listaQuantidadeSolicitacaoServicoPorBaseConhecimento){ return solicitacaoDto.getQuantidade(); }
*/
}
return null;
}
public Collection<SolicitacaoServicoDTO> relatorioControleSla(SolicitacaoServicoDTO solicitacaoServicoDTO) throws Exception {
List parametro = new ArrayList();
StringBuilder sql = new StringBuilder();
/*
* Desenvolvedor: Rodrigo Pecci - Data: 25/10/2013 - Hor�rio: 10h00min - ID Citsmart: 120770 Motivo/Coment�rio: A tabela empregados estava utilizando INNER JOIN, isso fazia com que as
* solicita��es que n�o possuem solicitante n�o fossem retornadas. Alterado para LEFT JOIN
*/
sql.append(" SELECT ss.prazohh, ");
sql.append(" ss.prazomm, ");
sql.append(" ss.idsolicitacaoservico, ");
sql.append(" ts.nometiposervico, ");
sql.append(" s.nomeservico, ");
sql.append(" sc.idcontrato, ");
sql.append(" co.numero, ");
sql.append(" e.nome, ");
sql.append(" ss.datahorasolicitacao, ");
sql.append(" ss.datahoralimite, ");
sql.append(" ss.datahorafim, ");
sql.append(" ss.idprioridade, ");
sql.append(" p.nomeprioridade, ");
sql.append(" ss.tempoatrasohh, ");
sql.append(" ss.tempoatrasomm, ");
sql.append(" ss.situacaosla, ");
sql.append(" ss.datahorasuspensaosla, ");
sql.append(" ss.datahorasuspensao, ");
sql.append(" ( CASE ");
sql.append(" WHEN UCASE(ss.situacao) LIKE ( 'EMANDAMENTO' ) THEN 'Em Andamento' ");
sql.append(" ELSE ss.situacao ");
sql.append(" end ), ");
sql.append(" tempoatendimentohh, ");
sql.append(" tempoatendimentomm, ");
sql.append(" ( CASE ");
sql.append(" WHEN g.nome IS NULL THEN '--' ");
sql.append(" ELSE g.nome ");
sql.append(" end ) AS nomeGrupo, ");
sql.append(" ( CASE WHEN ss.prazomm = 0 and ss.prazohh = 0 THEN 'S' ");
sql.append(" ELSE ( CASE ");
sql.append(" WHEN ss.datahoralimite IS NULL THEN 'N' ");
sql.append(" WHEN ( CASE ");
sql.append(" WHEN ss.datahorafim IS NOT NULL THEN ss.datahorafim ");
sql.append(" WHEN ss.situacaosla = 'S' THEN ss.datahorasuspensaosla ");
sql.append(" WHEN UCASE(ss.situacao) like 'SUSPENSA' THEN ss.datahorasuspensao ");
sql.append(" WHEN UCASE(ss.situacao) like 'FECHADA' THEN ss.datahorafim ");
sql.append(" ELSE CURRENT_TIMESTAMP ");
sql.append(" end ) >= ss.datahoralimite THEN 'S' ");
sql.append(" ELSE 'N' ");
sql.append(" end ) ");
sql.append(" end ) AS slaAtrasado ");
sql.append(" FROM solicitacaoservico ss ");
sql.append(" INNER JOIN execucaosolicitacao es ");
sql.append(" ON es.idsolicitacaoservico = ss.idsolicitacaoservico ");
sql.append(" INNER JOIN servicocontrato sc ");
sql.append(" ON sc.idservicocontrato = ss. idservicocontrato ");
sql.append(" INNER JOIN servico s ");
sql.append(" ON s.idservico = sc.idservico ");
sql.append(" INNER JOIN tiposervico ts ");
sql.append(" ON ts.idtiposervico = s.idtiposervico ");
sql.append(" INNER JOIN prioridade p ");
sql.append(" ON p.idprioridade = ss.idprioridade ");
sql.append(" LEFT JOIN empregados e ");
sql.append(" ON e.idempregado = ss.idsolicitante ");
sql.append(" INNER JOIN contratos co ");
sql.append(" ON co.idcontrato = sc.idcontrato ");
/*
* Desenvolvedor: Rodrigo Pecci - Data: 23/10/2013 - Hor�rio: 10h47min - ID Citsmart: 120770 Motivo/Coment�rio: O grupo estava utilizando INNER JOIN e quando n�o existia relacionamento o
* resultado do grupo n�o era retornado.
*/
sql.append(" LEFT JOIN grupo g ");
sql.append(" ON g.idgrupo = ss.idgrupoatual ");
sql.append(" inner join tipodemandaservico td on td.idtipodemandaservico = ss.idtipodemandaservico ");
if (solicitacaoServicoDTO.getIdSolicitacaoServico() != null) {
sql.append("WHERE ss.idsolicitacaoservico = ? ");
parametro.add(solicitacaoServicoDTO.getIdSolicitacaoServico());
} else {
if (solicitacaoServicoDTO.getDataInicio() != null && solicitacaoServicoDTO.getDataFim() != null) {
if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.ORACLE)) {
sql.append("where to_char(ss.datahorasolicitacao, 'YYYY-MM-DD') BETWEEN ? AND ? ");
} else {
sql.append("where ss.datahorasolicitacao BETWEEN ? AND ? ");
}
if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.ORACLE)) {
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
parametro.add(formatter.format(solicitacaoServicoDTO.getDataInicio()));
parametro.add(formatter.format(solicitacaoServicoDTO.getDataFim()));
} else {
parametro.add(solicitacaoServicoDTO.getDataInicio());
parametro.add(transformaHoraFinal(solicitacaoServicoDTO.getDataFim()));
}
/*
* Desenvolvedor: Rodrigo Pecci - Data: 25/10/2013 - Hor�rio: 14h21min - ID Citsmart: 120770 Motivo/Coment�rio: Removida a condi��o que n�o exibia solicita��es com contrato de servi�os
* que foram deletados. Todos devem ser exibidos.
*/
if (solicitacaoServicoDTO.getIdContrato() != null) {
sql.append("AND sc.idcontrato = ? ");
parametro.add(solicitacaoServicoDTO.getIdContrato());
}
if (solicitacaoServicoDTO.getIdSolicitante() != null) {
sql.append("AND ss.idsolicitante = ? ");
parametro.add(solicitacaoServicoDTO.getIdSolicitante());
}
if (solicitacaoServicoDTO.getIdPrioridade() != null) {
sql.append("AND ss.idprioridade = ? ");
parametro.add(solicitacaoServicoDTO.getIdPrioridade());
}
if (solicitacaoServicoDTO.getIdGrupoAtual() != null) {
sql.append("AND ss.idgrupoatual = ? ");
parametro.add(solicitacaoServicoDTO.getIdGrupoAtual());
}
// Esse servico refere a tabela servico e nao ServicoContrato
if (solicitacaoServicoDTO.getIdServico() != null) {
sql.append("AND s.idServico = ? ");
parametro.add(solicitacaoServicoDTO.getIdServico());
}
if (solicitacaoServicoDTO.getIdTipoServico() != null) {
sql.append("AND s.idtiposervico = ? ");
parametro.add(solicitacaoServicoDTO.getIdTipoServico());
}
if (solicitacaoServicoDTO.getIdUnidade() != null && !solicitacaoServicoDTO.getIdUnidade().equals(-1) && solicitacaoServicoDTO.getIdUnidade()!= 0) {
sql.append("AND ss.idUnidade = ? ");
parametro.add(solicitacaoServicoDTO.getIdUnidade());
}
if (solicitacaoServicoDTO.getNomeServico() != null && !solicitacaoServicoDTO.getNomeServico().isEmpty()) {
sql.append("AND (s.nomeservico like '%" + solicitacaoServicoDTO.getNomeServico() + "%' or s.nomeservico like '%" + solicitacaoServicoDTO.getNomeServico().toUpperCase() + "%') ");
}
if (solicitacaoServicoDTO.getIdOrigem() != null && !solicitacaoServicoDTO.getIdOrigem().equals(-1)) {
sql.append("AND ss.idorigem = ? ");
parametro.add(solicitacaoServicoDTO.getIdOrigem());
}
if (solicitacaoServicoDTO.getSla() != null && !solicitacaoServicoDTO.getSla().isEmpty()) {
String[] dividirSLA = solicitacaoServicoDTO.getSla().split(":");
sql.append("AND ss.prazohh = ? AND ss.prazomm = ? ");
parametro.add(Integer.parseInt(dividirSLA[0]));
parametro.add(Integer.parseInt(dividirSLA[1]));
}
if (solicitacaoServicoDTO.getSituacao() != null && !solicitacaoServicoDTO.getSituacao().trim().equalsIgnoreCase("")) {
sql.append("AND ss.situacao = ? ");
parametro.add(solicitacaoServicoDTO.getSituacao());
}
if (solicitacaoServicoDTO.getClassificacao() != null && !solicitacaoServicoDTO.getClassificacao().equalsIgnoreCase("")) {
sql.append("AND (td.classificacao like '%" + solicitacaoServicoDTO.getClassificacao() + "%' or td.classificacao like '%" + solicitacaoServicoDTO.getClassificacao().toUpperCase()
+ "%') ");
}
sql.append("ORDER BY ss.idsolicitacaoservico");
}
}
List lista = this.execSQL(sql.toString(), parametro.toArray());
List<String> listRetorno = new ArrayList<String>();
listRetorno.add("prazoHH");
listRetorno.add("prazoMM");
listRetorno.add("idSolicitacaoServico");
listRetorno.add("nomeTipoServico");
listRetorno.add("nomeServico");
listRetorno.add("idContrato");
listRetorno.add("contrato");
listRetorno.add("nomeSolicitante");
listRetorno.add("dataHoraSolicitacao");
listRetorno.add("dataHoraLimite");
listRetorno.add("dataHoraFim");
listRetorno.add("idPrioridade");
listRetorno.add("nomePrioridade");
listRetorno.add("tempoAtrasoHH");
listRetorno.add("tempoAtrasoMM");
listRetorno.add("situacaoSLA");
listRetorno.add("dataHoraSuspensaoSLA");
listRetorno.add("dataHoraSuspensao");
listRetorno.add("situacao");
listRetorno.add("tempoAtendimentoHH");
listRetorno.add("tempoAtendimentoMM");
listRetorno.add("grupoAtual");
listRetorno.add("atrasoSLAStr");
List result = engine.listConvertion(SolicitacaoServicoDTO.class, lista, listRetorno);
if (result != null) {
return result;
} else {
return null;
}
}
public SolicitacaoServicoDTO restoreAll(Integer idSolicitacao) throws Exception {
List parametro = new ArrayList();
parametro.add(idSolicitacao);
String sql = getSQLRestoreAll();
sql += " WHERE sol.idsolicitacaoservico = ? ";
List lista = this.execSQL(sql.toString(), parametro.toArray());
if (lista != null && !lista.isEmpty()) {
List listaResult = engine.listConvertion(SolicitacaoServicoDTO.class, lista, getColunasRestoreAll());
return (SolicitacaoServicoDTO) listaResult.get(0);
} else {
return null;
}
}
public SolicitacaoServicoDTO restoreByIdInstanciaFluxo(Integer idInstanciaFluxo) throws Exception {
List parametro = new ArrayList();
parametro.add(idInstanciaFluxo);
String sql = getSQLRestoreAll();
sql += " INNER JOIN execucaosolicitacao es ON es.idsolicitacaoservico = sol.idsolicitacaoservico ";
sql += " WHERE sol.idsolicitacaopai is null and es.idInstanciaFluxo = ? ";
List lista = new ArrayList();
lista = this.execSQL(sql.toString(), parametro.toArray());
if (lista != null && !lista.isEmpty()) {
List listaResult = engine.listConvertion(SolicitacaoServicoDTO.class, lista, getColunasRestoreAll());
return (SolicitacaoServicoDTO) listaResult.get(0);
} else {
return null;
}
}
public SolicitacaoServicoDTO restoreInfoEmails(Integer idSolicitacao) throws Exception {
List parametro = new ArrayList();
parametro.add(idSolicitacao);
String sql = "select o.ocorrencia as registroexecucao, o.dataregistro as dataRegistroOcorrencia, o.horaregistro as horaRegistroOcorrencia, o.registradopor, o.categoria as categoriaocorrencia "
+ " from solicitacaoservico sol "
+ " inner join ocorrenciasolicitacao o on sol.idsolicitacaoservico = o.idsolicitacaoservico "
+ " where sol.idsolicitacaoservico = ? order by idocorrencia desc";
List lista = this.execSQL(sql.toString(), parametro.toArray());
List<String> listRetorno = new ArrayList<String>();
listRetorno.add("registroexecucao");
listRetorno.add("dataRegistroOcorrencia");
listRetorno.add("horaRegistroOcorrencia");
listRetorno.add("registradoPor");
listRetorno.add("categoriaOcorrencia");
if (lista != null && !lista.isEmpty()) {
List listaResult = engine.listConvertion(SolicitacaoServicoDTO.class, lista, listRetorno);
if (listaResult.size() >= 2) {
return (SolicitacaoServicoDTO) listaResult.get(1);
} else {
return null;
}
} else {
return null;
}
}
public RelatorioQuantitativoRetornoDTO retornarIdEncerramento(String encerramento, RelatorioQuantitativoRetornoDTO relatorioQuantitativoRetornoDTO) throws Exception {
List parametro = new ArrayList();
StringBuilder sb = new StringBuilder();
sb.append("select idelemento from bpm_elementofluxo where nome LIKE '" + encerramento + "' and idFluxo = ?");
parametro.add(relatorioQuantitativoRetornoDTO.getIdFluxo());
List lista = this.execSQL(sb.toString(), parametro.toArray());
List<String> listRetorno = new ArrayList<String>();
listRetorno.add("idElemento");
if (lista != null && !lista.isEmpty()) {
List result = engine.listConvertion(RelatorioQuantitativoRetornoDTO.class, lista, listRetorno);
return (RelatorioQuantitativoRetornoDTO) result.get(0);
} else {
return new RelatorioQuantitativoRetornoDTO();
}
}
/**
* Retorna SolicitacaoServico com as informa��es do contato setado.
*
* @param nomeContato
* @return
* @throws Exception
*/
public SolicitacaoServicoDTO retornaSolicitacaoServicoComInformacoesDoContato(String nomeContato) throws Exception {
List parametro = new ArrayList();
StringBuilder sb = new StringBuilder();
sb.append("SELECT nome, email, telefone FROM EMPREGADOS WHERE nome = ? ");
parametro.add(nomeContato);
List lista = this.execSQL(sb.toString(), parametro.toArray());
List<String> listRetorno = new ArrayList<String>();
listRetorno.add("nomecontato");
listRetorno.add("emailcontato");
listRetorno.add("telefonecontato");
List result = engine.listConvertion(SolicitacaoServicoDTO.class, lista, listRetorno);
if (result != null && !result.isEmpty()) {
return (SolicitacaoServicoDTO) result.get(0);
} else {
return null;
}
}
/**
* Retorna SolicitacaoServico com Item de Configura��o do Solicitante selecionado.
*
* @param login
* @return SolicitacaoServicoDTO
* @throws Exception
*/
public SolicitacaoServicoDTO retornaSolicitacaoServicoComItemConfiguracaoDoSolicitante(String login) throws Exception {
List parametro = new ArrayList();
StringBuilder sb = new StringBuilder();
sb.append("SELECT identificacao,idItemConfiguracao FROM ITEMCONFIGURACAO WHERE IDITEMCONFIGURACAOPAI IS NULL AND DATAFIM IS NULL and identificacao ");
sb.append("like ? order by datainicio desc");
parametro.add(login + "%");
List lista = this.execSQL(sb.toString(), parametro.toArray());
List<String> listRetorno = new ArrayList<String>();
listRetorno.add("itemConfiguracao");
listRetorno.add("idItemConfiguracao");
List result = engine.listConvertion(SolicitacaoServicoDTO.class, lista, listRetorno);
if (result != null && !result.isEmpty()) {
return (SolicitacaoServicoDTO) result.get(0);
} else {
return null;
}
}
public RelatorioQuantitativoRetornoDTO servicoRetorno(RelatorioQuantitativoRetornoDTO relatorioQuantitativoRetornoDTO) throws Exception {
List parametro = new ArrayList();
StringBuilder sql = new StringBuilder();
sql.append("select ocorrenciasolicitacao.idocorrencia,ocorrenciasolicitacao.dataregistro, ocorrenciasolicitacao.horaregistro ");
sql.append("from ocorrenciasolicitacao ocorrenciasolicitacao ");
sql.append("INNER JOIN bpm_itemtrabalhofluxo bpm_itemtrabalhofluxo ");
sql.append("ON bpm_itemtrabalhofluxo.iditemtrabalho = ocorrenciasolicitacao.iditemtrabalho ");
sql.append("where ocorrenciasolicitacao.idsolicitacaoservico = ? ");
sql.append("AND bpm_itemtrabalhofluxo.idinstancia = ? ");
sql.append("AND bpm_itemtrabalhofluxo.iditemtrabalho = ? ");
sql.append("ORDER BY ocorrenciasolicitacao.idocorrencia DESC LIMIT 1; ");
parametro.add(relatorioQuantitativoRetornoDTO.getIdSolicitacaoServico());
parametro.add(relatorioQuantitativoRetornoDTO.getIdInstancia());
parametro.add(relatorioQuantitativoRetornoDTO.getIdItemTrabalho());
List lista = this.execSQL(sql.toString(), parametro.toArray());
List<String> listRetorno = new ArrayList<String>();
listRetorno.add("idOcorrencia");
listRetorno.add("dataRegistro");
listRetorno.add("horaRegistro");
if (lista != null && !lista.isEmpty()) {
List result = engine.listConvertion(RelatorioQuantitativoRetornoDTO.class, lista, listRetorno);
return (RelatorioQuantitativoRetornoDTO) result.get(0);
} else {
return null;
}
}
public Integer totalDePaginas(Integer itensPorPagina, Collection<TarefaFluxoDTO> listTarefa) throws Exception {
StringBuilder sql = new StringBuilder();
// String ids = idsInstancia.toString();
sql.append(" SELECT COUNT(*) ");
sql.append(" FROM solicitacaoservico sol ");
sql.append(" LEFT JOIN servicocontrato sc ON sc.idservicocontrato = sol.idservicocontrato ");
sql.append(" LEFT JOIN contratos c ON c.idcontrato = sc.idcontrato ");
sql.append(" LEFT JOIN servico s ON s.idservico = sc.idservico ");
sql.append(" LEFT JOIN tipodemandaservico td ON td.idtipodemandaservico = s.idtipodemandaservico ");
sql.append(" LEFT JOIN empregados e1 ON e1.idempregado = sol.idsolicitante ");
sql.append(" LEFT JOIN unidade u1 ON u1.idunidade = e1.idunidade ");
sql.append(" LEFT JOIN usuario usu ON usu.idusuario = sol.idresponsavel ");
sql.append(" LEFT JOIN empregados e2 ON e2.idempregado = usu.idempregado ");
sql.append(" LEFT JOIN unidade u2 ON u2.idunidade = e2.idunidade ");
sql.append(" LEFT JOIN origematendimento oa ON oa.idorigem = sol.idorigem ");
sql.append(" LEFT JOIN prioridade p ON p.idprioridade = sol.idprioridade ");
sql.append(" LEFT JOIN faseservico fs ON fs.idfase = sol.idfaseatual ");
sql.append(" LEFT JOIN grupo g1 ON g1.idgrupo = sol.idgrupoatual ");
sql.append(" LEFT JOIN grupo g2 ON g2.idgrupo = sol.idgruponivel1 ");
sql.append(" LEFT JOIN contatosolicitacaoservico cs ON cs.idcontatosolicitacaoservico = sol.idcontatosolicitacaoservico ");
sql.append(" LEFT JOIN aprovacaosolicitacaoservico aprov ON aprov.idaprovacaosolicitacaoservico = sol.idultimaaprovacao ");
sql.append(" INNER JOIN execucaosolicitacao es ON es.idsolicitacaoservico = sol.idsolicitacaoservico ");
sql.append(" WHERE sol.idsolicitacaopai is null ");
if (listTarefa != null && !listTarefa.isEmpty()) {
// Hack oracle
if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.ORACLE)) {
sql.append("and es.idInstanciaFluxo in ( select * from table(sys.odcinumberlist( ");
} else {
sql.append("and es.idInstanciaFluxo in ( ");
}
int size = listTarefa.size();
int max = 1;
int aux = 0;
int CONSTANT = 999;
// Hack oracle
if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.ORACLE)) {
for (TarefaFluxoDTO tarefaFluxoDto : listTarefa) {
aux += 1;
sql.append(tarefaFluxoDto.getIdInstancia());
if (aux == size) {
sql.append(")))");
} else if (aux > (CONSTANT * (max - 1)) && aux <= (CONSTANT * max)) {
sql.append(")) union select * from table(sys.odcinumberlist( ");
max++;
} else {
sql.append(",");
}
}
} else {
for (TarefaFluxoDTO tarefaFluxoDto : listTarefa) {
aux += 1;
sql.append(tarefaFluxoDto.getIdInstancia());
if (aux == size) {
sql.append(")");
} else {
sql.append(",");
}
}
}
} else {
return null;
}
Long totalLinhaLong = 0l;
Long totalPagina = 0l;
Integer total = 0;
BigDecimal totalLinhaBigDecimal;
Integer totalLinhaInteger;
int intLimite = itensPorPagina;
List lista = new ArrayList();
lista = this.execSQL(sql.toString(), null);
if (lista != null) {
Object[] totalLinha = (Object[]) lista.get(0);
if (totalLinha != null && totalLinha.length > 0) {
if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.POSTGRESQL) || CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.MYSQL)) {
totalLinhaLong = (Long) totalLinha[0];
}
if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.ORACLE)) {
totalLinhaBigDecimal = (BigDecimal) totalLinha[0];
totalLinhaLong = totalLinhaBigDecimal.longValue();
}
if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.SQLSERVER)) {
totalLinhaInteger = (Integer) totalLinha[0];
totalLinhaLong = Long.valueOf(totalLinhaInteger);
}
}
}
if (totalLinhaLong > 0) {
totalPagina = (totalLinhaLong / intLimite);
if (totalLinhaLong % intLimite != 0) {
totalPagina = totalPagina + 1;
}
}
total = Integer.valueOf(totalPagina.toString());
return total;
}
/**
* Retorna o Total de P�ginas (Quantidade Total de Solicita��es dividido pela QTDE de Itens por P�gina) de acordo com as Tarefas e os Contratos do Usu�rio Logado.
*
* @param itensPorPagina
* @param listTarefa
* @param gerenciamentoServicosDTO
* @return Integer - N�mero Total de P�ginas
* @throws Exception
* @author valdoilo.damasceno
* @since 05.11.2013
*/
public Integer totalDePaginas(Integer itensPorPagina, Collection<TarefaFluxoDTO> listTarefa, GerenciamentoServicosDTO gerenciamentoServicosDTO, Collection<ContratoDTO> listContratoUsuarioLogado)
throws Exception {
StringBuilder sql = new StringBuilder();
List parametros = new ArrayList();
sql.append(" SELECT COUNT(*) ");
sql.append(" FROM solicitacaoservico sol ");
sql.append(" LEFT JOIN servicocontrato sc ON sc.idservicocontrato = sol.idservicocontrato ");
sql.append(" LEFT JOIN contratos c ON c.idcontrato = sc.idcontrato ");
sql.append(" LEFT JOIN servico s ON s.idservico = sc.idservico ");
sql.append(" LEFT JOIN tipodemandaservico td ON td.idtipodemandaservico = s.idtipodemandaservico ");
sql.append(" LEFT JOIN empregados e1 ON e1.idempregado = sol.idsolicitante ");
sql.append(" LEFT JOIN unidade u1 ON u1.idunidade = e1.idunidade ");
sql.append(" LEFT JOIN usuario usu ON usu.idusuario = sol.idresponsavel ");
sql.append(" LEFT JOIN empregados e2 ON e2.idempregado = usu.idempregado ");
sql.append(" LEFT JOIN unidade u2 ON u2.idunidade = e2.idunidade ");
sql.append(" LEFT JOIN origematendimento oa ON oa.idorigem = sol.idorigem ");
sql.append(" LEFT JOIN prioridade p ON p.idprioridade = sol.idprioridade ");
sql.append(" LEFT JOIN faseservico fs ON fs.idfase = sol.idfaseatual ");
sql.append(" LEFT JOIN grupo g1 ON g1.idgrupo = sol.idgrupoatual ");
sql.append(" LEFT JOIN grupo g2 ON g2.idgrupo = sol.idgruponivel1 ");
sql.append(" LEFT JOIN contatosolicitacaoservico cs ON cs.idcontatosolicitacaoservico = sol.idcontatosolicitacaoservico ");
sql.append(" LEFT JOIN aprovacaosolicitacaoservico aprov ON aprov.idaprovacaosolicitacaoservico = sol.idultimaaprovacao ");
sql.append(" INNER JOIN execucaosolicitacao es ON es.idsolicitacaoservico = sol.idsolicitacaoservico ");
sql.append(" INNER JOIN bpm_itemtrabalhofluxo it ON it.idinstancia = es.idinstanciafluxo ");
sql.append(" WHERE sol.idsolicitacaopai is null ");
List<TarefaFluxoDTO> listaFiltrada = filtrarElementosDaLista(listTarefa, gerenciamentoServicosDTO);
int size = listaFiltrada.size();
if (listaFiltrada != null && size != 0 && listContratoUsuarioLogado != null && !listContratoUsuarioLogado.isEmpty()) {
// Hack oracle
if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.ORACLE)) {
// O oracle possui uma restri��o de apenas 1000 registros na fun��o IN por isso foi necess�rio realizar um UNION a cada 1000 registros. Realizado por Fl�vio.
sql.append(" AND it.iditemtrabalho IN ( select * from table(sys.odcinumberlist( ");
} else {
sql.append(" AND it.iditemtrabalho IN ( ");
}
int max = 1;
int aux = 0;
int CONSTANT = 999;
// Hack oracle
if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.ORACLE)) {
for (TarefaFluxoDTO tarefaFluxoDto : listaFiltrada) {
aux += 1;
sql.append(tarefaFluxoDto.getIdItemTrabalho());
if (aux == size) {
sql.append(")))");
} else if (aux > (CONSTANT * (max - 1)) && aux <= (CONSTANT * max)) {
sql.append(")) UNION SELECT * from table(sys.odcinumberlist( ");
max++;
} else {
sql.append(",");
}
}
} else {
for (TarefaFluxoDTO tarefaFluxoDto : listaFiltrada) {
aux += 1;
sql.append(tarefaFluxoDto.getIdItemTrabalho());
if (aux == size) {
sql.append(")");
} else {
sql.append(",");
}
}
}
// FILTRA CONTRATO DO USU�RIO LOGADO - S� retorna as Solicita��es dos Contratos em que o usu�rio logado est� inserido.
if (listContratoUsuarioLogado != null && !listContratoUsuarioLogado.isEmpty()) {
sql.append(" AND c.idcontrato in ( ");
boolean a = true;
for (ContratoDTO contrato : listContratoUsuarioLogado) {
if (a) {
sql.append(contrato.getIdContrato());
a = false;
} else {
sql.append(",");
sql.append(contrato.getIdContrato());
}
}
sql.append(" )");
}
} else {
return 0;
}
// Adiciona o filtro de pesquisa caso houver filtro
this.adicionarFiltroPesquisa(sql, gerenciamentoServicosDTO, parametros);
Long totalLinhaLong = 0l;
Long totalPagina = 0l;
Integer total = 0;
BigDecimal totalLinhaBigDecimal;
Integer totalLinhaInteger;
int intLimite = itensPorPagina;
List lista = new ArrayList();
lista = this.execSQL(sql.toString(), parametros.toArray());
if (lista != null) {
Object[] totalLinha = (Object[]) lista.get(0);
if (totalLinha != null && totalLinha.length > 0) {
if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.POSTGRESQL) || CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.MYSQL)) {
totalLinhaLong = (Long) totalLinha[0];
}
if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.ORACLE)) {
totalLinhaBigDecimal = (BigDecimal) totalLinha[0];
totalLinhaLong = totalLinhaBigDecimal.longValue();
}
if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.SQLSERVER)) {
totalLinhaInteger = (Integer) totalLinha[0];
totalLinhaLong = Long.valueOf(totalLinhaInteger);
}
}
}
if (totalLinhaLong > 0) {
totalPagina = (totalLinhaLong / intLimite);
if (totalLinhaLong % intLimite != 0) {
totalPagina = totalPagina + 1;
}
}
total = Integer.valueOf(totalPagina.toString());
return total;
}
private Timestamp transformaHoraFinal(Date data) throws ParseException {
String dataHora = data + " 23:59:59";
String pattern = "yyyy-MM-dd hh:mm:ss";
SimpleDateFormat sdf = new SimpleDateFormat(pattern);
java.util.Date d = sdf.parse(dataHora);
java.sql.Timestamp sqlDate = new java.sql.Timestamp(d.getTime());
return sqlDate;
}
@Override
public void updateNotNull(IDto obj) throws PersistenceException {
super.updateNotNull(obj);
}
/**
* Total de p�gina para o portal
* @param itensPorPagina
* @param listTarefa
* @return
* @throws Exception
*/
public Integer totalDePaginasPortal(Integer itensPorPagina, Collection<TarefaFluxoDTO> listTarefa, GerenciamentoServicosDTO gerenciamentoServicosDTO, Collection<ContratoDTO> listContratoUsuarioLogado) throws Exception {
StringBuilder sql = new StringBuilder();
List parametros = new ArrayList();
sql.append(" SELECT COUNT(*) ");
sql.append(" FROM solicitacaoservico sol ");
sql.append(" LEFT JOIN servicocontrato sc ON sc.idservicocontrato = sol.idservicocontrato ");
sql.append(" LEFT JOIN contratos c ON c.idcontrato = sc.idcontrato ");
sql.append(" LEFT JOIN servico s ON s.idservico = sc.idservico ");
sql.append(" LEFT JOIN tipodemandaservico td ON td.idtipodemandaservico = s.idtipodemandaservico ");
sql.append(" LEFT JOIN empregados e1 ON e1.idempregado = sol.idsolicitante ");
sql.append(" LEFT JOIN unidade u1 ON u1.idunidade = e1.idunidade ");
sql.append(" LEFT JOIN usuario usu ON usu.idusuario = sol.idresponsavel ");
sql.append(" LEFT JOIN empregados e2 ON e2.idempregado = usu.idempregado ");
sql.append(" LEFT JOIN unidade u2 ON u2.idunidade = e2.idunidade ");
sql.append(" LEFT JOIN origematendimento oa ON oa.idorigem = sol.idorigem ");
sql.append(" LEFT JOIN prioridade p ON p.idprioridade = sol.idprioridade ");
sql.append(" LEFT JOIN faseservico fs ON fs.idfase = sol.idfaseatual ");
sql.append(" LEFT JOIN grupo g1 ON g1.idgrupo = sol.idgrupoatual ");
sql.append(" LEFT JOIN grupo g2 ON g2.idgrupo = sol.idgruponivel1 ");
sql.append(" LEFT JOIN contatosolicitacaoservico cs ON cs.idcontatosolicitacaoservico = sol.idcontatosolicitacaoservico ");
sql.append(" LEFT JOIN aprovacaosolicitacaoservico aprov ON aprov.idaprovacaosolicitacaoservico = sol.idultimaaprovacao ");
sql.append(" INNER JOIN execucaosolicitacao es ON es.idsolicitacaoservico = sol.idsolicitacaoservico ");
sql.append("WHERE sol.idsolicitacaopai is null ");
if (listContratoUsuarioLogado != null && !listContratoUsuarioLogado.isEmpty()) {
// FILTRA CONTRATO DO USU�RIO LOGADO - S� retorna as Solicita��es dos Contratos em que o usu�rio logado est� inserido.
if (listContratoUsuarioLogado != null && !listContratoUsuarioLogado.isEmpty()) {
sql.append(" AND c.idcontrato in ( ");
boolean verifica = true;
for (ContratoDTO contrato : listContratoUsuarioLogado) {
if (verifica) {
sql.append(contrato.getIdContrato());
verifica = false;
} else {
sql.append(",");
sql.append(contrato.getIdContrato());
}
}
sql.append(" )");
}
}
// Adiciona o filtro de pesquisa caso houver filtro
adicionarFiltroPesquisa(sql, gerenciamentoServicosDTO, parametros);
Long totalLinhaLong = 0l;
Long totalPagina = 0l;
Integer total = 0;
BigDecimal totalLinhaBigDecimal;
Integer totalLinhaInteger;
int intLimite = itensPorPagina;
List lista = new ArrayList();
lista = this.execSQL(sql.toString(), parametros.toArray());
if (lista != null) {
Object[] totalLinha = (Object[]) lista.get(0);
if (totalLinha != null && totalLinha.length > 0) {
if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.POSTGRESQL) || CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.MYSQL)) {
totalLinhaLong = (Long) totalLinha[0];
}
if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.ORACLE)) {
totalLinhaBigDecimal = (BigDecimal) totalLinha[0];
totalLinhaLong = totalLinhaBigDecimal.longValue();
}
if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.SQLSERVER)) {
totalLinhaInteger = (Integer) totalLinha[0];
totalLinhaLong = Long.valueOf(totalLinhaInteger);
}
}
}
if (totalLinhaLong > 0) {
totalPagina = (totalLinhaLong / intLimite);
if (totalLinhaLong % intLimite != 0) {
totalPagina = totalPagina + 1;
}
}
total = Integer.valueOf(totalPagina.toString());
return total;
}
/**
* Seta uma solicita��o como filha de outra.
*
* @param solicitacaoDto
* @param condicoes
* @author breno.guimaraes
*/
public void updateSolicitacaoPai(Integer idSolicitacaoServicoFilha, Integer idSolicitacaoServicoPai) {
StringBuilder sql = new StringBuilder();
sql.append("UPDATE " + getTableName() + " SET idsolicitacaopai = ? WHERE (idsolicitacaoservico = ?)");
Object[] params = { idSolicitacaoServicoPai, idSolicitacaoServicoFilha };
try {
this.execUpdate(sql.toString(), params);
} catch (PersistenceException e) {
System.out.println("Problemas com atualiza��o da solicitacaoServico.");
e.printStackTrace();
}
}
public boolean validaQuantidadeRetorno(RelatorioQuantitativoRetornoDTO relatorioQuantitativoRetornoDTO) throws Exception {
List parametro = new ArrayList();
StringBuilder sb = new StringBuilder();
sb.append("select count(idelemento) as total ");
sb.append("from bpm_itemtrabalhofluxo ");
sb.append("where idinstancia = ? ");
sb.append("and idelemento = ? ");
sb.append("group by idelemento ");
parametro.add(relatorioQuantitativoRetornoDTO.getIdInstancia());
parametro.add(relatorioQuantitativoRetornoDTO.getIdElemento());
List listaDados = this.execSQL(sb.toString(), parametro.toArray());
Integer total = 0;
if (listaDados != null) {
Object[] row = (Object[]) listaDados.get(0);
total = Integer.parseInt(row[0].toString());
}
if (total == 1) {
return true;
} else {
return false;
}
}
public boolean verificarExistenciaDeUnidade(Integer idUnidade) throws Exception {
Object[] objs = new Object[] { idUnidade };
String sql = "SELECT distinct idunidade FROM " + getTableName() + " WHERE idunidade = ? ";
List lista = this.execSQL(sql, objs);
List listRetorno = new ArrayList();
listRetorno.add("idUnidade");
if (lista != null && !lista.isEmpty()) {
return true;
} else {
return false;
}
}
public Collection<RelatorioEficaciaTesteDTO> listaSolicitacaoPorServicosAbertosNoPerido(Date dataIncio, Date dataFim, List<ServicoDTO> listaServicos) throws Exception {
List parametro = new ArrayList();
List listRetorno = new ArrayList();
List list = new ArrayList();
StringBuilder sql = new StringBuilder();
sql.append(" SELECT DISTINCT solicitacaoservico.idsolicitacaoservico as numeroSolicitacao,servico.nomeServico as nomeServico,empregados.nome as solicitante,solicitacaoservico.datahorasolicitacao as aberturaSolicitacao,solicitacaoservico.situacao as situacao");
sql.append(" FROM solicitacaoservico solicitacaoservico INNER JOIN servicocontrato ON solicitacaoservico.datahorasolicitacao BETWEEN ? AND ? ");
sql.append(" AND solicitacaoservico.situacao <> 'Cancelada' AND servicocontrato.idservicocontrato = solicitacaoservico.idservicocontrato INNER JOIN tipodemandaservico ON tipodemandaservico.idtipodemandaservico = solicitacaoservico.idtipodemandaservico");
sql.append(" INNER JOIN servico ON servicocontrato.idservico IN ( ");
for (int i = 0; i<listaServicos.size();i++) {
if( i != listaServicos.size()-1) {
sql.append(listaServicos.get(i).getIdServico()+",");
} else {
sql.append(listaServicos.get(i).getIdServico());
}
}
sql.append(" ) AND servicocontrato.idservico = servico.idservico INNER JOIN empregados ON solicitacaoservico.idsolicitante = empregados.idempregado ORDER BY servico.nomeServico, solicitacaoservico.idsolicitacaoservico");
parametro.add(dataIncio);
Timestamp dtfim = this.transformaHoraFinal(dataFim);
parametro.add(dtfim);
list = this.execSQL(sql.toString(), parametro.toArray());
listRetorno.add("numeroSolicitacao");
listRetorno.add("nomeServico");
listRetorno.add("solicitante");
listRetorno.add("aberturaSolicitacao");
listRetorno.add("situacao");
if (list != null && !list.isEmpty()) {
return this.listConvertion(RelatorioEficaciaTesteDTO.class, list, listRetorno);
} else {
return null;
}
}
public Collection<RelatorioDocumentacaoDeFuncionalidadesNovasOuAlteradasNoPeriodoDTO> listaQtdSolicitacoesCanceladasFinalizadasporServicoNoPeriodo(Date dataIncio, Date dataFim, List<ServicoDTO> listaServicos) throws Exception {
List parametro = new ArrayList();
List listRetorno = new ArrayList();
String servicos = "";
List list = new ArrayList();
StringBuilder sql = new StringBuilder();
for (int i = 0; i<listaServicos.size();i++) {
if( i != listaServicos.size()-1) {
servicos += listaServicos.get(i).getIdServico()+",";
} else {
servicos += listaServicos.get(i).getIdServico().toString();
}
}
sql.append("SELECT DISTINCT servico.nomeServico as nomeServico,TotalAberto as totalAberto,qtdeSoliciatacoesCanceladasFinalizadas as qtdeSoliciatacoesCanceladasFinalizadas FROM servico ");
sql.append("JOIN (SELECT DISTINCT idservico ,COUNT(idservico) as TotalAberto FROM solicitacaoservico solicitacaoservico JOIN servicocontrato ON solicitacaoservico.datahorasolicitacao BETWEEN ? AND ? AND ");
sql.append("servicocontrato.idservicocontrato = solicitacaoservico.idservicocontrato AND servicocontrato.idservico IN ("+servicos+")GROUP BY idservico) abertas on servico.idservico = abertas.idservico ");
sql.append("left JOIN (SELECT DISTINCT idservico, COUNT(idservico) as qtdeSoliciatacoesCanceladasFinalizadas FROM solicitacaoservico solicitacaoservico JOIN servicocontrato ON solicitacaoservico.datahorasolicitacao BETWEEN ? AND ? AND ");
sql.append("servicocontrato.idservicocontrato = solicitacaoservico.idservicocontrato AND servicocontrato.idservico IN ("+servicos+") and (solicitacaoservico.situacao ='Cancelada' or solicitacaoservico.situacao = 'Fechada' ) ");
sql.append("GROUP BY idservico) fechadasFinalizadas on servico.idservico = fechadasFinalizadas.idservico ORDER BY servico.nomeServico ");
Timestamp dtfim = this.transformaHoraFinal(dataFim);
parametro.add(dataIncio);
parametro.add(dtfim);
parametro.add(dataIncio);
parametro.add(dtfim);
list = this.execSQL(sql.toString(), parametro.toArray());
listRetorno.add("nomeServico");
listRetorno.add("totalAberto");
listRetorno.add("qtdeSoliciatacoesCanceladasFinalizadas");
if (list != null && !list.isEmpty()) {
return this.listConvertion(RelatorioDocumentacaoDeFuncionalidadesNovasOuAlteradasNoPeriodoDTO.class, list, listRetorno);
} else {
return null;
}
}
/**
* @param relatorioIncidentesNaoResolvidosDTO
* @return
* @throws Exception
* @author bruno.aquino
*/
public Collection<SolicitacaoServicoDTO> findSolicitacoesNaoResolvidasNoPrazoKPI(RelatorioIncidentesNaoResolvidosDTO relatorioIncidentesNaoResolvidosDTO) throws Exception {
List parametro = new ArrayList();
List listRetorno = new ArrayList();
List list = new ArrayList();
StringBuilder sql = new StringBuilder();
sql.append("select ss.idsolicitacaoservico, t.nometipodemandaservico, ss.idusuarioresponsavelatual, u.nome as responsavelAtual, ");
sql.append("e.nome as nomeSolicitante, g.nome as nomeGrupo, ");
sql.append("ss.idsolicitante, ss.situacao, servico.nomeservico, datahorasolicitacao, c.numero as nomeContrato ");
sql.append("from solicitacaoservico ss ");
sql.append("inner join servicocontrato sc on ss.idservicocontrato = sc.idservicocontrato ");
sql.append("inner join servico servico on servico.idservico = sc.idservico ");
sql.append("inner join contratos c on c.idcontrato = sc.idcontrato ");
sql.append("inner join tipodemandaservico t on t.idtipodemandaservico = ss.idtipodemandaservico ");
sql.append("left join usuario u on u.idusuario = ss.idusuarioresponsavelatual ");
sql.append("inner join empregados e on e.idempregado = ss.idsolicitante ");
sql.append("inner join grupo g on ss.idgrupoatual = g.idgrupo ");
sql.append("WHERE UPPER(ss.situacao) NOT IN (UPPER('Fechada'), UPPER('Cancelada'),UPPER('Resolvida')) ");
sql.append("and datahorasolicitacao < ? ");
parametro.add(relatorioIncidentesNaoResolvidosDTO.getPeriodoReferencia());
if (relatorioIncidentesNaoResolvidosDTO.getListaServicos() != null && !relatorioIncidentesNaoResolvidosDTO.getListaServicos().isEmpty()) {
int aux = 1;
String[] listaServicosTela;
listaServicosTela = relatorioIncidentesNaoResolvidosDTO.getListaServicos().split(";");
if (listaServicosTela != null && listaServicosTela.length > 0) {
sql.append("and ( ");
for (String i : listaServicosTela) {
i = StringUtils.deleteWhitespace(i);
if (StringUtils.isNotBlank(i)) {
if (listaServicosTela.length > aux) {
sql.append(" sc.idservico = ? or ");
parametro.add(Integer.parseInt(i));
} else {
sql.append(" sc.idservico = ? ");
parametro.add(Integer.parseInt(i));
}
}
aux++;
}
sql.append(" ) ");
}
}
if (relatorioIncidentesNaoResolvidosDTO.getListaGrupos() != null && !relatorioIncidentesNaoResolvidosDTO.getListaGrupos().isEmpty()) {
int aux = 1;
String[] listaGrupoTela;
listaGrupoTela = relatorioIncidentesNaoResolvidosDTO.getListaGrupos().split(";");
if (listaGrupoTela != null && listaGrupoTela.length > 0) {
sql.append("and ( ");
for (String i : listaGrupoTela) {
i = StringUtils.deleteWhitespace(i);
if (StringUtils.isNotBlank(i)) {
if (listaGrupoTela.length > aux) {
sql.append(" ss.idgrupoatual = ? or ");
parametro.add(Integer.parseInt(i));
} else {
sql.append(" ss.idgrupoatual = ? ");
parametro.add(Integer.parseInt(i));
}
}
aux++;
}
sql.append(" ) ");
}
}
if (relatorioIncidentesNaoResolvidosDTO.getIdContrato() != null) {
sql.append("and sc.idcontrato = ? ");
parametro.add(relatorioIncidentesNaoResolvidosDTO.getIdContrato());
}
list = this.execSQL(sql.toString(), parametro.toArray());
listRetorno.add("idSolicitacaoServico");
listRetorno.add("nomeTipoDemandaServico");
listRetorno.add("idUsuarioResponsavelAtual");
listRetorno.add("responsavelAtual");
listRetorno.add("nomeSolicitante");
listRetorno.add("nomeGrupo");
listRetorno.add("idSolicitante");
listRetorno.add("situacao");
listRetorno.add("nomeServico");
listRetorno.add("DataHoraSolicitacao");
listRetorno.add("nomeContrato");
if (list != null && !list.isEmpty()) {
return this.listConvertion(getBean(), list, listRetorno);
} else {
return null;
}
}
/**
* @param relatorioIncidentesNaoResolvidosDTO
* @return
* @throws Exception
* @author bruno.aquino
*/
public Collection<SolicitacaoServicoDTO> findSolicitacoesNaoResolvidasEntrePrazoKPI(RelatorioIncidentesNaoResolvidosDTO relatorioIncidentesNaoResolvidosDTO) throws Exception {
List parametro = new ArrayList();
List listRetorno = new ArrayList();
List list = new ArrayList();
StringBuilder sql = new StringBuilder();
sql.append("select ss.idsolicitacaoservico, t.nometipodemandaservico, ss.idusuarioresponsavelatual, u.nome as responsavelAtual, ");
sql.append("e.nome as nomeSolicitante, g.nome as nomeGrupo, ");
sql.append("ss.idsolicitante, ss.situacao, servico.nomeservico, datahorasolicitacao, c.numero as nomeContrato ");
sql.append("from solicitacaoservico ss ");
sql.append("inner join servicocontrato sc on ss.idservicocontrato = sc.idservicocontrato ");
sql.append("inner join servico servico on servico.idservico = sc.idservico ");
sql.append("inner join contratos c on c.idcontrato = sc.idcontrato ");
sql.append("inner join tipodemandaservico t on t.idtipodemandaservico = ss.idtipodemandaservico ");
sql.append("left join usuario u on u.idusuario = ss.idusuarioresponsavelatual ");
sql.append("inner join empregados e on e.idempregado = ss.idsolicitante ");
sql.append("inner join grupo g on ss.idgrupoatual = g.idgrupo ");
sql.append("WHERE UPPER(ss.situacao) NOT IN (UPPER('Fechada'), UPPER('Cancelada'),UPPER('Resolvida')) ");
sql.append("and datahorasolicitacao BETWEEN ? AND ? ");
parametro.add(relatorioIncidentesNaoResolvidosDTO.getPeriodoReferencia());
parametro.add(relatorioIncidentesNaoResolvidosDTO.getDataReferencia());
if (relatorioIncidentesNaoResolvidosDTO.getListaServicos() != null && !relatorioIncidentesNaoResolvidosDTO.getListaServicos().isEmpty()) {
int aux = 1;
String[] listaServicosTela;
listaServicosTela = relatorioIncidentesNaoResolvidosDTO.getListaServicos().split(";");
if (listaServicosTela != null && listaServicosTela.length > 0) {
sql.append("and ( ");
for (String i : listaServicosTela) {
i = StringUtils.deleteWhitespace(i);
if (StringUtils.isNotBlank(i)) {
if (listaServicosTela.length > aux) {
sql.append(" sc.idservico = ? or ");
parametro.add(Integer.parseInt(i));
} else {
sql.append(" sc.idservico = ? ");
parametro.add(Integer.parseInt(i));
}
}
aux++;
}
sql.append(" ) ");
}
}
if (relatorioIncidentesNaoResolvidosDTO.getListaGrupos() != null && !relatorioIncidentesNaoResolvidosDTO.getListaGrupos().isEmpty()) {
int aux = 1;
String[] listaGrupoTela;
listaGrupoTela = relatorioIncidentesNaoResolvidosDTO.getListaGrupos().split(";");
if (listaGrupoTela != null && listaGrupoTela.length > 0) {
sql.append("and ( ");
for (String i : listaGrupoTela) {
i = StringUtils.deleteWhitespace(i);
if (StringUtils.isNotBlank(i)) {
if (listaGrupoTela.length > aux) {
sql.append(" ss.idgrupoatual = ? or ");
parametro.add(Integer.parseInt(i));
} else {
sql.append(" ss.idgrupoatual = ? ");
parametro.add(Integer.parseInt(i));
}
}
aux++;
}
sql.append(" ) ");
}
}
if (relatorioIncidentesNaoResolvidosDTO.getIdContrato() != null) {
sql.append("and sc.idcontrato = ? ");
parametro.add(relatorioIncidentesNaoResolvidosDTO.getIdContrato());
}
list = this.execSQL(sql.toString(), parametro.toArray());
listRetorno.add("idSolicitacaoServico");
listRetorno.add("nomeTipoDemandaServico");
listRetorno.add("idUsuarioResponsavelAtual");
listRetorno.add("responsavelAtual");
listRetorno.add("nomeSolicitante");
listRetorno.add("nomeGrupo");
listRetorno.add("idSolicitante");
listRetorno.add("situacao");
listRetorno.add("nomeServico");
listRetorno.add("DataHoraSolicitacao");
listRetorno.add("nomeContrato");
if (list != null && !list.isEmpty()) {
return this.listConvertion(getBean(), list, listRetorno);
} else {
return null;
}
}
/**
* lista com os quantitativos por empregado de solicita��es servi�os emcaminhadas e foram concluidas com exito.
* @param relatorioKpiProdutividadeDto
* @return
* @throws Exception
* @author thays.araujo
*
*/
public Collection<RelatorioKpiProdutividadeDTO> listaQuantitativaEmpregadoSolicitacoesEmcaminhaExito(RelatorioKpiProdutividadeDTO relatorioKpiProdutividadeDto) throws Exception{
List parametro = new ArrayList();
List listRetorno = new ArrayList();
List list = new ArrayList();
StringBuilder sql = new StringBuilder();
sql.append("SELECT empregados.idempregado, ");
sql.append(" empregados.nome, ");
sql.append(" qtdeencaminhadas, ");
sql.append(" qtdeexito ");
sql.append("FROM ( (SELECT idempregado, ");
sql.append(" nome ");
sql.append(" FROM empregados ");
if(relatorioKpiProdutividadeDto.getListaEmpregado() != null){
sql.append("where idempregado in ( ");
for(Iterator<EmpregadoDTO> i = relatorioKpiProdutividadeDto.getListaEmpregado().iterator(); i.hasNext();){
EmpregadoDTO empregadoDto = i.next();
if(!i.hasNext()){
sql.append(" ? ");
parametro.add(empregadoDto.getIdEmpregado());
}else{
sql.append(" ?, ");
parametro.add(empregadoDto.getIdEmpregado());
}
}
}
sql.append(") ");
sql.append(") empregados ");
sql.append(" LEFT JOIN (SELECT idempregado, ");
sql.append(" count(idsolicitacaoservico) qtdeencaminhadas ");
sql.append(" FROM ( (SELECT idempregado ");
sql.append(" FROM empregados ");
if(relatorioKpiProdutividadeDto.getListaEmpregado() != null){
sql.append("where idempregado in ( ");
for(Iterator<EmpregadoDTO> i = relatorioKpiProdutividadeDto.getListaEmpregado().iterator(); i.hasNext();){
EmpregadoDTO empregadoDto = i.next();
if (!i.hasNext()) {
sql.append(" ? ");
parametro.add(empregadoDto.getIdEmpregado());
}else{
sql.append(" ?, ");
parametro.add(empregadoDto.getIdEmpregado());
}
}
}
sql.append(") ");
sql.append(") e ");
sql.append(" LEFT JOIN (SELECT ss.idsolicitante, ");
sql.append(" ss.idsolicitacaoservico ");
sql.append(" FROM servicocontrato sc ");
sql.append(" JOIN solicitacaoservico ss ");
sql.append(" ON sc.idcontrato = ? ");
parametro.add(relatorioKpiProdutividadeDto.getIdContrato());
if(relatorioKpiProdutividadeDto.getListaServicos()!=null){
sql.append(" AND ( sc.idservico IN ( ");
for(Iterator<ServicoDTO> i = relatorioKpiProdutividadeDto.getListaServicos().iterator(); i.hasNext();){
ServicoDTO servicoDto = i.next();
if (!i.hasNext()) {
sql.append(" ? ");
parametro.add(servicoDto.getIdServico());
}else{
sql.append(" ?, ");
parametro.add(servicoDto.getIdServico());
}
}
sql.append(") )");
}
sql.append(" AND sc.idservicocontrato = ");
sql.append(" ss.idservicocontrato ");
if(relatorioKpiProdutividadeDto.getListaEmpregado() != null){
sql.append(" AND ( ss.idsolicitante IN (");
for(Iterator<EmpregadoDTO> i = relatorioKpiProdutividadeDto.getListaEmpregado().iterator(); i.hasNext();){
EmpregadoDTO empregadoDto = i.next();
if (!i.hasNext()) {
sql.append(" ? ");
parametro.add(empregadoDto.getIdEmpregado());
}else{
sql.append(" ?, ");
parametro.add(empregadoDto.getIdEmpregado());
}
}
sql.append(") ");
}
sql.append(") ");
sql.append(" AND ( ( ");
sql.append(" ss.situacao = 'Fechada' ) ");
sql.append(" OR ");
sql.append("( ss.situacao = 'Cancelada' ) ) ");
if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.ORACLE)) {
sql.append("AND ((ss.datahorasolicitacao) BETWEEN to_date(?,'YYYY-MM-DD' ) AND to_date(?,'YYYY-MM-DD hh24:mi:ss' ) )");
parametro.add(relatorioKpiProdutividadeDto.getDataInicio());
parametro.add(relatorioKpiProdutividadeDto.getDataFim() +" 23:59:59");
} else{
sql.append("AND ( ss.datahorasolicitacao ");
sql.append(" BETWEEN ");
sql.append(" ? AND ");
sql.append(" ? ");
sql.append(" ) ");
parametro.add(relatorioKpiProdutividadeDto.getDataInicio());
parametro.add(transformaHoraFinal(relatorioKpiProdutividadeDto.getDataFim()));
}
if(!relatorioKpiProdutividadeDto.getListaCausaIncidentes().isEmpty()){
sql.append("AND ( ( ss.idcausaincidente NOT IN ");
sql.append(" ( ");
for(Iterator<CausaIncidenteDTO> i = relatorioKpiProdutividadeDto.getListaCausaIncidentes().iterator(); i.hasNext();){
CausaIncidenteDTO causaIncidenteDto = i.next();
if (!i.hasNext()) {
sql.append(" ? ");
parametro.add(causaIncidenteDto.getIdCausaIncidente());
}else{
sql.append(" ?, ");
parametro.add(causaIncidenteDto.getIdCausaIncidente());
}
}
sql.append(" ))or(ss.idcausaincidente is null)) ");
}
sql.append(") qten ");
sql.append("ON idempregado = idsolicitante ) ");
sql.append("GROUP BY idempregado) c ");
sql.append("ON empregados.idempregado = c.idempregado ");
sql.append("LEFT JOIN (SELECT idempregado, ");
sql.append("count(idsolicitacaoservico) qtdeexito ");
sql.append("FROM ( (SELECT idempregado ");
sql.append("FROM empregados ");
if(relatorioKpiProdutividadeDto.getListaEmpregado() != null){
sql.append("WHERE idempregado IN ( ");
for(Iterator<EmpregadoDTO> i = relatorioKpiProdutividadeDto.getListaEmpregado().iterator(); i.hasNext();){
EmpregadoDTO empregadoDto = i.next();
if (!i.hasNext()) {
sql.append(" ? ");
parametro.add(empregadoDto.getIdEmpregado());
}else{
sql.append(" ?, ");
parametro.add(empregadoDto.getIdEmpregado());
}
}
sql.append(") ");
}
sql.append(") e ");
sql.append("LEFT JOIN (SELECT ss.idsolicitante, ");
sql.append("ss.idsolicitacaoservico ");
sql.append("FROM servicocontrato sc ");
sql.append("JOIN solicitacaoservico ss ");
sql.append("ON sc.idcontrato = ? ");
parametro.add(relatorioKpiProdutividadeDto.getIdContrato());
if(relatorioKpiProdutividadeDto.getListaServicos()!=null){
sql.append("AND ( sc.idservico IN ( ");
for(Iterator<ServicoDTO> i = relatorioKpiProdutividadeDto.getListaServicos().iterator(); i.hasNext();){
ServicoDTO servicoDto = i.next();
if (!i.hasNext()) {
sql.append(" ? ");
parametro.add(servicoDto.getIdServico());
}else{
sql.append(" ?, ");
parametro.add(servicoDto.getIdServico());
}
}
sql.append("))");
}
sql.append("AND sc.idservicocontrato = ");
sql.append(" ss.idservicocontrato ");
if(relatorioKpiProdutividadeDto.getListaEmpregado() != null){
sql.append("AND ( ss.idsolicitante IN ( ");
for(Iterator<EmpregadoDTO> i = relatorioKpiProdutividadeDto.getListaEmpregado().iterator(); i.hasNext();){
EmpregadoDTO empregadoDto = i.next();
if (!i.hasNext()) {
sql.append(" ? ");
parametro.add(empregadoDto.getIdEmpregado());
}else{
sql.append(" ?, ");
parametro.add(empregadoDto.getIdEmpregado());
}
}
sql.append("))");
}
sql.append("AND ( ss.situacao = 'Fechada' ) ");
if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.ORACLE)) {
sql.append("AND ((ss.datahorasolicitacao) BETWEEN to_date(?,'YYYY-MM-DD' ) AND to_date(?,'YYYY-MM-DD hh24:mi:ss' ) )");
parametro.add(relatorioKpiProdutividadeDto.getDataInicio());
parametro.add(relatorioKpiProdutividadeDto.getDataFim() +" 23:59:59");
} else{
sql.append("AND ( ss.datahorasolicitacao ");
sql.append(" BETWEEN ");
sql.append(" ? AND ");
sql.append(" ? ");
sql.append(" ) ");
parametro.add(relatorioKpiProdutividadeDto.getDataInicio());
parametro.add(transformaHoraFinal(relatorioKpiProdutividadeDto.getDataFim()));
}
if(!relatorioKpiProdutividadeDto.getListaCausaIncidentes().isEmpty()){
sql.append("AND ( ( ss.idcausaincidente NOT IN (");
for(Iterator<CausaIncidenteDTO> i = relatorioKpiProdutividadeDto.getListaCausaIncidentes().iterator(); i.hasNext();){
CausaIncidenteDTO causaIncidenteDto = i.next();
if (!i.hasNext()) {
sql.append(" ? ");
parametro.add(causaIncidenteDto.getIdCausaIncidente());
}else{
sql.append(" ?, ");
parametro.add(causaIncidenteDto.getIdCausaIncidente());
}
}
sql.append("))");
sql.append(" OR ( ss.idcausaincidente IS ");
sql.append(" NULL )) ");
}
sql.append(") qtex ");
sql.append("ON idempregado = idsolicitante ) ");
sql.append("GROUP BY idempregado) x ");
sql.append("ON empregados.idempregado = x.idempregado ) ");
sql.append("ORDER BY nome");
list = this.execSQL(sql.toString(), parametro.toArray());
listRetorno.add("idEmpregado");
listRetorno.add("funcionario");
listRetorno.add("qtdeencaminhadas");
listRetorno.add("qtdeexito");
if (list != null && !list.isEmpty()) {
return this.listConvertion(RelatorioKpiProdutividadeDTO.class, list, listRetorno);
}
return null;
}
public Collection<SolicitacaoServicoDTO> listSolicitacoesFilhasFiltradas(GerenciamentoServicosDTO gerenciamentoBean, Collection<ContratoDTO> listContratoUsuarioLogado) throws Exception {
List listRetorno = new ArrayList();
listRetorno.add("idSolicitacaoServico");
listRetorno.add("idbaseconhecimento");
listRetorno.add("idServicoContrato");
listRetorno.add("idSolicitante");
listRetorno.add("idItemConfiguracao");
listRetorno.add("idItemConfiguracaoFilho");
listRetorno.add("idTipodemandaServico");
listRetorno.add("idContatoSolicitacaoServico");
listRetorno.add("idOrigem");
listRetorno.add("idResponsavel");
listRetorno.add("idTipoProblema");
listRetorno.add("idPrioridade");
listRetorno.add("idUnidade");
listRetorno.add("idFaseAtual");
listRetorno.add("idGrupoAtual");
listRetorno.add("dataHoraSolicitacao");
listRetorno.add("dataHoraLimite");
listRetorno.add("atendimentoPresencial");
listRetorno.add("prazoCapturaHH");
listRetorno.add("prazoCapturaMM");
listRetorno.add("prazoHH");
listRetorno.add("prazoMM");
listRetorno.add("descricao");
listRetorno.add("resposta");
listRetorno.add("dataHoraInicio");
listRetorno.add("dataHoraFim");
listRetorno.add("situacao");
listRetorno.add("idSolicitacaoPai");
listRetorno.add("detalhamentoCausa");
listRetorno.add("idCausaIncidente");
listRetorno.add("idCategoriaSolucao");
listRetorno.add("seqReabertura");
listRetorno.add("enviaEmailCriacao");
listRetorno.add("enviaEmailFinalizacao");
listRetorno.add("enviaEmailAcoes");
listRetorno.add("idGrupoNivel1");
listRetorno.add("solucaoTemporaria");
listRetorno.add("houveMudanca");
listRetorno.add("slaACombinar");
listRetorno.add("prazohhAnterior");
listRetorno.add("prazommAnterior");
listRetorno.add("idCalendario");
listRetorno.add("tempoDecorridoHH");
listRetorno.add("tempoDecorridoMM");
listRetorno.add("dataHoraSuspensao");
listRetorno.add("dataHoraReativacao");
listRetorno.add("impacto");
listRetorno.add("urgencia");
listRetorno.add("dataHoraCaptura");
listRetorno.add("tempoCapturaHH");
listRetorno.add("tempoCapturaMM");
listRetorno.add("tempoAtrasoHH");
listRetorno.add("tempoAtrasoMM");
listRetorno.add("tempoAtendimentoHH");
listRetorno.add("tempoAtendimentoMM");
listRetorno.add("idAcordoNivelServico");
listRetorno.add("idUltimaAprovacao");
listRetorno.add("dataHoraInicioSLA");
listRetorno.add("dataHoraSuspensaoSLA");
listRetorno.add("dataHoraReativacaoSLA");
listRetorno.add("situacaoSLA");
listRetorno.add("aprovacao");
listRetorno.add("idServico");
listRetorno.add("servico");
listRetorno.add("idTipoDemandaServico");
listRetorno.add("demanda");
listRetorno.add("idContrato");
listRetorno.add("contrato");
listRetorno.add("solicitante");
listRetorno.add("nomeUnidadeSolicitante");
listRetorno.add("responsavel");
listRetorno.add("nomeUnidadeResponsavel");
listRetorno.add("origem");
listRetorno.add("prioridade");
listRetorno.add("faseAtual");
listRetorno.add("grupoAtual");
listRetorno.add("grupoNivel1");
listRetorno.add("nomecontato");
listRetorno.add("emailcontato");
listRetorno.add("telefonecontato");
listRetorno.add("observacao");
listRetorno.add("idLocalidade");
listRetorno.add("vencendo");
StringBuilder sql = new StringBuilder();
List parametros = new ArrayList();
sql.append("SELECT sol.idSolicitacaoServico, sol.idbaseconhecimento, sol.idServicoContrato, sol.idSolicitante, ");
sql.append(" sol.idItemConfiguracao, sol.idItemConfiguracaoFilho, sol.idtipodemandaservico, sol.idcontatosolicitacaoservico, ");
sql.append(" sol.idOrigem, sol.idResponsavel, sol.idTipoProblema, sol.idPrioridade, sol.idUnidade, sol.idFaseAtual, ");
sql.append(" sol.idGrupoAtual, sol.dataHoraSolicitacao, sol.dataHoraLimite, sol.atendimentoPresencial, sol.prazoCapturaHH, sol.prazoCapturaMM, ");
sql.append(" sol.prazoHH, sol.prazoMM, sol.descricao, sol.resposta, sol.dataHoraInicio, sol.dataHoraFim, sol.situacao, ");
sql.append(" sol.idSolicitacaoPai, sol.detalhamentoCausa, sol.idCausaIncidente, sol.idCategoriaSolucao, ");
sql.append(" sol.seqreabertura, sol.enviaEmailCriacao, sol.enviaEmailFinalizacao, sol.enviaEmailAcoes, ");
sql.append(" sol.idgruponivel1, sol.solucaoTemporaria, sol.houveMudanca, sol.slaACombinar, sol.prazohhAnterior, ");
sql.append(" sol.prazommAnterior, sol.idCalendario, sol.tempoDecorridoHH, sol.tempoDecorridoMM, sol.dataHoraSuspensao, ");
sql.append(" sol.dataHoraReativacao, sol.impacto, sol.urgencia, sol.dataHoraCaptura, sol.tempoCapturaHH, sol.tempoCapturaMM, ");
sql.append(" sol.tempoAtrasoHH, sol.tempoAtrasoMM, sol.tempoAtendimentoHH, sol.tempoAtendimentoMM, sol.idacordonivelservico, ");
sql.append(" sol.idultimaaprovacao, sol.datahorainiciosla, sol.datahorasuspensaosla, sol.datahorareativacaosla, sol.situacaosla, aprov.aprovacao, ");
sql.append(" s.idservico, s.nomeServico, td.idTipoDemandaServico, td.nomeTipoDemandaServico, c.idContrato, c.numero, e1.nome, u1.nome, ");
sql.append(" e2.nome, u2.nome, oa.descricao, p.nomeprioridade, fs.nomefase, ");
sql.append(" g1.sigla, g2.sigla, cs.nomecontato, cs.emailcontato, cs.telefonecontato, cs.localizacaofisica ,cs.idlocalidade , sol.vencendo ");
sql.append(" FROM solicitacaoservico sol ");
sql.append(" LEFT JOIN servicocontrato sc ON sc.idservicocontrato = sol.idservicocontrato ");
sql.append(" LEFT JOIN contratos c ON c.idcontrato = sc.idcontrato ");
sql.append(" LEFT JOIN servico s ON s.idservico = sc.idservico ");
sql.append(" LEFT JOIN tipodemandaservico td ON td.idtipodemandaservico = s.idtipodemandaservico ");
sql.append(" LEFT JOIN empregados e1 ON e1.idempregado = sol.idsolicitante ");
sql.append(" LEFT JOIN unidade u1 ON u1.idunidade = e1.idunidade ");
sql.append(" LEFT JOIN usuario usu ON usu.idusuario = sol.idresponsavel ");
sql.append(" LEFT JOIN empregados e2 ON e2.idempregado = usu.idempregado ");
sql.append(" LEFT JOIN unidade u2 ON u2.idunidade = e2.idunidade ");
sql.append(" LEFT JOIN origematendimento oa ON oa.idorigem = sol.idorigem ");
sql.append(" LEFT JOIN prioridade p ON p.idprioridade = sol.idprioridade ");
sql.append(" LEFT JOIN faseservico fs ON fs.idfase = sol.idfaseatual ");
sql.append(" LEFT JOIN grupo g1 ON g1.idgrupo = sol.idgrupoatual ");
sql.append(" LEFT JOIN grupo g2 ON g2.idgrupo = sol.idgruponivel1 ");
sql.append(" LEFT JOIN contatosolicitacaoservico cs ON cs.idcontatosolicitacaoservico = sol.idcontatosolicitacaoservico ");
sql.append(" LEFT JOIN aprovacaosolicitacaoservico aprov ON aprov.idaprovacaosolicitacaoservico = sol.idultimaaprovacao ");
sql.append(" WHERE sol.idsolicitacaopai IS NOT NULL ");
// FILTRA CONTRATO DO USU�RIO LOGADO - S� retorna as Solicita��es dos Contratos em que o usu�rio logado est� inserido.
if (listContratoUsuarioLogado != null && !listContratoUsuarioLogado.isEmpty()) {
sql.append(" AND c.idcontrato in ( ");
boolean verifica = true;
for (ContratoDTO contrato : listContratoUsuarioLogado) {
if (verifica) {
sql.append(contrato.getIdContrato());
verifica = false;
} else {
sql.append(",");
sql.append(contrato.getIdContrato());
}
}
sql.append(" )");
}
// Adiciona o filtro de pesquisa caso houver filtro
adicionarFiltroPesquisa(sql, gerenciamentoBean, parametros);
List lista = new ArrayList();
lista = this.execSQL(sql.toString(), parametros.toArray());
if (lista != null && !lista.isEmpty()) {
return engine.listConvertion(SolicitacaoServicoDTO.class, lista, listRetorno);
} else {
return null;
}
}
public List<SolicitacaoServicoDTO> listaSolicitacoesRelacionadasBaseconhecimento(Integer idBaseconhecimento) throws Exception {
List parametro = new ArrayList();
StringBuilder sb = new StringBuilder();
sb.append("select con.idsolicitacaoservico");
sb.append(" from conhecimentosolicitacaoservico con");
sb.append(" inner join baseconhecimento bas on bas.idbaseconhecimento = con.idbaseconhecimento");
sb.append(" where bas.idbaseconhecimento = ?");
parametro.add(idBaseconhecimento);
List listRetorno = new ArrayList();
listRetorno.add("idSolicitacaoServico");
List list = this.execSQL(sb.toString(), parametro.toArray());
if (list != null && !list.isEmpty()) {
return this.listConvertion(SolicitacaoServicoDTO.class, list, listRetorno);
} else {
return null;
}
}
public boolean verificaPermGestorSolicitanteRH(Integer idSolicitante) throws PersistenceException {
List parametro = new ArrayList();
List list = new ArrayList();
StringBuilder sql = new StringBuilder();
/*
* Permite funcion�rios do mesmo grupo
sql.append("select distinct empregados.idempregado ");
sql.append("from alcada join limitealcada on alcada.idalcada = limitealcada.idalcada and alcada.situacao = 'A' ");
sql.append("join grupo on grupo.idgrupo = limitealcada.idgrupo ");
sql.append("join gruposempregados on gruposempregados.idgrupo = grupo.idgrupo ");
sql.append("join empregados on empregados.idempregado = gruposempregados.idempregado ");
sql.append("where empregados.idempregado = ? and alcada.tipoalcada = 'Pessoal' order by grupo.nome, empregados.nome");
*/
//Somente o Respons�vel poder� solicitar
sql.append("select distinct alcadacentroresultado.idempregado ");
sql.append("from alcada join alcadacentroresultado on alcada.tipoalcada = 'Pessoal' and alcada.situacao = 'A' and ");
sql.append("alcada.idalcada = alcadacentroresultado.idalcada and ");
sql.append("alcadacentroresultado.idempregado=?");
parametro.add(idSolicitante);
list = this.execSQL(sql.toString(), parametro.toArray());
if (list != null && !list.isEmpty()) {
return list.size()>0;
} else {
return false;
}
}
public Collection<RelatorioCausaSolucaoDTO> listaCausaSolicitacao(RelatorioCausaSolucaoDTO relatorioCausaSolicitacao) throws Exception {
List parametro = new ArrayList();
List listRetorno = new ArrayList();
List list = new ArrayList();
StringBuilder sql = new StringBuilder();
sql.append("select c.idcausaincidente, descricaocausa, count(idsolicitacaoservico) as numeroSolicitacoes from solicitacaoservico ss ");
sql.append("left join causaincidente c on c.idcausaincidente = ss.idcausaincidente ");
sql.append("inner join servicocontrato sc on ss.idservicocontrato = sc.idservicocontrato ");
if (relatorioCausaSolicitacao.getDataInicio() != null) {
if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.ORACLE)) {
sql.append("where to_char(ss.datahorafim, 'YYYY-MM-DD') BETWEEN ? AND ? ");
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
parametro.add(formatter.format(relatorioCausaSolicitacao.getDataInicio()));
parametro.add(formatter.format(relatorioCausaSolicitacao.getDataFim()));
} else {
sql.append("where ss.datahorafim BETWEEN ? AND ? ");
parametro.add(relatorioCausaSolicitacao.getDataInicio());
parametro.add(transformaHoraFinal(relatorioCausaSolicitacao.getDataFim()));
}
}
if (relatorioCausaSolicitacao.getIdContrato() != null) {
sql.append(" and sc.idcontrato = ? ");
parametro.add(relatorioCausaSolicitacao.getIdContrato());
}
if (relatorioCausaSolicitacao.getIdTipoDemandaServico() != null) {
sql.append("and ss.idtipodemandaservico = ? ");
parametro.add(relatorioCausaSolicitacao.getIdTipoDemandaServico());
}
if (relatorioCausaSolicitacao.getSituacao() != null && UtilStrings.isNotVazio(relatorioCausaSolicitacao.getSituacao())) {
sql.append("and ss.situacao = ? ");
parametro.add(relatorioCausaSolicitacao.getSituacao());
} else {
sql.append("and ss.situacao in ('Fechada', 'Cancelada') ");
}
if (relatorioCausaSolicitacao.getIdServicos() != null) {
sql.append("and sc.idservico IN (" + StringUtils.join(relatorioCausaSolicitacao.getIdServicos(), ", ") + ") ");
}
if (relatorioCausaSolicitacao.getIdGrupos() != null) {
sql.append("and ss.idgrupoatual IN (" + StringUtils.join(relatorioCausaSolicitacao.getIdGrupos(), ", ") + ") ");
}
if (relatorioCausaSolicitacao.getIdCausas() != null) {
sql.append("and (" + (relatorioCausaSolicitacao.getExibeSemCausa() != null && relatorioCausaSolicitacao.getExibeSemCausa().equalsIgnoreCase("s") ? "ss.idcausaincidente is NULL OR " : "") + " ss.idcausaincidente IN (" + StringUtils.join(relatorioCausaSolicitacao.getIdCausas(), ", ") + ")) ");
}
sql.append("group by c.idcausaincidente, descricaocausa");
System.out.println(sql + " - " + parametro.toString());
list = this.execSQL(sql.toString(), parametro.toArray());
listRetorno.add("idCausaIncidente");
listRetorno.add("descricaoCausa");
listRetorno.add("numeroSolicitacoes");
if (list != null && !list.isEmpty()) {
Collection<RelatorioCausaSolucaoDTO> listaSolicitacaoPorExecutante;
listaSolicitacaoPorExecutante = this.listConvertion(RelatorioCausaSolucaoDTO.class, list, listRetorno);
return listaSolicitacaoPorExecutante;
} else {
return null;
}
}
public Collection<RelatorioCausaSolucaoDTO> listaSolucaoSolicitacao(RelatorioCausaSolucaoDTO relatorioCausaSolicitacao) throws Exception {
List parametro = new ArrayList();
List listRetorno = new ArrayList();
List list = new ArrayList();
StringBuilder sql = new StringBuilder();
sql.append("select cs.idcategoriasolucao, descricaocategoriasolucao, count(idsolicitacaoservico) as numeroSolicitacoes from solicitacaoservico ss ");
sql.append("left join categoriasolucao cs on cs.idcategoriasolucao = ss.idcategoriasolucao ");
sql.append("inner join servicocontrato sc on ss.idservicocontrato = sc.idservicocontrato ");
if (relatorioCausaSolicitacao.getDataInicio() != null) {
if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.ORACLE)) {
sql.append("where to_char(ss.datahorafim, 'YYYY-MM-DD') BETWEEN ? AND ? ");
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
parametro.add(formatter.format(relatorioCausaSolicitacao.getDataInicio()));
parametro.add(formatter.format(relatorioCausaSolicitacao.getDataFim()));
} else {
sql.append("where ss.datahorafim BETWEEN ? AND ? ");
parametro.add(relatorioCausaSolicitacao.getDataInicio());
parametro.add(transformaHoraFinal(relatorioCausaSolicitacao.getDataFim()));
}
}
if (relatorioCausaSolicitacao.getIdContrato() != null) {
sql.append(" and sc.idcontrato = ? ");
parametro.add(relatorioCausaSolicitacao.getIdContrato());
}
if (relatorioCausaSolicitacao.getIdTipoDemandaServico() != null) {
sql.append("and ss.idtipodemandaservico = ? ");
parametro.add(relatorioCausaSolicitacao.getIdTipoDemandaServico());
}
if (relatorioCausaSolicitacao.getSituacao() != null && UtilStrings.isNotVazio(relatorioCausaSolicitacao.getSituacao())) {
sql.append("and ss.situacao = ? ");
parametro.add(relatorioCausaSolicitacao.getSituacao());
} else {
sql.append("and ss.situacao in ('Fechada', 'Cancelada') ");
}
if (relatorioCausaSolicitacao.getIdServicos() != null) {
sql.append("and sc.idservico IN (" + StringUtils.join(relatorioCausaSolicitacao.getIdServicos(), ", ") + ") ");
}
if (relatorioCausaSolicitacao.getIdGrupos() != null) {
sql.append("and ss.idgrupoatual IN (" + StringUtils.join(relatorioCausaSolicitacao.getIdGrupos(), ", ") + ") ");
}
if (relatorioCausaSolicitacao.getIdSolucoes() != null) {
sql.append("and (" + (relatorioCausaSolicitacao.getExibeSemSolucao() != null && relatorioCausaSolicitacao.getExibeSemSolucao().equalsIgnoreCase("s") ? "ss.idcategoriaSolucao is NULL OR " : "") + " ss.idcategoriaSolucao IN (" + StringUtils.join(relatorioCausaSolicitacao.getIdSolucoes(), ", ") + ")) ");
}
sql.append("group by cs.idcategoriasolucao, descricaocategoriasolucao");
System.out.println(sql + " - " + parametro.toString());
list = this.execSQL(sql.toString(), parametro.toArray());
listRetorno.add("idCategoriaSolucao");
listRetorno.add("descricaoCategoriaSolucao");
listRetorno.add("numeroSolicitacoes");
if (list != null && !list.isEmpty()) {
Collection<RelatorioCausaSolucaoDTO> listaSolicitacaoPorExecutante;
listaSolicitacaoPorExecutante = this.listConvertion(RelatorioCausaSolucaoDTO.class, list, listRetorno);
return listaSolicitacaoPorExecutante;
} else {
return null;
}
}
public Collection<RelatorioCausaSolucaoDTO> listaCausaSolucaoAnalitico(RelatorioCausaSolucaoDTO relatorioCausaSolicitacao) throws Exception {
List parametro = new ArrayList();
List listRetorno = new ArrayList();
List list = new ArrayList();
StringBuilder sql = new StringBuilder();
sql.append("select ss.idsolicitacaoservico, ss.situacao as status, s.nomeservico, c.descricaocausa, cs.descricaocategoriasolucao from solicitacaoservico ss ");
sql.append("join servicocontrato sc on ss.idservicocontrato = sc.idservicocontrato ");
sql.append("join servico s on sc.idservico = s.idservico ");
sql.append("left join causaincidente c on c.idcausaincidente = ss.idcausaincidente ");
sql.append("left join categoriasolucao cs on cs.idcategoriasolucao = ss.idcategoriasolucao ");
if (relatorioCausaSolicitacao.getDataInicio() != null) {
if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.ORACLE)) {
sql.append("where to_char(ss.datahorafim, 'YYYY-MM-DD') BETWEEN ? AND ? ");
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
parametro.add(formatter.format(relatorioCausaSolicitacao.getDataInicio()));
parametro.add(formatter.format(relatorioCausaSolicitacao.getDataFim()));
} else {
sql.append("where ss.datahorafim BETWEEN ? AND ? ");
parametro.add(relatorioCausaSolicitacao.getDataInicio());
parametro.add(transformaHoraFinal(relatorioCausaSolicitacao.getDataFim()));
}
}
if (relatorioCausaSolicitacao.getIdContrato() != null) {
sql.append(" and sc.idcontrato = ? ");
parametro.add(relatorioCausaSolicitacao.getIdContrato());
}
if (relatorioCausaSolicitacao.getIdTipoDemandaServico() != null) {
sql.append("and ss.idtipodemandaservico = ? ");
parametro.add(relatorioCausaSolicitacao.getIdTipoDemandaServico());
}
if (relatorioCausaSolicitacao.getSituacao() != null && UtilStrings.isNotVazio(relatorioCausaSolicitacao.getSituacao())) {
sql.append("and ss.situacao = ? ");
parametro.add(relatorioCausaSolicitacao.getSituacao());
} else {
sql.append("and ss.situacao in ('Fechada', 'Cancelada') ");
}
if (relatorioCausaSolicitacao.getIdServicos() != null) {
sql.append("and sc.idservico IN (" + StringUtils.join(relatorioCausaSolicitacao.getIdServicos(), ", ") + ") ");
}
if (relatorioCausaSolicitacao.getIdGrupos() != null) {
sql.append("and ss.idgrupoatual IN (" + StringUtils.join(relatorioCausaSolicitacao.getIdGrupos(), ", ") + ") ");
}
if (relatorioCausaSolicitacao.getIdCausas() != null || relatorioCausaSolicitacao.getIdSolucoes() != null) {
sql.append("and ( ");
if (relatorioCausaSolicitacao.getIdCausas() != null) {
sql.append((relatorioCausaSolicitacao.getExibeSemCausa() != null && relatorioCausaSolicitacao.getExibeSemCausa().equalsIgnoreCase("s") ? "ss.idcausaincidente is NULL OR " : "") + " ss.idcausaincidente IN (" + StringUtils.join(relatorioCausaSolicitacao.getIdCausas(), ", ") + ") ");
}
if (relatorioCausaSolicitacao.getIdSolucoes() != null) {
sql.append((relatorioCausaSolicitacao.getIdCausas() != null ? " OR " : "") + (relatorioCausaSolicitacao.getExibeSemSolucao() != null && relatorioCausaSolicitacao.getExibeSemSolucao().equalsIgnoreCase("s") ? "ss.idcategoriaSolucao is NULL OR " : "") + " ss.idcategoriaSolucao IN (" + StringUtils.join(relatorioCausaSolicitacao.getIdSolucoes(), ", ") + ") ");
}
sql.append(") ");
}
System.out.println(sql + " - " + parametro.toString());
list = this.execSQL(sql.toString(), parametro.toArray());
listRetorno.add("idSolicitacaoServico");
listRetorno.add("status");
listRetorno.add("nomeServico");
listRetorno.add("descricaoCausa");
listRetorno.add("descricaoCategoriaSolucao");
if (list != null && !list.isEmpty()) {
Collection<RelatorioCausaSolucaoDTO> listaSolicitacaoPorExecutante;
listaSolicitacaoPorExecutante = this.listConvertion(RelatorioCausaSolucaoDTO.class, list, listRetorno);
return listaSolicitacaoPorExecutante;
} else {
return null;
}
}
/**
* M�todo para listar n�mero de solicita��es fora do per�odo fornecido pelo usu�rio
*
* @param relatorioIncidentesNaoResolvidosDTO
* @return
* @throws PersistenceException
* @author thyen.chang
*/
public Integer numeroSolicitacoesForaPeriodo(RelatorioIncidentesNaoResolvidosDTO relatorioIncidentesNaoResolvidosDTO) throws PersistenceException{
List parametro = new ArrayList();
List retorno = new ArrayList();
StringBuilder sql = new StringBuilder();
sql.append("SELECT idsolicitacaoservico ");
sql.append("FROM solicitacaoservico ss ");
sql.append("INNER JOIN servicocontrato sc ON ss.idservicocontrato = sc.idservicocontrato ");
sql.append("INNER JOIN servico servico ON servico.idservico = sc.idservico ");
sql.append("INNER JOIN contratos c ON c.idcontrato = sc.idcontrato ");
sql.append("INNER JOIN tipodemandaservico t on t.idtipodemandaservico = ss.idtipodemandaservico ");
sql.append("LEFT JOIN usuario u ON u.idusuario = ss.idusuarioresponsavelatual ");
sql.append("INNER JOIN empregados e ON e.idempregado = ss.idsolicitante ");
sql.append("INNER JOIN grupo g ON ss.idgrupoatual = g.idgrupo ");
sql.append("WHERE (ss.situacao NOT LIKE '%Fechada%' AND ss.situacao NOT LIKE'%Cancelada%') ");
sql.append("AND datahorasolicitacao < ? ");
parametro.add(relatorioIncidentesNaoResolvidosDTO.getPeriodoReferencia());
if (relatorioIncidentesNaoResolvidosDTO.getListaServicos() != null && !relatorioIncidentesNaoResolvidosDTO.getListaServicos().isEmpty()) {
int aux = 1;
String[] listaServicosTela;
listaServicosTela = relatorioIncidentesNaoResolvidosDTO.getListaServicos().split(";");
if (listaServicosTela != null && listaServicosTela.length > 0) {
sql.append("AND ( ");
for (String i : listaServicosTela) {
i = StringUtils.deleteWhitespace(i);
if (StringUtils.isNotBlank(i)) {
if (listaServicosTela.length > aux) {
sql.append(" sc.idservico = ? OR ");
parametro.add(Integer.parseInt(i));
} else {
sql.append(" sc.idservico = ? ");
parametro.add(Integer.parseInt(i));
}
}
aux++;
}
sql.append(" ) ");
}
}
if (relatorioIncidentesNaoResolvidosDTO.getListaGrupos() != null && !relatorioIncidentesNaoResolvidosDTO.getListaGrupos().isEmpty()) {
int aux = 1;
String[] listaGrupoTela;
listaGrupoTela = relatorioIncidentesNaoResolvidosDTO.getListaGrupos().split(";");
if (listaGrupoTela != null && listaGrupoTela.length > 0) {
sql.append("AND ( ");
for (String i : listaGrupoTela) {
i = StringUtils.deleteWhitespace(i);
if (StringUtils.isNotBlank(i)) {
if (listaGrupoTela.length > aux) {
sql.append(" ss.idgrupoatual = ? OR ");
parametro.add(Integer.parseInt(i));
} else {
sql.append(" ss.idgrupoatual = ? ");
parametro.add(Integer.parseInt(i));
}
}
aux++;
}
sql.append(" ) ");
}
}
if (relatorioIncidentesNaoResolvidosDTO.getIdContrato() != null) {
sql.append("AND sc.idcontrato = ? ");
parametro.add(relatorioIncidentesNaoResolvidosDTO.getIdContrato());
}
retorno = this.execSQL(sql.toString(), parametro.toArray());
return retorno.size();
}
protected List<String> getListNamesFieldDB() {
final Collection<Field> col = this.getFields();
final List<String> lstRetorno = new ArrayList<>();
if (col != null) {
for (final Field field : col) {
lstRetorno.add(field.getFieldDB());
}
}
return lstRetorno;
}
public Long listaRelatorioGetQuantidadeRegistros(PesquisaSolicitacaoServicoDTO pesquisaSolicitacaoServicoDto) throws ServiceException, Exception{
StringBuilder sql = new StringBuilder();
List parametros = new ArrayList();
List lista = new ArrayList();
sql.append("SELECT COUNT(*) ");
sql.append(montaSql(parametros, pesquisaSolicitacaoServicoDto, 0, true));
lista = this.execSQL(sql.toString(), parametros.toArray());
if(lista != null && !lista.isEmpty() && lista.get(0) != null)
if(CITCorporeUtil.SGBD_PRINCIPAL.trim().toUpperCase().equalsIgnoreCase(SQLConfig.SQLSERVER))
return ((Integer) ((Object[]) lista.get(0))[0]).longValue();
else if (CITCorporeUtil.SGBD_PRINCIPAL.trim().toUpperCase().equalsIgnoreCase(SQLConfig.ORACLE))
return ((BigDecimal) ((Object[]) lista.get(0))[0]).longValue();
else
return (Long) ((Object[]) lista.get(0))[0];
else
return 0L;
}
public List<SolicitacaoServicoDTO> listRelatorioGetListaPaginada(PesquisaSolicitacaoServicoDTO pesquisaSolicitacaoServicoDto, Integer paginaAtual, Integer quantidadePorPagina) throws Exception{
StringBuilder sql = new StringBuilder();
List parametros = new ArrayList();
List lista = new ArrayList();
List listRetorno = new ArrayList();
if(CITCorporeUtil.SGBD_PRINCIPAL.trim().toUpperCase().equalsIgnoreCase(SQLConfig.SQLSERVER)){
sql.append(";WITH ResultadoTemporario AS ( ");
}
if(CITCorporeUtil.SGBD_PRINCIPAL.trim().toUpperCase().equalsIgnoreCase(SQLConfig.ORACLE)){
sql.append("SELECT * FROM( "
+ "SELECT rowNum AS rnum, a.* FROM ( ");
}
sql.append("SELECT tempoAtendimentoHH,tempoAtendimentoMM, solicitacaoservico.datahorainicio, solicitacaoservico.datahorafim, solicitacaoservico.idsolicitacaoservico, "
+ "nomeservico, unidade.nome AS nomeUnidadeSolicitante, solicitacaoservico.situacao, dataHoraSolicitacao, dataHoraLimite, nomeTipoDemandaServico, "
+ "solicitacaoservico.prazohh, solicitacaoservico.prazomm, ");
sql.append("solicitacaoservico.descricaoSemFormatacao, resposta, grupo.sigla, solicitacaoservico.seqreabertura, empregado.nome AS nomeSolicitante, "
+ "faseservico.nomefase, origematendimento.descricao,prioridade.nomeprioridade, usuario.nome AS nomeResponsavel, contratos.numero, idUsuarioResponsavelAtual, ");
sql.append("grupo.nome AS grupoAtual, localidade.nomelocalidade ");
if(CITCorporeUtil.SGBD_PRINCIPAL.trim().toUpperCase().equalsIgnoreCase(SQLConfig.SQLSERVER)){
sql.append(", ROW_NUMBER() OVER (ORDER BY solicitacaoservico.idsolicitacaoservico) as rowNum ");
}
sql.append(montaSql(parametros, pesquisaSolicitacaoServicoDto, 0, false));
if(CITCorporeUtil.SGBD_PRINCIPAL.trim().toUpperCase().equalsIgnoreCase(SQLConfig.SQLSERVER)){
sql.append(") SELECT * FROM ResultadoTemporario ");
sql.append("WHERE rowNum > " + ((paginaAtual - 1) * quantidadePorPagina) + " ");
sql.append("AND rowNum <= " + (paginaAtual * quantidadePorPagina) + " ");
}
if (pesquisaSolicitacaoServicoDto.getOrdenacao() != null && !(CITCorporeUtil.SGBD_PRINCIPAL.trim().toUpperCase().equalsIgnoreCase(SQLConfig.SQLSERVER))) {
sql.append(" ORDER BY " + pesquisaSolicitacaoServicoDto.getOrdenacao() + "");
}
if(CITCorporeUtil.SGBD_PRINCIPAL.trim().toUpperCase().equalsIgnoreCase(SQLConfig.ORACLE)){
sql.append(") a "
+ "WHERE rowNum <=" + (paginaAtual * quantidadePorPagina) + " "
+ ") WHERE rnum > " + ((paginaAtual - 1) * quantidadePorPagina) + " ");
}
if(CITCorporeUtil.SGBD_PRINCIPAL.trim().toUpperCase().equalsIgnoreCase(SQLConfig.MYSQL) || CITCorporeUtil.SGBD_PRINCIPAL.trim().toUpperCase().equalsIgnoreCase(SQLConfig.POSTGRESQL)){
sql.append(" LIMIT ? OFFSET ? ");
parametros.add(quantidadePorPagina);
parametros.add(quantidadePorPagina * (paginaAtual - 1));
}
lista = this.execSQL(sql.toString(), parametros.toArray());
if(CITCorporeUtil.SGBD_PRINCIPAL.trim().toUpperCase().equalsIgnoreCase(SQLConfig.ORACLE))
listRetorno.add("rowNumOracle");
listRetorno.add("tempoAtendimentoHH");
listRetorno.add("tempoAtendimentoMM");
listRetorno.add("dataHoraInicio");
listRetorno.add("dataHoraFim");
listRetorno.add("idSolicitacaoServico");
listRetorno.add("nomeServico");
listRetorno.add("nomeUnidadeSolicitante");
listRetorno.add("situacao");
listRetorno.add("dataHoraSolicitacao");
listRetorno.add("dataHoraLimite");
listRetorno.add("nomeTipoDemandaServico");
listRetorno.add("prazoHH");
listRetorno.add("prazoMM");
listRetorno.add("descricaoSemFormatacao");
listRetorno.add("resposta");
listRetorno.add("siglaGrupo");
listRetorno.add("seqReabertura");
listRetorno.add("nomeSolicitante");
listRetorno.add("faseAtual");
listRetorno.add("origem");
listRetorno.add("prioridade");
listRetorno.add("responsavel");
listRetorno.add("contrato");
listRetorno.add("idUsuarioResponsavelAtual");
listRetorno.add("grupoAtual");
listRetorno.add("localidade");
List listaSolicitacoes = engine.listConvertion(getBean(), lista, listRetorno);
return listaSolicitacoes;
}
private String montaSql(List parametros, PesquisaSolicitacaoServicoDTO pesquisaSolicitacaoServicoDto, Integer limiteConsulta, boolean isRelatorio) throws ServiceException, Exception{
StringBuilder sql = new StringBuilder();
UnidadeDao unidadeDao = new UnidadeDao();
sql.append("FROM solicitacaoservico JOIN servicocontrato ON ");
if ((pesquisaSolicitacaoServicoDto.getIdSolicitacaoServicoPesquisa() != null)&&(pesquisaSolicitacaoServicoDto.getIdSolicitacaoServicoPesquisa().intValue()>0)) {
sql.append("(solicitacaoservico.idSolicitacaoServico = ?) AND ");
parametros.add(pesquisaSolicitacaoServicoDto.getIdSolicitacaoServicoPesquisa());
}
if ((pesquisaSolicitacaoServicoDto.getIdPrioridade() != null)&&(pesquisaSolicitacaoServicoDto.getIdPrioridade().intValue()>0)) {
sql.append("(solicitacaoservico.idprioridade = ? ) AND ");
parametros.add(pesquisaSolicitacaoServicoDto.getIdPrioridade());
}
if ((pesquisaSolicitacaoServicoDto.getIdOrigem() != null)&&(pesquisaSolicitacaoServicoDto.getIdOrigem().intValue()>0)) {
sql.append("(solicitacaoservico.idorigem = ? ) AND ");
parametros.add(pesquisaSolicitacaoServicoDto.getIdOrigem());
}
if ((pesquisaSolicitacaoServicoDto.getIdUnidade() != null)&&(pesquisaSolicitacaoServicoDto.getIdUnidade().intValue()>0)) {
sql.append("(solicitacaoservico.idunidade = ? ) AND ");
parametros.add(pesquisaSolicitacaoServicoDto.getIdUnidade());
}
if ((pesquisaSolicitacaoServicoDto.getUsuarioLogado()!=null)&&(pesquisaSolicitacaoServicoDto.getUsuarioLogado().getIdUsuario()!=null)&&(pesquisaSolicitacaoServicoDto.getUsuarioLogado().getIdUsuario().intValue()>0)) {
sql.append("(solicitacaoservico.idunidade in ("+unidadeDao.obtenIDsUnidadesUsuario(pesquisaSolicitacaoServicoDto.getUsuarioLogado())+")) AND ");
}
if ((pesquisaSolicitacaoServicoDto.getIdFaseAtual() != null)&&(pesquisaSolicitacaoServicoDto.getIdFaseAtual().intValue()>0)) {
sql.append("(solicitacaoservico.idfaseatual = ? ) AND ");
parametros.add(pesquisaSolicitacaoServicoDto.getIdFaseAtual());
}
if ((pesquisaSolicitacaoServicoDto.getIdGrupoAtual() != null)&&(pesquisaSolicitacaoServicoDto.getIdGrupoAtual().intValue()>0)) {
sql.append("(solicitacaoservico.idgrupoatual = ? ) AND ");
parametros.add(pesquisaSolicitacaoServicoDto.getIdGrupoAtual());
}
if ((pesquisaSolicitacaoServicoDto.getSituacao() != null) && (pesquisaSolicitacaoServicoDto.getSituacao().length()>0)) {
sql.append("(solicitacaoservico.situacao = ? ) AND ");
parametros.add(pesquisaSolicitacaoServicoDto.getSituacao());
}
if ((pesquisaSolicitacaoServicoDto.getIdSolicitante() != null)&&(pesquisaSolicitacaoServicoDto.getIdSolicitante().intValue()>0)) {
sql.append("(solicitacaoservico.idsolicitante = ? ) AND ");
parametros.add(pesquisaSolicitacaoServicoDto.getIdSolicitante());
}
if ((pesquisaSolicitacaoServicoDto.getIdItemConfiguracao() != null)&&(pesquisaSolicitacaoServicoDto.getIdItemConfiguracao().intValue()>0)) {
sql.append("(solicitacaoservico.iditemconfiguracao = ? ) AND ");
parametros.add(pesquisaSolicitacaoServicoDto.getIdItemConfiguracao());
}
if ((pesquisaSolicitacaoServicoDto.getIdTipoDemandaServico() != null)&&(pesquisaSolicitacaoServicoDto.getIdTipoDemandaServico().intValue()>0)) {
sql.append("(solicitacaoservico.idTipoDemandaServico = ? ) AND ");
parametros.add(pesquisaSolicitacaoServicoDto.getIdTipoDemandaServico());
}
if ((pesquisaSolicitacaoServicoDto.getIdResponsavel() != null)&&(pesquisaSolicitacaoServicoDto.getIdResponsavel().intValue()>0)) {
sql.append("(solicitacaoservico.idResponsavel = ? ) AND ");
parametros.add(pesquisaSolicitacaoServicoDto.getIdResponsavel());
}
if ((pesquisaSolicitacaoServicoDto.getIdUsuarioResponsavelAtual() != null)&&(pesquisaSolicitacaoServicoDto.getIdUsuarioResponsavelAtual().intValue()>0)) {
sql.append("(solicitacaoservico.idusuarioresponsavelatual = ? ) AND ");
parametros.add(pesquisaSolicitacaoServicoDto.getIdUsuarioResponsavelAtual());
}
if (pesquisaSolicitacaoServicoDto.getPalavraChave() != null && !pesquisaSolicitacaoServicoDto.getPalavraChave().equalsIgnoreCase("")) {
if(CITCorporeUtil.SGBD_PRINCIPAL.trim().toUpperCase().equalsIgnoreCase(SQLConfig.SQLSERVER))
sql.append("(solicitacaoservico.descricao like '%" + pesquisaSolicitacaoServicoDto.getPalavraChave() + "%' COLLATE SQL_Latin1_General_CP1_CI_AS) AND ");
else
sql.append("(UPPER(solicitacaoservico.descricao) like UPPER('%" + pesquisaSolicitacaoServicoDto.getPalavraChave() + "%')) AND ");
}
if(pesquisaSolicitacaoServicoDto.getDataInicio() != null && pesquisaSolicitacaoServicoDto.getDataFim() != null) {
sql.append("(solicitacaoservico.datahorasolicitacao BETWEEN ? AND ?) AND ");
parametros.add(UtilDatas.getSqlDate(pesquisaSolicitacaoServicoDto.getDataInicio()));
parametros.add(UtilDatas.getTimeStampComUltimaHoraDoDia(pesquisaSolicitacaoServicoDto.getDataFim()));
}
if ((pesquisaSolicitacaoServicoDto.getDataInicioFechamento() != null)&&(pesquisaSolicitacaoServicoDto.getDataFimFechamento() != null)&&(!StringUtils.equalsIgnoreCase(pesquisaSolicitacaoServicoDto.getDataInicioFechamento().toString(), "1970-01-01"))) {
sql.append("(solicitacaoservico.datahorafim BETWEEN ? AND ?) AND ");
parametros.add(UtilDatas.getSqlDate(pesquisaSolicitacaoServicoDto.getDataInicioFechamento()));
parametros.add(UtilDatas.getTimeStampComUltimaHoraDoDia(pesquisaSolicitacaoServicoDto.getDataFimFechamento()));
}
if ((pesquisaSolicitacaoServicoDto.getIdContrato() != null)&&(pesquisaSolicitacaoServicoDto.getIdContrato().intValue()>0)) {
sql.append("(servicocontrato.idcontrato = ?) AND ");
parametros.add(pesquisaSolicitacaoServicoDto.getIdContrato());
}
if ((pesquisaSolicitacaoServicoDto.getIdServico() != null)&&(pesquisaSolicitacaoServicoDto.getIdServico().intValue()>0)) {
sql.append("(servicocontrato.idservico = ?) AND ");
parametros.add(pesquisaSolicitacaoServicoDto.getIdServico());
}
sql.append("solicitacaoservico.idservicocontrato = servicocontrato.idservicocontrato ");
sql.append("JOIN contratos ON servicocontrato.idcontrato = contratos.idcontrato ");
sql.append("JOIN servico ON servicocontrato.idservico = servico.idservico ");
sql.append("JOIN tipodemandaservico ON solicitacaoservico.idtipodemandaservico = tipodemandaservico.idtipodemandaservico ");
sql.append("JOIN usuario on usuario.idusuario = solicitacaoservico.idresponsavel ");
if(isRelatorio){
sql.append("JOIN execucaosolicitacao es ON es.idsolicitacaoservico = solicitacaoservico.idsolicitacaoservico ");
sql.append("JOIN bpm_instanciafluxo ifluxo ON ifluxo.idinstancia = es.idinstanciafluxo AND ifluxo.idfluxo = es.idfluxo ");
sql.append("JOIN bpm_itemtrabalhofluxo itf ON ifluxo.idinstancia = itf.idinstancia ");
sql.append("JOIN bpm_elementofluxo ef ON itf.idelemento = ef.idelemento ");
sql.append("LEFT JOIN usuario u ON u.idusuario = itf.idresponsavelatual ");
}
sql.append("LEFT JOIN faseservico ON faseservico.idfase = solicitacaoservico.idfaseAtual ");
sql.append("LEFT JOIN grupo ON grupo.idgrupo = solicitacaoservico.idgrupoatual ");
sql.append("LEFT JOIN empregados empregado ON empregado.idempregado = solicitacaoservico.idsolicitante ");
sql.append("LEFT JOIN origematendimento ON origematendimento.idorigem = solicitacaoservico.idorigem ");
sql.append("LEFT JOIN prioridade ON prioridade.idprioridade = solicitacaoservico.idprioridade ");
sql.append("LEFT JOIN unidade ON unidade.idunidade = solicitacaoservico.idunidade ");
sql.append("LEFT JOIN contatosolicitacaoservico ON contatosolicitacaoservico.idcontatosolicitacaoservico = solicitacaoservico.idcontatosolicitacaoservico ");
sql.append("LEFT JOIN localidade ON contatosolicitacaoservico.idlocalidade = localidade.idlocalidade ");
if(limiteConsulta != null && limiteConsulta > 0 && (CITCorporeUtil.SGBD_PRINCIPAL.trim().toUpperCase().equalsIgnoreCase(SQLConfig.ORACLE))){
sql.append("WHERE ROWNUM <= ? ");
parametros.add(limiteConsulta);
if ((pesquisaSolicitacaoServicoDto.getIdLocalidade() != null) && (pesquisaSolicitacaoServicoDto.getIdLocalidade().intValue() > 0)) {
sql.append("AND localidade.idlocalidade = ? ");
parametros.add(pesquisaSolicitacaoServicoDto.getIdLocalidade());
}
}else{
if ((pesquisaSolicitacaoServicoDto.getIdLocalidade() != null) && (pesquisaSolicitacaoServicoDto.getIdLocalidade().intValue() > 0)) {
sql.append("WHERE localidade.idlocalidade = ? ");
parametros.add(pesquisaSolicitacaoServicoDto.getIdLocalidade());
}
}
return sql.toString();
}
}