Forráskód Böngészése

sell_order订单数据异常

zouxuan 3 éve
szülő
commit
190e8b9257

+ 22 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentRepairServiceImpl.java

@@ -1013,6 +1013,28 @@ public class StudentRepairServiceImpl extends BaseServiceImpl<Integer, StudentRe
             sellOrder.setCooperationOrganId(studentGoodsSell.getCooperationOrganId());
         }
         if (sellOrderList.size() > 0) {
+            //如果有优惠券金额
+            BigDecimal couponMarketAmount = studentGoodsSell.getCouponMarketAmount();
+            if (couponMarketAmount.compareTo(BigDecimal.ZERO) > 0) {
+                BigDecimal reduce = sellOrderList.stream().map(e -> e.getExpectAmount()).reduce(BigDecimal.ZERO, BigDecimal::add);
+                List<SellOrder> sellOrders = sellOrderList.stream().filter(e -> e.getExpectAmount().compareTo(BigDecimal.ZERO) > 0).collect(Collectors.toList());
+                //可用优惠券金额
+                BigDecimal subCouponMarketAmount = couponMarketAmount;
+                for (int i = 0; i < sellOrders.size(); i++) {
+                    SellOrder sellOrder = sellOrders.get(i);
+                    //如果是最后一件商品
+                    if (i == sellOrders.size() - 1) {
+                        sellOrder.setCouponRemitAmount(couponMarketAmount.subtract(subCouponMarketAmount));
+                    } else {
+                        //获取比例
+                        BigDecimal ratioAmount = sellOrder.getExpectAmount().divide(reduce, 6, BigDecimal.ROUND_HALF_UP);
+                        //获取分配的减免金额
+                        BigDecimal multiply = couponMarketAmount.multiply(ratioAmount).setScale(2, BigDecimal.ROUND_HALF_UP);
+                        subCouponMarketAmount = subCouponMarketAmount.subtract(multiply);
+                        sellOrder.setCouponRemitAmount(multiply);
+                    }
+                }
+            }
             sellOrderService.batchInsert(sellOrderList);
         }
     }