|  | @@ -151,7 +151,6 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
 | 
	
		
			
				|  |  |      private GoodsDao goodsDao;
 | 
	
		
			
				|  |  |      @Autowired
 | 
	
		
			
				|  |  |      private SellOrderService sellOrderService;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |      @Autowired
 | 
	
		
			
				|  |  |      private SysAreaService sysAreaService;
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -1153,14 +1152,42 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      public void saveSellOrder(List<MusicGroupPaymentCalenderGoods> goods, StudentPaymentOrder studentPaymentOrder) {
 | 
	
		
			
				|  |  |          List<SellOrder> sellOrderList = new ArrayList<>();
 | 
	
		
			
				|  |  | -        for (MusicGroupPaymentCalenderGoods calenderGood : goods) {
 | 
	
		
			
				|  |  | +        BigDecimal originalTotalAmount = goods.stream().map(e -> e.getTotalPrice()).reduce(BigDecimal.ZERO, BigDecimal::add);
 | 
	
		
			
				|  |  | +        //获取优惠金额
 | 
	
		
			
				|  |  | +        BigDecimal totalDiscountAmount = originalTotalAmount.subtract(studentPaymentOrder.getExpectAmount());
 | 
	
		
			
				|  |  | +        //待分配优惠
 | 
	
		
			
				|  |  | +        BigDecimal waitDiscountAmount = totalDiscountAmount;
 | 
	
		
			
				|  |  | +        for (int k = 0; k < goods.size(); k++) {
 | 
	
		
			
				|  |  | +            MusicGroupPaymentCalenderGoods calenderGood = goods.get(k);
 | 
	
		
			
				|  |  | +            //获取比例
 | 
	
		
			
				|  |  | +            BigDecimal totalProportion = BigDecimal.ZERO;
 | 
	
		
			
				|  |  | +            if(studentPaymentOrder.getExpectAmount().compareTo(BigDecimal.ZERO) > 0){
 | 
	
		
			
				|  |  | +                totalProportion = calenderGood.getTotalPrice().divide(originalTotalAmount, 6, RoundingMode.DOWN);
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            //获取现价
 | 
	
		
			
				|  |  | +            BigDecimal currentTotalAmount;
 | 
	
		
			
				|  |  | +            if (k == goods.size() - 1) {
 | 
	
		
			
				|  |  | +                currentTotalAmount = calenderGood.getTotalPrice().subtract(waitDiscountAmount);
 | 
	
		
			
				|  |  | +            } else {
 | 
	
		
			
				|  |  | +                BigDecimal amount = totalDiscountAmount.multiply(totalProportion).setScale(2, RoundingMode.DOWN);
 | 
	
		
			
				|  |  | +                waitDiscountAmount = waitDiscountAmount.subtract(amount);
 | 
	
		
			
				|  |  | +                currentTotalAmount = calenderGood.getTotalPrice().subtract(amount);
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            BigDecimal subCurrentTotalAmount = currentTotalAmount;
 | 
	
		
			
				|  |  |              //待分配金额
 | 
	
		
			
				|  |  |              for (Integer i = 0; i < calenderGood.getNum(); i++) {
 | 
	
		
			
				|  |  |                  List<ComplementGoodsDto> goodsDtoList = JSON.parseArray(calenderGood.getChildGoodsJson(), ComplementGoodsDto.class);
 | 
	
		
			
				|  |  |                  //获取总成本
 | 
	
		
			
				|  |  |                  BigDecimal totalCostPrice = goodsDtoList.stream().map(e->e.getOrganCostPrice()).reduce(BigDecimal.ZERO, BigDecimal::add);
 | 
	
		
			
				|  |  |                  //待分配金额
 | 
	
		
			
				|  |  | -                BigDecimal totalAmount = calenderGood.getSinglePrice();
 | 
	
		
			
				|  |  | +                BigDecimal totalAmount;
 | 
	
		
			
				|  |  | +                if(i == calenderGood.getNum() - 1){
 | 
	
		
			
				|  |  | +                    totalAmount = subCurrentTotalAmount;
 | 
	
		
			
				|  |  | +                }else {
 | 
	
		
			
				|  |  | +                    BigDecimal divide = currentTotalAmount.divide(new BigDecimal(calenderGood.getNum()), 2, RoundingMode.DOWN);
 | 
	
		
			
				|  |  | +                    totalAmount = divide;
 | 
	
		
			
				|  |  | +                    subCurrentTotalAmount = subCurrentTotalAmount.subtract(divide);
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  |                  BigDecimal waitAmount = totalAmount;
 | 
	
		
			
				|  |  |                  for (int j = 0; j < goodsDtoList.size(); j++) {
 | 
	
		
			
				|  |  |                      ComplementGoodsDto goodsDto = goodsDtoList.get(j);
 | 
	
	
		
			
				|  | @@ -1245,7 +1272,7 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
 | 
	
		
			
				|  |  |          OrderCreate orderCreate = new OrderCreate();
 | 
	
		
			
				|  |  |          orderCreate.setOrderNo(address.getOrderNo());
 | 
	
		
			
				|  |  |          orderCreate.setOrchestraId(musicGroup.getId());
 | 
	
		
			
				|  |  | -        orderCreate.setMemberId(musicGroup.getSchoolId().longValue());
 | 
	
		
			
				|  |  | +        orderCreate.setMemberId(musicGroup.getCooperationOrganId().longValue());
 | 
	
		
			
				|  |  |          orderCreate.setTotalAmount(calender.getCurrentTotalAmount());
 | 
	
		
			
				|  |  |          orderCreate.setOrderFormType("MEC");
 | 
	
		
			
				|  |  |          orderCreate.setPlatformType("SCHOOL");
 |