|  | @@ -19,6 +19,7 @@ import org.springframework.transaction.annotation.Transactional;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  import java.math.BigDecimal;
 | 
	
		
			
				|  |  |  import java.util.*;
 | 
	
		
			
				|  |  | +import java.util.stream.Collectors;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  @Service
 | 
	
		
			
				|  |  |  public class SellOrderServiceImpl extends BaseServiceImpl<Integer, SellOrder> implements SellOrderService {
 | 
	
	
		
			
				|  | @@ -71,15 +72,11 @@ public class SellOrderServiceImpl extends BaseServiceImpl<Integer, SellOrder> im
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          BigDecimal hasRouteBalance = BigDecimal.ZERO;
 | 
	
		
			
				|  |  |          BigDecimal goodsTotalBalance = goodsTotalPrice.multiply(balance).divide(totalAmount, 2, BigDecimal.ROUND_HALF_UP);
 | 
	
		
			
				|  |  | -        List<SellOrder> sellOrders = new ArrayList<>();
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |          AccountType accountType = sysPaymentConfigService.checkAccountType(PaymentChannelEnum.valueOf(order.getPaymentChannel()), order.getMerNos());
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        //批次号 TODO
 | 
	
		
			
				|  |  |          List<SellOrder> sellOrderList = goodsService.subtractStock(goodsIds, accountType);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          for (Integer goodsId : goodsIds) {
 | 
	
		
			
				|  |  | -            SellOrder sellOrder = new SellOrder();
 | 
	
		
			
				|  |  |              BigDecimal goodsPrice = BigDecimal.ZERO;
 | 
	
		
			
				|  |  |              Goods nowGoods = new Goods();
 | 
	
		
			
				|  |  |              for (Goods goods : goodies) {
 | 
	
	
		
			
				|  | @@ -95,63 +92,62 @@ public class SellOrderServiceImpl extends BaseServiceImpl<Integer, SellOrder> im
 | 
	
		
			
				|  |  |                  goodsBalance = goodsTotalBalance.subtract(hasRouteBalance);
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |              hasRouteBalance = hasRouteBalance.add(goodsBalance);
 | 
	
		
			
				|  |  | -            sellOrder.setGoodsId(goodsId);
 | 
	
		
			
				|  |  | -            sellOrder.setGoodsName(nowGoods.getName());
 | 
	
		
			
				|  |  | -            sellOrder.setExpectAmount(goodsPrice);
 | 
	
		
			
				|  |  | -            sellOrder.setBalanceAmount(goodsBalance);
 | 
	
		
			
				|  |  | -            sellOrder.setActualAmount(goodsPrice.subtract(goodsBalance));
 | 
	
		
			
				|  |  | -            Map<String, BigDecimal> CostMap = new HashMap<>();
 | 
	
		
			
				|  |  | -            CostMap.put("sellCost", nowGoods.getDiscountPrice());
 | 
	
		
			
				|  |  | -            if (nowGoods.getAgreeCostPrice() != null) {
 | 
	
		
			
				|  |  | -                CostMap.put("SellCost2", nowGoods.getAgreeCostPrice());
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | -            sellOrder.setSellCost2(JSON.toJSONString(CostMap));
 | 
	
		
			
				|  |  | +            i++;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -            sellOrder.setOrganId(order.getOrganId());
 | 
	
		
			
				|  |  | -            sellOrder.setCooperationOrganId(musicGroup.getCooperationOrganId());
 | 
	
		
			
				|  |  | -            sellOrder.setTransNo(order.getTransNo());
 | 
	
		
			
				|  |  | -            sellOrder.setOrderId(order.getId());
 | 
	
		
			
				|  |  | -            sellOrder.setOrderNo(order.getOrderNo());
 | 
	
		
			
				|  |  | -            sellOrder.setSellCost(nowGoods.getDiscountPrice());
 | 
	
		
			
				|  |  | -            sellOrder.setNum(1);
 | 
	
		
			
				|  |  | -            sellOrder.setUserId(order.getUserId());
 | 
	
		
			
				|  |  | -            sellOrder.setPaymentChannel(order.getPaymentChannel());
 | 
	
		
			
				|  |  | -            sellOrder.setMerNo(order.getMerNos());
 | 
	
		
			
				|  |  | -            sellOrder.setAccountType(accountType);
 | 
	
		
			
				|  |  | -            sellOrder.setSellTime(order.getCreateTime());
 | 
	
		
			
				|  |  | -            sellOrder.setCreateIme(new Date());
 | 
	
		
			
				|  |  | -            sellOrder.setUpdateTime(new Date());
 | 
	
		
			
				|  |  | -            if (nowGoods.getType().equals(GoodsType.INSTRUMENT)) {
 | 
	
		
			
				|  |  | -                sellOrder.setType(SellTypeEnum.INSTRUMENT);
 | 
	
		
			
				|  |  | -            } else if (nowGoods.getType().equals(GoodsType.ACCESSORIES)) {
 | 
	
		
			
				|  |  | -                sellOrder.setType(SellTypeEnum.ACCESSORIES);
 | 
	
		
			
				|  |  | -            } else {
 | 
	
		
			
				|  |  | -                sellOrder.setType(SellTypeEnum.OTHER);
 | 
	
		
			
				|  |  | +            int complementGoodsNum = nowGoods.getComplementGoodsIdList() == null ? 1 : nowGoods.getComplementGoodsIdList().split(",").length;
 | 
	
		
			
				|  |  | +            BigDecimal complementPrice = nowGoods.getGroupPurchasePrice();
 | 
	
		
			
				|  |  | +            Map<Integer, BigDecimal> complementGoodsPrice = new HashMap<>();
 | 
	
		
			
				|  |  | +            complementGoodsPrice.put(nowGoods.getId(), nowGoods.getGroupPurchasePrice());
 | 
	
		
			
				|  |  | +            if (nowGoods.getComplementGoodsIdList() != null) {
 | 
	
		
			
				|  |  | +                List<Goods> complementGoodies = goodsDao.findGoodsByIds(nowGoods.getComplementGoodsIdList());
 | 
	
		
			
				|  |  | +                complementGoodsPrice = complementGoodies.stream().collect(Collectors.toMap(Goods::getId, Goods::getGroupPurchasePrice));
 | 
	
		
			
				|  |  | +                complementPrice = complementGoodies.stream().map(Goods::getGroupPurchasePrice).reduce(BigDecimal.ZERO, BigDecimal::add);
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -            StockType goodsStockType = StockType.INTERNAL;
 | 
	
		
			
				|  |  | -            for (Goods goods : goodies) {
 | 
	
		
			
				|  |  | -                if (goods.getId().equals(goodsId)) {
 | 
	
		
			
				|  |  | -                    goodsStockType = goods.getStockType();
 | 
	
		
			
				|  |  | -                    break;
 | 
	
		
			
				|  |  | +            BigDecimal hasRouteSellOrderActualAmount = BigDecimal.ZERO;
 | 
	
		
			
				|  |  | +            BigDecimal hasRouteSellOrderBalance = BigDecimal.ZERO;
 | 
	
		
			
				|  |  | +            for (SellOrder sellOrder : sellOrderList) {
 | 
	
		
			
				|  |  | +                if (!goodsId.equals(sellOrder.getParentGoodsId()) && !goodsId.equals(sellOrder.getParentGoodsId())) {
 | 
	
		
			
				|  |  | +                    continue;
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +                BigDecimal sellOrderActualAmount = BigDecimal.ZERO;
 | 
	
		
			
				|  |  | +                BigDecimal sellOrderBalance = BigDecimal.ZERO;
 | 
	
		
			
				|  |  | +                if (complementPrice.compareTo(BigDecimal.ZERO) > 0) {
 | 
	
		
			
				|  |  | +                    sellOrderActualAmount = complementGoodsPrice.get(sellOrder.getGoodsId()).multiply(new BigDecimal(sellOrder.getNum())).multiply(goodsPrice).divide(complementPrice, 2, BigDecimal.ROUND_HALF_UP);
 | 
	
		
			
				|  |  | +                    sellOrderBalance = complementGoodsPrice.get(sellOrder.getGoodsId()).multiply(new BigDecimal(sellOrder.getNum())).multiply(goodsBalance).divide(complementPrice, 2, BigDecimal.ROUND_HALF_UP);
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +                hasRouteSellOrderActualAmount = hasRouteSellOrderActualAmount.add(sellOrderActualAmount);
 | 
	
		
			
				|  |  | +                hasRouteSellOrderBalance = hasRouteSellOrderBalance.add(sellOrderBalance);
 | 
	
		
			
				|  |  | +                complementGoodsNum = complementGoodsNum - sellOrder.getNum();
 | 
	
		
			
				|  |  | +                if (complementGoodsNum <= 0) {
 | 
	
		
			
				|  |  | +                    sellOrderActualAmount = goodsPrice.subtract(hasRouteSellOrderActualAmount);
 | 
	
		
			
				|  |  | +                    sellOrderBalance = goodsBalance.subtract(hasRouteSellOrderActualAmount);
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +                sellOrder.setExpectAmount(sellOrderActualAmount);
 | 
	
		
			
				|  |  | +                sellOrder.setBalanceAmount(sellOrderBalance);
 | 
	
		
			
				|  |  | +                sellOrder.setActualAmount(sellOrderActualAmount.subtract(sellOrderBalance));
 | 
	
		
			
				|  |  | +                sellOrder.setOrganId(order.getOrganId());
 | 
	
		
			
				|  |  | +                sellOrder.setCooperationOrganId(musicGroup.getCooperationOrganId());
 | 
	
		
			
				|  |  | +                sellOrder.setTransNo(order.getTransNo());
 | 
	
		
			
				|  |  | +                sellOrder.setOrderId(order.getId());
 | 
	
		
			
				|  |  | +                sellOrder.setOrderNo(order.getOrderNo());
 | 
	
		
			
				|  |  | +                sellOrder.setUserId(order.getUserId());
 | 
	
		
			
				|  |  | +                sellOrder.setPaymentChannel(order.getPaymentChannel());
 | 
	
		
			
				|  |  | +                sellOrder.setMerNo(order.getMerNos());
 | 
	
		
			
				|  |  | +                sellOrder.setSellTime(order.getCreateTime());
 | 
	
		
			
				|  |  | +                sellOrder.setCreateIme(new Date());
 | 
	
		
			
				|  |  | +                sellOrder.setUpdateTime(new Date());
 | 
	
		
			
				|  |  | +                if (nowGoods.getType().equals(GoodsType.INSTRUMENT)) {
 | 
	
		
			
				|  |  | +                    sellOrder.setType(SellTypeEnum.INSTRUMENT);
 | 
	
		
			
				|  |  | +                } else if (nowGoods.getType().equals(GoodsType.ACCESSORIES)) {
 | 
	
		
			
				|  |  | +                    sellOrder.setType(SellTypeEnum.ACCESSORIES);
 | 
	
		
			
				|  |  | +                } else {
 | 
	
		
			
				|  |  | +                    sellOrder.setType(SellTypeEnum.OTHER);
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  | -            //库存类型
 | 
	
		
			
				|  |  | -            if (goodsStockType.equals(StockType.ALL) && accountType.equals(AccountType.INTERNAL)) {
 | 
	
		
			
				|  |  | -                sellOrder.setStockType(StockType.INTERNAL);
 | 
	
		
			
				|  |  | -            } else if (goodsStockType.equals(StockType.ALL) && accountType.equals(AccountType.EXTERNAL)) {
 | 
	
		
			
				|  |  | -                sellOrder.setStockType(StockType.EXTERNAL);
 | 
	
		
			
				|  |  | -            } else {
 | 
	
		
			
				|  |  | -                sellOrder.setStockType(goodsStockType);
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | -            //批次号 TODO
 | 
	
		
			
				|  |  | -            //goodsService.subtractStock();
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -            sellOrders.add(sellOrder);
 | 
	
		
			
				|  |  | -            i++;
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | -        sellOrderDao.batchInsert(sellOrders);
 | 
	
		
			
				|  |  | -        return sellOrders;
 | 
	
		
			
				|  |  | +        sellOrderDao.batchInsert(sellOrderList);
 | 
	
		
			
				|  |  | +        return sellOrderList;
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      @Override
 | 
	
	
		
			
				|  | @@ -185,6 +181,9 @@ public class SellOrderServiceImpl extends BaseServiceImpl<Integer, SellOrder> im
 | 
	
		
			
				|  |  |              BigDecimal routePrice = BigDecimal.ZERO;
 | 
	
		
			
				|  |  |              BigDecimal routeBalance = BigDecimal.ZERO;
 | 
	
		
			
				|  |  |              int j = 1;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            List<Integer> goodsIds = orderDetail.getGoodsList().stream().map(Goods::getId).collect(Collectors.toList());
 | 
	
		
			
				|  |  | +            List<SellOrder> sellOrderList = goodsService.subtractStock(goodsIds, accountType);
 | 
	
		
			
				|  |  |              for (Goods goods : orderDetail.getGoodsList()) {
 | 
	
		
			
				|  |  |                  BigDecimal expectAmount = BigDecimal.ZERO;
 | 
	
		
			
				|  |  |                  BigDecimal balance = BigDecimal.ZERO;
 | 
	
	
		
			
				|  | @@ -200,62 +199,74 @@ public class SellOrderServiceImpl extends BaseServiceImpl<Integer, SellOrder> im
 | 
	
		
			
				|  |  |                  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());
 | 
	
		
			
				|  |  | +                int complementGoodsNum = goods.getComplementGoodsIdList() == null ? 1 : goods.getComplementGoodsIdList().split(",").length;
 | 
	
		
			
				|  |  | +                BigDecimal complementPrice = goods.getGroupPurchasePrice();
 | 
	
		
			
				|  |  | +                Map<Integer, BigDecimal> complementGoodsPrice = new HashMap<>();
 | 
	
		
			
				|  |  | +                complementGoodsPrice.put(goods.getId(), goods.getGroupPurchasePrice());
 | 
	
		
			
				|  |  | +                if (goods.getComplementGoodsIdList() != null) {
 | 
	
		
			
				|  |  | +                    List<Goods> complementGoodies = goodsDao.findGoodsByIds(goods.getComplementGoodsIdList());
 | 
	
		
			
				|  |  | +                    complementGoodsPrice = complementGoodies.stream().collect(Collectors.toMap(Goods::getId, Goods::getGroupPurchasePrice));
 | 
	
		
			
				|  |  | +                    complementPrice = complementGoodies.stream().map(Goods::getGroupPurchasePrice).reduce(BigDecimal.ZERO, BigDecimal::add);
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  | -                sellOrder.setOrganId(studentPaymentOrder.getOrganId());
 | 
	
		
			
				|  |  | -                sellOrder.setTransNo(studentPaymentOrder.getTransNo());
 | 
	
		
			
				|  |  | -                sellOrder.setOrderId(studentPaymentOrder.getId());
 | 
	
		
			
				|  |  | -                if (musicGroup != null) {
 | 
	
		
			
				|  |  | -                    sellOrder.setCooperationOrganId(musicGroup.getCooperationOrganId());
 | 
	
		
			
				|  |  | -                    sellOrder.setEduTeacherId(musicGroup.getEducationalTeacherId());
 | 
	
		
			
				|  |  | -                }
 | 
	
		
			
				|  |  | -                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.setGoodsId(goods.getId());
 | 
	
		
			
				|  |  | -                sellOrder.setGoodsName(goods.getName());
 | 
	
		
			
				|  |  | -                sellOrder.setNum(1);
 | 
	
		
			
				|  |  | -                sellOrder.setUserId(studentPaymentOrder.getUserId());
 | 
	
		
			
				|  |  | -                sellOrder.setPaymentChannel(studentPaymentOrder.getPaymentChannel());
 | 
	
		
			
				|  |  | -                sellOrder.setMerNo(studentPaymentOrder.getMerNos());
 | 
	
		
			
				|  |  | -                sellOrder.setAccountType(accountType);
 | 
	
		
			
				|  |  | -                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);
 | 
	
		
			
				|  |  | -                }
 | 
	
		
			
				|  |  | -                //租赁、免费的没有销售收入,有销售成本
 | 
	
		
			
				|  |  | -                if (orderDetail.getType().equals(OrderDetailTypeEnum.MUSICAL) &&
 | 
	
		
			
				|  |  | -                        (orderDetail.getKitGroupPurchaseType().equals(KitGroupPurchaseTypeEnum.LEASE) ||
 | 
	
		
			
				|  |  | -                                orderDetail.getKitGroupPurchaseType().equals(KitGroupPurchaseTypeEnum.FREE)
 | 
	
		
			
				|  |  | -                        )) {
 | 
	
		
			
				|  |  | -                    sellOrder.setActualAmount(BigDecimal.ZERO);
 | 
	
		
			
				|  |  | -                    sellOrder.setBalanceAmount(BigDecimal.ZERO);
 | 
	
		
			
				|  |  | -                    sellOrder.setExpectAmount(BigDecimal.ZERO);
 | 
	
		
			
				|  |  | -                }
 | 
	
		
			
				|  |  | -                //库存类型
 | 
	
		
			
				|  |  | -                if (goods.getStockType().equals(StockType.ALL) && accountType.equals(AccountType.INTERNAL)) {
 | 
	
		
			
				|  |  | -                    sellOrder.setStockType(StockType.INTERNAL);
 | 
	
		
			
				|  |  | -                } else if (goods.getStockType().equals(StockType.ALL) && accountType.equals(AccountType.EXTERNAL)) {
 | 
	
		
			
				|  |  | -                    sellOrder.setStockType(StockType.EXTERNAL);
 | 
	
		
			
				|  |  | -                } else {
 | 
	
		
			
				|  |  | -                    sellOrder.setStockType(goods.getStockType());
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                BigDecimal hasRouteSellOrderActualAmount = BigDecimal.ZERO;
 | 
	
		
			
				|  |  | +                BigDecimal hasRouteSellOrderBalance = BigDecimal.ZERO;
 | 
	
		
			
				|  |  | +                for (SellOrder sellOrder : sellOrderList) {
 | 
	
		
			
				|  |  | +                    if (!goods.getId().equals(sellOrder.getParentGoodsId()) && !goods.getId().equals(sellOrder.getParentGoodsId())) {
 | 
	
		
			
				|  |  | +                        continue;
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                    BigDecimal sellOrderActualAmount = BigDecimal.ZERO;
 | 
	
		
			
				|  |  | +                    BigDecimal sellOrderBalance = BigDecimal.ZERO;
 | 
	
		
			
				|  |  | +                    if (complementPrice.compareTo(BigDecimal.ZERO) > 0) {
 | 
	
		
			
				|  |  | +                        sellOrderActualAmount = complementGoodsPrice.get(sellOrder.getGoodsId()).multiply(new BigDecimal(sellOrder.getNum())).multiply(expectAmount).divide(complementPrice, 2, BigDecimal.ROUND_HALF_UP);
 | 
	
		
			
				|  |  | +                        sellOrderBalance = complementGoodsPrice.get(sellOrder.getGoodsId()).multiply(new BigDecimal(sellOrder.getNum())).multiply(balance).divide(complementPrice, 2, BigDecimal.ROUND_HALF_UP);
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                    hasRouteSellOrderActualAmount = hasRouteSellOrderActualAmount.add(sellOrderActualAmount);
 | 
	
		
			
				|  |  | +                    hasRouteSellOrderBalance = hasRouteSellOrderBalance.add(sellOrderBalance);
 | 
	
		
			
				|  |  | +                    complementGoodsNum = complementGoodsNum - sellOrder.getNum();
 | 
	
		
			
				|  |  | +                    if (complementGoodsNum <= 0) {
 | 
	
		
			
				|  |  | +                        sellOrderActualAmount = expectAmount.subtract(hasRouteSellOrderActualAmount);
 | 
	
		
			
				|  |  | +                        sellOrderBalance = balance.subtract(hasRouteSellOrderActualAmount);
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                    sellOrder.setOrganId(studentPaymentOrder.getOrganId());
 | 
	
		
			
				|  |  | +                    sellOrder.setTransNo(studentPaymentOrder.getTransNo());
 | 
	
		
			
				|  |  | +                    sellOrder.setOrderId(studentPaymentOrder.getId());
 | 
	
		
			
				|  |  | +                    if (musicGroup != null) {
 | 
	
		
			
				|  |  | +                        sellOrder.setCooperationOrganId(musicGroup.getCooperationOrganId());
 | 
	
		
			
				|  |  | +                        sellOrder.setEduTeacherId(musicGroup.getEducationalTeacherId());
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                    sellOrder.setOrderNo(studentPaymentOrder.getOrderNo());
 | 
	
		
			
				|  |  | +                    sellOrder.setActualAmount(sellOrderActualAmount.subtract(sellOrderBalance));
 | 
	
		
			
				|  |  | +                    sellOrder.setBalanceAmount(sellOrderBalance);
 | 
	
		
			
				|  |  | +                    sellOrder.setExpectAmount(sellOrderActualAmount);
 | 
	
		
			
				|  |  | +                    sellOrder.setNum(1);
 | 
	
		
			
				|  |  | +                    sellOrder.setUserId(studentPaymentOrder.getUserId());
 | 
	
		
			
				|  |  | +                    sellOrder.setPaymentChannel(studentPaymentOrder.getPaymentChannel());
 | 
	
		
			
				|  |  | +                    sellOrder.setMerNo(studentPaymentOrder.getMerNos());
 | 
	
		
			
				|  |  | +                    sellOrder.setAccountType(accountType);
 | 
	
		
			
				|  |  | +                    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);
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                    //租赁、免费的没有销售收入,有销售成本
 | 
	
		
			
				|  |  | +                    if (orderDetail.getType().equals(OrderDetailTypeEnum.MUSICAL) &&
 | 
	
		
			
				|  |  | +                            (orderDetail.getKitGroupPurchaseType().equals(KitGroupPurchaseTypeEnum.LEASE) ||
 | 
	
		
			
				|  |  | +                                    orderDetail.getKitGroupPurchaseType().equals(KitGroupPurchaseTypeEnum.FREE)
 | 
	
		
			
				|  |  | +                            )) {
 | 
	
		
			
				|  |  | +                        sellOrder.setActualAmount(BigDecimal.ZERO);
 | 
	
		
			
				|  |  | +                        sellOrder.setBalanceAmount(BigDecimal.ZERO);
 | 
	
		
			
				|  |  | +                        sellOrder.setExpectAmount(BigDecimal.ZERO);
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  | -                //批次号 TODO
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -                sellOrders.add(sellOrder);
 | 
	
		
			
				|  |  | +                sellOrders.addAll(sellOrderList);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          if (sellOrders.size() > 0) {
 |