Advertisement
Guest User

Untitled

a guest
Jun 21st, 2019
119
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5 1.58 KB | None | 0 0
  1. package unity.group.task.service;
  2.  
  3. import org.springframework.beans.factory.annotation.Autowired;
  4. import org.springframework.stereotype.Service;
  5. import org.springframework.transaction.annotation.Transactional;
  6. import unity.group.task.dto.DiscountDto;
  7. import unity.group.task.entity.Product;
  8.  
  9. import java.math.BigDecimal;
  10. import java.util.List;
  11.  
  12.  
  13. @Service
  14. @Transactional
  15. public class DiscountService implements IDiscountService {
  16.  
  17.     private final ProductService productService;
  18.  
  19.     @Autowired
  20.     public DiscountService(final ProductService productService) {
  21.         this.productService = productService;
  22.     }
  23.  
  24.     @Override
  25.     public void computeDiscountForAllProducts(final DiscountDto discount) {
  26.         List<Product> allProducts = this.productService.getAllProducts();
  27.  
  28.         BigDecimal sumOfAllProductsPrice = allProducts.stream()
  29.                 .map(product -> product.getPrice().multiply(new BigDecimal(product.getQuantity())))
  30.                 .reduce(BigDecimal.ZERO, BigDecimal::add);
  31.  
  32.         allProducts.forEach(product -> {
  33.             BigDecimal sumProductPrice = product.getPrice().multiply(new BigDecimal(product.getQuantity()));
  34.             BigDecimal productDiscount = sumProductPrice.multiply(discount.getValue()).divide(sumOfAllProductsPrice, 2, BigDecimal.ROUND_HALF_UP);
  35.             product.setProductDiscount(productDiscount);
  36.             product.setPrice(sumProductPrice.subtract(productDiscount).divide(new BigDecimal(product.getQuantity()), 2, BigDecimal.ROUND_HALF_UP));
  37.             productService.saveNewProduct(product);
  38.         });
  39.     }
  40. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement