|  | @@ -139,48 +139,53 @@ public class MusicGroupCalenderRefundPeriodServiceImpl extends BaseServiceImpl<I
 | 
	
		
			
				|  |  |      @Override
 | 
	
		
			
				|  |  |      @Transactional(rollbackFor = Exception.class)
 | 
	
		
			
				|  |  |      public Boolean calcRefundAmount(Long calenderId,String orderNo, BigDecimal amount) {
 | 
	
		
			
				|  |  | -        //获取回款周期
 | 
	
		
			
				|  |  | -        List<MusicGroupCalenderRefundPeriod> refundPeriods = musicGroupCalenderRefundPeriodDao.findByCalenderId(calenderId);
 | 
	
		
			
				|  |  | -        Date date = new Date();
 | 
	
		
			
				|  |  | -        BigDecimal subAmount = amount;
 | 
	
		
			
				|  |  | -        for (int i = 0; i < refundPeriods.size(); i++) {
 | 
	
		
			
				|  |  | -            MusicGroupCalenderRefundPeriod refundPeriod = refundPeriods.get(i);
 | 
	
		
			
				|  |  | -            if(i == refundPeriods.size() - 1 && refundPeriod.getRefundFlag()){
 | 
	
		
			
				|  |  | -                refundPeriod.setIncome(refundPeriod.getIncome().add(subAmount));
 | 
	
		
			
				|  |  | -                if(StringUtils.isEmpty(refundPeriod.getOrderNos())){
 | 
	
		
			
				|  |  | -                    refundPeriod.setOrderNos(orderNo);
 | 
	
		
			
				|  |  | -                }else {
 | 
	
		
			
				|  |  | -                    refundPeriod.setOrderNos(refundPeriod.getOrderNos() + "," + orderNo);
 | 
	
		
			
				|  |  | +        if(calenderId != null){
 | 
	
		
			
				|  |  | +            //获取回款周期
 | 
	
		
			
				|  |  | +            List<MusicGroupCalenderRefundPeriod> refundPeriods = musicGroupCalenderRefundPeriodDao.findByCalenderId(calenderId);
 | 
	
		
			
				|  |  | +            if(CollectionUtils.isNotEmpty(refundPeriods)){
 | 
	
		
			
				|  |  | +                Date date = new Date();
 | 
	
		
			
				|  |  | +                BigDecimal subAmount = amount;
 | 
	
		
			
				|  |  | +                for (int i = 0; i < refundPeriods.size(); i++) {
 | 
	
		
			
				|  |  | +                    MusicGroupCalenderRefundPeriod refundPeriod = refundPeriods.get(i);
 | 
	
		
			
				|  |  | +                    if(i == refundPeriods.size() - 1 && refundPeriod.getRefundFlag()){
 | 
	
		
			
				|  |  | +                        refundPeriod.setIncome(refundPeriod.getIncome().add(subAmount));
 | 
	
		
			
				|  |  | +                        if(StringUtils.isEmpty(refundPeriod.getOrderNos())){
 | 
	
		
			
				|  |  | +                            refundPeriod.setOrderNos(orderNo);
 | 
	
		
			
				|  |  | +                        }else {
 | 
	
		
			
				|  |  | +                            refundPeriod.setOrderNos(refundPeriod.getOrderNos() + "," + orderNo);
 | 
	
		
			
				|  |  | +                        }
 | 
	
		
			
				|  |  | +                        refundPeriod.setUpdateTime(date);
 | 
	
		
			
				|  |  | +                        break;
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                    if(refundPeriod.getRefundFlag()){
 | 
	
		
			
				|  |  | +                        continue;
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                    if(subAmount.compareTo(refundPeriod.getSubRefundAmount()) >= 0){
 | 
	
		
			
				|  |  | +                        if(i == refundPeriods.size() - 1){
 | 
	
		
			
				|  |  | +                            refundPeriod.setIncome(refundPeriod.getIncome().add(subAmount));
 | 
	
		
			
				|  |  | +                            subAmount = BigDecimal.ZERO;
 | 
	
		
			
				|  |  | +                        }else {
 | 
	
		
			
				|  |  | +                            refundPeriod.setIncome(refundPeriod.getIncome().add(refundPeriod.getSubRefundAmount()));
 | 
	
		
			
				|  |  | +                            subAmount = subAmount.subtract(refundPeriod.getSubRefundAmount());
 | 
	
		
			
				|  |  | +                        }
 | 
	
		
			
				|  |  | +                        refundPeriod.setSubRefundAmount(BigDecimal.ZERO);
 | 
	
		
			
				|  |  | +                        refundPeriod.setRefundFlag(true);
 | 
	
		
			
				|  |  | +                    }else {
 | 
	
		
			
				|  |  | +                        refundPeriod.setIncome(refundPeriod.getIncome().add(subAmount));
 | 
	
		
			
				|  |  | +                        refundPeriod.setSubRefundAmount(refundPeriod.getSubRefundAmount().subtract(subAmount));
 | 
	
		
			
				|  |  | +                        subAmount = BigDecimal.ZERO;
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                    if(StringUtils.isEmpty(refundPeriod.getOrderNos())){
 | 
	
		
			
				|  |  | +                        refundPeriod.setOrderNos(orderNo);
 | 
	
		
			
				|  |  | +                    }else {
 | 
	
		
			
				|  |  | +                        refundPeriod.setOrderNos(refundPeriod.getOrderNos() + "," + orderNo);
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                    refundPeriod.setUpdateTime(date);
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  | -                refundPeriod.setUpdateTime(date);
 | 
	
		
			
				|  |  | -                break;
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | -            if(refundPeriod.getRefundFlag()){
 | 
	
		
			
				|  |  | -                continue;
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | -            if(subAmount.compareTo(refundPeriod.getSubRefundAmount()) >= 0){
 | 
	
		
			
				|  |  | -                if(i == refundPeriods.size() - 1){
 | 
	
		
			
				|  |  | -                    refundPeriod.setIncome(refundPeriod.getIncome().add(subAmount));
 | 
	
		
			
				|  |  | -                    subAmount = BigDecimal.ZERO;
 | 
	
		
			
				|  |  | -                }else {
 | 
	
		
			
				|  |  | -                    refundPeriod.setIncome(refundPeriod.getIncome().add(refundPeriod.getSubRefundAmount()));
 | 
	
		
			
				|  |  | -                    subAmount = subAmount.subtract(refundPeriod.getSubRefundAmount());
 | 
	
		
			
				|  |  | -                }
 | 
	
		
			
				|  |  | -                refundPeriod.setSubRefundAmount(BigDecimal.ZERO);
 | 
	
		
			
				|  |  | -                refundPeriod.setRefundFlag(true);
 | 
	
		
			
				|  |  | -            }else {
 | 
	
		
			
				|  |  | -                refundPeriod.setIncome(refundPeriod.getIncome().add(subAmount));
 | 
	
		
			
				|  |  | -                refundPeriod.setSubRefundAmount(refundPeriod.getSubRefundAmount().subtract(subAmount));
 | 
	
		
			
				|  |  | -                subAmount = BigDecimal.ZERO;
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | -            if(StringUtils.isEmpty(refundPeriod.getOrderNos())){
 | 
	
		
			
				|  |  | -                refundPeriod.setOrderNos(orderNo);
 | 
	
		
			
				|  |  | -            }else {
 | 
	
		
			
				|  |  | -                refundPeriod.setOrderNos(refundPeriod.getOrderNos() + "," + orderNo);
 | 
	
		
			
				|  |  | +                musicGroupCalenderRefundPeriodDao.batchUpdate(refundPeriods);
 | 
	
		
			
				|  |  | +                return refundPeriods.get(refundPeriods.size()-1).getRefundFlag();
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  | -            refundPeriod.setUpdateTime(date);
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | -        musicGroupCalenderRefundPeriodDao.batchUpdate(refundPeriods);
 | 
	
		
			
				|  |  | -        return refundPeriods.get(refundPeriods.size()-1).getRefundFlag();
 | 
	
		
			
				|  |  | +        return false;
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  }
 |