Browse Source

代码还原

zouxuan 2 years ago
parent
commit
1fc2fbe228

+ 2 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/IndexBaseMonthDataService.java

@@ -23,7 +23,8 @@ public interface IndexBaseMonthDataService extends BaseService<Long, IndexBaseMo
 
     List<DecimalMapDto> indexCoop(String organId, String startTime, String endTime);
 
-    void indexBaseDataTask(Integer tenantId);
+
+    void indexBaseDataTask(Integer tenantId, String month, Set<IndexDataType> dataTypes);
 
     Map<String, Object> getIndexErrData(String organId, IndexErrorType errorType);
 

+ 239 - 165
mec-biz/src/main/java/com/ym/mec/biz/service/impl/IndexBaseMonthDataServiceImpl.java

@@ -500,187 +500,261 @@ public class IndexBaseMonthDataServiceImpl extends BaseServiceImpl<Long, IndexBa
 
 	@Override
 	@Transactional(rollbackFor = Exception.class)
-	public void indexBaseDataTask(Integer tenantId) {
+	public void indexBaseDataTask(Integer tenantId, String dayStr, Set<IndexDataType> dataTypes) {
 		LocalDate nowDate = LocalDate.now();
 
 		List<Organization> allOrgans = organizationService.findAllOrgans(tenantId);
 		this.organIds.get().clear();
 		this.organIds.get().addAll(allOrgans.stream().map(Organization::getId).collect(Collectors.toSet()));
 
-		String dayStr = nowDate.plusDays(-1).toString();
+		if(StringUtils.isBlank(dayStr)){
+			dayStr = nowDate.plusDays(-1).toString();
+		}
 
 		LocalDate day = LocalDate.parse(dayStr, DateUtil.dateFormatter);
 		LocalDate monday = day.with(DateUtil.weekFields.dayOfWeek(), DayOfWeek.MONDAY.getValue());
-		Arrays.asList(IndexDataType.values()).parallelStream().forEach(dataType ->{
-			//学员数据
-			if(dataType == IndexDataType.STUDENT_REGISTRATION_NUM){
-				saveData(indexBaseMonthDataDao.getStudentRegistrationData(dayStr,tenantId), dayStr, IndexDataType.STUDENT_REGISTRATION_NUM, tenantId);
-			}else if(dataType == IndexDataType.CHARGE_STUDENT_CHANGE_RATE) {
-				saveData(indexBaseMonthDataDao.getChargeStudentChangeData(dayStr,tenantId), dayStr, IndexDataType.CHARGE_STUDENT_CHANGE_RATE, tenantId);
-			}else if(dataType == IndexDataType.ACTIVATION_RATE) {
-				saveData(indexBaseMonthDataDao.getStudentSignUpData(dayStr, nowDate.plusMonths(-6).toString(),tenantId), dayStr, IndexDataType.ACTIVATION_RATE, tenantId);
-			}else if(dataType == IndexDataType.SCHOOL) {
-				//运营数据
-				saveData(indexBaseMonthDataDao.getSchoolData(dayStr,tenantId), dayStr, IndexDataType.SCHOOL, tenantId);
-			}else if(dataType == IndexDataType.PROGRESS_MUSIC_GROUP_NUM) {
-				saveData(indexBaseMonthDataDao.getMusicData(dayStr,tenantId), dayStr, IndexDataType.PROGRESS_MUSIC_GROUP_NUM, tenantId);
-			}else if(dataType == TRANSACTION_TEACHER_NUM) {
-				Map<String, List<SimpleUserDto>> organPosition = employeePositionService.findOrganPosition(null, tenantId);
-				List<SimpleUserDto> transactionTeachers = organPosition.get(SysUserRoleEnum.JOIN_TEACHER.name());
-				Map<Integer, Integer> organTeacherNumMap = new HashMap<>();
-				if (transactionTeachers != null) {
-					for (SimpleUserDto transactionTeacher : transactionTeachers) {
-						Set<Integer> organIds = Arrays.stream(transactionTeacher.getOrganIds().split(","))
-								.map(s -> Integer.valueOf(s))
-								.collect(Collectors.toSet());
-						for (Integer organId : organIds) {
-							if (organTeacherNumMap.containsKey(organId)) {
-								organTeacherNumMap.put(organId, organTeacherNumMap.get(organId) + 1);
-							} else {
-								organTeacherNumMap.put(organId, 1);
-							}
+
+		//学员数据
+		if(CollectionUtils.isEmpty(dataTypes)||dataTypes.contains(IndexDataType.STUDENT_REGISTRATION_NUM)){
+			saveData(indexBaseMonthDataDao.getStudentRegistrationData(dayStr,tenantId), dayStr, IndexDataType.STUDENT_REGISTRATION_NUM, tenantId);
+		}
+		if(CollectionUtils.isEmpty(dataTypes)||dataTypes.contains(IndexDataType.CHARGE_STUDENT_CHANGE_RATE)) {
+			saveData(indexBaseMonthDataDao.getChargeStudentChangeData(dayStr,tenantId), dayStr, IndexDataType.CHARGE_STUDENT_CHANGE_RATE, tenantId);
+		}
+		if(CollectionUtils.isEmpty(dataTypes)||dataTypes.contains(IndexDataType.ACTIVATION_RATE)) {
+			saveData(indexBaseMonthDataDao.getStudentSignUpData(dayStr, nowDate.plusMonths(-6).toString(),tenantId), dayStr, IndexDataType.ACTIVATION_RATE, tenantId);
+		}
+
+		//运营数据
+		if(CollectionUtils.isEmpty(dataTypes)||dataTypes.contains(IndexDataType.SCHOOL)) {
+			saveData(indexBaseMonthDataDao.getSchoolData(dayStr,tenantId), dayStr, IndexDataType.SCHOOL, tenantId);
+		}
+		if(CollectionUtils.isEmpty(dataTypes)||dataTypes.contains(IndexDataType.PROGRESS_MUSIC_GROUP_NUM)) {
+			saveData(indexBaseMonthDataDao.getMusicData(dayStr,tenantId), dayStr, IndexDataType.PROGRESS_MUSIC_GROUP_NUM, tenantId);
+		}
+		if(CollectionUtils.isEmpty(dataTypes)||dataTypes.contains(TRANSACTION_TEACHER_NUM)) {
+			Map<String, List<SimpleUserDto>> organPosition = employeePositionService.findOrganPosition(null, tenantId);
+			List<SimpleUserDto> transactionTeachers = organPosition.get(SysUserRoleEnum.JOIN_TEACHER.name());
+			Map<Integer, Integer> organTeacherNumMap = new HashMap<>();
+			if (transactionTeachers != null) {
+				for (SimpleUserDto transactionTeacher : transactionTeachers) {
+					Set<Integer> organIds = Arrays.stream(transactionTeacher.getOrganIds().split(","))
+							.map(s -> Integer.valueOf(s))
+							.collect(Collectors.toSet());
+					for (Integer organId : organIds) {
+						if (organTeacherNumMap.containsKey(organId)) {
+							organTeacherNumMap.put(organId, organTeacherNumMap.get(organId) + 1);
+						} else {
+							organTeacherNumMap.put(organId, 1);
 						}
 					}
 				}
-				List<IndexBaseMonthData> datas = new ArrayList<>();
-				Date month = DateUtil.stringToDate(dayStr, "yyyy-MM-dd");
-				for (Map.Entry<Integer, Integer> organTeacherNumMapEntry : organTeacherNumMap.entrySet()) {
-					IndexBaseMonthData data = new IndexBaseMonthData();
-					data.setOrganId(organTeacherNumMapEntry.getKey());
-					data.setMonth(month);
-					BigDecimal num = new BigDecimal(organTeacherNumMapEntry.getValue());
-					data.setTotalNum(num);
-					data.setActivateNum(num);
-					data.setPercent(num);
-					datas.add(data);
-				}
-				saveData(datas, dayStr, IndexDataType.TRANSACTION_TEACHER_NUM, tenantId);
-			}else if(dataType == IndexDataType.TEACHER_NUM) {
-				//人事数据
-				saveData(indexBaseMonthDataDao.getTeacherData(dayStr, null, null,tenantId), dayStr, IndexDataType.TEACHER_NUM, tenantId);
-			}else if(dataType == IndexDataType.FULL_TIME_NUM) {
-				saveData(indexBaseMonthDataDao.getTeacherData(dayStr, JobNatureEnum.FULL_TIME, null,tenantId), dayStr, IndexDataType.FULL_TIME_NUM, tenantId);
-			}else if(dataType == IndexDataType.PART_TIME_NUM) {
-				saveData(indexBaseMonthDataDao.getTeacherData(dayStr, JobNatureEnum.PART_TIME, null,tenantId), dayStr, IndexDataType.PART_TIME_NUM, tenantId);
-			}else if(dataType == IndexDataType.SURPLUS_COURSE_NUM) {
-				//剩余课时
-				saveData(indexBaseMonthDataDao.getGroupCourseData(dayStr, null, CourseStatusEnum.NOT_START,tenantId), dayStr, IndexDataType.SURPLUS_COURSE_NUM, tenantId);
-			}else if(dataType == IndexDataType.SURPLUS_MUSIC_COURSE_NUM) {
-				saveData(indexBaseMonthDataDao.getGroupCourseData(dayStr, GroupType.MUSIC, CourseStatusEnum.NOT_START,tenantId), dayStr, IndexDataType.SURPLUS_MUSIC_COURSE_NUM, tenantId);
-			}else if(dataType == IndexDataType.SURPLUS_VIP_COURSE_NUM) {
-				saveData(indexBaseMonthDataDao.getGroupCourseData(dayStr, GroupType.VIP, CourseStatusEnum.NOT_START,tenantId), dayStr, IndexDataType.SURPLUS_VIP_COURSE_NUM, tenantId);
-			}else if(dataType == IndexDataType.SURPLUS_PRACTICE_COURSE_NUM) {
-				saveData(indexBaseMonthDataDao.getGroupCourseData(dayStr, GroupType.PRACTICE, CourseStatusEnum.NOT_START,tenantId), dayStr, IndexDataType.SURPLUS_PRACTICE_COURSE_NUM, tenantId);
-			}else if(dataType == IndexDataType.OVER_COURSE_NUM) {
-				//已消耗课时
-				saveData(indexBaseMonthDataDao.getGroupSurplusCourseData(dayStr, null, CourseStatusEnum.OVER,tenantId), dayStr, IndexDataType.OVER_COURSE_NUM, tenantId);
-			}else if(dataType == IndexDataType.OVER_MUSIC_COURSE_NUM) {
-				saveData(indexBaseMonthDataDao.getGroupSurplusCourseData(dayStr, GroupType.MUSIC, CourseStatusEnum.OVER,tenantId), dayStr, IndexDataType.OVER_MUSIC_COURSE_NUM, tenantId);
-			}else if(dataType == IndexDataType.OVER_VIP_COURSE_NUM) {
-				saveData(indexBaseMonthDataDao.getGroupSurplusCourseData(dayStr, GroupType.VIP, CourseStatusEnum.OVER,tenantId), dayStr, IndexDataType.OVER_VIP_COURSE_NUM, tenantId);
-			}else if(dataType == IndexDataType.OVER_PRACTICE_COURSE_NUM) {
-				saveData(indexBaseMonthDataDao.getGroupSurplusCourseData(dayStr, GroupType.PRACTICE, CourseStatusEnum.OVER,tenantId), dayStr, IndexDataType.OVER_PRACTICE_COURSE_NUM, tenantId);
-			}else if(dataType == IndexDataType.HOMEWORK_CREATE_RATE) {
-				//业务数据
-				saveData(indexBaseMonthDataDao.getHomeworkData(dayStr, null,tenantId), monday.toString(), IndexDataType.HOMEWORK_CREATE_RATE, tenantId);
-			}else if(dataType == IndexDataType.HOMEWORK_SUBMIT_RATE) {
-				saveData(indexBaseMonthDataDao.getHomeworkData(dayStr, "submit",tenantId), monday.toString(), IndexDataType.HOMEWORK_SUBMIT_RATE, tenantId);
-			}else if(dataType == IndexDataType.HOMEWORK_COMMENT_RATE) {
-				saveData(indexBaseMonthDataDao.getHomeworkData(dayStr, "comment",tenantId), monday.toString(), IndexDataType.HOMEWORK_COMMENT_RATE, tenantId);
-			}else if(dataType == IndexDataType.MUSIC_GROUP_COURSE) {
-				//课程数据
-				saveData(indexBaseMonthDataDao.getGroupCourseDataWithGroup(dayStr, null, null, GroupType.MUSIC, null, null, null,tenantId), dayStr, IndexDataType.MUSIC_GROUP_COURSE, tenantId);
-			}else if(dataType == STUDENT_VIP_ORDER_NUM) {
-				//小课数据统计
-				saveData(indexBaseMonthDataDao.getStudentVipOrderNum(dayStr,tenantId), dayStr, IndexDataType.STUDENT_VIP_ORDER_NUM, tenantId);
-			}else if(dataType == STUDENT_THEORY_ORDER_NUM) {
-				saveData(indexBaseMonthDataDao.getStudentTheoryOrderNum(dayStr,tenantId), dayStr, IndexDataType.STUDENT_THEORY_ORDER_NUM, tenantId);
-			}else if(dataType == STUDENT_PRACTICE_ORDER_NUM) {
-				saveData(indexBaseMonthDataDao.getStudentPracticeOrderNum(dayStr,tenantId), dayStr, IndexDataType.STUDENT_PRACTICE_ORDER_NUM, tenantId);
-			}else if(dataType == IndexDataType.VIP_GROUP_COURSE) {
-				List<IndexBaseMonthData> vipCourseData = indexBaseMonthDataDao.getGroupCourseDataWithGroup(dayStr, null, null, GroupType.VIP, null, null, null,tenantId);
-				List<OrganVipGroupCategoryCourseNumDto> vipGroupCategoryCourseData = indexBaseMonthDataDao.getVipGroupCategoryCourseData(dayStr, null, null, GroupType.VIP, null, null, null,tenantId);
-				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, tenantId);
-			}else if(dataType == IndexDataType.VIP_GROUP_ONLINE_COURSE) {
-				List<IndexBaseMonthData> vipOnlineCourseData = indexBaseMonthDataDao.getGroupCourseDataWithGroup(dayStr, null, null, GroupType.VIP, null, TeachModeEnum.ONLINE, null,tenantId);
-				List<OrganVipGroupCategoryCourseNumDto> vipGroupOnlineCategoryCourseData = indexBaseMonthDataDao.getVipGroupCategoryCourseData(dayStr, null, null, GroupType.VIP, null, TeachModeEnum.ONLINE, null,tenantId);
-				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, tenantId);
-			}else if(dataType == IndexDataType.VIP_GROUP_OFFLINE_COURSE) {
-				List<IndexBaseMonthData> vipOfflineCourseData = indexBaseMonthDataDao.getGroupCourseDataWithGroup(dayStr, null, null, GroupType.VIP, null, TeachModeEnum.OFFLINE, null,tenantId);
-				List<OrganVipGroupCategoryCourseNumDto> vipGroupOfflineCategoryCourseData = indexBaseMonthDataDao.getVipGroupCategoryCourseData(dayStr, null, null, GroupType.VIP, null, TeachModeEnum.OFFLINE, null,tenantId);
-				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())));
+			}
+			List<IndexBaseMonthData> datas = new ArrayList<>();
+			Date month = DateUtil.stringToDate(dayStr, "yyyy-MM-dd");
+			for (Map.Entry<Integer, Integer> organTeacherNumMapEntry : organTeacherNumMap.entrySet()) {
+				IndexBaseMonthData data = new IndexBaseMonthData();
+				data.setOrganId(organTeacherNumMapEntry.getKey());
+				data.setMonth(month);
+				BigDecimal num = new BigDecimal(organTeacherNumMapEntry.getValue());
+				data.setTotalNum(num);
+				data.setActivateNum(num);
+				data.setPercent(num);
+				datas.add(data);
+			}
+			saveData(datas, dayStr, IndexDataType.TRANSACTION_TEACHER_NUM, tenantId);
+		}
+
+		//人事数据
+		if(CollectionUtils.isEmpty(dataTypes)||dataTypes.contains(IndexDataType.TEACHER_NUM)) {
+			saveData(indexBaseMonthDataDao.getTeacherData(dayStr, null, null,tenantId), dayStr, IndexDataType.TEACHER_NUM, tenantId);
+		}
+		if(CollectionUtils.isEmpty(dataTypes)||dataTypes.contains(IndexDataType.FULL_TIME_NUM)) {
+			saveData(indexBaseMonthDataDao.getTeacherData(dayStr, JobNatureEnum.FULL_TIME, null,tenantId), dayStr, IndexDataType.FULL_TIME_NUM, tenantId);
+		}
+		if(CollectionUtils.isEmpty(dataTypes)||dataTypes.contains(IndexDataType.PART_TIME_NUM)) {
+			saveData(indexBaseMonthDataDao.getTeacherData(dayStr, JobNatureEnum.PART_TIME, null,tenantId), dayStr, IndexDataType.PART_TIME_NUM, tenantId);
+		}
+//		saveData(indexBaseMonthDataDao.getTeacherData(dayStr, null, true), dayStr, IndexDataType.DIMISSION_NUM);
+
+		//剩余课时
+		if(CollectionUtils.isEmpty(dataTypes)||dataTypes.contains(IndexDataType.SURPLUS_COURSE_NUM)) {
+			saveData(indexBaseMonthDataDao.getGroupCourseData(dayStr, null, CourseStatusEnum.NOT_START,tenantId), dayStr, IndexDataType.SURPLUS_COURSE_NUM, tenantId);
+		}
+		if(CollectionUtils.isEmpty(dataTypes)||dataTypes.contains(IndexDataType.SURPLUS_MUSIC_COURSE_NUM)) {
+			saveData(indexBaseMonthDataDao.getGroupCourseData(dayStr, GroupType.MUSIC, CourseStatusEnum.NOT_START,tenantId), dayStr, IndexDataType.SURPLUS_MUSIC_COURSE_NUM, tenantId);
+		}
+		if(CollectionUtils.isEmpty(dataTypes)||dataTypes.contains(IndexDataType.SURPLUS_VIP_COURSE_NUM)) {
+			saveData(indexBaseMonthDataDao.getGroupCourseData(dayStr, GroupType.VIP, CourseStatusEnum.NOT_START,tenantId), dayStr, IndexDataType.SURPLUS_VIP_COURSE_NUM, tenantId);
+		}
+		if(CollectionUtils.isEmpty(dataTypes)||dataTypes.contains(IndexDataType.SURPLUS_PRACTICE_COURSE_NUM)) {
+			saveData(indexBaseMonthDataDao.getGroupCourseData(dayStr, GroupType.PRACTICE, CourseStatusEnum.NOT_START,tenantId), dayStr, IndexDataType.SURPLUS_PRACTICE_COURSE_NUM, tenantId);
+		}
+
+		//已消耗课时
+		if(CollectionUtils.isEmpty(dataTypes)||dataTypes.contains(IndexDataType.OVER_COURSE_NUM)) {
+			saveData(indexBaseMonthDataDao.getGroupSurplusCourseData(dayStr, null, CourseStatusEnum.OVER,tenantId), dayStr, IndexDataType.OVER_COURSE_NUM, tenantId);
+		}
+		if(CollectionUtils.isEmpty(dataTypes)||dataTypes.contains(IndexDataType.OVER_MUSIC_COURSE_NUM)) {
+			saveData(indexBaseMonthDataDao.getGroupSurplusCourseData(dayStr, GroupType.MUSIC, CourseStatusEnum.OVER,tenantId), dayStr, IndexDataType.OVER_MUSIC_COURSE_NUM, tenantId);
+		}
+		if(CollectionUtils.isEmpty(dataTypes)||dataTypes.contains(IndexDataType.OVER_VIP_COURSE_NUM)) {
+			saveData(indexBaseMonthDataDao.getGroupSurplusCourseData(dayStr, GroupType.VIP, CourseStatusEnum.OVER,tenantId), dayStr, IndexDataType.OVER_VIP_COURSE_NUM, tenantId);
+		}
+		if(CollectionUtils.isEmpty(dataTypes)||dataTypes.contains(IndexDataType.OVER_PRACTICE_COURSE_NUM)) {
+			saveData(indexBaseMonthDataDao.getGroupSurplusCourseData(dayStr, GroupType.PRACTICE, CourseStatusEnum.OVER,tenantId), dayStr, IndexDataType.OVER_PRACTICE_COURSE_NUM, tenantId);
+		}
+
+		//经营数据
+
+//		List<IndexBaseMonthData> financePayData = indexBaseMonthDataDao.getFinancePayData(dayStr);
+//		List<IndexBaseMonthData> financeBalanceData = indexBaseMonthDataDao.getFinanceBalanceData(dayStr);
+//		List<IndexBaseMonthData> financeActualData = indexBaseMonthDataDao.getFinanceActualData(dayStr);
+//
+//		saveData(financePayData,dayStr,IndexDataType.FINANCE_PAY);
+//		saveData(financeBalanceData,dayStr,IndexDataType.FINANCE_BALANCE_AMOUNT);
+//		saveData(financeActualData,dayStr,IndexDataType.FINANCE_AMOUNT);
+//		saveData(totalAmountData,dayStr,IndexDataType.TOTAL_AMOUNT);
+
+		//业务数据
+		if(CollectionUtils.isEmpty(dataTypes)||dataTypes.contains(IndexDataType.HOMEWORK_CREATE_RATE)) {
+			saveData(indexBaseMonthDataDao.getHomeworkData(dayStr, null,tenantId), monday.toString(), IndexDataType.HOMEWORK_CREATE_RATE, tenantId);
+		}
+		if(CollectionUtils.isEmpty(dataTypes)||dataTypes.contains(IndexDataType.HOMEWORK_SUBMIT_RATE)) {
+			saveData(indexBaseMonthDataDao.getHomeworkData(dayStr, "submit",tenantId), monday.toString(), IndexDataType.HOMEWORK_SUBMIT_RATE, tenantId);
+		}
+		if(CollectionUtils.isEmpty(dataTypes)||dataTypes.contains(IndexDataType.HOMEWORK_COMMENT_RATE)) {
+			saveData(indexBaseMonthDataDao.getHomeworkData(dayStr, "comment",tenantId), monday.toString(), IndexDataType.HOMEWORK_COMMENT_RATE, tenantId);
+		}
+
+		//课程数据
+		if(CollectionUtils.isEmpty(dataTypes)||dataTypes.contains(IndexDataType.MUSIC_GROUP_COURSE)) {
+			saveData(indexBaseMonthDataDao.getGroupCourseDataWithGroup(dayStr, null, null, GroupType.MUSIC, null, null, null,tenantId), dayStr, IndexDataType.MUSIC_GROUP_COURSE, tenantId);
+		}
+
+		//小课数据统计
+		if(CollectionUtils.isEmpty(dataTypes)||dataTypes.contains(STUDENT_VIP_ORDER_NUM)) {
+			saveData(indexBaseMonthDataDao.getStudentVipOrderNum(dayStr,tenantId), dayStr, IndexDataType.STUDENT_VIP_ORDER_NUM, tenantId);
+		}
+		if(CollectionUtils.isEmpty(dataTypes)||dataTypes.contains(STUDENT_THEORY_ORDER_NUM)) {
+			saveData(indexBaseMonthDataDao.getStudentTheoryOrderNum(dayStr,tenantId), dayStr, IndexDataType.STUDENT_THEORY_ORDER_NUM, tenantId);
+		}
+		if(CollectionUtils.isEmpty(dataTypes)||dataTypes.contains(STUDENT_PRACTICE_ORDER_NUM)) {
+			saveData(indexBaseMonthDataDao.getStudentPracticeOrderNum(dayStr,tenantId), dayStr, IndexDataType.STUDENT_PRACTICE_ORDER_NUM, tenantId);
+		}
+
+		if(CollectionUtils.isEmpty(dataTypes)||dataTypes.contains(IndexDataType.VIP_GROUP_COURSE)) {
+			List<IndexBaseMonthData> vipCourseData = indexBaseMonthDataDao.getGroupCourseDataWithGroup(dayStr, null, null, GroupType.VIP, null, null, null,tenantId);
+			List<OrganVipGroupCategoryCourseNumDto> vipGroupCategoryCourseData = indexBaseMonthDataDao.getVipGroupCategoryCourseData(dayStr, null, null, GroupType.VIP, null, null, null,tenantId);
+			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())));
 				}
