Desculpa não descrever isso. Não estou usando JPA. Estou usando JDBC puro com banco de dados MySQL.
Segue minha classe DAO:
'''public class ComandaDAO extends ConnectionFactory {
static Logger logger = Logger.getLogger("lopes");
Statement stmt;
private static ComandaDAO instance;
public static ComandaDAO getInstance(){
if(instance==null){
instance= new ComandaDAO();
}
return instance;
}
public void GravarAlteracoesComanda(Comanda comanda) throws Exception {
try {
Connection conn = new PoolConnectionDB().getConexaoRAC();
stmt = conn.createStatement();
if(!comanda.isCancelada()){
if(comanda.isNovaComanda()){
stmt.executeUpdate("insert into comanda (id_comanda,data_venda,valor_total,vr_total_itens,"
+ "vr_tx_servico,tx_servico,localizacao) values "
+ "('" + comanda.getNumComanda()+ "','" + ConverterDatasDecimais.converterDataHoraGravar(new Date()) + "','"
+ ConverterDatasDecimais.converterBigDecimalString(comanda.getValorTotal()) +"','"
+ ConverterDatasDecimais.converterBigDecimalString(comanda.getVrTotalItens()) +"','"
+ ConverterDatasDecimais.converterBigDecimalString(comanda.getVrTxServico()) +"','"
+ ConverterDatasDecimais.converterBooleanParaInt(comanda.isTxServico()) +"','"
+ comanda.getLocalizacao() + "')");
comanda.setId(findIdComandaByNumero(comanda.getNumComanda()));
}
for (ComandaItem item : comanda.getItens()) {
if(item.isNovoItem()){
int idGarcom=0;
String nomeGarcom="";
if(item.getGarcom()!=null){
idGarcom=item.getGarcom().getIdFuncionario();
nomeGarcom=item.getGarcom().getNome();
}
String scriptInsertItem="insert into comanda_item (data_criacao,fracionado_nome_produto,valor_total,id_fracionado,"
+ "id_item,impresso,item_cancelado,observacao,quantidade,tx_servico,valor_unitario,vr_tx_servico,"
+ "id_garcom,nome_garcom,id_produto,id_opcao_combo,comanda_id) values "
+ "('" + item.getDataCriacao() + "','"
+ item.getFracionadoNomeProduto() + "','"
+ ConverterDatasDecimais.converterBigDecimalString(item.getValorTotal()) +"','"
+ item.getIdFracionado() +"','"
+ item.getIdItem() +"','"
+ ConverterDatasDecimais.converterBooleanParaInt(item.isImpresso())+"','"
+ ConverterDatasDecimais.converterBooleanParaInt(item.isItemCancelado())+"','"
+ item.getObservacao() +"','"
+ item.getQuantidade() +"','"
+ ConverterDatasDecimais.converterBooleanParaInt(item.isTxServico())+"','"
+ ConverterDatasDecimais.converterBigDecimalString(item.getValorUnitario()) +"','"
+ ConverterDatasDecimais.converterBigDecimalString(item.getVrTxServico()) +"','"
+ idGarcom +"','"+ nomeGarcom +"','"
+ item.getProduto().getIdProduto() +"','"
+ item.getIdOpcaoCombo() +"','"
+ comanda.getId() + "')";
stmt.executeUpdate(scriptInsertItem);
}else{
if(item.isItemCancelado()){
stmt.executeUpdate("UPDATE comanda_item SET item_cancelado='1' "
+ "WHERE id='"+item.getId()+"'");
}
}
}
}
stmt.executeUpdate("UPDATE comanda SET impresso='0' "
+ "WHERE id='"+comanda.getId()+"'");
//FechaConexao(conn, stmt, null);
//new PoolConnectionDB().liberarRecursosBD(null, null, conn);
comanda=findComandaByNumero(comanda.getNumComanda(),conn);
new FerramentasComanda().calculaTotaisComanda(comanda);
AtualizarTotaisComanda(comanda,conn);
} catch (SQLException e) { //trata os erros SQL
logger.error(e);
}
}
public void solicitarConta(int idComanda) throws Exception {
try {
Connection conn = createConexao();
stmt = conn.createStatement();
stmt.executeUpdate("UPDATE comanda SET conta_solicitada='1' "
+ "WHERE id='"+idComanda+"'");
FechaConexao(conn, stmt, null);
} catch (SQLException e) { //trata os erros SQL
logger.error(e);
}
}
public Comanda findComandaByNumero(int numComanda,Connection conexao){
Comanda comanda = null;
try {
Connection conn;
if(conexao==null){
conn= new PoolConnectionDB().getConexaoRAC();
}else{
conn=conexao;
}
stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("Select FROM comanda "
+ "WHERE id_comanda ='" + numComanda + "'");
if (rs.next()) {
comanda = new Comanda();
comanda.setId(rs.getInt("id"));
comanda.setContaSolicitada(ConverterDatasDecimais.converterIntParaBoolean(rs.getInt("conta_solicitada")));
comanda.setImpresso(ConverterDatasDecimais.converterIntParaBoolean(rs.getInt("impresso")));
comanda.setNovaComanda(false);
comanda.setNumComanda(rs.getInt("id_comanda"));
comanda.setDataVenda(rs.getTimestamp("data_venda"));
comanda.setValorTotal(rs.getBigDecimal("valor_total"));
comanda.setVrTotalItens(rs.getBigDecimal("vr_total_itens"));
comanda.setVrTxServico(rs.getBigDecimal("vr_tx_servico"));
comanda.setTxServico(ConverterDatasDecimais.converterIntParaBoolean(rs.getInt("tx_servico")));
comanda.setLocalizacao(rs.getString("localizacao"));
comanda.setItens(new ArrayList<>());
ResultSet rs1 = stmt.executeQuery("Select FROM comanda_item "
+ "WHERE comanda_id='" + comanda.getId() + "'");
while(rs1.next()){
ComandaItem comandaItem=new ComandaItem();
comandaItem.setId(rs1.getInt("id"));
comandaItem.setDataCriacao(rs1.getString("data_criacao"));
comandaItem.setFracionadoNomeProduto(rs1.getString("fracionado_nome_produto"));
comandaItem.setIdFracionado(rs1.getInt("id_fracionado"));
comandaItem.setIdItem(rs1.getInt("id_item"));
comandaItem.setImpresso(ConverterDatasDecimais.converterIntParaBoolean(rs1.getInt("impresso")));
comandaItem.setItemCancelado(ConverterDatasDecimais.converterIntParaBoolean(rs1.getInt("item_cancelado")));
comandaItem.setTxServico(ConverterDatasDecimais.converterIntParaBoolean(rs1.getInt("tx_servico")));
comandaItem.setObservacao(rs1.getString("observacao"));
comandaItem.setQuantidade(rs1.getBigDecimal("quantidade"));
comandaItem.setValorUnitario(rs1.getBigDecimal("valor_unitario"));
comandaItem.setValorTotal(rs1.getBigDecimal("valor_total"));
comandaItem.setVrTxServico(rs1.getBigDecimal("vr_tx_servico"));
if(rs1.getInt("id_garcom")==0){
Funcionario funcionario=new Funcionario();
funcionario.setNome("");
funcionario.setIdFuncionario(0);
comandaItem.setGarcom(funcionario);
}else{
comandaItem.setGarcom(new FuncionarioDAO().findGarcomById(rs1.getInt("id_garcom")));
}
comandaItem.setProduto(new ProdutoDAO().findProdutoById(rs1.getInt("id_produto")));
comandaItem.setIdOpcaoCombo(rs1.getInt("id_opcao_combo"));
comandaItem.setIdComanda(comanda.getId());
comanda.getItens().add(comandaItem);
}
}else{
comanda=new FerramentasComanda().novaComandaCorrente(comanda);
comanda.setNumComanda(numComanda);
}
//FechaConexao(conn, stmt, rs);
if(conexao==null){
new PoolConnectionDB().liberarRecursosBD(rs, null, conn);
}
} catch (SQLException e) { //trata os erros SQL
logger.error(e);
return null;
} catch (Exception ex) {
logger.error(ex);
}
return comanda;
}
public void CancelamentoItemComanda(ComandasCancelamentoSomenteItens item) throws Exception {
try {
Connection conn = createConexao();
stmt = conn.createStatement();
stmt.executeUpdate("insert into comandas_cancelamento_somente_itens (num_comanda,id_produto,id_fiscal,"
+ "nome_fiscal,qtd,valor_unitario,valor_total,justificativa,data_hora_cancelamento) values "
+ "('" + item.getNumComanda()+ "','" + item.getProduto().getIdProduto()+ "','"
+ item.getIdFiscal() + "','"+ item.getNomeFiscal()+ "','" + item.getQtd()+ "','"
+ item.getValorUnitario() + "','" + item.getValorTotal()+ "','"
+ item.getJustificativa() + "','"
+ ConverterDatasDecimais.converterDataHoraGravar(item.getDataHoraCancelamento()) + "')");
FechaConexao(conn, stmt, null);
} catch (SQLException e) { //trata os erros SQL
logger.error(e);
}
}
public void AtualizarTotaisComanda(Comanda comanda,Connection conn) throws Exception {
try {
stmt = conn.createStatement();
stmt.executeUpdate("UPDATE comanda SET valor_total='"+ConverterDatasDecimais.converterBigDecimalString(comanda.getValorTotal())+"',"
+ "vr_total_itens='"+ConverterDatasDecimais.converterBigDecimalString(comanda.getVrTotalItens())+"',"
+ "vr_tx_servico='"+ConverterDatasDecimais.converterBigDecimalString(comanda.getVrTxServico())+"',"
+ "tx_servico='"+ConverterDatasDecimais.converterBooleanParaInt(comanda.isTxServico())+"',"
+ "localizacao='"+comanda.getLocalizacao()+"' "
+ "WHERE id='"+comanda.getId()+"'");
//FechaConexao(conn, stmt, null);
//new PoolConnectionDB().liberarRecursosBD(null, null, conn);
} catch (SQLException e) { //trata os erros SQL
logger.error(e);
}
}
public void apagarItensTransferidos(ArrayList itens){
try {
Connection conn = createConexao();
stmt = conn.createStatement();
for (ComandaItem item : itens) {
stmt.executeUpdate("DELETE FROM comanda_item "
+ "WHERE id='" + item.getId() + "'");
}
FechaConexao(conn, stmt, null);
} catch (SQLException e) { //trata os erros SQL
logger.error(e);
} catch (Exception ex) {
logger.error(ex);
}
}
public ArrayList listarComandasAbertas(){
ArrayList comandasAbertas = new ArrayList<>();
try {
Connection conn = createConexao();
stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("Select * FROM comanda ORDER BY id_comanda ASC");
while (rs.next()) {
Comanda comanda = new Comanda();
comanda.setId(rs.getInt("id"));
comanda.setContaSolicitada(ConverterDatasDecimais.converterIntParaBoolean(rs.getInt("conta_solicitada")));
comanda.setImpresso(ConverterDatasDecimais.converterIntParaBoolean(rs.getInt("impresso")));
comanda.setNovaComanda(false);
comanda.setNumComanda(rs.getInt("id_comanda"));
comanda.setDataVenda(rs.getTimestamp("data_venda"));
comanda.setValorTotal(rs.getBigDecimal("valor_total"));
comanda.setVrTotalItens(rs.getBigDecimal("vr_total_itens"));
comanda.setVrTxServico(rs.getBigDecimal("vr_tx_servico"));
comanda.setTxServico(ConverterDatasDecimais.converterIntParaBoolean(rs.getInt("tx_servico")));
comanda.setLocalizacao(rs.getString("localizacao"));
comandasAbertas.add(comanda);
}
FechaConexao(conn, stmt, rs);
} catch (SQLException e) { //trata os erros SQL
logger.error(e);
return null;
} catch (Exception ex) {
logger.error(ex);
}
return comandasAbertas;
}
public ArrayList findItensByIdComanda(int idComanda){
ArrayList itensComanda = new ArrayList<>();
try {
Connection conn = createConexao();
stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("Select * FROM comanda_item where comanda_id='"+idComanda+"'");
while (rs.next()) {
ComandaItem comandaItem=new ComandaItem();
comandaItem.setId(rs.getInt("id"));
comandaItem.setDataCriacao(rs.getString("data_criacao"));
comandaItem.setFracionadoNomeProduto(rs.getString("fracionado_nome_produto"));
comandaItem.setIdFracionado(rs.getInt("id_fracionado"));
comandaItem.setIdItem(rs.getInt("id_item"));
comandaItem.setImpresso(ConverterDatasDecimais.converterIntParaBoolean(rs.getInt("impresso")));
comandaItem.setItemCancelado(ConverterDatasDecimais.converterIntParaBoolean(rs.getInt("item_cancelado")));
comandaItem.setTxServico(ConverterDatasDecimais.converterIntParaBoolean(rs.getInt("tx_servico")));
comandaItem.setObservacao(rs.getString("observacao"));
comandaItem.setQuantidade(rs.getBigDecimal("quantidade"));
comandaItem.setValorUnitario(rs.getBigDecimal("valor_unitario"));
comandaItem.setValorTotal(rs.getBigDecimal("valor_total"));
comandaItem.setVrTxServico(rs.getBigDecimal("vr_tx_servico"));
if(rs.getInt("id_garcom")==0){
Funcionario funcionario=new Funcionario();
funcionario.setNome("");
funcionario.setIdFuncionario(0);
comandaItem.setGarcom(funcionario);
}else{
comandaItem.setGarcom(new FuncionarioDAO().findGarcomById(rs.getInt("id_garcom")));
}
comandaItem.setProduto(new ProdutoDAO().findProdutoById(rs.getInt("id_produto")));
comandaItem.setIdOpcaoCombo(rs.getInt("id_opcao_combo"));
comandaItem.setIdComanda(idComanda);
itensComanda.add(comandaItem);
}
FechaConexao(conn, stmt, rs);
} catch (SQLException e) { //trata os erros SQL
logger.error(e);
return null;
} catch (Exception ex) {
logger.error(ex);
}
return itensComanda;
}
public int findIdComandaByNumero(int numComanda){
int idComanda=0;
try {
Connection conn = createConexao();
stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT id FROM comanda WHERE id_comanda='"+numComanda+"'");
if (rs.next()) {
idComanda=rs.getInt("id");
}
} catch (SQLException e) { //trata os erros SQL
logger.error(e);
} catch (Exception ex) {
logger.error(ex);
}
return idComanda;
}
}'''