package br.com.centralit.citcorpore.integracao; import java.util.ArrayList; import java.util.Collection; import java.util.List; import br.com.centralit.citcorpore.bean.EntregaItemRequisicaoDTO; import br.com.centralit.citcorpore.util.Enumerados.SituacaoEntregaItemRequisicao; 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; public class EntregaItemRequisicaoDao extends CrudDaoDefaultImpl { public EntregaItemRequisicaoDao() { super(Constantes.getValue("DATABASE_ALIAS"), null); } public Collection<Field> getFields() { Collection<Field> listFields = new ArrayList<>(); listFields.add(new Field("idEntrega" ,"idEntrega", true, true, false, false)); listFields.add(new Field("idPedido" ,"idPedido", false, false, false, false)); listFields.add(new Field("idColetaPreco" ,"idColetaPreco", false, false, false, false)); listFields.add(new Field("idItemRequisicaoProduto" ,"idItemRequisicaoProduto", false, false, 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("idParecer" ,"idParecer", false, false, false, false)); listFields.add(new Field("quantidadeEntregue" ,"quantidadeEntregue", false, false, false, false)); listFields.add(new Field("situacao" ,"situacao", false, false, false, false)); return listFields; } public String getTableName() { return this.getOwner() + "EntregaItemRequisicao"; } public Collection list() throws PersistenceException { return null; } public Class getBean() { return EntregaItemRequisicaoDTO.class; } public Collection find(IDto arg0) throws PersistenceException { return null; } public Collection findDisponiveisInspecaoByIdSolicitacaoServico(Integer idSolicitacaoServico) throws PersistenceException { List condicao = new ArrayList(); List ordenacao = new ArrayList(); condicao.add(new Condition("idSolicitacaoServico", "=", idSolicitacaoServico)); condicao.add(new Condition("situacao", "=", SituacaoEntregaItemRequisicao.Aguarda.name())); condicao.add(new Condition("idItemTrabalho", "IS", null)); ordenacao.add(new Order("idItemRequisicaoProduto")); return super.findByCondition(condicao, ordenacao); } public Collection findInspecaoByIdSolicitacaoServico(Integer idSolicitacaoServico) throws PersistenceException { List condicao = new ArrayList(); List ordenacao = new ArrayList(); condicao.add(new Condition("idSolicitacaoServico", "=", idSolicitacaoServico)); condicao.add(new Condition("situacao", "=", SituacaoEntregaItemRequisicao.Aguarda.name())); condicao.add(new Condition("idItemTrabalho", "IS NOT", null)); ordenacao.add(new Order("idItemRequisicaoProduto")); return super.findByCondition(condicao, ordenacao); } public Collection findByIdPedido(Integer parm) throws PersistenceException { List condicao = new ArrayList(); List ordenacao = new ArrayList(); condicao.add(new Condition("idPedido", "=", parm)); ordenacao.add(new Order("idEntrega")); return super.findByCondition(condicao, ordenacao); } public Collection findByIdSolicitacaoServico(Integer parm) throws PersistenceException { List condicao = new ArrayList(); List ordenacao = new ArrayList(); condicao.add(new Condition("idSolicitacaoServico", "=", parm)); ordenacao.add(new Order("idEntrega")); return super.findByCondition(condicao, ordenacao); } public void excluiRelacionamentos(Collection<EntregaItemRequisicaoDTO> col) throws PersistenceException { if (col == null) return; InspecaoEntregaItemDao inspecaoEntregaDao = new InspecaoEntregaItemDao(); inspecaoEntregaDao.setTransactionControler(this.getTransactionControler()); for (EntregaItemRequisicaoDTO entregaDto : col) { inspecaoEntregaDao.deleteByIdEntrega(entregaDto.getIdEntrega()); } } public void deleteByIdPedido(Integer parm) throws PersistenceException { Collection col = findByIdPedido(parm); excluiRelacionamentos(col); List condicao = new ArrayList(); condicao.add(new Condition("idPedido", "=", parm)); super.deleteByCondition(condicao); } public Collection findByIdColetaPreco(Integer parm) throws PersistenceException { List condicao = new ArrayList(); List ordenacao = new ArrayList(); condicao.add(new Condition("idColetaPreco", "=", parm)); ordenacao.add(new Order("idEntrega")); return super.findByCondition(condicao, ordenacao); } public void deleteByIdColetaPreco(Integer parm) throws PersistenceException { Collection col = findByIdColetaPreco(parm); excluiRelacionamentos(col); List condicao = new ArrayList(); condicao.add(new Condition("idColetaPreco", "=", parm)); super.deleteByCondition(condicao); } public Collection findByIdItemRequisicaoProduto(Integer parm) throws PersistenceException { List condicao = new ArrayList(); List ordenacao = new ArrayList(); condicao.add(new Condition("idItemRequisicaoProduto", "=", parm)); ordenacao.add(new Order("idEntrega")); return super.findByCondition(condicao, ordenacao); } public void deleteByIdItemRequisicaoProduto(Integer parm) throws PersistenceException { Collection col = findByIdItemRequisicaoProduto(parm); excluiRelacionamentos(col); List condicao = new ArrayList(); condicao.add(new Condition("idItemRequisicaoProduto", "=", parm)); super.deleteByCondition(condicao); } public Collection findByIdItemRequisicaoAndIdColetaPreco(Integer idItemRequisicaoProduto, Integer idColetaPreco) throws PersistenceException { List condicao = new ArrayList(); List ordenacao = new ArrayList(); condicao.add(new Condition("idItemRequisicaoProduto", "=", idItemRequisicaoProduto)); condicao.add(new Condition("idColetaPreco", "=", idColetaPreco)); ordenacao.add(new Order("idEntrega")); return super.findByCondition(condicao, ordenacao); } public void deleteByIdItemRequisicaoAndIdColetaPreco(Integer idItemRequisicaoProduto, Integer idColetaPreco) throws PersistenceException { Collection col = findByIdItemRequisicaoAndIdColetaPreco(idItemRequisicaoProduto, idColetaPreco); excluiRelacionamentos(col); List condicao = new ArrayList(); condicao.add(new Condition("idItemRequisicaoProduto", "=", idItemRequisicaoProduto)); condicao.add(new Condition("idColetaPreco", "=", idColetaPreco)); super.deleteByCondition(condicao); } private StringBuilder getSQLRestoreAll() { StringBuilder sql = new StringBuilder(); sql.append("SELECT ei.idEntrega, ei.idColetaPreco, ei.idItemRequisicaoProduto, ei.idItemTrabalho, ei.idSolicitacaoServico, ei.quantidadeEntregue, "); sql.append(" ei.situacao, ei.idParecer, ped.numeroPedido, ped.dataEntrega, item.descricaoItem, forn.cnpj, forn.nomeFantasia, forn.tipoPessoa "); sql.append(" FROM entregaitemrequisicao ei "); sql.append(" INNER JOIN itemrequisicaoproduto item ON item.idItemRequisicaoProduto = ei.idItemRequisicaoProduto "); sql.append(" INNER JOIN coletapreco cp ON cp.idColetaPreco = ei.idColetaPreco "); sql.append(" INNER JOIN pedidocompra ped ON ped.idPedido = ei.idPedido "); sql.append(" INNER JOIN fornecedor forn ON forn.idfornecedor = cp.idfornecedor "); return sql; } private List getColunasRestoreAll() { List listRetorno = new ArrayList(); listRetorno.add("idEntrega"); listRetorno.add("idColetaPreco"); listRetorno.add("idItemRequisicaoProduto"); listRetorno.add("idItemTrabalho"); listRetorno.add("idSolicitacaoServico"); listRetorno.add("quantidadeEntregue"); listRetorno.add("situacao"); listRetorno.add("idParecer"); listRetorno.add("numeroPedido"); listRetorno.add("dataEntrega"); listRetorno.add("descricaoItem"); listRetorno.add("cpfCnpjFornecedor"); listRetorno.add("nomeFornecedor"); listRetorno.add("tipoFornecedor"); return listRetorno; } public Collection findByIdItemTrabalho(Integer parm) throws PersistenceException { List parametro = new ArrayList(); StringBuilder sql = getSQLRestoreAll(); sql.append(" WHERE ei.idItemTrabalho = ? "); parametro.add(parm); sql.append("ORDER BY item.descricaoItem"); List lista = new ArrayList(); lista = this.execSQL(sql.toString(), parametro.toArray()); return this.engine.listConvertion(getBean(), lista, getColunasRestoreAll()); } public Collection<EntregaItemRequisicaoDTO> findNaoAprovadasByIdSolicitacaoServico(Integer idSolicitacaoServico) throws PersistenceException { List parametro = new ArrayList(); StringBuilder sql = getSQLRestoreAll(); sql.append(" WHERE ei.idSolicitacaoServico = ? "); sql.append(" AND ei.situacao = ? "); parametro.add(idSolicitacaoServico); parametro.add(SituacaoEntregaItemRequisicao.NaoAprovada.name()); sql.append("ORDER BY item.descricaoItem"); List lista = new ArrayList(); lista = this.execSQL(sql.toString(), parametro.toArray()); return this.engine.listConvertion(getBean(), lista, getColunasRestoreAll()); } public Collection<EntregaItemRequisicaoDTO> findNaoAprovadasEDisponiveisByIdSolicitacaoServico(Integer idSolicitacaoServico) throws PersistenceException { List condicao = new ArrayList(); List ordenacao = new ArrayList(); condicao.add(new Condition("idSolicitacaoServico", "=", idSolicitacaoServico)); condicao.add(new Condition("situacao", "=", SituacaoEntregaItemRequisicao.NaoAprovada.name())); condicao.add(new Condition("idItemTrabalho", "IS", null)); ordenacao.add(new Order("idItemRequisicaoProduto")); return super.findByCondition(condicao, ordenacao); } @Override public void updateNotNull(IDto obj) throws PersistenceException { super.updateNotNull(obj); } }