package br.com.centralit.citcorpore.integracao;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import br.com.centralit.citcorpore.bean.ColetaPrecoDTO;
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 ColetaPrecoDao extends CrudDaoDefaultImpl {
public ColetaPrecoDao() {
super(Constantes.getValue("DATABASE_ALIAS"), null);
}
public Collection<Field> getFields() {
Collection<Field> listFields = new ArrayList<>();
listFields.add(new Field("idColetaPreco" ,"idColetaPreco", true, true, false, false));
listFields.add(new Field("idItemCotacao" ,"idItemCotacao", false, false, false, false));
listFields.add(new Field("idFornecedor" ,"idFornecedor", false, false, false, false));
listFields.add(new Field("idResponsavel" ,"idResponsavel", false, false, false, false));
listFields.add(new Field("especificacoes" ,"especificacoes", false, false, false, false));
listFields.add(new Field("dataColeta" ,"dataColeta", false, false, false, false));
listFields.add(new Field("dataValidade" ,"dataValidade", false, false, false, false));
listFields.add(new Field("preco" ,"preco", false, false, false, false));
listFields.add(new Field("valorAcrescimo" ,"valorAcrescimo", false, false, false, false));
listFields.add(new Field("valorDesconto" ,"valorDesconto", false, false, false, false));
listFields.add(new Field("valorFrete" ,"valorFrete", false, false, false, false));
listFields.add(new Field("quantidadeCotada" ,"quantidadeCotada", false, false, false, false));
listFields.add(new Field("prazoEntrega" ,"prazoEntrega", false, false, false, false));
listFields.add(new Field("prazoMedioPagto" ,"prazoMedioPagto", false, false, false, false));
listFields.add(new Field("taxaJuros" ,"taxaJuros", false, false, false, false));
listFields.add(new Field("prazoGarantia" ,"prazoGarantia", false, false, false, false));
listFields.add(new Field("pontuacao" ,"pontuacao", false, false, false, false));
listFields.add(new Field("resultadoCalculo" ,"resultadoCalculo", false, false, false, false));
listFields.add(new Field("resultadoFinal" ,"resultadoFinal", false, false, false, false));
listFields.add(new Field("quantidadeCalculo" ,"quantidadeCalculo", false, false, false, false));
listFields.add(new Field("quantidadeAprovada" ,"quantidadeAprovada", false, false, false, false));
listFields.add(new Field("quantidadeCompra" ,"quantidadeCompra", false, false, false, false));
listFields.add(new Field("quantidadePedido" ,"quantidadePedido", false, false, false, false));
listFields.add(new Field("idRespResultado" ,"idRespResultado", false, false, false, false));
listFields.add(new Field("idJustifResultado" ,"idJustifResultado", false, false, false, false));
listFields.add(new Field("complemJustifResultado" ,"complemJustifResultado", false, false, false, false));
return listFields;
}
public String getTableName() {
return this.getOwner() + "ColetaPreco";
}
public Collection list() throws PersistenceException {
return null;
}
public Class getBean() {
return ColetaPrecoDTO.class;
}
public Collection find(IDto arg0) throws PersistenceException {
return null;
}
public void excluiRelacionamentos(Collection<ColetaPrecoDTO> col) throws PersistenceException {
if (col == null)
return;
AvaliacaoColetaPrecoDao avaliacaoColetaDao = new AvaliacaoColetaPrecoDao();
avaliacaoColetaDao.setTransactionControler(this.getTransactionControler());
ItemPedidoCompraDao itemPedidoDao = new ItemPedidoCompraDao();
itemPedidoDao.setTransactionControler(this.getTransactionControler());
EntregaItemRequisicaoDao inspecaoEntregaDao = new EntregaItemRequisicaoDao();
inspecaoEntregaDao.setTransactionControler(this.getTransactionControler());
CotacaoItemRequisicaoDao cotacaoItemRequisicaoDao = new CotacaoItemRequisicaoDao();
cotacaoItemRequisicaoDao.setTransactionControler(this.getTransactionControler());
for (ColetaPrecoDTO coletaPrecoDto : col) {
avaliacaoColetaDao.deleteByIdColetaPreco(coletaPrecoDto.getIdColetaPreco());
itemPedidoDao.deleteByIdColetaPreco(coletaPrecoDto.getIdColetaPreco());
inspecaoEntregaDao.deleteByIdColetaPreco(coletaPrecoDto.getIdColetaPreco());
cotacaoItemRequisicaoDao.deleteByIdColetaPreco(coletaPrecoDto.getIdColetaPreco());
}
}
public Collection findByIdItemCotacao(Integer parm) throws PersistenceException {
List condicao = new ArrayList();
List ordenacao = new ArrayList();
condicao.add(new Condition("idItemCotacao", "=", parm));
ordenacao.add(new Order("idColetaPreco"));
return super.findByCondition(condicao, ordenacao);
}
public Collection findByIdItemCotacaoAndPontuacao(Integer idItemCotacao, Double pontuacao) throws PersistenceException {
List condicao = new ArrayList();
List ordenacao = new ArrayList();
condicao.add(new Condition("idItemCotacao", "=", idItemCotacao));
condicao.add(new Condition("pontuacao", "=", pontuacao));
ordenacao.add(new Order("idColetaPreco"));
return super.findByCondition(condicao, ordenacao);
}
public void deleteByIdItemCotacao(Integer parm) throws PersistenceException {
Collection<ColetaPrecoDTO> col = findByIdItemCotacao(parm);
excluiRelacionamentos(col);
List condicao = new ArrayList();
condicao.add(new Condition("idItemCotacao", "=", parm));
super.deleteByCondition(condicao);
}
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("idColetaPreco"));
return super.findByCondition(condicao, ordenacao);
}
public Collection findByIdFornecedor(Integer parm) throws PersistenceException {
List parametro = new ArrayList();
StringBuilder sql = getSQLRestoreAll();
sql.append(" WHERE cp.idFornecedor = ? ");
parametro.add(parm);
sql.append("ORDER BY ic.descricaoItem");
List lista = new ArrayList();
lista = this.execSQL(sql.toString(), parametro.toArray());
return this.engine.listConvertion(getBean(), lista, getColunasRestoreAll());
}
public Collection findByIdCotacaoAndIdFornecedor(Integer idCotacao, Integer idFornecedor) throws PersistenceException {
List parametro = new ArrayList();
StringBuilder sql = getSQLRestoreAll();
sql.append(" WHERE ic.idCotacao = ? AND cp.idFornecedor = ? ");
parametro.add(idCotacao);
parametro.add(idFornecedor);
sql.append("ORDER BY ic.descricaoItem");
List lista = new ArrayList();
lista = this.execSQL(sql.toString(), parametro.toArray());
return this.engine.listConvertion(getBean(), lista, getColunasRestoreAll());
}
public void deleteByIdFornecedor(Integer parm) throws PersistenceException {
Collection<ColetaPrecoDTO> col = findByIdFornecedor(parm);
excluiRelacionamentos(col);
List condicao = new ArrayList();
condicao.add(new Condition("idFornecedor", "=", parm));
super.deleteByCondition(condicao);
}
public Collection<ColetaPrecoDTO> findByIdItemCotacaoAndIdFornecedor(Integer idFornecedor, Integer idItemCotacao) throws PersistenceException {
List condicao = new ArrayList();
List ordenacao = new ArrayList();
condicao.add(new Condition("idFornecedor", "=", idFornecedor));
condicao.add(new Condition("idItemCotacao", "=", idItemCotacao));
ordenacao.add(new Order("idColetaPreco"));
return super.findByCondition(condicao, ordenacao);
}
public void deleteByIdItemCotacaoAndIdFornecedor(Integer idFornecedor, Integer idItemCotacao) throws PersistenceException {
Collection<ColetaPrecoDTO> col = findByIdItemCotacaoAndIdFornecedor(idFornecedor,idItemCotacao);
excluiRelacionamentos(col);
List condicao = new ArrayList();
condicao.add(new Condition("idFornecedor", "=", idFornecedor));
condicao.add(new Condition("idItemCotacao", "=", idItemCotacao));
super.deleteByCondition(condicao);
}
private StringBuilder getSQLRestoreAll() {
StringBuilder sql = new StringBuilder();
sql.append("SELECT ic.idCotacao, cp.idColetaPreco, cp.idItemCotacao, cp.idFornecedor, ");
sql.append(" cp.idResponsavel, cp.dataColeta, cp.dataValidade, cp.preco, cp.valorDesconto, cp.valorAcrescimo, ");
sql.append(" cp.valorFrete, cp.prazoEntrega, cp.prazoMedioPagto, cp.taxaJuros, cp.prazoGarantia, cp.especificacoes, cp.quantidadeCotada, ");
sql.append(" cp.pontuacao, cp.resultadoCalculo, cp.quantidadeCalculo, cp.resultadoFinal, cp.quantidadeCompra, cp.quantidadeAprovada, cp.quantidadePedido, ");
sql.append(" cp.idRespResultado, cp.idJustifResultado, cp.complemJustifResultado, ic.idProduto, p.codigoProduto, ic.descricaoItem, ic.quantidade, f.cnpj, f.nomeFantasia ");
sql.append(" FROM coletapreco cp ");
sql.append(" INNER JOIN itemcotacao ic ON ic.iditemcotacao = cp.iditemcotacao ");
sql.append(" INNER JOIN fornecedor f ON f.idfornecedor = cp.idfornecedor ");
sql.append(" LEFT JOIN produto p ON p.idProduto = ic.idProduto ");
return sql;
}
private List getColunasRestoreAll() {
List listRetorno = new ArrayList();
listRetorno.add("idCotacao");
listRetorno.add("idColetaPreco");
listRetorno.add("idItemCotacao");
listRetorno.add("idFornecedor");
listRetorno.add("idResponsavel");
listRetorno.add("dataColeta");
listRetorno.add("dataValidade");
listRetorno.add("preco");
listRetorno.add("valorDesconto");
listRetorno.add("valorAcrescimo");
listRetorno.add("valorFrete");
listRetorno.add("prazoEntrega");
listRetorno.add("prazoMedioPagto");
listRetorno.add("taxaJuros");
listRetorno.add("prazoGarantia");
listRetorno.add("especificacoes");
listRetorno.add("quantidadeCotada");
listRetorno.add("pontuacao");
listRetorno.add("resultadoCalculo");
listRetorno.add("quantidadeCalculo");
listRetorno.add("resultadoFinal");
listRetorno.add("quantidadeCompra");
listRetorno.add("quantidadeAprovada");
listRetorno.add("quantidadePedido");
listRetorno.add("idRespResultado");
listRetorno.add("idJustifResultado");
listRetorno.add("complemJustifResultado");
listRetorno.add("idProduto");
listRetorno.add("codigoProduto");
listRetorno.add("descricaoItem");
listRetorno.add("quantidade");
listRetorno.add("cpfCnpjFornecedor");
listRetorno.add("nomeFornecedor");
return listRetorno;
}
public Collection findByIdCotacao(Integer parm) throws PersistenceException {
List parametro = new ArrayList();
StringBuilder sql = getSQLRestoreAll();
sql.append(" WHERE ic.idCotacao = ? ");
parametro.add(parm);
sql.append("ORDER BY cp.idColetaPreco");
List lista = new ArrayList();
lista = this.execSQL(sql.toString(), parametro.toArray());
return this.engine.listConvertion(getBean(), lista, getColunasRestoreAll());
}
public Collection findHabilitadasByIdCotacao(Integer parm) throws PersistenceException {
List parametro = new ArrayList();
StringBuilder sql = getSQLRestoreAll();
sql.append(" WHERE cp.resultadoFinal = 'M' ");
sql.append(" AND cp.quantidadeCompra > 0 ");
sql.append(" AND ic.idCotacao = ? ");
parametro.add(parm);
sql.append("ORDER BY cp.idColetaPreco");
List lista = new ArrayList();
lista = this.execSQL(sql.toString(), parametro.toArray());
return this.engine.listConvertion(getBean(), lista, getColunasRestoreAll());
}
public Collection findHabilitadasByIdItemCotacao(Integer parm) throws PersistenceException {
List parametro = new ArrayList();
StringBuilder sql = getSQLRestoreAll();
sql.append(" WHERE cp.resultadoFinal = 'M' ");
sql.append(" AND cp.quantidadeCompra > 0 ");
sql.append(" AND ic.idItemCotacao = ? ");
parametro.add(parm);
sql.append("ORDER BY cp.idColetaPreco");
List lista = new ArrayList();
lista = this.execSQL(sql.toString(), parametro.toArray());
return this.engine.listConvertion(getBean(), lista, getColunasRestoreAll());
}
public Collection findResultadoByIdItemCotacao(Integer idItemCotacao) throws PersistenceException {
List parametro = new ArrayList();
StringBuilder sql = getSQLRestoreAll();
sql.append(" WHERE ic.idItemCotacao = ? ");
parametro.add(idItemCotacao);
sql.append("ORDER BY cp.pontuacao desc, cp.resultadoFinal desc, cp.quantidadeCompra desc, cp.idColetaPreco");
List lista = new ArrayList();
lista = this.execSQL(sql.toString(), parametro.toArray());
return this.engine.listConvertion(getBean(), lista, getColunasRestoreAll());
}
public void atualizaResultadoCalculo(ColetaPrecoDTO coletaPrecoDto) throws PersistenceException {
StringBuilder sql = new StringBuilder();
sql.append("UPDATE " + getTableName() + " SET pontuacao = ?, quantidadeCalculo = ?, resultadoCalculo = ? WHERE (idColetaPreco = ?)");
Object[] params = {coletaPrecoDto.getPontuacao(), coletaPrecoDto.getQuantidadeCalculo(), coletaPrecoDto.getResultadoCalculo(), coletaPrecoDto.getIdColetaPreco() };
try {
this.execUpdate(sql.toString(), params);
} catch (PersistenceException e) {
System.out.println("Problemas com atualiza��o da pontua��o da coleta de pre�os.");
e.printStackTrace();
}
}
public void atualizaResultadoFinal(ColetaPrecoDTO coletaPrecoDto) throws PersistenceException {
StringBuilder sql = new StringBuilder();
sql.append("UPDATE " + getTableName() + " SET quantidadeCompra = ?, " +
"resultadoFinal = ?, idRespResultado = ?, idJustifResultado = ?, complemJustifResultado = ? WHERE (idColetaPreco = ?)");
Object[] params = {coletaPrecoDto.getQuantidadeCompra(), coletaPrecoDto.getResultadoFinal(),
coletaPrecoDto.getIdRespResultado(), coletaPrecoDto.getIdJustifResultado(),
coletaPrecoDto.getComplemJustifResultado(), coletaPrecoDto.getIdColetaPreco() };
try {
this.execUpdate(sql.toString(), params);
} catch (PersistenceException e) {
System.out.println("Problemas com atualiza��o da pontua��o da coleta de pre�os.");
e.printStackTrace();
}
}
@Override
public IDto restore(IDto obj) throws PersistenceException {
List parametro = new ArrayList();
StringBuilder sql = getSQLRestoreAll();
sql.append(" WHERE cp.idColetaPreco = ? ");
parametro.add(((ColetaPrecoDTO) obj).getIdColetaPreco());
List lista = new ArrayList();
lista = this.execSQL(sql.toString(), parametro.toArray());
List<ColetaPrecoDTO> result = this.engine.listConvertion(getBean(), lista, getColunasRestoreAll());
if (result != null && !result.isEmpty())
return result.get(0);
else
return null;
}
@Override
public void delete(IDto obj) throws PersistenceException {
Collection col = new ArrayList();
col.add(obj);
excluiRelacionamentos(col);
super.delete(obj);
}
}