Package com.proyecto.jpa.service
Class OrderItemService
java.lang.Object
com.proyecto.jpa.service.OrderItemService
Servicio para la gestión de items de pedidos (Capa de Negocio).
Implementa la lógica de negocio relacionada con los items de pedidos, incluyendo validaciones de stock, cálculo de subtotales y gestión de cantidades.
Arquitectura de 3 Capas
OrderItemController (Capa de Presentación)
↓
OrderItemService (Capa de Negocio) ← Esta clase
↓
OrderItemRepository (Capa de Datos)
Responsabilidades
- Gestionar items de pedidos
- Calcular subtotales automáticamente
- Validar cantidades y precios
- Verificar disponibilidad de productos
- Actualizar totales de pedidos
- Since:
- 1.0.0
- Version:
- 1.0.0
- Author:
- Proyecto JPA
- See Also:
-
Constructor Summary
ConstructorsConstructorDescriptionOrderItemService(OrderItemRepository orderItemRepository, OrderRepository orderRepository, ProductRepository productRepository) Constructor con inyección de dependencias. -
Method Summary
Modifier and TypeMethodDescriptioncalculateSubtotal(Integer quantity, BigDecimal unitPrice) Calcula el subtotal de un item basado en cantidad y precio unitario.longcount()Cuenta el número total de items de pedidos.longcountByOrderId(Long orderId) Cuenta el número de items en un pedido específico.voiddeleteById(Long id) Elimina un item de pedido por su ID.findAll()Obtiene todos los items de pedidos del sistema.Busca un item de pedido por su ID.findByOrderId(Long orderId) Busca todos los items de un pedido específico.findByProductId(Long productId) Busca todos los items que contienen un producto específico.Crea o actualiza un item de pedido.updateQuantity(Long orderItemId, Integer newQuantity) Actualiza la cantidad de un item de pedido.
-
Constructor Details
-
OrderItemService
@Autowired public OrderItemService(OrderItemRepository orderItemRepository, OrderRepository orderRepository, ProductRepository productRepository) Constructor con inyección de dependencias.- Parameters:
orderItemRepository- repositorio de items de pedidosorderRepository- repositorio de pedidosproductRepository- repositorio de productos
-
-
Method Details
-
findAll
Obtiene todos los items de pedidos del sistema.- Returns:
- lista de todos los items de pedidos
-
findById
Busca un item de pedido por su ID.- Parameters:
id- el ID del item de pedido- Returns:
- un Optional con el item si existe
-
findByOrderId
Busca todos los items de un pedido específico.- Parameters:
orderId- el ID del pedido- Returns:
- lista de items del pedido
-
findByProductId
Busca todos los items que contienen un producto específico.- Parameters:
productId- el ID del producto- Returns:
- lista de items con ese producto
-
save
Crea o actualiza un item de pedido.Valida la cantidad, el precio, calcula el subtotal automáticamente y actualiza el total del pedido.
- Parameters:
orderItem- el item de pedido a guardar- Returns:
- el item de pedido guardado
- Throws:
IllegalArgumentException- si los datos son inválidos
-
updateQuantity
Actualiza la cantidad de un item de pedido.- Parameters:
orderItemId- el ID del itemnewQuantity- la nueva cantidad- Returns:
- el item actualizado
- Throws:
IllegalArgumentException- si el item no existe o la cantidad es inválida
-
deleteById
Elimina un item de pedido por su ID.Al eliminar el item, se actualiza automáticamente el total del pedido.
- Parameters:
id- el ID del item a eliminar- Throws:
IllegalArgumentException- si no existe un item con ese ID
-
calculateSubtotal
Calcula el subtotal de un item basado en cantidad y precio unitario.- Parameters:
quantity- la cantidadunitPrice- el precio unitario- Returns:
- el subtotal calculado
-
count
public long count()Cuenta el número total de items de pedidos.- Returns:
- el número total de items
-
countByOrderId
Cuenta el número de items en un pedido específico.- Parameters:
orderId- el ID del pedido- Returns:
- el número de items en ese pedido
-