|
@@ -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);
|
|
|
}
|
|
|
}
|