package com.ycl.jxkg.service.impl;
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.ycl.jxkg.domain.entity.ExamPaperScoreDetail;
|
import com.ycl.jxkg.domain.other.ExamPaperAnswerUpdate;
|
import com.ycl.jxkg.domain.other.KeyValue;
|
import com.ycl.jxkg.domain.entity.TextContent;
|
import com.ycl.jxkg.enums.QuestionTypeEnum;
|
import com.ycl.jxkg.mapper.ExamPaperScoreDetailMapper;
|
import com.ycl.jxkg.service.ExamPaperScoreDetailService;
|
import com.ycl.jxkg.service.TextContentService;
|
import com.ycl.jxkg.utils.DateTimeUtil;
|
import com.ycl.jxkg.utils.ExamUtil;
|
import com.ycl.jxkg.utils.JsonUtil;
|
import com.ycl.jxkg.domain.vo.student.exam.ExamPaperSubmitItemVO;
|
import com.ycl.jxkg.domain.vo.student.question.answer.QuestionPageStudentRequestVO;
|
import com.github.pagehelper.PageHelper;
|
import com.github.pagehelper.PageInfo;
|
import lombok.RequiredArgsConstructor;
|
import org.springframework.stereotype.Service;
|
|
import java.util.Date;
|
import java.util.List;
|
import java.util.stream.Collectors;
|
|
@Service
|
@RequiredArgsConstructor
|
public class ExamPaperScoreDetailServiceImpl extends ServiceImpl<ExamPaperScoreDetailMapper, ExamPaperScoreDetail> implements ExamPaperScoreDetailService {
|
|
private final ExamPaperScoreDetailMapper examPaperScoreDetailMapper;
|
private final TextContentService textContentService;
|
|
|
@Override
|
public PageInfo<ExamPaperScoreDetail> studentPage(QuestionPageStudentRequestVO requestVM) {
|
return PageHelper.startPage(requestVM.getPageIndex(), requestVM.getPageSize(), "id desc").doSelectPageInfo(() ->
|
examPaperScoreDetailMapper.studentPage(requestVM)
|
);
|
}
|
|
@Override
|
public List<ExamPaperScoreDetail> selectListByPaperAnswerId(Integer id) {
|
return examPaperScoreDetailMapper.selectListByPaperAnswerId(id);
|
}
|
|
|
@Override
|
public void insertList(List<ExamPaperScoreDetail> examPaperScoreDetails) {
|
examPaperScoreDetailMapper.insertList(examPaperScoreDetails);
|
}
|
|
@Override
|
public ExamPaperSubmitItemVO examPaperQuestionCustomerAnswerToVM(ExamPaperScoreDetail qa) {
|
ExamPaperSubmitItemVO examPaperSubmitItemVO = new ExamPaperSubmitItemVO();
|
examPaperSubmitItemVO.setId(qa.getId());
|
examPaperSubmitItemVO.setQuestionId(qa.getQuestionId());
|
examPaperSubmitItemVO.setDoRight(qa.getDoRight());
|
examPaperSubmitItemVO.setItemOrder(qa.getItemOrder());
|
examPaperSubmitItemVO.setQuestionScore(ExamUtil.scoreToVM(qa.getQuestionScore()));
|
examPaperSubmitItemVO.setScore(ExamUtil.scoreToVM(qa.getCustomerScore()));
|
setSpecialToVM(examPaperSubmitItemVO, qa);
|
return examPaperSubmitItemVO;
|
}
|
|
@Override
|
public Integer selectAllCount() {
|
return examPaperScoreDetailMapper.selectAllCount();
|
}
|
|
@Override
|
public List<Integer> selectMothCount() {
|
Date startTime = DateTimeUtil.getMonthStartDay();
|
Date endTime = DateTimeUtil.getMonthEndDay();
|
List<KeyValue> mouthCount = examPaperScoreDetailMapper.selectCountByDate(startTime, endTime);
|
List<String> mothStartToNowFormat = DateTimeUtil.MothStartToNowFormat();
|
return mothStartToNowFormat.stream().map(md -> {
|
KeyValue keyValue = mouthCount.stream().filter(kv -> kv.getName().equals(md)).findAny().orElse(null);
|
return null == keyValue ? 0 : keyValue.getValue();
|
}).collect(Collectors.toList());
|
}
|
|
@Override
|
public int updateScore(List<ExamPaperAnswerUpdate> examPaperAnswerUpdates) {
|
return examPaperScoreDetailMapper.updateScore(examPaperAnswerUpdates);
|
}
|
|
private void setSpecialToVM(ExamPaperSubmitItemVO examPaperSubmitItemVO, ExamPaperScoreDetail examPaperScoreDetail) {
|
QuestionTypeEnum questionTypeEnum = QuestionTypeEnum.fromCode(examPaperScoreDetail.getQuestionType());
|
switch (questionTypeEnum) {
|
case MultipleChoice:
|
examPaperSubmitItemVO.setContent(examPaperScoreDetail.getAnswer());
|
examPaperSubmitItemVO.setContentArray(ExamUtil.contentToArray(examPaperScoreDetail.getAnswer()));
|
break;
|
case GapFilling:
|
TextContent textContent = textContentService.getById(examPaperScoreDetail.getTextContentId());
|
List<String> correctAnswer = JsonUtil.toJsonListObject(textContent.getContent(), String.class);
|
examPaperSubmitItemVO.setContentArray(correctAnswer);
|
break;
|
default:
|
if (QuestionTypeEnum.needSaveTextContent(examPaperScoreDetail.getQuestionType())) {
|
TextContent content = textContentService.getById(examPaperScoreDetail.getTextContentId());
|
examPaperSubmitItemVO.setContent(content.getContent());
|
} else {
|
examPaperSubmitItemVO.setContent(examPaperScoreDetail.getAnswer());
|
}
|
break;
|
}
|
}
|
}
|