|
@@ -2,13 +2,17 @@ package com.mooctest.crowd.domain.repository;
|
|
|
|
|
|
import com.mooctest.crowd.domain.dao.*;
|
|
|
import com.mooctest.crowd.domain.domainobject.*;
|
|
|
-import com.mooctest.crowd.domain.exception.*;
|
|
|
+import com.mooctest.crowd.domain.exception.ApplicationTypeNoExistException;
|
|
|
+import com.mooctest.crowd.domain.exception.BadRequestException;
|
|
|
+import com.mooctest.crowd.domain.exception.HttpBadRequestException;
|
|
|
+import com.mooctest.crowd.domain.exception.TestTypeNoExistException;
|
|
|
import com.mooctest.crowd.domain.model.*;
|
|
|
import com.mooctest.crowd.domain.util.Converter;
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.data.domain.Page;
|
|
|
import org.springframework.data.domain.Pageable;
|
|
|
+import org.springframework.data.domain.Sort;
|
|
|
import org.springframework.data.jpa.domain.Specification;
|
|
|
import org.springframework.data.jpa.domain.Specifications;
|
|
|
import org.springframework.stereotype.Component;
|
|
@@ -17,6 +21,7 @@ import javax.persistence.criteria.CriteriaBuilder;
|
|
|
import javax.persistence.criteria.CriteriaQuery;
|
|
|
import javax.persistence.criteria.Predicate;
|
|
|
import javax.persistence.criteria.Root;
|
|
|
+import java.util.ArrayList;
|
|
|
import java.util.List;
|
|
|
import java.util.Optional;
|
|
|
import java.util.stream.Collectors;
|
|
@@ -199,27 +204,46 @@ public class CommonRepo {
|
|
|
};
|
|
|
}
|
|
|
|
|
|
- public Page<CrowdTestProject> getProjectList(Pageable pageable, String code, String keyword) {
|
|
|
+ public List<CrowdTestProject> getProjectList(Pageable pageable, String code, String keyword) {
|
|
|
System.out.println("code " + code);
|
|
|
Specifications<CrowdTestProjectPO> where = Specifications.where(getCode(code, keyword));
|
|
|
- return crowdTestProjectDao.findAll(where, pageable).map(crowdTestProjectPO -> Converter.convert(CrowdTestProject.class, crowdTestProjectPO));
|
|
|
+ //添加排序
|
|
|
+ Sort sort = new Sort(Sort.Direction.ASC,"status");
|
|
|
+ return crowdTestProjectDao.findAll(where, sort).stream().map(crowdTestProjectPO -> Converter.convert(CrowdTestProject.class, crowdTestProjectPO)).collect(Collectors.toList());
|
|
|
}
|
|
|
|
|
|
private Specification<CrowdTestProjectPO> getCode(String code, String keyword) {
|
|
|
return new Specification<CrowdTestProjectPO>() {
|
|
|
+// @Override
|
|
|
+// public Predicate toPredicate(Root<CrowdTestProjectPO> a, CriteriaQuery<?> q, CriteriaBuilder cb) {
|
|
|
+// Predicate predicate = cb.conjunction();
|
|
|
+// if (code != null) {
|
|
|
+// predicate.getExpressions().add(cb.equal(a.get("applicationType"), code));
|
|
|
+// }
|
|
|
+// if (keyword != null && keyword != "") {
|
|
|
+// predicate.getExpressions().add(
|
|
|
+// cb.like(a.<String>get("name"), "%" + StringUtils.trim(keyword) + "%")
|
|
|
+// );
|
|
|
+// }
|
|
|
+//// q.orderBy(cb.desc(a.get("status").as(Integer.class)));
|
|
|
+// return predicate;
|
|
|
+// }
|
|
|
+
|
|
|
@Override
|
|
|
- public Predicate toPredicate(Root<CrowdTestProjectPO> a, CriteriaQuery<?> q, CriteriaBuilder cb) {
|
|
|
- Predicate predicate = cb.conjunction();
|
|
|
+ public Predicate toPredicate(Root<CrowdTestProjectPO> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
|
|
|
+ //用于暂时存放查询条件的集合
|
|
|
+ List<Predicate> predicatesList = new ArrayList<>();
|
|
|
if (code != null) {
|
|
|
- predicate.getExpressions().add(cb.equal(a.get("applicationType"), code));
|
|
|
+ Predicate codePredicate = cb.equal(root.get("applicationType"), code);
|
|
|
+ predicatesList.add(codePredicate);
|
|
|
}
|
|
|
if (keyword != null && keyword != "") {
|
|
|
- predicate.getExpressions().add(
|
|
|
- cb.like(a.<String>get("name"), "%" + StringUtils.trim(keyword) + "%")
|
|
|
- );
|
|
|
+ Predicate namePredicate = cb.like(root.get("name"), '%'+StringUtils.trim(keyword)+'%');
|
|
|
+ predicatesList.add(namePredicate);
|
|
|
}
|
|
|
-// q.orderBy(cb.desc(a.get("status").as(Integer.class)));
|
|
|
- return predicate;
|
|
|
+ //最终将查询条件拼好然后return
|
|
|
+ Predicate[] predicates = new Predicate[predicatesList.size()];
|
|
|
+ return cb.and(predicatesList.toArray(predicates));
|
|
|
}
|
|
|
};
|
|
|
}
|