PaperDictServiceImpl.java 5.49 KB
package com.meishu.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.meishu.common.exception.HttpException;
import com.meishu.dto.paper.PaperStudentExerciseDTO;
import com.meishu.dto.paper.SubmitDTO;
import com.meishu.mapper.ExerciseDictMapper;
import com.meishu.mapper.ExerciseDoneHistoryMapper;
import com.meishu.mapper.BatchExamsStudentsMapper;
import com.meishu.model.*;
import com.meishu.mapper.PaperDictMapper;
import com.meishu.service.PaperDictService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.meishu.util.ConstantUtils;
import com.meishu.vo.paper.ExercisesVO;
import net.sf.json.JSONArray;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

/**
 * <p>
 * 服务实现类
 * </p>
 *
 * @author Tuyp
 * @since 2023-07-11
 */
@Service
public class PaperDictServiceImpl extends ServiceImpl<PaperDictMapper, PaperDictDO> implements PaperDictService {

    @Autowired
    private ExerciseDictMapper exerciseDictMapper;

    @Autowired
    private BatchExamsStudentsMapper studentExamsMapper;

    @Autowired
    private ExerciseDoneHistoryMapper exerciseDoneHistoryMapper;

    public List<ExercisesVO> exercises(PaperExercisesDO paperExercisesDO) {
        return this.baseMapper.exercises(paperExercisesDO.getPaperId());
    }

    @Transactional(rollbackFor = Exception.class)
    public String submit(SubmitDTO submitDTO) {

        int rightCount = 0;

        BatchExamStudentsDO studentExamsDO = studentExamsMapper.selectOne(new QueryWrapper<BatchExamStudentsDO>()
                .lambda()
                .eq(BatchExamStudentsDO::getStudentId, submitDTO.getStudentId())
                .eq(BatchExamStudentsDO::getBatchExamId, submitDTO.getBatchExamId()));

        List<PaperStudentExerciseDTO> examStudentExerciseDTOS = submitDTO.getPaperStudentExerciseDTOS();
        for (PaperStudentExerciseDTO examStudentExerciseDTO : examStudentExerciseDTOS) {

            ExerciseDoneHistoryDO exerciseDoneHistoryDO = exerciseDoneHistoryMapper.selectById(examStudentExerciseDTO.getExerciseId());
            exerciseDoneHistoryDO.setAnswer(examStudentExerciseDTO.getSelectAnswer());
            ExerciseDictDO exerciseDict = exerciseDictMapper.selectById(exerciseDoneHistoryDO.getExerciseId());
            if ("填空题".equals(exerciseDict.getExerciseType())){
                JSONArray jsonArray = JSONArray.fromObject(exerciseDict.getRightAnswer());
                String[] studentAnswers = examStudentExerciseDTO.getSelectAnswer().split(",");
                for (int i = 0; i < jsonArray.size(); i++) {
                    if (i<studentAnswers.length){
                        if (jsonArray.get(i).equals(studentAnswers[i])){
                            rightCount++;
                        }
                    }
                }
                exerciseDoneHistoryDO.setScore(rightCount);
            }if ("快件安检".equals(exerciseDict.getExerciseType())){

                //选过了

                //


            }else {
                if (exerciseDict.getRightAnswer().equals(examStudentExerciseDTO.getSelectAnswer())) {
                    exerciseDoneHistoryDO.setResult(1);
                    exerciseDoneHistoryDO.setScore(1);
                    rightCount++;
                } else {
                    exerciseDoneHistoryDO.setResult(0);
                    exerciseDoneHistoryDO.setScore(0);
                }
            }
            exerciseDoneHistoryDO.setBatchExamId(submitDTO.getBatchExamId());
            exerciseDoneHistoryMapper.updateById(exerciseDoneHistoryDO);
        }
        if (null != studentExamsDO.getScore()){
            throw new HttpException(60001);
        }
        studentExamsDO.setScore(rightCount);
        studentExamsMapper.updateById(studentExamsDO);

        return ConstantUtils.ADD_SUCCESS;
    }

    public List<PaperDictDO> allPapers() {
        return this.baseMapper.selectList(null);
    }

    public String deletePaper(PaperDictDO examDictDO) {
        this.baseMapper.deleteById(examDictDO.getId());
        return ConstantUtils.DELETE_SUCCESS;
    }

    public String addPaper(PaperDictDO examDictDO) {
        this.baseMapper.insert(examDictDO);
        return ConstantUtils.ADD_SUCCESS;
    }

    public String updatePaper(PaperDictDO examDictDO) {
        this.baseMapper.updateById(examDictDO);
        return ConstantUtils.ADD_SUCCESS;
    }

    public void  aa(){

        List<ExerciseDoneHistoryDO> exerciseDoneHistoryDOS = exerciseDoneHistoryMapper.selectList(new QueryWrapper<ExerciseDoneHistoryDO>()
        .lambda()
        .ge(ExerciseDoneHistoryDO::getId,4951));

        for (ExerciseDoneHistoryDO exerciseDoneHistoryDO : exerciseDoneHistoryDOS){
            int rightCount = 0;
            ExerciseDictDO exerciseDictDO = exerciseDictMapper.selectById(exerciseDoneHistoryDO.getExerciseId());

            JSONArray jsonArray = JSONArray.fromObject(exerciseDictDO.getRightAnswer());
            String[] studentAnswers = exerciseDoneHistoryDO.getAnswer().split(",");
            for (int i = 0; i < jsonArray.size(); i++) {
                if (i<studentAnswers.length){
                    if (jsonArray.get(i).equals(studentAnswers[i])){
                        rightCount++;
                    }
                }
            }
            exerciseDoneHistoryDO.setScore(rightCount);
            exerciseDoneHistoryMapper.updateById(exerciseDoneHistoryDO);
        }

    }

}