deason 9 luni în urmă
părinte
comite
0bc94ee8d5

+ 2 - 2
src/main/java/cn/com/qmth/scancentral/controller/admin/OmrArbitrateController.java

@@ -43,9 +43,9 @@ public class OmrArbitrateController extends BaseController {
 
     @ApiOperation(value = "识别对照仲裁进度状态")
     @RequestMapping(value = "/status", method = RequestMethod.POST)
-    public TaskStatusVo status(@RequestParam Long examId) {
+    public TaskStatusVo status(@RequestParam Long groupId) {
         User user = getAccessUser();
-        return omrTaskService.getStatus(examId, true, user.getAccount());
+        return omrTaskService.getStatus(groupId, true, user.getAccount());
     }
 
     @ApiOperation(value = "识别对照仲裁任务释放")

+ 6 - 4
src/main/java/cn/com/qmth/scancentral/service/OmrTaskService.java

@@ -19,7 +19,11 @@ public interface OmrTaskService extends IService<OmrTaskEntity> {
 
     int getCountByExamAndStatus(Long examId, TaskStatus... status);
 
-    int getCountByExamAndGroupAndStatus(Long examId, Long groupId, TaskStatus... status);
+    int getCountByGroupAndStatus(Long groupId, TaskStatus... status);
+
+    int getCountByExamAndStatusAndDevice(Long examId, String device, TaskStatus... status);
+
+    int getCountByGroupAndStatusAndDevice(Long groupId, String device, TaskStatus... status);
 
     void deleteByGroupId(Long groupId);
 
@@ -35,7 +39,7 @@ public interface OmrTaskService extends IService<OmrTaskEntity> {
 
     TaskVo getArbitrateTask(Long groupId, String user);
 
-    TaskStatusVo getStatus(Long examId, Boolean isArbitrate, String account);
+    TaskStatusVo getStatus(Long groupId, Boolean isArbitrate, String account);
 
     boolean apply(OmrTaskEntity t, String account);
 
@@ -51,8 +55,6 @@ public interface OmrTaskService extends IService<OmrTaskEntity> {
 
     void waitingByGroupToggle(Long groupId);
 
-    int getCountByExamAndStatusAndDevice(Long examId, String device, TaskStatus... status);
-
     void deleteByStudentIdAndGroupId(Long groupId, Long studentId);
 
     void updateStudentId(Long studentId, Long paperId);

+ 27 - 29
src/main/java/cn/com/qmth/scancentral/service/impl/OmrGroupServiceImpl.java

@@ -1,29 +1,5 @@
 package cn.com.qmth.scancentral.service.impl;
 
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
-import org.apache.commons.collections4.CollectionUtils;
-import org.apache.commons.lang3.StringUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.qmth.boot.core.collection.PageResult;
-import com.qmth.boot.core.concurrent.service.ConcurrentService;
-import com.qmth.boot.core.exception.ParameterException;
-import com.qmth.boot.core.exception.ReentrantException;
-import com.qmth.boot.core.exception.StatusException;
-
 import cn.com.qmth.scancentral.dao.OmrGroupDao;
 import cn.com.qmth.scancentral.entity.OmrGroupEntity;
 import cn.com.qmth.scancentral.entity.OmrTaskEntity;
@@ -42,6 +18,28 @@ import cn.com.qmth.scancentral.vo.OmrConditionVo;
 import cn.com.qmth.scancentral.vo.OmrGroupUpdateVo;
 import cn.com.qmth.scancentral.vo.OmrGroupVo;
 import cn.com.qmth.scancentral.vo.omr.OmrGroupQuery;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.qmth.boot.core.collection.PageResult;
+import com.qmth.boot.core.concurrent.service.ConcurrentService;
+import com.qmth.boot.core.exception.ParameterException;
+import com.qmth.boot.core.exception.ReentrantException;
+import com.qmth.boot.core.exception.StatusException;
+import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
 
 @Service
 public class OmrGroupServiceImpl extends ServiceImpl<OmrGroupDao, OmrGroupEntity> implements OmrGroupService {
@@ -165,11 +163,11 @@ public class OmrGroupServiceImpl extends ServiceImpl<OmrGroupDao, OmrGroupEntity
 
             groupVo.setTotalCount(omrGroup.getTotalCount());
             groupVo.setFinishCount(
-                    taskService.getCountByExamAndGroupAndStatus(query.getExamId(), omrGroup.getId(), TaskStatus.PROCESSED));
+                    taskService.getCountByGroupAndStatus(omrGroup.getId(), TaskStatus.PROCESSED));
             groupVo.setUnarbitrateCount(
-                    taskService.getCountByExamAndGroupAndStatus(query.getExamId(), omrGroup.getId(), TaskStatus.WAIT_ARBITRATE));
+                    taskService.getCountByGroupAndStatus(omrGroup.getId(), TaskStatus.WAIT_ARBITRATE));
             groupVo.setArbitratedCount(
-                    taskService.getCountByExamAndGroupAndStatus(query.getExamId(), omrGroup.getId(), TaskStatus.ARBITRATED));
+                    taskService.getCountByGroupAndStatus(omrGroup.getId(), TaskStatus.ARBITRATED));
             groupVo.setUpdateTime(omrGroup.getUpdateTime());
             omrGroups.add(groupVo);
         }
@@ -196,7 +194,7 @@ public class OmrGroupServiceImpl extends ServiceImpl<OmrGroupDao, OmrGroupEntity
         if (group.getTotalCount() == 0) {
             throw new StatusException("分组下没有任务,无法切换");
         }
-        Integer finishCount = taskService.getCountByExamAndGroupAndStatus(group.getExamId(), id, TaskStatus.PROCESSED,
+        Integer finishCount = taskService.getCountByGroupAndStatus(id, TaskStatus.PROCESSED,
                 TaskStatus.ARBITRATED);
         if (group.getTotalCount() - finishCount != 0) {
             throw new StatusException("识别对照任务未完成,无法切换");
@@ -277,7 +275,7 @@ public class OmrGroupServiceImpl extends ServiceImpl<OmrGroupDao, OmrGroupEntity
     }
 
     @Override
-    public List<OmrGroupEntity> findByExamIdAndSubjectCodeAndFixed(Long examId,String subjectCode, Boolean fixed) {
+    public List<OmrGroupEntity> findByExamIdAndSubjectCodeAndFixed(Long examId, String subjectCode, Boolean fixed) {
         QueryWrapper<OmrGroupEntity> wrapper = new QueryWrapper<>();
         LambdaQueryWrapper<OmrGroupEntity> lw = wrapper.lambda();
         lw.eq(OmrGroupEntity::getExamId, examId);

+ 22 - 8
src/main/java/cn/com/qmth/scancentral/service/impl/OmrTaskServiceImpl.java

@@ -78,6 +78,20 @@ public class OmrTaskServiceImpl extends ServiceImpl<OmrTaskDao, OmrTaskEntity> i
         return this.count(wrapper);
     }
 
+    @Override
+    public int getCountByGroupAndStatus(Long groupId, TaskStatus... status) {
+        QueryWrapper<OmrTaskEntity> wrapper = new QueryWrapper<>();
+        LambdaQueryWrapper<OmrTaskEntity> lw = wrapper.lambda();
+        lw.and(param -> {
+            for (TaskStatus taskStatus : status) {
+                param.or().eq(OmrTaskEntity::getStatus, taskStatus);
+            }
+        });
+
+        lw.eq(OmrTaskEntity::getGroupId, groupId);
+        return this.count(wrapper);
+    }
+
     @Override
     public int getCountByExamAndStatusAndDevice(Long examId, String device, TaskStatus... status) {
         QueryWrapper<OmrTaskEntity> wrapper = new QueryWrapper<>();
@@ -87,13 +101,13 @@ public class OmrTaskServiceImpl extends ServiceImpl<OmrTaskDao, OmrTaskEntity> i
                 param.or().eq(OmrTaskEntity::getStatus, taskStatus);
             }
         });
-        lw.eq(OmrTaskEntity::getDevice, device);
         lw.eq(OmrTaskEntity::getExamId, examId);
+        lw.eq(OmrTaskEntity::getDevice, device);
         return this.count(wrapper);
     }
 
     @Override
-    public int getCountByExamAndGroupAndStatus(Long examId, Long groupId, TaskStatus... status) {
+    public int getCountByGroupAndStatusAndDevice(Long groupId, String device, TaskStatus... status) {
         QueryWrapper<OmrTaskEntity> wrapper = new QueryWrapper<>();
         LambdaQueryWrapper<OmrTaskEntity> lw = wrapper.lambda();
         lw.and(param -> {
@@ -101,8 +115,8 @@ public class OmrTaskServiceImpl extends ServiceImpl<OmrTaskDao, OmrTaskEntity> i
                 param.or().eq(OmrTaskEntity::getStatus, taskStatus);
             }
         });
-        lw.eq(OmrTaskEntity::getExamId, examId);
         lw.eq(OmrTaskEntity::getGroupId, groupId);
+        lw.eq(OmrTaskEntity::getDevice, device);
         return this.count(wrapper);
     }
 
@@ -743,14 +757,14 @@ public class OmrTaskServiceImpl extends ServiceImpl<OmrTaskDao, OmrTaskEntity> i
     }
 
     @Override
