/**
*
*/
package br.com.centralit.citcorpore.integracao;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
import java.util.List;
import br.com.centralit.citcorpore.bean.OcorrenciaSolicitacaoDTO;
import br.com.centralit.citcorpore.bean.SolicitacaoServicoDTO;
import br.com.centralit.citcorpore.util.CITCorporeUtil;
import br.com.centralit.citcorpore.util.Enumerados.CategoriaOcorrencia;
import br.com.citframework.dto.IDto;
import br.com.citframework.excecao.PersistenceException;
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.util.Constantes;
import br.com.citframework.util.SQLConfig;
/**
* @author breno.guimaraes
*
*/
@SuppressWarnings({ "rawtypes", "unchecked" })
public class OcorrenciaSolicitacaoDao extends CrudDaoDefaultImpl {
private static final String TABLE_NAME = "ocorrenciasolicitacao";
public OcorrenciaSolicitacaoDao() {
super(Constantes.getValue("DATABASE_ALIAS"), null);
}
@Override
public Collection find(IDto arg0) throws PersistenceException {
return null;
}
@Override
public Collection<Field> getFields() {
Collection<Field> listFields = new ArrayList<>();
listFields.add(new Field("idocorrencia", "idOcorrencia", true, true, false, false));
listFields.add(new Field("idsolicitacaoservico", "idSolicitacaoServico", false, false, false, false));
listFields.add(new Field("iditemtrabalho", "idItemTrabalho", false, false, false, false));
listFields.add(new Field("idjustificativa", "idJustificativa", false, false, false, false));
listFields.add(new Field("datainicio", "dataInicio", false, false, false, false));
listFields.add(new Field("datafim", "dataFim", false, false, false, false));
listFields.add(new Field("categoria", "categoria", false, false, false, false));
listFields.add(new Field("origem", "origem", false, false, false, false));
listFields.add(new Field("descricao", "descricao", false, false, false, false));
listFields.add(new Field("ocorrencia", "ocorrencia", false, false, false, false));
listFields.add(new Field("informacoescontato", "informacoesContato", false, false, false, false));
listFields.add(new Field("tempogasto", "tempoGasto", false, false, false, false));
listFields.add(new Field("dataregistro", "dataregistro", false, false, false, false));
listFields.add(new Field("horaregistro", "horaregistro", false, false, false, false));
listFields.add(new Field("registradopor", "registradopor", false, false, false, false));
listFields.add(new Field("complementojustificativa", "complementoJustificativa", false, false, false, false));
listFields.add(new Field("dadossolicitacao", "dadosSolicitacao", false, false, false, false));
listFields.add(new Field("idcategoriaocorrencia", "idCategoriaOcorrencia", false, false, false, false));
listFields.add(new Field("idorigemocorrencia", "idOrigemOcorrencia", false, false, false, false));
listFields.add(new Field("notificarsolicitante", "notificarSolicitante", false, false, false, false));
listFields.add(new Field("notificarresponsavel", "notificarResponsavel", false, false, false, false));
return listFields;
}
public Collection findByIdSolicitacaoServico(Integer idSolicitacaoServicoParm) throws PersistenceException {
List condicao = new ArrayList();
List ordenacao = new ArrayList();
condicao.add(new Condition("idSolicitacaoServico", "=", idSolicitacaoServicoParm));
ordenacao.add(new Order("dataregistro"));
ordenacao.add(new Order("idOcorrencia"));
return super.findByCondition(condicao, ordenacao);
}
public OcorrenciaSolicitacaoDTO findUltimoByIdSolicitacaoServico(Integer idSolicitacaoServicoParm) throws PersistenceException {
List parametro = new ArrayList();
List listRetorno = new ArrayList();
List list = new ArrayList();
StringBuilder sql = new StringBuilder();
if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.POSTGRESQL) || CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.MYSQL)) {
sql.append("select o.idocorrencia, o.idjustificativa, o.idsolicitacaoservico, o.iditemtrabalho, o.dataregistro, o.horaregistro, o.registradopor, "
+ " o.descricao, o.datainicio, o.datafim, o.complementojustificativa, o.dadossolicitacao, o.informacoescontato, "
+ " o.categoria, o.origem, o.tempogasto, o.ocorrencia, o.idcategoriaocorrencia, o.idorigemocorrencia, o.notificarsolicitante " + " from ocorrenciasolicitacao o " + " where o.idsolicitacaoservico = ? "
+ " order by o.idocorrencia desc limit 1 ");
} else if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.ORACLE)) {
sql.append("select o.idocorrencia, o.idjustificativa, o.idsolicitacaoservico, o.iditemtrabalho, o.dataregistro, o.horaregistro, o.registradopor, "
+ " o.descricao, o.datainicio, o.datafim, o.complementojustificativa, o.dadossolicitacao, o.informacoescontato, "
+ " o.categoria, o.origem, o.tempogasto, o.ocorrencia, o.idcategoriaocorrencia, o.idorigemocorrencia, o.notificarsolicitante " + " from ocorrenciasolicitacao o "
+ " where o.idsolicitacaoservico = ? and rownum = 1 " + " order by o.idocorrencia desc ");
} else if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.SQLSERVER)) {
sql.append("select top 1 o.idocorrencia, o.idjustificativa, o.idsolicitacaoservico, o.iditemtrabalho, o.dataregistro, o.horaregistro, o.registradopor, "
+ " o.descricao, o.datainicio, o.datafim, o.complementojustificativa, o.dadossolicitacao, o.informacoescontato, "
+ " o.categoria, o.origem, o.tempogasto, o.ocorrencia, o.idcategoriaocorrencia, o.idorigemocorrencia, o.notificarsolicitante " + " from ocorrenciasolicitacao o " + " where o.idsolicitacaoservico = ? "
+ " order by o.idocorrencia desc ");
}
parametro.add(idSolicitacaoServicoParm);
list = this.execSQL(sql.toString(), parametro.toArray());
listRetorno.add("idOcorrencia");
listRetorno.add("idJustificativa");
listRetorno.add("idSolicitacaoServico");
listRetorno.add("idItemTrabalho");
listRetorno.add("dataregistro");
listRetorno.add("horaregistro");
listRetorno.add("registradopor");
listRetorno.add("descricao");
listRetorno.add("dataInicio");
listRetorno.add("dataFim");
listRetorno.add("complementoJustificativa");
listRetorno.add("dadosSolicitacao");
listRetorno.add("informacoesContato");
listRetorno.add("categoria");
listRetorno.add("origem");
listRetorno.add("tempoGasto");
listRetorno.add("ocorrencia");
listRetorno.add("idCategoriaOcorrencia");
listRetorno.add("idOrigemOcorrencia");
listRetorno.add("notificarSolicitante");
if (list != null && !list.isEmpty()) {
List result = this.listConvertion(getBean(), list, listRetorno);
return (OcorrenciaSolicitacaoDTO) result.get(0);
} else {
return null;
}
}
public OcorrenciaSolicitacaoDTO findUltimoByIdSolicitacaoServicoAndOcorrencia(Integer idSolicitacaoServico) throws PersistenceException {
List parametro = new ArrayList();
List listRetorno = new ArrayList();
List list = new ArrayList();
String strOcorr = "Escala��o autom�tica";
StringBuilder sql = new StringBuilder();
sql.append("select o.idocorrencia, o.idjustificativa, o.idsolicitacaoservico, o.iditemtrabalho, o.dataregistro, o.horaregistro, o.registradopor, "
+ " o.descricao, o.datainicio, o.datafim, o.complementojustificativa, o.dadossolicitacao, o.informacoescontato, "
+ " o.categoria, o.origem, o.tempogasto, o.ocorrencia, o.idcategoriaocorrencia, o.idorigemocorrencia, o.notificarsolicitante " + " from ocorrenciasolicitacao o "
+ " where o.idsolicitacaoservico = ? and o.idocorrencia = (select max(idocorrencia) from ocorrenciasolicitacao where ocorrencia like '%" + strOcorr + "%' )"
+ " order by o.idocorrencia desc");
parametro.add(idSolicitacaoServico);
list = this.execSQL(sql.toString(), parametro.toArray());
listRetorno.add("idOcorrencia");
listRetorno.add("idJustificativa");
listRetorno.add("idSolicitacaoServico");
listRetorno.add("idItemTrabalho");
listRetorno.add("dataregistro");
listRetorno.add("horaregistro");
listRetorno.add("registradopor");
listRetorno.add("descricao");
listRetorno.add("dataInicio");
listRetorno.add("dataFim");
listRetorno.add("complementoJustificativa");
listRetorno.add("dadosSolicitacao");
listRetorno.add("informacoesContato");
listRetorno.add("categoria");
listRetorno.add("origem");
listRetorno.add("tempoGasto");
listRetorno.add("ocorrencia");
listRetorno.add("idCategoriaOcorrencia");
listRetorno.add("idOrigemOcorrencia");
listRetorno.add("notificarSolicitante");
if (list != null && !list.isEmpty()) {
List result = this.listConvertion(getBean(), list, listRetorno);
return (OcorrenciaSolicitacaoDTO) result.get(0);
} else {
return null;
}
}
public Collection findOcorrenciaDoTesteByIdSolicitacaoServico(Integer idSolicitacaoServicoParm) throws PersistenceException {
List parametro = new ArrayList();
List listRetorno = new ArrayList();
List list = new ArrayList();
Collection<SolicitacaoServicoDTO> solicitacoes = new ArrayList();
StringBuilder sql = new StringBuilder();
String string = "Execu��o da tarefa \"Testes/Controle de qualidade\"";
sql.append("select o.ocorrencia, u.idusuario from ocorrenciasolicitacao o " + " inner join solicitacaoservico s on o.idsolicitacaoservico = s.idsolicitacaoservico "
+ " inner join usuario u on o.registradopor = u.login " + " where o.ocorrencia like '%" + string + "%' and s.idsolicitacaoservico = ?");
parametro.add(idSolicitacaoServicoParm);
list = this.execSQL(sql.toString(), parametro.toArray());
listRetorno.add("ocorrencia");
listRetorno.add("idUsuario");
if (list != null && !list.isEmpty()) {
solicitacoes = (Collection<SolicitacaoServicoDTO>) this.listConvertion(getBean(), list, listRetorno);
}
return solicitacoes;
}
@Override
public String getTableName() {
return TABLE_NAME;
}
@Override
public Collection list() throws PersistenceException {
return null;
}
@Override
public Class getBean() {
return OcorrenciaSolicitacaoDTO.class;
}
public Collection<OcorrenciaSolicitacaoDTO> listByIdSolicitacaoAndCategoria(Integer idSolicitacaoServico, CategoriaOcorrencia categoria) throws PersistenceException {
List condicao = new ArrayList();
List ordenacao = new ArrayList();
condicao.add(new Condition("idSolicitacaoServico", "=", idSolicitacaoServico));
condicao.add(new Condition("categoria", "=", categoria.name()));
ordenacao.add(new Order("dataregistro"));
ordenacao.add(new Order("idOcorrencia"));
return super.findByCondition(condicao, ordenacao);
}
public Collection<OcorrenciaSolicitacaoDTO> findByIdPessoaEDataAtendidasGrupoTeste(Integer idPessoa, Date dataInicio, Date dataFim) throws PersistenceException {
List parametro = new ArrayList();
List listRetorno = new ArrayList();
List list = new ArrayList();
StringBuilder sql = new StringBuilder();
sql.append("select solicitacaoservico.idsolicitacaoservico, usuario.nome, historicosolicitacaoservico.idresponsavelatual, solicitacaoservico.urgencia "
+ " from ocorrenciasolicitacao ocorrenciasolicitacao " + " INNER JOIN solicitacaoservico solicitacaoservico "
+ " ON solicitacaoservico.idsolicitacaoservico = ocorrenciasolicitacao.idsolicitacaoservico " + " INNER JOIN historicosolicitacaoservico historicosolicitacaoservico "
+ " ON historicosolicitacaoservico.idocorrencia = ocorrenciasolicitacao.idocorrencia " + " INNER JOIN usuario usuario "
+ " ON usuario.idusuario = historicosolicitacaoservico.idresponsavelatual " + " WHERE ocorrenciasolicitacao.ocorrencia like '%Execu��o da tarefa \"Testes/Controle de qualidade\"%' "
+ " and solicitacaoservico.datahorainiciosla between ? and ? " + " and solicitacaoservico.datahorafim < solicitacaoservico.datahoralimite "
+ " and historicosolicitacaoservico.idresponsavelatual = ? " + " group by solicitacaoservico.idsolicitacaoservico " + " order by solicitacaoservico.idsolicitacaoservico ");
parametro.add(dataInicio);
parametro.add(dataFim);
parametro.add(idPessoa);
list = this.execSQL(sql.toString(), parametro.toArray());
listRetorno.add("idSolicitacaoServico");
listRetorno.add("nome");
listRetorno.add("idResponsavelAtual");
listRetorno.add("urgencia");
if (list != null && !list.isEmpty()) {
return (Collection<OcorrenciaSolicitacaoDTO>) this.listConvertion(getBean(), list, listRetorno);
} else {
return null;
}
}
public Collection<OcorrenciaSolicitacaoDTO> findByIdPessoaGrupoTeste(Integer idPessoa, Date dataInicio, Date dataFim) throws PersistenceException {
List parametro = new ArrayList();
List listRetorno = new ArrayList();
List list = new ArrayList();
StringBuilder sql = new StringBuilder();
sql.append("select solicitacaoservico.idsolicitacaoservico, usuario.nome, historicosolicitacaoservico.idresponsavelatual, solicitacaoservico.urgencia, "
+ " solicitacaoservico.datahoralimite, solicitacaoservico.datahorafim " + " from ocorrenciasolicitacao ocorrenciasolicitacao " + " INNER JOIN solicitacaoservico solicitacaoservico "
+ " ON solicitacaoservico.idsolicitacaoservico = ocorrenciasolicitacao.idsolicitacaoservico " + " INNER JOIN historicosolicitacaoservico historicosolicitacaoservico "
+ " ON historicosolicitacaoservico.idocorrencia = ocorrenciasolicitacao.idocorrencia " + " INNER JOIN usuario usuario "
+ " ON usuario.idusuario = historicosolicitacaoservico.idresponsavelatual " + " WHERE ocorrenciasolicitacao.ocorrencia like '%Execu��o da tarefa \"Testes/Controle de qualidade\"%' "
+ " and solicitacaoservico.datahorainiciosla between ? and ? " + " and historicosolicitacaoservico.idresponsavelatual = ? " + " group by solicitacaoservico.idsolicitacaoservico "
+ " order by solicitacaoservico.idsolicitacaoservico ");
parametro.add(dataInicio);
parametro.add(dataFim);
parametro.add(idPessoa);
list = this.execSQL(sql.toString(), parametro.toArray());
listRetorno.add("idSolicitacaoServico");
listRetorno.add("nome");
listRetorno.add("idResponsavelAtual");
listRetorno.add("urgencia");
listRetorno.add("dataHoraLimite");
listRetorno.add("dataHoraFim");
if (list != null && !list.isEmpty()) {
return (Collection<OcorrenciaSolicitacaoDTO>) this.listConvertion(getBean(), list, listRetorno);
} else {
return null;
}
}
public OcorrenciaSolicitacaoDTO findByIdOcorrencia(Integer idOcorrencia) throws PersistenceException {
List parametro = new ArrayList();
StringBuilder sb = new StringBuilder();
sb.append("select dadossolicitacao from ocorrenciasolicitacao where idocorrencia = ?");
parametro.add(idOcorrencia);
List lista = this.execSQL(sb.toString(), parametro.toArray());
List<String> listRetorno = new ArrayList<String>();
listRetorno.add("dadosSolicitacao");
if (lista != null && !lista.isEmpty()) {
List result = this.engine.listConvertion(OcorrenciaSolicitacaoDTO.class, lista, listRetorno);
return (OcorrenciaSolicitacaoDTO) result.get(0);
} else {
return new OcorrenciaSolicitacaoDTO();
}
}
public OcorrenciaSolicitacaoDTO quantidadeDeOcorrenciasDeAlteracaoSlaPorNumeroDaSolicitacao(Integer idSolicitacaoServico) throws PersistenceException {
List parametro = new ArrayList();
StringBuilder sb = new StringBuilder();
sb.append("SELECT count(oc.idsolicitacaoservico) as totalOcorrenciasAlterarcaoSlaPorSolicitacao FROM ocorrenciasolicitacao oc WHERE (oc.categoria LIKE 'MudancaSLA' ) AND oc.idsolicitacaoservico = ?");
parametro.add(idSolicitacaoServico);
List lista = this.execSQL(sb.toString(), parametro.toArray());
List<String> listRetorno = new ArrayList<String>();
listRetorno.add("totalOcorrenciasAlterarcaoSlaPorSolicitacao");
if (lista != null && !lista.isEmpty()) {
List result = this.engine.listConvertion(OcorrenciaSolicitacaoDTO.class, lista, listRetorno);
return (OcorrenciaSolicitacaoDTO) result.get(0);
} else {
return new OcorrenciaSolicitacaoDTO();
}
}
public OcorrenciaSolicitacaoDTO findUltimaTarefaByIdSolicitacaoServico(Integer idSolicitacaoServicoParm) throws PersistenceException {
List condicao = new ArrayList();
List ordenacao = new ArrayList();
condicao.add(new Condition("idSolicitacaoServico", "=", idSolicitacaoServicoParm));
condicao.add(new Condition("idItemTrabalho", "IS NOT", null));
ordenacao.add(new Order("dataregistro", Order.DESC));
List<OcorrenciaSolicitacaoDTO> result = (List<OcorrenciaSolicitacaoDTO>) super.findByCondition(condicao, ordenacao);
if (result != null && !result.isEmpty())
return result.get(0);
else
return null;
}
}