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 4b4b54b1..fec306fa 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 @@ -2122,7 +2122,7 @@ public class TbShopTableServiceImpl implements TbShopTableService { returnCoupon(orderInfo, true); // 设置折扣比例 - orderInfo.setDiscountRatio(payDTO.getDiscount().setScale(4, RoundingMode.DOWN)); + orderInfo.setDiscountRatio(payDTO.getDiscount().setScale(4, RoundingMode.HALF_DOWN)); Set productIdSet = new HashSet<>(); List cashierCarts = mpCashierCartService.selectByOrderIdAndState(orderInfo.getId()); @@ -2194,7 +2194,7 @@ public class TbShopTableServiceImpl implements TbShopTableService { private BigDecimal resetAmountByDiscount(PayDTO payDTO, TbOrderInfo orderInfo) { List cashierCarts = mpCashierCartService.selectByOrderIdAndState(orderInfo.getId()); List detailList = mpOrderDetailService.selectByOrderId(orderInfo.getId()); - BigDecimal discount = payDTO.getDiscount().setScale(4, RoundingMode.DOWN); + BigDecimal discount = payDTO.getDiscount().setScale(4, RoundingMode.HALF_DOWN); BigDecimal totalAmount = BigDecimal.ZERO; for (TbCashierCart cashierCart : cashierCarts) { if (cashierCart.getUserCouponId() == null) { @@ -2811,7 +2811,7 @@ public class TbShopTableServiceImpl implements TbShopTableService { // 计算当前商品占比 BigDecimal ratio = calcDetailRatio(orderDetail, returnNum); currentDetailAMount = orderDetail.getPriceAmount().divide(orderDetail.getNum(), 8, RoundingMode.HALF_UP) - .multiply(returnNum).setScale(2, RoundingMode.DOWN); + .multiply(returnNum).setScale(2, RoundingMode.HALF_DOWN); if (oldOrderInfo.getRefundAmount() == null) { oldOrderInfo.setRefundAmount(BigDecimal.ZERO); } @@ -2842,7 +2842,7 @@ public class TbShopTableServiceImpl implements TbShopTableService { .multiply(returnNum)).setScale(2, RoundingMode.HALF_UP); } } - returnAmount = returnAmount.setScale(2, RoundingMode.DOWN); + returnAmount = returnAmount.setScale(2, RoundingMode.HALF_DOWN); if (remainNum.compareTo(BigDecimal.ZERO) > 0) { // 单个打包费 @@ -2924,8 +2924,8 @@ public class TbShopTableServiceImpl implements TbShopTableService { return BigDecimal.ONE; } - return orderDetail.getPriceAmount().divide(totalAmount, 10, RoundingMode.DOWN) - .divide(orderDetail.getNum(), 10, RoundingMode.DOWN).multiply(returnNum).setScale(2, RoundingMode.DOWN); + return orderDetail.getPriceAmount().divide(totalAmount, 10, RoundingMode.HALF_DOWN) + .divide(orderDetail.getNum(), 10, RoundingMode.HALF_DOWN).multiply(returnNum).setScale(2, RoundingMode.HALF_DOWN); } private void updateStockAndRecord(List orderDetailList) {