-				for (IndexBaseMonthData vipCourseDatum : vipOfflineCourseData) {
-					if (organOfflineCategoryCourseMap.containsKey(vipCourseDatum.getOrganId())) {
-						vipCourseDatum.setExtendInfo(JSON.toJSONString(organOfflineCategoryCourseMap.get(vipCourseDatum.getOrganId())));
-					}
+			}
+			saveData(vipCourseData, dayStr, IndexDataType.VIP_GROUP_COURSE, tenantId);
+		}
+
+		if(CollectionUtils.isEmpty(dataTypes)||dataTypes.contains(IndexDataType.VIP_GROUP_ONLINE_COURSE)) {
+			List<IndexBaseMonthData> vipOnlineCourseData = indexBaseMonthDataDao.getGroupCourseDataWithGroup(dayStr, null, null, GroupType.VIP, null, TeachModeEnum.ONLINE, null,tenantId);
+			List<OrganVipGroupCategoryCourseNumDto> vipGroupOnlineCategoryCourseData = indexBaseMonthDataDao.getVipGroupCategoryCourseData(dayStr, null, null, GroupType.VIP, null, TeachModeEnum.ONLINE, null,tenantId);
+			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(vipOfflineCourseData, dayStr, IndexDataType.VIP_GROUP_OFFLINE_COURSE, tenantId);
-			}else if(dataType == IndexDataType.PRACTICE_GROUP_COURSE) {
-				saveData(indexBaseMonthDataDao.getGroupCourseDataWithGroup(dayStr, null, null, GroupType.PRACTICE, null, null, null,tenantId), dayStr, IndexDataType.PRACTICE_GROUP_COURSE, tenantId);
-			}else if(dataType == IndexDataType.ADD_STUDENT_REGISTRATION_NUM) {
-				//学员变动
-				saveData(indexBaseMonthDataDao.getAddStudentRegistrationData(dayStr,tenantId), dayStr, IndexDataType.ADD_STUDENT_REGISTRATION_NUM, tenantId);
-			}else if(dataType == IndexDataType.MUSIC_GROUP_STUDENT) {
-				saveData(indexBaseMonthDataDao.getMusicStudentData(dayStr, null,tenantId), dayStr, IndexDataType.MUSIC_GROUP_STUDENT, tenantId);
-			}else if(dataType == IndexDataType.NEWLY_STUDENT_NUM) {
-				saveData(null, nowDate.toString(), IndexDataType.NEWLY_STUDENT_NUM, tenantId);
-			}else if(dataType == IndexDataType.QUIT_MUSIC_GROUP_STUDENT_NUM) {
-				saveData(null, nowDate.toString(), IndexDataType.QUIT_MUSIC_GROUP_STUDENT_NUM, tenantId);
-			}else if(dataType == IndexDataType.VIP_PRACTICE_STUDENT_NUM) {
-				saveData(indexBaseMonthDataDao.getOtherStudentData(dayStr,tenantId), dayStr, IndexDataType.VIP_PRACTICE_STUDENT_NUM, tenantId);
-			}else if(dataType == IndexDataType.VIP_PRACTICE_ADD_STUDENT_NUM) {
-				saveData(indexBaseMonthDataDao.getVipPracticeAddStudentData(dayStr,tenantId), dayStr, IndexDataType.VIP_PRACTICE_ADD_STUDENT_NUM, tenantId);
-			}else if(dataType == IndexDataType.ORGAN_TOTAL_STUDENT_NUM) {
-				//云教练相关
-				//分部学员数量
-				saveData(indexBaseMonthDataDao.getOrgansStudentNumData(dayStr,tenantId), dayStr, IndexDataType.ORGAN_TOTAL_STUDENT_NUM, tenantId);
-			}else if(dataType == IndexDataType.MEMBER_STUDENT_NUM) {
-				//会员数量
-				saveData(indexBaseMonthDataDao.getMemberStudentNumData(dayStr,tenantId), dayStr, IndexDataType.MEMBER_STUDENT_NUM, tenantId);
-			}else if(dataType == IndexDataType.NEW_MEMBER_STUDENT_NUM) {
-				//新增会员数量
-				saveData(indexBaseMonthDataDao.getNewMemberStudentNumData(dayStr,tenantId), dayStr, IndexDataType.NEW_MEMBER_STUDENT_NUM, tenantId);
-			}else if(dataType == IndexDataType.EXPERIENCE_MEMBER_STUDENT_NUM) {
-				//试用会员数量
-				saveData(indexBaseMonthDataDao.getExperienceMemberStudentNumData(dayStr,tenantId), dayStr, IndexDataType.EXPERIENCE_MEMBER_STUDENT_NUM, tenantId);
-			}else if(dataType == IndexDataType.CLOUD_STUDY_DAY_USE_STUDENT_NUM) {
-				//云教练使用用户
-				saveData(indexBaseMonthDataDao.getCloudStudyDayUseStudentNumData(dayStr,tenantId), dayStr, IndexDataType.CLOUD_STUDY_DAY_USE_STUDENT_NUM, tenantId);
-			}else if(dataType == IndexDataType.CLOUD_STUDY_LIVELY_STUDENT_NUM) {
-				//活跃用户
-				saveData(indexBaseMonthDataDao.getCloudStudyLivelyStudentNumData(dayStr,tenantId), dayStr, IndexDataType.CLOUD_STUDY_LIVELY_STUDENT_NUM, tenantId);
-			}else if(dataType == IndexDataType.CLOUD_STUDY_NEW_STUDENT_NUM) {
-				//云教练新增人数
-				saveData(indexBaseMonthDataDao.getCloudStudyNewStudentNumData(dayStr,tenantId), dayStr, IndexDataType.CLOUD_STUDY_NEW_STUDENT_NUM, tenantId);
-			}else if(dataType == IndexDataType.CLOUD_NEW_STUDENT_NUM) {
-				//云教练新用户人数
-				List<Integer> studentIdList = studentRegistrationDao.findStudentIds(tenantId);
-				if(!CollectionUtils.isEmpty(studentIdList)){
-					saveData(studentDao.groupOrganId(null,studentIdList),LocalDate.now().toString(),IndexDataType.CLOUD_NEW_STUDENT_NUM, tenantId);
+			}
+			saveData(vipOnlineCourseData, dayStr, IndexDataType.VIP_GROUP_ONLINE_COURSE, tenantId);
+		}
+
+		if(CollectionUtils.isEmpty(dataTypes)||dataTypes.contains(IndexDataType.VIP_GROUP_OFFLINE_COURSE)) {
+			List<IndexBaseMonthData> vipOfflineCourseData = indexBaseMonthDataDao.getGroupCourseDataWithGroup(dayStr, null, null, GroupType.VIP, null, TeachModeEnum.OFFLINE, null,tenantId);
+			List<OrganVipGroupCategoryCourseNumDto> vipGroupOfflineCategoryCourseData = indexBaseMonthDataDao.getVipGroupCategoryCourseData(dayStr, null, null, GroupType.VIP, null, TeachModeEnum.OFFLINE, null,tenantId);
+			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, tenantId);
+		}
+
+		if(CollectionUtils.isEmpty(dataTypes)||dataTypes.contains(IndexDataType.PRACTICE_GROUP_COURSE)) {
+			saveData(indexBaseMonthDataDao.getGroupCourseDataWithGroup(dayStr, null, null, GroupType.PRACTICE, null, null, null,tenantId), dayStr, IndexDataType.PRACTICE_GROUP_COURSE, tenantId);
+		}
+
+		//学员变动
+		if(CollectionUtils.isEmpty(dataTypes)||dataTypes.contains(IndexDataType.ADD_STUDENT_REGISTRATION_NUM)) {
+			saveData(indexBaseMonthDataDao.getAddStudentRegistrationData(dayStr,tenantId), dayStr, IndexDataType.ADD_STUDENT_REGISTRATION_NUM, tenantId);
+		}
+		if(CollectionUtils.isEmpty(dataTypes)||dataTypes.contains(IndexDataType.MUSIC_GROUP_STUDENT)) {
+			saveData(indexBaseMonthDataDao.getMusicStudentData(dayStr, null,tenantId), dayStr, IndexDataType.MUSIC_GROUP_STUDENT, tenantId);
+		}
+		if(CollectionUtils.isEmpty(dataTypes)||dataTypes.contains(IndexDataType.NEWLY_STUDENT_NUM)) {
+			saveData(null, nowDate.toString(), IndexDataType.NEWLY_STUDENT_NUM, tenantId);
+		}
+		if(CollectionUtils.isEmpty(dataTypes)||dataTypes.contains(IndexDataType.QUIT_MUSIC_GROUP_STUDENT_NUM)) {
+			saveData(null, nowDate.toString(), IndexDataType.QUIT_MUSIC_GROUP_STUDENT_NUM, tenantId);
+		}
+		if(CollectionUtils.isEmpty(dataTypes)||dataTypes.contains(IndexDataType.VIP_PRACTICE_STUDENT_NUM)) {
+			saveData(indexBaseMonthDataDao.getOtherStudentData(dayStr,tenantId), dayStr, IndexDataType.VIP_PRACTICE_STUDENT_NUM, tenantId);
+		}
+		if(CollectionUtils.isEmpty(dataTypes)||dataTypes.contains(IndexDataType.VIP_PRACTICE_ADD_STUDENT_NUM)) {
+			saveData(indexBaseMonthDataDao.getVipPracticeAddStudentData(dayStr,tenantId), dayStr, IndexDataType.VIP_PRACTICE_ADD_STUDENT_NUM, tenantId);
+		}
+
+		//云教练相关
+		//分部学员数量
+		if(CollectionUtils.isEmpty(dataTypes)||dataTypes.contains(IndexDataType.ORGAN_TOTAL_STUDENT_NUM)) {
+			saveData(indexBaseMonthDataDao.getOrgansStudentNumData(dayStr,tenantId), dayStr, IndexDataType.ORGAN_TOTAL_STUDENT_NUM, tenantId);
+		}
+
+		//会员数量
+		if(CollectionUtils.isEmpty(dataTypes)||dataTypes.contains(IndexDataType.MEMBER_STUDENT_NUM)) {
+			saveData(indexBaseMonthDataDao.getMemberStudentNumData(dayStr,tenantId), dayStr, IndexDataType.MEMBER_STUDENT_NUM, tenantId);
+		}
+
+		//新增会员数量
+		if(CollectionUtils.isEmpty(dataTypes)||dataTypes.contains(IndexDataType.NEW_MEMBER_STUDENT_NUM)) {
+			saveData(indexBaseMonthDataDao.getNewMemberStudentNumData(dayStr,tenantId), dayStr, IndexDataType.NEW_MEMBER_STUDENT_NUM, tenantId);
+		}
+
+		//试用会员数量
+		if(CollectionUtils.isEmpty(dataTypes)||dataTypes.contains(IndexDataType.EXPERIENCE_MEMBER_STUDENT_NUM)) {
+			saveData(indexBaseMonthDataDao.getExperienceMemberStudentNumData(dayStr,tenantId), dayStr, IndexDataType.EXPERIENCE_MEMBER_STUDENT_NUM, tenantId);
+		}
+
+		//云教练使用用户
+		if(CollectionUtils.isEmpty(dataTypes)||dataTypes.contains(IndexDataType.CLOUD_STUDY_DAY_USE_STUDENT_NUM)) {
+			saveData(indexBaseMonthDataDao.getCloudStudyDayUseStudentNumData(dayStr,tenantId), dayStr, IndexDataType.CLOUD_STUDY_DAY_USE_STUDENT_NUM, tenantId);
+		}
+
+		//活跃用户
+		if(CollectionUtils.isEmpty(dataTypes)||dataTypes.contains(IndexDataType.CLOUD_STUDY_LIVELY_STUDENT_NUM)) {
+			saveData(indexBaseMonthDataDao.getCloudStudyLivelyStudentNumData(dayStr,tenantId), dayStr, IndexDataType.CLOUD_STUDY_LIVELY_STUDENT_NUM, tenantId);
+		}
+
+		//云教练新增人数
+		if(CollectionUtils.isEmpty(dataTypes)||dataTypes.contains(IndexDataType.CLOUD_STUDY_NEW_STUDENT_NUM)) {
+			saveData(indexBaseMonthDataDao.getCloudStudyNewStudentNumData(dayStr,tenantId), dayStr, IndexDataType.CLOUD_STUDY_NEW_STUDENT_NUM, tenantId);
+		}
+
+		//云教练新用户人数
+		if(CollectionUtils.isEmpty(dataTypes)||dataTypes.contains(IndexDataType.CLOUD_NEW_STUDENT_NUM)) {
+			List<Integer> studentIdList = studentRegistrationDao.findStudentIds(tenantId);
+			if(!CollectionUtils.isEmpty(studentIdList)){
+				saveData(studentDao.groupOrganId(null,studentIdList),LocalDate.now().toString(),IndexDataType.CLOUD_NEW_STUDENT_NUM, tenantId);
+			}
+		}
 	}
 
 	/**

+ 7 - 2
mec-web/src/main/java/com/ym/mec/web/controller/TaskController.java

@@ -469,11 +469,16 @@ public class TaskController extends BaseController {
 	}
 
 	@GetMapping("/countIndexBaseData")
-	public void countIndexBaseData(){
+	public void countIndexBaseData(String month, String dataTypes){
+		Set<IndexDataType> dataTypeSet = new HashSet<>();
+		if(StringUtils.isNotBlank(dataTypes)){
+			dataTypeSet = Arrays.stream(dataTypes.split(",")).map(s->IndexDataType.valueOf(s)).collect(Collectors.toSet());
+		}
+
 		List<TenantInfo> tenantInfos = tenantInfoService.list(new QueryWrapper<TenantInfo>().eq("state_",1));
 		if(tenantInfos != null && tenantInfos.size() > 0){
 			for (TenantInfo tenantInfo : tenantInfos) {
-				indexBaseMonthDataService.indexBaseDataTask(tenantInfo.getId());
+				indexBaseMonthDataService.indexBaseDataTask(tenantInfo.getId(), month, dataTypeSet);
 			}
 		}
 	}