题目配置分析汇总

beetlsql3-dev
Mlxa0324 2 years ago
parent 12951da3c5
commit dac5fd4bc6

@ -21,8 +21,8 @@ public class BaseEntity extends TailBean implements java.io.Serializable {
public Map<String, Object> getTails(){ public Map<String, Object> getTails(){
return super.getTails(); return super.getTails();
} }
public void putAll(Map<String, Object> map) {
super.extMap.putAll(map);
}
} }

@ -2,6 +2,7 @@ package com.ibeetl.jlw.dao;
import com.ibeetl.jlw.entity.QuestionLogSummary; import com.ibeetl.jlw.entity.QuestionLogSummary;
import com.ibeetl.jlw.entity.vo.QuestionLogSummaryAnalysisVO; import com.ibeetl.jlw.entity.vo.QuestionLogSummaryAnalysisVO;
import com.ibeetl.jlw.enums.ResourcesQuestionSnapshotFromTypeEnum;
import com.ibeetl.jlw.web.query.QuestionLogSummaryQuery; import com.ibeetl.jlw.web.query.QuestionLogSummaryQuery;
import org.beetl.sql.core.engine.PageQuery; import org.beetl.sql.core.engine.PageQuery;
import org.beetl.sql.mapper.BaseMapper; import org.beetl.sql.mapper.BaseMapper;
@ -47,4 +48,12 @@ public interface QuestionLogSummaryDao extends BaseMapper<QuestionLogSummary>{
* @return * @return
*/ */
PageQuery<QuestionLogSummaryAnalysisVO> analysisPageQuery(PageQuery query); PageQuery<QuestionLogSummaryAnalysisVO> analysisPageQuery(PageQuery query);
/**
*
* @param questionSettingIds
* @param questionSettingType
* @return
*/
Map<String, Object> analysisAvg(String questionSettingIds, ResourcesQuestionSnapshotFromTypeEnum questionSettingType);
} }

