zouxuan il y a 11 mois
Parent
commit
40c80c481b

+ 17 - 2
mec-biz/src/main/java/com/ym/mec/biz/service/impl/SellOrderServiceImpl.java

@@ -95,17 +95,32 @@ public class SellOrderServiceImpl extends BaseServiceImpl<Integer, SellOrder> im
         }
         //获取分配的余额
         BigDecimal balancePaymentAmount = studentPaymentOrder.getBalancePaymentAmount().multiply(totalRatioAmount).setScale(2, RoundingMode.DOWN);
+        //获取分配的现金
+        BigDecimal totalDetailActualAmount = studentPaymentOrder.getActualAmount().multiply(totalRatioAmount).setScale(2, RoundingMode.DOWN);
         //获取总优惠券金额
         BigDecimal detailTotalRemitPrice = goodsOrderDetails.stream().map(StudentPaymentOrderDetail::getRemitFee).reduce(BigDecimal.ZERO, BigDecimal::add);
 
         List<SellOrder> sellOrders = new ArrayList<>();
-
+        if(balancePaymentAmount.add(totalDetailActualAmount).compareTo(detailTotalPrice) < 0){
+            //多出来的金额
+            BigDecimal subtract = detailTotalPrice.subtract(balancePaymentAmount).subtract(totalDetailActualAmount);
+            if(balancePaymentAmount.compareTo(BigDecimal.ZERO) == 0){
+                totalDetailActualAmount = totalDetailActualAmount.add(subtract);
+            }else if(totalDetailActualAmount.compareTo(BigDecimal.ZERO) == 0){
+                balancePaymentAmount = balancePaymentAmount.add(subtract);
+            }else {
+                balancePaymentAmount = balancePaymentAmount.add(subtract);
+                if(balancePaymentAmount.compareTo(studentPaymentOrder.getBalancePaymentAmount()) > 0){
+                    totalDetailActualAmount = totalDetailActualAmount.add(balancePaymentAmount.subtract(studentPaymentOrder.getBalancePaymentAmount()));
+                    balancePaymentAmount = studentPaymentOrder.getBalancePaymentAmount();
+                }
+            }
+        }
         //剩余待分配的余额
         BigDecimal subDetailBalance = balancePaymentAmount;
         //剩余待分配的优惠券金额
         BigDecimal subDetailCouponRemitFee = detailTotalRemitPrice;
         //剩余待分配现金
-        BigDecimal totalDetailActualAmount = detailTotalPrice.subtract(balancePaymentAmount);
         BigDecimal subDetailActualAmount = totalDetailActualAmount;
         for (int i = 0; i < goodsOrderDetails.size(); i++) {
             StudentPaymentOrderDetail orderDetail = goodsOrderDetails.get(i);