@Override
  public String executa(HttpServletRequest req, HttpServletResponse res) {

    Connection conn = null;
    String[] ids = req.getParameterValues("id");
    String[] quantidades = req.getParameterValues("quantidade");
    String codFunc = req.getParameter("funcionario");
    String codHosp = req.getParameter("codigoHospedagem");

    try {
      conn = ConnectionFactory.getConnection();

      // Inicia a transacao
      conn.setAutoCommit(false);

      for (int i = 0; i < ids.length; i++) {
        Consumo c = new Consumo();
        Hospedagem h = new Hospedagem();
        ProdutoServico ps = new ProdutoServico();
        Funcionario f = new Funcionario();

        h.setCdHospedagem(Integer.parseInt(codHosp));
        ps.setCdTipoServico(Integer.parseInt(ids[i]));
        f.setCdPessoa(Integer.parseInt(codFunc));

        c.setQtConsumo(Integer.parseInt(quantidades[i]));
        c.setHospedagem(h);
        c.setProdutoServico(ps);
        c.setFuncionarioConsumo(f);

        boolean confInsert = false;
        if (ConsumoBO.registrar(conn, c) > 0) {
          confInsert = true;
        }

        req.setAttribute("confInsert", confInsert);
      }

      conn.commit();

    } catch (Exception e) {
      try {
        conn.rollback();
      } catch (SQLException sqlExc) {

      }

      Excecoes ex = new Excecoes(e);
      req.setAttribute("error", ex.getMessage());
    }

    setDataPage(req, conn, codHosp);
    req.setAttribute("varRequest", true);

    return "registraConsumo.jsp";
  }
  private void setDataPage(HttpServletRequest req, Connection conn, String codHosp) {
    try {
      // guarda lista dos funcionarios
      req.setAttribute("funcionarios", FuncionarioBO.listarFuncionarios(conn));
      // gera a lista de produtos e servicos
      List<ProdutoServico> listaProdutos = ProdutoServicoBO.consultarProduto(conn);
      List<ProdutoServico> listaServicos = ProdutoServicoBO.consultarServico(conn);
      req.setAttribute("listaProdutos", listaProdutos);
      req.setAttribute("listaServicos", listaServicos);
      // gera as listas de produto e de servicos consumidos
      List<Consumo> listaProdutosConsumidos =
          ConsumoBO.listarItensConsumidos(conn, Integer.parseInt(codHosp), 1);
      List<Consumo> listaServicosConsumidos =
          ConsumoBO.listarItensConsumidos(conn, Integer.parseInt(codHosp), 2);
      req.setAttribute("listaProdutosConsumidos", listaProdutosConsumidos);
      req.setAttribute("listaServicosConsumidos", listaServicosConsumidos);

      // Seta Total Produto
      double totalProduto = 0.0;
      for (Consumo c : listaProdutosConsumidos) {
        totalProduto += (c.getProdutoServico().getVrPreco()) * (c.getQtConsumo());
      }
      req.setAttribute("totalProduto", totalProduto);

      // Seta Total Servico
      double totalServico = 0.0;
      for (Consumo c : listaServicosConsumidos) {
        totalServico += (c.getProdutoServico().getVrPreco()) * (c.getQtConsumo());
      }
      req.setAttribute("totalServico", totalServico);
      req.setAttribute("codigoHospedagem", codHosp);
    } catch (Exception e) {
      Excecoes ex = new Excecoes(e);
      req.setAttribute("error", ex.getMessage());
    } finally {
      try {
        conn.close();
      } catch (SQLException e) {

      }
    }
  }