Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package unity.group.task.service;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
- import org.springframework.transaction.annotation.Transactional;
- import unity.group.task.dto.DiscountDto;
- import unity.group.task.entity.Product;
- import java.math.BigDecimal;
- import java.util.List;
- @Service
- @Transactional
- public class DiscountService implements IDiscountService {
- private final ProductService productService;
- @Autowired
- public DiscountService(final ProductService productService) {
- this.productService = productService;
- }
- @Override
- public void computeDiscountForAllProducts(final DiscountDto discount) {
- List<Product> allProducts = this.productService.getAllProducts();
- BigDecimal sumOfAllProductsPrice = allProducts.stream()
- .map(product -> product.getPrice().multiply(new BigDecimal(product.getQuantity())))
- .reduce(BigDecimal.ZERO, BigDecimal::add);
- allProducts.forEach(product -> {
- BigDecimal sumProductPrice = product.getPrice().multiply(new BigDecimal(product.getQuantity()));
- BigDecimal productDiscount = sumProductPrice.multiply(discount.getValue()).divide(sumOfAllProductsPrice, 2, BigDecimal.ROUND_HALF_UP);
- product.setProductDiscount(productDiscount);
- product.setPrice(sumProductPrice.subtract(productDiscount).divide(new BigDecimal(product.getQuantity()), 2, BigDecimal.ROUND_HALF_UP));
- productService.saveNewProduct(product);
- });
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement