Explorar o código

Merge branch 'dev_1.0.0' of http://git.qmth.com.cn/scan-central/server.git into dev_1.0.0

xiatian hai 9 meses
pai
achega
eee1993b9b

+ 6 - 4
src/main/java/cn/com/qmth/scancentral/controller/admin/OmrGroupController.java

@@ -12,8 +12,10 @@ import cn.com.qmth.scancentral.task.thread.OmrGroupResetThread;
 import cn.com.qmth.scancentral.vo.OmrConditionsVo;
 import cn.com.qmth.scancentral.vo.OmrGroupUpdateVo;
 import cn.com.qmth.scancentral.vo.OmrGroupVo;
+import cn.com.qmth.scancentral.vo.omr.OmrGroupQuery;
 import com.qmth.boot.api.annotation.Aac;
 import com.qmth.boot.api.constant.ApiConstant;
+import com.qmth.boot.core.collection.PageResult;
 import com.qmth.boot.core.concurrent.model.Semaphore;
 import com.qmth.boot.core.concurrent.service.ConcurrentService;
 import com.qmth.boot.core.exception.ParameterException;
@@ -50,10 +52,10 @@ public class OmrGroupController extends BaseController {
         return Arrays.stream(ConditionType.values()).map(OmrConditionsVo::new).collect(Collectors.toList());
     }
 
