|
@@ -3,6 +3,7 @@ package cn.com.qmth.scancentral.service.impl;
|
|
import cn.com.qmth.scancentral.dao.OmrGroupDao;
|
|
import cn.com.qmth.scancentral.dao.OmrGroupDao;
|
|
import cn.com.qmth.scancentral.entity.OmrGroupEntity;
|
|
import cn.com.qmth.scancentral.entity.OmrGroupEntity;
|
|
import cn.com.qmth.scancentral.entity.OmrTaskEntity;
|
|
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.ConditionType;
|
|
import cn.com.qmth.scancentral.enums.LockType;
|
|
import cn.com.qmth.scancentral.enums.LockType;
|
|
import cn.com.qmth.scancentral.enums.Stage;
|
|
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.OmrGroupService;
|
|
import cn.com.qmth.scancentral.service.OmrTaskService;
|
|
import cn.com.qmth.scancentral.service.OmrTaskService;
|
|
import cn.com.qmth.scancentral.service.StudentPaperService;
|
|
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.util.BatchSetDataUtil;
|
|
import cn.com.qmth.scancentral.vo.OmrConditionVo;
|
|
import cn.com.qmth.scancentral.vo.OmrConditionVo;
|
|
import cn.com.qmth.scancentral.vo.OmrGroupVo;
|
|
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.LambdaQueryWrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
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.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.concurrent.service.ConcurrentService;
|
|
import com.qmth.boot.core.exception.ParameterException;
|
|
import com.qmth.boot.core.exception.ParameterException;
|
|
import com.qmth.boot.core.exception.ReentrantException;
|
|
import com.qmth.boot.core.exception.ReentrantException;
|
|
import com.qmth.boot.core.exception.StatusException;
|
|
import com.qmth.boot.core.exception.StatusException;
|
|
import org.apache.commons.collections4.CollectionUtils;
|
|
import org.apache.commons.collections4.CollectionUtils;
|
|
|
|
+import org.apache.commons.lang3.StringUtils;
|
|
import org.slf4j.Logger;
|
|
import org.slf4j.Logger;
|
|
import org.slf4j.LoggerFactory;
|
|
import org.slf4j.LoggerFactory;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
@@ -47,6 +54,9 @@ public class OmrGroupServiceImpl extends ServiceImpl<OmrGroupDao, OmrGroupEntity
|
|
@Autowired
|
|
@Autowired
|
|
private StudentPaperService studentPaperService;
|
|
private StudentPaperService studentPaperService;
|
|
|
|
|
|
|
|
+ @Autowired
|
|
|
|
+ private SubjectService subjectService;
|
|
|
|
+
|
|
@Transactional
|
|
@Transactional
|
|
@Override
|
|
@Override
|
|
public void deleteById(Long id) {
|
|
public void deleteById(Long id) {
|
|
@@ -107,39 +117,67 @@ public class OmrGroupServiceImpl extends ServiceImpl<OmrGroupDao, OmrGroupEntity
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@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();
|
|
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.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(
|
|
groupVo.setFinishCount(
|
|
- taskService.getCountByExamAndGroupAndStatus(examId, group.getId(), TaskStatus.PROCESSED));
|
|
|
|
|
|
+ taskService.getCountByExamAndGroupAndStatus(query.getExamId(), omrGroup.getId(), TaskStatus.PROCESSED));
|
|
groupVo.setUnarbitrateCount(
|
|
groupVo.setUnarbitrateCount(
|
|
- taskService.getCountByExamAndGroupAndStatus(examId, group.getId(), TaskStatus.WAIT_ARBITRATE));
|
|
|
|
|
|
+ taskService.getCountByExamAndGroupAndStatus(query.getExamId(), omrGroup.getId(), TaskStatus.WAIT_ARBITRATE));
|
|
groupVo.setArbitratedCount(
|
|
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
|
|
@Transactional
|