Selaa lähdekoodia

修改维修回调添加销售订单

周箭河 5 vuotta sitten
vanhempi
commit
cc1b6e9f05

+ 11 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/SellOrderService.java

@@ -2,6 +2,8 @@ package com.ym.mec.biz.service;
 
 
 import com.ym.mec.biz.dal.entity.SellOrder;
+import com.ym.mec.biz.dal.entity.StudentPaymentOrder;
+import com.ym.mec.biz.dal.entity.StudentPaymentOrderDetail;
 import com.ym.mec.common.service.BaseService;
 
 import java.math.BigDecimal;
@@ -19,4 +21,13 @@ public interface SellOrderService extends BaseService<Integer, SellOrder> {
      * @return
      */
     List<SellOrder> addSellOrder(Long orderId, String musicGroupId, List<Integer> goodsIds, BigDecimal totalAmount, BigDecimal balance);
+
+    /**
+     * 将订单详情加入销售列表
+     * @param orderDetails
+     * @param studentPaymentOrder
+     * @return
+     */
+    List<SellOrder> addOrderDetail2SellOrder(List<StudentPaymentOrderDetail> orderDetails, StudentPaymentOrder studentPaymentOrder);
+
 }

+ 87 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/SellOrderServiceImpl.java

@@ -8,6 +8,8 @@ import com.ym.mec.biz.dal.dao.SellOrderDao;
 import com.ym.mec.biz.dal.dao.StudentPaymentOrderDao;
 import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.dal.enums.GoodsType;
+import com.ym.mec.biz.dal.enums.KitGroupPurchaseTypeEnum;
+import com.ym.mec.biz.dal.enums.OrderDetailTypeEnum;
 import com.ym.mec.biz.dal.enums.SellTypeEnum;
 import com.ym.mec.biz.service.*;
 import com.ym.mec.common.dal.BaseDAO;
@@ -120,4 +122,89 @@ public class SellOrderServiceImpl extends BaseServiceImpl<Integer, SellOrder> im
         sellOrderDao.batchInsert(sellOrders);
         return sellOrders;
     }
+
+    @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++;
+
+                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);
+                }
+            }
+            sellOrderDao.batchInsert(sellOrders);
+            return sellOrders;
+    }
+
 }

+ 2 - 82
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentRegistrationServiceImpl.java

@@ -1,6 +1,5 @@
 package com.ym.mec.biz.service.impl;
 
-import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
@@ -93,7 +92,7 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
     @Autowired
     private RedisCache<String, Object> redisCache;
     @Autowired
-    private SellOrderDao sellOrderDao;
+    private SellOrderService sellOrderService;
 
     @Override
     public BaseDAO<Long, StudentRegistration> getDAO() {
@@ -899,86 +898,7 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
             //销售订单详情
             List<StudentPaymentOrderDetail> orderDetails = studentPaymentOrderDetailService.getOrderDetail(studentPaymentOrder.getId());
             if (orderDetails.size() > 0) {
-                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++;
-
-                    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.setCooperationOrganId(musicGroup.getCooperationOrganId());
-                        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);
-                    }
-                }
-                sellOrderDao.batchInsert(sellOrders);
+                sellOrderService.addOrderDetail2SellOrder(orderDetails, studentPaymentOrder);
             }
 
             //三方乐团不发送缴费通知

+ 1 - 79
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentRepairServiceImpl.java

@@ -554,85 +554,7 @@ public class StudentRepairServiceImpl extends BaseServiceImpl<Integer, StudentRe
             //销售订单详情
             List<StudentPaymentOrderDetail> orderDetails = studentPaymentOrderDetailService.getOrderDetail(studentPaymentOrder.getId());
             if (orderDetails.size() > 0) {
-                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++;
-
-                    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);
-                    }
-                }
-                sellOrderDao.batchInsert(sellOrders);
+                sellOrderService.addOrderDetail2SellOrder(orderDetails, studentPaymentOrder);
             }
         } else if (studentPaymentOrder.getStatus() == DealStatusEnum.CLOSE || studentPaymentOrder.getStatus() == DealStatusEnum.FAILED) {
             if (studentPaymentOrder.getBalancePaymentAmount() != null && studentPaymentOrder.getBalancePaymentAmount().compareTo(BigDecimal.ZERO) > 0) {