| | |
| | | package com.ycl.jxkg.service.impl; |
| | | |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.ycl.jxkg.domain.*; |
| | | import com.ycl.jxkg.domain.enums.ExamPaperAnswerStatusEnum; |
| | | import com.ycl.jxkg.domain.enums.ExamPaperTypeEnum; |
| | |
| | | import com.ycl.jxkg.vo.student.exampaper.ExamPaperAnswerPageVO; |
| | | import com.github.pagehelper.PageHelper; |
| | | import com.github.pagehelper.PageInfo; |
| | | import lombok.RequiredArgsConstructor; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | |
| | | import java.util.stream.Collectors; |
| | | |
| | | @Service |
| | | public class ExamPaperAnswerServiceImpl extends BaseServiceImpl<ExamPaperAnswer> implements ExamPaperAnswerService { |
| | | @RequiredArgsConstructor |
| | | public class ExamPaperAnswerServiceImpl extends ServiceImpl<ExamPaperAnswerMapper ,ExamPaperAnswer> implements ExamPaperAnswerService { |
| | | |
| | | private final ExamPaperAnswerMapper examPaperAnswerMapper; |
| | | private final ExamPaperMapper examPaperMapper; |
| | |
| | | private final ExamPaperQuestionCustomerAnswerService examPaperQuestionCustomerAnswerService; |
| | | private final TaskExamCustomerAnswerMapper taskExamCustomerAnswerMapper; |
| | | |
| | | @Autowired |
| | | public ExamPaperAnswerServiceImpl(ExamPaperAnswerMapper examPaperAnswerMapper, ExamPaperMapper examPaperMapper, TextContentService textContentService, QuestionMapper questionMapper, ExamPaperQuestionCustomerAnswerService examPaperQuestionCustomerAnswerService, TaskExamCustomerAnswerMapper taskExamCustomerAnswerMapper) { |
| | | super(examPaperAnswerMapper); |
| | | this.examPaperAnswerMapper = examPaperAnswerMapper; |
| | | this.examPaperMapper = examPaperMapper; |
| | | this.textContentService = textContentService; |
| | | this.questionMapper = questionMapper; |
| | | this.examPaperQuestionCustomerAnswerService = examPaperQuestionCustomerAnswerService; |
| | | this.taskExamCustomerAnswerMapper = taskExamCustomerAnswerMapper; |
| | | } |
| | | |
| | | @Override |
| | | public PageInfo<ExamPaperAnswer> studentPage(ExamPaperAnswerPageVO requestVM) { |
| | |
| | | public ExamPaperAnswerInfo calculateExamPaperAnswer(ExamPaperSubmitVO examPaperSubmitVO, User user) { |
| | | ExamPaperAnswerInfo examPaperAnswerInfo = new ExamPaperAnswerInfo(); |
| | | Date now = new Date(); |
| | | ExamPaper examPaper = examPaperMapper.selectByPrimaryKey(examPaperSubmitVO.getId()); |
| | | ExamPaper examPaper = examPaperMapper.selectById(examPaperSubmitVO.getId()); |
| | | ExamPaperTypeEnum paperTypeEnum = ExamPaperTypeEnum.fromCode(examPaper.getPaperType()); |
| | | //任务试卷只能做一次 |
| | | if (paperTypeEnum == ExamPaperTypeEnum.Task) { |
| | |
| | | if (null != examPaperAnswer) |
| | | return null; |
| | | } |
| | | String frameTextContent = textContentService.selectById(examPaper.getFrameTextContentId()).getContent(); |
| | | String frameTextContent = textContentService.getById(examPaper.getFrameTextContentId()).getContent(); |
| | | List<ExamPaperTitleItemObject> examPaperTitleItemObjects = JsonUtil.toJsonListObject(frameTextContent, 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); |
| | |
| | | @Override |
| | | @Transactional |
| | | public String judge(ExamPaperSubmitVO examPaperSubmitVO) { |
| | | ExamPaperAnswer examPaperAnswer = examPaperAnswerMapper.selectByPrimaryKey(examPaperSubmitVO.getId()); |
| | | ExamPaperAnswer examPaperAnswer = examPaperAnswerMapper.selectById(examPaperSubmitVO.getId()); |
| | | List<ExamPaperSubmitItemVO> judgeItems = examPaperSubmitVO.getAnswerItems().stream().filter(d -> d.getDoRight() == null).collect(Collectors.toList()); |
| | | List<ExamPaperAnswerUpdate> examPaperAnswerUpdates = new ArrayList<>(judgeItems.size()); |
| | | Integer customerScore = examPaperAnswer.getUserScore(); |
| | |
| | | examPaperAnswer.setUserScore(customerScore); |
| | | examPaperAnswer.setQuestionCorrect(questionCorrect); |
| | | examPaperAnswer.setStatus(ExamPaperAnswerStatusEnum.Complete.getCode()); |
| | | examPaperAnswerMapper.updateByPrimaryKeySelective(examPaperAnswer); |
| | | examPaperAnswerMapper.updateById(examPaperAnswer); |
| | | examPaperQuestionCustomerAnswerService.updateScore(examPaperAnswerUpdates); |
| | | |
| | | ExamPaperTypeEnum examPaperTypeEnum = ExamPaperTypeEnum.fromCode(examPaperAnswer.getPaperType()); |
| | | switch (examPaperTypeEnum) { |
| | | case Task: |
| | | //任务试卷批改完成后,需要更新任务的状态 |
| | | ExamPaper examPaper = examPaperMapper.selectByPrimaryKey(examPaperAnswer.getExamPaperId()); |
| | | ExamPaper examPaper = examPaperMapper.selectById(examPaperAnswer.getExamPaperId()); |
| | | Integer taskId = examPaper.getTaskExamId(); |
| | | Integer userId = examPaperAnswer.getCreateUser(); |
| | | TaskExamCustomerAnswer taskExamCustomerAnswer = taskExamCustomerAnswerMapper.getByTUid(taskId, userId); |
| | | TextContent textContent = textContentService.selectById(taskExamCustomerAnswer.getTextContentId()); |
| | | TextContent textContent = textContentService.getById(taskExamCustomerAnswer.getTextContentId()); |
| | | List<TaskItemAnswerObject> taskItemAnswerObjects = JsonUtil.toJsonListObject(textContent.getContent(), TaskItemAnswerObject.class); |
| | | taskItemAnswerObjects.stream() |
| | | .filter(d -> d.getExamPaperAnswerId().equals(examPaperAnswer.getId())) |
| | | .findFirst().ifPresent(taskItemAnswerObject -> taskItemAnswerObject.setStatus(examPaperAnswer.getStatus())); |
| | | textContentService.jsonConvertUpdate(textContent, taskItemAnswerObjects, null); |
| | | textContentService.updateByIdFilter(textContent); |
| | | textContentService.updateById(textContent); |
| | | break; |
| | | default: |
| | | break; |
| | |
| | | @Override |
| | | public ExamPaperSubmitVO examPaperAnswerToVM(Integer id) { |
| | | ExamPaperSubmitVO examPaperSubmitVO = new ExamPaperSubmitVO(); |
| | | ExamPaperAnswer examPaperAnswer = examPaperAnswerMapper.selectByPrimaryKey(id); |
| | | ExamPaperAnswer examPaperAnswer = examPaperAnswerMapper.selectById(id); |
| | | examPaperSubmitVO.setId(examPaperAnswer.getId()); |
| | | examPaperSubmitVO.setDoTime(examPaperAnswer.getDoTime()); |
| | | examPaperSubmitVO.setScore(ExamUtil.scoreToVM(examPaperAnswer.getUserScore())); |