From 31fc3e8ab97cdeaef8994382a835cbbaa327e1f6 Mon Sep 17 00:00:00 2001 From: Mlxa0324 Date: Tue, 6 Dec 2022 01:03:50 +0800 Subject: [PATCH] =?UTF-8?q?=E9=A2=98=E7=9B=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ibeetl/jlw/entity/QuestionLogSummary.java | 21 ++++++++ ...acherOpenCourseMergeResourcesQuestion.java | 2 +- .../TeacherOpenCourseQuestionSetting.java | 22 ++++----- ...acherOpenCourseQuestionSettingService.java | 48 +++++++++++-------- 4 files changed, 61 insertions(+), 32 deletions(-) diff --git a/web/src/main/java/com/ibeetl/jlw/entity/QuestionLogSummary.java b/web/src/main/java/com/ibeetl/jlw/entity/QuestionLogSummary.java index 53244420..abf9729e 100644 --- a/web/src/main/java/com/ibeetl/jlw/entity/QuestionLogSummary.java +++ b/web/src/main/java/com/ibeetl/jlw/entity/QuestionLogSummary.java @@ -1,11 +1,15 @@ package com.ibeetl.jlw.entity; import com.ibeetl.admin.core.annotation.Dict; +import com.ibeetl.admin.core.annotation.DictDeep; import com.ibeetl.admin.core.entity.BaseEntity; import com.ibeetl.admin.core.util.ValidateConfig; import com.ibeetl.jlw.enums.QuestionBusinessTypeEnum; import com.ibeetl.jlw.enums.ResourcesQuestionSnapshotFromTypeEnum; import org.beetl.sql.annotation.entity.AssignID; +import org.beetl.sql.annotation.entity.InsertIgnore; +import org.beetl.sql.annotation.entity.UpdateIgnore; +import org.beetl.sql.fetch.annotation.FetchOne; import javax.validation.constraints.NotNull; import java.math.BigDecimal; @@ -50,6 +54,15 @@ public class QuestionLogSummary extends BaseEntity{ //人员ID(学生ID等等) private Long personId ; + + /** + * 学生信息 + */ + @UpdateIgnore + @InsertIgnore + @FetchOne("personId") + @DictDeep + private Student studentInfo; //关联的做题日志IDs @@ -382,4 +395,12 @@ public class QuestionLogSummary extends BaseEntity{ public void setQuestionLogSummaryStudentTotalScore(BigDecimal questionLogSummaryStudentTotalScore) { this.questionLogSummaryStudentTotalScore = questionLogSummaryStudentTotalScore; } + + public Student getStudentInfo() { + return studentInfo; + } + + public void setStudentInfo(Student studentInfo) { + this.studentInfo = studentInfo; + } } diff --git a/web/src/main/java/com/ibeetl/jlw/entity/TeacherOpenCourseMergeResourcesQuestion.java b/web/src/main/java/com/ibeetl/jlw/entity/TeacherOpenCourseMergeResourcesQuestion.java index db108cda..ae15f476 100644 --- a/web/src/main/java/com/ibeetl/jlw/entity/TeacherOpenCourseMergeResourcesQuestion.java +++ b/web/src/main/java/com/ibeetl/jlw/entity/TeacherOpenCourseMergeResourcesQuestion.java @@ -52,7 +52,7 @@ public class TeacherOpenCourseMergeResourcesQuestion extends BaseEntity { private Long teacherOpenCourseMergeCourseInfoId ; //题型(1单选 2多选 3判断 4填空 5分析) - @ExcelSelector(fixedSelector = {"单选"+ID_SEPARATOR+"1", "多选"+ID_SEPARATOR+"2", "判断"+ID_SEPARATOR+"3" }) + @ExcelSelector(fixedSelector = {"单选"+ID_SEPARATOR+"1", "多选"+ID_SEPARATOR+"2", "判断"+ID_SEPARATOR+"3", "填空"+ID_SEPARATOR+"4", "分析"+ID_SEPARATOR+"5" }) @ExcelProperty(value = "题型", index = 2) private Integer questionType ; 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 bced3558..64afcd13 100644 --- a/web/src/main/java/com/ibeetl/jlw/entity/TeacherOpenCourseQuestionSetting.java +++ b/web/src/main/java/com/ibeetl/jlw/entity/TeacherOpenCourseQuestionSetting.java @@ -178,16 +178,16 @@ public class TeacherOpenCourseQuestionSetting extends BaseEntity { @InsertIgnore private List questionSettingOptions; -// /** -// * 其他表的字段,回显用 -// */ -// @UpdateIgnore -// @InsertIgnore -// // 题目ID集合 -// @FetchSql("select group_concat(t.teacher_open_course_merge_resources_question_id) " + -// "from resources_question_snapshot t where t.teacher_open_course_question_setting_id = #teacherOpenCourseQuestionSettingId# \n" + -// "and t.question_status = 1 \n" -// ) -// private String resourcesQuestionIdPlural; + /** + * 其他表的字段,回显用 + */ + @UpdateIgnore + @InsertIgnore + // 题目ID集合 + @FetchSql("select group_concat(t.teacher_open_course_merge_resources_question_id) " + + "from resources_question_snapshot t where t.teacher_open_course_question_setting_id = #teacherOpenCourseQuestionSettingId# \n" + + "and t.question_status = 1 \n" + ) + private String resourcesQuestionIdPlural; } 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 4bb7008c..2d56400c 100644 --- a/web/src/main/java/com/ibeetl/jlw/service/TeacherOpenCourseQuestionSettingService.java +++ b/web/src/main/java/com/ibeetl/jlw/service/TeacherOpenCourseQuestionSettingService.java @@ -246,21 +246,16 @@ public class TeacherOpenCourseQuestionSettingService extends CoreBaseService list, Student student) { - if (ObjectUtil.isAllNotEmpty(list, student)) { - Long studentId = student.getStudentId(); - list.forEach(item -> { - Long questionSettingId = item.getTeacherOpenCourseQuestionSettingId(); + Optional.ofNullable(list).orElse(Collections.emptyList()).forEach(item -> { + Long questionSettingId = item.getTeacherOpenCourseQuestionSettingId(); + if (ObjectUtil.isNotEmpty(student)) { + Long studentId = student.getStudentId(); QuestionLogSummaryQuery logSummaryQuery = new QuestionLogSummaryQuery(); logSummaryQuery.setPersonId(studentId); logSummaryQuery.setQuestionLogSummaryStatus(1); logSummaryQuery.setQuestionSettingId(questionSettingId); List logSummaryList = questionLogSummaryDao.getValuesByQueryNotWithPermission(logSummaryQuery); - QuestionLogSummaryQuery logSummaryQuery2 = new QuestionLogSummaryQuery(); - logSummaryQuery2.setQuestionLogSummaryStatus(1); - logSummaryQuery2.setQuestionSettingId(questionSettingId); - List logSummaryList2 = questionLogSummaryDao.getValuesByQueryNotWithPermission(logSummaryQuery2); - // 我的得分,完成时间 if (ObjectUtil.isNotEmpty(logSummaryList)) { QuestionLogSummary scoreInfo = logSummaryList.get(0); @@ -268,18 +263,31 @@ public class TeacherOpenCourseQuestionSettingService extends CoreBaseService logSummaryList2 = questionLogSummaryDao.getValuesByQueryNotWithPermission(logSummaryQuery2); + + // 平均及格率,平均得分等等 + if (ObjectUtil.isNotEmpty(logSummaryList2)) { + BigDecimal studentTotalScore = logSummaryList2.stream().map(QuestionLogSummary::getQuestionLogSummaryStudentTotalScore).reduce(BigDecimal::add).get(); + int passTotalCount = logSummaryList2.stream().map(QuestionLogSummary::getQuestionLogSummaryIsPass).reduce(Integer::sum).get(); + int questionTotalCount = logSummaryList2.get(0).getQuestionLogSummaryQuestionTotalCount(); + int totalSuccessCount = logSummaryList2.stream().map(QuestionLogSummary::getQuestionLogSummarySuccessCount).reduce(Integer::sum).get(); + int totalErrorCount = logSummaryList2.stream().map(QuestionLogSummary::getQuestionLogSummaryErrorCount).reduce(Integer::sum).get(); + BigDecimal totalSuccessRate = logSummaryList2.stream().map(QuestionLogSummary::getQuestionLogSummarySuccessRate).reduce(BigDecimal::add).get(); + int logSummarySize = logSummaryList2.size(); + + item.set("avgScore", NumberUtil.div(studentTotalScore, logSummarySize, 1)); + item.set("avgPassRate", NumberUtil.div(passTotalCount, logSummarySize, 1)); + item.set("questionCount", questionTotalCount); + item.set("avgSuccessCount", NumberUtil.div(totalSuccessCount, logSummarySize, 1)); + item.set("avgErrorCount", NumberUtil.div(totalErrorCount, logSummarySize, 1)); + item.set("avgSuccessRate", NumberUtil.div(totalSuccessRate, logSummarySize, 1)); + } + }); } public TeacherOpenCourseQuestionSetting getInfo (Long teacherOpenCourseQuestionSettingId){