Quellcode durchsuchen

添加阅卷下一个接口

yuanjunhao vor 2 Monaten
Ursprung
Commit
64ca68b3a8

+ 11 - 0
web/src/main/java/com/ynfy/buss/exam/exam/controller/ExamController.java

@@ -391,6 +391,17 @@ public class ExamController extends JeecgController<Exam, IExamService> {
     public Result<?> userExamResultDetail(@RequestParam(name = "userExamId") String userExamId,@RequestParam(name = "paperId") String paperId) {
         return Result.ok(examService.userExamResultDetail(userExamId,paperId));
     }
+    /**
+     * 用户考试成绩详情,下一张试卷阅卷
+     *
+     * @param paperId
+     * @return
+     */
+    @ApiOperation(value = "考试-用户考试成绩详情-阅卷切换下一套")
+    @GetMapping(value = "/userExamResultDetails")
+    public Result<?> userExamResultDetails(@RequestParam(name = "paperId") String paperId) {
+        return Result.ok(examService.userExamResultDetails(paperId));
+    }
     /**
      * 缓存考试试卷答案,用于定时任务强制交卷
      *

+ 7 - 0
web/src/main/java/com/ynfy/buss/exam/exam/service/IExamService.java

@@ -59,6 +59,13 @@ public interface IExamService extends IService<Exam> {
      * @return
      */
     UserExamDTO userExamResultDetail(String userExamId,String paperId);
+    /**
+     * 用户考试成绩详情,
+     *
+     * @param userExamId
+     * @return
+     */
+    UserExamDTO userExamResultDetails(String userExamId);
 
     /**
      * 找出正确答案

+ 78 - 1
web/src/main/java/com/ynfy/buss/exam/exam/service/impl/ExamServiceImpl.java

@@ -836,6 +836,71 @@ public class ExamServiceImpl extends ServiceImpl<ExamMapper, Exam> implements IE
         dto.setExamPapersList(examPapersList);
         return dto;
     }
+    public UserExamDTO userExamResultDetails(String paperId,boolean needAnswerFlag, boolean needAnalysis, boolean needClearBlankContent, boolean needRenderBlank) {
+        UserExamDTO dto = new UserExamDTO();
+        List<UserExam> listuserExam = userExamService.listUserExamYueJuans(paperId);
+        UserExam userExam = new UserExam();
+        String userExamId="";
+        if (listuserExam.size()>0) {
+            userExam=listuserExam.get(0);
+            userExamId=userExam.getId();
+        }else {
+            throw new JeecgBootException("没有可阅卷的试卷!");
+        }
+        //显示试卷详情
+        if (Objects.isNull(userExam)) {
+            throw new JeecgBootException("考试不存在!");
+        }
+        BeanUtils.copyProperties(userExam, dto);
+        List<UserExamQuestion> userExamQuestionList = dto.getUserExamQuestionList();
+        List<Map<String, AnswerCardDTO>> answerCardList = new ArrayList<>();
+        List< AnswerCardDTO> answerCardList2 = new ArrayList<>();
+        if (!CollectionUtils.isEmpty(userExamQuestionList)) {
+            List<UserExamQuestion> rootQuestionList = userExamQuestionList.stream().filter(r -> !Objects.isNull(r.getChild()) && !r.getChild())
+                    .sorted(Comparator.comparing(UserExamQuestion::getQuestionIndex)).collect(Collectors.toList());
+            List<UserExamQuestion> childQuestionList = userExamQuestionList.stream().filter(r -> !Objects.isNull(r.getChild()) && r.getChild())
+                    .sorted(Comparator.comparing(UserExamQuestion::getQuestionIndex)).collect(Collectors.toList());
+            if (!CollectionUtils.isEmpty(rootQuestionList)) {
+                //获取题目和答案
+                assembleUserExamQuestion(userExamId, rootQuestionList, childQuestionList, needAnswerFlag, needAnalysis, false, true, needClearBlankContent);
+
+                //设置题目
+                setUserExamQuestion(rootQuestionList, needRenderBlank);
+
+                //设置答题卡
+                setAnswerCard(rootQuestionList, answerCardList);
+                setAnswerCard2(rootQuestionList, answerCardList2);
+                dto.setUserExamQuestionList(rootQuestionList);
+            }
+        }
+        dto.setAnswerCardList(answerCardList);
+        dto.setAnswerCardList2(answerCardList2);
+//        //获取有没有正在考试的试卷信息
+//        LambdaQueryWrapper<UserExamPapers> wrapperpaper = new LambdaQueryWrapper<UserExamPapers>();
+//        wrapperpaper.eq(UserExamPapers::getUserExamId, userExam.getId())
+//                .eq(UserExamPapers::getState, PaperState.ING);
+//        List<UserExamPapers> userExamPapersList=BeanContext.getApplicationContext().getBean(IUserExamPapersService.class).list(wrapperpaper);
+//        //获取本地当前时间
+//        userExamPapersList.get(0).setSystemTime(new Date());
+//        //在返回值中添加考试试卷信息
+//        dto.setUserExamPapersList(userExamPapersList);
+        //添加当前考试的所有试卷信息
+        List<ExamPapers> examPapersList=iExamPapersService.getExamIdPaper(userExam.getExamId());
+        List<UserExamPapers> userExamPapersList1=new ArrayList<UserExamPapers>();
+        for (ExamPapers examPapers : examPapersList) {
+            //获取是否考试状态并赋值
+            userExamPapersList1 = iUserExamPapersService.UserExamPapersList(userExamId, examPapers.getPaperId());
+            if (userExamPapersList1.size() == 0) {
+                examPapers.setState(9);
+            } else {
+                examPapers.setState(userExamPapersList1.get(0).getState());
+            }
+
+        }
+
+        dto.setExamPapersList(examPapersList);
+        return dto;
+    }
     /**
      * 用户考试成绩详情,包括答题卡,试题(包含正确答案和解析)
      *
@@ -849,7 +914,19 @@ public class ExamServiceImpl extends ServiceImpl<ExamMapper, Exam> implements IE
         setAnswerTag(userExamDTO);
         return userExamDTO;
     }
-
+    /**
+     * 用户考试成绩详情,包括答题卡,试题(包含正确答案和解析)
+     *
+     * @param paperId
+     * @return
+     */
+    @Override
+    public UserExamDTO userExamResultDetails(String paperId) {
+        UserExamDTO userExamDTO = userExamResultDetails(paperId, true, true, false, true);
+        //设置单选题/多选题/判断题的答案tag
+        setAnswerTag(userExamDTO);
+        return userExamDTO;
+    }
     /**
      * 设置单选题/多选题/判断题的答案tag
      *

+ 9 - 0
web/src/main/java/com/ynfy/buss/exam/userexam/mapper/UserExamMapper.java

@@ -5,6 +5,8 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.ynfy.buss.exam.userexam.entity.UserExam;
 import org.apache.ibatis.annotations.Param;
 
+import java.util.List;
+
 /**
  * @Description: 用户考试表
  * @Author: jeecg-boot
@@ -27,6 +29,13 @@ public interface UserExamMapper extends BaseMapper<UserExam> {
      * @return
      */
     UserExam listUserExamYueJuan(@Param("id") String id,@Param("paperId")String paperId);
+    /**
+     * 查询阅卷用户考试信息及试题集合
+     *
+     * @param paperId
+     * @return
+     */
+    List<UserExam> listUserExamYueJuans(@Param("paperId") String paperId);
 
 
     IPage<UserExam> selectPageList(IPage<UserExam> page, @Param("userExam") UserExam userExam);

+ 69 - 0
web/src/main/java/com/ynfy/buss/exam/userexam/mapper/xml/UserExamMapper.xml

@@ -185,6 +185,75 @@
         ORDER BY ueq.question_type,
             ueq.sort
     </select>
+    <select id="listUserExamYueJuans" resultMap="userExamMap">
+        SELECT ue.id,
+               ue.user_id,
+               ue.exam_id,
+               ue.paper_id,
+               ue.user_time,
+               ue.user_score,
+               ue.commit_time,
+               ue.state,
+               ue.limit_time,
+               ue.qualify_score,
+               ue.total_score,
+               ue.passed,
+               ue.create_time,
+               ue.has_subjective,
+               ue.subjective_score,
+               ue.objective_score,
+               ue.preview_time,
+               ue.preview_user,
+               e.title as exam_title,
+               e.leave_on,
+               e.total_leave_times,
+               e.leave_time,
+               e.exam_result_showtype,
+               e.show_deadline,
+               ueq.ID as ueq_id,
+               ueq.user_exam_id,
+               ueq.question_id,
+               ueq.question_type,
+               ueq.sort,
+               ueq.question_score,
+               ueq.answered,
+               ueq.is_right,
+               ueq.answer,
+               ueq.question_index,
+               ueq.actual_score,
+               ueq.can_miss_option,
+               ueq.can_blank_option,
+               ueq.child,
+               ueq.parent_question_id,
+               user.realname as realname
+        FROM (SELECT ue.id,
+                     ue.user_id,
+                     ue.exam_id,
+                     uep.paper_id,
+                     ue.user_time,
+                     ue.user_score,
+                     ue.commit_time,
+                     ue.state,
+                     ue.limit_time,
+                     ue.qualify_score,
+                     ue.total_score,
+                     ue.passed,
+                     ue.create_time,
+                     ue.has_subjective,
+                     ue.subjective_score,
+                     ue.objective_score,
+                     ue.preview_time,
+                     ue.preview_user
+              from user_exam ue
+                       LEFT JOIN user_exam_papers uep on ue.id=uep.user_exam_id
+              where uep.state='1' and uep.paper_id=#{paperId}) ue
+                 LEFT JOIN exam e ON ue.exam_id = e.id
+                 LEFT JOIN user_exam_question ueq ON ue.ID = ueq.user_exam_id and ue.paper_id=ueq.paper_id
+                 LEFT JOIN sys_user user ON user.ID = ue.user_id
+
+        ORDER BY ueq.question_type,
+            ueq.sort
+    </select>
 <!-- <select id="listUserExam" resultMap="userExamMap">-->
 <!--        SELECT ue.id,-->
 <!--               ue.user_id,-->

+ 7 - 1
web/src/main/java/com/ynfy/buss/exam/userexam/service/IUserExamService.java

@@ -70,7 +70,13 @@ public interface IUserExamService extends IService<UserExam> {
      * @return
      */
     UserExam listUserExamYueJuan(String id,String paperId);
-
+    /**
+     * 查询阅卷用户考试信息及试题集合
+     *
+     * @param paperId
+     * @return
+     */
+    List<UserExam> listUserExamYueJuans(String paperId);
     /**
      * 根据条件分页查询
      */

+ 4 - 1
web/src/main/java/com/ynfy/buss/exam/userexam/service/impl/UserExamServiceImpl.java

@@ -123,7 +123,10 @@ public class UserExamServiceImpl extends ServiceImpl<UserExamMapper, UserExam> i
     public UserExam listUserExamYueJuan(String id,String paperId) {
         return userExamMapper.listUserExamYueJuan(id,paperId);
     }
-
+    @Override
+    public List<UserExam> listUserExamYueJuans(String paperId) {
+        return userExamMapper.listUserExamYueJuans(paperId);
+    }
 
     /**
      * 根据条件分页查询