Bom eu tenho um metodo que cadastra as peças que foram utilizadas na requisição
e elas tem estoques
mas meu metodo está enorme
alguém poderia me ajudar a dar uma melhorada nele dividir em mais de um metodo.
ou seja ao inserir um boletim ( se foi utilizado uma peça ) diminuir uma peça no estoque
e antes de inserir o boletim fazer uma verificação no estoque de peças disponiveis.
meu metodo:
public boolean inserir(List<Servicos> s, Requisicao r, String motivo, List<Pecas> p) throws SQLException {
try {
con.setAutoCommit(false);
String select = "SELECT * FROM detalhe_status where id_statusdetalhes="+r.getReqStatus_Detalhes().getId_statusdetalhes()+" ";
PreparedStatement stmt = con.prepareStatement(select);
ResultSet rsSelect = stmt.executeQuery();
rsSelect.next();
if(rsSelect.getLong("idstatus")==1){
PreparedStatement inserirServicos = con.prepareStatement("INSERT INTO boletim (idequipamento_requisicao,motivo) VALUES(?,?)", PreparedStatement.RETURN_GENERATED_KEYS);
inserirServicos.setLong(1, r.getId());
inserirServicos.setString(2, motivo);
inserirServicos.executeUpdate();
ResultSet rs = inserirServicos.getGeneratedKeys();
rs.next();
Long idGerado = rs.getLong(1);
for (Servicos servicosBd : s) {
String servicossql = "INSERT INTO relatorio_servicos (idservicos,idboletim) VALUES(" + servicosBd.getId_Servicos() + "," + idGerado + ")";
PreparedStatement inserirservicos = con.prepareStatement(servicossql);
inserirservicos.executeUpdate();
}
// adicionando peças
for (Pecas pecasBD : p) {
String pecassql = "INSERT INTO pecas_relatorio (idequipamento_requisicao,idpecas) VALUES(?,?)";
PreparedStatement inserirpecas = con.prepareStatement(pecassql);
inserirpecas.setLong(1, r.getId());
inserirpecas.setInt(2, pecasBD.getIdpecas());
inserirpecas.executeUpdate();
}
String status = "UPDATE detalhe_status set idequipamento_requisicao = ? , idusuario=?, idstatus=2, data=now(), observacao=? where id_statusdetalhes="+r.getReqStatus_Detalhes().getId_statusdetalhes()+"";
PreparedStatement statussmt = con.prepareStatement(status );
statussmt.setLong(1, r.getId());
statussmt.setLong(2, Sessao.getInstancia().getUsuario().getId());
statussmt.setString(3, motivo);
statussmt.executeUpdate();
alerts.alertReqCadastrado();
}
else{
alerts.reqFechada();
}
con.commit();
return true;
} catch (SQLException ex) {
con.rollback();
Logger.getLogger(RequisicaoDAO.class.getName()).log(Level.SEVERE, null, ex);
return false;
}
}