package br.com.centralit.citcorpore.integracao;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import br.com.centralit.citcorpore.bean.OcorrenciaProblemaDTO;
import br.com.centralit.citcorpore.bean.ProblemaDTO;
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 geber.costa
*
*
*/
@SuppressWarnings({"rawtypes","unchecked"})
public class OcorrenciaProblemaDAO extends CrudDaoDefaultImpl{
public OcorrenciaProblemaDAO() {
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("idproblema" ,"idProblema", 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("dadosproblema" ,"dadosProblema", false, false, false, false));
listFields.add(new Field("idcategoriaocorrencia" ,"idCategoriaOcorrencia", false, false, false, false));
listFields.add(new Field("idorigemocorrencia" ,"idOrigemOcorrencia", false, false, false, false));
return listFields;
}
public Collection findByIdProblema(Integer idProblema) throws PersistenceException {
List condicao = new ArrayList();
List ordenacao = new ArrayList();
condicao.add(new Condition("idProblema", "=", idProblema));
ordenacao.add(new Order("dataregistro"));
ordenacao.add(new Order("idOcorrencia"));
return super.findByCondition(condicao, ordenacao);
}
@Override
public String getTableName() {
return "ocorrenciaproblema";
}
@Override
public Collection list() throws PersistenceException {
return null;
}
@Override
public Class getBean() {
return OcorrenciaProblemaDTO.class;
}
public Collection<OcorrenciaProblemaDTO> listByIdProblemaEPorUltimaData(Integer idProblema) throws PersistenceException {
List condicao = new ArrayList();
List ordenacao = new ArrayList();
condicao.add(new Condition("idProblema", "=", idProblema));
ordenacao.add(new Order("dataregistro"));
ordenacao.add(new Order("idOcorrencia"));
return super.findByCondition(condicao, ordenacao);
}
public Collection<OcorrenciaProblemaDTO> listByUltimaDataEHora(Integer idProblema)throws PersistenceException {
List condicao = new ArrayList();
List ordenacao = new ArrayList();
condicao.add(new Condition("idProblema", "=", idProblema));
return super.findByCondition(condicao, ordenacao);
}
public Collection<OcorrenciaProblemaDTO> listByUltimaDataEHora(ProblemaDTO problemaDTO)throws PersistenceException {
List condicao = new ArrayList();
List ordenacao = new ArrayList();
condicao.add(new Condition("idProblema", "=",problemaDTO.getIdProblema()));
return super.findByCondition(condicao, ordenacao);
}
public Collection<OcorrenciaProblemaDTO> listByIdProblemaAndCategoria(Integer idProblema, CategoriaOcorrencia categoria) throws PersistenceException {
List condicao = new ArrayList();
List ordenacao = new ArrayList();
condicao.add(new Condition("idProblema", "=", idProblema));
condicao.add(new Condition("categoria", "=", categoria.name()));
ordenacao.add(new Order("dataregistro"));
ordenacao.add(new Order("idOcorrencia"));
return super.findByCondition(condicao, ordenacao);
}
public OcorrenciaProblemaDTO listUltimaDataHora(int idProblema) throws PersistenceException {
OcorrenciaProblemaDTO ocorrenciaProblemaDTO = null;
if (idProblema > 0) {
StringBuilder sql = new StringBuilder();
List parametro = new ArrayList() ;
List listRetorno = new ArrayList<String>();
List<OcorrenciaProblemaDTO> listaOcorrenciasProblemaDTO = null;
// Montando a instru��o SQL.
sql.append("SELECT dataregistro, MAX(horaregistro) FROM OCORRENCIAPROBLEMA WHERE dataregistro IN (");
sql.append("SELECT MAX(dataregistro) FROM OCORRENCIAPROBLEMA WHERE idproblema = ?");
sql.append(")");
// Adicionando o parametro.
parametro.add(idProblema);
// Especificando as colunas cujo os valores ser�o retornados.
listRetorno.add("dataregistro");
listRetorno.add("horaregistro");
listaOcorrenciasProblemaDTO = (List<OcorrenciaProblemaDTO>) this.execSQL(sql.toString(), parametro.toArray() );
if (listaOcorrenciasProblemaDTO != null && !listaOcorrenciasProblemaDTO.isEmpty() ) {
return listaOcorrenciasProblemaDTO.get(0);
}
}
return ocorrenciaProblemaDTO;
}
public OcorrenciaProblemaDTO findUltimoByIdSolicitacaoServico(Integer idProblema) 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.idproblema, o.iditemtrabalho, o.dataregistro, o.horaregistro, o.registradopor, "
+ " o.descricao, o.datainicio, o.datafim, o.complementojustificativa, o.informacoescontato, "
+ " o.categoria, o.origem, o.tempogasto, o.ocorrencia, o.idcategoriaocorrencia, o.idorigemocorrencia "
+ " from ocorrenciaproblema o "
+ " where o.idproblema = ? "
+ " order by o.idocorrencia desc limit 1 ");
} else if(CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.ORACLE)){
sql.append("select o.idocorrencia, o.idjustificativa, o.idproblema, o.iditemtrabalho, o.dataregistro, o.horaregistro, o.registradopor, "
+ " o.descricao, o.datainicio, o.datafim, o.complementojustificativa, o.informacoescontato, "
+ " o.categoria, o.origem, o.tempogasto, o.ocorrencia, o.idcategoriaocorrencia, o.idorigemocorrencia "
+ " from ocorrenciaproblema o "
+ " where o.idproblema = ? 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.idproblema, o.iditemtrabalho, o.dataregistro, o.horaregistro, o.registradopor, "
+ " o.descricao, o.datainicio, o.datafim, o.complementojustificativa, o.informacoescontato, "
+ " o.categoria, o.origem, o.tempogasto, o.ocorrencia, o.idcategoriaocorrencia, o.idorigemocorrencia "
+ " from ocorrenciaproblema o "
+ " where o.idproblema = ? "
+ " order by o.idocorrencia desc ");
}
parametro.add(idProblema);
list = this.execSQL(sql.toString(), parametro.toArray());
listRetorno.add("idOcorrencia");
listRetorno.add("idJustificativa");
listRetorno.add("idProblema");
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("informacoesContato");
listRetorno.add("categoria");
listRetorno.add("origem");
listRetorno.add("tempoGasto");
listRetorno.add("ocorrencia");
listRetorno.add("idCategoriaOcorrencia");
listRetorno.add("idOrigemOcorrencia");
if (list != null && !list.isEmpty()) {
List result = this.listConvertion(getBean(), list, listRetorno);
return (OcorrenciaProblemaDTO) result.get(0);
} else {
return null;
}
}
public OcorrenciaProblemaDTO findUltimoByIdSolicitacaoServicoAndOcorrencia(Integer idProblema) 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.idproblema, 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 "
+ " from ocorrenciaproblema o "
+ " where o.idproblemaa = ? and o.idocorrencia = (select max(idocorrencia) from ocorrenciaproblema where ocorrencia like '%"+strOcorr+"%' )"
+ " order by o.idocorrencia desc");
parametro.add(idProblema);
list = this.execSQL(sql.toString(), parametro.toArray());
listRetorno.add("idOcorrencia");
listRetorno.add("idJustificativa");
listRetorno.add("idProblema");
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");
if (list != null && !list.isEmpty()) {
List result = this.listConvertion(getBean(), list, listRetorno);
return (OcorrenciaProblemaDTO) result.get(0);
} else {
return null;
}
}
}