|
@@ -13,10 +13,14 @@ 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.manage.MarkManageDto;
|
|
import com.qmth.teachcloud.mark.dto.mark.manage.MarkManageDto;
|
|
|
|
+import com.qmth.teachcloud.mark.dto.mark.manage.MarkRejectHistoryDto;
|
|
|
|
+import com.qmth.teachcloud.mark.dto.mark.manage.MarkTaskDto;
|
|
import com.qmth.teachcloud.mark.dto.mark.manage.MarkerInfoDto;
|
|
import com.qmth.teachcloud.mark.dto.mark.manage.MarkerInfoDto;
|
|
import com.qmth.teachcloud.mark.entity.MarkGroup;
|
|
import com.qmth.teachcloud.mark.entity.MarkGroup;
|
|
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.MarkTaskStatus;
|
|
import com.qmth.teachcloud.mark.enums.MarkTaskStatus;
|
|
|
|
+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.service.*;
|
|
import com.qmth.teachcloud.mark.service.*;
|
|
import com.qmth.teachcloud.mark.utils.Calculator;
|
|
import com.qmth.teachcloud.mark.utils.Calculator;
|
|
@@ -39,13 +43,15 @@ 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 MarkStudentService markStudentService;
|
|
|
|
@Resource
|
|
@Resource
|
|
private MarkGroupService markGroupService;
|
|
private MarkGroupService markGroupService;
|
|
@Resource
|
|
@Resource
|
|
private MarkQuestionService markQuestionService;
|
|
private MarkQuestionService markQuestionService;
|
|
@Resource
|
|
@Resource
|
|
|
|
+ private MarkService markService;
|
|
|
|
+ @Resource
|
|
|
|
+ private LockService lockService;
|
|
|
|
+ @Resource
|
|
private BasicRoleDataPermissionService basicRoleDataPermissionService;
|
|
private BasicRoleDataPermissionService basicRoleDataPermissionService;
|
|
|
|
|
|
@Override
|
|
@Override
|
|
@@ -117,7 +123,7 @@ public class MarkTaskServiceImpl extends ServiceImpl<MarkTaskMapper, MarkTask> i
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|
|
- public boolean resetById(Long markTaskId, Long userId, Long rejecterId, Long date, MarkTaskStatus newStatus) {
|
|
|
|
|
|
+ public boolean resetById(Long markTaskId, Long userId, String rejectReason, Long rejectId, Long date, MarkTaskStatus newStatus) {
|
|
UpdateWrapper<MarkTask> updateWrapper = new UpdateWrapper<>();
|
|
UpdateWrapper<MarkTask> updateWrapper = new UpdateWrapper<>();
|
|
updateWrapper.lambda().set(MarkTask::getStatus, newStatus)
|
|
updateWrapper.lambda().set(MarkTask::getStatus, newStatus)
|
|
.set(MarkTask::getUserId, userId)
|
|
.set(MarkTask::getUserId, userId)
|
|
@@ -125,10 +131,11 @@ public class MarkTaskServiceImpl extends ServiceImpl<MarkTaskMapper, MarkTask> i
|
|
.set(MarkTask::getMarkerScore, null)
|
|
.set(MarkTask::getMarkerScore, null)
|
|
.set(MarkTask::getMarkerScoreList, null)
|
|
.set(MarkTask::getMarkerScoreList, null)
|
|
.set(MarkTask::getMarkerSpent, null)
|
|
.set(MarkTask::getMarkerSpent, null)
|
|
- .set(MarkTask::getHeaderId, rejecterId)
|
|
|
|
|
|
+ .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::getHeaderScoreList, null)
|
|
|
|
+ .set(MarkTask::getRejectReason, rejectReason)
|
|
.eq(MarkTask::getId, markTaskId);
|
|
.eq(MarkTask::getId, markTaskId);
|
|
return this.update(updateWrapper);
|
|
return this.update(updateWrapper);
|
|
}
|
|
}
|
|
@@ -330,4 +337,39 @@ public class MarkTaskServiceImpl extends ServiceImpl<MarkTaskMapper, MarkTask> i
|
|
.eq(MarkTask::getPaperNumber, paperNumber);
|
|
.eq(MarkTask::getPaperNumber, paperNumber);
|
|
return this.count(queryWrapper);
|
|
return this.count(queryWrapper);
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ @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);
|
|
|
|
+ for (MarkTaskDto record : markTaskDtoIPage.getRecords()) {
|
|
|
|
+ record.setStatusDisplay(record.getStatus().getName());
|
|
|
|
+ // 分组题目
|
|
|
|
+ record.setGroupQuestions(markQuestionService.assembleGroupQuestionsByExamIdAndPaperNumberAndNumber(record.getExamId(), record.getPaperNumber(), record.getGroupNumber()));
|
|
|
|
+ }
|
|
|
|
+ return markTaskDtoIPage;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public void rejectMarkTask(Long id, String rejectReason) {
|
|
|
|
+ SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
|
|
|
|
+ MarkTask markTask = this.getById(id);
|
|
|
|
+ if (markTask == null) {
|
|
|
|
+ throw ExceptionResultEnum.ERROR.exception("任务不存在");
|
|
|
|
+ }
|
|
|
|
+ try {
|
|
|
|
+ lockService.watch(LockType.EXAM_SUBJECT, markTask.getExamId(), markTask.getPaperNumber());
|
|
|
|
+ lockService.watch(LockType.GROUP, markTask.getExamId(), markTask.getPaperNumber(), markTask.getGroupNumber());
|
|
|
|
+ lockService.waitlock(LockType.STUDENT, markTask.getStudentId());
|
|
|
|
+ if (!markTask.getStatus().equals(MarkTaskStatus.MARKED)) {
|
|
|
|
+ throw ExceptionResultEnum.ERROR.exception("当前任务不允许打回");
|
|
|
|
+ }
|
|
|
|
+ markService.rejectMarkTask(markTask, sysUser.getId(), rejectReason);
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
+ log.error("打回失败", e);
|
|
|
|
+ } finally {
|
|
|
|
+ lockService.unlock(LockType.STUDENT, markTask.getStudentId());
|
|
|
|
+ lockService.unwatch(LockType.GROUP, markTask.getExamId(), markTask.getPaperNumber(), markTask.getGroupNumber());
|
|
|
|
+ lockService.unwatch(LockType.EXAM_SUBJECT, markTask.getExamId(), markTask.getPaperNumber());
|
|
|
|
+ }
|
|
|
|
+ }
|
|
}
|
|
}
|