|
@@ -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);
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
/**
|