Package labsis.logistica.dao

Source Code of labsis.logistica.dao.DaoPedidoCompra

package labsis.logistica.dao;

import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map.Entry;

import labsis.DataBase;
import labsis.logistica.model.Cotacao;
import labsis.logistica.model.PedidoCompra;
import labsis.logistica.model.Produto;

public class DaoPedidoCompra {
 
  private Connection conn;
 
  public DaoPedidoCompra() throws SQLException {
    DataBase db = DataBase.getDb();
    conn = db.getConnection();
  }
 
  private String getStatusName(int id) throws SQLException {
    PreparedStatement ps = conn.prepareStatement("select nome from statuspedido where id = ?");
    ps.setInt(1, id);
    ResultSet rs = ps.executeQuery();
    if(rs.next()) return rs.getString(1);
    return null;
  }
 
  public String nomeFornecedor(String cnpj) throws SQLException {
    PreparedStatement ps = conn.prepareStatement("select nome from Fornecedor where cnpj = ?");
    ps.setString(1, cnpj);
 
    ResultSet rs = ps.executeQuery();
    if(rs.next()) return rs.getString(1);
    return null;
  }
 
  private void updateValorTotal(int id, float vt) throws SQLException {
    PreparedStatement ps = conn.prepareStatement("update PedidoCompra set valorTotal = ? where id = ?");
    ps.setFloat(1, vt);
    ps.setInt(2, id);
    ps.executeUpdate();
  }
 
  public void salvarPedidoDeCompra(PedidoCompra pedidoCompra) {
    try{
      CallableStatement salvaPedidoCompra = conn.prepareCall("exec inserirPedidoCompra ?,?,?,?,?");
      CallableStatement salvaProdutosDoPedido = conn.prepareCall("exec inserirPedidoCompraItem ?,?,?");

      salvaPedidoCompra.registerOutParameter(1, java.sql.Types.INTEGER);
      salvaPedidoCompra.setString(2, pedidoCompra.getFornecedorCnpj());
      salvaPedidoCompra.setDate(3, pedidoCompra.getDataCompra());
      salvaPedidoCompra.setFloat(4, pedidoCompra.getValorTotal());
      salvaPedidoCompra.setInt(5, pedidoCompra.getStatusPedido());
     
      salvaPedidoCompra.executeUpdate();
      int pedidoCompraId = salvaPedidoCompra.getInt(1);
     
      float precoTotal = Float.parseFloat("0");
     
      Iterator<Entry<Produto, Integer>> it = pedidoCompra.getProdutos().entrySet().iterator();
      while (it.hasNext()){
       
        Entry<Produto, Integer> e = it.next();
        int qtd = e.getValue();
        Produto p = e.getKey();
        DaoCotacao daoC = new DaoCotacao();
        ArrayList<Cotacao> listCotacao = new ArrayList<Cotacao>();
       
        listCotacao = daoC.listaCotacao(pedidoCompra.getFornecedorCnpj(), p.getId());
        float precoDeCompra = listCotacao.get(0).getPreco();
       
        salvaProdutosDoPedido.setInt(1, pedidoCompraId);
        salvaProdutosDoPedido.setInt(2, e.getKey().getId());
        salvaProdutosDoPedido.setInt(3, qtd);
        precoTotal += precoDeCompra * qtd;
       
        salvaProdutosDoPedido.executeUpdate();
      }
     
      updateValorTotal(pedidoCompraId, precoTotal);

      salvaPedidoCompra.close();
      salvaProdutosDoPedido.close();

    }catch (SQLException e) {
      e.printStackTrace();
    }
   
  }
 
  public HashMap<Produto, Integer> listaProdutosCompra(int idCompra) throws SQLException {
    CallableStatement ct= conn.prepareCall("exec listarProdutosCompra ?");
    ct.setInt(1, idCompra);
    ResultSet rs = ct.executeQuery();
   
    HashMap<Produto, Integer> listaProdutosCompra = new HashMap<Produto, Integer>();

    while(rs.next()) {
      DaoProduto daoProduto = new DaoProduto();
      Produto p = daoProduto.getProduto(rs.getInt("produtoId"));
      listaProdutosCompra.put(p, rs.getInt("quantidadeProduto"));
    }

    return listaProdutosCompra;
  }
 
  public ArrayList<PedidoCompra> listaPedidosCompra(int statusId) throws SQLException {
    CallableStatement ct = conn.prepareCall("exec listarPedidosCompra @statusid=?");
    ct.setInt(1, statusId);
    ResultSet rs = ct.executeQuery();
   
    ArrayList<PedidoCompra> listaPedidoCompra = new ArrayList<PedidoCompra>();
   
    while(rs.next()) {
      PedidoCompra pc = new PedidoCompra();
     
      pc.setDataCompra(Date.valueOf(rs.getString("dataDaCompra").substring(0, 10)));
      pc.setValorTotal(rs.getFloat("valorTotal"));
      pc.setFornecedorCnpj(rs.getString("fornecedorCnpj"));
      pc.setNomeFornecedor(nomeFornecedor(rs.getString("fornecedorCnpj")));
      pc.setId(rs.getInt("id"));
      pc.setStatusIdName(getStatusName(rs.getInt("statusid")));
      pc.setProdutos(this.listaProdutosCompra(rs.getInt("id")));
      pc.setStatusPedido(rs.getInt("statusid"));
     
      listaPedidoCompra.add(pc);
    }
   
    return listaPedidoCompra;
  }
}
TOP

Related Classes of labsis.logistica.dao.DaoPedidoCompra

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.