|
@@ -1,11 +1,31 @@
|
|
package com.qmth.teachcloud.mark.service.impl;
|
|
package com.qmth.teachcloud.mark.service.impl;
|
|
|
|
|
|
|
|
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
|
|
|
+import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
|
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
|
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
|
+import com.qmth.teachcloud.common.bean.dto.mark.manage.MarkProblemDto;
|
|
|
|
+import com.qmth.teachcloud.common.entity.MarkStudent;
|
|
|
|
+import com.qmth.teachcloud.common.entity.SysUser;
|
|
|
|
+import com.qmth.teachcloud.common.enums.mark.MarkProblemStatus;
|
|
|
|
+import com.qmth.teachcloud.common.service.MarkQuestionService;
|
|
|
|
+import com.qmth.teachcloud.common.service.MarkStudentService;
|
|
|
|
+import com.qmth.teachcloud.common.service.SysUserService;
|
|
|
|
+import com.qmth.teachcloud.common.util.ServletUtil;
|
|
import com.qmth.teachcloud.mark.entity.MarkProblemHistory;
|
|
import com.qmth.teachcloud.mark.entity.MarkProblemHistory;
|
|
|
|
+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.lock.LockService;
|
|
import com.qmth.teachcloud.mark.mapper.MarkProblemHistoryMapper;
|
|
import com.qmth.teachcloud.mark.mapper.MarkProblemHistoryMapper;
|
|
import com.qmth.teachcloud.mark.service.MarkProblemHistoryService;
|
|
import com.qmth.teachcloud.mark.service.MarkProblemHistoryService;
|
|
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
|
|
|
+import com.qmth.teachcloud.mark.service.MarkService;
|
|
|
|
+import com.qmth.teachcloud.mark.service.MarkTaskService;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
|
|
+import javax.annotation.Resource;
|
|
|
|
+import java.util.List;
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* <p>
|
|
* <p>
|
|
* 问题卷历史表 服务实现类
|
|
* 问题卷历史表 服务实现类
|
|
@@ -17,4 +37,75 @@ import org.springframework.stereotype.Service;
|
|
@Service
|
|
@Service
|
|
public class MarkProblemHistoryServiceImpl extends ServiceImpl<MarkProblemHistoryMapper, MarkProblemHistory> implements MarkProblemHistoryService {
|
|
public class MarkProblemHistoryServiceImpl extends ServiceImpl<MarkProblemHistoryMapper, MarkProblemHistory> implements MarkProblemHistoryService {
|
|
|
|
|
|
|
|
+ @Resource
|
|
|
|
+ private MarkStudentService markStudentService;
|
|
|
|
+ @Resource
|
|
|
|
+ private MarkQuestionService markQuestionService;
|
|
|
|
+ @Resource
|
|
|
|
+ private SysUserService sysUserService;
|
|
|
|
+ @Resource
|
|
|
|
+ private MarkTaskService markTaskService;
|
|
|
|
+ @Resource
|
|
|
|
+ private MarkService markService;
|
|
|
|
+ @Resource
|
|
|
|
+ private LockService lockService;
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public IPage<MarkProblemDto> pageProblem(Long examId, String paperNumber, Integer groupNumber, String problemType, String status, String secretNumber, Integer pageNumber, Integer pageSize) {
|
|
|
|
+ Page<MarkProblemDto> page = new Page<>(pageNumber, pageSize);
|
|
|
|
+ IPage<MarkProblemDto> markProblemDtoIPage = this.baseMapper.pageProblem(page, examId, paperNumber, groupNumber, problemType, status, secretNumber);
|
|
|
|
+ for (MarkProblemDto problemDto : markProblemDtoIPage.getRecords()) {
|
|
|
|
+ MarkStudent markStudent = markStudentService.getById(problemDto.getStudentId());
|
|
|
|
+ problemDto.setStudentName(markStudent.getStudentName());
|
|
|
|
+ problemDto.setStudentCode(markStudent.getStudentCode());
|
|
|
|
+ problemDto.setProblemTypeName(problemDto.getType().getName());
|
|
|
|
+ problemDto.setProblemStatusName(problemDto.getStatus().getName());
|
|
|
|
+ problemDto.setGroupQuestions(markQuestionService.assembleGroupQuestionsByExamIdAndPaperNumberAndNumber(examId, paperNumber, groupNumber));
|
|
|
|
+ if (problemDto.getUserId() != null) {
|
|
|
|
+ SysUser sysUser = sysUserService.getById(problemDto.getUserId());
|
|
|
|
+ problemDto.setUserLoginName(sysUser.getLoginName());
|
|
|
|
+ problemDto.setUserName(sysUser.getRealName());
|
|
|
|
+ }
|
|
|
|
+ if (problemDto.getUpdateUserId() != null) {
|
|
|
|
+ SysUser sysUser = sysUserService.getById(problemDto.getUpdateUserId());
|
|
|
|
+ problemDto.setUpdateUserLoginName(sysUser.getLoginName());
|
|
|
|
+ problemDto.setUpdateUserName(sysUser.getRealName());
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ return markProblemDtoIPage;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public void resetProblem(List<Long> taskIds) {
|
|
|
|
+ SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
|
|
|
|
+ for (Long taskId : taskIds) {
|
|
|
|
+ MarkTask markTask = markTaskService.getById(taskId);
|
|
|
|
+ if (markTask != null) {
|
|
|
|
+ try {
|
|
|
|
+ lockService.watch(LockType.EXAM_SUBJECT, markTask.getExamId(), markTask.getPaperNumber());
|
|
|
|
+ lockService.watch(LockType.GROUP, markTask.getExamId(), markTask.getPaperNumber(), markTask.getGroupNumber());
|
|
|
|
+ if (markTask.getStatus().equals(MarkTaskStatus.PROBLEM)) {
|
|
|
|
+ markService.rejectMarkTask(markTask, sysUser.getId());
|
|
|
|
+ }
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
+ log.error("back library error", e);
|
|
|
|
+ } finally {
|
|
|
|
+ lockService.unwatch(LockType.GROUP, markTask.getExamId(), markTask.getPaperNumber(), markTask.getGroupNumber());
|
|
|
|
+ lockService.unwatch(LockType.EXAM_SUBJECT, markTask.getExamId(), markTask.getPaperNumber());
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public void resetByMarkTaskId(Long id, MarkProblemStatus waiting, Long userId, MarkProblemStatus back, Long now) {
|
|
|
|
+ UpdateWrapper<MarkProblemHistory> updateWrapper = new UpdateWrapper<>();
|
|
|
|
+ updateWrapper.lambda().set(MarkProblemHistory::getUpdateUserId, userId)
|
|
|
|
+ .set(MarkProblemHistory::getStatus, back)
|
|
|
|
+ .set(MarkProblemHistory::getUpdateTime, now)
|
|
|
|
+ .eq(MarkProblemHistory::getId, id)
|
|
|
|
+ .eq(MarkProblemHistory::getStatus, waiting);
|
|
|
|
+ this.update(updateWrapper);
|
|
|
|
+ }
|
|
}
|
|
}
|