|
@@ -124,87 +124,90 @@ public class SellOrderServiceImpl extends BaseServiceImpl<Integer, SellOrder> im
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public List<SellOrder> addOrderDetail2SellOrder(List<StudentPaymentOrderDetail> orderDetails, StudentPaymentOrder studentPaymentOrder) {
|
|
|
- List<SellOrder> sellOrders = new ArrayList<>();
|
|
|
- //总余额支付
|
|
|
- BigDecimal totalBalance = studentPaymentOrder.getBalancePaymentAmount() != null ? studentPaymentOrder.getBalancePaymentAmount() : BigDecimal.ZERO;
|
|
|
- //总价格
|
|
|
- BigDecimal totalPrice = studentPaymentOrder.getExpectAmount();
|
|
|
- //商品总付款
|
|
|
- BigDecimal detailTotalPrice = orderDetails.stream().map(StudentPaymentOrderDetail::getPrice).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
- //商品销售占的余额
|
|
|
- BigDecimal detailTotalBalance = detailTotalPrice.compareTo(BigDecimal.ZERO) <= 0 ? BigDecimal.ZERO :
|
|
|
- detailTotalPrice.multiply(totalBalance).divide(totalPrice, 2, BigDecimal.ROUND_HALF_UP);
|
|
|
-
|
|
|
- int i = 1;
|
|
|
- BigDecimal detailRouteBalance = BigDecimal.ZERO;
|
|
|
- for (StudentPaymentOrderDetail orderDetail : orderDetails) {
|
|
|
-
|
|
|
- BigDecimal detailBalance = orderDetail.getPrice().compareTo(BigDecimal.ZERO) <= 0 ? BigDecimal.ZERO :
|
|
|
- orderDetail.getPrice().multiply(detailTotalBalance).divide(detailTotalPrice, 2, BigDecimal.ROUND_HALF_UP);
|
|
|
- if (i == orderDetails.size()) {
|
|
|
- detailBalance = detailTotalBalance.subtract(detailRouteBalance);
|
|
|
- }
|
|
|
- detailRouteBalance = detailRouteBalance.add(detailBalance);
|
|
|
- i++;
|
|
|
+ public List<SellOrder> addOrderDetail2SellOrder(List<StudentPaymentOrderDetail> orderDetails, StudentPaymentOrder studentPaymentOrder, MusicGroup musicGroup) {
|
|
|
+ List<SellOrder> sellOrders = new ArrayList<>();
|
|
|
+ //总余额支付
|
|
|
+ BigDecimal totalBalance = studentPaymentOrder.getBalancePaymentAmount() != null ? studentPaymentOrder.getBalancePaymentAmount() : BigDecimal.ZERO;
|
|
|
+ //总价格
|
|
|
+ BigDecimal totalPrice = studentPaymentOrder.getExpectAmount();
|
|
|
+ //商品总付款
|
|
|
+ BigDecimal detailTotalPrice = orderDetails.stream().map(StudentPaymentOrderDetail::getPrice).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ //商品销售占的余额
|
|
|
+ BigDecimal detailTotalBalance = detailTotalPrice.compareTo(BigDecimal.ZERO) <= 0 ? BigDecimal.ZERO :
|
|
|
+ detailTotalPrice.multiply(totalBalance).divide(totalPrice, 2, BigDecimal.ROUND_HALF_UP);
|
|
|
|
|
|
- if (orderDetail.getType().equals(OrderDetailTypeEnum.MUSICAL) && orderDetail.getKitGroupPurchaseType().equals(KitGroupPurchaseTypeEnum.LEASE)) {
|
|
|
- continue;
|
|
|
- }
|
|
|
+ int i = 1;
|
|
|
+ BigDecimal detailRouteBalance = BigDecimal.ZERO;
|
|
|
+ for (StudentPaymentOrderDetail orderDetail : orderDetails) {
|
|
|
+
|
|
|
+ BigDecimal detailBalance = orderDetail.getPrice().compareTo(BigDecimal.ZERO) <= 0 ? BigDecimal.ZERO :
|
|
|
+ orderDetail.getPrice().multiply(detailTotalBalance).divide(detailTotalPrice, 2, BigDecimal.ROUND_HALF_UP);
|
|
|
+ if (i == orderDetails.size()) {
|
|
|
+ detailBalance = detailTotalBalance.subtract(detailRouteBalance);
|
|
|
+ }
|
|
|
+ detailRouteBalance = detailRouteBalance.add(detailBalance);
|
|
|
+ i++;
|
|
|
+
|
|
|
+ if (orderDetail.getType().equals(OrderDetailTypeEnum.MUSICAL) && orderDetail.getKitGroupPurchaseType().equals(KitGroupPurchaseTypeEnum.LEASE)) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
|
|
|
- BigDecimal goodsTotalPrice = orderDetail.getGoodsList().stream().map(Goods::getGroupPurchasePrice).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
- BigDecimal routePrice = BigDecimal.ZERO;
|
|
|
- BigDecimal routeBalance = BigDecimal.ZERO;
|
|
|
- int j = 1;
|
|
|
- for (Goods goods : orderDetail.getGoodsList()) {
|
|
|
- BigDecimal expectAmount = BigDecimal.ZERO;
|
|
|
- BigDecimal balance = BigDecimal.ZERO;
|
|
|
- if (goodsTotalPrice.compareTo(BigDecimal.ZERO) > 0) {
|
|
|
- expectAmount = goods.getGroupPurchasePrice().multiply(orderDetail.getPrice()).divide(goodsTotalPrice, 2, BigDecimal.ROUND_HALF_UP);
|
|
|
- balance = goods.getGroupPurchasePrice().multiply(detailBalance).divide(goodsTotalPrice, 2, BigDecimal.ROUND_HALF_UP);
|
|
|
- }
|
|
|
- if (j == orderDetail.getGoodsList().size()) {
|
|
|
- expectAmount = orderDetail.getPrice().subtract(routePrice);
|
|
|
- balance = orderDetail.getPrice().subtract(routeBalance);
|
|
|
- }
|
|
|
- routePrice = routePrice.add(expectAmount);
|
|
|
- routeBalance = routeBalance.add(balance);
|
|
|
- j++;
|
|
|
-
|
|
|
- SellOrder sellOrder = new SellOrder();
|
|
|
- Map<String, BigDecimal> CostMap = new HashMap<>();
|
|
|
- CostMap.put("sellCost", goods.getDiscountPrice());
|
|
|
- if (goods.getAgreeCostPrice() != null) {
|
|
|
- CostMap.put("SellCost2", goods.getAgreeCostPrice());
|
|
|
- }
|
|
|
- sellOrder.setOrganId(studentPaymentOrder.getOrganId());
|
|
|
- sellOrder.setTransNo(studentPaymentOrder.getTransNo());
|
|
|
- sellOrder.setOrderId(studentPaymentOrder.getId());
|
|
|
- sellOrder.setOrderNo(studentPaymentOrder.getOrderNo());
|
|
|
- sellOrder.setActualAmount(expectAmount.subtract(balance));
|
|
|
- sellOrder.setBalanceAmount(balance);
|
|
|
- sellOrder.setExpectAmount(expectAmount);
|
|
|
- sellOrder.setSellCost(goods.getDiscountPrice());
|
|
|
- sellOrder.setSellCost2(JSON.toJSONString(CostMap));
|
|
|
- sellOrder.setNum(1);
|
|
|
- sellOrder.setUserId(studentPaymentOrder.getUserId());
|
|
|
- sellOrder.setPaymentChannel(studentPaymentOrder.getPaymentChannel());
|
|
|
- sellOrder.setMerNo(studentPaymentOrder.getMerNos());
|
|
|
- sellOrder.setSellTime(studentPaymentOrder.getCreateTime());
|
|
|
- sellOrder.setCreateIme(new Date());
|
|
|
- sellOrder.setUpdateTime(new Date());
|
|
|
- if (goods.getType().equals(GoodsType.INSTRUMENT)) {
|
|
|
- sellOrder.setType(SellTypeEnum.INSTRUMENT);
|
|
|
- } else if (goods.getType().equals(GoodsType.ACCESSORIES)) {
|
|
|
- sellOrder.setType(SellTypeEnum.ACCESSORIES);
|
|
|
- } else {
|
|
|
- sellOrder.setType(SellTypeEnum.OTHER);
|
|
|
- }
|
|
|
- sellOrders.add(sellOrder);
|
|
|
+ BigDecimal goodsTotalPrice = orderDetail.getGoodsList().stream().map(Goods::getGroupPurchasePrice).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ BigDecimal routePrice = BigDecimal.ZERO;
|
|
|
+ BigDecimal routeBalance = BigDecimal.ZERO;
|
|
|
+ int j = 1;
|
|
|
+ for (Goods goods : orderDetail.getGoodsList()) {
|
|
|
+ BigDecimal expectAmount = BigDecimal.ZERO;
|
|
|
+ BigDecimal balance = BigDecimal.ZERO;
|
|
|
+ if (goodsTotalPrice.compareTo(BigDecimal.ZERO) > 0) {
|
|
|
+ expectAmount = goods.getGroupPurchasePrice().multiply(orderDetail.getPrice()).divide(goodsTotalPrice, 2, BigDecimal.ROUND_HALF_UP);
|
|
|
+ balance = goods.getGroupPurchasePrice().multiply(detailBalance).divide(goodsTotalPrice, 2, BigDecimal.ROUND_HALF_UP);
|
|
|
+ }
|
|
|
+ if (j == orderDetail.getGoodsList().size()) {
|
|
|
+ expectAmount = orderDetail.getPrice().subtract(routePrice);
|
|
|
+ balance = orderDetail.getPrice().subtract(routeBalance);
|
|
|
+ }
|
|
|
+ routePrice = routePrice.add(expectAmount);
|
|
|
+ routeBalance = routeBalance.add(balance);
|
|
|
+ j++;
|
|
|
+
|
|
|
+ SellOrder sellOrder = new SellOrder();
|
|
|
+ Map<String, BigDecimal> CostMap = new HashMap<>();
|
|
|
+ CostMap.put("sellCost", goods.getDiscountPrice());
|
|
|
+ if (goods.getAgreeCostPrice() != null) {
|
|
|
+ CostMap.put("SellCost2", goods.getAgreeCostPrice());
|
|
|
+ }
|
|
|
+ sellOrder.setOrganId(studentPaymentOrder.getOrganId());
|
|
|
+ sellOrder.setTransNo(studentPaymentOrder.getTransNo());
|
|
|
+ sellOrder.setOrderId(studentPaymentOrder.getId());
|
|
|
+ if (musicGroup != null) {
|
|
|
+ sellOrder.setCooperationOrganId(musicGroup.getCooperationOrganId());
|
|
|
}
|
|
|
+ sellOrder.setOrderNo(studentPaymentOrder.getOrderNo());
|
|
|
+ sellOrder.setActualAmount(expectAmount.subtract(balance));
|
|
|
+ sellOrder.setBalanceAmount(balance);
|
|
|
+ sellOrder.setExpectAmount(expectAmount);
|
|
|
+ sellOrder.setSellCost(goods.getDiscountPrice());
|
|
|
+ sellOrder.setSellCost2(JSON.toJSONString(CostMap));
|
|
|
+ sellOrder.setNum(1);
|
|
|
+ sellOrder.setUserId(studentPaymentOrder.getUserId());
|
|
|
+ sellOrder.setPaymentChannel(studentPaymentOrder.getPaymentChannel());
|
|
|
+ sellOrder.setMerNo(studentPaymentOrder.getMerNos());
|
|
|
+ sellOrder.setSellTime(studentPaymentOrder.getCreateTime());
|
|
|
+ sellOrder.setCreateIme(new Date());
|
|
|
+ sellOrder.setUpdateTime(new Date());
|
|
|
+ if (goods.getType().equals(GoodsType.INSTRUMENT)) {
|
|
|
+ sellOrder.setType(SellTypeEnum.INSTRUMENT);
|
|
|
+ } else if (goods.getType().equals(GoodsType.ACCESSORIES)) {
|
|
|
+ sellOrder.setType(SellTypeEnum.ACCESSORIES);
|
|
|
+ } else {
|
|
|
+ sellOrder.setType(SellTypeEnum.OTHER);
|
|
|
+ }
|
|
|
+ sellOrders.add(sellOrder);
|
|
|
}
|
|
|
- sellOrderDao.batchInsert(sellOrders);
|
|
|
- return sellOrders;
|
|
|
+ }
|
|
|
+ sellOrderDao.batchInsert(sellOrders);
|
|
|
+ return sellOrders;
|
|
|
}
|
|
|
|
|
|
}
|