PaperDictServiceImpl.java
5.49 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
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);
}
}
}