wangwei 6 år sedan
förälder
incheckning
acb325e38c

+ 73 - 0
examcloud-core-examwork-api-provider/src/main/java/cn/com/qmth/examcloud/core/examwork/api/provider/ExamCloudServiceProvider.java

@@ -13,6 +13,7 @@ import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.PageRequest;
+import org.springframework.data.domain.Pageable;
 import org.springframework.data.domain.Sort;
 import org.springframework.data.domain.Sort.Direction;
 import org.springframework.data.jpa.domain.Specification;
@@ -40,6 +41,7 @@ import cn.com.qmth.examcloud.core.examwork.service.bean.ExamInfo;
 import cn.com.qmth.examcloud.core.examwork.service.impl.ExamServiceImpl;
 import cn.com.qmth.examcloud.examwork.api.ExamCloudService;
 import cn.com.qmth.examcloud.examwork.api.bean.ExamBean;
+import cn.com.qmth.examcloud.examwork.api.request.GetExamListReq;
 import cn.com.qmth.examcloud.examwork.api.request.GetExamPropertyReq;
 import cn.com.qmth.examcloud.examwork.api.request.GetExamReq;
 import cn.com.qmth.examcloud.examwork.api.request.GetOngoingExamListReq;
@@ -47,6 +49,7 @@ import cn.com.qmth.examcloud.examwork.api.request.LockExamStudentsReq;
 import cn.com.qmth.examcloud.examwork.api.request.SaveExamReq;
 import cn.com.qmth.examcloud.examwork.api.request.SetExamPropertyReq;
 import cn.com.qmth.examcloud.examwork.api.request.UnlockExamStudentsReq;
+import cn.com.qmth.examcloud.examwork.api.response.GetExamListResp;
 import cn.com.qmth.examcloud.examwork.api.response.GetExamPropertyResp;
 import cn.com.qmth.examcloud.examwork.api.response.GetExamResp;
 import cn.com.qmth.examcloud.examwork.api.response.GetOngoingExamListResp;
@@ -328,4 +331,74 @@ public class ExamCloudServiceProvider extends ControllerSupport implements ExamC
 		return resp;
 	}
 
+	@ApiOperation(value = "查询考试集合")
+	@PostMapping("getExamList")
+	@Override
+	public GetExamListResp getExamList(@RequestBody GetExamListReq req) {
+
+		Long rootOrgId = req.getRootOrgId();
+		Boolean enable = req.getEnable();
+		List<String> examTypeList = req.getExamTypeList();
+
+		List<ExamType> examTypes = Lists.newArrayList();
+		if (CollectionUtils.isNotEmpty(examTypeList)) {
+			for (String cur : examTypeList) {
+				examTypes.add(ExamType.valueOf(cur));
+			}
+		}
+
+		final long start = null == req.getStart() ? 1 : req.getStart();
+
+		Pageable pageable = new PageRequest(0, 100, Sort.Direction.ASC, "id");
+
+		Specification<ExamEntity> specification = (root, query, cb) -> {
+			List<Predicate> predicates = new ArrayList<>();
+			predicates.add(cb.equal(root.get("rootOrgId"), rootOrgId));
+
+			predicates.add(cb.greaterThanOrEqualTo(root.get("id"), start));
+
+			if (null != enable) {
+				predicates.add(cb.equal(root.get("enable"), enable));
+			}
+			if (CollectionUtils.isNotEmpty(examTypes)) {
+				predicates.add(root.get("examType").in(examTypes));
+			}
+
+			return cb.and(predicates.toArray(new Predicate[predicates.size()]));
+		};
+
+		Page<ExamEntity> page = examRepo.findAll(specification, pageable);
+
+		Iterator<ExamEntity> iterator = page.iterator();
+
+		List<ExamBean> list = Lists.newArrayList();
+		long next = start;
+		while (iterator.hasNext()) {
+			ExamEntity cur = iterator.next();
+			ExamBean bean = new ExamBean();
+			list.add(bean);
+
+			bean.setId(cur.getId());
+			bean.setBeginTime(cur.getBeginTime());
+			bean.setDuration(cur.getDuration());
+			bean.setEnable(cur.getEnable());
+			bean.setEndTime(cur.getEndTime());
+			bean.setExamTimes(cur.getExamTimes());
+			bean.setExamType(cur.getExamType().name());
+			bean.setName(cur.getName());
+			bean.setRemark(cur.getRemark());
+			bean.setRootOrgId(cur.getRootOrgId());
+
+			next = cur.getId();
+		}
+
+		GetExamListResp resp = new GetExamListResp();
+		if (next != start) {
+			next++;
+		}
+		resp.setNext(next);
+		resp.setExamList(list);
+		return resp;
+	}
+
 }