Adicionado verificacao se o preco que esta vindo do produe menor do que o que ja esta salvo no banco." #1
@@ -1,9 +1,26 @@
|
||||
package br.com.stackpanel.duck_api.repository;
|
||||
|
||||
import br.com.stackpanel.duck_api.entity.Product;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Optional;
|
||||
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
import org.springframework.data.jpa.repository.Query;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
@Repository
|
||||
public interface ProductRepository extends JpaRepository<Product, Long> {
|
||||
|
||||
@Query("""
|
||||
SELECT prd
|
||||
FROM Product prd
|
||||
WHERE 1=1
|
||||
AND (:codigoProduto IS NULL OR prd.codigoProduto = :codigoProduto)
|
||||
AND (:nomeProduto IS NULL OR prd.nomeProduto LIKE :nomeProduto)
|
||||
AND (:descricao IS NULL OR prd.descricaoProdutos LIKE :descricao)
|
||||
AND (:preco IS NULL OR prd.precoProdutoAtualizado = :preco)
|
||||
""")
|
||||
Product buscarProdutosFiltro(Long codigoProduto, String nomeProduto, String descricao, BigDecimal preco);
|
||||
|
||||
}
|
||||
|
||||
@@ -42,6 +42,26 @@ public class ProductServiceImpl implements ProductService {
|
||||
@Override
|
||||
public ProductDTO salvarProduto(ProductDTO dto) {
|
||||
try {
|
||||
|
||||
Product produtoExistente = productRepository.buscarProdutosFiltro(null, dto.getNomeProduto(), null, null);
|
||||
|
||||
if (produtoExistente != null) {
|
||||
log.warn("Produto '{}' ja existe no sistema.", dto.getNomeProduto());
|
||||
|
||||
if (produtoExistente.getPrecoProdutoAtualizado().equals(dto.getPrecoProdutoAtualizado())) {
|
||||
log.info("Produto '{}' ja existe no sistema com o mesmo preco.", dto.getNomeProduto());
|
||||
return dto;
|
||||
} else if (dto.getPrecoProdutoAtualizado()
|
||||
.compareTo(produtoExistente.getPrecoProdutoAtualizado()) < 0) {
|
||||
log.info("Produto '{}' teve preco atualizado para {}. Preco anterior: {}",
|
||||
dto.getNomeProduto(), dto.getPrecoProdutoAtualizado(),
|
||||
produtoExistente.getPrecoProdutoAtualizado());
|
||||
dto.setPrecoProdutoPrecoAnterior(produtoExistente.getPrecoProdutoAtualizado());
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Product produto = productRepository.save(productMapper.toProductEntity(dto));
|
||||
|
||||
log.info("Produto salvo com sucesso. ID: {}", produto.getCodigoProduto());
|
||||
|
||||
Reference in New Issue
Block a user