Ver Fonte

omr待处理数

xiatian há 8 meses atrás
pai
commit
bf3d75eba6

+ 19 - 3
src/main/java/cn/com/qmth/scancentral/controller/scan/ScanOmrController.java

@@ -6,7 +6,11 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
 
 import com.qmth.boot.api.annotation.Aac;
 import com.qmth.boot.api.constant.ApiConstant;
@@ -15,7 +19,9 @@ import cn.com.qmth.scancentral.bean.User;
 import cn.com.qmth.scancentral.controller.BaseController;
 import cn.com.qmth.scancentral.service.OmrGroupService;
 import cn.com.qmth.scancentral.service.OmrTaskService;
+import cn.com.qmth.scancentral.service.SubjectService;
 import cn.com.qmth.scancentral.vo.OmrGroupVo;
+import cn.com.qmth.scancentral.vo.omr.OmrSubjectVo;
 import cn.com.qmth.scancentral.vo.task.TaskResultVo;
 import cn.com.qmth.scancentral.vo.task.TaskSaveVo;
 import cn.com.qmth.scancentral.vo.task.TaskStatusVo;
@@ -33,13 +39,23 @@ public class ScanOmrController extends BaseController {
 
     @Autowired
     private OmrTaskService omrTaskService;
+
     @Autowired
     private OmrGroupService groupService;
 
+    @Autowired
+    private SubjectService subjectService;
+
+    @ApiOperation(value = "科目列表")
+    @RequestMapping(value = "subject/list", method = RequestMethod.POST)
+    public List<OmrSubjectVo> subjectList(@RequestParam Long examId) {
+        return subjectService.listByExamIdForOmr(examId);
+    }
+
     @ApiOperation(value = "识别对照分组获取")
     @RequestMapping(value = "/group/list", method = RequestMethod.POST)
     public List<OmrGroupVo> groupList(@RequestParam Long examId, @RequestParam String subjectCode) {
-        return groupService.listByExamIdAndSubjectCode(examId,subjectCode);
+        return groupService.listByExamIdAndSubjectCode(examId, subjectCode);
     }
 
     @ApiOperation(value = "识别对照任务获取")
@@ -74,7 +90,7 @@ public class ScanOmrController extends BaseController {
     @ApiOperation(value = "识别对照任务历史")
     @RequestMapping(value = "/task/history", method = RequestMethod.POST)
     public TaskVo history(@RequestParam Long groupId, @RequestParam(required = false) Long id,
-                          @RequestParam(required = false) Boolean next) {
+            @RequestParam(required = false) Boolean next) {
         User user = getAccessUser();
         return omrTaskService.history(groupId, id, user.getAccount(), next);
     }

+ 3 - 0
src/main/java/cn/com/qmth/scancentral/service/SubjectService.java

@@ -10,6 +10,7 @@ import cn.com.qmth.scancentral.bean.User;
 import cn.com.qmth.scancentral.entity.SubjectEntity;
 import cn.com.qmth.scancentral.vo.SubjectConfigVo;
 import cn.com.qmth.scancentral.vo.examinfo.SubjectConfig;
+import cn.com.qmth.scancentral.vo.omr.OmrSubjectVo;
 import cn.com.qmth.scancentral.vo.subject.DataExportTaskVo;
 import cn.com.qmth.scancentral.vo.subject.ScanProgressVo;
 import cn.com.qmth.scancentral.vo.subject.SubjectBreachVo;
@@ -46,4 +47,6 @@ public interface SubjectService extends IMppService<SubjectEntity> {
 
     void initSubject(Long examId);
 
+    List<OmrSubjectVo> listByExamIdForOmr(Long examId);
+
 }

+ 12 - 10
src/main/java/cn/com/qmth/scancentral/service/impl/OmrGroupServiceImpl.java

@@ -59,6 +59,9 @@ public class OmrGroupServiceImpl extends ServiceImpl<OmrGroupDao, OmrGroupEntity
     @Autowired
     private SubjectService subjectService;
 
+    @Autowired
+    private OmrTaskService omrTaskService;
+
     @Transactional
     @Override
     public void deleteById(Long id) {
@@ -133,12 +136,10 @@ public class OmrGroupServiceImpl extends ServiceImpl<OmrGroupDao, OmrGroupEntity
             omrGroup.setReseting(
                     !concurrentService.getSemaphore(LockType.OMR_GROUP_RESET + "-" + omrGroup.getId()).isAvailable());
 
-            omrGroup.setFinishCount(
-                    taskService.getCountByGroupAndStatus(omrGroup.getId(), TaskStatus.PROCESSED));
+            omrGroup.setFinishCount(taskService.getCountByGroupAndStatus(omrGroup.getId(), TaskStatus.PROCESSED));
             omrGroup.setUnarbitrateCount(
                     taskService.getCountByGroupAndStatus(omrGroup.getId(), TaskStatus.WAIT_ARBITRATE));
-            omrGroup.setArbitratedCount(
-                    taskService.getCountByGroupAndStatus(omrGroup.getId(), TaskStatus.ARBITRATED));
+            omrGroup.setArbitratedCount(taskService.getCountByGroupAndStatus(omrGroup.getId(), TaskStatus.ARBITRATED));
         }
 
         return PageUtil.of(page);
@@ -157,8 +158,7 @@ public class OmrGroupServiceImpl extends ServiceImpl<OmrGroupDao, OmrGroupEntity
         if (group.getTotalCount() == 0) {
             throw new StatusException("分组下没有任务,无法切换");
         }
-        Integer finishCount = taskService.getCountByGroupAndStatus(id, TaskStatus.PROCESSED,
-                TaskStatus.ARBITRATED);
+        Integer finishCount = taskService.getCountByGroupAndStatus(id, TaskStatus.PROCESSED, TaskStatus.ARBITRATED);
         if (group.getTotalCount() - finishCount != 0) {
             throw new StatusException("识别对照任务未完成,无法切换");
         }
@@ -184,7 +184,7 @@ public class OmrGroupServiceImpl extends ServiceImpl<OmrGroupDao, OmrGroupEntity
 
         for (OmrCondition omrCondition : conditions) {
             // if (ConditionType.FILL_SUSPECT.equals(omrCondition.getCode())) {
-            //     throw new ParameterException("识别对照条件不能重复");
+            // throw new ParameterException("识别对照条件不能重复");
             // }
             if (ConditionType.QUESTION_SINGLE_BLANK.equals(omrCondition.getCode())
                     || ConditionType.QUESTION_MULTI_BLANK.equals(omrCondition.getCode())
@@ -216,7 +216,8 @@ public class OmrGroupServiceImpl extends ServiceImpl<OmrGroupDao, OmrGroupEntity
                 group.setUpdateTime(System.currentTimeMillis());
                 this.saveOrUpdate(group);
 
-                log.info("修改识别对照任务分组!examId:{} subjectCode:{} id:{}", group.getExamId(), group.getSubjectCode(), group.getId());
+                log.info("修改识别对照任务分组!examId:{} subjectCode:{} id:{}", group.getExamId(), group.getSubjectCode(),
+                        group.getId());
                 concurrentService.getLock(LockType.OMR_GROUP + "-" + vo.getId()).unlock();
             } else {
                 throw new ReentrantException("该分组数据操作繁忙,请稍后重试");
@@ -234,7 +235,8 @@ public class OmrGroupServiceImpl extends ServiceImpl<OmrGroupDao, OmrGroupEntity
             group.setCreateTime(System.currentTimeMillis());
             group.setUpdateTime(System.currentTimeMillis());
             this.save(group);
-            log.info("新增识别对照任务分组!examId:{} subjectCode:{} id:{}", group.getExamId(), group.getSubjectCode(), group.getId());
+            log.info("新增识别对照任务分组!examId:{} subjectCode:{} id:{}", group.getExamId(), group.getSubjectCode(),
+                    group.getId());
         }
     }
 
@@ -357,7 +359,7 @@ public class OmrGroupServiceImpl extends ServiceImpl<OmrGroupDao, OmrGroupEntity
 
             groupVo.setStage(omrGroup.getStage());
             groupVo.setFixed(omrGroup.getFixed());
-
+            groupVo.setTodoCount(omrTaskService.getCountByGroupAndStatus(omrGroup.getId(), TaskStatus.WAITING));
             omrGroups.add(groupVo);
         }
         return omrGroups;

+ 30 - 0
src/main/java/cn/com/qmth/scancentral/service/impl/SubjectServiceImpl.java

@@ -54,6 +54,7 @@ import cn.com.qmth.scancentral.service.BatchPaperService;
 import cn.com.qmth.scancentral.service.ExamService;
 import cn.com.qmth.scancentral.service.FileService;
 import cn.com.qmth.scancentral.service.MarkSiteService;
+import cn.com.qmth.scancentral.service.OmrGroupService;
 import cn.com.qmth.scancentral.service.StudentService;
 import cn.com.qmth.scancentral.service.SubjectService;
 import cn.com.qmth.scancentral.support.SpringContextHolder;
@@ -62,8 +63,10 @@ import cn.com.qmth.scancentral.util.DateUtil;
 import cn.com.qmth.scancentral.util.FileUtil;
 import cn.com.qmth.scancentral.vo.ExportCetMarkingQueryVo;
 import cn.com.qmth.scancentral.vo.ExportCetVo;
+import cn.com.qmth.scancentral.vo.OmrGroupVo;
 import cn.com.qmth.scancentral.vo.SubjectConfigVo;
 import cn.com.qmth.scancentral.vo.examinfo.SubjectConfig;
+import cn.com.qmth.scancentral.vo.omr.OmrSubjectVo;
 import cn.com.qmth.scancentral.vo.subject.DataExportTaskVo;
 import cn.com.qmth.scancentral.vo.subject.ScanProgressVo;
 import cn.com.qmth.scancentral.vo.subject.SubjectBreachVo;
@@ -99,6 +102,9 @@ public class SubjectServiceImpl extends MppServiceImpl<SubjectDao, SubjectEntity
     @Autowired
     private MarkSiteService markSiteService;
 
+    @Autowired
+    private OmrGroupService omrGroupService;
+
     static {
         int threadCount = 5;
         exec = new ThreadPoolExecutor(threadCount, threadCount, 0L, TimeUnit.SECONDS,
@@ -698,4 +704,28 @@ public class SubjectServiceImpl extends MppServiceImpl<SubjectDao, SubjectEntity
         subs.add(new SubjectEntity(examId, "9", "CFT4"));
         this.saveBatch(subs);
     }
+
+    @Override
+    public List<OmrSubjectVo> listByExamIdForOmr(Long examId) {
+        List<SubjectEntity> ss = listByExamId(examId);
+        if (CollectionUtils.isEmpty(ss)) {
+            return new ArrayList<>();
+        }
+        List<OmrSubjectVo> ret = new ArrayList<>();
+        for (SubjectEntity s : ss) {
+            OmrSubjectVo vo = new OmrSubjectVo();
+            vo.setCode(s.getCode());
+            vo.setName(s.getName());
+            List<OmrGroupVo> os = omrGroupService.listByExamIdAndSubjectCode(examId, s.getCode());
+            int todoCount = 0;
+            if (CollectionUtils.isNotEmpty(os)) {
+                for (OmrGroupVo o : os) {
+                    todoCount = todoCount + o.getTodoCount();
+                }
+            }
+            vo.setTodoCount(todoCount);
+            ret.add(vo);
+        }
+        return ret;
+    }
 }

+ 11 - 0
src/main/java/cn/com/qmth/scancentral/vo/OmrGroupVo.java

@@ -19,6 +19,9 @@ public class OmrGroupVo {
 
     private List<OmrConditionVo> conditions;
 
+    // 待处理数
+    private Integer todoCount;
+
     @ApiModelProperty(value = "是否正在重置任务")
     private Boolean reseting;
 
@@ -154,4 +157,12 @@ public class OmrGroupVo {
         this.updateTime = updateTime;
     }
 
+    public Integer getTodoCount() {
+        return todoCount;
+    }
+
+    public void setTodoCount(Integer todoCount) {
+        this.todoCount = todoCount;
+    }
+
 }

+ 35 - 0
src/main/java/cn/com/qmth/scancentral/vo/omr/OmrSubjectVo.java

@@ -0,0 +1,35 @@
+package cn.com.qmth.scancentral.vo.omr;
+
+public class OmrSubjectVo {
+
+    private String code;
+
+    private String name;
+
+    private Integer todoCount;
+
+    public String getCode() {
+        return code;
+    }
+
+    public void setCode(String code) {
+        this.code = code;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public Integer getTodoCount() {
+        return todoCount;
+    }
+
+    public void setTodoCount(Integer todoCount) {
+        this.todoCount = todoCount;
+    }
+
+}