yin vor 7 Monaten
Ursprung
Commit
07917f7751

+ 17 - 3
src/main/java/cn/com/qmth/scancentral/controller/scan/ScanBatchController.java

@@ -2,6 +2,10 @@ package cn.com.qmth.scancentral.controller.scan;
 
 import cn.com.qmth.scancentral.bean.answersave.AnswerPackageDomain;
 import cn.com.qmth.scancentral.bean.answersave.AnswerPackageSave;
+import cn.com.qmth.scancentral.bean.answersave.AnswerPackageStudent;
+import cn.com.qmth.scancentral.entity.BatchEntity;
+import cn.com.qmth.scancentral.entity.StudentEntity;
+import cn.com.qmth.scancentral.entity.StudentPaperEntity;
 import cn.com.qmth.scancentral.enums.LockType;
 import com.qmth.boot.core.concurrent.service.ConcurrentService;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -26,6 +30,9 @@ import cn.com.qmth.scancentral.vo.batch.BatchCreateVo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 
+import java.util.List;
+import java.util.Map;
+
 @RestController
 @Api(tags = "扫描功能-答题卡接口")
 @RequestMapping(ApiConstant.DEFAULT_URI_PREFIX + "/scan/batch")
@@ -55,9 +62,16 @@ public class ScanBatchController extends BaseController {
     public AnswerPackageSave batchPackageSave(@Validated @RequestBody AnswerPackageDomain domain) {
         User user = getAccessUser();
         concurrentService.getReadWriteLock(LockType.BATCH + "-" + domain.getBatchId()).writeLock().lock();
-        AnswerPackageSave result = batchService.batchPackageSave(domain, user);
-        concurrentService.getReadWriteLock(LockType.BATCH + "-" + domain.getBatchId()).writeLock().unlock();
-        return result;
+        BatchEntity batch = batchService.checkBatchStatus(batchService.getById(domain.getBatchId()));
+        try{
+            Map<String, StudentEntity> studentMap = batchService.validate(domain, user);
+            Map<String, List<StudentPaperEntity>> studentPaperMap = batchService.savePaperBatch(batch,user,domain,studentMap);
+            batchService.deleteRelation(studentMap);
+            batchService.saveAndUpdateStudent(batch,user,studentMap,studentPaperMap);
+            return AnswerPackageSave.create(studentMap.size(),batch.getStatus());
+        }finally {
+            concurrentService.getReadWriteLock(LockType.BATCH + "-" + domain.getBatchId()).writeLock().unlock();
+        }
     }
 
 //    @ApiOperation(value = "答题卡扫描历史标记/取消异常")

+ 2 - 2
src/main/java/cn/com/qmth/scancentral/service/BatchService.java

@@ -119,9 +119,9 @@ public interface BatchService extends IService<BatchEntity> {
 
     List<BatchStudentSimpleVo> studentList(Long batchId);
 
-    AnswerPackageSave batchPackageSave(AnswerPackageDomain domain, User user);
+    Map<String,StudentEntity> validate(AnswerPackageDomain domain, User user);
 
-    Map<String, List<StudentPaperEntity>> savePaperBatch(BatchEntity batch, User user,Integer cardNumber,Map<String, AnswerPackageStudent> answerPackageStudentMap, Map<String,StudentEntity> studentMap);
+    Map<String, List<StudentPaperEntity>> savePaperBatch(BatchEntity batch, User user,AnswerPackageDomain domain, Map<String,StudentEntity> studentMap);
 
     void deleteRelation(Map<String, StudentEntity> studentMap);
 

+ 6 - 14
src/main/java/cn/com/qmth/scancentral/service/impl/BatchServiceImpl.java

@@ -976,8 +976,8 @@ public class BatchServiceImpl extends ServiceImpl<BatchDao, BatchEntity> impleme
     }
 
     @Override
-    public AnswerPackageSave batchPackageSave(AnswerPackageDomain domain, User user) {
-        BatchEntity batch = checkBatchStatus(getById(domain.getBatchId()));
+    public Map<String,StudentEntity>  validate(AnswerPackageDomain domain, User user) {
+        BatchEntity batch = getById(domain.getBatchId());
         ExamEntity exam = examService.getById(batch.getExamId());
         if (exam == null) {
             throw ParameterExceptions.EXAM_NOT_FOUND;
@@ -1003,8 +1003,6 @@ public class BatchServiceImpl extends ServiceImpl<BatchDao, BatchEntity> impleme
             throw new ParameterException("该批次考生数量与卷袋考生数量不一致");
         }
 
-        Map<String,AnswerPackageStudent> answerPackageStudentMap = new HashMap<>();
-        Integer assignedCount = 0;
         for (AnswerPackageStudent packageStudent:domain.getStudents()) {
             String examNumber = packageStudent.getExamNumber();
             StudentEntity student = studentMap.get(examNumber);
@@ -1019,22 +1017,16 @@ public class BatchServiceImpl extends ServiceImpl<BatchDao, BatchEntity> impleme
             if (!exam.getAllowUnexistPaper() && packageStudent.getPapers().size() != answerCard.getPaperCount()) {
                 throw new ParameterException("卡格式张数不一致");
             }
-            answerPackageStudentMap.put(examNumber,packageStudent);
         }
-        List<OmrGroupEntity> gs = omrGroupService.findByExamIdAndSubjectCodeAndFixed(exam.getId(),
-                domain.getSubjectCode(),true);
-
-        Map<String,List<StudentPaperEntity>> studentPaperMap = this.savePaperBatch(batch,user,answerCard.getNumber(),answerPackageStudentMap,studentMap);
-        this.deleteRelation(studentMap);
-        this.saveAndUpdateStudent(batch,user,studentMap,studentPaperMap);
 
-        return AnswerPackageSave.create(studentMap.size(),batch.getStatus());
+        return studentMap;
     }
 
     @Override
     @Transactional
-    public Map<String, List<StudentPaperEntity>> savePaperBatch(BatchEntity batch, User user,Integer cardNumber, Map<String, AnswerPackageStudent> answerPackageStudentMap, Map<String, StudentEntity> studentMap){
+    public Map<String, List<StudentPaperEntity>> savePaperBatch(BatchEntity batch, User user,AnswerPackageDomain domain, Map<String, StudentEntity> studentMap){
         Map<String, List<StudentPaperEntity>> result = new HashMap<>();
+        Map<String, AnswerPackageStudent> answerPackageStudentMap = domain.getStudents().stream().collect(Collectors.toMap(e->e.getExamNumber(), Function.identity()));
         for (String examNumber:studentMap.keySet()) {
             AnswerPackageStudent answerPackageStudent = answerPackageStudentMap.get(examNumber);
             StudentEntity student = studentMap.get(examNumber);
@@ -1044,7 +1036,7 @@ public class BatchServiceImpl extends ServiceImpl<BatchDao, BatchEntity> impleme
                 PaperEntity paper = findOrCreatePaper(batch, student, paperNumber, user);
                 // 设置paper属性
                 paper.setExamId(batch.getExamId());
-                paper.setCardNumber(cardNumber);
+                paper.setCardNumber(domain.getCardNumber());
                 paper.setNumber(paperNumber);
                 paper.setMismatch(false);
                 paper.setQuestionFilled(false);