diff --git a/web/src/main/java/com/ibeetl/jlw/dao/QuestionLogSummaryDao.java b/web/src/main/java/com/ibeetl/jlw/dao/QuestionLogSummaryDao.java index 0e54a8e3..513161c0 100644 --- a/web/src/main/java/com/ibeetl/jlw/dao/QuestionLogSummaryDao.java +++ b/web/src/main/java/com/ibeetl/jlw/dao/QuestionLogSummaryDao.java @@ -2,6 +2,7 @@ package com.ibeetl.jlw.dao; import com.ibeetl.jlw.entity.QuestionLogSummary; import com.ibeetl.jlw.entity.vo.QuestionLogSummaryAnalysisVO; +import com.ibeetl.jlw.entity.vo.QuestionLogSummaryHomeworkFileAnalysisVO; import com.ibeetl.jlw.enums.ResourcesQuestionSnapshotFromTypeEnum; import com.ibeetl.jlw.web.query.QuestionLogSummaryQuery; import org.beetl.sql.core.engine.PageQuery; @@ -56,4 +57,15 @@ public interface QuestionLogSummaryDao extends BaseMapper{ * @return */ Map analysisAvg(String questionSettingIds, ResourcesQuestionSnapshotFromTypeEnum questionSettingType); + + /** + * 功能描述:
+ * 附件作业的统计分析接口 + * + * @param query + * @return {@link PageQuery< QuestionLogSummaryHomeworkFileAnalysisVO>} + * @Author: lx + * @Date: 2023/1/13 19:10 + */ + PageQuery homeworkFileAnalysisPageQuery(PageQuery query); } diff --git a/web/src/main/java/com/ibeetl/jlw/entity/vo/QuestionLogSummaryHomeworkFileAnalysisVO.java b/web/src/main/java/com/ibeetl/jlw/entity/vo/QuestionLogSummaryHomeworkFileAnalysisVO.java new file mode 100644 index 00000000..c7f31c3e --- /dev/null +++ b/web/src/main/java/com/ibeetl/jlw/entity/vo/QuestionLogSummaryHomeworkFileAnalysisVO.java @@ -0,0 +1,62 @@ +package com.ibeetl.jlw.entity.vo; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.ibeetl.admin.core.annotation.DictEnum; +import com.ibeetl.admin.core.entity.BaseEntity; +import com.ibeetl.jlw.enums.ResourcesQuestionSnapshotFromTypeEnum; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.FieldNameConstants; + +/** + * 功能描述:
+ * + * @author: mlx + * @description: + * @date: 2022/12/12 15:56 + * @version: 1.0 + */ +@Data +@FieldNameConstants +@EqualsAndHashCode(callSuper=false) +@ExcelIgnoreUnannotated +public class QuestionLogSummaryHomeworkFileAnalysisVO extends BaseEntity { + + /** + * 题目配置ID + */ + private String questionSettingId; + /** + * 题目配置名称(作业名称、章节练习名称、考试名称等) + */ + @ExcelProperty(value = "名称") + private String questionSettingName; + + @ExcelProperty(value = "开始时间") + private String startTime; + + @ExcelProperty(value = "结束时间") + private String endTime; + + @DictEnum + private ResourcesQuestionSnapshotFromTypeEnum questionSettingType; + + @ExcelProperty(value = "题目类型") + private String questionSettingTypeText; + /** + * 学生平均分数 + */ + @ExcelProperty(value = "学生平均分数") + private String avgStudentScore; + /** + * 平均正确率 + */ + @ExcelProperty(value = "平均正确率") + private String avgQuestionLogSummarySuccessRate; + /** + * 平均通过率 + */ + @ExcelProperty(value = "平均通过率") + private String avgQuestionLogSummaryIsPass; +} diff --git a/web/src/main/java/com/ibeetl/jlw/service/QuestionLogSummaryService.java b/web/src/main/java/com/ibeetl/jlw/service/QuestionLogSummaryService.java index 7e7e6ae8..eaec7b6c 100644 --- a/web/src/main/java/com/ibeetl/jlw/service/QuestionLogSummaryService.java +++ b/web/src/main/java/com/ibeetl/jlw/service/QuestionLogSummaryService.java @@ -14,6 +14,7 @@ import com.ibeetl.jlw.dao.QuestionLogSummaryDao; import com.ibeetl.jlw.entity.FileEntity; import com.ibeetl.jlw.entity.QuestionLogSummary; import com.ibeetl.jlw.entity.vo.QuestionLogSummaryAnalysisVO; +import com.ibeetl.jlw.entity.vo.QuestionLogSummaryHomeworkFileAnalysisVO; import com.ibeetl.jlw.enums.QuestionBusinessTypeEnum; import com.ibeetl.jlw.enums.ResourcesQuestionSnapshotFromTypeEnum; import com.ibeetl.jlw.web.query.QuestionLogSummaryQuery; @@ -202,8 +203,8 @@ public class QuestionLogSummaryService extends CoreBaseService map = new HashMap<>();//获取需要的表头的列 @@ -346,28 +347,28 @@ public class QuestionLogSummaryService extends CoreBaseService analysisPageQuery(PageQuery query) { return questionLogSummaryDao.analysisPageQuery(query); } + + /** + * 功能描述:
+ * 附件作业的统计分析接口 + * + * @param query + * @return {@link PageQuery< QuestionLogSummaryHomeworkFileAnalysisVO>} + * @Author: lx + * @Date: 2023/1/13 19:10 + */ + public PageQuery homeworkFileAnalysisPageQuery(PageQuery query) { + return questionLogSummaryDao.homeworkFileAnalysisPageQuery(query); + } } diff --git a/web/src/main/java/com/ibeetl/jlw/web/QuestionLogSummaryController.java b/web/src/main/java/com/ibeetl/jlw/web/QuestionLogSummaryController.java index 0a517cee..5e8eab06 100644 --- a/web/src/main/java/com/ibeetl/jlw/web/QuestionLogSummaryController.java +++ b/web/src/main/java/com/ibeetl/jlw/web/QuestionLogSummaryController.java @@ -18,6 +18,7 @@ import com.ibeetl.admin.core.web.query.PageParam; import com.ibeetl.jlw.entity.FileEntity; import com.ibeetl.jlw.entity.QuestionLogSummary; import com.ibeetl.jlw.entity.vo.QuestionLogSummaryAnalysisVO; +import com.ibeetl.jlw.entity.vo.QuestionLogSummaryHomeworkFileAnalysisVO; import com.ibeetl.jlw.enums.ResourcesQuestionSnapshotFromTypeEnum; import com.ibeetl.jlw.service.QuestionLogSummaryService; import com.ibeetl.jlw.web.query.QuestionLogSummaryQuery; @@ -578,4 +579,42 @@ public class QuestionLogSummaryController extends BaseController { write(response, filename,"Sheet1", QuestionLogSummaryAnalysisVO.class, page.getList()); } + /** + * 附件作业的统计分析接口 + * @param teacherOpenCourseId 开课ID + * @param questionSettingType 题目配置类型 + * @return + */ + @PostMapping(MODEL + "/homeworkFileAnalysis.json") + public JsonResult homeworkFileAnalysis(PageParam param, Long teacherOpenCourseId, @RequestParam(required = false) ResourcesQuestionSnapshotFromTypeEnum questionSettingType, @SCoreUser CoreUser coreUser) { + PageQuery objectPageQuery = ofDefault(new PageQuery<>(), param); + objectPageQuery.setPara("questionSettingType", questionSettingType); + objectPageQuery.setPara("teacherOpenCourseId", teacherOpenCourseId); + + return JsonResult.success(questionLogSummaryService.homeworkFileAnalysisPageQuery(objectPageQuery)); + } + + /** + * 附件作业的统计分析接口 + * @param teacherOpenCourseId 开课ID + * @param questionSettingType 题目配置类型 + * @return + */ + @SneakyThrows + @PostMapping(MODEL + "/homeworkFileAnalysisExport.json") + @ResponseBody + public String homeworkFileAnalysisExport(Long teacherOpenCourseId, @RequestParam(required = false) ResourcesQuestionSnapshotFromTypeEnum questionSettingType, @SCoreUser CoreUser coreUser) { + PageQuery pageQuery = new PageQuery<>(); + pageQuery.setPageSize(Integer.MAX_VALUE); + pageQuery.setPageNumber(1); + pageQuery.setPara("questionSettingType", questionSettingType); + pageQuery.setPara("teacherOpenCourseId", teacherOpenCourseId); + + PageQuery page = questionLogSummaryService.homeworkFileAnalysisPageQuery(pageQuery); + + String filename = StrUtil.format("附件作业日志导出{}.xlsx", DateUtil.now()); + write(response, filename, "Sheet1", QuestionLogSummaryHomeworkFileAnalysisVO.class, page.getList()); + return null; + } + } diff --git a/web/src/main/resources/sql/jlw/questionLogSummary.md b/web/src/main/resources/sql/jlw/questionLogSummary.md index 6f74ca75..96e3b8e9 100644 --- a/web/src/main/resources/sql/jlw/questionLogSummary.md +++ b/web/src/main/resources/sql/jlw/questionLogSummary.md @@ -934,4 +934,42 @@ analysisAvg and find_in_set(t.question_setting_id, #questionSettingIds#) @} and t.question_log_summary_status = 1 - \ No newline at end of file + +homeworkFileAnalysisPageQuery +=== +* 附件作业的统计分析接口 + + select + @pageTag(){ + z.* + @} + from ( + SELECT + ta.teacher_open_course_question_setting_name AS question_setting_name, + ta.teacher_open_course_question_setting_id AS question_setting_id, + ta.teacher_open_course_question_start_time AS start_time, + ta.teacher_open_course_question_end_time AS end_time, + ta.teacher_open_course_question_setting_type AS question_setting_type, + round( avg( question_log_summary_student_total_score ), 1 ) AS avg_student_score, + 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 + FROM + teacher_open_course_question_setting ta + LEFT JOIN question_log_summary t ON t.question_setting_id = ta.teacher_open_course_question_setting_id + where 1 + @if(!isEmpty(questionSettingType)) { + and t.question_setting_type = #questionSettingType# + and ta.teacher_open_course_question_setting_type = #questionSettingType# + @} + and t.question_log_summary_status = 1 + and ta.teacher_open_course_id = #teacherOpenCourseId# + and ta.teacher_open_course_question_setting_status = 1 + AND ta.teacher_open_course_question_setting_push_status = 1 + AND ta.teacher_open_course_question_setting_name is not null + GROUP BY + ta.teacher_open_course_question_setting_name, + ta.teacher_open_course_question_setting_id, + ta.teacher_open_course_question_start_time, + ta.teacher_open_course_question_end_time, + ta.teacher_open_course_question_setting_type + ) z