I have a problem with queries of INSERT INTO ordenes_producto ...
and UPDATE ordenes_producto SET ...
. When I complete the form and it does not return any problems. It does exactly what it should do. If the query is correct but in the database I do not see it reflected.
Does anyone know if I am doing something wrong in the querys or what is happening? Thank you very much in advance.
@RequestMapping(method=RequestMethod.POST)
public ModelAndView form(@ModelAttribute("combinado") CombinedCommand c,
BindingResult result,
SessionStatus status,
HttpServletRequest request){
int id = Integer.parseInt(request.getParameter("id"));
double total = 0;
if (c.getAux().getNombre_producto().equals("")==false){
String ids = c.getAux().getNombre_producto();
double val = c.getAux().getPrecio_unitario();
if (buscarProducto(ids, val).getNombre_producto().equals("")){
this.jdbcTemplate.update("INSERT INTO productos (nombre_producto, precio_unitario) VALUES (?, ?)", c.getAux().getNombre_producto(), c.getAux().getPrecio_unitario());
c.getAux().setCodigo_producto(buscarProducto(ids, val).getCodigo_producto());
}
total += (c.getAux().getCantidad_deseada()*c.getAux().getPrecio_unitario());
}
ArrayList<Producto> p = c.getP();
for (int i = 0; i < p.size(); i++){
double total_aux = (p.get(i).getCantidad_deseada()*p.get(i).getPrecio_unitario());
total += (p.get(i).getCantidad_deseada()*p.get(i).getPrecio_unitario());
if (buscarProducto(p.get(i).getNombre_producto(), p.get(i).getPrecio_unitario()).getNombre_producto().equals("")){
KeyHolder keyHolder = new GeneratedKeyHolder();
String nombre = p.get(i).getNombre_producto();
String precio = p.get(i).getPrecio_unitario()+"";
String sql = "INSERT INTO productos (nombre_producto, precio_unitario) VALUES (?, ?)";
this.jdbcTemplate.update((Connection connection) -> {
PreparedStatement ps =
connection.prepareStatement(sql, new String[] {"id"});
ps.setString(1, nombre);
ps.setString(2, precio);
return ps;
},
keyHolder);
p.get(i).setCodigo_producto(keyHolder.getKey().intValue());
this.jdbcTemplate.update("INSERT INTO ordenes_producto (codigo_orden, codigo_producto, cantidad, valor) VALUES (?,?,?,?)", id, p.get(i).getCodigo_producto(), p.get(i).getCantidad_deseada(), total_aux);
} else {
this.jdbcTemplate.update("UPDATE ordenes_producto SET cantidad=?, valor=? WHERE codigo_producto=? AND codigo_orden=?", p.get(i).getCantidad_deseada(), total, p.get(i).getCodigo_producto(), id);
}
}
this.jdbcTemplate.update("UPDATE ordenes_compra SET valor_total = ? WHERE codigo_orden = ?", total, id);
return new ModelAndView("redirect:/edit.htm?id="+Integer.parseInt(request.getParameter("id")));
}
Esta es mi base de datos
CREATE TABLE IF NOT EXISTS dependencia(
codigo_dependencia INT NOT NULL AUTO_INCREMENT,
nombre_dependencia VARCHAR(32) NOT NULL,
PRIMARY KEY (codigo_dependencia)
);
CREATE TABLE IF NOT EXISTS usuarios(
codigo_usuario INT NOT NULL AUTO_INCREMENT,
codigo_dependencia INT NOT NULL,
nombre_completo VARCHAR(32) NOT NULL,
contrasena VARCHAR(64) NOT NULL,
cargo VARCHAR(12) NOT NULL,
CONSTRAINT fk_codigo_dependencia FOREIGN KEY (codigo_dependencia) REFERENCES dependencia(codigo_dependencia),
PRIMARY KEY (codigo_usuario)
);
CREATE TABLE IF NOT EXISTS productos(
codigo_producto INT NOT NULL AUTO_INCREMENT,
nombre_producto VARCHAR(16) NOT NULL,
precio_unitario DOUBLE NOT NULL,
PRIMARY KEY (codigo_producto)
);
CREATE TABLE IF NOT EXISTS ordenes_compra(
codigo_orden INT NOT NULL AUTO_INCREMENT,
codigo_usuario INT NOT NULL,
fecha DATE NOT NULL,
valor_total DOUBLE NOT NULL,
CONSTRAINT fk_codigo_usuario FOREIGN KEY (codigo_usuario) REFERENCES usuarios(codigo_usuario),
PRIMARY KEY (codigo_orden)
);
CREATE TABLE IF NOT EXISTS ordenes_producto(
codigo_orden INT NOT NULL,
codigo_producto INT NOT NULL,
cantidad INT NOT NULL,
valor DOUBLE NOT NULL,
CONSTRAINT fk_orden_formulario FOREIGN KEY (codigo_orden) REFERENCES ordenes_compra(codigo_orden),
CONSTRAINT fk_producto_formulario FOREIGN KEY (codigo_producto) REFERENCES productos(codigo_producto),
PRIMARY KEY (codigo_orden, codigo_producto, cantidad, valor)
);