| 
					
				 | 
			
			
				@@ -13,6 +13,7 @@ import static com.ym.mec.biz.dal.enums.PaymentStatusEnum.YES; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import java.math.BigDecimal; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import java.util.*; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import java.util.Map.Entry; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.util.function.Consumer; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import java.util.stream.Collectors; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.alibaba.fastjson.JSONObject; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -68,8 +69,6 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	@Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	private MusicGroupOrganizationCourseSettingsDetailDao musicGroupOrganizationCourseSettingsDetailDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	@Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	private MusicGroupOrganizationCourseSettingsService musicGroupOrganizationCourseSettingsService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	@Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	private OrganizationCourseUnitPriceSettingsDao organizationCourseUnitPriceSettingsDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	@Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	private MusicGroupPaymentStudentCourseDetailDao musicGroupPaymentStudentCourseDetailDao; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -129,10 +128,6 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	private CloudTeacherOrderDao cloudTeacherOrderDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	@Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	private MusicGroupPaymentCalenderActivityService musicGroupPaymentCalenderActivityService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	@Resource(name = "musicRepairService") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	private MusicGroupPaymentCalenderBaseService musicRepairService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	@Resource(name = "memberCalenderService") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	private MusicGroupPaymentCalenderBaseService memberCalenderService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	@Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	public BaseDAO<Long, MusicGroupPaymentCalender> getDAO() { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -566,24 +561,29 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		PaymentCalenderStatusEnum status = PaymentCalenderStatusEnum.NO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		Date date = new Date(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		String batchNo = idGeneratorService.generatorId() + ""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		BigDecimal originalMemberPaymentAmount = BigDecimal.ZERO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		//检测缴费项目是否有费用变更 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		Map<CalenderBaseServiceEnum, MusicGroupPaymentCalenderBaseService> calenderBaseServiceMap = MusicGroupPaymentCalenderBaseService.calenderBaseServiceMap; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		if (musicGroupPaymentBaseCalender.getPayUserType() == SCHOOL) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			status = AUDITING; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		} else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			status = memberCalenderService.checkComponentAmount(musicGroupPaymentBaseCalender); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			status = calenderBaseServiceMap.get(CalenderBaseServiceEnum.MEMBER).checkComponentAmount(musicGroupPaymentBaseCalender); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			if(status != AUDITING){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				status = ((MusicGroupPaymentCalenderCourseSettingsServiceImpl)musicGroupPaymentCalenderCourseSettingsService).checkComponentAmount(musicGroupPaymentBaseCalender); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				status = calenderBaseServiceMap.get(CalenderBaseServiceEnum.COURSE).checkComponentAmount(musicGroupPaymentBaseCalender); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			if(status != AUDITING){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				status = musicRepairService.checkComponentAmount(musicGroupPaymentBaseCalender); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				status = calenderBaseServiceMap.get(CalenderBaseServiceEnum.MUSIC_REPAIR).checkComponentAmount(musicGroupPaymentBaseCalender); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		//计算缴费项目总金额 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		BigDecimal totalPaymentAmount = BigDecimal.ZERO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		totalPaymentAmount = totalPaymentAmount.add(calenderBaseServiceMap.get(CalenderBaseServiceEnum.MEMBER).getActualAmount(musicGroupPaymentBaseCalender)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		totalPaymentAmount = totalPaymentAmount.add(((MusicGroupPaymentCalenderCourseSettingsServiceImpl)musicGroupPaymentCalenderCourseSettingsService).getActualAmount(musicGroupPaymentBaseCalender)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		totalPaymentAmount = totalPaymentAmount.add(calenderBaseServiceMap.get(CalenderBaseServiceEnum.MUSIC_REPAIR).getActualAmount(musicGroupPaymentBaseCalender)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		totalPaymentAmount = totalPaymentAmount.add(calenderBaseServiceMap.get(CalenderBaseServiceEnum.ACTIVITY).getActualAmount(musicGroupPaymentBaseCalender)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		Date date = new Date(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		MusicGroupPaymentCalender musicGroupPaymentCalender = new MusicGroupPaymentCalender(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		musicGroupPaymentCalender.setOriginalMemberPaymentAmount(originalMemberPaymentAmount); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		musicGroupPaymentCalender.setDeadlinePaymentDate(musicGroupPaymentBaseCalender.getDeadlinePaymentDate()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		musicGroupPaymentCalender.setMemo(musicGroupPaymentBaseCalender.getMemo()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		musicGroupPaymentCalender.setMusicGroupId(musicGroupId); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -593,14 +593,7 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		musicGroupPaymentCalender.setOperator(sysUser.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		musicGroupPaymentCalender.setCreateTime(date); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		musicGroupPaymentCalender.setUpdateTime(date); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		musicGroupPaymentCalender.setStatus(status); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		musicGroupPaymentCalender.setPaymentType(musicGroupPaymentBaseCalender.getPaymentType()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		BigDecimal totalPaymentAmount = BigDecimal.ZERO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		totalPaymentAmount = totalPaymentAmount.add(memberCalenderService.getActualAmount(musicGroupPaymentBaseCalender)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		totalPaymentAmount = totalPaymentAmount.add(((MusicGroupPaymentCalenderCourseSettingsServiceImpl)musicGroupPaymentCalenderCourseSettingsService).getActualAmount(musicGroupPaymentBaseCalender)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		totalPaymentAmount = totalPaymentAmount.add(musicRepairService.getActualAmount(musicGroupPaymentBaseCalender)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		totalPaymentAmount = totalPaymentAmount.add(((MusicGroupPaymentCalenderActivityServiceImpl)musicGroupPaymentCalenderActivityService).getActualAmount(musicGroupPaymentBaseCalender)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		musicGroupPaymentCalender.setPaymentAmount(totalPaymentAmount); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		//会员缴费信息 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -612,6 +605,7 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			musicGroupPaymentCalender.setMemberValidDate(calenderMember.getMemberNum()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			musicGroupPaymentCalender.setMemberPeriod(calenderMember.getPeriodEnum()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			musicGroupPaymentCalender.setMemberOptionalFlag(calenderMember.getOptionalFlag()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			musicGroupPaymentCalender.setOriginalMemberPaymentAmount(calenderMember.getOriginalAmount()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		//乐保缴费信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		MusicRepairDto musicRepair = musicGroupPaymentBaseCalender.getMusicRepair(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -620,6 +614,7 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			musicGroupPaymentCalender.setMusicRepairActualPrice(musicRepair.getActualAmount()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			musicGroupPaymentCalender.setMusicRepairOptionalFlag(musicRepair.getOptionalFlag()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		musicGroupPaymentCalender.setStatus(status); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 //		BigDecimal totalPaymentAmount = musicGroupPaymentCalenderDto.getMasterTotalPrice(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 //		if(musicGroupPaymentCalenderCourseSettingsList != null){ 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -663,6 +658,7 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		// 设置批次号 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		String batchNo = idGeneratorService.generatorId() + ""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		musicGroupPaymentCalender.setBatchNo(batchNo); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		musicGroupPaymentCalenderDao.insert(musicGroupPaymentCalender); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1178,18 +1174,16 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 						CloudTeacherOrder cloudTeacherOrder = new CloudTeacherOrder(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 						cloudTeacherOrder.setLevel(musicGroupPaymentCalender.getMemberRankSettingId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 						cloudTeacherOrder.setOrganId(musicGroup.getOrganId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						cloudTeacherOrder.setType(2); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						cloudTeacherOrder.setType(musicGroupPaymentCalender.getMemberPeriod()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 						cloudTeacherOrder.setStudentId(Integer.parseInt(studentId)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 						cloudTeacherOrder.setOrderId(musicGroup.getOrganId().longValue()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 						cloudTeacherOrder.setTime(musicGroupPaymentCalender.getMemberValidDate()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 						cloudTeacherOrder.setAmount(expectMemberAmount); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						cloudTeacherOrder.setStatus(2); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						cloudTeacherOrder.setStartTime(date); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						cloudTeacherOrder.setEndTime(DateUtil.addMonths(date,musicGroupPaymentCalender.getMemberValidDate())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						cloudTeacherOrder.setStatus(1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 						cloudTeacherOrder.setRemark("进行中乐团0元加学生"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 						cloudTeacherOrder.setMusicGroupId(musicGroup.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 						cloudTeacherOrderDao.insert(cloudTeacherOrder); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						studentService.updateMemberRank(cloudTeacherOrder,PeriodEnum.MONTH); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//						studentService.updateMemberRank(cloudTeacherOrder); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 					} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 					MusicGroupStudentFee musicGroupStudentFee = musicGroupStudentFeeDao.findByUser(Integer.parseInt(studentId), musicGroupPaymentCalender.getMusicGroupId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 					if (musicGroupStudentFee != null) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1705,16 +1699,12 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		if (calender == null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			throw new BizException("缴费信息不存在"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		//缴费项目中没有学生即可删除缴费项目 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		List<MusicGroupPaymentCalenderDetail> musicGroupPaymentCalenderDetailList = musicGroupPaymentCalenderDetailDao.queryByCalenderId(id, null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		if (musicGroupPaymentCalenderDetailList != null && musicGroupPaymentCalenderDetailList.size() > 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			throw new BizException("缴费项目中已存在学员,不能删除"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//		if (calender.getStatus() != PaymentCalenderStatusEnum.AUDITING && calender.getStatus() != PaymentCalenderStatusEnum.NO 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//				&& calender.getStatus() != PaymentCalenderStatusEnum.REJECT && calender.getStatus() != DRAFT) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//			throw new BizException("删除失败,{} 的缴费项目不允许删除",calender.getStatus().getDesc()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		MusicGroupStudentClassAdjust byBatchNo = musicGroupStudentClassAdjustDao.findByBatchNo(calender.getBatchNo()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		if(byBatchNo != null){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			throw new BizException("删除失败,班级调整的缴费项目不允许删除"); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1732,7 +1722,7 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		musicGroupPaymentCalenderDao.delete(id); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		musicGroupPaymentCalenderDetailDao.deleteByCalenderId(id); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		musicGroupPaymentStudentCourseDetailDao.deleteByMusicGroupPaymentCalenderId(id); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		musicGroupPaymentCalenderActivityService.delByCalenderId(id); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		List<Long> calenderIds = new ArrayList<Long>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		calenderIds.add(id); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		musicGroupPaymentCalenderCourseSettingsService.deleteByMusicGroupPaymentCalenderId(calenderIds); 
			 |