package br.com.centralit.citcorpore.integracao;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import br.com.centralit.citcorpore.bean.HistoricoServicoDTO;
import br.com.centralit.citcorpore.util.CITCorporeUtil;
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;
@SuppressWarnings({ "rawtypes", "unchecked" })
public class HistoricoServicoDao extends CrudDaoDefaultImpl {
public HistoricoServicoDao() {
super(Constantes.getValue("DATABASE_ALIAS"), null);
}
public Collection<Field> getFields() {
Collection<Field> listFields = new ArrayList<>();
listFields.add(new Field("idHistoricoServico", "idHistoricoServico", true, true, false, false));
listFields.add(new Field("idServico", "idServico", false, false, false, false));
listFields.add(new Field("idCategoriaServico", "idCategoriaServico", false, false, false, false));
listFields.add(new Field("idSituacaoServico", "idSituacaoServico", false, false, false, false));
listFields.add(new Field("idTipoServico", "idTipoServico", false, false, false, false));
listFields.add(new Field("idImportanciaNegocio", "idImportanciaNegocio", false, false, false, false));
listFields.add(new Field("idEmpresa", "idEmpresa", false, false, false, false));
listFields.add(new Field("idTipoEventoServico", "idTipoEventoServico", false, false, false, false));
listFields.add(new Field("idTipoDemandaServico", "idTipoDemandaServico", false, false, false, false));
listFields.add(new Field("idLocalExecucaoServico", "idLocalExecucaoServico", false, false, false, false));
listFields.add(new Field("nomeServico", "nomeServico", false, false, false, false));
listFields.add(new Field("detalheServico", "detalheServico", false, false, false, false));
listFields.add(new Field("objetivo", "objetivo", false, false, false, false));
listFields.add(new Field("passosServico", "passosServico", false, false, false, false));
listFields.add(new Field("dataInicio", "dataInicio", false, false, false, false));
listFields.add(new Field("linkProcesso", "linkProcesso", false, false, false, false));
listFields.add(new Field("descricaoProcesso", "descricaoProcesso", false, false, false, false));
listFields.add(new Field("tipoDescProcess", "tipoDescProcess", false, false, false, false));
listFields.add(new Field("dispPortal", "dispPortal", false, false, false, false));
listFields.add(new Field("siglaAbrev", "siglaAbrev", false, false, false, false));
// listFields.add(new Field("quadroOrientPortal" ,"quadroOrientPortal", false, false, false, false));
listFields.add(new Field("deleted", "deleted", false, false, false, false));
listFields.add(new Field("idBaseconhecimento", "idBaseconhecimento", false, false, false, false));
listFields.add(new Field("idTemplateSolicitacao", "idTemplateSolicitacao", false, false, false, false));
listFields.add(new Field("idTemplateAcompanhamento", "idTemplateAcompanhamento", false, false, false, false));
listFields.add(new Field("criadoEm" ,"criadoEm", false, false, false, false));
listFields.add(new Field("criadoPor" ,"criadoPor", false, false, false, false));
listFields.add(new Field("modificadoEm" ,"modificadoEm", false, false, false, false));
listFields.add(new Field("modificadoPor" ,"modificadoPor", false, false, false, false));
listFields.add(new Field("conteudodados" ,"conteudodados", false, false, false, false));
return listFields;
}
public String getTableName() {
return this.getOwner() + "Servico_Hist";
}
public Collection list() throws PersistenceException {
List ordenacao = new ArrayList();
ordenacao.add(new Order("idServico"));
return super.list(ordenacao);
}
public Collection findByIdServico(Integer parm) throws PersistenceException {
List condicao = new ArrayList();
List ordenacao = new ArrayList();
condicao.add(new Condition("idServico", "=", parm));
return super.findByCondition(condicao, ordenacao);
}
public Class getBean() {
return HistoricoServicoDTO.class;
}
public Collection find(IDto arg0) throws PersistenceException {
List ordenacao = new ArrayList();
ordenacao.add(new Order("idServico"));
return super.find(arg0, ordenacao);
}
public Collection findByIdCategoriaServico(Integer parm) throws PersistenceException {
List condicao = new ArrayList();
List ordenacao = new ArrayList();
condicao.add(new Condition("idCategoriaServico", "=", parm));
ordenacao.add(new Order("idServicoContrato"));
return super.findByCondition(condicao, ordenacao);
}
public void deleteByIdCategoriaServico(Integer parm) throws PersistenceException {
List condicao = new ArrayList();
condicao.add(new Condition("idCategoriaServico", "=", parm));
super.deleteByCondition(condicao);
}
public Collection findByIdSituacaoServico(Integer parm) throws PersistenceException {
List condicao = new ArrayList();
List ordenacao = new ArrayList();
condicao.add(new Condition("idSituacaoServico", "=", parm));
ordenacao.add(new Order("idServico"));
return super.findByCondition(condicao, ordenacao);
}
public void deleteByIdSituacaoServico(Integer parm) throws PersistenceException {
List condicao = new ArrayList();
condicao.add(new Condition("idSituacaoServico", "=", parm));
super.deleteByCondition(condicao);
}
public Collection findByIdTipoDemandaAndIdCategoria(Integer idTipoDemanda, Integer idCategoria) throws PersistenceException {
List condicao = new ArrayList();
List ordenacao = new ArrayList();
condicao.add(new Condition("idTipoDemandaServico", "=", idTipoDemanda));
if (idCategoria != null)
condicao.add(new Condition("idCategoriaServico", "=", idCategoria));
ordenacao.add(new Order("nomeServico"));
return super.findByCondition(condicao, ordenacao);
}
public Collection findByIdTipoDemandaAndIdContrato(Integer idTipoDemanda, Integer idContrato, Integer idCategoria) throws PersistenceException {
Collection fields = getFields();
List listaNomes = new ArrayList();
String sql = "SELECT ";
int i = 0;
for (Iterator it = fields.iterator(); it.hasNext();) {
Field field = (Field) it.next();
if (i > 0) {
sql += ",";
}
sql += field.getFieldDB();
listaNomes.add(field.getFieldClass());
i++;
}
sql += " FROM " + this.getTableName();
sql += " WHERE idTipoDemandaServico = " + idTipoDemanda + " AND ";
if (idCategoria != null) {
sql += " idCategoriaServico = " + idCategoria + " AND ";
}
sql += " idServico IN (SELECT idservico FROM servicocontrato WHERE idcontrato = " + idContrato + " AND ";
if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.POSTGRESQL))
sql += "(UPPER(deleted) IS NULL OR UPPER(deleted) = 'N')) ";
else
sql += "(deleted IS NULL OR deleted = 'N')) ";
sql += " ORDER BY nomeServico";
List listaR = this.execSQL(sql, null);
return this.listConvertion(HistoricoServicoDTO.class, listaR, listaNomes);
}
/**
* Retorna sigla do servico pelo idOs.
*
* @param idOs
* @return
* @throws Exception
*/
public String retornaSiglaPorIdOs(Integer idOs) throws PersistenceException {
List lstParametros = new ArrayList();
String sql = "SELECT servico.siglaabrev FROM servicocontrato";
sql = sql + " INNER JOIN servico ON servico.idservico = servicocontrato.idservico";
sql = sql + " INNER JOIN os ON os.idservicocontrato = servicocontrato.idservicocontrato";
sql = sql + " WHERE os.idos = ? ";
lstParametros.add(idOs);
Object[] parametros = lstParametros.toArray();
List lstDados = super.execSQL(sql, parametros);
List fields = new ArrayList();
fields.add("siglaAbrev");
Collection<HistoricoServicoDTO> listDeFaturas = super.listConvertion(HistoricoServicoDTO.class, lstDados, fields);
if (listDeFaturas != null && !listDeFaturas.isEmpty()) {
for (HistoricoServicoDTO servico : listDeFaturas) {
if (servico.getSiglaAbrev() != null && !servico.getSiglaAbrev().trim().equals("")) {
return servico.getSiglaAbrev();
} else {
return " -";
}
}
return null;
} else {
return null;
}
}
/**
* Retorna lista Servi�o por nome.
*
* @return Collection
* @throws Exception
*/
public Collection findByNome(HistoricoServicoDTO servicoDTO) throws PersistenceException {
List condicao = new ArrayList();
List ordenacao = new ArrayList();
condicao.add(new Condition("nomeServico", "=", servicoDTO.getNomeServico()));
ordenacao.add(new Order("nomeServico"));
return super.findByCondition(condicao, ordenacao);
}
/**
* M�todo para retornar apenas os servi�os referente a unidade do solicitante
*
* @author rodrigo.oliveira
* @param idServico
* @param idTipoDemanda
* @param idCategoria
* @return
* @throws Exception
*/
public Collection findByIdServicoAndIdTipoDemandaAndIdCategoria(Integer idServico, Integer idTipoDemanda, Integer idCategoria) throws PersistenceException {
List condicao = new ArrayList();
List ordenacao = new ArrayList();
condicao.add(new Condition("idTipoDemandaServico", "=", idTipoDemanda));
if (idCategoria != null)
condicao.add(new Condition("idCategoriaServico", "=", idCategoria));
condicao.add(new Condition("idServico", "=", idServico));
ordenacao.add(new Order("nomeServico"));
return super.findByCondition(condicao, ordenacao);
}
public HistoricoServicoDTO restoreByIdServico(Integer idServico){
return null;
}
public Collection<HistoricoServicoDTO> findByServico(Integer idServico) throws PersistenceException {
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) IS NULL ";
else
sql += "servico.deleted IS NULL ";
sql += "and situacao = 'A' and servico.idServico = ? and (dispportal = 'Y' or 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 (Collection<HistoricoServicoDTO>) this.listConvertion(getBean(), list, fields);
} else {
return null;
}
}
public Collection<HistoricoServicoDTO> findByServico(Integer idServico, String nome) throws PersistenceException {
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) IS NULL ";
else
sql += "servico.deleted IS NULL ";
sql += "and situacao = 'A' and servico.idServico = ? and (dispportal = 'Y' or 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 (Collection<HistoricoServicoDTO>) this.listConvertion(getBean(), list, fields);
} else {
return null;
}
}
}