|
@@ -1,46 +1,17 @@
|
|
|
package com.qmth.teachcloud.mark.service.impl;
|
|
|
|
|
|
-import java.math.BigDecimal;
|
|
|
-import java.util.ArrayList;
|
|
|
-import java.util.Arrays;
|
|
|
-import java.util.Collections;
|
|
|
-import java.util.HashMap;
|
|
|
-import java.util.List;
|
|
|
-import java.util.Map;
|
|
|
-import java.util.concurrent.ConcurrentHashMap;
|
|
|
-
|
|
|
-import javax.annotation.Resource;
|
|
|
-
|
|
|
-import org.apache.commons.collections4.CollectionUtils;
|
|
|
-import org.slf4j.Logger;
|
|
|
-import org.slf4j.LoggerFactory;
|
|
|
-import org.springframework.stereotype.Service;
|
|
|
-import org.springframework.transaction.annotation.Transactional;
|
|
|
-
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
import com.qmth.teachcloud.common.entity.MarkQuestion;
|
|
|
import com.qmth.teachcloud.common.entity.SysUser;
|
|
|
import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
|
|
|
-import com.qmth.teachcloud.common.enums.mark.MarkArbitrateStatus;
|
|
|
-import com.qmth.teachcloud.common.enums.mark.MarkPaperStatus;
|
|
|
-import com.qmth.teachcloud.common.enums.mark.MarkProblemStatus;
|
|
|
-import com.qmth.teachcloud.common.enums.mark.MarkProblemType;
|
|
|
-import com.qmth.teachcloud.common.enums.mark.SubjectiveStatus;
|
|
|
+import com.qmth.teachcloud.common.enums.mark.*;
|
|
|
import com.qmth.teachcloud.mark.dto.mark.ScoreItem;
|
|
|
import com.qmth.teachcloud.mark.dto.mark.mark.MarkGroupDto;
|
|
|
import com.qmth.teachcloud.mark.dto.mark.mark.MarkSettingDto;
|
|
|
import com.qmth.teachcloud.mark.dto.mark.mark.MarkStatusDto;
|
|
|
import com.qmth.teachcloud.mark.dto.mark.mark.MarkTaskDto;
|
|
|
-import com.qmth.teachcloud.mark.entity.MarkArbitrateHistory;
|
|
|
-import com.qmth.teachcloud.mark.entity.MarkGroup;
|
|
|
-import com.qmth.teachcloud.mark.entity.MarkGroupStudent;
|
|
|
-import com.qmth.teachcloud.mark.entity.MarkHeaderTrack;
|
|
|
-import com.qmth.teachcloud.mark.entity.MarkPaper;
|
|
|
-import com.qmth.teachcloud.mark.entity.MarkStudent;
|
|
|
-import com.qmth.teachcloud.mark.entity.MarkSubjectiveScore;
|
|
|
-import com.qmth.teachcloud.mark.entity.MarkTask;
|
|
|
-import com.qmth.teachcloud.mark.entity.MarkUserGroup;
|
|
|
+import com.qmth.teachcloud.mark.entity.*;
|
|
|
import com.qmth.teachcloud.mark.enums.ExamType;
|
|
|
import com.qmth.teachcloud.mark.enums.LockType;
|
|
|
import com.qmth.teachcloud.mark.enums.MarkTaskStatus;
|
|
@@ -48,24 +19,21 @@ import com.qmth.teachcloud.mark.enums.ScorePolicy;
|
|
|
import com.qmth.teachcloud.mark.lock.LockService;
|
|
|
import com.qmth.teachcloud.mark.params.MarkHeaderGroupResult;
|
|
|
import com.qmth.teachcloud.mark.params.MarkResult;
|
|
|
-import com.qmth.teachcloud.mark.service.MarkArbitrateHistoryService;
|
|
|
-import com.qmth.teachcloud.mark.service.MarkGroupService;
|
|
|
-import com.qmth.teachcloud.mark.service.MarkGroupStudentService;
|
|
|
-import com.qmth.teachcloud.mark.service.MarkHeaderTrackService;
|
|
|
-import com.qmth.teachcloud.mark.service.MarkPaperService;
|
|
|
-import com.qmth.teachcloud.mark.service.MarkProblemHistoryService;
|
|
|
-import com.qmth.teachcloud.mark.service.MarkQuestionService;
|
|
|
-import com.qmth.teachcloud.mark.service.MarkService;
|
|
|
-import com.qmth.teachcloud.mark.service.MarkStudentService;
|
|
|
-import com.qmth.teachcloud.mark.service.MarkSubjectiveScoreService;
|
|
|
-import com.qmth.teachcloud.mark.service.MarkTaskService;
|
|
|
-import com.qmth.teachcloud.mark.service.MarkTrackService;
|
|
|
-import com.qmth.teachcloud.mark.service.MarkUserGroupService;
|
|
|
+import com.qmth.teachcloud.mark.service.*;
|
|
|
import com.qmth.teachcloud.mark.utils.BigDecimalUtils;
|
|
|
import com.qmth.teachcloud.mark.utils.TaskLock;
|
|
|
import com.qmth.teachcloud.mark.utils.TaskLockUtil;
|
|
|
-
|
|
|
import io.lettuce.core.GeoArgs.Sort;
|
|
|
+import org.apache.commons.collections4.CollectionUtils;
|
|
|
+import org.slf4j.Logger;
|
|
|
+import org.slf4j.LoggerFactory;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
+
|
|
|
+import javax.annotation.Resource;
|
|
|
+import java.math.BigDecimal;
|
|
|
+import java.util.*;
|
|
|
+import java.util.concurrent.ConcurrentHashMap;
|
|
|
|
|
|
@Service
|
|
|
public class MarkServiceImpl implements MarkService {
|
|
@@ -101,6 +69,10 @@ public class MarkServiceImpl implements MarkService {
|
|
|
@Resource
|
|
|
private MarkHeaderTrackService markHeaderTrackService;
|
|
|
@Resource
|
|
|
+ private MarkSpecialTagService markSpecialTagService;
|
|
|
+ @Resource
|
|
|
+ private MarkHeaderTagService markHeaderTagService;
|
|
|
+ @Resource
|
|
|
LockService lockService;
|
|
|
|
|
|
/**
|
|
@@ -165,19 +137,17 @@ public class MarkServiceImpl implements MarkService {
|
|
|
for (MarkTask markTask : markTaskList) {
|
|
|
Long studentId = markTask.getStudentId();
|
|
|
markTrackService.deleteByTaskId(markTask.getId());
|
|
|
-// specialTagDao.deleteByLibraryId(library.getId());
|
|
|
+ markSpecialTagService.deleteByTaskId(markTask.getId());
|
|
|
markTaskService.resetById(markTask.getId(), null, null, null, MarkTaskStatus.WAITING);
|
|
|
lockService.waitlock(LockType.STUDENT, markTask.getStudentId());
|
|
|
updateStudentGroupStatus(studentId, examId, paperNumber, groupNumber, SubjectiveStatus.UNMARK);
|
|
|
markStudentService.updateSubjectiveStatusAndScore(studentId, SubjectiveStatus.UNMARK, 0D, null);
|
|
|
-// inspectedService.cancelByStudent(library.getStudentId());
|
|
|
lockService.unlock(LockType.STUDENT, markTask.getStudentId());
|
|
|
}
|
|
|
markUserGroupService.resetById(markUserGroup.getId());
|
|
|
}
|
|
|
this.updateMarkedCount(examId, paperNumber, groupNumber);
|
|
|
releaseByMarkUserGroup(markUserGroup);
|
|
|
-// inspectHistoryService.deleteByExamIdAndSubjectCode(marker.getExamId(), marker.getSubjectCode());
|
|
|
}
|
|
|
|
|
|
@Override
|
|
@@ -300,10 +270,10 @@ public class MarkServiceImpl implements MarkService {
|
|
|
}
|
|
|
}
|
|
|
// 保存特殊标记
|
|
|
-// if (result.getSpecialTagList() != null && !result.isUnselective()) {
|
|
|
-// headerTagDao.deleteByStudentIdAndGroupNumber(history.getStudentId(), history.getGroupNumber());
|
|
|
-// headerTagDao.save(result.getHeaderTagList(history));
|
|
|
-// }
|
|
|
+ if (markResult.getSpecialTagList() != null) {
|
|
|
+ markHeaderTagService.deleteByStudentIdAndGroupNumber(markArbitrateHistory.getStudentId(), markArbitrateHistory.getGroupNumber());
|
|
|
+ markHeaderTagService.saveBatch(markResult.getHeaderTagList(markArbitrateHistory));
|
|
|
+ }
|
|
|
markArbitrateHistoryService.saveOrUpdate(markArbitrateHistory);
|
|
|
markTaskService.updateHeaderResult(markArbitrateHistory.getExamId(), markArbitrateHistory.getPaperNumber(), markArbitrateHistory.getGroupNumber(), markArbitrateHistory.getStudentId(), markArbitrateHistory.getUpdateUserId(), markArbitrateHistory.getTotalScore(), markArbitrateHistory.getScoreList(), markArbitrateHistory.getUpdateTime(), MarkTaskStatus.ARBITRATED);
|
|
|
updateMarkedCount(markArbitrateHistory.getExamId(), markArbitrateHistory.getPaperNumber(), markArbitrateHistory.getGroupNumber());
|
|
@@ -464,8 +434,8 @@ public class MarkServiceImpl implements MarkService {
|
|
|
public void deleteMarkTaskByStudent(MarkStudent student) {
|
|
|
// 正评相关数据
|
|
|
markTrackService.deleteByStudentId(student.getId());
|
|
|
-// specialTagDao.deleteByStudentId(student.getId());
|
|
|
-// headerTagDao.deleteByStudentId(student.getId());
|
|
|
+ markSpecialTagService.deleteByStudentId(student.getId());
|
|
|
+ markHeaderTagService.deleteByStudentIdAndGroupNumber(student.getId(), null);
|
|
|
markHeaderTrackService.deleteByStudentId(student.getId());
|
|
|
markArbitrateHistoryService.deleteByStudentId(student.getId());
|
|
|
markProblemHistoryService.deleteByStudentId(student.getId());
|
|
@@ -723,19 +693,19 @@ public class MarkServiceImpl implements MarkService {
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public void clear(Long userId, Long examId, String paperNumber,Integer groupNumber) {
|
|
|
- MarkUserGroup markUserGroup = markUserGroupService.getByExamIdAndPaperNumberAndGroupNumberAndUserId(userId, null, null, userId);
|
|
|
- TaskLock taskLock = TaskLockUtil.getFormalTask(getGroupKey(markUserGroup));
|
|
|
- taskLock.clear(markUserGroup.getId());
|
|
|
+ public void clear(Long userId, Long examId, String paperNumber, Integer groupNumber) {
|
|
|
+ MarkUserGroup markUserGroup = markUserGroupService.getByExamIdAndPaperNumberAndGroupNumberAndUserId(userId, null, null, userId);
|
|
|
+ TaskLock taskLock = TaskLockUtil.getFormalTask(getGroupKey(markUserGroup));
|
|
|
+ taskLock.clear(markUserGroup.getId());
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public void deleteMarkGroup(MarkGroup markGroup) {
|
|
|
// 正评相关数据
|
|
|
markTrackService.deleteByExamIdAndPaperNumberAndGroupNumber(markGroup.getExamId(), markGroup.getPaperNumber(), markGroup.getNumber());
|
|
|
-// specialTagDao.deleteByExamAndSubjectAndGroup(group.getExamId(), group.getSubjectCode(), group.getNumber());
|
|
|
+ markSpecialTagService.deleteByExamIdAndPaperNumberAndGroupNumber(markGroup.getExamId(), markGroup.getPaperNumber(), markGroup.getNumber());
|
|
|
markHeaderTrackService.deleteByExamIdAndPaperNumberAndGroupNumberAndStudentId(markGroup.getExamId(), markGroup.getPaperNumber(), markGroup.getNumber(), null);
|
|
|
-// headerTagDao.deleteByExamAndSubjectAndGroup(group.getExamId(), group.getSubjectCode(), group.getNumber());
|
|
|
+ markHeaderTagService.deleteByExamIdAndPaperNumberAndGroupNumber(markGroup.getExamId(), markGroup.getPaperNumber(), markGroup.getNumber());
|
|
|
markArbitrateHistoryService.deleteByExamIdAndPaperNumberAndGroupNumber(markGroup.getExamId(), markGroup.getPaperNumber(), markGroup.getNumber());
|
|
|
markProblemHistoryService.deleteByExamIdAndPaperNumberAndGroupNumber(markGroup.getExamId(), markGroup.getPaperNumber(), markGroup.getNumber());
|
|
|
markTaskService.deleteByExamIdAndPaperNumberAndGroupNumber(markGroup.getExamId(), markGroup.getPaperNumber(), markGroup.getNumber());
|
|
@@ -820,15 +790,15 @@ public class MarkServiceImpl implements MarkService {
|
|
|
return student.getExamId() + "_" + student.getPaperNumber();
|
|
|
}
|
|
|
|
|
|
- @Override
|
|
|
- public IPage<MarkTaskDto> getHistory(Long userId, int pageNumber, int pageSize, Sort sort, Long examId,
|
|
|
- String paperNumber, Integer groupNumber, String secretNumber, Double markerScore) {
|
|
|
- IPage<MarkTaskDto> list = markTaskService.listPageHistory(new Page<>(pageNumber,pageSize),sort,userId,examId,paperNumber,groupNumber,secretNumber,markerScore);
|
|
|
- for (MarkTaskDto dto : list.getRecords()) {
|
|
|
- }
|
|
|
- return list;
|
|
|
- }
|
|
|
-
|
|
|
+ @Override
|
|
|
+ public IPage<MarkTaskDto> getHistory(Long userId, int pageNumber, int pageSize, Sort sort, Long examId,
|
|
|
+ String paperNumber, Integer groupNumber, String secretNumber, Double markerScore) {
|
|
|
+ IPage<MarkTaskDto> list = markTaskService.listPageHistory(new Page<>(pageNumber, pageSize), sort, userId, examId, paperNumber, groupNumber, secretNumber, markerScore);
|
|
|
+ for (MarkTaskDto dto : list.getRecords()) {
|
|
|
+ }
|
|
|
+ return list;
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
@Override
|
|
|
public MarkTaskDto getTask(Long userId, Long examId, String paperNumber) {
|
|
@@ -836,9 +806,9 @@ public class MarkServiceImpl implements MarkService {
|
|
|
return null;
|
|
|
}
|
|
|
|
|
|
- @Override
|
|
|
- public String saveTask(Long userId, MarkResult markResult) {
|
|
|
- // TODO Auto-generated method stub
|
|
|
- return null;
|
|
|
- }
|
|
|
+ @Override
|
|
|
+ public String saveTask(Long userId, MarkResult markResult) {
|
|
|
+ // TODO Auto-generated method stub
|
|
|
+ return null;
|
|
|
+ }
|
|
|
}
|