|
@@ -9,6 +9,8 @@ import java.util.Map;
|
|
|
import java.util.Set;
|
|
|
|
|
|
import cn.com.qmth.scancentral.bean.answersave.*;
|
|
|
+import cn.com.qmth.scancentral.entity.*;
|
|
|
+import cn.com.qmth.scancentral.service.*;
|
|
|
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
|
|
import org.apache.commons.collections4.CollectionUtils;
|
|
|
import org.apache.commons.lang.math.RandomUtils;
|
|
@@ -34,15 +36,6 @@ import cn.com.qmth.scancentral.bean.BatchQueryDomain;
|
|
|
import cn.com.qmth.scancentral.bean.User;
|
|
|
import cn.com.qmth.scancentral.bean.WorkloadDomain;
|
|
|
import cn.com.qmth.scancentral.dao.BatchDao;
|
|
|
-import cn.com.qmth.scancentral.entity.AnswerCardEntity;
|
|
|
-import cn.com.qmth.scancentral.entity.BatchEntity;
|
|
|
-import cn.com.qmth.scancentral.entity.BatchPaperEntity;
|
|
|
-import cn.com.qmth.scancentral.entity.ExamEntity;
|
|
|
-import cn.com.qmth.scancentral.entity.PaperEntity;
|
|
|
-import cn.com.qmth.scancentral.entity.PaperPageEntity;
|
|
|
-import cn.com.qmth.scancentral.entity.ScannerEntity;
|
|
|
-import cn.com.qmth.scancentral.entity.StudentEntity;
|
|
|
-import cn.com.qmth.scancentral.entity.StudentPaperEntity;
|
|
|
import cn.com.qmth.scancentral.enums.BatchStatus;
|
|
|
import cn.com.qmth.scancentral.enums.CheckStatus;
|
|
|
import cn.com.qmth.scancentral.enums.LockType;
|
|
@@ -50,19 +43,6 @@ import cn.com.qmth.scancentral.enums.Role;
|
|
|
import cn.com.qmth.scancentral.enums.VerifyStatus;
|
|
|
import cn.com.qmth.scancentral.exception.NotFoundExceptions;
|
|
|
import cn.com.qmth.scancentral.exception.ParameterExceptions;
|
|
|
-import cn.com.qmth.scancentral.service.AnswerCardService;
|
|
|
-import cn.com.qmth.scancentral.service.AnswerCardSubjectService;
|
|
|
-import cn.com.qmth.scancentral.service.AssignedCheckHistoryService;
|
|
|
-import cn.com.qmth.scancentral.service.BatchPaperService;
|
|
|
-import cn.com.qmth.scancentral.service.BatchService;
|
|
|
-import cn.com.qmth.scancentral.service.ExamRoomService;
|
|
|
-import cn.com.qmth.scancentral.service.ExamService;
|
|
|
-import cn.com.qmth.scancentral.service.FilePropertyService;
|
|
|
-import cn.com.qmth.scancentral.service.FileService;
|
|
|
-import cn.com.qmth.scancentral.service.PaperPageService;
|
|
|
-import cn.com.qmth.scancentral.service.PaperService;
|
|
|
-import cn.com.qmth.scancentral.service.ScannerService;
|
|
|
-import cn.com.qmth.scancentral.service.StudentService;
|
|
|
import cn.com.qmth.scancentral.support.TaskLock;
|
|
|
import cn.com.qmth.scancentral.support.TaskLockUtil;
|
|
|
import cn.com.qmth.scancentral.util.PageUtil;
|
|
@@ -135,6 +115,15 @@ public class BatchServiceImpl extends ServiceImpl<BatchDao, BatchEntity> impleme
|
|
|
@Autowired
|
|
|
private ScannerService scannerService;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private StudentPaperService studentPaperService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private OmrGroupService omrGroupService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private OmrTaskService omrTaskService;
|
|
|
+
|
|
|
@Override
|
|
|
public BatchEntity checkBatchStatus(BatchEntity b) {
|
|
|
if (b == null) {
|
|
@@ -1027,6 +1016,9 @@ public class BatchServiceImpl extends ServiceImpl<BatchDao, BatchEntity> impleme
|
|
|
studentMap.put(examNumber,student);
|
|
|
}
|
|
|
|
|
|
+ List<OmrGroupEntity> gs = omrGroupService.findByExamIdAndSubjectCodeAndFixed(exam.getId(),
|
|
|
+ domain.getSubjectCode(),true);
|
|
|
+
|
|
|
for (String examNumber:studentMap.keySet()) {
|
|
|
AnswerPackageStudent answerPackageStudent = answerPackageStudentMap.get(examNumber);
|
|
|
StudentEntity student = studentMap.get(examNumber);
|
|
@@ -1061,7 +1053,26 @@ public class BatchServiceImpl extends ServiceImpl<BatchDao, BatchEntity> impleme
|
|
|
|| !exam.getEnableSyncVerify()) {
|
|
|
concurrentService.getReadWriteLock(LockType.STUDENT + "-" + student.getId()).writeLock().lock();
|
|
|
try {
|
|
|
- studentService.updateStudentAndPaper(user, student.getId(), studentPaperList);
|
|
|
+// studentService.updateStudentAndPaper(user, student.getId(), studentPaperList);
|
|
|
+ for (StudentPaperEntity studentPaper : studentPaperList) {
|
|
|
+ studentPaper.setStudentId(student.getId());
|
|
|
+ }
|
|
|
+ // 清空原有绑定关系
|
|
|
+ studentPaperService.removeByStudentId(student.getId());
|
|
|
+ // 保存绑定关系
|
|
|
+ studentPaperService.saveOrUpdateBatchByMultiId(studentPaperList);
|
|
|
+ // 更新考生状态
|
|
|
+ studentService.updateStudentByPaper(user, student.getId(), false);
|
|
|
+ //识别对照
|
|
|
+ for (OmrGroupEntity g : gs) {
|
|
|
+ concurrentService.getReadWriteLock(LockType.OMR_GROUP + "-" + g.getId()).readLock().lock();
|
|
|
+ omrTaskService.deleteByStudentIdAndGroupId(g.getId(), student.getId());
|
|
|
+ List<OmrTaskEntity> list = omrTaskService.buildTask(g, student.getId());
|
|
|
+ if (list != null && !list.isEmpty()) {
|
|
|
+ omrTaskService.saveBatch(list);
|
|
|
+ }
|
|
|
+ concurrentService.getReadWriteLock(LockType.OMR_GROUP + "-" + g.getId()).readLock().unlock();
|
|
|
+ }
|
|
|
studentService.updateAssignedCheckCount(student.getId(), true);
|
|
|
} finally {
|
|
|
concurrentService.getReadWriteLock(LockType.STUDENT + "-" + student.getId()).writeLock().unlock();
|
|
@@ -1069,6 +1080,12 @@ public class BatchServiceImpl extends ServiceImpl<BatchDao, BatchEntity> impleme
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+ for (OmrGroupEntity g : gs) {
|
|
|
+ concurrentService.getReadWriteLock(LockType.OMR_GROUP + "-" + g.getId()).readLock().lock();
|
|
|
+ omrGroupService.updateTotalCount(g.getId());
|
|
|
+ concurrentService.getReadWriteLock(LockType.OMR_GROUP + "-" + g.getId()).readLock().unlock();
|
|
|
+ }
|
|
|
+
|
|
|
this.batchFinish(batch.getId());
|
|
|
|
|
|
LambdaUpdateWrapper<BatchEntity> lw = new LambdaUpdateWrapper<>();
|