@ -1,6 +1,7 @@
package com.ibeetl.jlw.service; package com.ibeetl.jlw.service;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.collection.ConcurrentHashSet; import cn.hutool.core.collection.ConcurrentHashSet;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import cn.hutool.core.lang.Assert; import cn.hutool.core.lang.Assert;
@ -20,6 +21,7 @@ import com.ibeetl.admin.core.web.JsonReturnCode;
import com.ibeetl.jlw.dao.*; import com.ibeetl.jlw.dao.*;
import com.ibeetl.jlw.entity.*; import com.ibeetl.jlw.entity.*;
import com.ibeetl.jlw.entity.dto.QuestionSettingDTO; import com.ibeetl.jlw.entity.dto.QuestionSettingDTO;
import com.ibeetl.jlw.entity.vo.OpenCourseQuestionSettingAnalysisAvgVO;
import com.ibeetl.jlw.entity.vo.TeacherOpenCourseQuestionSettingAnalysisVO; import com.ibeetl.jlw.entity.vo.TeacherOpenCourseQuestionSettingAnalysisVO;
import com.ibeetl.jlw.enums.*; import com.ibeetl.jlw.enums.*;
import com.ibeetl.jlw.service.questionQueue.questionSettingQueue.QuestionSettingRedisDelayQueueImpl; import com.ibeetl.jlw.service.questionQueue.questionSettingQueue.QuestionSettingRedisDelayQueueImpl;
@ -43,6 +45,7 @@ import java.util.stream.Collectors;
import static cn.hutool.core.text.CharSequenceUtil.join; import static cn.hutool.core.text.CharSequenceUtil.join;
import static cn.jlw.util.CacheUserUtil.getStudent; import static cn.jlw.util.CacheUserUtil.getStudent;
import static cn.jlw.util.QuestionUtil.shuffleQuestion; import static cn.jlw.util.QuestionUtil.shuffleQuestion;
import static com.ibeetl.jlw.enums.GlobalPushStatusEnum.PUSH;
import static com.ibeetl.jlw.enums.QuestionLogAddTypeEnum.FINALLY_SUBMIT; import static com.ibeetl.jlw.enums.QuestionLogAddTypeEnum.FINALLY_SUBMIT;
import static com.ibeetl.jlw.enums.QuestionLogAddTypeEnum.PRE_SUBMIT; import static com.ibeetl.jlw.enums.QuestionLogAddTypeEnum.PRE_SUBMIT;
import static com.ibeetl.jlw.enums.ResourcesQuestionSnapshotFromTypeEnum.*; import static com.ibeetl.jlw.enums.ResourcesQuestionSnapshotFromTypeEnum.*;
@ -73,6 +76,8 @@ public class TeacherOpenCourseQuestionSettingService extends CoreBaseService<Tea
@Autowired private TeacherOpenCourseMergeResourcesQuestionService teacherOpenCourseMergeResourcesQuestionService; @Autowired private TeacherOpenCourseMergeResourcesQuestionService teacherOpenCourseMergeResourcesQuestionService;
@Autowired private TeacherOpenCourseMergeCourseInfoService teacherOpenCourseMergeCourseInfoService; @Autowired private TeacherOpenCourseMergeCourseInfoService teacherOpenCourseMergeCourseInfoService;
@Autowired private QuestionSettingRedisDelayQueueImpl questionSettingRedisDelayQueue; @Autowired private QuestionSettingRedisDelayQueueImpl questionSettingRedisDelayQueue;
@Autowired
private QuestionLogSummaryService questionLogSummaryService;
public PageQuery<TeacherOpenCourseQuestionSetting>queryByCondition(PageQuery query){ public PageQuery<TeacherOpenCourseQuestionSetting>queryByCondition(PageQuery query){
PageQuery ret = teacherOpenCourseQuestionSettingDao.queryByCondition(query); PageQuery ret = teacherOpenCourseQuestionSettingDao.queryByCondition(query);
@ -904,4 +909,46 @@ public class TeacherOpenCourseQuestionSettingService extends CoreBaseService<Tea
return Collections.emptyList(); return Collections.emptyList();
} }
/**
* : <br>
*
*
* @param teacherOpenCourseId ID
* @param questionSettingType
* @Author: 87966
* @Date: 2022/12/21 22:40
*/
public OpenCourseQuestionSettingAnalysisAvgVO analysisTotal(Long teacherOpenCourseId, ResourcesQuestionSnapshotFromTypeEnum questionSettingType) {
TeacherOpenCourseQuestionSettingQuery settingQuery = new TeacherOpenCourseQuestionSettingQuery();
settingQuery.setTeacherOpenCourseQuestionSettingStatus(1);
settingQuery.setTeacherOpenCourseId(teacherOpenCourseId);
settingQuery.setTeacherOpenCourseQuestionSettingPushStatus(PUSH);
settingQuery.setTeacherOpenCourseQuestionSettingType(questionSettingType);
List<TeacherOpenCourseQuestionSetting> settingList = teacherOpenCourseQuestionSettingDao.getValuesByQueryNotWithPermission(settingQuery);
List<String> questionSettingIdList = CollectionUtil.emptyIfNull(settingList).stream()
.map(TeacherOpenCourseQuestionSetting::getTeacherOpenCourseQuestionSettingId).map(Objects::toString).collect(Collectors.toList());
String questionSettingIds = join( ",", questionSettingIdList);
OpenCourseQuestionSettingAnalysisAvgVO analysisAvgVO = new OpenCourseQuestionSettingAnalysisAvgVO();
if (StrUtil.isNotBlank(questionSettingIds)) {
ResourcesQuestionSnapshotQuery snapshotQuery = new ResourcesQuestionSnapshotQuery();
snapshotQuery.setTeacherOpenCourseQuestionSettingIdPlural(questionSettingIds);
snapshotQuery.setQuestionStatus(1);
long questionCount = resourcesQuestionSnapshotDao.createLambdaQuery()
.andIn(ResourcesQuestionSnapshot::getTeacherOpenCourseQuestionSettingId, questionSettingIdList)
.andEq(ResourcesQuestionSnapshot::getQuestionStatus, 1)
.count();
Map<String, Object> stringObjectMap = questionLogSummaryDao.analysisAvg(questionSettingIds, questionSettingType);
analysisAvgVO.setSettingTotalCount(questionSettingIdList.size());
analysisAvgVO.setQuestionTotalCount(questionCount);
analysisAvgVO.putAll(stringObjectMap);
}
return analysisAvgVO;
}
} }

