| 
					
				 | 
			
			
				@@ -57,6 +57,7 @@ public class SellOrderServiceImpl extends BaseServiceImpl<Integer, SellOrder> im 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             balance = BigDecimal.ZERO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         StudentPaymentOrder order = studentPaymentOrderDao.get(orderId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        BigDecimal totalActualAmount = order.getActualAmount() == null ? BigDecimal.ZERO : order.getActualAmount(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         MusicGroup musicGroup = new MusicGroup(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (StringUtils.isNotBlank(musicGroupId)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             musicGroup = musicGroupDao.get(musicGroupId); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -74,8 +75,14 @@ public class SellOrderServiceImpl extends BaseServiceImpl<Integer, SellOrder> im 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //已分配的商品余额 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         BigDecimal hasRouteBalance = BigDecimal.ZERO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //已分配的商品现金 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        BigDecimal hasRouteActualAmount= BigDecimal.ZERO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //商品占用的的余额 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         BigDecimal goodsTotalBalance = totalAmount.compareTo(BigDecimal.ZERO) <= 0 ? BigDecimal.ZERO : goodsTotalPrice.multiply(balance).divide(totalAmount, 2, BigDecimal.ROUND_DOWN); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //商品占用的总现金 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        BigDecimal goodsTotalActualAmount = totalAmount.compareTo(BigDecimal.ZERO) <= 0 ? BigDecimal.ZERO : goodsTotalPrice.multiply(totalActualAmount).divide(totalAmount, 2, BigDecimal.ROUND_DOWN); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         AccountType accountType = sysPaymentConfigService.checkAccountType(PaymentChannelEnum.valueOf(order.getPaymentChannel()), order.getMerNos()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         List<SellOrder> sellOrderList = goodsService.subtractStock(goodsIds, accountType); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -91,12 +98,19 @@ public class SellOrderServiceImpl extends BaseServiceImpl<Integer, SellOrder> im 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             goodsPrice = nowGoods.getDiscountPrice(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //当前商品占用的总余额 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             BigDecimal goodsBalance = goodsTotalPrice.compareTo(BigDecimal.ZERO) <= 0 ? BigDecimal.ZERO : 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     goodsTotalBalance.multiply(goodsPrice).divide(goodsTotalPrice, 2, BigDecimal.ROUND_DOWN); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //当前商品占用的总现金 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            BigDecimal goodsActualAmount = goodsTotalPrice.compareTo(BigDecimal.ZERO) <= 0 ? BigDecimal.ZERO : 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    goodsTotalActualAmount.multiply(goodsPrice).divide(goodsTotalPrice, 2, BigDecimal.ROUND_DOWN); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if (i == goodsNum) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 goodsBalance = goodsTotalBalance.subtract(hasRouteBalance); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                goodsActualAmount = goodsTotalActualAmount.subtract(hasRouteActualAmount); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             hasRouteBalance = hasRouteBalance.add(goodsBalance); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            hasRouteActualAmount = hasRouteActualAmount.add(hasRouteActualAmount); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             i++; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             int complementGoodsNum = nowGoods.getComplementGoodsIdList() == null ? 1 : nowGoods.getComplementGoodsIdList().split(",").length; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -121,21 +135,21 @@ public class SellOrderServiceImpl extends BaseServiceImpl<Integer, SellOrder> im 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 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_DOWN); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    sellOrderActualAmount = complementGoodsPrice.get(sellOrder.getGoodsId()).multiply(new BigDecimal(sellOrder.getNum())).multiply(goodsActualAmount).divide(complementPrice, 2, BigDecimal.ROUND_DOWN); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     sellOrderBalance = complementGoodsPrice.get(sellOrder.getGoodsId()).multiply(new BigDecimal(sellOrder.getNum())).multiply(goodsBalance).divide(complementPrice, 2, BigDecimal.ROUND_DOWN); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 complementGoodsNum = complementGoodsNum - sellOrder.getNum(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 if (complementGoodsNum <= 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    sellOrderActualAmount = goodsPrice.subtract(hasRouteSellOrderActualAmount); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    sellOrderActualAmount = goodsActualAmount.subtract(hasRouteSellOrderActualAmount); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     sellOrderBalance = goodsBalance.subtract(hasRouteSellOrderBalance); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 hasRouteSellOrderActualAmount = hasRouteSellOrderActualAmount.add(sellOrderActualAmount); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 hasRouteSellOrderBalance = hasRouteSellOrderBalance.add(sellOrderBalance); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                sellOrder.setExpectAmount(sellOrderActualAmount); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                sellOrder.setExpectAmount(sellOrderActualAmount.add(sellOrderBalance)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 sellOrder.setBalanceAmount(sellOrderBalance); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                sellOrder.setActualAmount(sellOrderActualAmount.subtract(sellOrderBalance)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                sellOrder.setActualAmount(sellOrderActualAmount); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 sellOrder.setOrganId(order.getOrganId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 sellOrder.setCooperationOrganId(musicGroup.getCooperationOrganId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 sellOrder.setTransNo(order.getTransNo()); 
			 |