diff --git a/src/main/java/com/ieslamar/GestionInventario/entities/Categoria.java b/src/main/java/com/ieslamar/GestionInventario/entities/Categoria.java new file mode 100644 index 0000000..18952be --- /dev/null +++ b/src/main/java/com/ieslamar/GestionInventario/entities/Categoria.java @@ -0,0 +1,24 @@ +package com.ieslamar.GestionInventario.entities; + +import jakarta.persistence.*; +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Entity +@Table(name = "categoria") +@Getter +@Setter +@NoArgsConstructor +@AllArgsConstructor +public class Categoria { + @Id + @Column(name = "idcategoria") + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + @Column(nullable = false) + private String nombre; + +} diff --git a/src/main/java/com/ieslamar/GestionInventario/entities/Departamento.java b/src/main/java/com/ieslamar/GestionInventario/entities/Departamento.java index 0e4c96e..117ae9b 100644 --- a/src/main/java/com/ieslamar/GestionInventario/entities/Departamento.java +++ b/src/main/java/com/ieslamar/GestionInventario/entities/Departamento.java @@ -14,6 +14,7 @@ import lombok.Setter; @AllArgsConstructor public class Departamento { @Id + @Column(name = "iddepartamentos") @GeneratedValue(strategy = GenerationType.IDENTITY) // ID autoincremental private int id; diff --git a/src/main/java/com/ieslamar/GestionInventario/entities/Item.java b/src/main/java/com/ieslamar/GestionInventario/entities/Item.java new file mode 100644 index 0000000..6ec4613 --- /dev/null +++ b/src/main/java/com/ieslamar/GestionInventario/entities/Item.java @@ -0,0 +1,39 @@ +package com.ieslamar.GestionInventario.entities; + + +import jakarta.persistence.*; +import lombok.*; + +import java.util.Date; + +@Entity +@Table(name = "item") +@Getter +@Setter +@NoArgsConstructor +@AllArgsConstructor +public class Item { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "iditem") + private Long id; + + @Column(name = "fecha_alta") + private Date fechaAlta; + + @Column(name = "fecha_modificacion") + private Date fechaModificacion; + + @ManyToOne + @JoinColumn(name = "users_id") + private User usuario; + + @ManyToOne + @JoinColumn(name = "ubicacion_idubicacion") + private Ubicacion ubicacion; + + @ManyToOne + @JoinColumn(name = "producto_idproducto") + private Producto producto; +} diff --git a/src/main/java/com/ieslamar/GestionInventario/entities/Propiedad.java b/src/main/java/com/ieslamar/GestionInventario/entities/Propiedad.java new file mode 100644 index 0000000..203f57c --- /dev/null +++ b/src/main/java/com/ieslamar/GestionInventario/entities/Propiedad.java @@ -0,0 +1,26 @@ +package com.ieslamar.GestionInventario.entities; +import jakarta.persistence.*; +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Entity +@Table(name = "propiedad") // Nombre de la tabla en MySQL +@Getter +@Setter +@NoArgsConstructor +@AllArgsConstructor +public class Propiedad { + @Id + @Column(name = "idpropiedad") + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + @Column + private String nombre; + + @ManyToOne + @JoinColumn(name = "tipodato_idtipodato") + private TipoDato tipoDato; +} diff --git a/src/main/java/com/ieslamar/GestionInventario/entities/TipoDato.java b/src/main/java/com/ieslamar/GestionInventario/entities/TipoDato.java new file mode 100644 index 0000000..ea21af7 --- /dev/null +++ b/src/main/java/com/ieslamar/GestionInventario/entities/TipoDato.java @@ -0,0 +1,23 @@ +package com.ieslamar.GestionInventario.entities; + +import jakarta.persistence.*; +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Entity +@Table(name = "tipodato") +@Getter +@Setter +@NoArgsConstructor +@AllArgsConstructor +public class TipoDato { + @Id + @Column(name = "idtipodato") + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + @Column(name = "tipo_dato") + private String tipoDato; +} diff --git a/src/main/java/com/ieslamar/GestionInventario/entities/Ubicacion.java b/src/main/java/com/ieslamar/GestionInventario/entities/Ubicacion.java new file mode 100644 index 0000000..bdc4675 --- /dev/null +++ b/src/main/java/com/ieslamar/GestionInventario/entities/Ubicacion.java @@ -0,0 +1,29 @@ +package com.ieslamar.GestionInventario.entities; + +import jakarta.persistence.*; +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Entity +@Table(name = "ubicacion") +@Getter +@Setter +@NoArgsConstructor +@AllArgsConstructor +public class Ubicacion { + @Id + @Column(name = "idubicacion") + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + @Column(nullable = false) + private String nombre; + + @Column(nullable = true) + private String descripcion; + + @Column(nullable = true) + private String notas; +} diff --git a/src/main/java/com/ieslamar/GestionInventario/entities/User.java b/src/main/java/com/ieslamar/GestionInventario/entities/User.java index 1ee3d4a..ef7b43d 100644 --- a/src/main/java/com/ieslamar/GestionInventario/entities/User.java +++ b/src/main/java/com/ieslamar/GestionInventario/entities/User.java @@ -27,8 +27,9 @@ public class User { @Column(nullable = false, unique = true) // No se permite emails duplicados private String mail; - @Column(nullable = true) - private Integer departamentos_iddepartamentos; + @ManyToOne + @JoinColumn(name = "departamentos_iddepartamentos", nullable = true) // Nombre de la columna en la tabla `users` + private Departamento departamento; } diff --git a/src/main/java/com/ieslamar/GestionInventario/entities/Valor.java b/src/main/java/com/ieslamar/GestionInventario/entities/Valor.java new file mode 100644 index 0000000..d551290 --- /dev/null +++ b/src/main/java/com/ieslamar/GestionInventario/entities/Valor.java @@ -0,0 +1,29 @@ +package com.ieslamar.GestionInventario.entities; + +import jakarta.persistence.*; +import lombok.*; + +@Entity +@Table(name = "valor") +@Getter +@Setter +@NoArgsConstructor +@AllArgsConstructor +public class Valor { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "idvalor") + private Long id; + + @Column(nullable = false) + private String valor; + + @ManyToOne + @JoinColumn(name = "propiedad_idpropiedad") + private Propiedad propiedad; + + @ManyToOne + @JoinColumn(name = "item_iditem") + private Item item; +} diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 9ba348e..98eb346 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -14,7 +14,7 @@ spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver # Configuración de JPA e Hibernate spring.jpa.database-platform=org.hibernate.dialect.MySQL8Dialect -#spring.jpa.hibernate.ddl-auto=update +spring.jpa.hibernate.ddl-auto=validate diff --git a/src/main/resources/db/Inventario_bueno_v1.sql b/src/main/resources/db/Inventario_bueno_v1.sql index 8432c2c..2d5dc47 100644 --- a/src/main/resources/db/Inventario_bueno_v1.sql +++ b/src/main/resources/db/Inventario_bueno_v1.sql @@ -95,7 +95,7 @@ DROP TABLE IF EXISTS `inventario`.`ubicacion` ; CREATE TABLE IF NOT EXISTS `inventario`.`ubicacion` ( `idubicacion` INT NOT NULL AUTO_INCREMENT, - `nombre` VARCHAR(25) NULL, + `nombre` VARCHAR(45) NOT NULL, `descripcion` VARCHAR(100) NULL, `notas` VARCHAR(255) NULL, PRIMARY KEY (`idubicacion`)) @@ -109,7 +109,7 @@ DROP TABLE IF EXISTS `inventario`.`categoria` ; CREATE TABLE IF NOT EXISTS `inventario`.`categoria` ( `idcategoria` INT NOT NULL AUTO_INCREMENT, - `nombre` VARCHAR(45) NULL, + `nombre` VARCHAR(45) NOT NULL, PRIMARY KEY (`idcategoria`)) ENGINE = InnoDB; @@ -121,10 +121,10 @@ DROP TABLE IF EXISTS `inventario`.`producto` ; CREATE TABLE IF NOT EXISTS `inventario`.`producto` ( `idproducto` INT NOT NULL AUTO_INCREMENT, - `nombre` VARCHAR(45) NULL, - `productocol` VARCHAR(45) NULL, + `nombre` VARCHAR(45) NOT NULL, `categoria_idcategoria` INT NOT NULL, `departamentos_iddepartamentos` INT NOT NULL, + `descripcion` VARCHAR(45) NULL, PRIMARY KEY (`idproducto`), INDEX `fk_producto_categoria1_idx` (`categoria_idcategoria` ASC) VISIBLE, INDEX `fk_producto_departamentos1_idx` (`departamentos_iddepartamentos` ASC) VISIBLE, @@ -148,7 +148,7 @@ DROP TABLE IF EXISTS `inventario`.`item` ; CREATE TABLE IF NOT EXISTS `inventario`.`item` ( `iditem` INT NOT NULL AUTO_INCREMENT, - `fecha_alta` DATE NULL, + `fecha_alta` DATE NOT NULL, `fecha_modificacion` DATE NULL, `users_id` BIGINT NOT NULL, `ubicacion_idubicacion` INT NOT NULL, diff --git a/src/main/resources/db/Modelo_Inventario.mwb b/src/main/resources/db/Modelo_Inventario.mwb index c2c05d6..047425c 100644 Binary files a/src/main/resources/db/Modelo_Inventario.mwb and b/src/main/resources/db/Modelo_Inventario.mwb differ diff --git a/src/main/resources/static/css/table_style.css b/src/main/resources/static/css/table_style.css index e54bc30..afd169e 100644 --- a/src/main/resources/static/css/table_style.css +++ b/src/main/resources/static/css/table_style.css @@ -49,6 +49,8 @@ table { overflow: auto; border-radius: 10px; margin-bottom: 10px; + box-shadow: 0 0 10px rgba(0, 0, 0, 0.1); + } .table1 thead { diff --git a/src/main/resources/templates/home.html b/src/main/resources/templates/home.html index f213fc8..238c22d 100644 --- a/src/main/resources/templates/home.html +++ b/src/main/resources/templates/home.html @@ -7,6 +7,9 @@