Преглед на файлове

新增识别对照任务随机获取

yin преди 3 месеца
родител
ревизия
e0006d0515

+ 9 - 2
distributed-print/src/main/java/com/qmth/distributed/print/api/mark/ScanOmrTaskController.java

@@ -42,11 +42,18 @@ public class ScanOmrTaskController extends BaseController {
     @Autowired
     private ScanOmrTaskService omrTaskService;
 
+    @ApiOperation(value = "随机识别对照任务获取")
+    @RequestMapping(value = "/getTask", method = RequestMethod.POST)
+    public Result getTask(@RequestParam Long examId) {
+        SysUser user = (SysUser) ServletUtil.getRequestUser();
+        return ResultUtil.ok(omrTaskService.getTask(examId,user.getId()));
+    }
+
     @ApiOperation(value = "识别对照任务获取")
     @RequestMapping(value = "/get", method = RequestMethod.POST)
-    public Result get(@RequestParam Long examId) {
+    public Result get(@RequestParam Long examId,@RequestParam Long studentId) {
         SysUser user = (SysUser) ServletUtil.getRequestUser();
-        return ResultUtil.ok(omrTaskService.getTask(examId,user.getId()));
+        return ResultUtil.ok(omrTaskService.getTask(examId,user.getId(),studentId));
     }
 
     @ApiOperation(value = "识别对照任务提交")

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

@@ -264,7 +264,7 @@ public interface MarkStudentService extends IService<MarkStudent> {
 
     UpdateTimeVo breachUpdate(Long studentId, Boolean breach);
 
-    boolean add(Long examId, String coursePaperId, String studentCode, String studentName, String paperType, Long basicStudentId);
+    UpdateTimeVo add(Long examId, String coursePaperId, String studentCode, String studentName, String paperType, Long basicStudentId);
 
     List<Long> findUnMarked(Page<Long> page, Long examId, String paperNumber, Long userId, Boolean classMark);
 }

+ 2 - 0
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/ScanOmrTaskService.java

@@ -54,4 +54,6 @@ public interface ScanOmrTaskService extends IService<ScanOmrTask> {
 	void releaseByTask(MarkStudent t);
 
 	boolean hasApplied(MarkStudent t, Long userId);
+
+	ScanOmrStudent getTask(Long examId, Long userId, Long studentId);
 }

+ 3 - 2
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/MarkStudentServiceImpl.java

@@ -2431,7 +2431,7 @@ public class MarkStudentServiceImpl extends ServiceImpl<MarkStudentMapper, MarkS
 
     @Override
     @Transactional
-    public boolean add(Long examId, String coursePaperId, String studentCode, String studentName, String paperType, Long basicStudentId) {
+    public UpdateTimeVo add(Long examId, String coursePaperId, String studentCode, String studentName, String paperType, Long basicStudentId) {
         SysUser user = (SysUser) ServletUtil.getRequestUser();
         MarkPaper markPaper = markPaperService.getByExamIdAndCoursePaperId(examId, coursePaperId);
         MarkStudent markStudent = new MarkStudent(SystemConstant.getDbUuid(), examId, basicStudentId, markPaper.getCourseId(), markPaper.getPaperNumber(), coursePaperId, markPaper.getSerialNumber(), paperType, studentCode, "", null, null, null, null, user.getId());
@@ -2441,7 +2441,8 @@ public class MarkStudentServiceImpl extends ServiceImpl<MarkStudentMapper, MarkS
                 markStudent.randomSecretNumber();
             }
         }
-        return this.saveOrUpdate(markStudent);
+        this.saveOrUpdate(markStudent);
+        return UpdateTimeVo.create();
     }
 
     @Override

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

@@ -376,6 +376,9 @@ public class ScanAnswerCardServiceImpl extends ServiceImpl<ScanAnswerCardMapper,
         if(old ==null ){
             throw new ParameterException("未找到卡格式信息");
         }
+        if (CardSource.CLIENT.equals(old.getSource())) {
+            throw new ParameterException("手工卡格式,无法复制");
+        }
         ScanAnswerCard card = new ScanAnswerCard();
         card.setId(SystemConstant.getDbUuid());
         card.setExamId(old.getExamId());
@@ -386,7 +389,7 @@ public class ScanAnswerCardServiceImpl extends ServiceImpl<ScanAnswerCardMapper,
         card.setSinglePage(old.getSinglePage());
         card.setRemark(old.getRemark());
         card.setDpi(old.getDpi());
-        card.setSource(CardSource.CLIENT);
+        card.setSource(CardSource.WEB);
         card.setNumber(findMaxCardNumberByExamId(examId) + 1);
         card.setNeedAdapte(false);
         card.setMd5(old.getMd5());

+ 39 - 0
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/ScanOmrTaskServiceImpl.java

@@ -417,6 +417,45 @@ public class ScanOmrTaskServiceImpl extends ServiceImpl<ScanOmrTaskMapper, ScanO
         return true;
     }
 
+    @Override
+    public ScanOmrStudent getTask(Long examId, Long userId,Long studentId) {
+        MarkStudentVo student = studentService.getMarkStudentVoByStudentId(studentId);
+        if (student == null) {
+            throw ExceptionResultEnum.ERROR.exception("没有识别对照任务");
+        }
+        QueryWrapper<ScanOmrTask> wrapper = new QueryWrapper<>();
+        LambdaQueryWrapper<ScanOmrTask> lw = wrapper.lambda();
+        lw.eq(ScanOmrTask::getStudentId, studentId);
+        List<ScanOmrTask> list = baseMapper.selectList(wrapper);
+        if (list.isEmpty()) {
+            throw ExceptionResultEnum.ERROR.exception("没有识别对照任务");
+        }
+        if(list.get(0).getStatus().equals(OmrTaskStatus.WAITING)&& this.apply(student, userId)){
+            ScanOmrStudent scanOmrStudent = new ScanOmrStudent();
+            scanOmrStudent.setCardNumber(student.getCardNumber());
+            scanOmrStudent.setStudentCode(student.getStudentCode());
+            scanOmrStudent.setStudentName(student.getStudentName());
+            scanOmrStudent.setCourseCode(student.getCourseCode());
+            scanOmrStudent.setCourseName(student.getCourseName());
+            scanOmrStudent.setCoursePaperId(student.getCoursePaperId());
+            scanOmrStudent.setCoursePaperNumber(student.getPaperNumber());
+            scanOmrStudent.setTasks(toTaskVo(list));
+            return scanOmrStudent;
+        } else if(list.get(0).getStatus().equals(OmrTaskStatus.PROCESSED)&&list.get(0).getUserId().equals(userId)){
+            ScanOmrStudent scanOmrStudent = new ScanOmrStudent();
+            scanOmrStudent.setCardNumber(student.getCardNumber());
+            scanOmrStudent.setStudentCode(student.getStudentCode());
+            scanOmrStudent.setStudentName(student.getStudentName());
+            scanOmrStudent.setCourseCode(student.getCourseCode());
+            scanOmrStudent.setCourseName(student.getCourseName());
+            scanOmrStudent.setCoursePaperId(student.getCoursePaperId());
+            scanOmrStudent.setCoursePaperNumber(student.getPaperNumber());
+            scanOmrStudent.setTasks(toTaskVo(list));
+            return scanOmrStudent;
+        }else{
+            throw ExceptionResultEnum.ERROR.exception("没有识别对照任务");
+        }
+    }
     @Override
     public ScanOmrStudent getTask(Long examId, Long userId) {
         Long studentId = findWaitingTask(examId,userId);