Ver código fonte

录题bug修改

yuanjunhao 4 meses atrás
pai
commit
82e3235b4e
22 arquivos alterados com 429 adições e 141 exclusões
  1. 36 3
      web/src/main/java/com/ynfy/buss/exam/exam/controller/ExamController.java
  2. 17 0
      web/src/main/java/com/ynfy/buss/exam/exam/entity/ExamPapers.java
  3. 1 0
      web/src/main/java/com/ynfy/buss/exam/exam/mapper/ExamPapersMapper.java
  4. 5 0
      web/src/main/java/com/ynfy/buss/exam/exam/mapper/xml/ExamPapersMapper.xml
  5. 3 1
      web/src/main/java/com/ynfy/buss/exam/exam/service/IExamPapersService.java
  6. 1 1
      web/src/main/java/com/ynfy/buss/exam/exam/service/IExamService.java
  7. 5 0
      web/src/main/java/com/ynfy/buss/exam/exam/service/impl/ExamPapersServiceImpl.java
  8. 151 96
      web/src/main/java/com/ynfy/buss/exam/exam/service/impl/ExamServiceImpl.java
  9. 2 1
      web/src/main/java/com/ynfy/buss/exam/examreview/dto/PreviewSubmitDTO.java
  10. 28 11
      web/src/main/java/com/ynfy/buss/exam/examreview/service/impl/ExamReviewServiceImpl.java
  11. 14 10
      web/src/main/java/com/ynfy/buss/exam/paper/service/impl/PaperServiceImpl.java
  12. 1 1
      web/src/main/java/com/ynfy/buss/exam/question/mapper/xml/QuestionMapper.xml
  13. 6 5
      web/src/main/java/com/ynfy/buss/exam/question/service/impl/QuestionServiceImpl.java
  14. 2 3
      web/src/main/java/com/ynfy/buss/exam/questionanswer/service/impl/QuestionAnswerServiceImpl.java
  15. 2 0
      web/src/main/java/com/ynfy/buss/exam/repository/controller/RepositoryController.java
  16. 10 3
      web/src/main/java/com/ynfy/buss/exam/repository/service/impl/RepositoryServiceImpl.java
  17. 1 0
      web/src/main/java/com/ynfy/buss/exam/userexam/controller/UserExamController.java
  18. 7 0
      web/src/main/java/com/ynfy/buss/exam/userexam/mapper/UserExamMapper.java
  19. 122 3
      web/src/main/java/com/ynfy/buss/exam/userexam/mapper/xml/UserExamMapper.xml
  20. 7 0
      web/src/main/java/com/ynfy/buss/exam/userexam/service/IUserExamService.java
  21. 5 0
      web/src/main/java/com/ynfy/buss/exam/userexam/service/impl/UserExamServiceImpl.java
  22. 3 3
      web/src/main/java/com/ynfy/buss/practice/userpractice/service/impl/UserPracticeServiceImpl.java

+ 36 - 3
web/src/main/java/com/ynfy/buss/exam/exam/controller/ExamController.java

@@ -83,6 +83,7 @@ public class ExamController extends JeecgController<Exam, IExamService> {
         IPage<Exam> pageList = examService.page(page, queryWrapper);
         if (!CollectionUtils.isEmpty(pageList.getRecords())) {
             pageList.getRecords().forEach(item -> item.setState(examService.getExamState(item)));
+            pageList.getRecords().forEach(item -> item.setExamPapers(iExamPapersService.ExamIdExamPapers(item.getId())));
         }
         return Result.OK(pageList);
     }
@@ -140,6 +141,18 @@ public class ExamController extends JeecgController<Exam, IExamService> {
             exam.setReviewerType(null);
         }
         examService.updateById(exam);
+        //先删除
+        List<ExamPapers> examPapersList=iExamPapersService.ExamIdAllExamPapers(exam.getId());
+        for (ExamPapers examPaper:examPapersList) {
+            iExamPapersService.removeById(examPaper);
+        }
+        //添加考试绑定的试卷信息
+        List<ExamPapers> examPapers=exam.getExamPapers();
+        for (ExamPapers examPaper : examPapers) {
+            examPaper.setExamId(exam.getId());
+            //添加
+            iExamPapersService.save(examPaper);
+        }
         return Result.OK("编辑成功!");
     }
 
