diff --git a/web/src/main/java/com/ibeetl/jlw/dao/TeacherOpenCourseMergeResourcesQuestionDao.java b/web/src/main/java/com/ibeetl/jlw/dao/TeacherOpenCourseMergeResourcesQuestionDao.java index fe2d98c3..c9ab4118 100644 --- a/web/src/main/java/com/ibeetl/jlw/dao/TeacherOpenCourseMergeResourcesQuestionDao.java +++ b/web/src/main/java/com/ibeetl/jlw/dao/TeacherOpenCourseMergeResourcesQuestionDao.java @@ -63,4 +63,12 @@ public interface TeacherOpenCourseMergeResourcesQuestionDao extends BaseMapper getGroupQuestionTypeCount(@NotNull(message = "开课ID不能为空!") Long teacherOpenCourseId); + /** + * 开课离线题库,根据题目类型分组查询数量,和选中的情况 + * + * @param teacherOpenCourseId 开课ID + * @param questionSettingId 开课题目配置ID + * @return + */ + List getGroupQuestionTypeCountAndSelectInfo(Long teacherOpenCourseId, Long questionSettingId); } diff --git a/web/src/main/java/com/ibeetl/jlw/entity/TeacherOpenCourseQuestionSetting.java b/web/src/main/java/com/ibeetl/jlw/entity/TeacherOpenCourseQuestionSetting.java index 6fe461bc..27437b30 100644 --- a/web/src/main/java/com/ibeetl/jlw/entity/TeacherOpenCourseQuestionSetting.java +++ b/web/src/main/java/com/ibeetl/jlw/entity/TeacherOpenCourseQuestionSetting.java @@ -157,23 +157,6 @@ public class TeacherOpenCourseQuestionSetting extends BaseEntity { * 根据题目类型动态配置题目。 * */ - @FetchSql("SELECT " + - " t.question_type AS question_type, " + - " ( SELECT count( 1 ) FROM teacher_open_course_merge_resources_question ta WHERE ta.question_type = t.question_type AND ta.question_status = 1 ) AS total_count, " + - " count( 1 ) AS select_count, " + - " min( t.question_score ) single_score, " + - " min( t.question_score ) * count( 1 ) AS single_type_total_score, " + - " GROUP_CONCAT( t.teacher_open_course_merge_resources_question_id ) AS resources_question_id_plural " + - "FROM " + - " resources_question_snapshot t " + - "WHERE " + - " 1 = 1 " + - " AND t.teacher_open_course_question_setting_id = #teacherOpenCourseQuestionSettingId# " + - " " + - " AND t.question_status = 1 " + - "GROUP BY " + - " t.question_type " - ) @UpdateIgnore @InsertIgnore private List questionSettingOptions; diff --git a/web/src/main/java/com/ibeetl/jlw/service/TeacherOpenCourseMergeResourcesQuestionService.java b/web/src/main/java/com/ibeetl/jlw/service/TeacherOpenCourseMergeResourcesQuestionService.java index 7a465dc7..be05f48b 100644 --- a/web/src/main/java/com/ibeetl/jlw/service/TeacherOpenCourseMergeResourcesQuestionService.java +++ b/web/src/main/java/com/ibeetl/jlw/service/TeacherOpenCourseMergeResourcesQuestionService.java @@ -609,6 +609,16 @@ public class TeacherOpenCourseMergeResourcesQuestionService extends CoreBaseServ return g; } + /** + * 根据开课ID获取下面的题目类型和类型下的总题数 + * @param teacherOpenCourseId + * @return + */ + public List getGroupQuestionTypeCountAndSelectInfo(@NotNull(message = "开课ID不能为空!") Long teacherOpenCourseId, + @NotNull(message = "开课题目配置ID不能为空!") Long quesitonSettingId) { + return teacherOpenCourseMergeResourcesQuestionDao.getGroupQuestionTypeCountAndSelectInfo(teacherOpenCourseId, quesitonSettingId); + } + /** * 通过无类别区分的题目列表,对题目进行分组。并构建需要的数据 * 只适用于手动出题这块。 diff --git a/web/src/main/java/com/ibeetl/jlw/service/TeacherOpenCourseQuestionSettingService.java b/web/src/main/java/com/ibeetl/jlw/service/TeacherOpenCourseQuestionSettingService.java index 5719ded7..44f48d19 100644 --- a/web/src/main/java/com/ibeetl/jlw/service/TeacherOpenCourseQuestionSettingService.java +++ b/web/src/main/java/com/ibeetl/jlw/service/TeacherOpenCourseQuestionSettingService.java @@ -964,4 +964,29 @@ public class TeacherOpenCourseQuestionSettingService extends CoreBaseService list) { + if (list == null) { + return; + } + + for (TeacherOpenCourseQuestionSetting questionSetting : list) { + final Long teacherOpenCourseId = questionSetting.getTeacherOpenCourseId(); + final Long questionSettingId = questionSetting.getTeacherOpenCourseQuestionSettingId(); + + if (teacherOpenCourseId == null || questionSettingId == null) { + continue; + } + + List questionSettingDTOList = + teacherOpenCourseMergeResourcesQuestionService.getGroupQuestionTypeCountAndSelectInfo( + teacherOpenCourseId, questionSettingId); + + questionSetting.setQuestionSettingOptions(questionSettingDTOList); + } + } } diff --git a/web/src/main/java/com/ibeetl/jlw/web/TeacherOpenCourseQuestionSettingController.java b/web/src/main/java/com/ibeetl/jlw/web/TeacherOpenCourseQuestionSettingController.java index f6fa1a9c..691d8161 100644 --- a/web/src/main/java/com/ibeetl/jlw/web/TeacherOpenCourseQuestionSettingController.java +++ b/web/src/main/java/com/ibeetl/jlw/web/TeacherOpenCourseQuestionSettingController.java @@ -58,6 +58,7 @@ public class TeacherOpenCourseQuestionSettingController{ PageQuery page = condition.getPageQuery(); teacherOpenCourseQuestionSettingService.queryByConditionQuery(page); + teacherOpenCourseQuestionSettingService.fullQuestionSettingOptions(page.getList()); if (!condition.getNotSelectOther()) { // 设置分数和完成时间 teacherOpenCourseQuestionSettingService.setMyQuestionLogScoreInfo(page.getList(), getStudent()); diff --git a/web/src/main/resources/sql/jlw/teacherOpenCourseMergeResourcesQuestion.md b/web/src/main/resources/sql/jlw/teacherOpenCourseMergeResourcesQuestion.md index ded61dc6..3109b13d 100644 --- a/web/src/main/resources/sql/jlw/teacherOpenCourseMergeResourcesQuestion.md +++ b/web/src/main/resources/sql/jlw/teacherOpenCourseMergeResourcesQuestion.md @@ -363,7 +363,7 @@ getValuesByQuery where 1=1 and #function("teacherOpenCourseMergeResourcesQuestion.query")# @if(!isEmpty(teacherOpenCourseMergeResourcesQuestionId)){ and t.teacher_open_course_merge_resources_question_id =#teacherOpenCourseMergeResourcesQuestionId# - @} + @} @if(!isEmpty(teacherOpenCourseMergeResourcesQuestionIdPlural)){ and find_in_set(t.teacher_open_course_merge_resources_question_id,#teacherOpenCourseMergeResourcesQuestionIdPlural#) @} @@ -883,4 +883,43 @@ getGroupQuestionTypeCount GROUP BY t.question_type ORDER BY - t.question_type ASC \ No newline at end of file + t.question_type ASC + +getGroupQuestionTypeCountAndSelectInfo +=== +* 开课离线题库,根据题目类型分组查询数量,和选中的情况 + + select + z.*, + z.select_count * z.single_score as single_type_total_score + from ( + SELECT + t.question_type, + count( 1 ) AS total_count, + @// 该题目类型下,选择的数据 + ( SELECT count( 1 ) FROM resources_question_snapshot + WHERE teacher_open_course_question_setting_id = ta.teacher_open_course_question_setting_id + AND question_type = t.question_type AND question_status = 1 ) AS select_count, + @// 该题目类型下设置的分数,可能会有不同分数的情况,默认取最大分数 + ( SELECT max( question_score ) FROM resources_question_snapshot + WHERE teacher_open_course_question_setting_id = ta.teacher_open_course_question_setting_id + AND question_type = t.question_type AND question_status = 1 ) AS single_score + FROM + teacher_open_course_merge_resources_question t + LEFT JOIN teacher_open_course_question_setting ta ON ta.teacher_open_course_id = t.teacher_open_course_id + WHERE + 1 = 1 + AND t.question_status = 1 + @ // 开课ID + @if(!isEmpty(teacherOpenCourseId)){ + AND t.teacher_open_course_id = #teacherOpenCourseId# + @} + @ // 开课题目配置ID + @if(!isEmpty(questionSettingId)){ + AND ta.teacher_open_course_question_setting_id = #questionSettingId# + @} + GROUP BY + t.question_type + ORDER BY + t.question_type ASC + ) z \ No newline at end of file