From 7516e99d816b7f1610e6cc73fed23fc3d8ede1e3 Mon Sep 17 00:00:00 2001
From: fuliqi <fuliqi@qq.com>
Date: 星期一, 17 六月 2024 09:16:17 +0800
Subject: [PATCH] 随序试卷生成题目
---
src/main/java/com/ycl/jxkg/controller/admin/ExamPaperController.java | 9 -
src/main/java/com/ycl/jxkg/domain/exam/PaperFixQuestionDTO.java | 16 ++
src/main/java/com/ycl/jxkg/domain/form/ExamPaperForm.java | 15 +
src/main/resources/mapper/QuestionMapper.xml | 12 +
src/main/java/com/ycl/jxkg/domain/vo/admin/exam/ExamPaperEditRequestVO.java | 43 +++---
src/main/java/com/ycl/jxkg/mapper/ExamPaperMapper.java | 3
src/main/java/com/ycl/jxkg/domain/question/RandomQuestionDTO.java | 9 +
src/main/java/com/ycl/jxkg/service/ExamPaperService.java | 5
src/main/java/com/ycl/jxkg/domain/vo/admin/exam/ExamResponseVO.java | 6
src/main/java/com/ycl/jxkg/domain/entity/ExamPaper.java | 4
src/main/java/com/ycl/jxkg/mapper/QuestionMapper.java | 3
src/main/resources/mapper/ExamPaperMapper.xml | 3
src/main/java/com/ycl/jxkg/domain/exam/PaperQuestion.java | 14 +
src/main/java/com/ycl/jxkg/service/QuestionService.java | 2
src/main/java/com/ycl/jxkg/domain/exam/PaperQuestionSettingDTO.java | 7
src/main/java/com/ycl/jxkg/service/impl/ExamPaperServiceImpl.java | 185 +++++++++++++++++++++++-------
16 files changed, 237 insertions(+), 99 deletions(-)
diff --git a/src/main/java/com/ycl/jxkg/controller/admin/ExamPaperController.java b/src/main/java/com/ycl/jxkg/controller/admin/ExamPaperController.java
index 9ebfd0e..09d7409 100644
--- a/src/main/java/com/ycl/jxkg/controller/admin/ExamPaperController.java
+++ b/src/main/java/com/ycl/jxkg/controller/admin/ExamPaperController.java
@@ -42,7 +42,6 @@
return Result.ok(page);
}
-
@RequestMapping(value = "/addPaper", method = RequestMethod.POST)
public Result taskExamPageList(@RequestBody @Validated(Add.class) ExamPaperForm form) {
if (!StringUtils.isBlank(form.getVisibility())) {
@@ -50,18 +49,16 @@
}
form.setCreateUser(getCurrentUser().getId());
form.setCreateTime(new Date());
- examPaperService.addPaper(form);
- return Result.ok();
- }
+ return examPaperService.addPaper(form);
+ }
@RequestMapping(value = "/edit", method = RequestMethod.POST)
public Result edit(@RequestBody @Validated(Update.class) ExamPaperForm form) {
if (!StringUtils.isBlank(form.getVisibility())) {
form.setVisibility(VisibilityEnum.fromCode(form.getVisibility()).getName());
}
- examPaperService.updateExamPaper(form);
- return Result.ok();
+ return examPaperService.updateExamPaper(form);
}
@RequestMapping(value = "/editQuestion", method = RequestMethod.POST)
diff --git a/src/main/java/com/ycl/jxkg/domain/entity/ExamPaper.java b/src/main/java/com/ycl/jxkg/domain/entity/ExamPaper.java
index af6addf..9f4a0b3 100644
--- a/src/main/java/com/ycl/jxkg/domain/entity/ExamPaper.java
+++ b/src/main/java/com/ycl/jxkg/domain/entity/ExamPaper.java
@@ -43,8 +43,8 @@
/**
* 棰樼洰鏁伴噺
*/
- @TableField("question_count")
- private Integer questionCount;
+ @TableField("num")
+ private Integer num;
/**
* 寤鸿鏃堕暱(鍒嗛挓)
diff --git a/src/main/java/com/ycl/jxkg/domain/exam/PaperFixQuestionDTO.java b/src/main/java/com/ycl/jxkg/domain/exam/PaperFixQuestionDTO.java
new file mode 100644
index 0000000..aadcc15
--- /dev/null
+++ b/src/main/java/com/ycl/jxkg/domain/exam/PaperFixQuestionDTO.java
@@ -0,0 +1,16 @@
+package com.ycl.jxkg.domain.exam;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+@Data
+public class PaperFixQuestionDTO {
+ //鏍囬
+ private String title;
+ //棰樼洰绫诲瀷
+ private Integer questionType;
+ //棰樼洰
+ private List<PaperQuestion> questionList;
+}
diff --git a/src/main/java/com/ycl/jxkg/domain/exam/PaperQuestion.java b/src/main/java/com/ycl/jxkg/domain/exam/PaperQuestion.java
index d59d8e3..35ea15b 100644
--- a/src/main/java/com/ycl/jxkg/domain/exam/PaperQuestion.java
+++ b/src/main/java/com/ycl/jxkg/domain/exam/PaperQuestion.java
@@ -1,16 +1,24 @@
package com.ycl.jxkg.domain.exam;
+import com.ycl.jxkg.domain.question.QuestionItemObject;
import lombok.Data;
import java.math.BigDecimal;
+import java.util.List;
@Data
public class PaperQuestion {
//鍏宠仈棰樼洰id
- private Integer questionId;
- //鎺掑簭
- private Integer order;
+ private Integer id;
+
+ private List<QuestionItemObject> items;
+
+ private Integer difficult;
+
+ private String title;
//棰樼洰鍒嗘暟
private BigDecimal score;
+ private String correct;
+
}
diff --git a/src/main/java/com/ycl/jxkg/domain/exam/PaperQuestionDTO.java b/src/main/java/com/ycl/jxkg/domain/exam/PaperQuestionSettingDTO.java
similarity index 65%
rename from src/main/java/com/ycl/jxkg/domain/exam/PaperQuestionDTO.java
rename to src/main/java/com/ycl/jxkg/domain/exam/PaperQuestionSettingDTO.java
index 8a6a7fc..e2752ec 100644
--- a/src/main/java/com/ycl/jxkg/domain/exam/PaperQuestionDTO.java
+++ b/src/main/java/com/ycl/jxkg/domain/exam/PaperQuestionSettingDTO.java
@@ -2,10 +2,11 @@
import lombok.Data;
+import java.math.BigDecimal;
import java.util.List;
@Data
-public class PaperQuestionDTO {
+public class PaperQuestionSettingDTO {
//鏍囬(鍗曢�夐銆佸垽鏂)
private String title;
//棰樼洰绫诲埆
@@ -13,8 +14,6 @@
//闅忔満璇曞嵎棰樼洰鏁伴噺
private Integer num;
//闅忔満璇曞嵎棰樼洰鍒嗘暟
- private Integer score;
+ private BigDecimal score;
- //鍥哄畾璇曞嵎銆侀殢搴忚瘯鍗烽鐩泦鍚�
- private List<PaperQuestion> paperQuestion;
}
diff --git a/src/main/java/com/ycl/jxkg/domain/form/ExamPaperForm.java b/src/main/java/com/ycl/jxkg/domain/form/ExamPaperForm.java
index ef20d40..c6b8c37 100644
--- a/src/main/java/com/ycl/jxkg/domain/form/ExamPaperForm.java
+++ b/src/main/java/com/ycl/jxkg/domain/form/ExamPaperForm.java
@@ -4,7 +4,9 @@
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ycl.jxkg.domain.base.AbsForm;
import com.ycl.jxkg.domain.entity.ExamPaper;
-import com.ycl.jxkg.domain.exam.PaperQuestionDTO;
+import com.ycl.jxkg.domain.exam.PaperFixQuestionDTO;
+import com.ycl.jxkg.domain.exam.PaperQuestion;
+import com.ycl.jxkg.domain.exam.PaperQuestionSettingDTO;
import com.ycl.jxkg.group.Add;
import com.ycl.jxkg.group.Update;
import lombok.Data;
@@ -43,12 +45,12 @@
/**
* 璇曞嵎鎬诲垎
*/
- private BigDecimal score;
+ private String score;
/**
* 棰樼洰鏁伴噺
*/
- private Integer questionCount;
+ private Integer num;
/**
* 寤鸿鏃堕暱(鍒嗛挓)
@@ -79,7 +81,12 @@
/**
* 棰樼洰閰嶇疆
* */
- private List<PaperQuestionDTO> questionList;
+ private List<PaperQuestionSettingDTO> questionSetting;
+
+ /**
+ * 棰樼洰淇℃伅
+ * */
+ private List<PaperFixQuestionDTO> questionTitleList;
public static ExamPaper getEntityByForm(@NonNull ExamPaperForm form, ExamPaper entity) {
if(entity == null) {
diff --git a/src/main/java/com/ycl/jxkg/domain/question/RandomQuestionDTO.java b/src/main/java/com/ycl/jxkg/domain/question/RandomQuestionDTO.java
new file mode 100644
index 0000000..31afeee
--- /dev/null
+++ b/src/main/java/com/ycl/jxkg/domain/question/RandomQuestionDTO.java
@@ -0,0 +1,9 @@
+package com.ycl.jxkg.domain.question;
+
+import lombok.Data;
+
+@Data
+public class RandomQuestionDTO {
+ private Integer questionId;
+ private Integer questionType;
+}
diff --git a/src/main/java/com/ycl/jxkg/domain/vo/admin/exam/ExamPaperEditRequestVO.java b/src/main/java/com/ycl/jxkg/domain/vo/admin/exam/ExamPaperEditRequestVO.java
index 5fae77b..a169605 100644
--- a/src/main/java/com/ycl/jxkg/domain/vo/admin/exam/ExamPaperEditRequestVO.java
+++ b/src/main/java/com/ycl/jxkg/domain/vo/admin/exam/ExamPaperEditRequestVO.java
@@ -2,40 +2,37 @@
+import com.ycl.jxkg.domain.exam.PaperFixQuestionDTO;
+import com.ycl.jxkg.domain.exam.PaperQuestionSettingDTO;
import lombok.Data;
-import javax.validation.Valid;
-import javax.validation.constraints.NotBlank;
-import javax.validation.constraints.NotNull;
-import javax.validation.constraints.Size;
+import java.math.BigDecimal;
import java.util.List;
@Data
public class ExamPaperEditRequestVO {
private Integer id;
-
- @NotNull
- private Integer level;
-
- @NotNull
+ /** 绉戠洰 */
private Integer subjectId;
-
- @NotNull
+ /** 璇曞嵎绫诲瀷 */
private Integer paperType;
-
- @NotBlank
+ /** 璇曞嵎鍚� */
private String name;
-
- @NotNull
+ /** 寤鸿鏃堕棿 */
private Integer suggestTime;
+ private String visibility;
+ private Integer deductType;
+ private BigDecimal deductTypeScore;
+ private Integer num;
+ private BigDecimal score;
+ /**
+ * 棰樼洰閰嶇疆
+ * */
+ private List<PaperQuestionSettingDTO> questionSetting;
- private List<String> limitDateTime;
-
- @Size(min = 1,message = "璇锋坊鍔犺瘯鍗锋爣棰�")
- @Valid
- private List<ExamPaperTitleItemVO> titleItems;
-
- private String score;
-
+ /**
+ * 棰樼洰淇℃伅
+ * */
+ private List<PaperFixQuestionDTO> questionTitleList;
}
diff --git a/src/main/java/com/ycl/jxkg/domain/vo/admin/exam/ExamResponseVO.java b/src/main/java/com/ycl/jxkg/domain/vo/admin/exam/ExamResponseVO.java
index e088e72..9c1db49 100644
--- a/src/main/java/com/ycl/jxkg/domain/vo/admin/exam/ExamResponseVO.java
+++ b/src/main/java/com/ycl/jxkg/domain/vo/admin/exam/ExamResponseVO.java
@@ -1,11 +1,9 @@
package com.ycl.jxkg.domain.vo.admin.exam;
-import com.ycl.jxkg.domain.exam.PaperQuestionDTO;
import lombok.Data;
import java.math.BigDecimal;
-import java.util.List;
@Data
public class ExamResponseVO {
@@ -14,7 +12,7 @@
private String name;
- private Integer questionCount;
+ private Integer num;
private BigDecimal score;
@@ -33,6 +31,4 @@
private BigDecimal deductTypeScore;
private String visibility;
-
- private List<PaperQuestionDTO> questionList;
}
diff --git a/src/main/java/com/ycl/jxkg/mapper/ExamPaperMapper.java b/src/main/java/com/ycl/jxkg/mapper/ExamPaperMapper.java
index e804abf..cd247b7 100644
--- a/src/main/java/com/ycl/jxkg/mapper/ExamPaperMapper.java
+++ b/src/main/java/com/ycl/jxkg/mapper/ExamPaperMapper.java
@@ -3,6 +3,7 @@
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ycl.jxkg.domain.entity.ExamPaper;
import com.ycl.jxkg.domain.other.KeyValue;
+import com.ycl.jxkg.domain.question.RandomQuestionDTO;
import com.ycl.jxkg.domain.vo.admin.exam.ExamPaperPageRequestVO;
import com.ycl.jxkg.domain.vo.student.dashboard.PaperFilter;
import com.ycl.jxkg.domain.vo.student.dashboard.PaperInfo;
@@ -31,4 +32,6 @@
int updateTaskPaper(@Param("taskId") Integer taskId,@Param("paperIds") List<Integer> paperIds);
int clearTaskPaper(@Param("paperIds") List<Integer> paperIds);
+
+
}
diff --git a/src/main/java/com/ycl/jxkg/mapper/QuestionMapper.java b/src/main/java/com/ycl/jxkg/mapper/QuestionMapper.java
index a63c165..3042302 100644
--- a/src/main/java/com/ycl/jxkg/mapper/QuestionMapper.java
+++ b/src/main/java/com/ycl/jxkg/mapper/QuestionMapper.java
@@ -3,6 +3,7 @@
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ycl.jxkg.domain.other.KeyValue;
import com.ycl.jxkg.domain.entity.Question;
+import com.ycl.jxkg.domain.question.RandomQuestionDTO;
import com.ycl.jxkg.domain.vo.admin.question.QuestionPageRequestVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@@ -28,4 +29,6 @@
* @return
*/
List<Question> getAnswerInfo(@Param("questionIds") List<Integer> questionIds);
+
+ List<RandomQuestionDTO> selectBySubject(@Param("subjectId") Integer subjectId, @Param("types") List<Integer> types);
}
diff --git a/src/main/java/com/ycl/jxkg/service/ExamPaperService.java b/src/main/java/com/ycl/jxkg/service/ExamPaperService.java
index 5accef0..6e19f57 100644
--- a/src/main/java/com/ycl/jxkg/service/ExamPaperService.java
+++ b/src/main/java/com/ycl/jxkg/service/ExamPaperService.java
@@ -1,6 +1,7 @@
package com.ycl.jxkg.service;
import com.baomidou.mybatisplus.extension.service.IService;
+import com.ycl.jxkg.base.Result;
import com.ycl.jxkg.domain.entity.ExamPaper;
import com.ycl.jxkg.domain.entity.User;
import com.ycl.jxkg.domain.form.ExamPaperForm;
@@ -41,7 +42,7 @@
*/
List<ExamPaper> myExamPaper(Integer paperType);
- void addPaper(ExamPaperForm form);
+ Result addPaper(ExamPaperForm form);
- void updateExamPaper(ExamPaperForm form);
+ Result updateExamPaper(ExamPaperForm form);
}
diff --git a/src/main/java/com/ycl/jxkg/service/QuestionService.java b/src/main/java/com/ycl/jxkg/service/QuestionService.java
index 4dfcee0..0f1c650 100644
--- a/src/main/java/com/ycl/jxkg/service/QuestionService.java
+++ b/src/main/java/com/ycl/jxkg/service/QuestionService.java
@@ -31,4 +31,6 @@
* @return 鏇存柊缁撴灉
*/
Boolean updateStatus(QuestionResponseVO question);
+
+
}
diff --git a/src/main/java/com/ycl/jxkg/service/impl/ExamPaperServiceImpl.java b/src/main/java/com/ycl/jxkg/service/impl/ExamPaperServiceImpl.java
index b74394d..28d4b66 100644
--- a/src/main/java/com/ycl/jxkg/service/impl/ExamPaperServiceImpl.java
+++ b/src/main/java/com/ycl/jxkg/service/impl/ExamPaperServiceImpl.java
@@ -2,15 +2,23 @@
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson2.JSONArray;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ycl.jxkg.base.Result;
+import com.ycl.jxkg.base.SystemCode;
import com.ycl.jxkg.context.WebContext;
+import com.ycl.jxkg.domain.entity.Question;
+import com.ycl.jxkg.domain.exam.PaperFixQuestionDTO;
import com.ycl.jxkg.domain.exam.PaperQuestion;
-import com.ycl.jxkg.domain.exam.PaperQuestionDTO;
+import com.ycl.jxkg.domain.exam.PaperQuestionSettingDTO;
import com.ycl.jxkg.domain.form.ExamPaperForm;
+import com.ycl.jxkg.domain.question.QuestionItemObject;
+import com.ycl.jxkg.domain.question.RandomQuestionDTO;
import com.ycl.jxkg.domain.vo.admin.exam.ExamResponseVO;
import com.ycl.jxkg.enums.ExamPaperTypeEnum;
import com.ycl.jxkg.domain.other.KeyValue;
+import com.ycl.jxkg.enums.QuestionTypeEnum;
import com.ycl.jxkg.enums.VisibilityEnum;
import com.ycl.jxkg.mapper.ExamPaperMapper;
import com.ycl.jxkg.mapper.QuestionMapper;
@@ -31,12 +39,15 @@
import com.ycl.jxkg.utils.PageInfoHelper;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.BeanUtils;
+import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.CollectionUtils;
-import java.util.Date;
-import java.util.List;
-import java.util.Objects;
+import java.math.BigDecimal;
+import java.util.*;
+import java.util.function.BiConsumer;
+import java.util.function.Consumer;
import java.util.stream.Collectors;
@Service
@@ -53,21 +64,125 @@
@Override
@Transactional(rollbackFor = Exception.class)
- public void addPaper(ExamPaperForm form) {
- ExamPaper examPaper = ExamPaperForm.getEntityByForm(form,null);
- examPaper.setContent(JSON.toJSONString(form.getQuestionList()));
- baseMapper.insert(examPaper);
- //TODO:闅忓簭璇曞嵎鐢熸垚棰樼洰
-// if(ExamPaperTypeEnum.RandomOrder.getCode().equals(form.getPaperType())){
-// List<PaperQuestionDTO> questionList = form.getQuestionList();
-// List<PaperQuestion> list = questionMapper.selectQuestion();
-// }
+ public Result addPaper(ExamPaperForm form) {
+ ExamPaper examPaper = ExamPaperForm.getEntityByForm(form, null);
+ examPaper.setScore(new BigDecimal(form.getScore()));
+ //闅忔満璇曞嵎
+ if (ExamPaperTypeEnum.Random.getCode().equals(form.getPaperType())) {
+ examPaper.setContent(JSON.toJSONString(form.getQuestionSetting()));
+ baseMapper.insert(examPaper);
+ return Result.ok();
+ } else if (ExamPaperTypeEnum.Fixed.getCode().equals(form.getPaperType())) {
+ //鍥哄畾璇曞嵎
+ examPaper.setContent(JSON.toJSONString(form.getQuestionTitleList()));
+ baseMapper.insert(examPaper);
+ return Result.ok();
+ } else {
+ //闅忓簭璇曞嵎
+ Integer subjectId = form.getSubjectId();
+ //棰樼洰閰嶇疆
+ List<PaperQuestionSettingDTO> questionSetting = form.getQuestionSetting();
+ //棰樼洰閰嶇疆閲岄厤鐨勮瘯鍗风被鍨�
+ List<Integer> types = questionSetting.stream().map(PaperQuestionSettingDTO::getQuestionType).collect(Collectors.toList());
+ if (CollectionUtils.isEmpty(types)) {
+ return Result.fail(SystemCode.InnerError.getCode(), "璇曞嵎棰樼洰绫诲瀷涓嶈兘涓虹┖");
+ }
+ Map<Integer, List<Integer>> map = questionMapper.selectBySubject(subjectId, types)
+ .stream().collect(Collectors.groupingBy(RandomQuestionDTO::getQuestionType, Collectors.mapping(RandomQuestionDTO::getQuestionId, Collectors.toList())));
+ List<PaperFixQuestionDTO> questionTitleList = new ArrayList<>();
+ // 閬嶅巻map
+ for (Integer questionType : map.keySet()) {
+ //鏁版嵁搴撻噷鐨勮繖涓被鍨嬬殑棰樼洰
+ List<Integer> questionIdList = map.get(questionType);
+ Result InnerError1 = createQuestion(questionSetting, questionTitleList, questionType, questionIdList,QuestionTypeEnum.SingleChoice.getCode());
+ if (InnerError1 != null) return InnerError1;
+ Result InnerError2 = createQuestion(questionSetting, questionTitleList, questionType, questionIdList,QuestionTypeEnum.MultipleChoice.getCode());
+ if (InnerError2 != null) return InnerError2;
+ Result InnerError3 = createQuestion(questionSetting, questionTitleList, questionType, questionIdList,QuestionTypeEnum.TrueFalse.getCode());
+ if (InnerError3 != null) return InnerError3;
+ Result InnerError4 = createQuestion(questionSetting, questionTitleList, questionType, questionIdList,QuestionTypeEnum.GapFilling.getCode());
+ if (InnerError4 != null) return InnerError4;
+ Result InnerError5 = createQuestion(questionSetting, questionTitleList, questionType, questionIdList,QuestionTypeEnum.ShortAnswer.getCode());
+ if (InnerError5 != null) return InnerError5;
+ Result InnerError6 = createQuestion(questionSetting, questionTitleList, questionType, questionIdList,QuestionTypeEnum.Calculation.getCode());
+ if (InnerError6 != null) return InnerError6;
+ }
+ examPaper.setContent(JSON.toJSONString(form.getQuestionTitleList()));
+ baseMapper.insert(examPaper);
+ return Result.ok();
+ }
+ }
+ //鐢熸垚棰樼洰
+ private Result createQuestion(List<PaperQuestionSettingDTO> questionSetting, List<PaperFixQuestionDTO> questionTitleList, Integer questionType, List<Integer> questionIdList , Integer questionEnumCode) {
+ if (questionType.equals(questionEnumCode)) {
+ //寰幆鎵惧埌瀵瑰簲棰樼洰
+ PaperQuestionSettingDTO settingDTO = new PaperQuestionSettingDTO();
+ for (PaperQuestionSettingDTO dto : questionSetting) {
+ if (dto.getQuestionType().equals(questionType)) {
+ settingDTO = dto;
+ }
+ }
+ // 闇�瑕佺敓鎴愮殑棰樼洰鏁伴噺
+ Integer num = settingDTO.getNum();
+ if(num ==0){
+ //棰樼洰閰嶇疆姝ょ被鍨嬫暟閲忎负0锛岃烦杩囷紝涓嶇敓鎴愰鐩��
+ return null;
+ }
+ if (CollectionUtils.isEmpty(questionIdList) || num > questionIdList.size()) {
+ return Result.fail(SystemCode.InnerError.getCode(), "棰樼洰鏁伴噺涓嶈冻");
+ }
+ // 浣跨敤Random绫荤敓鎴愪笉閲嶅鐨勯殢鏈虹储寮�
+ Set<Integer> indexes = new HashSet<>();
+ Random random = new Random();
+ while (indexes.size() < num) {
+ int index = random.nextInt(questionIdList.size());
+ indexes.add(index);
+ }
+ // 鏍规嵁绱㈠紩鑾峰彇棰樼洰
+ List<Integer> questionIds = new ArrayList<>();
+ for (int index : indexes) {
+ questionIds.add(questionIdList.get(index));
+ }
+ QueryWrapper<Question> wrapper = new QueryWrapper<>();
+ wrapper.in("id",questionIds);
+ List<Question> questions = questionMapper.selectList(wrapper);
+ List<PaperQuestion> questionList = new ArrayList<>();
+ for (Question question : questions) {
+ PaperQuestion paperQuestion = new PaperQuestion();
+ BeanUtils.copyProperties(question,paperQuestion);
+ paperQuestion.setScore(settingDTO.getScore());
+ paperQuestion.setItems(JSONArray.parseArray(question.getContent(), QuestionItemObject.class));
+ questionList.add(paperQuestion);
+ }
+ PaperFixQuestionDTO dto = new PaperFixQuestionDTO();
+ dto.setTitle(settingDTO.getTitle());
+ dto.setQuestionType(questionType);
+ dto.setQuestionList(questionList);
+ questionTitleList.add(dto);
+ }
+ return null;
}
@Override
- public void updateExamPaper(ExamPaperForm form) {
- ExamPaper entity = ExamPaperForm.getEntityByForm(form,null);
- baseMapper.updateById(entity);
+ public Result updateExamPaper(ExamPaperForm form) {
+ ExamPaper examPaper = ExamPaperForm.getEntityByForm(form, null);
+ examPaper.setScore(new BigDecimal(form.getScore()));
+ //闅忔満璇曞嵎
+ if (ExamPaperTypeEnum.Random.getCode().equals(form.getPaperType())) {
+ examPaper.setContent(JSON.toJSONString(form.getQuestionSetting()));
+ baseMapper.updateById(examPaper);
+ return Result.ok();
+ } else if (ExamPaperTypeEnum.Fixed.getCode().equals(form.getPaperType())) {
+ //鍥哄畾璇曞嵎
+ examPaper.setContent(JSON.toJSONString(form.getQuestionTitleList()));
+ baseMapper.updateById(examPaper);
+ return Result.ok();
+ } else {
+ //闅忓簭璇曞嵎
+ examPaper.setContent(JSON.toJSONString(form.getQuestionTitleList()));
+ baseMapper.updateById(examPaper);
+ return Result.ok();
+ }
}
@Override
@@ -79,7 +194,6 @@
BeanUtils.copyProperties(e, vo);
vo.setVisibility(VisibilityEnum.valueOf(vo.getVisibility()).getCode() + "");
vo.setCreateTime(DateTimeUtil.dateFormat(e.getCreateTime()));
- vo.setQuestionList(JSONArray.parseArray(e.getContent(),PaperQuestionDTO.class));
return vo;
});
return pageVO;
@@ -136,32 +250,16 @@
ExamPaper examPaper = examPaperMapper.selectById(id);
ExamPaperEditRequestVO vo = new ExamPaperEditRequestVO();
BeanUtils.copyProperties(examPaper, vo);
- //TODO:
-// TextContent frameTextContent = textContentService.getById(examPaper.getFrameTextContentId());
-// List<ExamPaperTitleItemObject> examPaperTitleItemObjects = JsonUtil.toJsonListObject(frameTextContent.getContent(), ExamPaperTitleItemObject.class);
-// List<Integer> questionIds = examPaperTitleItemObjects.stream()
-// .flatMap(t -> t.getQuestionItems().stream()
-// .map(q -> q.getId()))
-// .collect(Collectors.toList());
-// List<Question> questions = questionMapper.selectByIds(questionIds);
-// List<ExamPaperTitleItemVO> examPaperTitleItemVOS = examPaperTitleItemObjects.stream().map(t -> {
-// ExamPaperTitleItemVO tTitleVM = new ExamPaperTitleItemVO();
-// BeanUtils.copyProperties(t, tTitleVM);
-// List<QuestionEditRequestVO> questionItemsVM = t.getQuestionItems().stream().map(i -> {
-// Question question = questions.stream().filter(q -> q.getId().equals(i.getId())).findFirst().get();
-// QuestionEditRequestVO questionEditRequestVO = questionService.getQuestionEditRequestVM(question);
-// questionEditRequestVO.setItemOrder(i.getItemOrder());
-// return questionEditRequestVO;
-// }).collect(Collectors.toList());
-// tTitleVM.setQuestionItems(questionItemsVM);
-// return tTitleVM;
-// }).collect(Collectors.toList());
-// vo.setTitleItems(examPaperTitleItemVOS);
-// vo.setScore(ExamUtil.scoreToVM(examPaper.getScore()));
-// if (ExamPaperTypeEnum.Random == ExamPaperTypeEnum.fromCode(examPaper.getPaperType())) {
-// List<String> limitDateTime = Arrays.asList(DateTimeUtil.dateFormat(examPaper.getLimitStartTime()), DateTimeUtil.dateFormat(examPaper.getLimitEndTime()));
-// vo.setLimitDateTime(limitDateTime);
-// }
+ vo.setVisibility(VisibilityEnum.valueOf(vo.getVisibility()).getCode());
+ //闅忔満璇曞嵎
+ if (ExamPaperTypeEnum.Random.getCode().equals(examPaper.getPaperType())) {
+ vo.setQuestionSetting(JSONArray.parseArray(examPaper.getContent(), PaperQuestionSettingDTO.class));
+ } else if (ExamPaperTypeEnum.Fixed.getCode().equals(examPaper.getPaperType())) {
+ //鍥哄畾璇曞嵎
+ vo.setQuestionTitleList(JSONArray.parseArray(examPaper.getContent(), PaperFixQuestionDTO.class));
+ } else {
+ //闅忓簭璇曞嵎
+ }
return vo;
}
@@ -187,7 +285,6 @@
return null == keyValue ? 0 : keyValue.getValue();
}).collect(Collectors.toList());
}
-
private void examPaperFromVM(ExamPaperEditRequestVO examPaperEditRequestVO, ExamPaper examPaper, List<ExamPaperTitleItemVO> titleItemsVM) {
diff --git a/src/main/resources/mapper/ExamPaperMapper.xml b/src/main/resources/mapper/ExamPaperMapper.xml
index 48e1927..165bcf3 100644
--- a/src/main/resources/mapper/ExamPaperMapper.xml
+++ b/src/main/resources/mapper/ExamPaperMapper.xml
@@ -16,7 +16,6 @@
<result column="create_user" property="createUser"/>
<result column="create_time" property="createTime"/>
<result column="deleted" property="deleted"/>
-
</resultMap>
<sql id="Base_Column_List">
@@ -33,7 +32,7 @@
<select id="page" resultMap="BaseResultMap">
SELECT
- tep.*,
+ tep.*
FROM t_exam_paper tep
<where>
and tep.deleted=0
diff --git a/src/main/resources/mapper/QuestionMapper.xml b/src/main/resources/mapper/QuestionMapper.xml
index d2c122b..fd64749 100644
--- a/src/main/resources/mapper/QuestionMapper.xml
+++ b/src/main/resources/mapper/QuestionMapper.xml
@@ -90,14 +90,18 @@
<foreach collection="questionIds" open="(" item="id" close=")" separator=",">#{id}</foreach>
</select>
- <select id="getQuestionRandom">
+ <select id="selectBySubject" resultType="com.ycl.jxkg.domain.question.RandomQuestionDTO">
SELECT
- *
+ id as questionId,question_type
FROM
t_question
WHERE
- id >= ( SELECT floor( RAND() * ( SELECT MAX( id ) FROM t_question ) ) )
- LIMIT #{num};
+ subject_id = #{subjectId}
+ and question_type in
+ <foreach collection="types" item="type" separator="," open="(" close=")">
+ #{type}
+ </foreach>
+ and deleted = 0 and status = 1
</select>
</mapper>
--
Gitblit v1.8.0