package br.com.centralit.citcorpore.integracao;
import java.math.BigDecimal;
import java.sql.Date;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import br.com.centralit.citcorpore.bean.ServicoContratoDTO;
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.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 ServicoContratoDao extends CrudDaoDefaultImpl {
public ServicoContratoDao() {
super(Constantes.getValue("DATABASE_ALIAS"), null);
}
public static String strSGBDPrincipal = null;
@Override
public Collection<Field> getFields() {
final Collection<Field> listFields = new ArrayList<>();
listFields.add(new Field("idServicoContrato", "idServicoContrato", true, true, false, false));
listFields.add(new Field("idServico", "idServico", false, false, false, false));
listFields.add(new Field("idContrato", "idContrato", false, false, false, false));
listFields.add(new Field("idCondicaoOperacao", "idCondicaoOperacao", 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("observacao", "observacao", false, false, false, false));
listFields.add(new Field("custo", "custo", false, false, false, false));
listFields.add(new Field("restricoesPressup", "restricoesPressup", false, false, false, false));
listFields.add(new Field("objetivo", "objetivo", false, false, false, false));
listFields.add(new Field("permiteSLANoCadInc", "permiteSLANoCadInc", 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("areaRequisitante", "areaRequisitante", false, false, false, false));
listFields.add(new Field("idModeloEmailCriacao", "idModeloEmailCriacao", false, false, false, false));
listFields.add(new Field("idModeloEmailFinalizacao", "idModeloEmailFinalizacao", false, false, false, false));
listFields.add(new Field("idModeloEmailAcoes", "idModeloEmailAcoes", false, false, false, false));
listFields.add(new Field("idGrupoNivel1", "idGrupoNivel1", false, false, false, false));
listFields.add(new Field("idGrupoExecutor", "idGrupoExecutor", false, false, false, false));
listFields.add(new Field("idGrupoAprovador", "idGrupoAprovador", false, false, false, false));
listFields.add(new Field("idCalendario", "idCalendario", false, false, false, false));
listFields.add(new Field("permSLATempoACombinar", "permSLATempoACombinar", false, false, false, false));
listFields.add(new Field("permMudancaSLA", "permMudancaSLA", false, false, false, false));
listFields.add(new Field("permMudancaCalendario", "permMudancaCalendario", false, false, false, false));
listFields.add(new Field("deleted", "deleted", false, false, false, false));
listFields.add(new Field("expandir", "expandir", false, false, false, false));
return listFields;
}
@Override
public String getTableName() {
return this.getOwner() + "ServicoContrato";
}
@Override
public Collection list() throws PersistenceException {
return null;
}
@Override
public Class getBean() {
return ServicoContratoDTO.class;
}
@Override
public Collection find(final IDto arg0) throws PersistenceException {
return null;
}
public Collection findByIdServico(final Integer parm) throws PersistenceException {
final StringBuilder sql = new StringBuilder();
final List parametro = new ArrayList();
List list = new ArrayList();
sql.append("SELECT idServico, idContrato, deleted, dataInicio, dataFim ");
sql.append("FROM " + getTableName() + " ");
sql.append("WHERE idservico = " + parm + " ");
sql.append("AND (datafim is null or datafim > ? )");
parametro.add(UtilDatas.getDataAtual());
list = this.execSQL(sql.toString(), parametro.toArray());
final List listRetorno = new ArrayList();
listRetorno.add("idServico");
listRetorno.add("idContrato");
listRetorno.add("deleted");
listRetorno.add("dataInicio");
listRetorno.add("dataFim");
final List result = engine.listConvertion(getBean(), list, listRetorno);
if (result == null || result.size() == 0) {
return null;
} else {
return result;
}
}
public void deleteByIdServico(final Integer parm) throws PersistenceException {
final List condicao = new ArrayList();
condicao.add(new Condition("idServico", "=", parm));
super.deleteByCondition(condicao);
}
public Collection findByIdContrato(final Integer parm) throws PersistenceException {
final StringBuilder sql = new StringBuilder();
final List parametro = new ArrayList();
List list = new ArrayList();
sql.append("SELECT " + this.getNamesFieldsStr() + " ");
sql.append("FROM " + getTableName() + " ");
sql.append("WHERE idContrato = ? ");
sql.append("AND (deleted is null or deleted <> 'y')");
parametro.add(parm);
list = this.execSQL(sql.toString(), parametro.toArray());
final List listRetorno = this.getListNamesFieldClass();
List result = new ArrayList();
result = engine.listConvertion(getBean(), list, listRetorno);
return result;
}
public Collection findServicoComNomeByIdContrato(final Integer parm) throws PersistenceException {
final StringBuilder sql = new StringBuilder();
final List parametro = new ArrayList();
List list = new ArrayList();
sql.append("SELECT sc.idservicocontrato, s.nomeservico FROM servicocontrato sc ");
sql.append("inner join servico s on s.idservico = sc.idservico WHERE idContrato = ? ");
sql.append("AND (sc.deleted is null or sc.deleted <> 'y')");
parametro.add(parm);
list = this.execSQL(sql.toString(), parametro.toArray());
final List listRetorno = new ArrayList();
listRetorno.add("idServicoContrato");
listRetorno.add("nomeServico");
List result = new ArrayList();
result = engine.listConvertion(getBean(), list, listRetorno);
return result;
}
public Collection findByIdContratoDistinct(final Integer idContrato) throws PersistenceException {
final StringBuilder sql = new StringBuilder();
final List parametro = new ArrayList();
List list = new ArrayList();
sql.append("SELECT distinct servicocontrato.idServico ");
sql.append("FROM servicocontrato ");
sql.append("INNER JOIN servico ON servico.idservico = servicocontrato.idservico ");
sql.append("WHERE servicocontrato.idcontrato = " + idContrato);
list = this.execSQL(sql.toString(), parametro.toArray());
final List listRetorno = new ArrayList();
listRetorno.add("idServico");
final List result = engine.listConvertion(getBean(), list, listRetorno);
if (result == null || result.size() == 0) {
return null;
} else {
return result;
}
}
public Collection findServicoContratoByIdContrato(final Integer idContrato) throws PersistenceException {
final StringBuilder sql = new StringBuilder();
final List parametro = new ArrayList();
List list = new ArrayList();
sql.append("SELECT servicocontrato.idServicoContrato, servico.nomeServico, servico.idServico ");
sql.append("FROM servicocontrato servicocontrato ");
sql.append("INNER JOIN servico servico ON servicocontrato.idservico = servico.idservico ");
sql.append("WHERE servicocontrato.idContrato = " + idContrato);
sql.append(" AND (servicocontrato.deleted is null or servicocontrato.deleted <> 'y') ");
sql.append("order by servico.nomeservico ");
list = this.execSQL(sql.toString(), parametro.toArray());
final List listRetorno = new ArrayList();
listRetorno.add("idServicoContrato");
listRetorno.add("nomeServico");
listRetorno.add("idServico");
final List result = engine.listConvertion(getBean(), list, listRetorno);
if (result == null || result.size() == 0) {
return null;
} else {
return result;
}
}
/**
* Localiza os servi�os contrato utilizando o id do servi�o
*
* @param idServico
* @return
* @throws Exception
*/
public Collection findServicoContratoByIdServico(final Integer idServico) throws PersistenceException {
final StringBuilder sql = new StringBuilder();
final List parametro = new ArrayList();
List list = new ArrayList();
sql.append(" SELECT servicocontrato.idServicoContrato ");
sql.append(" FROM servicocontrato ");
sql.append(" WHERE servicocontrato.idServico = " + idServico);
sql.append(" AND (servicocontrato.deleted is null or servicocontrato.deleted <> 'y') ");
list = this.execSQL(sql.toString(), parametro.toArray());
final List listRetorno = new ArrayList();
listRetorno.add("idServicoContrato");
final List result = engine.listConvertion(getBean(), list, listRetorno);
if (result == null || result.size() == 0) {
return null;
} else {
return result;
}
}
/**
* Retorna ServicoContrato Ativo de acordo com o idContrato e idServico informado.
*
* @param idContrato
* - Identificador do Contrato.
* @param idServico
* - Identificador do Servi�o.
* @return ServicoContratoDTO
* @throws Exception
* @author valdoilo.damasceno
*/
public ServicoContratoDTO findByIdContratoAndIdServico(final Integer idContrato, final Integer idServico)
throws PersistenceException {
final StringBuilder sql = new StringBuilder();
sql.append(" SELECT ");
sql.append(this.getNamesFieldsStr());
sql.append(" FROM servicocontrato ");
sql.append(" WHERE idcontrato = ? AND idservico = ? AND (datafim is null OR datafim > ? ) AND (deleted <> 'y' OR deleted <> 'Y' OR deleted is null) ");
final List parametros = new ArrayList();
parametros.add(idContrato);
parametros.add(idServico);
parametros.add(UtilDatas.getDataAtual());
final List list = this.execSQL(sql.toString(), parametros.toArray());
final List<ServicoContratoDTO> listServicoContratoDto = this.listConvertion(this.getBean(), list,
this.getListNamesFieldClass());
if (listServicoContratoDto != null && !listServicoContratoDto.isEmpty()) {
return listServicoContratoDto.get(0);
} else {
return null;
}
}
/**
* @author euler.ramos
* @return
* @throws Exception
*/
public ServicoContratoDTO findByIdServicoContrato(final Integer idServicoContrato) throws PersistenceException {
final StringBuilder sql = new StringBuilder();
sql.append("SELECT servicocontrato.idServicoContrato, servico.nomeServico ");
sql.append("FROM servicocontrato JOIN servico servico ON servicocontrato.idservico = servico.idservico ");
sql.append("WHERE idservicocontrato = ? AND (servicocontrato.datafim is null OR servicocontrato.datafim > ? ) AND (servicocontrato.deleted <> 'y' OR servicocontrato.deleted <> 'Y' OR servicocontrato.deleted is null) ");
final List parametros = new ArrayList();
final List listaRetorno = new ArrayList();
listaRetorno.add("idServicoContrato");
listaRetorno.add("nomeServico");
parametros.add(idServicoContrato);
parametros.add(UtilDatas.getDataAtual());
final List list = this.execSQL(sql.toString(), parametros.toArray());
final List<ServicoContratoDTO> listServicoContratoDto = this.listConvertion(this.getBean(), list, listaRetorno);
if (listServicoContratoDto != null && !listServicoContratoDto.isEmpty()) {
return listServicoContratoDto.get(0);
} else {
return null;
}
}
public void deleteByIdContrato(final Integer parm) throws PersistenceException {
final List condicao = new ArrayList();
condicao.add(new Condition("idContrato", "=", parm));
super.deleteByCondition(condicao);
}
public void setDataFim(final Integer idServicoContrato) throws PersistenceException {
final ServicoContratoDTO servicoContratoDto = new ServicoContratoDTO();
servicoContratoDto.setIdServicoContrato(idServicoContrato);
servicoContratoDto.setDataFim(UtilDatas.getDataAtual());
super.updateNotNull(servicoContratoDto);
}
public Collection findByIdFornecedor(final Integer idFornecedor) throws PersistenceException {
final StringBuilder sql = new StringBuilder();
final List parametro = new ArrayList();
List list = new ArrayList();
final Collection fields = getFields();
final List listaNomes = new ArrayList();
sql.append("SELECT ");
int i = 0;
for (final Iterator it = fields.iterator(); it.hasNext();) {
final Field field = (Field) it.next();
if (i > 0) {
sql.append(", ");
}
sql.append("sc." + field.getFieldDB());
listaNomes.add(field.getFieldClass());
i++;
}
sql.append(" FROM " + getTableName());
sql.append(" sc INNER JOIN contratos c ON c.idcontrato = sc.idcontrato WHERE c.idfornecedor = ? ");
// sql.append("order by nomeservico ");
parametro.add(idFornecedor);
list = this.execSQL(sql.toString(), parametro.toArray());
final List result = engine.listConvertion(getBean(), list, listaNomes);
if (result == null || result.size() == 0) {
return null;
} else {
return result;
}
}
public boolean validaServicoContrato(final Integer idContrato, final Integer idServico) throws PersistenceException {
final StringBuilder sql = new StringBuilder();
final List parametro = new ArrayList();
List list = new ArrayList();
sql.append("SELECT idServicoContrato ");
sql.append("FROM " + getTableName() + " ");
sql.append("WHERE idContrato = ? ");
sql.append("AND idServico = ? ");
sql.append("AND deleted IS NULL ");
parametro.add(idContrato);
parametro.add(idServico);
list = this.execSQL(sql.toString(), parametro.toArray());
final List listRetorno = new ArrayList();
listRetorno.add("idServicoContrato");
final List result = engine.listConvertion(getBean(), list, listRetorno);
if (result == null || result.size() == 0) {
return true;
} else {
return false;
}
}
/**
* @param idServicoContrato
* @param data
* @throws PersistenceException
* @author cledson.junioro
*/
public void updateServicoContrato(final Integer idServicoContrato, final Date data) throws PersistenceException {
final List parametros = new ArrayList();
if (data != null) {
parametros.add(data);
} else {
parametros.add(null);
}
parametros.add("y");
parametros.add(idServicoContrato);
final String sql = "UPDATE " + getTableName() + " SET datafim = ?, deleted = ? WHERE idServicoContrato = ?";
execUpdate(sql, parametros.toArray());
}
/**
* @param servicoContratoDTO
* @param paginacao
* @param pagAtual
* @param pagAtualAux
* @param totalPag
* @param quantidadePaginator
* @param campoPesquisa
* @return
* @throws Exception
* @author cledson.junioro
*
* Pagina��o da tela Administra��o de Contratos
*/
public Collection findByIdContratoPaginada(final ServicoContratoDTO servicoContratoDTO, final String paginacao,
Integer pagAtual, final Integer pagAtualAux, Integer totalPag, final Integer quantidadePaginator,
final String campoPesquisa) throws PersistenceException {
if (strSGBDPrincipal == null) {
strSGBDPrincipal = CITCorporeUtil.SGBD_PRINCIPAL;
strSGBDPrincipal = UtilStrings.nullToVazio(strSGBDPrincipal).trim();
}
final StringBuilder sql = new StringBuilder();
String trim = "";
String sql2 = "";
sql.append("SELECT sc.idServicoContrato,sc.idServico,sc.idContrato,sc.idCondicaoOperacao,sc.dataInicio,sc.dataFim,sc.observacao,");
sql.append("sc.custo,sc.restricoesPressup,sc.objetivo,sc.permiteSLANoCadInc,sc.linkProcesso,sc.descricaoProcesso,sc.tipoDescProcess,");
sql.append("sc.areaRequisitante,sc.idModeloEmailCriacao,sc.idModeloEmailFinalizacao,sc.idModeloEmailAcoes,sc.idGrupoNivel1,sc.idGrupoExecutor,");
sql.append("sc.idGrupoAprovador,sc.idCalendario,sc.permSLATempoACombinar,sc.permMudancaSLA,sc.permMudancaCalendario,sc.deleted, sc.expandir ");
sql.append(" FROM " + getTableName() + " sc INNER JOIN servico s ON sc.idServico = s.idServico");
if (strSGBDPrincipal.equalsIgnoreCase("SQLSERVER")) {
trim = "";
} else {
trim = " order by trim(s.nomeservico)";
}
sql.append(" WHERE sc.idContrato = " + servicoContratoDTO.getIdContrato()
+ " AND (upper(s.nomeservico) like '%" + campoPesquisa.toUpperCase()
+ "%' OR upper(s.siglaabrev) like '%" + campoPesquisa.toUpperCase()
+ "%') AND (sc.deleted is null or sc.deleted <> 'y')" + trim);
final List listaTotal = this.execSQL(sql.toString(), null);
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);
} else if (strSGBDPrincipal.equalsIgnoreCase("ORACLE")) {
Integer quantidadePaginator2 = new Integer(0);
quantidadePaginator2 = quantidadePaginator + pagAtual;
sql2 = sql.toString();
sql.delete(0, sql.length());
sql.append("SELECT sc.idServicoContrato,sc.idServico,sc.idContrato,sc.idCondicaoOperacao,sc.dataInicio,sc.dataFim,sc.observacao,");
sql.append("sc.custo,sc.restricoesPressup,sc.objetivo,sc.permiteSLANoCadInc,sc.linkProcesso,sc.descricaoProcesso,sc.tipoDescProcess,");
sql.append("sc.areaRequisitante,sc.idModeloEmailCriacao,sc.idModeloEmailFinalizacao,sc.idModeloEmailAcoes,sc.idGrupoNivel1,");
sql.append("sc.idGrupoExecutor,sc.idGrupoAprovador,sc.idCalendario,sc.permSLATempoACombinar,sc.permMudancaSLA,sc.permMudancaCalendario,sc.deleted, sc.expandir ");
sql.append(" FROM " + getTableName() + " sc INNER JOIN servico s ON sc.idServico = s.idServico ");
sql.append(" WHERE sc.idContrato = " + servicoContratoDTO.getIdContrato()
+ " AND ( upper(s.nomeservico) like '%" + campoPesquisa.toUpperCase()
+ "%' OR upper(s.siglaabrev) like '%" + campoPesquisa.toUpperCase() + "%')");
sql.append(" AND (sc.deleted is null or sc.deleted <> 'y') and IDSERVICOCONTRATO in ");
sql.append("(select IDSERVICOCONTRATO from (select table_.*, rownum rownum_ from (select count(*) over() as totalRowCount,");
sql.append(sql2.substring(6, sql2.length()));
sql.append(") table_ where rownum <= " + quantidadePaginator2
+ " ) as SERVICOCONTRATO where rownum_ > " + pagAtual + ")");
} else if (strSGBDPrincipal.equalsIgnoreCase("SQLSERVER")) {
Integer quantidadePaginator2 = new Integer(0);
quantidadePaginator2 = quantidadePaginator + pagAtual;
if (pagAtual != 1) {
pagAtual++;
}
sql2 = sql.toString();
sql.delete(0, sql.length());
sql.append("SELECT idServicoContrato,idServico,idContrato,idCondicaoOperacao,dataInicio,dataFim,observacao,");
sql.append("custo,restricoesPressup,objetivo,permiteSLANoCadInc,linkProcesso,descricaoProcesso,tipoDescProcess,");
sql.append("areaRequisitante,idModeloEmailCriacao,idModeloEmailFinalizacao,idModeloEmailAcoes,idGrupoNivel1,");
sql.append("idGrupoExecutor,idGrupoAprovador,idCalendario,permSLATempoACombinar,permMudancaSLA,permMudancaCalendario,deleted,expandir");
sql.append(" FROM" + "(select ROW_NUMBER() OVER( order by s.nomeservico) as rownum_, ");
sql.append(sql2.substring(6, sql2.length()) + ") as table_ where table_.rownum_ between " + pagAtual
+ " and " + quantidadePaginator2);
}
}
if (listaTotal != null) {
servicoContratoDTO.setTotalItens(listaTotal.size());
if (listaTotal.size() > quantidadePaginator) {
totalPag = listaTotal.size() / quantidadePaginator;
if (listaTotal.size() % quantidadePaginator != 0) {
totalPag = totalPag + 1;
}
} else {
totalPag = 1;
}
}
servicoContratoDTO.setTotalPagina(totalPag);
final List lista = execSQL(sql.toString(), null);
if (lista == null || lista.size() == 0) {
final TransactionControler tc = this.getTransactionControler();
if (tc != null) {
tc.close();
}
return null;
}
List result = new ArrayList();
if (lista == null || lista.size() == 0) {
final TransactionControler tc = this.getTransactionControler();
if (tc != null) {
tc.close();
}
return result;
}
final TransactionControler tc = this.getTransactionControler();
if (tc != null) {
tc.close();
}
final List listRetorno = this.getListNamesFieldClass();
result = engine.listConvertion(getBean(), lista, listRetorno);
return result;
}
/**
*
* @param idServicoContrato
* metodo para buscar por inner join informa��es sobre o servico pelo idServicoContrato para exibir no
* carrinho de servi�os(Portal)
* @return ServicoDTO
* @throws Exception
*/
public ServicoContratoDTO findByIdServicoContrato(final Integer idServico, final Integer idContrato)
throws PersistenceException {
final List parametro = new ArrayList();
final List fields = new ArrayList();
List list = new ArrayList();
final String sql = "select servicocontrato.idservicocontrato, valorservicocontrato.valorservico, servico.nomeservico, categoriaservico.nomecategoriaservico "
+ "from servicocontrato servicocontrato "
+ "left join valorservicocontrato valorservicocontrato on valorservicocontrato.idservicocontrato = servicocontrato.idservicocontrato "
+ "inner join servico servico on servicocontrato.idservico = servico.idservico "
+ "inner join categoriaservico categoriaservico on servico.idcategoriaservico = categoriaservico.idcategoriaservico "
+ "where valorservicocontrato.datafim is null "
+ "and servicocontrato.datafim is null and servicocontrato.idservico = ? and servicocontrato.idcontrato = ? "
+ "and (servico.deleted is null OR servico.deleted = 'n') "
+ "and (servicocontrato.deleted is null OR servicocontrato.deleted = 'n')";
parametro.add(idServico);
parametro.add(idContrato);
list = this.execSQL(sql, parametro.toArray());
fields.add("idServicoContrato");
fields.add("valorServico");
fields.add("nomeServico");
fields.add("nomeCategoriaServico");
if (list != null && !list.isEmpty()) {
return (ServicoContratoDTO) this.listConvertion(getBean(), list, fields).get(0);
} else {
return null;
}
}
public Collection<ServicoContratoDTO> findAtivosByIdGrupo(final Integer idGrupo) throws PersistenceException {
final List parametro = new ArrayList();
final List fields = new ArrayList();
List list = new ArrayList();
final String sql = "select servicocontrato.idservicocontrato "
+ "from servicocontrato servicocontrato "
+ "where (servicocontrato.idgruponivel1 = ? or servicocontrato.idgrupoexecutor = ? or servicocontrato.idgrupoaprovador = ?) "
+ "and servicocontrato.datafim is null";
parametro.add(idGrupo);
parametro.add(idGrupo);
parametro.add(idGrupo);
fields.add("idServicoContrato");
list = this.execSQL(sql, parametro.toArray());
if (list != null && !list.isEmpty()) {
return this.listConvertion(getBean(), list, fields);
} else {
return null;
}
}
/**
* @author euler.ramos
* @param idCalendario
* @return
* @throws Exception
*/
public ArrayList<ServicoContratoDTO> findByIdCalendario(final Integer idCalendario) throws PersistenceException {
final List condicao = new ArrayList();
final List ordenacao = new ArrayList();
condicao.add(new Condition("idCalendario", "=", idCalendario));
ordenacao.add(new Order("idServico"));
final ArrayList<ServicoContratoDTO> result = (ArrayList<ServicoContratoDTO>) super.findByCondition(condicao,
ordenacao);
return result == null ? new ArrayList<ServicoContratoDTO>() : result;
}
/**
* Verifica se existe Solicita��o aberta vinculado com servi�o que est� sendo exclu�do.
*
* @param idServico
* @return
* @throws Exception
* @author mario.haysaki
*/
public boolean verificaSeExisteSolicitacaoAbertaVinculadoComServico(final Integer idServico,
final Integer idContrato) throws PersistenceException {
final StringBuilder sql = new StringBuilder();
List list = new ArrayList();
final List parametros = new ArrayList();
sql.append("select COUNT(*) from solicitacaoservico sol ");
sql.append("inner join servicocontrato sc on sol.idservicocontrato = sc.idservicocontrato ");
sql.append("inner join execucaosolicitacao ex on sol.idsolicitacaoservico = ex.idsolicitacaoservico ");
sql.append("inner join bpm_instanciafluxo ins on ex.idinstanciafluxo = ins.idinstancia ");
sql.append("where sc.idServico = ? and sc.idContrato = ? and (ins.situacao <>'Encerrada' and sol.situacao<>'Fechada') ");
parametros.add(idServico);
parametros.add(idContrato);
list = this.execSQL(sql.toString(), parametros.toArray());
Long totalSolLong = 0l;
BigDecimal totalSolBigDecimal;
Integer totalSolInteger;
if (list != null) {
final Object[] totalSol = (Object[]) list.get(0);
if (totalSol != null && totalSol.length > 0) {
if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.POSTGRESQL)
|| CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.MYSQL)) {
totalSolLong = (Long) totalSol[0];
}
if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.ORACLE)) {
totalSolBigDecimal = (BigDecimal) totalSol[0];
totalSolLong = totalSolBigDecimal.longValue();
}
if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.SQLSERVER)) {
totalSolInteger = (Integer) totalSol[0];
totalSolLong = Long.valueOf(totalSolInteger);
}
}
}
return list != null && !list.isEmpty() && totalSolLong > 0;
}
/**
* Verifica se o servi�o est� vinculado com o Contrato
*
* @param idSolicitacaoServico
* @return
* @throws Exception
* @author mario.haysaki
*/
public boolean verificaServicoEstaVinculadoContrato(final Integer idSolicitacaoServico) throws PersistenceException {
final StringBuilder sql = new StringBuilder();
List list = new ArrayList();
final List parametros = new ArrayList();
sql.append("select COUNT(*) from servicocontrato sc ");
sql.append("inner join solicitacaoservico sol on sol.idservicocontrato = sc.idservicocontrato ");
sql.append("where (sc.datafim is null or sc.datafim >= '" + UtilDatas.getDataAtual()
+ "') and (sc.deleted ='n' or sc.deleted is null) and sol.idsolicitacaoservico = ? ");
parametros.add(idSolicitacaoServico);
list = this.execSQL(sql.toString(), parametros.toArray());
Long totalSolLong = 0l;
BigDecimal totalSolBigDecimal;
Integer totalSolInteger;
if (list != null) {
final Object[] totalSol = (Object[]) list.get(0);
if (totalSol != null && totalSol.length > 0) {
if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.POSTGRESQL)
|| CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.MYSQL)) {
totalSolLong = (Long) totalSol[0];
}
if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.ORACLE)) {
totalSolBigDecimal = (BigDecimal) totalSol[0];
totalSolLong = totalSolBigDecimal.longValue();
}
if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.SQLSERVER)) {
totalSolInteger = (Integer) totalSol[0];
totalSolLong = Long.valueOf(totalSolInteger);
}
}
}
return list != null && !list.isEmpty() && totalSolLong > 0;
}
public ServicoContratoDTO findByIdSolicitacaoServico(Integer idSolicitacaoServico) throws PersistenceException {
final StringBuilder query = new StringBuilder();
query.append("SELECT sc.idgruponivel1, sc.idgrupoexecutor FROM servicocontrato sc ");
query.append("INNER JOIN servico s ON s.idservico = sc.idservico ");
query.append("INNER JOIN solicitacaoservico ss ON ss.idservicocontrato = sc.idservicocontrato ");
query.append("WHERE ss.idsolicitacaoservico = ?");
List<String> fields = new ArrayList<String>();
List parametro = new ArrayList<>();
parametro.add(idSolicitacaoServico);
fields.add("idGrupoNivel1");
fields.add("idGrupoExecutor");
List list = this.execSQL(query.toString(), parametro.toArray());
if (list != null && !list.isEmpty()) {
return (ServicoContratoDTO) this.listConvertion(ServicoContratoDTO.class, list, fields).get(0);
} else {
return null;
}
}
}