@ -3,6 +3,7 @@ package com.ibeetl.jlw.service;
import cn.hutool.core.collection.CollUtil ;
import cn.hutool.core.collection.CollectionUtil ;
import cn.hutool.core.util.NumberUtil ;
import com.alibaba.fastjson.JSON ;
import com.ibeetl.admin.core.dao.CoreUserDao ;
import com.ibeetl.admin.core.entity.CoreUser ;
import com.ibeetl.admin.core.util.enums.DelFlagEnum ;
@ -99,6 +100,8 @@ public class StatisticalAnalysisService {
@Autowired
private TeacherOpenCourseMergeResourcesQuestionService teacherOpenCourseMergeResourcesQuestionService ;
@Autowired
private StudentHandsOnTaskLogService studentHandsOnTaskLogService ;
private static final String PATTERN = "(?<=\"code\":\\[\").*?(?=\"\\],)" ;
Pattern r = Pattern . compile ( PATTERN ) ;
@ -117,11 +120,13 @@ public class StatisticalAnalysisService {
//班级数
TeacherOpenCourseMergeSchoolClassQuery classQuery = new TeacherOpenCourseMergeSchoolClassQuery ( ) ;
classQuery . setTeacherOpenCourseId ( teacherOpenCourseId ) ;
classQuery . setTeacherOpenCourseMergeSchoolClassStatus ( 1 ) ;
List < TeacherOpenCourseMergeSchoolClass > schoolClasses = teacherOpenCourseMergeSchoolClassService . getValues ( classQuery ) ;
data . put ( "classNum" , schoolClasses . size ( ) ) ;
//学生人数
TeacherOpenCourseMergeStudentQuery teacherOpenCourseMergeStudentQuery = new TeacherOpenCourseMergeStudentQuery ( ) ;
teacherOpenCourseMergeStudentQuery . setTeacherOpenCourseId ( teacherOpenCourseId ) ;
teacherOpenCourseMergeStudentQuery . setTeacherOpenCourseSchoolClassMergeStudentStatus ( 1 ) ;
List < TeacherOpenCourseMergeStudent > studentList = teacherOpenCourseMergeStudentService . getValuesByQueryNotWithPermission ( teacherOpenCourseMergeStudentQuery ) ;
data . put ( "studentNum" , studentList . size ( ) ) ;
//学习通过率
@ -137,23 +142,36 @@ public class StatisticalAnalysisService {
data . put ( "studentPassNum" , 0 ) ;
}
//授课视频
TeacherOpenCourseMergeCourseInfoQuery courseInfoQuery = new TeacherOpenCourseMergeCourseInfoQuery ( ) ;
courseInfoQuery . setTeacherOpenCourseId ( teacherOpenCourseId ) ;
courseInfoQuery . setCourseInfoStatus ( 1 ) ;
List < TeacherOpenCourseMergeCourseInfo > courseInfos = teacherOpenCourseMergeCourseInfoService . getValuesByQueryNotWithPermission ( courseInfoQuery ) ;
List < TeacherOpenCourseMergeCourseInfo > videoCount = courseInfos . stream ( ) . filter ( v - > v . getCourseVideoId ( ) ! = null ) . collect ( Collectors . toList ( ) ) ;
// TeacherOpenCourseMergeCourseInfoQuery courseInfoQuery = new TeacherOpenCourseMergeCourseInfoQuery();
// courseInfoQuery.setTeacherOpenCourseId(teacherOpenCourseId);
// courseInfoQuery.setCourseInfoStatus(1);
// List<TeacherOpenCourseMergeCourseInfo> courseInfos = teacherOpenCourseMergeCourseInfoService.getValuesByQueryNotWithPermission(courseInfoQuery);
// List<TeacherOpenCourseMergeCourseInfo> videoCount = courseInfos.stream().filter(v -> v.getCourseVideoId() != null).collect(Collectors.toList());
TeacherOpenCourseMergeResourcesInfoQuery teacherOpenCourseMergeResourcesInfoQuery = new TeacherOpenCourseMergeResourcesInfoQuery ( ) ;
teacherOpenCourseMergeResourcesInfoQuery . setTeacherOpenCourseId ( teacherOpenCourseId ) ;
teacherOpenCourseMergeResourcesInfoQuery . setResourcesInfoStatus ( GlobalUpStatusEnum . UP ) ;
teacherOpenCourseMergeResourcesInfoQuery . setStartTime ( stime ) ;
teacherOpenCourseMergeResourcesInfoQuery . setEndTime ( etime ) ;
List < TeacherOpenCourseMergeResourcesInfo > teacherOpenCourseMergeResourcesInfo = teacherOpenCourseMergeResourcesInfoService . getValuesByQuery ( teacherOpenCourseMergeResourcesInfoQuery ) ;
List < TeacherOpenCourseMergeResourcesInfo > videoCount = teacherOpenCourseMergeResourcesInfo . stream ( ) . filter ( v - > Objects . equals ( v . getResourcesInfoType ( ) , 1 ) ) . collect ( Collectors . toList ( ) ) ;
data . put ( "teachingVideoNum" , videoCount . size ( ) ) ;
//非视频资源
data . put ( "nonVideoResourcesNum" , courseInfos . size ( ) - videoCount . size ( ) ) ;
data . put ( "nonVideoResourcesNum" , teacherOpenCourseMergeResourcesInfo . size ( ) - videoCount . size ( ) ) ;
//课程公告
TeacherOpenCourseNoticeQuery teacherOpenCourseNoticeQuery = new TeacherOpenCourseNoticeQuery ( ) ;
teacherOpenCourseNoticeQuery . setTeacherOpenCourseIds ( teacherOpenCourseId . toString ( ) ) ;
teacherOpenCourseNoticeQuery . setDelFlag ( 0 ) ;
teacherOpenCourseNoticeQuery . setStartTime ( stime ) ;
teacherOpenCourseNoticeQuery . setEndTime ( etime ) ;
List < TeacherOpenCourseNotice > noticeList = teacherOpenCourseNoticeService . getValues ( teacherOpenCourseNoticeQuery ) ;
data . put ( "noticeNum" , noticeList . size ( ) ) ;
//签到
TeacherOpenCourseStudentSigninLogQuery signQuery = new TeacherOpenCourseStudentSigninLogQuery ( ) ;
signQuery . setTeacherOpenCourseId ( teacherOpenCourseId ) ;
signQuery . setStartTime ( stime ) ;
signQuery . setEndTime ( etime ) ;
List < TeacherOpenCourseStudentSigninLog > signinLogs = teacherOpenCourseStudentSigninLogService . getValues ( signQuery ) ;
List < TeacherOpenCourseStudentSigninLog > collect = signinLogs . stream ( ) . filter ( v - > v . getTeacherOpenCourseStudentSigninLogTag ( ) . equals ( SignInTypeEnum . SIGN_IN ) ) . collect ( Collectors . toList ( ) ) ;
//签到数量
@ -169,47 +187,79 @@ public class StatisticalAnalysisService {
//总章节数
TeacherOpenCourseMergeCourseInfoQuery teacherOpenCourseMergeCourseInfoQuery = new TeacherOpenCourseMergeCourseInfoQuery ( ) ;
teacherOpenCourseMergeCourseInfoQuery . setTeacherOpenCourseId ( teacherOpenCourseId ) ;
teacherOpenCourseMergeCourseInfoQuery . setCourseInfoType ( 2 ) ;
teacherOpenCourseMergeCourseInfoQuery . setCourseInfoStatus ( 1 ) ;
teacherOpenCourseMergeCourseInfoQuery . setStartTime ( stime ) ;
teacherOpenCourseMergeCourseInfoQuery . setEndTime ( etime ) ;
List < TeacherOpenCourseMergeCourseInfo > openCourseMergeCourseInfos = teacherOpenCourseMergeCourseInfoService . getValues ( teacherOpenCourseMergeCourseInfoQuery ) ;
data . put ( "chapterNum" , openCourseMergeCourseInfos . size ( ) ) ;
//习题总数
String collect4 = openCourseMergeCourseInfos . stream ( ) . distinct ( ) . map ( i - > i . getTeacherOpenCourseMergeCourseInfoId ( ) . toString ( ) ) . collect ( Collectors . joining ( "," ) ) ;
TeacherOpenCourseQuestionSettingQuery teacherOpenCourseQuestionSettingQuery = new TeacherOpenCourseQuestionSettingQuery ( ) ;
teacherOpenCourseQuestionSettingQuery . setTeacherOpenCourseId ( teacherOpenCourseId ) ;
teacherOpenCourseQuestionSettingQuery . setTeacherOpenCourseQuestionSettingStatus ( 1 ) ;
teacherOpenCourseQuestionSettingQuery . setTeacherOpenCourseQuestionSettingType ( ResourcesQuestionSnapshotFromTypeEnum . CHAPTER_EXERCISE ) ;
teacherOpenCourseQuestionSettingQuery . setTeacherOpenCourseMergeCourseInfoIdPlural ( collect4 ) ;
List < TeacherOpenCourseQuestionSetting > courseQuestionSettings = teacherOpenCourseQuestionSettingService . getValues ( teacherOpenCourseQuestionSettingQuery ) ;
List < TeacherOpenCourseQuestionSetting > collect1 = courseQuestionSettings . stream ( ) . filter ( v - > v . getTeacherOpenCourseQuestionSettingType ( ) . equals ( ResourcesQuestionSnapshotFromTypeEnum . CHAPTER_EXERCISE ) ) . collect ( Collectors . toList ( ) ) ;
data . put ( "chapterTotal" , collect1 . size ( ) ) ;
// List<TeacherOpenCourseQuestionSetting> collect1 = courseQuestionSettings.stream().filter(v -> v.getTeacherOpenCourseQuestionSettingType().equals(ResourcesQuestionSnapshotFromTypeEnum.CHAPTER_EXERCISE)).collect(Collectors.toList());
data . put ( "chapterTotal" , co urseQuestionSettings . size ( ) ) ;
//参与人数
String collect1 = courseQuestionSettings . stream ( ) . distinct ( ) . map ( i - > i . getTeacherOpenCourseQuestionSettingId ( ) . toString ( ) ) . collect ( Collectors . joining ( "," ) ) ;
TeacherOpenCourseQuestionLogQuery teacherOpenCourseQuestionLogQuery = new TeacherOpenCourseQuestionLogQuery ( ) ;
String stringJoiner = CollectionUtil . join ( collect1 , "," ) ;
if ( StringUtils . isNotEmpty ( stringJoiner ) ) {
teacherOpenCourseQuestionLogQuery . setTeacherOpenCourseQuestionSettingIdPlural ( stringJoiner ) ;
List < TeacherOpenCourseQuestionLog > values = teacherOpenCourseQuestionLogService . getValues ( teacherOpenCourseQuestionLogQuery ) ;
int size = values . stream ( ) . map ( TeacherOpenCourseQuestionLog : : getStudentId ) . collect ( Collectors . toSet ( ) ) . size ( ) ;
data . put ( "chapterPeople" , size ) ;
} else {
data . put ( "chapterPeople" , 0 ) ;
}
teacherOpenCourseQuestionLogQuery . setTeacherOpenCourseQuestionSettingIdPlural ( collect1 ) ;
data . put ( "chapterPeople" , StringUtils . isEmpty ( collect1 ) ? 0 : teacherOpenCourseQuestionLogService . getChapterExerciseParticipantsValuesNumber ( teacherOpenCourseQuestionLogQuery ) ) ;
// String stringJoiner = CollectionUtil.join(courseQuestionSettings, ",");
// if (CollectionUtil.isNotEmpty(collect1)) {
// teacherOpenCourseQuestionLogQuery.setTeacherOpenCourseQuestionSettingIdPlural(stringJoiner);
// List<TeacherOpenCourseQuestionLog> values = teacherOpenCourseQuestionLogService.getValues(teacherOpenCourseQuestionLogQuery);
// int size = values.stream().map(TeacherOpenCourseQuestionLog::getStudentId).collect(Collectors.toSet()).size();
// data.put("chapterPeople", size);
// } else {
// data.put("chapterPeople", 0);
// }
//课程实操
TeacherOpenCourseHandsOnQuery teacherOpenCourseHandsOnQuery = new TeacherOpenCourseHandsOnQuery ( ) ;
teacherOpenCourseHandsOnQuery . setTeacherOpenCourseId ( teacherOpenCourseId ) ;
teacherOpenCourseHandsOnQuery . setStartTime ( stime ) ;
teacherOpenCourseHandsOnQuery . setEndTime ( etime ) ;
List < TeacherOpenCourseHandsOn > handsOns = teacherOpenCourseHandsOnService . getValues ( teacherOpenCourseHandsOnQuery ) ;
data . put ( "handsOnNum" , handsOns . size ( ) ) ;
//实操任务总数
TeacherOpenCourseHandsOnSimulationTasksQuery tasksQuery = new TeacherOpenCourseHandsOnSimulationTasksQuery ( ) ;
tasksQuery . setTeacherOpenCourseId ( teacherOpenCourseId ) ;
List < TeacherOpenCourseHandsOnSimulationTasks > tasksList = teacherOpenCourseHandsOnSimulationTasksService . getValues ( tasksQuery ) ;
data . put ( "handsOnTotal" , tasksList . size ( ) ) ;
//实操参与人数
HandsOnAchievementQuery achievementQuery = new HandsOnAchievementQuery ( ) ;
List < Long > list = handsOns . stream ( ) . map ( TeacherOpenCourseHandsOn : : getHandsOnId ) . collect ( Collectors . toList ( ) ) ;
String join = CollectionUtil . join ( list , "," ) ;
if ( StringUtils . isNotEmpty ( join ) ) {
achievementQuery . setHandOnIdPlural ( join ) ;
List < HandsOnAchievement > assessmentList = handsOnAchievementService . getValues ( achievementQuery ) ;
long count = assessmentList . stream ( ) . map ( HandsOnAchievement : : getStudentId ) . count ( ) ;
data . put ( "handsOnPeople" , count ) ;
} else {
data . put ( "handsOnPeople" , 0 ) ;
String collect2 = handsOns . stream ( ) . distinct ( ) . map ( i - > i . getHandsOnId ( ) . toString ( ) ) . collect ( Collectors . joining ( "," ) ) ;
if ( StringUtils . isEmpty ( collect2 ) ) {
data . put ( "handsOnTotal" , 0 ) ;
data . put ( "handsOnPeople" , 0 ) ;
} else {
TeacherOpenCourseHandsOnSimulationTasksQuery tasksQuery = new TeacherOpenCourseHandsOnSimulationTasksQuery ( ) ;
tasksQuery . setTeacherOpenCourseId ( teacherOpenCourseId ) ;
tasksQuery . setHandsOnIdPlural ( collect2 ) ;
List < TeacherOpenCourseHandsOnSimulationTasks > tasksList = teacherOpenCourseHandsOnSimulationTasksService . getValues ( tasksQuery ) ;
data . put ( "handsOnTotal" , tasksList . size ( ) ) ;
//实操参与人数
String collect3 = tasksList . stream ( ) . map ( i - > i . getTaskId ( ) . toString ( ) ) . collect ( Collectors . joining ( "," ) ) ;
StudentHandsOnTaskLogQuery studentHandsOnTaskLogQuery = new StudentHandsOnTaskLogQuery ( ) ;
studentHandsOnTaskLogQuery . setHandsOnTaskIdPlural ( collect3 ) ;
data . put ( "handsOnPeople" , StringUtils . isEmpty ( collect3 ) ? 0 : studentHandsOnTaskLogService . getPracticalOperationParticipantsNumberValues ( studentHandsOnTaskLogQuery ) ) ;
}
// List<Long> list = handsOns.stream().map(TeacherOpenCourseHandsOn::getHandsOnId).collect(Collectors.toList());
// String join = CollectionUtil.join(list, ",");
// if (StringUtils.isNotEmpty(join)) {
// achievementQuery.setHandOnIdPlural(join);
// List<HandsOnAchievement> assessmentList = handsOnAchievementService.getValues(achievementQuery);
// long count = assessmentList.stream().map(HandsOnAchievement::getStudentId).count();
// data.put("handsOnPeople", count);
// } else {
// data.put("handsOnPeople", 0);
// }
//作业
List < TeacherOpenCourseQuestionSetting > settings = courseQuestionSettings . stream ( ) . filter ( v - > v . getTeacherOpenCourseQuestionSettingType ( ) . equals ( ResourcesQuestionSnapshotFromTypeEnum . HOMEWORK_QUESTION ) ) . collect ( Collectors . toList ( ) ) ;
//作业总次数