Browse Source

尝试优化首页定时任务,可能存在线程池占用问题

zouxuan 2 years ago
parent
commit
e1679dec01

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

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

+ 166 - 250
mec-biz/src/main/java/com/ym/mec/biz/service/impl/IndexBaseMonthDataServiceImpl.java

@@ -1,6 +1,7 @@
 package com.ym.mec.biz.service.impl;
 
 import com.alibaba.fastjson.JSON;
+import com.google.common.collect.Lists;
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dao.*;
@@ -495,276 +496,191 @@ public class IndexBaseMonthDataServiceImpl extends BaseServiceImpl<Long, IndexBa
 					break;
 			}
 		});
-
-/*		CompletableFuture future7 = this.async(()->{
-			long l = System.currentTimeMillis();
-			typeDateMap.put(IndexDataType.TOTAL_AMOUNT,indexBaseMonthDataDao.getTotalAmountDataWithTimely(startDate1, endDate1, arrayList,tenantId));
-			typeDateMap.put(APPLY_AMOUNT,indexBaseMonthDataDao.getTotalAmountDataWithTimelyDetails(startDate1, endDate1, arrayList,"APPLY,ADD_STUDENT",null,tenantId));
-			System.out.println("Thread.currentThread :" + Thread.currentThread() + "---" + (System.currentTimeMillis() - l));
-		});
-		System.out.println(System.currentTimeMillis());
-		CompletableFuture<Void> allFutures = CompletableFuture.allOf(future1, future2, future3, future4, future5, future6, future7, future8);
-		allFutures.join();
-		System.out.println(System.currentTimeMillis());*/
 	}
 
 	@Override
 	@Transactional(rollbackFor = Exception.class)
-	public void indexBaseDataTask(Integer tenantId, String dayStr, Set<IndexDataType> dataTypes) {
+	public void indexBaseDataTask(Integer tenantId) {
 		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()));
 
-		if(StringUtils.isBlank(dayStr)){
-			dayStr = nowDate.plusDays(-1).toString();
-		}
+		String dayStr = nowDate.plusDays(-1).toString();
 
 		LocalDate day = LocalDate.parse(dayStr, DateUtil.dateFormatter);
 		LocalDate monday = day.with(DateUtil.weekFields.dayOfWeek(), DayOfWeek.MONDAY.getValue());
-
-		//学员数据
-		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);
+		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);
+							}
 						}
 					}
 				}
-			}
-			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())));
+				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(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(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())));
 				}
-			}
-			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())));
+				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())));
+				}
+				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);
+			}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(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);
-			}
-		}
+		});
 	}
 
 	/**

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

@@ -469,16 +469,11 @@ public class TaskController extends BaseController {
 	}
 
 	@GetMapping("/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());
-		}
-
+	public void countIndexBaseData(){
 		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(), month, dataTypeSet);
+				indexBaseMonthDataService.indexBaseDataTask(tenantInfo.getId());
 			}
 		}
 	}