-    public TaskStatusVo getStatus(Long examId, Boolean isArbitrate, String account) {
+    public TaskStatusVo getStatus(Long groupId, Boolean isArbitrate, String account) {
         TaskStatusVo status = new TaskStatusVo();
         if (isArbitrate) {
-            status.setFinishCount(this.getCountByExamAndStatusAndDevice(examId, account, TaskStatus.ARBITRATED));
-            status.setTodoCount(this.getCountByExamAndStatus(examId, TaskStatus.WAIT_ARBITRATE));
+            status.setFinishCount(this.getCountByGroupAndStatusAndDevice(groupId, account, TaskStatus.ARBITRATED));
+            status.setTodoCount(this.getCountByGroupAndStatus(groupId, TaskStatus.WAIT_ARBITRATE));
         } else {
-            status.setFinishCount(this.getCountByExamAndStatusAndDevice(examId, account, TaskStatus.PROCESSED));
-            status.setTodoCount(this.getCountByExamAndStatus(examId, TaskStatus.WAITING));
+            status.setFinishCount(this.getCountByGroupAndStatusAndDevice(groupId, account, TaskStatus.PROCESSED));
+            status.setTodoCount(this.getCountByGroupAndStatus(groupId, TaskStatus.WAITING));
         }
         return status;
     }