-    @ApiOperation(value = "查询识别对照任务列表")
-    @RequestMapping(value = "/group/list", method = RequestMethod.POST)
-    public List<OmrGroupVo> list(@RequestParam Long examId) {
-        return groupService.listByExamId(examId);
+    @ApiOperation(value = "查询识别对照任务列表(分页)")
+    @PostMapping(value = "/group/page")
+    public PageResult<OmrGroupVo> page(OmrGroupQuery query) {
+        return groupService.list(query);
     }
 
     @ApiOperation(value = "创建修改识别对照任务组")

+ 3 - 1
src/main/java/cn/com/qmth/scancentral/service/OmrGroupService.java

@@ -3,7 +3,9 @@ package cn.com.qmth.scancentral.service;
 import cn.com.qmth.scancentral.entity.OmrGroupEntity;
 import cn.com.qmth.scancentral.model.OmrCondition;
 import cn.com.qmth.scancentral.vo.OmrGroupVo;
+import cn.com.qmth.scancentral.vo.omr.OmrGroupQuery;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.qmth.boot.core.collection.PageResult;
 
 import java.util.List;
 
@@ -15,7 +17,7 @@ public interface OmrGroupService extends IService<OmrGroupEntity> {
 
     void buildTaskById(Long id);
 
-    List<OmrGroupVo> listByExamId(Long examId);
+    PageResult<OmrGroupVo> list(OmrGroupQuery query);
 
     void updateStage(Long id, Long userId);
 

+ 64 - 26
src/main/java/cn/com/qmth/scancentral/service/impl/OmrGroupServiceImpl.java

@@ -3,6 +3,7 @@ package cn.com.qmth.scancentral.service.impl;
 import cn.com.qmth.scancentral.dao.OmrGroupDao;
 import cn.com.qmth.scancentral.entity.OmrGroupEntity;
 import cn.com.qmth.scancentral.entity.OmrTaskEntity;
+import cn.com.qmth.scancentral.entity.SubjectEntity;
 import cn.com.qmth.scancentral.enums.ConditionType;
 import cn.com.qmth.scancentral.enums.LockType;
 import cn.com.qmth.scancentral.enums.Stage;
@@ -11,17 +12,23 @@ import cn.com.qmth.scancentral.model.OmrCondition;
 import cn.com.qmth.scancentral.service.OmrGroupService;
 import cn.com.qmth.scancentral.service.OmrTaskService;
 import cn.com.qmth.scancentral.service.StudentPaperService;
+import cn.com.qmth.scancentral.service.SubjectService;
 import cn.com.qmth.scancentral.util.BatchSetDataUtil;
 import cn.com.qmth.scancentral.vo.OmrConditionVo;
 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;
@@ -47,6 +54,9 @@ public class OmrGroupServiceImpl extends ServiceImpl<OmrGroupDao, OmrGroupEntity
     @Autowired
     private StudentPaperService studentPaperService;
 
+    @Autowired
+    private SubjectService subjectService;
+
     @Transactional
     @Override
     public void deleteById(Long id) {
@@ -107,39 +117,67 @@ public class OmrGroupServiceImpl extends ServiceImpl<OmrGroupDao, OmrGroupEntity
     }
 
     @Override
-    public List<OmrGroupVo> listByExamId(Long examId) {
-        QueryWrapper<OmrGroupEntity> wrapper = new QueryWrapper<>();
-        LambdaQueryWrapper<OmrGroupEntity> lw = wrapper.lambda();
-        lw.eq(OmrGroupEntity::getExamId, examId);
-        List<OmrGroupEntity> groups = this.list(wrapper);
-        List<OmrGroupVo> list = new ArrayList<OmrGroupVo>();
-        for (OmrGroupEntity group : groups) {
+    public PageResult<OmrGroupVo> list(OmrGroupQuery query) {
+        if (query.getExamId() == null) {
+            throw new ParameterException("examId不能为空");
+        }
+        if (StringUtils.isBlank(query.getSubjectCode())) {
+            throw new ParameterException("subjectCode不能为空");
+        }
+
+        SubjectEntity subject = subjectService.findByExamIdAndCode(query.getExamId(), query.getSubjectCode());
+        if (subject == null) {
+            throw new ParameterException("科目不存在");
+        }
+
+        LambdaQueryWrapper<OmrGroupEntity> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(OmrGroupEntity::getExamId, query.getExamId());
+        wrapper.eq(OmrGroupEntity::getSubjectCode, query.getSubjectCode());
+        IPage<OmrGroupEntity> page = this.page(new Page<>(query.getPageNumber(), query.getPageSize()), wrapper);
+
+        List<OmrGroupVo> omrGroups = new ArrayList<>();
+        for (OmrGroupEntity omrGroup : page.getRecords()) {
             OmrGroupVo groupVo = new OmrGroupVo();
-            groupVo.setId(group.getId());
-            List<OmrConditionVo> conditions = new ArrayList<OmrConditionVo>();
-            for (OmrCondition c : group.getConditions()) {
-                conditions.add(new OmrConditionVo(c));
+            groupVo.setId(omrGroup.getId());
+            groupVo.setSubjectCode(omrGroup.getSubjectCode());
+            groupVo.setSubjectName(subject.getName());
+
+            List<OmrConditionVo> conditions = new ArrayList<>();
+            if (CollectionUtils.isNotEmpty(omrGroup.getConditions())) {
+                for (OmrCondition c : omrGroup.getConditions()) {
+                    conditions.add(new OmrConditionVo(c));
+                }
             }
             groupVo.setConditions(conditions);
-            groupVo.setStage(group.getStage());
-            groupVo.setFixed(group.getFixed());
-            groupVo.setBuilding(
-                    !concurrentService.getSemaphore(LockType.OMR_GROUP_BUILD + "-" + group.getId()).isAvailable());
-            groupVo.setDeleting(
-                    !concurrentService.getSemaphore(LockType.OMR_GROUP_DELETE + "-" + group.getId()).isAvailable());
-            groupVo.setReseting(
-                    !concurrentService.getSemaphore(LockType.OMR_GROUP_RESET + "-" + group.getId()).isAvailable());
-            groupVo.setTotalCount(group.getTotalCount());
+
+            groupVo.setStage(omrGroup.getStage());
+            groupVo.setFixed(omrGroup.getFixed());
+
+            // groupVo.setBuilding(
+            //         !concurrentService.getSemaphore(LockType.OMR_GROUP_BUILD + "-" + omrGroup.getId()).isAvailable());
+            // groupVo.setDeleting(
+            //         !concurrentService.getSemaphore(LockType.OMR_GROUP_DELETE + "-" + omrGroup.getId()).isAvailable());
+            // groupVo.setReseting(
+            //         !concurrentService.getSemaphore(LockType.OMR_GROUP_RESET + "-" + omrGroup.getId()).isAvailable());
+
+            groupVo.setTotalCount(omrGroup.getTotalCount());
             groupVo.setFinishCount(
-                    taskService.getCountByExamAndGroupAndStatus(examId, group.getId(), TaskStatus.PROCESSED));
+                    taskService.getCountByExamAndGroupAndStatus(query.getExamId(), omrGroup.getId(), TaskStatus.PROCESSED));
             groupVo.setUnarbitrateCount(
-                    taskService.getCountByExamAndGroupAndStatus(examId, group.getId(), TaskStatus.WAIT_ARBITRATE));
+                    taskService.getCountByExamAndGroupAndStatus(query.getExamId(), omrGroup.getId(), TaskStatus.WAIT_ARBITRATE));
             groupVo.setArbitratedCount(
-                    taskService.getCountByExamAndGroupAndStatus(examId, group.getId(), TaskStatus.ARBITRATED));
-            groupVo.setUpdateTime(group.getUpdateTime());
-            list.add(groupVo);
+                    taskService.getCountByExamAndGroupAndStatus(query.getExamId(), omrGroup.getId(), TaskStatus.ARBITRATED));
+            groupVo.setUpdateTime(omrGroup.getUpdateTime());
+            omrGroups.add(groupVo);
         }
-        return list;
+
+        PageResult<OmrGroupVo> result = new PageResult<>();
+        result.setResult(omrGroups);
+        result.setPageNumber(page.getCurrent());
+        result.setPageSize(page.getSize());
+        result.setTotalCount(page.getTotal());
+        result.setPageCount(page.getPages());
+        return result;
     }
 
     @Transactional

+ 1 - 1
src/main/java/cn/com/qmth/scancentral/util/PageUtil.java

@@ -12,7 +12,7 @@ public class PageUtil {
         PageResult<T> result = new PageResult<>();
         result.setResult(iPage.getRecords());
         result.setPageNumber(iPage.getCurrent());
-        result.setPageSize(iPage.getPages());
+        result.setPageSize(iPage.getSize());
         result.setTotalCount(iPage.getTotal());
         result.setPageCount(iPage.getPages());
         return result;

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

@@ -1,6 +1,7 @@
 package cn.com.qmth.scancentral.vo;
 
 import cn.com.qmth.scancentral.enums.Stage;
+import io.swagger.annotations.ApiModelProperty;
 
 import java.util.List;
 
@@ -8,24 +9,35 @@ public class OmrGroupVo {
 
     private Long id;
 
+    private String subjectCode;
+
+    private String subjectName;
+
     private Boolean fixed;
 
     private Stage stage;
 
     private List<OmrConditionVo> conditions;
 
+    @ApiModelProperty(value = "是否正在重置任务")
     private Boolean reseting;
 
+    @ApiModelProperty(value = "是否正在生成任务")
     private Boolean building;
 
+    @ApiModelProperty(value = "是否正在删除")
     private Boolean deleting;
 
+    @ApiModelProperty(value = "任务总数")
     private Integer totalCount;
 
+    @ApiModelProperty(value = "任务完成数")
     private Integer finishCount;
 
+    @ApiModelProperty(value = "待仲裁数量")
     private Integer unarbitrateCount;
 
+    @ApiModelProperty(value = "已仲裁数量")
     private Integer arbitratedCount;
 
     private Long updateTime;
@@ -38,6 +50,22 @@ public class OmrGroupVo {
         this.id = id;
     }
 
+    public String getSubjectCode() {
+        return subjectCode;
+    }
+
+    public void setSubjectCode(String subjectCode) {
+        this.subjectCode = subjectCode;
+    }
+
+    public String getSubjectName() {
+        return subjectName;
+    }
+
+    public void setSubjectName(String subjectName) {
+        this.subjectName = subjectName;
+    }
+
     public Boolean getFixed() {
         return fixed;
     }

+ 30 - 0
src/main/java/cn/com/qmth/scancentral/vo/omr/OmrGroupQuery.java

@@ -0,0 +1,30 @@
+package cn.com.qmth.scancentral.vo.omr;
+
+import cn.com.qmth.scancentral.util.PagerQuery;
+import io.swagger.annotations.ApiModelProperty;
+
+public class OmrGroupQuery extends PagerQuery {
+
+    @ApiModelProperty(value = "考试ID")
+    private Long examId;
+
+    @ApiModelProperty(value = "科目代码")
+    private String subjectCode;
+
+    public Long getExamId() {
+        return examId;
+    }
+
+    public void setExamId(Long examId) {
+        this.examId = examId;
+    }
+
+    public String getSubjectCode() {
+        return subjectCode;
+    }
+
+    public void setSubjectCode(String subjectCode) {
+        this.subjectCode = subjectCode;
+    }
+
+}