Jelajahi Sumber

add. 扫描详情编辑

caozixuan 8 bulan lalu
induk
melakukan
0c8e2c467b

+ 1 - 0
distributed-print/src/main/java/com/qmth/distributed/print/api/mark/ScanAnswerController.java

@@ -91,6 +91,7 @@ public class ScanAnswerController extends BaseController {
     @ApiOperation(value = "修改答题卡识别结果")
     @RequestMapping(value = "omr/edit", method = RequestMethod.POST)
     public UpdateTimeVo omrEdit(@Validated @RequestBody OmrEditDomain domain) {
+        System.out.println(JSON.toJSONString(domain));
         validMarkPaperForScan(domain.getExamId(), domain.getCoursePaperId());
         SysUser user = (SysUser) ServletUtil.getRequestUser();
         return markStudentService.omrEdit(user.getId(), domain);

+ 10 - 0
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/bean/omredit/OmrEditPage.java

@@ -6,6 +6,7 @@ import javax.validation.constraints.NotNull;
 
 import com.qmth.teachcloud.mark.bean.ArrayResult;
 import com.qmth.teachcloud.mark.bean.BoolResult;
+import com.qmth.teachcloud.mark.bean.StringResult;
 
 public class OmrEditPage {
 
@@ -18,6 +19,8 @@ public class OmrEditPage {
 
     private BoolResult breach;
 
+    private StringResult paperType;
+
 
     private ArrayResult question;
 
@@ -46,6 +49,13 @@ public class OmrEditPage {
         this.breach = breach;
     }
 
+    public StringResult getPaperType() {
+        return paperType;
+    }
+
+    public void setPaperType(StringResult paperType) {
+        this.paperType = paperType;
+    }
 
     public ArrayResult getQuestion() {
         return question;

+ 3 - 0
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/bean/omredit/OmrEditPaper.java

@@ -45,6 +45,9 @@ public class OmrEditPaper {
                 if (pageEdit.getBreach() != null) {
                     page.setBreach(pageEdit.getBreach());
                 }
+                if (pageEdit.getPaperType() != null){
+                    page.setPaperType(pageEdit.getPaperType());
+                }
                 if (pageEdit.getQuestion() != null) {
                     page.setQuestion(pageEdit.getQuestion());
                 }

+ 7 - 1
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/MarkStudentService.java

@@ -104,8 +104,13 @@ public interface MarkStudentService extends IService<MarkStudent> {
 
     /**
      * 根据考生当前绑定的paper刷新考生状态,需要在外部调用处对考生上锁
+     *
+     * @param userId        userId
+     * @param studentId     studentId
+     * @param updateOmrTask updateOmrTask
+     * @param omrEdit       是否是'修改答题卡识别结果'调用
      */
-    void updateStudentByPaper(@NotNull Long userId, @NotNull Long studentId, @NotNull boolean updateOmrTask);
+    void updateStudentByPaper(@NotNull Long userId, @NotNull Long studentId, @NotNull boolean updateOmrTask, @NotNull boolean omrEdit);
 
     MarkStudent findByExamIdAndCoursePaperIdAndStudentCode(Long examId, String coursePaperId, String studentCode);
 
@@ -144,6 +149,7 @@ public interface MarkStudentService extends IService<MarkStudent> {
     UpdateTimeVo omrEdit(Long userId, OmrEditDomain domain);
 
     long countByExamIdAndPaperNumber(Long examId, String paperNumber, String paperType);
+
     long countByExamIdAndPaperNumberAndSerialNumber(Long examId, String paperNumber, Integer serialNumber);
 
     AbsentManualUpdateVo absentManualUpdate(Long examId, String coursePaperId, String studentCode, ScanStatus status);

+ 15 - 4
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/MarkStudentServiceImpl.java

@@ -532,7 +532,7 @@ public class MarkStudentServiceImpl extends ServiceImpl<MarkStudentMapper, MarkS
      */
     @Override
     @Transactional
-    public void updateStudentByPaper(@NotNull Long userId, @NotNull Long studentId, @NotNull boolean updateOmrTask) {
+    public void updateStudentByPaper(@NotNull Long userId, @NotNull Long studentId, @NotNull boolean updateOmrTask, @NotNull boolean omrEdit) {
         MarkStudent student = this.getById(studentId);
         if (student == null) {
             throw new ParameterException("找不到对应的考生");
@@ -563,7 +563,8 @@ public class MarkStudentServiceImpl extends ServiceImpl<MarkStudentMapper, MarkS
             if (studentPaper.getPaperIndex() == 1) {
                 // 根据识别结果更新考生属性
                 ScanPaperPage page = scanPaperPageService.findPaperIdAndIndex(paper.getId(), 1);
-                student.setOmrAbsent(page.getAbsent() == null ? false : page.getAbsent().getResult());
+                student.setOmrAbsent(page.getAbsent() != null && page.getAbsent().getResult());
+                student.setOmrBreach(page.getBreach() != null && page.getBreach().getResult());
                 student.setOmrAbsentChecked(false);
                 if (student.getOmrAbsent()) {
                     student.setObjectiveScore(null);
@@ -634,6 +635,16 @@ public class MarkStudentServiceImpl extends ServiceImpl<MarkStudentMapper, MarkS
         } else {
             student.setScanStatus(ScanStatus.UNEXIST);
         }
+        if (omrEdit) {
+            boolean absent = student.getOmrAbsent();
+            student.setAbsent(absent);
+            student.setBreach(student.getOmrBreach());
+            if (absent) {
+                // 缺考的缺考检查改为已处理
+                student.setOmrAbsentChecked(true);
+            }
+            student.setPaperTypeCheckStatus(PaperTypeCheckStatus.PROCESSED);
+        }
         // student.setUpdaterId(userId);
         // student.setUpdateTime(System.currentTimeMillis());
         this.saveOrUpdate(student);
@@ -884,7 +895,7 @@ public class MarkStudentServiceImpl extends ServiceImpl<MarkStudentMapper, MarkS
             studentPaperService.saveOrUpdateBatch(studentPaperList);
         }
         // 更新考生状态
-        updateStudentByPaper(user.getId(), id, true);
+        updateStudentByPaper(user.getId(), id, true, false);
     }
 
     @Override
@@ -1048,7 +1059,7 @@ public class MarkStudentServiceImpl extends ServiceImpl<MarkStudentMapper, MarkS
                 }
                 scanPaperService.savePaperAndPages(paperEntity, pages);
             }
-            updateStudentByPaper(userId, student.getId(), true);
+            updateStudentByPaper(userId, student.getId(), true, true);
             return UpdateTimeVo.create();
         } finally {
             concurrentService.getReadWriteLock(LockType.STUDENT + "-" + student.getId()).writeLock().unlock();

+ 1 - 1
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/ScanRefixBatchServiceImpl.java

@@ -106,7 +106,7 @@ public class ScanRefixBatchServiceImpl extends ServiceImpl<ScanRefixBatchMapper,
 //            if (!student.getCardNumber().equals(answerCard.getNumber())) {
 //                markService.deleteMarkTaskByStudent(student);
 //            }
-            studentService.updateStudentByPaper(userId, student.getId(), true);
+            studentService.updateStudentByPaper(userId, student.getId(), true, false);
             return AnswerRefixVo.create();
         } finally {
             concurrentService.getReadWriteLock(LockType.STUDENT + "-" + student.getId()).writeLock().unlock();