@@ -155,6 +168,12 @@ public class ExamController extends JeecgController<Exam, IExamService> {
     @DeleteMapping(value = "/delete")
     public Result<String> delete(@RequestParam(name = "id", required = true) String id) {
         examService.removeById(id);
+        //删除考试绑定的试卷信息
+        List<ExamPapers> examPapers=iExamPapersService.ExamIdAllExamPapers(id);
+        for (ExamPapers examPaper : examPapers) {
+            //删除
+            iExamPapersService.removeById(examPaper);
+        }
         return Result.OK("删除成功!");
     }
 
@@ -170,6 +189,15 @@ public class ExamController extends JeecgController<Exam, IExamService> {
     @DeleteMapping(value = "/deleteBatch")
     public Result<String> deleteBatch(@RequestParam(name = "ids", required = true) String ids) {
         this.examService.removeByIds(Arrays.asList(ids.split(",")));
+        List<String> examIds=Arrays.asList(ids.split(","));
+        //循环删除考试绑定的试卷信息
+        for (String examId : examIds) {
+            List<ExamPapers> examPapers=iExamPapersService.ExamIdAllExamPapers(examId);
+            for (ExamPapers examPaper : examPapers) {
+                //删除
+                iExamPapersService.removeById(examPaper);
+            }
+        }
         return Result.OK("批量删除成功!");
     }
 
@@ -202,6 +230,12 @@ public class ExamController extends JeecgController<Exam, IExamService> {
         if (!Objects.isNull(userExamScoreVO)) {
             exam.setTryCount(userExamScoreVO.getTryCount());
         }
+        //获取考试绑定的试卷信息
+        List<ExamPapers> examPapers=iExamPapersService.ExamIdExamPapers(id);
+        for (ExamPapers papers: examPapers) {
+            papers.setJoinType_dictText(JoinType.getByCode(papers.getJoinType()).getValue());
+        }
+        exam.setExamPapers(examPapers);
         return Result.OK(exam);
     }
 
@@ -324,7 +358,6 @@ public class ExamController extends JeecgController<Exam, IExamService> {
     @PostMapping(value = "/submitExamPaper")
     public Result<?> submitExamPaper(@RequestBody ExamSubmitDTO dto) {
         String biaozhi=examService.submitExamPaper(dto);
-        System.out.println(biaozhi);
         if (biaozhi.equals("0")) {
             return Result.ok();
         }else if(biaozhi.equals("1")){
@@ -355,8 +388,8 @@ public class ExamController extends JeecgController<Exam, IExamService> {
      */
     @ApiOperation(value = "考试-用户考试成绩详情")
     @GetMapping(value = "/userExamResultDetail")
-    public Result<?> userExamResultDetail(@RequestParam(name = "userExamId") String userExamId) {
-        return Result.ok(examService.userExamResultDetail(userExamId));
+    public Result<?> userExamResultDetail(@RequestParam(name = "userExamId") String userExamId,@RequestParam(name = "paperId") String paperId) {
+        return Result.ok(examService.userExamResultDetail(userExamId,paperId));
     }
     /**
      * 缓存考试试卷答案,用于定时任务强制交卷

+ 17 - 0
web/src/main/java/com/ynfy/buss/exam/exam/entity/ExamPapers.java

@@ -102,4 +102,21 @@ public class ExamPapers implements Serializable {
      */
     @TableField(exist = false,select = false)
     private Integer state;
+
+    /**
+     * 组卷方式文本
+     */
+    @TableField(exist = false,select = false)
+    private String joinType_dictText;
+
+    /**
+     * 组卷类型 1:选题组卷 2.随机组卷
+     */
+    @TableField(exist = false,select = false)
+    private Integer joinType;
+    /**
+     * 试题总数
+     */
+    @TableField(exist = false,select = false)
+    private Integer questionCount;
 }

+ 1 - 0
web/src/main/java/com/ynfy/buss/exam/exam/mapper/ExamPapersMapper.java

@@ -22,4 +22,5 @@ public interface ExamPapersMapper extends BaseMapper<ExamPapers> {
      * @param examId
      */
     List<ExamPapers> getExamIdExamPaper(@Param("examId")String examId);
+    List<ExamPapers> ExamIdExamPapers(@Param("examId")String examId);
 }

+ 5 - 0
web/src/main/java/com/ynfy/buss/exam/exam/mapper/xml/ExamPapersMapper.xml

@@ -9,4 +9,9 @@
                                           left join paper p on ep.paper_id=p.id
                                    where e.id=#{examId}
     </select>
+    <select id="ExamIdExamPapers" resultType="com.ynfy.buss.exam.exam.entity.ExamPapers">
+        select ep.*,p.title,p.join_type,p.question_count from 	exam_papers ep,	paper p
+        where ep.paper_id=p.id
+        and ep.exam_id=#{examId}
+    </select>
 </mapper>

+ 3 - 1
web/src/main/java/com/ynfy/buss/exam/exam/service/IExamPapersService.java

@@ -24,7 +24,7 @@ import java.util.Map;
 public interface IExamPapersService extends IService<ExamPapers> {
     //根据考试id获取考试绑定的所有试卷
     List<ExamPapers> ExamIdAllExamPapers(String examId);
-    //根据试卷id获取考试绑定的所有试卷
+    //根据考试id和试卷id获取考试绑定的所有试卷
     List<ExamPapers> PaperIdAllExamPapers(String examId,String PaperId);
     /**
      * 查看考试所有试卷
@@ -32,4 +32,6 @@ public interface IExamPapersService extends IService<ExamPapers> {
      * @param examId
      */
     List<ExamPapers> getExamIdPaper(String examId);
+    //根据考试id获取考试绑定的所有试卷详情
+    List<ExamPapers> ExamIdExamPapers(String examId);
 }

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

@@ -58,7 +58,7 @@ public interface IExamService extends IService<Exam> {
      * @param userExamId
      * @return
      */
-    UserExamDTO userExamResultDetail(String userExamId);
+    UserExamDTO userExamResultDetail(String userExamId,String paperId);
 
     /**
      * 找出正确答案

+ 5 - 0
web/src/main/java/com/ynfy/buss/exam/exam/service/impl/ExamPapersServiceImpl.java

@@ -43,4 +43,9 @@ public class ExamPapersServiceImpl extends ServiceImpl<ExamPapersMapper, ExamPap
     public List<ExamPapers> getExamIdPaper(String examId) {
         return examPapersMapper.getExamIdExamPaper(examId);
     }
+
+    @Override
+    public List<ExamPapers> ExamIdExamPapers(String examId) {
+        return examPapersMapper.ExamIdExamPapers(examId);
+    }
 }

+ 151 - 96
web/src/main/java/com/ynfy/buss/exam/exam/service/impl/ExamServiceImpl.java

@@ -779,7 +779,63 @@ public class ExamServiceImpl extends ServiceImpl<ExamMapper, Exam> implements IE
         dto.setExamPapersList(examPapersList);
         return dto;
     }
+    public UserExamDTO userExamResultDetail(String userExamId,String paperId, boolean needAnswerFlag, boolean needAnalysis, boolean needClearBlankContent, boolean needRenderBlank) {
+        UserExamDTO dto = new UserExamDTO();
+        UserExam userExam = userExamService.listUserExamYueJuan(userExamId,paperId);
+        //显示试卷详情
+        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;
+    }
     /**
      * 用户考试成绩详情,包括答题卡,试题(包含正确答案和解析)
      *
@@ -787,8 +843,8 @@ public class ExamServiceImpl extends ServiceImpl<ExamMapper, Exam> implements IE
      * @return
      */
     @Override
-    public UserExamDTO userExamResultDetail(String userExamId) {
-        UserExamDTO userExamDTO = examDetail(userExamId, true, true, false, true);
+    public UserExamDTO userExamResultDetail(String userExamId,String paperId) {
+        UserExamDTO userExamDTO = userExamResultDetail(userExamId,paperId, true, true, false, true);
         //设置单选题/多选题/判断题的答案tag
         setAnswerTag(userExamDTO);
         return userExamDTO;
@@ -958,7 +1014,7 @@ public class ExamServiceImpl extends ServiceImpl<ExamMapper, Exam> implements IE
     @Override
     public String submitExamPaper(ExamSubmitDTO dto) {
         String biaozhi="";
-        System.out.println("yyz进行交卷");
+//        System.out.println("yyz进行交卷");
         if (StringUtils.isEmpty(dto.getUserExamId())) {
             throw new JeecgBootException("考试ID不能为空");
         }
@@ -980,7 +1036,7 @@ public class ExamServiceImpl extends ServiceImpl<ExamMapper, Exam> implements IE
                throw new JeecgBootException("该试卷已经交卷,不允许重复交卷,当前试卷为最后一套试卷,本次考试结束。");
            }else if(userExamPapersLists.size()==1){
 //               throw new JeecgBootException("该试卷已经交卷,不允许重复交卷,即将进入下一套试卷。",Integer.parseInt(userExamPapersLists.get(0).getPaperId()));
-               System.out.println("yyz显示:"+userExamPapersLists.get(0).getPaperId());
+//               System.out.println("yyz显示:"+userExamPapersLists.get(0).getPaperId());
                return userExamPapersLists.get(0).getPaperId();
            }
         }
@@ -1013,9 +1069,9 @@ public class ExamServiceImpl extends ServiceImpl<ExamMapper, Exam> implements IE
             //没作答时需要更新客观题
             updateObjectiveQuestion(userExamQuestionList);
         } else {
+
             //有作答
             Map<Integer, UserExamQuestion> userExamQuestionMap = rootQuestionList.stream().collect(Collectors.toMap(UserExamQuestion::getQuestionIndex, a -> a, (k1, k2) -> k1));
-
             //计算客观题得分
             double score = calcObjectiveScore(examAnswers, userExamQuestionMap, rootQuestionList);
             //更新用户考试信息和成绩
@@ -1030,57 +1086,57 @@ public class ExamServiceImpl extends ServiceImpl<ExamMapper, Exam> implements IE
         return biaozhi;
     }
     /**
-     * yyz单个试卷交卷
+     * 单个试卷交卷
      *
      * @param dto
      */
     @Transactional(rollbackFor = Exception.class)
     @Override
     public void submitExam(ExamSubmitDTO dto) {
-        if (StringUtils.isEmpty(dto.getUserExamId())) {
-            throw new JeecgBootException("考试ID不能为空");
-        }
-        UserExam userExam = userExamService.listUserExam(dto.getUserExamId());
-        if (Objects.isNull(userExam)) {
-            throw new JeecgBootException("考试记录不存在");
-        }
-        if (PaperState.FINISHED.equals(userExam.getState()) || PaperState.WAIT_OPT.equals(userExam.getState())) {
-            throw new JeecgBootException("该考试已经交卷,不允许重复交卷");
-        }
-        List<UserExamQuestion> userExamQuestionList = userExam.getUserExamQuestionList();
-        if (CollectionUtils.isEmpty(userExamQuestionList)) {
-            throw new JeecgBootException("考题查询失败");
-        }
-
-        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(dto.getUserExamId(), rootQuestionList, childQuestionList, true, false, true, false, false);
-        }
-        //如果没有作答
-        List<ExamAnswerDTO> examAnswers = dto.getExamAnswers();
-        if (CollectionUtils.isEmpty(examAnswers)) {
-            updateUserExamAndResult(0, userExam);
-            //没作答时需要更新客观题
-            updateObjectiveQuestion(userExamQuestionList);
-        } else {
-            //有作答
-            Map<Integer, UserExamQuestion> userExamQuestionMap = rootQuestionList.stream().collect(Collectors.toMap(UserExamQuestion::getQuestionIndex, a -> a, (k1, k2) -> k1));
-
-            //计算客观题得分
-            double score = calcObjectiveScore(examAnswers, userExamQuestionMap, rootQuestionList);
-            //更新用户考试信息和成绩
-            updateUserExamAndResult(score, userExam);
-        }
-
-        //异步删除自动交卷任务,清除redis缓存
-        ThreadPoolUtil.getExecutor().execute(() -> {
-            this.deleteAutoCommitJob(dto.getUserExamId());
-            deleteCacheAnswer(dto.getUserExamId()+dto.getPaperId());
-        });
+//        if (StringUtils.isEmpty(dto.getUserExamId())) {
+//            throw new JeecgBootException("考试ID不能为空");
+//        }
+//        UserExam userExam = userExamService.listUserExam(dto.getUserExamId());
+//        if (Objects.isNull(userExam)) {
+//            throw new JeecgBootException("考试记录不存在");
+//        }
+//        if (PaperState.FINISHED.equals(userExam.getState()) || PaperState.WAIT_OPT.equals(userExam.getState())) {
+//            throw new JeecgBootException("该考试已经交卷,不允许重复交卷");
+//        }
+//        List<UserExamQuestion> userExamQuestionList = userExam.getUserExamQuestionList();
+//        if (CollectionUtils.isEmpty(userExamQuestionList)) {
+//            throw new JeecgBootException("考题查询失败");
+//        }
+//
+//        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(dto.getUserExamId(), rootQuestionList, childQuestionList, true, false, true, false, false);
+//        }
+//        //如果没有作答
+//        List<ExamAnswerDTO> examAnswers = dto.getExamAnswers();
+//        if (CollectionUtils.isEmpty(examAnswers)) {
+//            updateUserExamAndResult(0, userExam);
+//            //没作答时需要更新客观题
+//            updateObjectiveQuestion(userExamQuestionList);
+//        } else {
+//            //有作答
+//            Map<Integer, UserExamQuestion> userExamQuestionMap = rootQuestionList.stream().collect(Collectors.toMap(UserExamQuestion::getQuestionIndex, a -> a, (k1, k2) -> k1));
+//
+//            //计算客观题得分
+//            double score = calcObjectiveScore(examAnswers, userExamQuestionMap, rootQuestionList);
+//            //更新用户考试信息和成绩
+//            updateUserExamAndResult(score, userExam);
+//        }
+//
+//        //异步删除自动交卷任务,清除redis缓存
+//        ThreadPoolUtil.getExecutor().execute(() -> {
+//            this.deleteAutoCommitJob(dto.getUserExamId());
+//            deleteCacheAnswer(dto.getUserExamId()+dto.getPaperId());
+//        });
     }
 
     /**
@@ -1222,6 +1278,7 @@ public class ExamServiceImpl extends ServiceImpl<ExamMapper, Exam> implements IE
      */
     public double calcObjectiveScore(List<ExamAnswerDTO> examAnswers, Map<Integer, UserExamQuestion> userExamQuestionMap, List<UserExamQuestion> rootQuestionList) {
         if (!CollectionUtils.isEmpty(examAnswers)) {
+            System.out.println("---------------------------------------");
             //对比/计算
             for (ExamAnswerDTO o : examAnswers) {
                 //根据题型计算客观题得分
@@ -1291,48 +1348,48 @@ public class ExamServiceImpl extends ServiceImpl<ExamMapper, Exam> implements IE
      * @param userExamQuestionMap
      */
     public void calcQuestionScoreByType(ExamAnswerDTO o, Map<Integer, UserExamQuestion> userExamQuestionMap) {
-        //根据题目序号中获取考题
-        UserExamQuestion userExamQuestion = getUserExamQuestionByIndex(o.getIndex(), userExamQuestionMap);
-        if (Objects.isNull(userExamQuestion)) {
-            return;
-        }
-        userExamQuestion.setAnswered(true);//已答
-        //主观题(简答题)
-        if (userExamQuestion.getQuestionType().equals(QuestionType.SIMPLE.getCode())) {
-            userExamQuestion.setAnswer(o.getSubjectiveAnswer());//答案内容
-            return;
-        }
-
-        //单选,多选,判断题获取并设置答案
-        String[] answers = o.getAnswers();
-        if (!userExamQuestion.getQuestionType().equals(QuestionType.BLANK.getCode())) {
-            if (!Objects.isNull(answers) && answers.length > 0) {
-                userExamQuestion.setAnswer(String.join(",", answers));
-            }
-        }
-
-        //填空题获取答案
-        String blankAnswer = o.getBlankAnswer();
-
-        //提交的答案和题目答案对比
-        Question question = userExamQuestion.getQuestion();
-        switch (QuestionType.getByCode(question.getType())) {
-            //单选题和判断题直接答案完全匹配
-            case RADIO:
-            case JUDGE:
-                compareToScore(userExamQuestion, answers, question);
-                break;
-            case MULTI: //多选题
-                if (!Objects.isNull(userExamQuestion.getCanMissOption()) && userExamQuestion.getCanMissOption()) {
-                    compareMultiToScore(userExamQuestion, answers, question);//漏选给分
-                } else {
-                    compareToScore(userExamQuestion, answers, question);
-                }
-                break;
-            case BLANK: //填空题
-                compareBlankToScore(userExamQuestion, blankAnswer, question, userExamQuestion.getCanBlankOption());
-                break;
-        }
+//        //根据题目序号中获取考题
+//        UserExamQuestion userExamQuestion = getUserExamQuestionByIndex(o.getIndex(), userExamQuestionMap);
+//        if (Objects.isNull(userExamQuestion)) {
+//            return;
+//        }
+//        userExamQuestion.setAnswered(true);//已答
+//        //主观题(简答题)
+//        if (userExamQuestion.getQuestionType().equals(QuestionType.SIMPLE.getCode())) {
+//            userExamQuestion.setAnswer(o.getSubjectiveAnswer());//答案内容
+//            return;
+//        }
+//
+//        //单选,多选,判断题获取并设置答案
+//        String[] answers = o.getAnswers();
+//        if (!userExamQuestion.getQuestionType().equals(QuestionType.BLANK.getCode())) {
+//            if (!Objects.isNull(answers) && answers.length > 0) {
+//                userExamQuestion.setAnswer(String.join(",", answers));
+//            }
+//        }
+//
+//        //填空题获取答案
+//        String blankAnswer = o.getBlankAnswer();
+//
+//        //提交的答案和题目答案对比
+//        Question question = userExamQuestion.getQuestion();
+//        switch (QuestionType.getByCode(question.getType())) {
+//            //单选题和判断题直接答案完全匹配
+//            case RADIO:
+//            case JUDGE:
+//                compareToScore(userExamQuestion, answers, question);
+//                break;
+//            case MULTI: //多选题
+//                if (!Objects.isNull(userExamQuestion.getCanMissOption()) && userExamQuestion.getCanMissOption()) {
+//                    compareMultiToScore(userExamQuestion, answers, question);//漏选给分
+//                } else {
+//                    compareToScore(userExamQuestion, answers, question);
+//                }
+//                break;
+//            case BLANK: //填空题
+//                compareBlankToScore(userExamQuestion, blankAnswer, question, userExamQuestion.getCanBlankOption());
+//                break;
+//        }
     }
     /**
      * 根据题型计算客观题得分(包括连线题和拖拽题)
@@ -1373,7 +1430,6 @@ public class ExamServiceImpl extends ServiceImpl<ExamMapper, Exam> implements IE
 
         //填空题获取答案
         String blankAnswer = o.getBlankAnswer();
-
         //提交的答案和题目答案对比
         Question question = userExamQuestion.getQuestion();
         //switch (QuestionType.getByCode(question.getType()))
@@ -1449,6 +1505,7 @@ public class ExamServiceImpl extends ServiceImpl<ExamMapper, Exam> implements IE
                     compareByNoOrder(answerList, userAnswer, dtoList);
                 }
             });
+            System.out.println(dtoList.size());
             if (!CollectionUtils.isEmpty(dtoList)) {
                 userExamQuestion.setAnswer(JSONArray.toJSONString(dtoList));//设置填空题答案
                 if (dtoList.size() != deepList.size()) { //用户只作答了题目部分空,没答的空自然就是错的了(有错误答案)
@@ -1533,6 +1590,7 @@ public class ExamServiceImpl extends ServiceImpl<ExamMapper, Exam> implements IE
      * @param dtoList
      */
     public void compareByOrder(List<QuestionAnswer> answerList, QuestionAnswer userAnswer, List<BlankAnswerResultDTO> dtoList) {
+        System.out.println("yyz显示userAnswer.getTag():"+userAnswer.getTag());
         QuestionAnswer qa = answerList.stream().filter(a -> a.getTag().equals(userAnswer.getTag())).findFirst().orElse(null);
         if (!Objects.isNull(qa)) {
             String[] answerArray = qa.getContent().trim().split("\\|\\|");
@@ -1865,9 +1923,6 @@ public class ExamServiceImpl extends ServiceImpl<ExamMapper, Exam> implements IE
             long expireMins = DateUtil.between(new Date(), dto.getLimitTime(), DateUnit.MINUTE) + 60 * 24 * 3;
             long expireSec = expireMins * 60;
             String idkey=dto.getUserExamId()+dto.getPaperId();
-            System.out.println("-----------------------------");
-            System.out.println(JSON.toJSONString(dto));
-            System.out.println("-----------------------------");
             redisUtil.set(idkey, JSON.toJSONString(dto), expireSec);
         }
     }

+ 2 - 1
web/src/main/java/com/ynfy/buss/exam/examreview/dto/PreviewSubmitDTO.java

@@ -13,7 +13,8 @@ public class PreviewSubmitDTO {
 
     //用户考试id
     private String userExamId;
-
+    //试卷id
+    private String paperId;
 
     /**
      * 试题分数

+ 28 - 11
web/src/main/java/com/ynfy/buss/exam/examreview/service/impl/ExamReviewServiceImpl.java

@@ -13,6 +13,8 @@ import com.ynfy.buss.exam.examreview.mapper.ExamReviewMapper;
 import com.ynfy.buss.exam.examreview.service.IExamReviewService;
 import com.ynfy.buss.exam.question.enums.QuestionType;
 import com.ynfy.buss.exam.userexam.entity.UserExam;
+import com.ynfy.buss.exam.userexam.entity.UserExamPapers;
+import com.ynfy.buss.exam.userexam.service.IUserExamPapersService;
 import com.ynfy.buss.exam.userexam.service.IUserExamService;
 import com.ynfy.buss.exam.userexamquestion.entity.UserExamQuestion;
 import com.ynfy.buss.exam.userexamquestion.service.IUserExamQuestionService;
@@ -44,6 +46,9 @@ public class ExamReviewServiceImpl extends ServiceImpl<ExamReviewMapper, ExamRev
     @Autowired
     private IUserExamService userExamService;
 
+    @Autowired
+    private IUserExamPapersService userExamPapersService;
+
     @Autowired
     private IUserExamQuestionService userExamQuestionService;
 
@@ -86,7 +91,7 @@ public class ExamReviewServiceImpl extends ServiceImpl<ExamReviewMapper, ExamRev
         if (StringUtils.isEmpty(dto.getUserExamId())) {
             throw new JeecgBootException("考试ID不能为空");
         }
-        UserExam userExam = userExamService.listUserExam(dto.getUserExamId());
+        UserExam userExam = userExamService.listUserExamYueJuan(dto.getUserExamId(), dto.getPaperId());
         if (Objects.isNull(userExam)) {
             throw new JeecgBootException("考试记录不存在");
         }
@@ -150,21 +155,33 @@ public class ExamReviewServiceImpl extends ServiceImpl<ExamReviewMapper, ExamRev
             if (!CollectionUtils.isEmpty(resultList)) {
                 userExamQuestionService.updateBatchById(resultList);
             }
-
+            //yyz添加 获取用户考试试卷记录
+            UserExamPapers userExamPapers=userExamPapersService.UserExamIdPaperUserExamPapers(userExam.getId(), userExam.getPaperId()).get(0);
             //用户得分,主观题得分,更新阅卷人,阅卷时间,考试状态
-            userExam.setSubjectiveScore(subjectiveScore);//主观题得分
-            userExam.setUserScore(NumberUtil.round(NumberUtil.add(userExam.getUserScore().doubleValue(), subjectiveScore),
+            userExamPapers.setSubjectiveScore(subjectiveScore);//主观题得分
+            userExamPapers.setUserScore(NumberUtil.round(NumberUtil.add(userExamPapers.getUserScore().doubleValue(), subjectiveScore),
                     1).doubleValue());//用户最终得分
-            userExam.setPreviewTime(new Date());
+            userExamPapers.setPreviewTime(new Date());
             //阅卷人
-            userExam.setPreviewUser(user.getRealname());
-            userExam.setState(PaperState.FINISHED);
-            int pass = userExam.getUserScore() >= userExam.getQualifyScore() ? 1 : 0;
-            userExam.setPassed(pass);
-            userExamService.updateById(userExam);
+            userExamPapers.setPreviewUser(user.getRealname());
+            userExamPapers.setState(PaperState.FINISHED);
+            int pass = userExamPapers.getUserScore() >= userExamPapers.getQualifyScore() ? 1 : 0;
+            userExamPapers.setPassed(pass);
+            userExamPapersService.updateById(userExamPapers);
+//            //用户得分,主观题得分,更新阅卷人,阅卷时间,考试状态
+//            userExam.setSubjectiveScore(subjectiveScore);//主观题得分
+//            userExam.setUserScore(NumberUtil.round(NumberUtil.add(userExam.getUserScore().doubleValue(), subjectiveScore),
+//                    1).doubleValue());//用户最终得分
+//            userExam.setPreviewTime(new Date());
+//            //阅卷人
+//            userExam.setPreviewUser(user.getRealname());
+//            userExam.setState(PaperState.FINISHED);
+//            int pass = userExam.getUserScore() >= userExam.getQualifyScore() ? 1 : 0;
+//            userExam.setPassed(pass);
+//            userExamService.updateById(userExam);
 
             //考试完成后加入成绩
-            userExamResultService.joinResult(userExam.getUserId(), userExam.getExamId(), userExam.getUserScore(), pass);
+//            userExamResultService.joinResult(userExam.getUserId(), userExam.getExamId(), userExam.getUserScore(), pass);
         }
     }
 

+ 14 - 10
web/src/main/java/com/ynfy/buss/exam/paper/service/impl/PaperServiceImpl.java

@@ -517,24 +517,28 @@ public class PaperServiceImpl extends ServiceImpl<PaperMapper, Paper> implements
     }
 
     /**
-     * 填空题按空设置分值
+     * 填空拖拽连线题按空设置分值
      *
      * @param g
      * @param question
      * @param answerMap
      */
     public void fillBlankOptionScore(PaperRuleGroup g, Question question, Map<String, PaperQuestionAnswer> answerMap) {
-        if (QuestionType.BLANK.getCode().equals(question.getType()) && !Objects.isNull(g.getCanBlankOption()) && g.getCanBlankOption()) {
-            setPathScore(question, answerMap);
-        }
-        //拖拽
-        if (QuestionType.DRAG.getCode().equals(question.getType()) && !Objects.isNull(g.getCanBlankOption()) && g.getCanBlankOption()) {
-            setPathScore(question, answerMap);
-        }
-        //连线
-        if (QuestionType.CONNECTION.getCode().equals(question.getType()) && !Objects.isNull(g.getCanBlankOption()) && g.getCanBlankOption()) {
+        if ((QuestionType.BLANK.getCode().equals(question.getType()) && !Objects.isNull(g.getCanBlankOption()) && g.getCanBlankOption())||
+            (QuestionType.DRAG.getCode().equals(question.getType()) && !Objects.isNull(g.getCanBlankOption()) && g.getCanBlankOption())||
+            (QuestionType.CONNECTION.getCode().equals(question.getType()) && !Objects.isNull(g.getCanBlankOption()) && g.getCanBlankOption())
+        ) {
+            //拖拽连线
             setPathScore(question, answerMap);
         }
+//        //拖拽
+//        if (QuestionType.DRAG.getCode().equals(question.getType()) && !Objects.isNull(g.getCanBlankOption()) && g.getCanBlankOption()) {
+//            setPathScore(question, answerMap);
+//        }
+//        //连线
+//        if (QuestionType.CONNECTION.getCode().equals(question.getType()) && !Objects.isNull(g.getCanBlankOption()) && g.getCanBlankOption()) {
+//            setPathScore(question, answerMap);
+//        }
     }
 
     /**

+ 1 - 1
web/src/main/java/com/ynfy/buss/exam/question/mapper/xml/QuestionMapper.xml

@@ -318,7 +318,7 @@
             question
         <where>
             repository_id = #{repositoryId}
-            AND child = 0
+            AND child = 0 and type!=4 and type!=6
         </where>
         GROUP BY
             type

+ 6 - 5
web/src/main/java/com/ynfy/buss/exam/question/service/impl/QuestionServiceImpl.java

@@ -134,13 +134,14 @@ public class QuestionServiceImpl extends ServiceImpl<QuestionMapper, Question> i
                     item.setId(null);
                     item.setQuestionId(subQuestion.getId());
                     //填空题不生成tag
-                    if (!QuestionType.BLANK.getCode().equals(subQuestion.getType())) {
-                        item.setTag(CharUtil.getZm(answerSort - 1));
-                    }else if (!QuestionType.DRAG.getCode().equals(subQuestion.getType())) {
-                        item.setTag(CharUtil.getZm(answerSort - 1));
-                    }else if (!QuestionType.CONNECTION.getCode().equals(subQuestion.getType())) {
+                    if (!(QuestionType.BLANK.getCode().equals(subQuestion.getType())||QuestionType.DRAG.getCode().equals(subQuestion.getType())||QuestionType.CONNECTION.getCode().equals(subQuestion.getType()))) {
                         item.setTag(CharUtil.getZm(answerSort - 1));
                     }
+//                    else if (!QuestionType.DRAG.getCode().equals(subQuestion.getType())) {
+//                        item.setTag(CharUtil.getZm(answerSort - 1));
+//                    }else if (!QuestionType.CONNECTION.getCode().equals(subQuestion.getType())) {
+//                        item.setTag(CharUtil.getZm(answerSort - 1));
+//                    }
                     item.setSort(answerSort);
                     answerSort++;
                 }

+ 2 - 3
web/src/main/java/com/ynfy/buss/exam/questionanswer/service/impl/QuestionAnswerServiceImpl.java

@@ -59,9 +59,8 @@ public class QuestionAnswerServiceImpl extends ServiceImpl<QuestionAnswerMapper,
                 item.setId(null);
                 item.setQuestionId(questionId);
                 //填空题不生成tag
-                if (!QuestionType.BLANK.getCode().equals(questionType)||
-                    !QuestionType.DRAG.getCode().equals(questionType)||
-                    !QuestionType.CONNECTION.getCode().equals(questionType)) {
+                System.out.println("yyzxianshi:::"+questionType);
+                if (!(QuestionType.BLANK.getCode().equals(questionType)||QuestionType.DRAG.getCode().equals(questionType)||QuestionType.CONNECTION.getCode().equals(questionType))) {
                     item.setTag(CharUtil.getZm(sort - 1));
                 }
                 item.setSort(sort);

+ 2 - 0
web/src/main/java/com/ynfy/buss/exam/repository/controller/RepositoryController.java

@@ -3,6 +3,7 @@ package com.ynfy.buss.exam.repository.controller;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ynfy.buss.exam.question.dto.QuestionDTO;
 import com.ynfy.buss.exam.question.service.IQuestionService;
 import com.ynfy.buss.exam.repository.entity.Repository;
 import com.ynfy.buss.exam.repository.service.IRepositoryService;
@@ -160,6 +161,7 @@ public class RepositoryController extends JeecgController<Repository, IRepositor
     @GetMapping(value = "/getById")
     public Result<Repository> getById(@RequestParam String id) {
         Repository repository = repositoryService.getById(id);
+//        List<QuestionDTO> list=questionService.countQuestionNumByType(id);
         repository.setQuestionDTOList(questionService.countQuestionNumByType(id));
         return Result.OK(repository);
     }

+ 10 - 3
web/src/main/java/com/ynfy/buss/exam/repository/service/impl/RepositoryServiceImpl.java

@@ -48,12 +48,19 @@ public class RepositoryServiceImpl extends ServiceImpl<RepositoryMapper, Reposit
                     StringBuilder str = new StringBuilder();
                     int index = 0;
                     for (QuestionDTO dto : dtoList) {
-                        str.append(QuestionType.getByCode(dto.getType()).getValue()).append(dto.getNum()).append("题");
-                        if (index < dtoList.size() - 1) {
-                            str.append(",");
+                        if (dto.getType().equals(4)||dto.getType().equals(6)) {
+                        //组合简答暂时不显示
+//                            System.out.println("不拼接");
+//                            System.out.println(QuestionType.getByCode(dto.getType()).getValue());
+                        }else {
+                            str.append(QuestionType.getByCode(dto.getType()).getValue()).append(dto.getNum()).append("题");
+                            if (index < dtoList.size() - 1) {
+                                str.append(",");
+                            }
                         }
                         index++;
                     }
+//                    System.out.println("yyz打印:"+str.toString());
                     l.setQuestionRemark(str.toString());
                 }
             });

+ 1 - 0
web/src/main/java/com/ynfy/buss/exam/userexam/controller/UserExamController.java

@@ -67,6 +67,7 @@ public class UserExamController extends JeecgController<UserExam, IUserExamServi
      * @param req
      * @return
      */
+    @AutoLog(value = "阅卷查询考试记录,考试查看考情调用")
     @GetMapping(value = "/examRecordList")
     public Result<IPage<UserExam>> examRecordList(UserExam userExam,
                                                   @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,

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

@@ -20,6 +20,13 @@ public interface UserExamMapper extends BaseMapper<UserExam> {
      * @return
      */
     UserExam listUserExam(String id);
+    /**
+     * 查询阅卷用户考试信息及试题
+     *
+     * @param id
+     * @return
+     */
+    UserExam listUserExamYueJuan(@Param("id") String id,@Param("paperId")String paperId);
 
 
     IPage<UserExam> selectPageList(IPage<UserExam> page, @Param("userExam") UserExam userExam);

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

@@ -116,6 +116,75 @@
         ORDER BY ueq.question_type,
                  ueq.sort
     </select>
+    <select id="listUserExamYueJuan" 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.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
+        WHERE ue.id = #{id}
+        ORDER BY ueq.question_type,
+            ueq.sort
+    </select>
 <!-- <select id="listUserExam" resultMap="userExamMap">-->
 <!--        SELECT ue.id,-->
 <!--               ue.user_id,-->
@@ -165,12 +234,34 @@
 <!--        ORDER BY ueq.question_type,-->
 <!--                 ueq.sort-->
 <!--    </select>-->
-
     <select id="selectPageList" resultType="com.ynfy.buss.exam.userexam.entity.UserExam">
         SELECT
-            ue.*,
-            u.realname as realName
+        ue.*,
+        u.realname as realName
+        FROM (SELECT
+        ue.user_id,ue.exam_id,p.title,
+        uep.user_exam_id id,
+        uep.paper_id,
+        uep.user_time,
+        uep.user_score,
+        uep.commit_time,
+        uep.state,
+        uep.create_time,
+        uep.update_by,
+        uep.update_time,
+        uep.create_by,
+        uep.limit_time,
+        uep.qualify_score,
+        uep.total_score,
+        uep.passed,
+        uep.has_subjective,
+        uep.subjective_score,
+        uep.objective_score,
+        uep.preview_user,
+        uep.preview_time
         FROM user_exam ue
+        LEFT JOIN user_exam_papers uep on ue.id = uep.user_exam_id
+        LEFT JOIN paper p on uep.paper_id = p.id) ue
         LEFT JOIN sys_user u on ue.user_id = u.id
         <where>
             <if test="userExam.realName != null and userExam.realName != ''">
@@ -182,6 +273,9 @@
             <if test="userExam.examId != null and userExam.examId != ''">
                 AND ue.exam_id = #{userExam.examId}
             </if>
+            <if test="userExam.paperId != null and userExam.paperId != ''">
+                AND ue.paper_id = #{userExam.paperId}
+            </if>
             <if test="userExam.state != null">
                 AND ue.state = #{userExam.state}
             </if>
@@ -191,4 +285,29 @@
         </where>
         ORDER BY ue.commit_time DESC
     </select>
+<!--    <select id="selectPageList" resultType="com.ynfy.buss.exam.userexam.entity.UserExam">-->
+<!--        SELECT-->
+<!--            ue.*,-->
+<!--            u.realname as realName-->
+<!--        FROM user_exam ue-->
+<!--        LEFT JOIN sys_user u on ue.user_id = u.id-->
+<!--        <where>-->
+<!--            <if test="userExam.realName != null and userExam.realName != ''">-->
+<!--                AND u.realname like concat('%', #{userExam.realName}, '%')-->
+<!--            </if>-->
+<!--            <if test="userExam.userId != null and userExam.userId != ''">-->
+<!--                AND ue.user_id = #{userExam.userId}-->
+<!--            </if>-->
+<!--            <if test="userExam.examId != null and userExam.examId != ''">-->
+<!--                AND ue.exam_id = #{userExam.examId}-->
+<!--            </if>-->
+<!--            <if test="userExam.state != null">-->
+<!--                AND ue.state = #{userExam.state}-->
+<!--            </if>-->
+<!--            <if test="userExam.passed != null">-->
+<!--                AND ue.passed = #{userExam.passed}-->
+<!--            </if>-->
+<!--        </where>-->
+<!--        ORDER BY ue.commit_time DESC-->
+<!--    </select>-->
 </mapper>

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

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

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

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

+ 3 - 3
web/src/main/java/com/ynfy/buss/practice/userpractice/service/impl/UserPracticeServiceImpl.java

@@ -99,9 +99,9 @@ public class UserPracticeServiceImpl extends ServiceImpl<UserPracticeMapper, Use
             ExamAnswerDTO answerDTO = answerList.stream().filter(a -> a.getIndex().equals(item.getQuestionIndex())).findFirst().orElse(null);
             if (!Objects.isNull(answerDTO)) {
                 String[] answers = answerDTO.getAnswers();
-                if (!item.getType().equals(QuestionType.BLANK.getCode())||
-                    !item.getType().equals(QuestionType.DRAG.getCode())||
-                    !item.getType().equals(QuestionType.CONNECTION.getCode())) { //单选,多选,判断
+                if (item.getType().equals(QuestionType.RADIO.getCode())||
+                    item.getType().equals(QuestionType.MULTI.getCode())||
+                    item.getType().equals(QuestionType.JUDGE.getCode())) { //单选,多选,判断
                     if (!Objects.isNull(answers) && answers.length > 0) {
                         upq.setAnswer(String.join(",", answers));
                     }