|  | @@ -256,7 +256,7 @@ public class IndexBaseMonthDataServiceImpl extends BaseServiceImpl<Long, IndexBa
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	@Override
 | 
	
		
			
				|  |  |  	@Transactional(rollbackFor = Exception.class)
 | 
	
		
			
				|  |  | -	public void indexBaseDataTask(String dayStr) {
 | 
	
		
			
				|  |  | +	public void indexBaseDataTask(String dayStr, Set<IndexDataType> dataTypes) {
 | 
	
		
			
				|  |  |  		LocalDate nowDate = LocalDate.now();
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  		List<Organization> allOrgans = organizationDao.findAllOrgans();
 | 
	
	
		
			
				|  | @@ -273,31 +273,63 @@ public class IndexBaseMonthDataServiceImpl extends BaseServiceImpl<Long, IndexBa
 | 
	
		
			
				|  |  |  		LocalDate monday = day.with(DateUtil.weekFields.dayOfWeek(), DayOfWeek.MONDAY.getValue());
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  		//学员数据
 | 
	
		
			
				|  |  | -		saveData(indexBaseMonthDataDao.getStudentRegistrationData(dayStr), dayStr, IndexDataType.STUDENT_REGISTRATION_NUM);
 | 
	
		
			
				|  |  | -		saveData(indexBaseMonthDataDao.getChargeStudentChangeData(dayStr), dayStr, IndexDataType.CHARGE_STUDENT_CHANGE_RATE);
 | 
	
		
			
				|  |  | -		saveData(indexBaseMonthDataDao.getStudentSignUpData(dayStr, nowDate.plusMonths(-6).toString()), dayStr, IndexDataType.ACTIVATION_RATE);
 | 
	
		
			
				|  |  | +		if(CollectionUtils.isEmpty(dataTypes)||dataTypes.contains(IndexDataType.STUDENT_REGISTRATION_NUM)){
 | 
	
		
			
				|  |  | +			saveData(indexBaseMonthDataDao.getStudentRegistrationData(dayStr), dayStr, IndexDataType.STUDENT_REGISTRATION_NUM);
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +		if(CollectionUtils.isEmpty(dataTypes)||dataTypes.contains(IndexDataType.CHARGE_STUDENT_CHANGE_RATE)) {
 | 
	
		
			
				|  |  | +			saveData(indexBaseMonthDataDao.getChargeStudentChangeData(dayStr), dayStr, IndexDataType.CHARGE_STUDENT_CHANGE_RATE);
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +		if(CollectionUtils.isEmpty(dataTypes)||dataTypes.contains(IndexDataType.ACTIVATION_RATE)) {
 | 
	
		
			
				|  |  | +			saveData(indexBaseMonthDataDao.getStudentSignUpData(dayStr, nowDate.plusMonths(-6).toString()), dayStr, IndexDataType.ACTIVATION_RATE);
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  		//运营数据
 | 
	
		
			
				|  |  | -		saveData(indexBaseMonthDataDao.getSchoolData(dayStr), dayStr, IndexDataType.SCHOOL);
 | 
	
		
			
				|  |  | -		saveData(indexBaseMonthDataDao.getMusicData(dayStr), dayStr, IndexDataType.PROGRESS_MUSIC_GROUP_NUM);
 | 
	
		
			
				|  |  | +		if(CollectionUtils.isEmpty(dataTypes)||dataTypes.contains(IndexDataType.SCHOOL)) {
 | 
	
		
			
				|  |  | +			saveData(indexBaseMonthDataDao.getSchoolData(dayStr), dayStr, IndexDataType.SCHOOL);
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +		if(CollectionUtils.isEmpty(dataTypes)||dataTypes.contains(IndexDataType.PROGRESS_MUSIC_GROUP_NUM)) {
 | 
	
		
			
				|  |  | +			saveData(indexBaseMonthDataDao.getMusicData(dayStr), dayStr, IndexDataType.PROGRESS_MUSIC_GROUP_NUM);
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  		//人事数据
 | 
	
		
			
				|  |  | -		saveData(indexBaseMonthDataDao.getTeacherData(dayStr, null, null), dayStr, IndexDataType.TEACHER_NUM);
 | 
	
		
			
				|  |  | -		saveData(indexBaseMonthDataDao.getTeacherData(dayStr, JobNatureEnum.FULL_TIME, null), dayStr, IndexDataType.FULL_TIME_NUM);
 | 
	
		
			
				|  |  | -		saveData(indexBaseMonthDataDao.getTeacherData(dayStr, JobNatureEnum.PART_TIME, null), dayStr, IndexDataType.PART_TIME_NUM);
 | 
	
		
			
				|  |  | +		if(CollectionUtils.isEmpty(dataTypes)||dataTypes.contains(IndexDataType.TEACHER_NUM)) {
 | 
	
		
			
				|  |  | +			saveData(indexBaseMonthDataDao.getTeacherData(dayStr, null, null), dayStr, IndexDataType.TEACHER_NUM);
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +		if(CollectionUtils.isEmpty(dataTypes)||dataTypes.contains(IndexDataType.FULL_TIME_NUM)) {
 | 
	
		
			
				|  |  | +			saveData(indexBaseMonthDataDao.getTeacherData(dayStr, JobNatureEnum.FULL_TIME, null), dayStr, IndexDataType.FULL_TIME_NUM);
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +		if(CollectionUtils.isEmpty(dataTypes)||dataTypes.contains(IndexDataType.PART_TIME_NUM)) {
 | 
	
		
			
				|  |  | +			saveData(indexBaseMonthDataDao.getTeacherData(dayStr, JobNatureEnum.PART_TIME, null), dayStr, IndexDataType.PART_TIME_NUM);
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  |  //		saveData(indexBaseMonthDataDao.getTeacherData(dayStr, null, true), dayStr, IndexDataType.DIMISSION_NUM);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  		//剩余课时
 | 
	
		
			
				|  |  | -		saveData(indexBaseMonthDataDao.getGroupCourseData(dayStr, null, CourseStatusEnum.NOT_START), dayStr, IndexDataType.SURPLUS_COURSE_NUM);
 | 
	
		
			
				|  |  | -		saveData(indexBaseMonthDataDao.getGroupCourseData(dayStr, GroupType.MUSIC, CourseStatusEnum.NOT_START), dayStr, IndexDataType.SURPLUS_MUSIC_COURSE_NUM);
 | 
	
		
			
				|  |  | -		saveData(indexBaseMonthDataDao.getGroupCourseData(dayStr, GroupType.VIP, CourseStatusEnum.NOT_START), dayStr, IndexDataType.SURPLUS_VIP_COURSE_NUM);
 | 
	
		
			
				|  |  | -		saveData(indexBaseMonthDataDao.getGroupCourseData(dayStr, GroupType.PRACTICE, CourseStatusEnum.NOT_START), dayStr, IndexDataType.SURPLUS_PRACTICE_COURSE_NUM);
 | 
	
		
			
				|  |  | +		if(CollectionUtils.isEmpty(dataTypes)||dataTypes.contains(IndexDataType.SURPLUS_COURSE_NUM)) {
 | 
	
		
			
				|  |  | +			saveData(indexBaseMonthDataDao.getGroupCourseData(dayStr, null, CourseStatusEnum.NOT_START), dayStr, IndexDataType.SURPLUS_COURSE_NUM);
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +		if(CollectionUtils.isEmpty(dataTypes)||dataTypes.contains(IndexDataType.SURPLUS_MUSIC_COURSE_NUM)) {
 | 
	
		
			
				|  |  | +			saveData(indexBaseMonthDataDao.getGroupCourseData(dayStr, GroupType.MUSIC, CourseStatusEnum.NOT_START), dayStr, IndexDataType.SURPLUS_MUSIC_COURSE_NUM);
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +		if(CollectionUtils.isEmpty(dataTypes)||dataTypes.contains(IndexDataType.SURPLUS_VIP_COURSE_NUM)) {
 | 
	
		
			
				|  |  | +			saveData(indexBaseMonthDataDao.getGroupCourseData(dayStr, GroupType.VIP, CourseStatusEnum.NOT_START), dayStr, IndexDataType.SURPLUS_VIP_COURSE_NUM);
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +		if(CollectionUtils.isEmpty(dataTypes)||dataTypes.contains(IndexDataType.SURPLUS_PRACTICE_COURSE_NUM)) {
 | 
	
		
			
				|  |  | +			saveData(indexBaseMonthDataDao.getGroupCourseData(dayStr, GroupType.PRACTICE, CourseStatusEnum.NOT_START), dayStr, IndexDataType.SURPLUS_PRACTICE_COURSE_NUM);
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  		//已消耗课时
 | 
	
		
			
				|  |  | -		saveData(indexBaseMonthDataDao.getGroupSurplusCourseData(dayStr, null, CourseStatusEnum.OVER), dayStr, IndexDataType.OVER_COURSE_NUM);
 | 
	
		
			
				|  |  | -		saveData(indexBaseMonthDataDao.getGroupSurplusCourseData(dayStr, GroupType.MUSIC, CourseStatusEnum.OVER), dayStr, IndexDataType.OVER_MUSIC_COURSE_NUM);
 | 
	
		
			
				|  |  | -		saveData(indexBaseMonthDataDao.getGroupSurplusCourseData(dayStr, GroupType.VIP, CourseStatusEnum.OVER), dayStr, IndexDataType.OVER_VIP_COURSE_NUM);
 | 
	
		
			
				|  |  | -		saveData(indexBaseMonthDataDao.getGroupSurplusCourseData(dayStr, GroupType.PRACTICE, CourseStatusEnum.OVER), dayStr, IndexDataType.OVER_PRACTICE_COURSE_NUM);
 | 
	
		
			
				|  |  | +		if(CollectionUtils.isEmpty(dataTypes)||dataTypes.contains(IndexDataType.OVER_COURSE_NUM)) {
 | 
	
		
			
				|  |  | +			saveData(indexBaseMonthDataDao.getGroupSurplusCourseData(dayStr, null, CourseStatusEnum.OVER), dayStr, IndexDataType.OVER_COURSE_NUM);
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +		if(CollectionUtils.isEmpty(dataTypes)||dataTypes.contains(IndexDataType.OVER_MUSIC_COURSE_NUM)) {
 | 
	
		
			
				|  |  | +			saveData(indexBaseMonthDataDao.getGroupSurplusCourseData(dayStr, GroupType.MUSIC, CourseStatusEnum.OVER), dayStr, IndexDataType.OVER_MUSIC_COURSE_NUM);
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +		if(CollectionUtils.isEmpty(dataTypes)||dataTypes.contains(IndexDataType.OVER_VIP_COURSE_NUM)) {
 | 
	
		
			
				|  |  | +			saveData(indexBaseMonthDataDao.getGroupSurplusCourseData(dayStr, GroupType.VIP, CourseStatusEnum.OVER), dayStr, IndexDataType.OVER_VIP_COURSE_NUM);
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +		if(CollectionUtils.isEmpty(dataTypes)||dataTypes.contains(IndexDataType.OVER_PRACTICE_COURSE_NUM)) {
 | 
	
		
			
				|  |  | +			saveData(indexBaseMonthDataDao.getGroupSurplusCourseData(dayStr, GroupType.PRACTICE, CourseStatusEnum.OVER), dayStr, IndexDataType.OVER_PRACTICE_COURSE_NUM);
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  		//经营数据
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -311,63 +343,89 @@ public class IndexBaseMonthDataServiceImpl extends BaseServiceImpl<Long, IndexBa
 | 
	
		
			
				|  |  |  //		saveData(totalAmountData,dayStr,IndexDataType.TOTAL_AMOUNT);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  		//业务数据
 | 
	
		
			
				|  |  | -		saveData(indexBaseMonthDataDao.getHomeworkData(dayStr, null), monday.toString(), IndexDataType.HOMEWORK_CREATE_RATE);
 | 
	
		
			
				|  |  | -		saveData(indexBaseMonthDataDao.getHomeworkData(dayStr, "submit"), monday.toString(), IndexDataType.HOMEWORK_SUBMIT_RATE);
 | 
	
		
			
				|  |  | -		saveData(indexBaseMonthDataDao.getHomeworkData(dayStr, "comment"), monday.toString(), IndexDataType.HOMEWORK_COMMENT_RATE);
 | 
	
		
			
				|  |  | +		if(CollectionUtils.isEmpty(dataTypes)||dataTypes.contains(IndexDataType.HOMEWORK_CREATE_RATE)) {
 | 
	
		
			
				|  |  | +			saveData(indexBaseMonthDataDao.getHomeworkData(dayStr, null), monday.toString(), IndexDataType.HOMEWORK_CREATE_RATE);
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +		if(CollectionUtils.isEmpty(dataTypes)||dataTypes.contains(IndexDataType.HOMEWORK_SUBMIT_RATE)) {
 | 
	
		
			
				|  |  | +			saveData(indexBaseMonthDataDao.getHomeworkData(dayStr, "submit"), monday.toString(), IndexDataType.HOMEWORK_SUBMIT_RATE);
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +		if(CollectionUtils.isEmpty(dataTypes)||dataTypes.contains(IndexDataType.HOMEWORK_COMMENT_RATE)) {
 | 
	
		
			
				|  |  | +			saveData(indexBaseMonthDataDao.getHomeworkData(dayStr, "comment"), monday.toString(), IndexDataType.HOMEWORK_COMMENT_RATE);
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  		//课程数据
 | 
	
		
			
				|  |  | -		saveData(indexBaseMonthDataDao.getGroupCourseDataWithGroup(dayStr, GroupType.MUSIC, null, null), dayStr, IndexDataType.MUSIC_GROUP_COURSE);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -		List<IndexBaseMonthData> vipCourseData = indexBaseMonthDataDao.getGroupCourseDataWithGroup(dayStr, GroupType.VIP, null, null);
 | 
	
		
			
				|  |  | -		List<OrganVipGroupCategoryCourseNumDto> vipGroupCategoryCourseData = indexBaseMonthDataDao.getVipGroupCategoryCourseData(dayStr, GroupType.VIP, null, null);
 | 
	
		
			
				|  |  | -		Map<Integer, Map<String, Integer>> organCategoryCourseMap = new HashMap<>();
 | 
	
		
			
				|  |  | -		if(!CollectionUtils.isEmpty(vipGroupCategoryCourseData)){
 | 
	
		
			
				|  |  | -			organCategoryCourseMap = vipGroupCategoryCourseData.stream().collect(Collectors.groupingBy(OrganVipGroupCategoryCourseNumDto::getOrganId, Collectors.toMap(OrganVipGroupCategoryCourseNumDto::getCategoryName, o -> o.getCourseNum())));
 | 
	
		
			
				|  |  | +		if(CollectionUtils.isEmpty(dataTypes)||dataTypes.contains(IndexDataType.MUSIC_GROUP_COURSE)) {
 | 
	
		
			
				|  |  | +			saveData(indexBaseMonthDataDao.getGroupCourseDataWithGroup(dayStr, GroupType.MUSIC, null, null), dayStr, IndexDataType.MUSIC_GROUP_COURSE);
 | 
	
		
			
				|  |  |  		}
 | 
	
		
			
				|  |  | -		for (IndexBaseMonthData vipCourseDatum : vipCourseData) {
 | 
	
		
			
				|  |  | -			if(organCategoryCourseMap.containsKey(vipCourseDatum.getOrganId())){
 | 
	
		
			
				|  |  | -				vipCourseDatum.setExtendInfo(JSON.toJSONString(organCategoryCourseMap.get(vipCourseDatum.getOrganId())));
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +		if(CollectionUtils.isEmpty(dataTypes)||dataTypes.contains(IndexDataType.VIP_GROUP_COURSE)) {
 | 
	
		
			
				|  |  | +			List<IndexBaseMonthData> vipCourseData = indexBaseMonthDataDao.getGroupCourseDataWithGroup(dayStr, GroupType.VIP, null, null);
 | 
	
		
			
				|  |  | +			List<OrganVipGroupCategoryCourseNumDto> vipGroupCategoryCourseData = indexBaseMonthDataDao.getVipGroupCategoryCourseData(dayStr, GroupType.VIP, null, null);
 | 
	
		
			
				|  |  | +			Map<Integer, Map<String, Integer>> organCategoryCourseMap = new HashMap<>();
 | 
	
		
			
				|  |  | +			if (!CollectionUtils.isEmpty(vipGroupCategoryCourseData)) {
 | 
	
		
			
				|  |  | +				organCategoryCourseMap = vipGroupCategoryCourseData.stream().collect(Collectors.groupingBy(OrganVipGroupCategoryCourseNumDto::getOrganId, Collectors.toMap(OrganVipGroupCategoryCourseNumDto::getCategoryName, o -> o.getCourseNum())));
 | 
	
		
			
				|  |  |  			}
 | 
	
		
			
				|  |  | +			for (IndexBaseMonthData vipCourseDatum : vipCourseData) {
 | 
	
		
			
				|  |  | +				if (organCategoryCourseMap.containsKey(vipCourseDatum.getOrganId())) {
 | 
	
		
			
				|  |  | +					vipCourseDatum.setExtendInfo(JSON.toJSONString(organCategoryCourseMap.get(vipCourseDatum.getOrganId())));
 | 
	
		
			
				|  |  | +				}
 | 
	
		
			
				|  |  | +			}
 | 
	
		
			
				|  |  | +			saveData(vipCourseData, dayStr, IndexDataType.VIP_GROUP_COURSE);
 | 
	
		
			
				|  |  |  		}
 | 
	
		
			
				|  |  | -		saveData(vipCourseData, dayStr, IndexDataType.VIP_GROUP_COURSE);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -		List<IndexBaseMonthData> vipOnlineCourseData = indexBaseMonthDataDao.getGroupCourseDataWithGroup(dayStr, GroupType.VIP, null, TeachModeEnum.ONLINE);
 | 
	
		
			
				|  |  | -		List<OrganVipGroupCategoryCourseNumDto> vipGroupOnlineCategoryCourseData = indexBaseMonthDataDao.getVipGroupCategoryCourseData(dayStr, GroupType.VIP, null, TeachModeEnum.ONLINE);
 | 
	
		
			
				|  |  | -		Map<Integer, Map<String, Integer>> organOnlineCategoryCourseMap = new HashMap<>();
 | 
	
		
			
				|  |  | -		if(!CollectionUtils.isEmpty(vipGroupOnlineCategoryCourseData)){
 | 
	
		
			
				|  |  | -			organOnlineCategoryCourseMap = vipGroupOnlineCategoryCourseData.stream().collect(Collectors.groupingBy(OrganVipGroupCategoryCourseNumDto::getOrganId, Collectors.toMap(OrganVipGroupCategoryCourseNumDto::getCategoryName, o -> o.getCourseNum())));
 | 
	
		
			
				|  |  | -		}
 | 
	
		
			
				|  |  | -		for (IndexBaseMonthData vipCourseDatum : vipOnlineCourseData) {
 | 
	
		
			
				|  |  | -			if(organOnlineCategoryCourseMap.containsKey(vipCourseDatum.getOrganId())){
 | 
	
		
			
				|  |  | -				vipCourseDatum.setExtendInfo(JSON.toJSONString(organOnlineCategoryCourseMap.get(vipCourseDatum.getOrganId())));
 | 
	
		
			
				|  |  | +		if(CollectionUtils.isEmpty(dataTypes)||dataTypes.contains(IndexDataType.VIP_GROUP_ONLINE_COURSE)) {
 | 
	
		
			
				|  |  | +			List<IndexBaseMonthData> vipOnlineCourseData = indexBaseMonthDataDao.getGroupCourseDataWithGroup(dayStr, GroupType.VIP, null, TeachModeEnum.ONLINE);
 | 
	
		
			
				|  |  | +			List<OrganVipGroupCategoryCourseNumDto> vipGroupOnlineCategoryCourseData = indexBaseMonthDataDao.getVipGroupCategoryCourseData(dayStr, GroupType.VIP, null, TeachModeEnum.ONLINE);
 | 
	
		
			
				|  |  | +			Map<Integer, Map<String, Integer>> organOnlineCategoryCourseMap = new HashMap<>();
 | 
	
		
			
				|  |  | +			if (!CollectionUtils.isEmpty(vipGroupOnlineCategoryCourseData)) {
 | 
	
		
			
				|  |  | +				organOnlineCategoryCourseMap = vipGroupOnlineCategoryCourseData.stream().collect(Collectors.groupingBy(OrganVipGroupCategoryCourseNumDto::getOrganId, Collectors.toMap(OrganVipGroupCategoryCourseNumDto::getCategoryName, o -> o.getCourseNum())));
 | 
	
		
			
				|  |  | +			}
 | 
	
		
			
				|  |  | +			for (IndexBaseMonthData vipCourseDatum : vipOnlineCourseData) {
 | 
	
		
			
				|  |  | +				if (organOnlineCategoryCourseMap.containsKey(vipCourseDatum.getOrganId())) {
 | 
	
		
			
				|  |  | +					vipCourseDatum.setExtendInfo(JSON.toJSONString(organOnlineCategoryCourseMap.get(vipCourseDatum.getOrganId())));
 | 
	
		
			
				|  |  | +				}
 | 
	
		
			
				|  |  |  			}
 | 
	
		
			
				|  |  | +			saveData(vipOnlineCourseData, dayStr, IndexDataType.VIP_GROUP_ONLINE_COURSE);
 | 
	
		
			
				|  |  |  		}
 | 
	
		
			
				|  |  | -		saveData(vipOnlineCourseData, dayStr, IndexDataType.VIP_GROUP_ONLINE_COURSE);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -		List<IndexBaseMonthData> vipOfflineCourseData = indexBaseMonthDataDao.getGroupCourseDataWithGroup(dayStr, GroupType.VIP, null, TeachModeEnum.OFFLINE);
 | 
	
		
			
				|  |  | -		List<OrganVipGroupCategoryCourseNumDto> vipGroupOfflineCategoryCourseData = indexBaseMonthDataDao.getVipGroupCategoryCourseData(dayStr, GroupType.VIP, null, TeachModeEnum.OFFLINE);
 | 
	
		
			
				|  |  | -		Map<Integer, Map<String, Integer>> organOfflineCategoryCourseMap = new HashMap<>();
 | 
	
		
			
				|  |  | -		if(!CollectionUtils.isEmpty(vipGroupOfflineCategoryCourseData)){
 | 
	
		
			
				|  |  | -			organOfflineCategoryCourseMap = vipGroupOfflineCategoryCourseData.stream().collect(Collectors.groupingBy(OrganVipGroupCategoryCourseNumDto::getOrganId, Collectors.toMap(OrganVipGroupCategoryCourseNumDto::getCategoryName, o -> o.getCourseNum())));
 | 
	
		
			
				|  |  | -		}
 | 
	
		
			
				|  |  | -		for (IndexBaseMonthData vipCourseDatum : vipOfflineCourseData) {
 | 
	
		
			
				|  |  | -			if(organOfflineCategoryCourseMap.containsKey(vipCourseDatum.getOrganId())){
 | 
	
		
			
				|  |  | -				vipCourseDatum.setExtendInfo(JSON.toJSONString(organOfflineCategoryCourseMap.get(vipCourseDatum.getOrganId())));
 | 
	
		
			
				|  |  | +		if(CollectionUtils.isEmpty(dataTypes)||dataTypes.contains(IndexDataType.VIP_GROUP_OFFLINE_COURSE)) {
 | 
	
		
			
				|  |  | +			List<IndexBaseMonthData> vipOfflineCourseData = indexBaseMonthDataDao.getGroupCourseDataWithGroup(dayStr, GroupType.VIP, null, TeachModeEnum.OFFLINE);
 | 
	
		
			
				|  |  | +			List<OrganVipGroupCategoryCourseNumDto> vipGroupOfflineCategoryCourseData = indexBaseMonthDataDao.getVipGroupCategoryCourseData(dayStr, GroupType.VIP, null, TeachModeEnum.OFFLINE);
 | 
	
		
			
				|  |  | +			Map<Integer, Map<String, Integer>> organOfflineCategoryCourseMap = new HashMap<>();
 | 
	
		
			
				|  |  | +			if (!CollectionUtils.isEmpty(vipGroupOfflineCategoryCourseData)) {
 | 
	
		
			
				|  |  | +				organOfflineCategoryCourseMap = vipGroupOfflineCategoryCourseData.stream().collect(Collectors.groupingBy(OrganVipGroupCategoryCourseNumDto::getOrganId, Collectors.toMap(OrganVipGroupCategoryCourseNumDto::getCategoryName, o -> o.getCourseNum())));
 | 
	
		
			
				|  |  |  			}
 | 
	
		
			
				|  |  | +			for (IndexBaseMonthData vipCourseDatum : vipOfflineCourseData) {
 | 
	
		
			
				|  |  | +				if (organOfflineCategoryCourseMap.containsKey(vipCourseDatum.getOrganId())) {
 | 
	
		
			
				|  |  | +					vipCourseDatum.setExtendInfo(JSON.toJSONString(organOfflineCategoryCourseMap.get(vipCourseDatum.getOrganId())));
 | 
	
		
			
				|  |  | +				}
 | 
	
		
			
				|  |  | +			}
 | 
	
		
			
				|  |  | +			saveData(vipOfflineCourseData, dayStr, IndexDataType.VIP_GROUP_OFFLINE_COURSE);
 | 
	
		
			
				|  |  |  		}
 | 
	
		
			
				|  |  | -		saveData(vipOfflineCourseData, dayStr, IndexDataType.VIP_GROUP_OFFLINE_COURSE);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -		saveData(indexBaseMonthDataDao.getGroupCourseDataWithGroup(dayStr, GroupType.PRACTICE, null, null), dayStr, IndexDataType.PRACTICE_GROUP_COURSE);
 | 
	
		
			
				|  |  | +		if(CollectionUtils.isEmpty(dataTypes)||dataTypes.contains(IndexDataType.PRACTICE_GROUP_COURSE)) {
 | 
	
		
			
				|  |  | +			saveData(indexBaseMonthDataDao.getGroupCourseDataWithGroup(dayStr, GroupType.PRACTICE, null, null), dayStr, IndexDataType.PRACTICE_GROUP_COURSE);
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  		//学员变动
 | 
	
		
			
				|  |  | -		saveData(indexBaseMonthDataDao.getAddStudentRegistrationData(dayStr), dayStr, IndexDataType.ADD_STUDENT_REGISTRATION_NUM);
 | 
	
		
			
				|  |  | -		saveData(indexBaseMonthDataDao.getMusicStudentData(dayStr, null), dayStr, IndexDataType.MUSIC_GROUP_STUDENT);
 | 
	
		
			
				|  |  | -		saveData(null, nowDate.toString(), IndexDataType.NEWLY_STUDENT_NUM);
 | 
	
		
			
				|  |  | -		saveData(null, nowDate.toString(), IndexDataType.QUIT_MUSIC_GROUP_STUDENT_NUM);
 | 
	
		
			
				|  |  | -		saveData(indexBaseMonthDataDao.getOtherStudentData(dayStr), dayStr, IndexDataType.VIP_PRACTICE_STUDENT_NUM);
 | 
	
		
			
				|  |  | -		saveData(indexBaseMonthDataDao.getVipPracticeAddStudentData(dayStr), dayStr, IndexDataType.VIP_PRACTICE_ADD_STUDENT_NUM);
 | 
	
		
			
				|  |  | +		if(CollectionUtils.isEmpty(dataTypes)||dataTypes.contains(IndexDataType.ADD_STUDENT_REGISTRATION_NUM)) {
 | 
	
		
			
				|  |  | +			saveData(indexBaseMonthDataDao.getAddStudentRegistrationData(dayStr), dayStr, IndexDataType.ADD_STUDENT_REGISTRATION_NUM);
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +		if(CollectionUtils.isEmpty(dataTypes)||dataTypes.contains(IndexDataType.MUSIC_GROUP_STUDENT)) {
 | 
	
		
			
				|  |  | +			saveData(indexBaseMonthDataDao.getMusicStudentData(dayStr, null), dayStr, IndexDataType.MUSIC_GROUP_STUDENT);
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +		if(CollectionUtils.isEmpty(dataTypes)||dataTypes.contains(IndexDataType.NEWLY_STUDENT_NUM)) {
 | 
	
		
			
				|  |  | +			saveData(null, nowDate.toString(), IndexDataType.NEWLY_STUDENT_NUM);
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +		if(CollectionUtils.isEmpty(dataTypes)||dataTypes.contains(IndexDataType.QUIT_MUSIC_GROUP_STUDENT_NUM)) {
 | 
	
		
			
				|  |  | +			saveData(null, nowDate.toString(), IndexDataType.QUIT_MUSIC_GROUP_STUDENT_NUM);
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +		if(CollectionUtils.isEmpty(dataTypes)||dataTypes.contains(IndexDataType.VIP_PRACTICE_STUDENT_NUM)) {
 | 
	
		
			
				|  |  | +			saveData(indexBaseMonthDataDao.getOtherStudentData(dayStr), dayStr, IndexDataType.VIP_PRACTICE_STUDENT_NUM);
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +		if(CollectionUtils.isEmpty(dataTypes)||dataTypes.contains(IndexDataType.VIP_PRACTICE_ADD_STUDENT_NUM)) {
 | 
	
		
			
				|  |  | +			saveData(indexBaseMonthDataDao.getVipPracticeAddStudentData(dayStr), dayStr, IndexDataType.VIP_PRACTICE_ADD_STUDENT_NUM);
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	/**
 |