From c67c422ea7fdeb040417ef2f0b338cf2042099dc Mon Sep 17 00:00:00 2001
From: Mlxa0324 <mlx950324@163.com>
Date: Tue, 29 Nov 2022 23:26:20 +0800
Subject: [PATCH] =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E9=A2=98=E7=9B=AE=E7=AE=80?=
 =?UTF-8?q?=E5=8D=95=E4=BF=A1=E6=81=AF=EF=BC=8C=E6=8E=A5=E5=8F=A3=E5=85=A5?=
 =?UTF-8?q?=E5=8F=82=E4=BF=AE=E6=94=B9?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 ...erOpenCourseQuestionTestSimpleInfoDTO.java | 10 +++++
 ...herOpenCourseQuestionTestSimpleInfoVO.java | 24 ++++++++++++
 .../ResourcesQuestionSnapshotService.java     | 11 +++---
 .../ResourcesQuestionSnapshotController.java  |  2 +-
 .../sql/jlw/resourcesQuestionSnapshot.md      | 39 +++++++++++++++----
 5 files changed, 72 insertions(+), 14 deletions(-)

diff --git a/web/src/main/java/com/ibeetl/jlw/entity/dto/TeacherOpenCourseQuestionTestSimpleInfoDTO.java b/web/src/main/java/com/ibeetl/jlw/entity/dto/TeacherOpenCourseQuestionTestSimpleInfoDTO.java
index 995de9ee..9e2b1312 100644
--- a/web/src/main/java/com/ibeetl/jlw/entity/dto/TeacherOpenCourseQuestionTestSimpleInfoDTO.java
+++ b/web/src/main/java/com/ibeetl/jlw/entity/dto/TeacherOpenCourseQuestionTestSimpleInfoDTO.java
@@ -3,6 +3,7 @@ package com.ibeetl.jlw.entity.dto;
 import cn.jlw.validate.ValidateConfig;
 import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
 import com.ibeetl.admin.core.web.query.PageParam;
+import com.ibeetl.jlw.enums.ResourcesQuestionSnapshotFromTypeEnum;
 import lombok.*;
 import lombok.experimental.Accessors;
 
@@ -28,6 +29,15 @@ public class TeacherOpenCourseQuestionTestSimpleInfoDTO extends PageParam {
      */
     @NotNull(message = "开课ID不能为空!", groups = ValidateConfig.ADD.class)
     private Long teacherOpenCourseId;
+
+
+    /**
+     * 题目配置类型
+     */
+    @NotNull(message = "题目配置类型不能为空!", groups = ValidateConfig.ADD.class)
+    private ResourcesQuestionSnapshotFromTypeEnum teacherOpenCourseQuestionSettingType;
+
+
 }
 
 
diff --git a/web/src/main/java/com/ibeetl/jlw/entity/vo/TeacherOpenCourseQuestionTestSimpleInfoVO.java b/web/src/main/java/com/ibeetl/jlw/entity/vo/TeacherOpenCourseQuestionTestSimpleInfoVO.java
index 8040f080..7e3b8664 100644
--- a/web/src/main/java/com/ibeetl/jlw/entity/vo/TeacherOpenCourseQuestionTestSimpleInfoVO.java
+++ b/web/src/main/java/com/ibeetl/jlw/entity/vo/TeacherOpenCourseQuestionTestSimpleInfoVO.java
@@ -1,6 +1,9 @@
 package com.ibeetl.jlw.entity.vo;
 
+import cn.hutool.core.date.DateTime;
+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;
 
