|  | @@ -119,8 +119,11 @@ public class StudentRepairServiceImpl extends BaseServiceImpl<Integer, StudentRe
 | 
	
		
			
				|  |  |              if (orderByOrderNo.getBalancePaymentAmount() != null && orderByOrderNo.getBalancePaymentAmount().compareTo(BigDecimal.ZERO) > 0) {
 | 
	
		
			
				|  |  |                  sysUserCashAccountService.updateBalance(orderByOrderNo.getUserId(), orderByOrderNo.getBalancePaymentAmount(), PlatformCashAccountDetailTypeEnum.REFUNDS, "关闭订单");
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  | -            studentGoodsSell = studentGoodsSellDao.findByOrderNo(studentGoodsSell.getOrderNo());
 | 
	
		
			
				|  |  | -            studentGoodsSell.setGoodsSellDtos(JSON.parseArray(studentGoodsSell.getGoodsJson(),GoodsSellDto.class));
 | 
	
		
			
				|  |  | +            StudentGoodsSell byOrderNo = studentGoodsSellDao.findByOrderNo(studentGoodsSell.getOrderNo());
 | 
	
		
			
				|  |  | +            if(byOrderNo != null){
 | 
	
		
			
				|  |  | +                studentGoodsSell = byOrderNo;
 | 
	
		
			
				|  |  | +                studentGoodsSell.setGoodsSellDtos(JSON.parseArray(byOrderNo.getGoodsJson(),GoodsSellDto.class));
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          Integer studentId = studentGoodsSell.getUserId();
 | 
	
		
			
				|  |  |          List<GoodsSellDto> goodsSellDtos = studentGoodsSell.getGoodsSellDtos();
 | 
	
	
		
			
				|  | @@ -743,7 +746,9 @@ public class StudentRepairServiceImpl extends BaseServiceImpl<Integer, StudentRe
 | 
	
		
			
				|  |  |          Map<Integer, List<Goods>> goodsMap = goodsByIds.stream().collect(Collectors.groupingBy(Goods::getId));
 | 
	
		
			
				|  |  |          Map<String, BigDecimal> costMap = new HashMap<>(2);
 | 
	
		
			
				|  |  |          List<SellOrder> sellOrders = new ArrayList<>();
 | 
	
		
			
				|  |  | -        goodsId.forEach(e->{
 | 
	
		
			
				|  |  | +        BigDecimal balancePaymentAmount = orderByOrderNo.getBalancePaymentAmount();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        for (Integer e : goodsId) {
 | 
	
		
			
				|  |  |              GoodsSellDto goodsSellDto = collect.get(e).get(0);
 | 
	
		
			
				|  |  |              Goods goods = goodsMap.get(e).get(0);
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -756,9 +761,24 @@ public class StudentRepairServiceImpl extends BaseServiceImpl<Integer, StudentRe
 | 
	
		
			
				|  |  |              sellOrder.setTransNo(orderByOrderNo.getTransNo());
 | 
	
		
			
				|  |  |              sellOrder.setOrderId(orderByOrderNo.getId());
 | 
	
		
			
				|  |  |              sellOrder.setOrderNo(orderByOrderNo.getOrderNo());
 | 
	
		
			
				|  |  | -            sellOrder.setExpectAmount(orderByOrderNo.getExpectAmount());
 | 
	
		
			
				|  |  | -            sellOrder.setActualAmount(orderByOrderNo.getActualAmount());
 | 
	
		
			
				|  |  | -            sellOrder.setBalanceAmount(orderByOrderNo.getBalancePaymentAmount());
 | 
	
		
			
				|  |  | +            sellOrder.setExpectAmount(goodsSellDto.getTotalGoodsPrice());
 | 
	
		
			
				|  |  | +            //如果没有使用余额,那么实际金额和预计金额一致
 | 
	
		
			
				|  |  | +            if(balancePaymentAmount.doubleValue() == 0l){
 | 
	
		
			
				|  |  | +                sellOrder.setActualAmount(goodsSellDto.getTotalGoodsPrice());
 | 
	
		
			
				|  |  | +                sellOrder.setBalanceAmount(BigDecimal.ZERO);
 | 
	
		
			
				|  |  | +            }else {
 | 
	
		
			
				|  |  | +                //余额大于等于商品总价
 | 
	
		
			
				|  |  | +                if(balancePaymentAmount.compareTo(goodsSellDto.getTotalGoodsPrice()) >= 1){
 | 
	
		
			
				|  |  | +                    sellOrder.setActualAmount(BigDecimal.ZERO);
 | 
	
		
			
				|  |  | +                    sellOrder.setBalanceAmount(goodsSellDto.getTotalGoodsPrice());
 | 
	
		
			
				|  |  | +                    balancePaymentAmount = balancePaymentAmount.subtract(goodsSellDto.getTotalGoodsPrice());
 | 
	
		
			
				|  |  | +                }else {
 | 
	
		
			
				|  |  | +                    //余额小于商品总价
 | 
	
		
			
				|  |  | +                    sellOrder.setActualAmount(goodsSellDto.getTotalGoodsPrice().subtract(balancePaymentAmount));
 | 
	
		
			
				|  |  | +                    sellOrder.setBalanceAmount(balancePaymentAmount);
 | 
	
		
			
				|  |  | +                    balancePaymentAmount = BigDecimal.ZERO;
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  |              sellOrder.setSellCost(goods.getDiscountPrice());
 | 
	
		
			
				|  |  |              sellOrder.setSellCost2(JSONObject.toJSONString(costMap));
 | 
	
		
			
				|  |  |              sellOrder.setType(SellTypeEnum.valueOf(goods.getType().getCode()));
 | 
	
	
		
			
				|  | @@ -772,7 +792,7 @@ public class StudentRepairServiceImpl extends BaseServiceImpl<Integer, StudentRe
 | 
	
		
			
				|  |  |              sellOrder.setEduTeacherId(studentGoodsSell.getTeacherId());
 | 
	
		
			
				|  |  |              sellOrder.setCooperationOrganId(studentGoodsSell.getCooperationOrganId());
 | 
	
		
			
				|  |  |              sellOrders.add(sellOrder);
 | 
	
		
			
				|  |  | -        });
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  |          if(sellOrders.size() > 0){
 | 
	
		
			
				|  |  |              sellOrderService.batchInsert(sellOrders);
 | 
	
		
			
				|  |  |          }
 |