|
|
@@ -2,22 +2,29 @@ package vip.xiaonuo.exam.service.impl;
|
|
|
|
|
|
import cn.hutool.core.collection.ListUtil;
|
|
|
import cn.hutool.core.io.FileUtil;
|
|
|
+import cn.hutool.core.util.NumberUtil;
|
|
|
+import cn.hutool.core.util.ObjectUtil;
|
|
|
import com.alibaba.excel.EasyExcel;
|
|
|
-import com.alibaba.excel.EasyExcelFactory;
|
|
|
-import com.alibaba.excel.support.ExcelTypeEnum;
|
|
|
import com.alibaba.fastjson.JSONArray;
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
-import org.springframework.transaction.interceptor.TransactionAspectSupport;
|
|
|
+import org.modelmapper.ModelMapper;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
import org.springframework.web.multipart.MultipartFile;
|
|
|
import vip.xiaonuo.auth.core.pojo.SaBaseLoginUser;
|
|
|
import vip.xiaonuo.dev.api.DevDictApi;
|
|
|
+import vip.xiaonuo.disk.domain.Major;
|
|
|
+import vip.xiaonuo.disk.domain.Semester;
|
|
|
+import vip.xiaonuo.disk.mapper.MajorMapper;
|
|
|
+import vip.xiaonuo.disk.mapper.SemesterMapper;
|
|
|
import vip.xiaonuo.exam.domain.ExamPaper;
|
|
|
-import vip.xiaonuo.exam.domain.other.KeyValue;
|
|
|
import vip.xiaonuo.exam.domain.Question;
|
|
|
import vip.xiaonuo.exam.domain.TextContent;
|
|
|
import vip.xiaonuo.exam.domain.enums.QuestionStatusEnum;
|
|
|
import vip.xiaonuo.exam.domain.enums.QuestionTypeEnum;
|
|
|
+import vip.xiaonuo.exam.domain.other.KeyValue;
|
|
|
import vip.xiaonuo.exam.domain.question.QuestionExcel;
|
|
|
import vip.xiaonuo.exam.domain.question.QuestionItemObject;
|
|
|
import vip.xiaonuo.exam.domain.question.QuestionObject;
|
|
|
@@ -25,27 +32,21 @@ import vip.xiaonuo.exam.mapper.QuestionMapper;
|
|
|
import vip.xiaonuo.exam.service.QuestionService;
|
|
|
import vip.xiaonuo.exam.service.SubjectService;
|
|
|
import vip.xiaonuo.exam.service.TextContentService;
|
|
|
-import vip.xiaonuo.exam.utility.*;
|
|
|
+import vip.xiaonuo.exam.utility.DateTimeUtil;
|
|
|
+import vip.xiaonuo.exam.utility.ExamUtil;
|
|
|
+import vip.xiaonuo.exam.utility.JsonUtil;
|
|
|
+import vip.xiaonuo.exam.utility.ModelMapperSingle;
|
|
|
import vip.xiaonuo.exam.viewmodel.admin.question.QuestionEditItemVM;
|
|
|
import vip.xiaonuo.exam.viewmodel.admin.question.QuestionEditRequestVM;
|
|
|
import vip.xiaonuo.exam.viewmodel.admin.question.QuestionPageRequestVM;
|
|
|
-import com.github.pagehelper.PageHelper;
|
|
|
-import com.github.pagehelper.PageInfo;
|
|
|
-import org.modelmapper.ModelMapper;
|
|
|
-import org.springframework.beans.factory.annotation.Autowired;
|
|
|
-import org.springframework.stereotype.Service;
|
|
|
-import org.springframework.transaction.annotation.Transactional;
|
|
|
+import vip.xiaonuo.exam.vo.QuestionVo;
|
|
|
|
|
|
+import javax.annotation.Resource;
|
|
|
import java.io.File;
|
|
|
-import java.io.InputStream;
|
|
|
-import java.nio.charset.StandardCharsets;
|
|
|
import java.util.*;
|
|
|
import java.util.regex.Matcher;
|
|
|
import java.util.regex.Pattern;
|
|
|
import java.util.stream.Collectors;
|
|
|
-import cn.hutool.core.util.NumberUtil;
|
|
|
-
|
|
|
-import javax.annotation.Resource;
|
|
|
|
|
|
import static cn.hutool.core.date.DateTime.now;
|
|
|
|
|
|
@@ -60,6 +61,13 @@ public class QuestionServiceImpl extends BaseServiceImpl<Question> implements Qu
|
|
|
@Resource
|
|
|
private DevDictApi devDictApi;
|
|
|
|
|
|
+ @Resource
|
|
|
+ private MajorMapper majorMapper;
|
|
|
+ @Resource
|
|
|
+ private SemesterMapper semesterMapper;
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
@Autowired
|
|
|
public QuestionServiceImpl(QuestionMapper questionMapper, TextContentService textContentService, SubjectService subjectService) {
|
|
|
super(questionMapper);
|
|
|
@@ -69,7 +77,7 @@ public class QuestionServiceImpl extends BaseServiceImpl<Question> implements Qu
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public Page<Question> page(QuestionPageRequestVM requestVM) {
|
|
|
+ public Page<QuestionVo> page(QuestionPageRequestVM requestVM) {
|
|
|
Page<ExamPaper> page = new Page<ExamPaper>(requestVM.getCurrent(), requestVM.getSize());
|
|
|
page.setSearchCount(true); // 设置计算总记录数
|
|
|
return questionMapper.page(requestVM,page);
|
|
|
@@ -80,12 +88,6 @@ public class QuestionServiceImpl extends BaseServiceImpl<Question> implements Qu
|
|
|
@Transactional
|
|
|
public Question insertFullQuestion(QuestionEditRequestVM model, String userId) {
|
|
|
Date now = new Date();
|
|
|
- Integer gradeLevel = null;
|
|
|
- if(model.getSubjectId() != null){
|
|
|
- gradeLevel = subjectService.levelBySubjectId(model.getSubjectId());
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
//题干、解析、选项等 插入
|
|
|
TextContent infoTextContent = new TextContent();
|
|
|
infoTextContent.setCreateTime(now);
|
|
|
@@ -93,19 +95,13 @@ public class QuestionServiceImpl extends BaseServiceImpl<Question> implements Qu
|
|
|
textContentService.insertByFilter(infoTextContent);
|
|
|
|
|
|
Question question = new Question();
|
|
|
- if(model.getSubjectId() != null){
|
|
|
- question.setSubjectId(model.getSubjectId());
|
|
|
- }
|
|
|
- if(gradeLevel != null){
|
|
|
- question.setGradeLevel(gradeLevel);
|
|
|
- }
|
|
|
question.setCreateTime(now);
|
|
|
question.setQuestionType(model.getQuestionType());
|
|
|
question.setStatus(QuestionStatusEnum.OK.getCode());
|
|
|
question.setCorrectFromVM(model.getCorrect(), model.getCorrectArray());
|
|
|
int score = 0;
|
|
|
if(model.getScore() != null && !model.getScore().isEmpty()){
|
|
|
- score = ExamUtil.scoreFromVM(model.getScore());
|
|
|
+ score = Integer.valueOf(model.getScore());
|
|
|
}
|
|
|
question.setScore(score);
|
|
|
question.setDifficult(model.getDifficult() ==null?0:model.getDifficult());
|
|
|
@@ -113,6 +109,9 @@ public class QuestionServiceImpl extends BaseServiceImpl<Question> implements Qu
|
|
|
question.setBankType(model.getBankType());
|
|
|
question.setCreateUser(userId);
|
|
|
question.setDeleted(false);
|
|
|
+ question.setMajorId(model.getMajorId());
|
|
|
+ question.setCourseId(model.getCourseId());
|
|
|
+ question.setSemesterId(model.getSemesterId());
|
|
|
questionMapper.insertSelective(question);
|
|
|
return question;
|
|
|
}
|
|
|
@@ -120,19 +119,17 @@ public class QuestionServiceImpl extends BaseServiceImpl<Question> implements Qu
|
|
|
@Override
|
|
|
@Transactional
|
|
|
public Question updateFullQuestion(QuestionEditRequestVM model) {
|
|
|
- Question question = questionMapper.selectByPrimaryKey(model.getId());
|
|
|
- Integer gradeLevel = null;
|
|
|
- if(model.getSubjectId() != null){
|
|
|
- gradeLevel = subjectService.levelBySubjectId(model.getSubjectId());
|
|
|
- question.setGradeLevel(gradeLevel);
|
|
|
- question.setSubjectId(model.getSubjectId());
|
|
|
- }
|
|
|
- question.setScore(ExamUtil.scoreFromVM(model.getScore()));
|
|
|
+ Question question = questionMapper.detail(model.getId());
|
|
|
+
|
|
|
+ question.setScore(Integer.valueOf(model.getScore()));
|
|
|
question.setDifficult(model.getDifficult());
|
|
|
question.setCorrectFromVM(model.getCorrect(), model.getCorrectArray());
|
|
|
if(model.getBankType() != null){
|
|
|
question.setBankType(model.getBankType());
|
|
|
}
|
|
|
+ question.setMajorId(model.getMajorId());
|
|
|
+ question.setCourseId(model.getCourseId());
|
|
|
+ question.setSemesterId(model.getSemesterId());
|
|
|
questionMapper.updateByPrimaryKeySelective(question);
|
|
|
|
|
|
//题干、解析、选项等 更新
|
|
|
@@ -146,7 +143,7 @@ public class QuestionServiceImpl extends BaseServiceImpl<Question> implements Qu
|
|
|
@Override
|
|
|
public QuestionEditRequestVM getQuestionEditRequestVM(Integer questionId) {
|
|
|
//题目映射
|
|
|
- Question question = questionMapper.selectByPrimaryKey(questionId);
|
|
|
+ Question question = questionMapper.detail(questionId);
|
|
|
return getQuestionEditRequestVM(question);
|
|
|
}
|
|
|
|
|
|
@@ -191,6 +188,15 @@ public class QuestionServiceImpl extends BaseServiceImpl<Question> implements Qu
|
|
|
return questionEditItemVM;
|
|
|
}).collect(Collectors.toList());
|
|
|
questionEditRequestVM.setItems(editItems);
|
|
|
+ if(ObjectUtil.isNotEmpty(question.getMajorId())){
|
|
|
+ Major major = majorMapper.selectById(question.getMajorId());
|
|
|
+ questionEditRequestVM.setMajorName(major.getMajorName());
|
|
|
+ }
|
|
|
+ if(ObjectUtil.isNotEmpty(question.getSemesterId())){
|
|
|
+ Semester semester = semesterMapper.selectById(question.getSemesterId());
|
|
|
+ questionEditRequestVM.setSemesterName(semester.getName());
|
|
|
+ }
|
|
|
+
|
|
|
return questionEditRequestVM;
|
|
|
}
|
|
|
|