|
@@ -1,5 +1,6 @@
|
|
package com.qmth.teachcloud.mark.service.impl;
|
|
package com.qmth.teachcloud.mark.service.impl;
|
|
|
|
|
|
|
|
+import com.alibaba.fastjson.JSON;
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
|
@@ -7,20 +8,22 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
import com.qmth.teachcloud.common.bean.dto.DataPermissionRule;
|
|
import com.qmth.teachcloud.common.bean.dto.DataPermissionRule;
|
|
|
|
+import com.qmth.teachcloud.common.entity.MarkQuestion;
|
|
import com.qmth.teachcloud.common.entity.SysUser;
|
|
import com.qmth.teachcloud.common.entity.SysUser;
|
|
import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
|
|
import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
|
|
import com.qmth.teachcloud.common.enums.mark.MarkProblemStatus;
|
|
import com.qmth.teachcloud.common.enums.mark.MarkProblemStatus;
|
|
import com.qmth.teachcloud.common.service.BasicRoleDataPermissionService;
|
|
import com.qmth.teachcloud.common.service.BasicRoleDataPermissionService;
|
|
import com.qmth.teachcloud.common.util.ExcelUtil;
|
|
import com.qmth.teachcloud.common.util.ExcelUtil;
|
|
import com.qmth.teachcloud.common.util.ServletUtil;
|
|
import com.qmth.teachcloud.common.util.ServletUtil;
|
|
|
|
+import com.qmth.teachcloud.mark.dto.mark.SpecialTagDTO;
|
|
import com.qmth.teachcloud.mark.dto.mark.manage.*;
|
|
import com.qmth.teachcloud.mark.dto.mark.manage.*;
|
|
-import com.qmth.teachcloud.mark.entity.MarkGroup;
|
|
|
|
-import com.qmth.teachcloud.mark.entity.MarkProblemHistory;
|
|
|
|
import com.qmth.teachcloud.mark.entity.MarkTask;
|
|
import com.qmth.teachcloud.mark.entity.MarkTask;
|
|
import com.qmth.teachcloud.mark.enums.LockType;
|
|
import com.qmth.teachcloud.mark.enums.LockType;
|
|
import com.qmth.teachcloud.mark.enums.MarkTaskStatus;
|
|
import com.qmth.teachcloud.mark.enums.MarkTaskStatus;
|
|
|
|
+import com.qmth.teachcloud.mark.enums.QuestionModel;
|
|
import com.qmth.teachcloud.mark.lock.LockService;
|
|
import com.qmth.teachcloud.mark.lock.LockService;
|
|
import com.qmth.teachcloud.mark.mapper.MarkTaskMapper;
|
|
import com.qmth.teachcloud.mark.mapper.MarkTaskMapper;
|
|
|
|
+import com.qmth.teachcloud.mark.params.MarkResultQuestion;
|
|
import com.qmth.teachcloud.mark.service.*;
|
|
import com.qmth.teachcloud.mark.service.*;
|
|
import com.qmth.teachcloud.mark.utils.Calculator;
|
|
import com.qmth.teachcloud.mark.utils.Calculator;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
@@ -42,8 +45,6 @@ import java.util.List;
|
|
@Service
|
|
@Service
|
|
public class MarkTaskServiceImpl extends ServiceImpl<MarkTaskMapper, MarkTask> implements MarkTaskService {
|
|
public class MarkTaskServiceImpl extends ServiceImpl<MarkTaskMapper, MarkTask> implements MarkTaskService {
|
|
|
|
|
|
- @Resource
|
|
|
|
- private MarkGroupService markGroupService;
|
|
|
|
@Resource
|
|
@Resource
|
|
private MarkQuestionService markQuestionService;
|
|
private MarkQuestionService markQuestionService;
|
|
@Resource
|
|
@Resource
|
|
@@ -67,7 +68,7 @@ public class MarkTaskServiceImpl extends ServiceImpl<MarkTaskMapper, MarkTask> i
|
|
for (MarkManageDto record : markManageDtoIPage.getRecords()) {
|
|
for (MarkManageDto record : markManageDtoIPage.getRecords()) {
|
|
record.setStatusDisplay(record.getStatus() == null ? null : record.getStatus().getName());
|
|
record.setStatusDisplay(record.getStatus() == null ? null : record.getStatus().getName());
|
|
MarkManageDto markManageDto = this.selectMarkedCountAndTotalCount(record.getExamId(), record.getPaperNumber());
|
|
MarkManageDto markManageDto = this.selectMarkedCountAndTotalCount(record.getExamId(), record.getPaperNumber());
|
|
- if(markManageDto != null) {
|
|
|
|
|
|
+ if (markManageDto != null) {
|
|
record.setMarkedCount(markManageDto.getMarkedCount());
|
|
record.setMarkedCount(markManageDto.getMarkedCount());
|
|
record.setTotalCount(markManageDto.getTotalCount());
|
|
record.setTotalCount(markManageDto.getTotalCount());
|
|
record.setPercent(Calculator.divide2String(Calculator.multiply(markManageDto.getMarkedCount(), 100), Double.valueOf(markManageDto.getTotalCount()), 2));
|
|
record.setPercent(Calculator.divide2String(Calculator.multiply(markManageDto.getMarkedCount(), 100), Double.valueOf(markManageDto.getTotalCount()), 2));
|
|
@@ -79,7 +80,7 @@ public class MarkTaskServiceImpl extends ServiceImpl<MarkTaskMapper, MarkTask> i
|
|
// 问题卷数量
|
|
// 问题卷数量
|
|
record.setProblemCount(markProblemHistoryService.countByExamIdAndPaperNumberAndStatus(examId, record.getPaperNumber(), MarkProblemStatus.WAITING));
|
|
record.setProblemCount(markProblemHistoryService.countByExamIdAndPaperNumberAndStatus(examId, record.getPaperNumber(), MarkProblemStatus.WAITING));
|
|
// 正在评卷数量
|
|
// 正在评卷数量
|
|
- record.setCurrentCount(markGroupService.countCurrentCountByExamIdAndPaperNumber(examId, record.getPaperNumber()));
|
|
|
|
|
|
+ record.setCurrentCount(markQuestionService.countCurrentCountByExamIdAndPaperNumber(examId, record.getPaperNumber()));
|
|
}
|
|
}
|
|
return markManageDtoIPage;
|
|
return markManageDtoIPage;
|
|
}
|
|
}
|
|
@@ -88,10 +89,9 @@ public class MarkTaskServiceImpl extends ServiceImpl<MarkTaskMapper, MarkTask> i
|
|
public void exportMarker(Long examId, Long courseId, String paperNumber, HttpServletResponse response) {
|
|
public void exportMarker(Long examId, Long courseId, String paperNumber, HttpServletResponse response) {
|
|
List<MarkerInfoDto> markerInfoDtoList = this.baseMapper.listUserMarkedCount(examId, courseId, paperNumber);
|
|
List<MarkerInfoDto> markerInfoDtoList = this.baseMapper.listUserMarkedCount(examId, courseId, paperNumber);
|
|
for (MarkerInfoDto markerInfoDto : markerInfoDtoList) {
|
|
for (MarkerInfoDto markerInfoDto : markerInfoDtoList) {
|
|
- MarkGroup markGroup = markGroupService.getByExamIdAndPaperNumberAndGroupNumber(examId, markerInfoDto.getPaperNumber(), markerInfoDto.getGroupNumber());
|
|
|
|
- markGroup.setQuestionList(markQuestionService.listQuestionByExamIdAndPaperNumberAndGroupNumber(examId, markerInfoDto.getPaperNumber(), markerInfoDto.getGroupNumber(), false));
|
|
|
|
- markerInfoDto.setGroupName(markGroup.getQuestionTitle());
|
|
|
|
- markerInfoDto.setTotalScore(markQuestionService.sumTotalScoreByGroupNumber(examId, markerInfoDto.getPaperNumber(), markerInfoDto.getGroupNumber()));
|
|
|
|
|
|
+ MarkQuestion markQuestion = markQuestionService.getById(markerInfoDto.getQuestionId());
|
|
|
|
+ markerInfoDto.setQuestionName(markQuestion.getMainTitle());
|
|
|
|
+ markerInfoDto.setTotalScore(markQuestion.getTotalScore());
|
|
}
|
|
}
|
|
try {
|
|
try {
|
|
ExcelUtil.excelExport("评卷员工作量", MarkerInfoDto.class, markerInfoDtoList, response);
|
|
ExcelUtil.excelExport("评卷员工作量", MarkerInfoDto.class, markerInfoDtoList, response);
|
|
@@ -101,8 +101,8 @@ public class MarkTaskServiceImpl extends ServiceImpl<MarkTaskMapper, MarkTask> i
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|
|
- public List<MarkTask> listByExamIdAndPaperNumberAndGroupNumberAndUserIdAndClassName(Long examId, String paperNumber, Integer groupNumber, Long userId, String className) {
|
|
|
|
- return this.baseMapper.listByExamIdAndPaperNumberAndGroupNumberAndUserIdAndClassName(examId, paperNumber, groupNumber, userId, className);
|
|
|
|
|
|
+ public List<MarkTask> listByExamIdAndPaperNumberAndQuestionIdAndUserIdAndClassName(Long examId, String paperNumber, Long questionId, Long userId, String className) {
|
|
|
|
+ return this.baseMapper.listByExamIdAndPaperNumberAndQuestionIdAndUserIdAndClassName(examId, paperNumber, questionId, userId, className);
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|
|
@@ -115,12 +115,12 @@ public class MarkTaskServiceImpl extends ServiceImpl<MarkTaskMapper, MarkTask> i
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|
|
- public int countByExamIdAndPaperNumberAndGroupNumberAndUserId(Long examId, String paperNumber, Integer groupNumber, Long userId) {
|
|
|
|
|
|
+ public int countByExamIdAndPaperNumberAndQuestionIdAndUserId(Long examId, String paperNumber, Long questionId, Long userId) {
|
|
QueryWrapper<MarkTask> queryWrapper = new QueryWrapper<>();
|
|
QueryWrapper<MarkTask> queryWrapper = new QueryWrapper<>();
|
|
LambdaQueryWrapper<MarkTask> lambdaQueryWrapper = queryWrapper.lambda();
|
|
LambdaQueryWrapper<MarkTask> lambdaQueryWrapper = queryWrapper.lambda();
|
|
lambdaQueryWrapper.eq(MarkTask::getExamId, examId)
|
|
lambdaQueryWrapper.eq(MarkTask::getExamId, examId)
|
|
.eq(MarkTask::getPaperNumber, paperNumber)
|
|
.eq(MarkTask::getPaperNumber, paperNumber)
|
|
- .eq(MarkTask::getGroupNumber, groupNumber);
|
|
|
|
|
|
+ .eq(MarkTask::getQuestionId, questionId);
|
|
if (userId != null) {
|
|
if (userId != null) {
|
|
lambdaQueryWrapper.eq(MarkTask::getUserId, userId);
|
|
lambdaQueryWrapper.eq(MarkTask::getUserId, userId);
|
|
}
|
|
}
|
|
@@ -128,11 +128,11 @@ public class MarkTaskServiceImpl extends ServiceImpl<MarkTaskMapper, MarkTask> i
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|
|
- public List<MarkTask> listByExamIdAndPaperNumberAndGroupNumberAndUserIdAndStatusNotIn(Long examId, String paperNumber, Integer groupNumber, Long userId, List<MarkTaskStatus> statusList) {
|
|
|
|
|
|
+ public List<MarkTask> listByExamIdAndPaperNumberAndQuestionIdAndUserIdAndStatusNotIn(Long examId, String paperNumber, Long questionId, Long userId, List<MarkTaskStatus> statusList) {
|
|
QueryWrapper<MarkTask> queryWrapper = new QueryWrapper<>();
|
|
QueryWrapper<MarkTask> queryWrapper = new QueryWrapper<>();
|
|
queryWrapper.lambda().eq(MarkTask::getExamId, examId)
|
|
queryWrapper.lambda().eq(MarkTask::getExamId, examId)
|
|
.eq(MarkTask::getPaperNumber, paperNumber)
|
|
.eq(MarkTask::getPaperNumber, paperNumber)
|
|
- .eq(MarkTask::getGroupNumber, groupNumber)
|
|
|
|
|
|
+ .eq(MarkTask::getQuestionId, questionId)
|
|
.eq(MarkTask::getUserId, userId)
|
|
.eq(MarkTask::getUserId, userId)
|
|
.notIn(MarkTask::getStatus, statusList);
|
|
.notIn(MarkTask::getStatus, statusList);
|
|
return this.list(queryWrapper);
|
|
return this.list(queryWrapper);
|
|
@@ -145,23 +145,25 @@ public class MarkTaskServiceImpl extends ServiceImpl<MarkTaskMapper, MarkTask> i
|
|
.set(MarkTask::getUserId, userId)
|
|
.set(MarkTask::getUserId, userId)
|
|
.set(MarkTask::getMarkerTime, null)
|
|
.set(MarkTask::getMarkerTime, null)
|
|
.set(MarkTask::getMarkerScore, null)
|
|
.set(MarkTask::getMarkerScore, null)
|
|
- .set(MarkTask::getMarkerScoreList, null)
|
|
|
|
|
|
+ .set(MarkTask::getMarkerTrackList, null)
|
|
|
|
+ .set(MarkTask::getMarkerTagList, null)
|
|
.set(MarkTask::getMarkerSpent, null)
|
|
.set(MarkTask::getMarkerSpent, null)
|
|
.set(MarkTask::getHeaderId, rejectId)
|
|
.set(MarkTask::getHeaderId, rejectId)
|
|
.set(MarkTask::getHeaderTime, date)
|
|
.set(MarkTask::getHeaderTime, date)
|
|
.set(MarkTask::getHeaderScore, null)
|
|
.set(MarkTask::getHeaderScore, null)
|
|
- .set(MarkTask::getHeaderScoreList, null)
|
|
|
|
|
|
+ .set(MarkTask::getHeaderTrackList, null)
|
|
|
|
+ .set(MarkTask::getHeaderTagList, null)
|
|
.set(MarkTask::getRejectReason, rejectReason)
|
|
.set(MarkTask::getRejectReason, rejectReason)
|
|
.eq(MarkTask::getId, markTaskId);
|
|
.eq(MarkTask::getId, markTaskId);
|
|
return this.update(updateWrapper);
|
|
return this.update(updateWrapper);
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|
|
- public int countByExamIdAndPaperNumberAndGroupNumberAndStatusIn(Long examId, String paperNumber, Integer groupNumber, List<MarkTaskStatus> statusList) {
|
|
|
|
|
|
+ public int countByExamIdAndPaperNumberAndQuestionIdAndStatusIn(Long examId, String paperNumber, Long questionId, List<MarkTaskStatus> statusList) {
|
|
QueryWrapper<MarkTask> queryWrapper = new QueryWrapper<>();
|
|
QueryWrapper<MarkTask> queryWrapper = new QueryWrapper<>();
|
|
queryWrapper.lambda().eq(MarkTask::getExamId, examId)
|
|
queryWrapper.lambda().eq(MarkTask::getExamId, examId)
|
|
.eq(MarkTask::getPaperNumber, paperNumber)
|
|
.eq(MarkTask::getPaperNumber, paperNumber)
|
|
- .eq(MarkTask::getGroupNumber, groupNumber)
|
|
|
|
|
|
+ .eq(MarkTask::getQuestionId, questionId)
|
|
.in(MarkTask::getStatus, statusList);
|
|
.in(MarkTask::getStatus, statusList);
|
|
return this.count(queryWrapper);
|
|
return this.count(queryWrapper);
|
|
}
|
|
}
|
|
@@ -176,39 +178,40 @@ public class MarkTaskServiceImpl extends ServiceImpl<MarkTaskMapper, MarkTask> i
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|
|
- public MarkTask getLastOneByUserIdAndStatus(Long examId, String paperNumber, Integer groupNumber, Long userId, MarkTaskStatus status) {
|
|
|
|
- return this.baseMapper.getLastOneByUserIdAndStatus(examId, paperNumber, groupNumber, userId, status.name());
|
|
|
|
|
|
+ public MarkTask getLastOneByUserIdAndStatus(Long examId, String paperNumber, Long questionId, Long userId, MarkTaskStatus status) {
|
|
|
|
+ return this.baseMapper.getLastOneByUserIdAndStatus(examId, paperNumber, questionId, userId, status.name());
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|
|
- public List<MarkTask> listByExamIdAndPaperNumberAndGroupNumberAndStudentId(Long examId, String paperNumber, Integer groupNumber, Long studentId) {
|
|
|
|
|
|
+ public List<MarkTask> listByExamIdAndPaperNumberAndQuestionIdAndStudentId(Long examId, String paperNumber, Long questionId, Long studentId) {
|
|
QueryWrapper<MarkTask> queryWrapper = new QueryWrapper<>();
|
|
QueryWrapper<MarkTask> queryWrapper = new QueryWrapper<>();
|
|
queryWrapper.lambda().eq(MarkTask::getExamId, examId)
|
|
queryWrapper.lambda().eq(MarkTask::getExamId, examId)
|
|
.eq(MarkTask::getPaperNumber, paperNumber)
|
|
.eq(MarkTask::getPaperNumber, paperNumber)
|
|
- .eq(MarkTask::getGroupNumber, groupNumber)
|
|
|
|
|
|
+ .eq(MarkTask::getQuestionId, questionId)
|
|
.eq(MarkTask::getStudentId, studentId);
|
|
.eq(MarkTask::getStudentId, studentId);
|
|
return this.list(queryWrapper);
|
|
return this.list(queryWrapper);
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|
|
- public List<MarkTask> listByStudentIdAndGroupNumber(Long studentId, Integer groupNumber) {
|
|
|
|
|
|
+ public List<MarkTask> listByStudentIdAndQuestionId(Long studentId, Long questionId) {
|
|
QueryWrapper<MarkTask> queryWrapper = new QueryWrapper<>();
|
|
QueryWrapper<MarkTask> queryWrapper = new QueryWrapper<>();
|
|
queryWrapper.lambda().eq(MarkTask::getStudentId, studentId)
|
|
queryWrapper.lambda().eq(MarkTask::getStudentId, studentId)
|
|
- .eq(MarkTask::getGroupNumber, groupNumber);
|
|
|
|
|
|
+ .eq(MarkTask::getQuestionId, questionId);
|
|
return this.list(queryWrapper);
|
|
return this.list(queryWrapper);
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|
|
- public void updateHeaderResult(Long examId, String paperNumber, Integer groupNumber, Long studentId, Long updateUserId, Double totalScore, String scoreList, Long updateTime, MarkTaskStatus arbitrated) {
|
|
|
|
|
|
+ public void updateHeaderResult(Long examId, String paperNumber, Long questionId, Long studentId, Long updateUserId, Double markerScore, TrackDTO[] tracks, SpecialTagDTO[] specialTags, Long updateTime, MarkTaskStatus arbitrated) {
|
|
UpdateWrapper<MarkTask> updateWrapper = new UpdateWrapper<>();
|
|
UpdateWrapper<MarkTask> updateWrapper = new UpdateWrapper<>();
|
|
updateWrapper.lambda().set(MarkTask::getHeaderId, updateUserId)
|
|
updateWrapper.lambda().set(MarkTask::getHeaderId, updateUserId)
|
|
- .set(MarkTask::getHeaderScore, totalScore)
|
|
|
|
- .set(MarkTask::getHeaderScoreList, scoreList)
|
|
|
|
|
|
+ .set(MarkTask::getHeaderScore, markerScore)
|
|
|
|
+ .set(MarkTask::getHeaderTrackList, JSON.toJSONString(tracks))
|
|
|
|
+ .set(MarkTask::getHeaderTagList, JSON.toJSONString(specialTags))
|
|
.set(MarkTask::getHeaderTime, updateTime)
|
|
.set(MarkTask::getHeaderTime, updateTime)
|
|
.set(MarkTask::getStatus, arbitrated)
|
|
.set(MarkTask::getStatus, arbitrated)
|
|
.eq(MarkTask::getExamId, examId)
|
|
.eq(MarkTask::getExamId, examId)
|
|
.eq(MarkTask::getPaperNumber, paperNumber)
|
|
.eq(MarkTask::getPaperNumber, paperNumber)
|
|
- .eq(MarkTask::getGroupNumber, groupNumber)
|
|
|
|
|
|
+ .eq(MarkTask::getQuestionId, questionId)
|
|
.eq(MarkTask::getStudentId, studentId);
|
|
.eq(MarkTask::getStudentId, studentId);
|
|
this.update(updateWrapper);
|
|
this.update(updateWrapper);
|
|
}
|
|
}
|
|
@@ -221,26 +224,8 @@ public class MarkTaskServiceImpl extends ServiceImpl<MarkTaskMapper, MarkTask> i
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|
|
- public int countByExamIdAndPaperNumberAndGroupNumber(Long examId, String paperNumber, Integer groupNumber) {
|
|
|
|
- QueryWrapper<MarkTask> queryWrapper = new QueryWrapper<>();
|
|
|
|
- queryWrapper.lambda().eq(MarkTask::getExamId, examId)
|
|
|
|
- .eq(MarkTask::getPaperNumber, paperNumber)
|
|
|
|
- .eq(MarkTask::getGroupNumber, groupNumber);
|
|
|
|
- return this.count(queryWrapper);
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- @Override
|
|
|
|
- public int countByExamIdAndPaperNumberAndGroupNumberAndUserIdAndAndClassNameStatusIn(Long examId, String paperNumber, Integer groupNumber, Long userId, List<String> className, MarkTaskStatus... status) {
|
|
|
|
- return this.baseMapper.countByExamIdAndPaperNumberAndGroupNumberAndUserIdAndAndClassNameStatusIn(examId, paperNumber, groupNumber, userId, className, status);
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- @Override
|
|
|
|
- public void deleteByExamIdAndPaperNumberAndGroupNumber(Long examId, String paperNumber, Integer groupNumber) {
|
|
|
|
- UpdateWrapper<MarkTask> updateWrapper = new UpdateWrapper<>();
|
|
|
|
- updateWrapper.lambda().eq(MarkTask::getExamId, examId)
|
|
|
|
- .eq(MarkTask::getPaperNumber, paperNumber)
|
|
|
|
- .eq(MarkTask::getGroupNumber, groupNumber);
|
|
|
|
- this.remove(updateWrapper);
|
|
|
|
|
|
+ public int countByExamIdAndPaperNumberAndQuestionIdAndUserIdAndAndClassNameStatusIn(Long examId, String paperNumber, Long questionId, Long userId, List<String> className, MarkTaskStatus... status) {
|
|
|
|
+ return this.baseMapper.countByExamIdAndPaperNumberAndQuestionIdAndUserIdAndAndClassNameStatusIn(examId, paperNumber, questionId, userId, className, status);
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|
|
@@ -250,15 +235,15 @@ public class MarkTaskServiceImpl extends ServiceImpl<MarkTaskMapper, MarkTask> i
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|
|
- public List<MarkTask> findUnMarked(Page<MarkTask> page, Long examId, String paperNumber, Integer groupNumber,
|
|
|
|
- Long userId) {
|
|
|
|
- return this.baseMapper.findUnMarked(page, examId, paperNumber, groupNumber, userId);
|
|
|
|
|
|
+ public List<MarkTask> findUnMarked(Page<MarkTask> page, Long examId, String paperNumber,
|
|
|
|
+ Long userId, QuestionModel questionModel) {
|
|
|
|
+ return this.baseMapper.findUnMarked(page, examId, paperNumber, userId, questionModel);
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|
|
public List<MarkTask> findUnMarkedFilterClass(Page<MarkTask> page, Long examId, String paperNumber,
|
|
public List<MarkTask> findUnMarkedFilterClass(Page<MarkTask> page, Long examId, String paperNumber,
|
|
- Integer groupNumber, Long userId) {
|
|
|
|
- return this.baseMapper.findUnMarkedFilterClass(page, examId, paperNumber, groupNumber, userId);
|
|
|
|
|
|
+ Long userId, QuestionModel questionModel) {
|
|
|
|
+ return this.baseMapper.findUnMarkedFilterClass(page, examId, paperNumber, userId, questionModel);
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|
|
@@ -270,11 +255,10 @@ public class MarkTaskServiceImpl extends ServiceImpl<MarkTaskMapper, MarkTask> i
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|
|
- public List<MarkTask> findByStudentIdAndGroupNumberAndStatus(Long studentId, Integer groupNumber,
|
|
|
|
- MarkTaskStatus... status) {
|
|
|
|
|
|
+ public List<MarkTask> findByStudentIdAndQuestionIdAndStatus(Long studentId, Long questionId, MarkTaskStatus... status) {
|
|
QueryWrapper<MarkTask> queryWrapper = new QueryWrapper<>();
|
|
QueryWrapper<MarkTask> queryWrapper = new QueryWrapper<>();
|
|
queryWrapper.lambda().eq(MarkTask::getStudentId, studentId)
|
|
queryWrapper.lambda().eq(MarkTask::getStudentId, studentId)
|
|
- .eq(MarkTask::getGroupNumber, groupNumber)
|
|
|
|
|
|
+ .eq(MarkTask::getQuestionId, questionId)
|
|
.in(MarkTask::getStatus, Arrays.asList(status));
|
|
.in(MarkTask::getStatus, Arrays.asList(status));
|
|
return this.list(queryWrapper);
|
|
return this.list(queryWrapper);
|
|
}
|
|
}
|
|
@@ -287,45 +271,47 @@ public class MarkTaskServiceImpl extends ServiceImpl<MarkTaskMapper, MarkTask> i
|
|
.set(MarkTask::getStatus, MarkTaskStatus.PROBLEM)
|
|
.set(MarkTask::getStatus, MarkTaskStatus.PROBLEM)
|
|
.set(MarkTask::getUserId, userId)
|
|
.set(MarkTask::getUserId, userId)
|
|
.set(MarkTask::getMarkerScore, 0)
|
|
.set(MarkTask::getMarkerScore, 0)
|
|
- .set(MarkTask::getMarkerScoreList, null)
|
|
|
|
|
|
+ .set(MarkTask::getMarkerTagList, null)
|
|
|
|
+ .set(MarkTask::getMarkerTagList, null)
|
|
.set(MarkTask::getMarkerTime, now)
|
|
.set(MarkTask::getMarkerTime, now)
|
|
.set(MarkTask::getMarkerSpent, spent);
|
|
.set(MarkTask::getMarkerSpent, spent);
|
|
return this.update(updateWrapper);
|
|
return this.update(updateWrapper);
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|
|
- public boolean updateStatusByStudentIdAndGroupNumber(Long studentId, Integer groupNumber, MarkTaskStatus status) {
|
|
|
|
|
|
+ public boolean updateStatusByStudentIdAndQuestionId(Long studentId, Long questionId, MarkTaskStatus status) {
|
|
UpdateWrapper<MarkTask> updateWrapper = new UpdateWrapper<>();
|
|
UpdateWrapper<MarkTask> updateWrapper = new UpdateWrapper<>();
|
|
updateWrapper.lambda().eq(MarkTask::getStudentId, studentId)
|
|
updateWrapper.lambda().eq(MarkTask::getStudentId, studentId)
|
|
- .eq(MarkTask::getGroupNumber, groupNumber)
|
|
|
|
|
|
+ .eq(MarkTask::getQuestionId, questionId)
|
|
.set(MarkTask::getStatus, status);
|
|
.set(MarkTask::getStatus, status);
|
|
return this.update(updateWrapper);
|
|
return this.update(updateWrapper);
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|
|
- public int countByStudentIdAndMarkerIdAndIdNotEqual(Long studentId, Long examId, String paperNumber, Integer groupNumber, Long userId, Long taskId) {
|
|
|
|
|
|
+ public int countByStudentIdAndMarkerIdAndIdNotEqual(Long studentId, Long examId, String paperNumber, Long questionId, Long userId, Long taskId) {
|
|
QueryWrapper<MarkTask> queryWrapper = new QueryWrapper<>();
|
|
QueryWrapper<MarkTask> queryWrapper = new QueryWrapper<>();
|
|
queryWrapper.lambda().eq(MarkTask::getStudentId, studentId)
|
|
queryWrapper.lambda().eq(MarkTask::getStudentId, studentId)
|
|
.eq(MarkTask::getExamId, examId)
|
|
.eq(MarkTask::getExamId, examId)
|
|
.eq(MarkTask::getPaperNumber, paperNumber)
|
|
.eq(MarkTask::getPaperNumber, paperNumber)
|
|
- .eq(MarkTask::getGroupNumber, groupNumber)
|
|
|
|
|
|
+ .eq(MarkTask::getQuestionId, questionId)
|
|
.eq(MarkTask::getUserId, userId)
|
|
.eq(MarkTask::getUserId, userId)
|
|
.ne(MarkTask::getId, taskId);
|
|
.ne(MarkTask::getId, taskId);
|
|
return this.count(queryWrapper);
|
|
return this.count(queryWrapper);
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|
|
- public boolean updateMarkerResult(Long taskId, MarkTaskStatus status, Long userId, Double markerScore,
|
|
|
|
- String scoreList, Long now, int spent, MarkTaskStatus... inStatus) {
|
|
|
|
|
|
+ public boolean updateMarkerResult(Long taskId, MarkTaskStatus status, Long userId,
|
|
|
|
+ MarkResultQuestion result, Long now, MarkTaskStatus... inStatus) {
|
|
UpdateWrapper<MarkTask> updateWrapper = new UpdateWrapper<>();
|
|
UpdateWrapper<MarkTask> updateWrapper = new UpdateWrapper<>();
|
|
updateWrapper.lambda().eq(MarkTask::getId, taskId)
|
|
updateWrapper.lambda().eq(MarkTask::getId, taskId)
|
|
.in(MarkTask::getStatus, Arrays.asList(inStatus))
|
|
.in(MarkTask::getStatus, Arrays.asList(inStatus))
|
|
.set(MarkTask::getStatus, status)
|
|
.set(MarkTask::getStatus, status)
|
|
.set(MarkTask::getUserId, userId)
|
|
.set(MarkTask::getUserId, userId)
|
|
- .set(MarkTask::getMarkerScore, markerScore)
|
|
|
|
- .set(MarkTask::getMarkerScoreList, scoreList)
|
|
|
|
|
|
+ .set(MarkTask::getMarkerScore, result.getMarkerScore())
|
|
|
|
+ .set(MarkTask::getMarkerTrackList, JSON.toJSONString(result.getTrackList()))
|
|
|
|
+ .set(MarkTask::getMarkerTagList, JSON.toJSONString(result.getSpecialTagList()))
|
|
.set(MarkTask::getMarkerTime, now)
|
|
.set(MarkTask::getMarkerTime, now)
|
|
- .set(MarkTask::getMarkerSpent, spent)
|
|
|
|
|
|
+ .set(MarkTask::getMarkerSpent, result.getSpent())
|
|
.set(MarkTask::getHeaderId, null)
|
|
.set(MarkTask::getHeaderId, null)
|
|
.set(MarkTask::getHeaderTime, null)
|
|
.set(MarkTask::getHeaderTime, null)
|
|
.set(MarkTask::getRejectReason, null);
|
|
.set(MarkTask::getRejectReason, null);
|
|
@@ -333,11 +319,11 @@ public class MarkTaskServiceImpl extends ServiceImpl<MarkTaskMapper, MarkTask> i
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|
|
- public int countByExamIdAndPaperNumberAndGroupNumberAndTaskNumber(Long examId, String paperNumber, Integer groupNumber, int taskNumber) {
|
|
|
|
|
|
+ public int countByExamIdAndPaperNumberAndQuestionIdAndTaskNumber(Long examId, String paperNumber, Long questionId, int taskNumber) {
|
|
QueryWrapper<MarkTask> queryWrapper = new QueryWrapper<>();
|
|
QueryWrapper<MarkTask> queryWrapper = new QueryWrapper<>();
|
|
queryWrapper.lambda().eq(MarkTask::getExamId, examId)
|
|
queryWrapper.lambda().eq(MarkTask::getExamId, examId)
|
|
.eq(MarkTask::getPaperNumber, paperNumber)
|
|
.eq(MarkTask::getPaperNumber, paperNumber)
|
|
- .eq(MarkTask::getGroupNumber, groupNumber)
|
|
|
|
|
|
+ .eq(MarkTask::getQuestionId, questionId)
|
|
.eq(MarkTask::getTaskNumber, taskNumber);
|
|
.eq(MarkTask::getTaskNumber, taskNumber);
|
|
return this.count(queryWrapper);
|
|
return this.count(queryWrapper);
|
|
}
|
|
}
|
|
@@ -358,12 +344,13 @@ public class MarkTaskServiceImpl extends ServiceImpl<MarkTaskMapper, MarkTask> i
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|
|
- public IPage<MarkTaskDto> pageMarkTask(Long examId, String paperNumber, Integer groupNumber, String loginName, MarkTaskStatus status, String studentCode, String secretNumber, String teachClassName, Double subScore, Integer pageNumber, Integer pageSize) {
|
|
|
|
- IPage<MarkTaskDto> markTaskDtoIPage = this.baseMapper.pageMarkTask(new Page<>(pageNumber, pageSize), examId, paperNumber, groupNumber, loginName, status, studentCode, secretNumber, teachClassName, subScore);
|
|
|
|
|
|
+ public IPage<MarkTaskDto> pageMarkTask(Long examId, String paperNumber, Long questionId, String loginName, MarkTaskStatus status, String studentCode, String secretNumber, String teachClassName, Double subScore, Integer pageNumber, Integer pageSize) {
|
|
|
|
+ IPage<MarkTaskDto> markTaskDtoIPage = this.baseMapper.pageMarkTask(new Page<>(pageNumber, pageSize), examId, paperNumber, questionId, loginName, status, studentCode, secretNumber, teachClassName, subScore);
|
|
for (MarkTaskDto record : markTaskDtoIPage.getRecords()) {
|
|
for (MarkTaskDto record : markTaskDtoIPage.getRecords()) {
|
|
record.setStatusDisplay(record.getStatus().getName());
|
|
record.setStatusDisplay(record.getStatus().getName());
|
|
// 分组题目
|
|
// 分组题目
|
|
- record.setGroupQuestions(markQuestionService.assembleGroupQuestionsByExamIdAndPaperNumberAndNumber(record.getExamId(), record.getPaperNumber(), record.getGroupNumber()));
|
|
|
|
|
|
+ MarkQuestion markQuestion = markQuestionService.getById(record.getQuestionId());
|
|
|
|
+ record.setQuestionNumber(markQuestion.getQuestionNumber());
|
|
}
|
|
}
|
|
return markTaskDtoIPage;
|
|
return markTaskDtoIPage;
|
|
}
|
|
}
|
|
@@ -377,7 +364,7 @@ public class MarkTaskServiceImpl extends ServiceImpl<MarkTaskMapper, MarkTask> i
|
|
}
|
|
}
|
|
try {
|
|
try {
|
|
lockService.watch(LockType.EXAM_SUBJECT, markTask.getExamId(), markTask.getPaperNumber());
|
|
lockService.watch(LockType.EXAM_SUBJECT, markTask.getExamId(), markTask.getPaperNumber());
|
|
- lockService.watch(LockType.GROUP, markTask.getExamId(), markTask.getPaperNumber(), markTask.getGroupNumber());
|
|
|
|
|
|
+ lockService.watch(LockType.GROUP, markTask.getQuestionId());
|
|
lockService.waitlock(LockType.STUDENT, markTask.getStudentId());
|
|
lockService.waitlock(LockType.STUDENT, markTask.getStudentId());
|
|
if (!markTask.getStatus().equals(MarkTaskStatus.MARKED)) {
|
|
if (!markTask.getStatus().equals(MarkTaskStatus.MARKED)) {
|
|
throw ExceptionResultEnum.ERROR.exception("当前任务不允许打回");
|
|
throw ExceptionResultEnum.ERROR.exception("当前任务不允许打回");
|
|
@@ -387,7 +374,7 @@ public class MarkTaskServiceImpl extends ServiceImpl<MarkTaskMapper, MarkTask> i
|
|
log.error("打回失败", e);
|
|
log.error("打回失败", e);
|
|
} finally {
|
|
} finally {
|
|
lockService.unlock(LockType.STUDENT, markTask.getStudentId());
|
|
lockService.unlock(LockType.STUDENT, markTask.getStudentId());
|
|
- lockService.unwatch(LockType.GROUP, markTask.getExamId(), markTask.getPaperNumber(), markTask.getGroupNumber());
|
|
|
|
|
|
+ lockService.unwatch(LockType.GROUP, markTask.getQuestionId());
|
|
lockService.unwatch(LockType.EXAM_SUBJECT, markTask.getExamId(), markTask.getPaperNumber());
|
|
lockService.unwatch(LockType.EXAM_SUBJECT, markTask.getExamId(), markTask.getPaperNumber());
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -410,4 +397,16 @@ public class MarkTaskServiceImpl extends ServiceImpl<MarkTaskMapper, MarkTask> i
|
|
public MarkManageDto selectMarkedCountAndTotalCount(Long examId, String paperNumber) {
|
|
public MarkManageDto selectMarkedCountAndTotalCount(Long examId, String paperNumber) {
|
|
return this.baseMapper.selectMarkedCountAndTotalCount(examId, paperNumber);
|
|
return this.baseMapper.selectMarkedCountAndTotalCount(examId, paperNumber);
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public List<MarkTask> listByStudentId(Long studentId) {
|
|
|
|
+ QueryWrapper<MarkTask> queryWrapper = new QueryWrapper<>();
|
|
|
|
+ queryWrapper.lambda().eq(MarkTask::getStudentId, studentId);
|
|
|
|
+ return this.list(queryWrapper);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public Long minQuestionIdByExamIdAndPaperNumber(Long examId, String paperNumber, MarkTaskStatus... statusList) {
|
|
|
|
+ return this.baseMapper.minQuestionIdByExamIdAndPaperNumber(examId, paperNumber, statusList);
|
|
|
|
+ }
|
|
}
|
|
}
|