|
@@ -8,6 +8,8 @@ import java.util.concurrent.ConcurrentHashMap;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
import cn.com.qmth.stmms.biz.config.service.impl.SystemCache;
|
|
|
+import cn.com.qmth.stmms.biz.user.model.User;
|
|
|
+import cn.com.qmth.stmms.biz.user.service.UserService;
|
|
|
import org.apache.commons.lang.StringUtils;
|
|
|
import org.slf4j.Logger;
|
|
|
import org.slf4j.LoggerFactory;
|
|
@@ -129,6 +131,9 @@ public class MarkServiceImpl implements MarkService {
|
|
|
@Autowired
|
|
|
private ReportSubjectService reportSubjectService;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private UserService userService;
|
|
|
+
|
|
|
/**
|
|
|
* 某个评卷分组已申请的评卷任务数量
|
|
|
*
|
|
@@ -449,12 +454,16 @@ public class MarkServiceImpl implements MarkService {
|
|
|
* - 评卷员
|
|
|
*/
|
|
|
@Override
|
|
|
- @Transactional
|
|
|
public void resetMarker(Marker marker) {
|
|
|
MarkGroup group = groupDao.findOne(marker.getExamId(), marker.getSubjectCode(), marker.getGroupNumber());
|
|
|
if (group == null || !markerDao.exists(marker.getId())) {
|
|
|
return;
|
|
|
}
|
|
|
+ User user = userService.findById(marker.getUserId());
|
|
|
+ user.refreshAccessToken();
|
|
|
+ userService.save(user);
|
|
|
+ releaseByMarker(marker);
|
|
|
+
|
|
|
if (group.getStatus() == MarkStatus.FORMAL) {
|
|
|
// 仲裁和等待仲裁的任务不被重置
|
|
|
// 只选取评卷完成状态的记录重新检查
|
|
@@ -464,15 +473,7 @@ public class MarkServiceImpl implements MarkService {
|
|
|
for (MarkLibrary library : list) {
|
|
|
lockService.waitlock(LockType.STUDENT, library.getStudentId());
|
|
|
try {
|
|
|
- trackDao.deleteByLibraryId(library.getId());
|
|
|
- specialTagDao.deleteByLibraryId(library.getId());
|
|
|
- libraryDao.resetById(library.getId(), null, null, null, null, LibraryStatus.WAITING,
|
|
|
- library.getStatus());
|
|
|
- updateStudentGroupStatus(library.getStudentId(), library.getExamId(), library.getSubjectCode(),
|
|
|
- library.getGroupNumber(), SubjectiveStatus.UNMARK);
|
|
|
- studentService.updateSubjectiveStatusAndScore(library.getStudentId(), SubjectiveStatus.UNMARK, 0,
|
|
|
- null);
|
|
|
- inspectedService.clearByStudent(library.getStudentId());
|
|
|
+ resetLibrary(library);
|
|
|
} finally {
|
|
|
lockService.unlock(LockType.STUDENT, library.getStudentId());
|
|
|
}
|
|
@@ -490,14 +491,31 @@ public class MarkServiceImpl implements MarkService {
|
|
|
}
|
|
|
trialTagDao.deleteByMarkerId(marker.getId());
|
|
|
trialTrackDao.deleteByMarkerId(marker.getId());
|
|
|
- trialLibraryDao.resetByMarkerId(marker.getId());
|
|
|
+ if (TrialMode.EXCLUSIVE.equals(systemCache.getTrialMode())) {
|
|
|
+ trialLibraryDao.resetByMarkerIdButMarkerId(marker.getId());
|
|
|
+ }else{
|
|
|
+ trialLibraryDao.resetByMarkerId(marker.getId());
|
|
|
+ }
|
|
|
}
|
|
|
updateMarkedCount(group);
|
|
|
- releaseByMarker(marker);
|
|
|
// inspectHistoryService.deleteByExamIdAndSubjectCode(marker.getExamId(),
|
|
|
// marker.getSubjectCode());
|
|
|
}
|
|
|
|
|
|
+ @Transactional
|
|
|
+ @Override
|
|
|
+ public void resetLibrary(MarkLibrary library) {
|
|
|
+ trackDao.deleteByLibraryId(library.getId());
|
|
|
+ specialTagDao.deleteByLibraryId(library.getId());
|
|
|
+ libraryDao.resetById(library.getId(), null, null, null, null, LibraryStatus.WAITING,
|
|
|
+ library.getStatus());
|
|
|
+ updateStudentGroupStatus(library.getStudentId(), library.getExamId(), library.getSubjectCode(),
|
|
|
+ library.getGroupNumber(), SubjectiveStatus.UNMARK);
|
|
|
+ studentService.updateSubjectiveStatusAndScore(library.getStudentId(), SubjectiveStatus.UNMARK, 0,
|
|
|
+ null);
|
|
|
+ inspectedService.clearByStudent(library.getStudentId());
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 根据考生删除评卷任务
|
|
|
*
|
|
@@ -923,7 +941,11 @@ public class MarkServiceImpl implements MarkService {
|
|
|
@Transactional
|
|
|
public boolean resetLibrary(TrialLibrary library) {
|
|
|
if (library != null) {
|
|
|
- trialLibraryDao.resetById(library.getId());
|
|
|
+ if (TrialMode.EXCLUSIVE.equals(systemCache.getTrialMode())) {
|
|
|
+ trialLibraryDao.resetByIdButMarkerId(library.getId());
|
|
|
+ }else{
|
|
|
+ trialLibraryDao.resetById(library.getId());
|
|
|
+ }
|
|
|
trialTrackDao.deleteByLibraryId(library.getId());
|
|
|
trialTagDao.deleteByLibraryId(library.getId());
|
|
|
return true;
|
|
@@ -1444,8 +1466,13 @@ public class MarkServiceImpl implements MarkService {
|
|
|
trialTrackDao.deleteByExamIdAndSubjectCodeAndGroupNumber(group.getExamId(), group.getSubjectCode(),
|
|
|
group.getNumber());
|
|
|
trialTagDao.deleteByExamAndSubjectAndGroup(group.getExamId(), group.getSubjectCode(), group.getNumber());
|
|
|
- trialLibraryDao.resetByExamIdAndSubjectCodeAndGroupNumber(group.getExamId(), group.getSubjectCode(),
|
|
|
- group.getNumber());
|
|
|
+ if (TrialMode.EXCLUSIVE.equals(systemCache.getTrialMode())) {
|
|
|
+ trialLibraryDao.resetByExamIdAndSubjectCodeAndGroupNumberButMarkerId(group.getExamId(), group.getSubjectCode(),
|
|
|
+ group.getNumber());
|
|
|
+ }else{
|
|
|
+ trialLibraryDao.resetByExamIdAndSubjectCodeAndGroupNumber(group.getExamId(), group.getSubjectCode(),
|
|
|
+ group.getNumber());
|
|
|
+ }
|
|
|
}
|
|
|
markerDao.resetByExamIdAndSubjectCodeAndGroupNumber(group.getExamId(), group.getSubjectCode(),
|
|
|
group.getNumber());
|