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 0ed526f4..83a25ec2 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 @@ -2821,7 +2821,12 @@ public class TbShopTableServiceImpl implements TbShopTableService { if (oldOrderInfo.getRefundAmount() == null) { oldOrderInfo.setRefundAmount(BigDecimal.ZERO); } - returnAmount = returnAmount.add(oldOrderInfo.getPayAmount().subtract(oldOrderInfo.getRefundAmount()).multiply(ratio)); + + if (ratio.compareTo(BigDecimal.ONE) == 0) { + returnAmount = oldOrderInfo.getPayAmount().subtract(oldOrderInfo.getRefundAmount()); + }else { + returnAmount = returnAmount.add(oldOrderInfo.getPayAmount().subtract(oldOrderInfo.getRefundAmount()).multiply(ratio)); + } saleAmount = saleAmount.add(orderDetail.getPrice()); packAMount = packAMount.add(orderDetail.getPackAmount() .divide(orderDetail.getNum(), 8, RoundingMode.HALF_UP) @@ -2838,6 +2843,7 @@ public class TbShopTableServiceImpl implements TbShopTableService { .divide(orderDetail.getNum(), 8, RoundingMode.HALF_UP) .multiply(returnNum)).setScale(2, RoundingMode.HALF_UP); } + returnAmount = returnAmount.setScale(2, RoundingMode.DOWN); orderDetail.setNum(returnNum); orderDetail.setPriceAmount(currentDetailAMount); @@ -2904,6 +2910,9 @@ public class TbShopTableServiceImpl implements TbShopTableService { totalAmount = totalAmount.add(item.getPriceAmount()); } } + if (orderDetail.getPriceAmount().compareTo(totalAmount) == 0) { + return BigDecimal.ONE; + } return orderDetail.getPriceAmount().divide(totalAmount, 10, RoundingMode.DOWN) .divide(orderDetail.getNum(), 10, RoundingMode.DOWN).multiply(returnNum).setScale(2, RoundingMode.DOWN);