@ -160,6 +160,17 @@ public class TeacherOpenCourseQuestionSettingController{
return JsonResult.success(teacherOpenCourseQuestionSettingService.analysis(teacherOpenCourseId, questionSettingType)); return JsonResult.success(teacherOpenCourseQuestionSettingService.analysis(teacherOpenCourseId, questionSettingType));
} }
/**
*
* @param teacherOpenCourseId ID
* @param questionSettingType
* @return
*/
@PostMapping(API + "/analysisTotal.do")
public JsonResult analysisTotal(Long teacherOpenCourseId, ResourcesQuestionSnapshotFromTypeEnum questionSettingType, @SCoreUser CoreUser coreUser) {
return JsonResult.success(teacherOpenCourseQuestionSettingService.analysisTotal(teacherOpenCourseId, questionSettingType));
}
/** /**
* *
* @param ids * @param ids

@ -867,6 +867,7 @@ getExcelValues
analysisPageQuery analysisPageQuery
=== ===
* 题目配置,统计分析接口。用于分析所有题目类型的平均值 * 题目配置,统计分析接口。用于分析所有题目类型的平均值
select select
@pageTag(){ @pageTag(){
z.* z.*
@ -875,8 +876,8 @@ analysisPageQuery
select select
ta.teacher_open_course_question_setting_name as question_setting_name, ta.teacher_open_course_question_setting_name as question_setting_name,
ta.teacher_open_course_question_setting_type as question_setting_type, ta.teacher_open_course_question_setting_type as question_setting_type,
count(distinct(ab.resources_question_snapshot_id)) as question_total_count, count((ab.resources_question_snapshot_id)) as question_total_count,
count(distinct(t.question_setting_id)) as total_setting_count, count(distinct(ta.teacher_open_course_question_setting_id)) as total_setting_count,
round(avg(question_setting_total_score), 1) as avg_question_setting_total_score, round(avg(question_setting_total_score), 1) as avg_question_setting_total_score,
round(avg(question_log_summary_student_total_score), 1) as avg_student_score, round(avg(question_log_summary_student_total_score), 1) as avg_student_score,
round(avg(question_log_summary_question_total_count), 1) as avg_question_total_count, round(avg(question_log_summary_question_total_count), 1) as avg_question_total_count,
@ -903,4 +904,28 @@ analysisPageQuery
ta.teacher_open_course_question_setting_name, ta.teacher_open_course_question_setting_name,
ta.teacher_open_course_question_setting_type ta.teacher_open_course_question_setting_type
) z ) z
analysisAvg
===
* 平均值分析
select
round(avg(question_setting_total_score), 1) as avg_question_setting_total_score,
round(avg(question_log_summary_student_total_score), 1) as avg_student_score,
round(avg(question_log_summary_question_total_count), 1) as avg_question_total_count,
round(avg(question_log_summary_student_do_count), 1) as avg_question_log_summary_student_do_count,
round(avg(question_log_summary_success_count), 1) as avg_correct_count,
round(avg(question_log_summary_error_count), 1)as avg_wrong_count,
round(avg(question_log_summary_success_rate), 1) as avg_question_log_summary_success_rate,
round(avg(question_log_summary_is_pass), 1) as avg_question_log_summary_is_pass,
round(avg(finish_second_time), 1) as avg_finish_second_time
from question_log_summary t
where 1
@if(!isEmpty(questionSettingType)) {
and t.question_setting_type = #questionSettingType#
@}
@if(!isEmpty(questionSettingType)) {
and find_in_set(t.question_setting_id, #questionSettingIds#)
@}
and t.question_log_summary_status = 1
Loading…
Cancel
Save