package br.com.centralit.citcorpore.integracao; import java.util.ArrayList; import java.util.Collection; import java.util.List; import br.com.centralit.citcorpore.bean.AprovacaoMudancaDTO; import br.com.centralit.citcorpore.bean.AprovacaoPropostaDTO; 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.util.Constantes; @SuppressWarnings({ "unchecked", "rawtypes" }) public class AprovacaoMudancaDao extends CrudDaoDefaultImpl { public AprovacaoMudancaDao() { super(Constantes.getValue("DATABASE_ALIAS"), null); } @Override public Collection find(IDto obj) throws PersistenceException { return null; } private static final String SQL_DELETE_BY_ID_MUDANCA = "delete from APROVACAOMUDANCA where idRequisicaoMudanca = ? and idhistoricomudanca is null "; @Override public Collection<Field> getFields() { Collection<Field> listFields = new ArrayList<>(); listFields.add(new Field("idAprovacaoMudanca", "idAprovacaoMudanca", true, true, false, false)); listFields.add(new Field("idRequisicaoMudanca", "idRequisicaoMudanca", false, false, false, false)); listFields.add(new Field("idEmpregado", "idEmpregado", false, false, false, false)); listFields.add(new Field("nomeEmpregado", "nomeEmpregado", false, false, false, false)); listFields.add(new Field("voto", "voto", false, false, false, false)); listFields.add(new Field("comentario", "comentario", false, false, false, false)); listFields.add(new Field("datahorainicio", "dataHoraInicio", false, false, false, false)); listFields.add(new Field("datahoravotacao", "datahoravotacao", false, false, false, false)); listFields.add(new Field("idhistoricomudanca", "idHistoricoMudanca", false, false, false, false)); return listFields; } @Override public String getTableName() { return "APROVACAOMUDANCA"; } @Override public Collection list() throws PersistenceException { return null; } @Override public Class getBean() { return AprovacaoMudancaDTO.class; } public Collection<AprovacaoMudancaDTO> listaAprovacaoMudancaPorIdRequisicaoMudanca(Integer idRequisicaoMudanca,Integer idGrupo, Integer idEmpregado) throws PersistenceException { List parametro = new ArrayList(); StringBuilder sql = new StringBuilder(); sql.append("SELECT distinct (aprovacaomudanca.idempregado), aprovacaomudanca.comentario, aprovacaomudanca.voto, aprovacaomudanca.idrequisicaomudanca,aprovacaomudanca.idaprovacaomudanca,empregados.nome,aprovacaomudanca.datahorainicio, aprovacaomudanca.datahoravotacao "); sql.append("FROM " + getTableName() + " "); sql.append("inner join gruposempregados on gruposempregados.idempregado = aprovacaomudanca.idempregado "); sql.append("inner join empregados on empregados.idempregado = aprovacaomudanca.idempregado "); sql.append(" WHERE aprovacaomudanca.idrequisicaomudanca = ? and idhistoricomudanca is null "); parametro.add(idRequisicaoMudanca); /*if(idGrupo!=null){ sql.append("and gruposempregados.idgrupo = ?"); parametro.add(idGrupo); }*/ //parametro.add(idEmpregado); List lista = this.execSQL(sql.toString(), parametro.toArray()); List listRetorno = new ArrayList(); listRetorno.add("idEmpregado"); listRetorno.add("comentario"); listRetorno.add("voto"); listRetorno.add("idRequisicaoMudanca"); listRetorno.add("idAprovacaoMudanca"); listRetorno.add("nomeEmpregado"); listRetorno.add("dataHoraInicio"); listRetorno.add("dataHoraVotacao"); if (lista != null && !lista.isEmpty()) { return this.engine.listConvertion(getBean(), lista, listRetorno); } else { return null; } } public Collection<AprovacaoMudancaDTO> listByIdHistoricoMudanca(Integer idHistoricoMudanca) throws PersistenceException { List parametro = new ArrayList(); StringBuilder sql = new StringBuilder(); sql.append("SELECT distinct (aprovacaomudanca.idempregado), aprovacaomudanca.comentario, aprovacaomudanca.voto, aprovacaomudanca.idrequisicaomudanca,aprovacaomudanca.idaprovacaomudanca,empregados.nome,aprovacaomudanca.datahorainicio, aprovacaomudanca.datahoravotacao "); sql.append("FROM " + getTableName() + " "); sql.append("inner join gruposempregados on gruposempregados.idempregado = aprovacaomudanca.idempregado "); sql.append("inner join empregados on empregados.idempregado = aprovacaomudanca.idempregado "); sql.append(" WHERE aprovacaomudanca.idhistoricomudanca = ? "); parametro.add(idHistoricoMudanca); /*if(idGrupo!=null){ sql.append("and gruposempregados.idgrupo = ?"); parametro.add(idGrupo); }*/ //parametro.add(idEmpregado); List lista = this.execSQL(sql.toString(), parametro.toArray()); List listRetorno = new ArrayList(); listRetorno.add("idEmpregado"); listRetorno.add("comentario"); listRetorno.add("voto"); listRetorno.add("idRequisicaoMudanca"); listRetorno.add("idAprovacaoMudanca"); listRetorno.add("nomeEmpregado"); listRetorno.add("dataHoraInicio"); listRetorno.add("dataHoraVotacao"); if (lista != null && !lista.isEmpty()) { return this.engine.listConvertion(getBean(), lista, listRetorno); } else { return null; } } public Collection<AprovacaoMudancaDTO> listaAprovacaoMudancaPorIdRequisicaoMudancaEHistorico(Integer idRequisicaoMudanca,Integer idGrupo, Integer idEmpregado) throws PersistenceException { List parametro = new ArrayList(); StringBuilder sql = new StringBuilder(); sql.append("SELECT distinct (aprovacaomudanca.idempregado), aprovacaomudanca.comentario, aprovacaomudanca.voto, aprovacaomudanca.idrequisicaomudanca,aprovacaomudanca.idaprovacaomudanca,empregados.nome,aprovacaomudanca.datahorainicio, aprovacaomudanca.datahoravotacao "); sql.append("FROM " + getTableName() + " "); sql.append("inner join gruposempregados on gruposempregados.idempregado = aprovacaomudanca.idempregado "); sql.append("inner join empregados on empregados.idempregado = aprovacaomudanca.idempregado "); sql.append(" WHERE aprovacaomudanca.idrequisicaomudanca = ? and idhistoricomudanca is null "); parametro.add(idRequisicaoMudanca); /*if(idGrupo!=null){ sql.append("and gruposempregados.idgrupo = ?"); parametro.add(idGrupo); }*/ //parametro.add(idEmpregado); List lista = this.execSQL(sql.toString(), parametro.toArray()); List listRetorno = new ArrayList(); listRetorno.add("idEmpregado"); listRetorno.add("comentario"); listRetorno.add("voto"); listRetorno.add("idRequisicaoMudanca"); listRetorno.add("idAprovacaoMudanca"); listRetorno.add("nomeEmpregado"); listRetorno.add("dataHoraInicio"); listRetorno.add("dataHoraVotacao"); if (lista != null && !lista.isEmpty()) { return this.engine.listConvertion(getBean(), lista, listRetorno); } else { return null; } } public void deleteByIdRequisicaoMudanca(Integer idRequisicaoMudanca) throws PersistenceException { /*List lstCondicao = new ArrayList(); lstCondicao.add(new Condition("idRequisicaoMudanca", "=", idRequisicaoMudanca)); super.deleteByCondition(lstCondicao);*/ super.execUpdate(SQL_DELETE_BY_ID_MUDANCA, new Object[]{idRequisicaoMudanca}); } public void updateByIdRequisicaoMudanca(AprovacaoMudancaDTO aprovacaoMudancaDto) throws PersistenceException { super.updateNotNull(aprovacaoMudancaDto); } public void deleteLinha(Integer idRequisicaoMudanca, Integer idEmpregado) throws PersistenceException { // List parametro = new ArrayList(); // parametro.add(idRequisicaoMudanca); // String sql = "DELETE FROM aprovacaomudanca where (datahoravotacao = 'Ainda n�o votou.' and idrequisicaomudanca = ?)"; // this.execSQL(sql.toString(), parametro.toArray()); List lstCondicao = new ArrayList(); lstCondicao.add(new Condition("idRequisicaoMudanca", "=", idRequisicaoMudanca)); lstCondicao.add(new Condition("idEmpregado", "=", idEmpregado)); lstCondicao.add(new Condition("idHistoricoMudanca", "is", null)); super.deleteByCondition(lstCondicao); } public Integer quantidadeAprovacaoMudancaPorVotoAprovada(AprovacaoMudancaDTO aprovacao,Integer idGrupo) throws PersistenceException { List listRetorno = new ArrayList(); List parametro = new ArrayList(); StringBuilder sql = new StringBuilder(); sql.append("select count(voto) from aprovacaomudanca "); /*if(idGrupo !=null){ sql.append("inner join gruposempregados on gruposempregados.idempregado = aprovacaomudanca.idempregado "); }*/ sql.append(" where idrequisicaomudanca = ? and voto = ? and idhistoricomudanca is null"); parametro.add(aprovacao.getIdRequisicaoMudanca()); parametro.add(aprovacao.getVoto()); /*if(idGrupo !=null){ sql.append("and gruposempregados.idgrupo = ?"); parametro.add(idGrupo); }*/ List list = this.execSQL(sql.toString(), parametro.toArray()); listRetorno.add("quantidadeVotoAprovada"); if (list != null && !list.isEmpty()) { AprovacaoMudancaDTO aprovacaoMudancaDto = (AprovacaoMudancaDTO) this.engine.listConvertion(AprovacaoMudancaDTO.class, list, listRetorno).get(0); return aprovacaoMudancaDto.getQuantidadeVotoAprovada(); //return list.size(); } else { return new Integer(0); } } public Integer quantidadeAprovacaoMudancaPorVotoRejeitada(AprovacaoMudancaDTO aprovacao,Integer idGrupo) throws PersistenceException { List listRetorno = new ArrayList(); List parametro = new ArrayList(); StringBuilder sql = new StringBuilder(); sql.append("select count(voto) from aprovacaomudanca "); /*if(idGrupo !=null){ sql.append("inner join gruposempregados on gruposempregados.idempregado = aprovacaomudanca.idempregado "); }*/ sql.append(" where idrequisicaomudanca = ? and voto = ? and idhistoricomudanca is null"); parametro.add(aprovacao.getIdRequisicaoMudanca()); parametro.add(aprovacao.getVoto()); /*if(idGrupo !=null){ sql.append("and gruposempregados.idgrupo = ?"); parametro.add(idGrupo); }*/ List list = this.execSQL(sql.toString(), parametro.toArray()); listRetorno.add("quantidadeVotoRejeitada"); if (list != null && !list.isEmpty()) { AprovacaoMudancaDTO aprovacaoMudancaDto = (AprovacaoMudancaDTO) this.engine.listConvertion(AprovacaoMudancaDTO.class, list, listRetorno).get(0); return aprovacaoMudancaDto.getQuantidadeVotoRejeitada(); } else { return new Integer(0); } } public Integer quantidadeAprovacaoMudanca(AprovacaoMudancaDTO aprovacao, Integer idGrupo) throws PersistenceException { List listRetorno = new ArrayList(); List parametro = new ArrayList(); StringBuilder sql = new StringBuilder(); sql.append("select count(aprovacaomudanca.idempregado) from aprovacaomudanca "); /*if(idGrupo !=null){ sql.append("inner join gruposempregados on gruposempregados.idempregado = aprovacaomudanca.idempregado "); }*/ sql.append(" where idrequisicaomudanca = ? and idhistoricomudanca is null "); parametro.add(aprovacao.getIdRequisicaoMudanca()); /*if(idGrupo !=null){ sql.append("and gruposempregados.idgrupo = ?"); parametro.add(idGrupo); }*/ List list = this.execSQL(sql.toString(), parametro.toArray()); listRetorno.add("quantidadeAprovacaoMudanca"); if (list != null && !list.isEmpty()) { AprovacaoMudancaDTO aprovacaoMudancaDto = (AprovacaoMudancaDTO) this.engine.listConvertion(AprovacaoMudancaDTO.class, list, listRetorno).get(0); return aprovacaoMudancaDto.getQuantidadeAprovacaoMudanca(); } else { return new Integer(0); } } public Boolean validacaoAprovacaoMudanca(Integer idRequisicaoMudanca) throws PersistenceException { List parametro = new ArrayList(); StringBuilder sql = new StringBuilder(); sql.append("select idrequisicaomudanca from aprovacaomudanca where idrequisicaomudanca = ?"); parametro.add(idRequisicaoMudanca); List list = this.execSQL(sql.toString(), parametro.toArray()); if (list != null && !list.isEmpty()) { return true; } else { return false; } } public Integer quantidadeDeEmpregdosPorGrupo(Integer idGrupo) throws PersistenceException { List listRetorno = new ArrayList(); List parametro = new ArrayList(); StringBuilder sql = new StringBuilder(); sql.append("select count(idgrupo) from gruposempregados "); sql.append("where gruposempregados.idgrupo = ?"); parametro.add(idGrupo); List list = this.execSQL(sql.toString(), parametro.toArray()); listRetorno.add("quantidadeAprovacaoProposta"); if (list != null && !list.isEmpty()) { AprovacaoPropostaDTO aprovacaopropostaDto = (AprovacaoPropostaDTO) this.engine.listConvertion(AprovacaoPropostaDTO.class, list, listRetorno).get(0); return aprovacaopropostaDto.getQuantidadeAprovacaoProposta(); } else { return new Integer(0); } } }