diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbShopTableServiceImpl.java b/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbShopTableServiceImpl.java index 81a7f4f3..3c9376e9 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbShopTableServiceImpl.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbShopTableServiceImpl.java @@ -2275,11 +2275,11 @@ public class TbShopTableServiceImpl implements TbShopTableService { List cashierCarts = mpCashierCartService.selectByOrderIdAndState(orderInfo.getId()); List detailList = mpOrderDetailService.selectByOrderId(orderInfo.getId()); BigDecimal discount = payDTO.getDiscount().setScale(4, RoundingMode.HALF_DOWN); - BigDecimal totalAmount = BigDecimal.ZERO; + BigDecimal sumTotalAmount = cashierCarts.stream().map(TbCashierCart::getTotalAmount).reduce(BigDecimal.ZERO, BigDecimal::add); + BigDecimal totalAmount = NumberUtil.mul(sumTotalAmount, discount).setScale(2, RoundingMode.HALF_UP); for (TbCashierCart cashierCart : cashierCarts) { if (cashierCart.getUserCouponId() == null) { - cashierCart.setTotalAmount(cashierCart.getTotalAmount().multiply(discount).setScale(2, RoundingMode.HALF_UP)); - totalAmount = NumberUtil.add(totalAmount, cashierCart.getTotalAmount()); + cashierCart.setTotalAmount(cashierCart.getTotalAmount().multiply(discount).setScale(2, RoundingMode.HALF_EVEN)); } // item.setSalePrice(item.getSalePrice().multiply(discount).setScale(2, RoundingMode.HALF_UP)); // item.setMemberPrice(item.getMemberPrice().multiply(discount).setScale(2, RoundingMode.HALF_UP)); @@ -2287,7 +2287,7 @@ public class TbShopTableServiceImpl implements TbShopTableService { } detailList.forEach(item -> { - item.setPriceAmount(item.getPriceAmount().multiply(discount).setScale(2, RoundingMode.HALF_UP)); + item.setPriceAmount(item.getPriceAmount().multiply(discount).setScale(2, RoundingMode.HALF_EVEN)); // item.setPrice(item.getPrice().multiply(discount).setScale(2, RoundingMode.HALF_UP)); // item.setMemberPrice(item.getMemberPrice().multiply(discount).setScale(2, RoundingMode.HALF_UP)); });