@@ -21,6 +24,19 @@ public class TeacherOpenCourseQuestionTestSimpleInfoVO extends BaseEntity {
 
     private String teacherOpenCourseQuestionSettingName;
 
+    // 题目配置的类型
+
+    @DictEnum
+    private ResourcesQuestionSnapshotFromTypeEnum teacherOpenCourseQuestionSettingType;
+
+    // 开始时间
+
+    private DateTime teacherOpenCourseQuestionStartTime;
+
+    // 结束时间
+
+    private DateTime teacherOpenCourseQuestionEndTime;
+
     // 我的分数
 
     private String myScore;
@@ -37,4 +53,12 @@ public class TeacherOpenCourseQuestionTestSimpleInfoVO extends BaseEntity {
 
     private String finishTime;
 
+    // 完成用时(秒)
+
+    private String finishSecondTime;
+
+    // 正确率 最大100
+
+    private Float correctRate;
+
 }
diff --git a/web/src/main/java/com/ibeetl/jlw/service/ResourcesQuestionSnapshotService.java b/web/src/main/java/com/ibeetl/jlw/service/ResourcesQuestionSnapshotService.java
index 9da3cb5e..637647f5 100644
--- a/web/src/main/java/com/ibeetl/jlw/service/ResourcesQuestionSnapshotService.java
+++ b/web/src/main/java/com/ibeetl/jlw/service/ResourcesQuestionSnapshotService.java
@@ -15,6 +15,7 @@ import com.ibeetl.jlw.dao.StudentDao;
 import com.ibeetl.jlw.dao.TeacherOpenCourseMergeResourcesQuestionDao;
 import com.ibeetl.jlw.entity.*;
 import com.ibeetl.jlw.entity.dto.QuestionSettingDTO;
+import com.ibeetl.jlw.entity.dto.TeacherOpenCourseQuestionTestSimpleInfoDTO;
 import com.ibeetl.jlw.entity.vo.TeacherOpenCourseQuestionTestDetailVO;
 import com.ibeetl.jlw.entity.vo.TeacherOpenCourseQuestionTestSimpleInfoVO;
 import com.ibeetl.jlw.web.query.ResourcesQuestionSnapshotQuery;
@@ -42,7 +43,6 @@ import java.util.stream.Collectors;
 
 import static cn.hutool.core.util.ArrayUtil.join;
 import static cn.jlw.util.CacheUserUtil.getStudent;
-import static com.ibeetl.jlw.enums.ResourcesQuestionSnapshotFromTypeEnum.CHAPTER_EXERCISE;
 
 /**
  * 题目快照 Service
@@ -471,12 +471,13 @@ public class ResourcesQuestionSnapshotService extends CoreBaseService<ResourcesQ
      * @param query    开课题目配置ID
      * @return
      */
-    public PageQuery<TeacherOpenCourseQuestionTestSimpleInfoVO> getQuestionTestSimpleInfo(PageQuery query) {
+    public PageQuery<TeacherOpenCourseQuestionTestSimpleInfoVO> getQuestionTestSimpleInfo(TeacherOpenCourseQuestionTestSimpleInfoDTO query) {
         Student student = getStudent();
         Assert.notNull(student, "该接口只允许学生访问");
-        query.setPara("studentId", student.getStudentId());
-        query.setPara("teacherOpenCourseQuestionSettingType", CHAPTER_EXERCISE.name());
-        return resourcesQuestionSnapshotDao.getQuestionTestSimpleInfo(query);
+        PageQuery pageQuery = query.getPageQuery(); pageQuery.setPara("studentId", student.getStudentId());
+        PageQuery<TeacherOpenCourseQuestionTestSimpleInfoVO> questionTestSimpleInfo = resourcesQuestionSnapshotDao.getQuestionTestSimpleInfo(pageQuery);
+        dictParser(questionTestSimpleInfo.getList());
+        return questionTestSimpleInfo;
     }
 
     /**
diff --git a/web/src/main/java/com/ibeetl/jlw/web/ResourcesQuestionSnapshotController.java b/web/src/main/java/com/ibeetl/jlw/web/ResourcesQuestionSnapshotController.java
index b8e7c173..42780c71 100644
--- a/web/src/main/java/com/ibeetl/jlw/web/ResourcesQuestionSnapshotController.java
+++ b/web/src/main/java/com/ibeetl/jlw/web/ResourcesQuestionSnapshotController.java
@@ -176,7 +176,7 @@ public class ResourcesQuestionSnapshotController extends BaseController {
                                                              @SCoreUser CoreUser coreUser) {
         
         Assert.isTrue(coreUser.isStudent(), "非学生身份,无法获取数据!");
-        return JsonResult.success(resourcesQuestionSnapshotService.getQuestionTestSimpleInfo(dto.getPageQuery()));
+        return JsonResult.success(resourcesQuestionSnapshotService.getQuestionTestSimpleInfo(dto));
     }
 
 
diff --git a/web/src/main/resources/sql/jlw/resourcesQuestionSnapshot.md b/web/src/main/resources/sql/jlw/resourcesQuestionSnapshot.md
index 7558388a..dfc6e372 100644
--- a/web/src/main/resources/sql/jlw/resourcesQuestionSnapshot.md
+++ b/web/src/main/resources/sql/jlw/resourcesQuestionSnapshot.md
@@ -628,16 +628,39 @@ getQuestionTestSimpleInfo
   LIMIT 1
   ) AS is_finished,
   (
-    SELECT max(TIMEDIFF( t.teacher_open_course_question_log_update_time , t.teacher_open_course_question_log_add_time )) as finish_time 
-    FROM teacher_open_course_question_log t
-    WHERE t.teacher_open_course_question_log_status = 1
+    SELECT max(TIMEDIFF( td.teacher_open_course_question_log_update_time , td.teacher_open_course_question_log_add_time )) as finish_time 
+    FROM teacher_open_course_question_log td
+    WHERE td.teacher_open_course_question_log_status = 1
     @if(!isEmpty(studentId)) { 
-      and t.student_id = #studentId#
+      and td.student_id = #studentId#
     @}
-    and t.question_log_add_type = 'FINALLY_SUBMIT'
-    and t.teacher_open_course_question_setting_id = t.teacher_open_course_question_setting_id
-    AND t.teacher_open_course_question_log_update_time IS NOT NULL
-  ) as finish_time
+    and td.question_log_add_type = 'FINALLY_SUBMIT'
+    and td.teacher_open_course_question_setting_id = t.teacher_open_course_question_setting_id
+    AND td.teacher_open_course_question_log_update_time IS NOT NULL
+  ) as finish_time,
+  (
+  SELECT max(TIMESTAMPDIFF(SECOND, te.teacher_open_course_question_log_update_time , te.teacher_open_course_question_log_add_time )) as finish_second_time
+  FROM teacher_open_course_question_log te
+  WHERE te.teacher_open_course_question_log_status = 1
+  @if(!isEmpty(studentId)) {
+  and te.student_id = #studentId#
+  @}
+  and te.question_log_add_type = 'FINALLY_SUBMIT'
+  and te.teacher_open_course_question_setting_id = t.teacher_open_course_question_setting_id
+  AND te.teacher_open_course_question_log_update_time IS NOT NULL
+  ) as finish_second_time,
+  (
+  SELECT round(sum(case when tf.question_score = tf.student_score then 1 else 0 end) 
+         / ifnull(count(distinct(tf.resources_question_snapshot_id)), 0) * 100, 2) as finish_second_time
+  FROM teacher_open_course_question_log tf
+  WHERE tf.teacher_open_course_question_log_status = 1
+  @if(!isEmpty(studentId)) {
+  and tf.student_id = #studentId#
+  @}
+  and tf.question_log_add_type = 'FINALLY_SUBMIT'
+  and tf.teacher_open_course_question_setting_id = t.teacher_open_course_question_setting_id
+  AND tf.teacher_open_course_question_log_update_time IS NOT NULL
+  ) as correct_rate
   @}
   FROM
   teacher_open_course_question_setting t