修改系列接口
This commit is contained in:
+29
-34
@@ -74,43 +74,38 @@ public class UserServiceImpl implements UserService {
|
||||
PageRequest page = PageSort.pageRequest(Sort.Direction.ASC);
|
||||
|
||||
// 使用Specification复杂查询
|
||||
return userRepository.findAll(new Specification<User>(){
|
||||
return userRepository.findAll((Specification<User>) (root, query, cb) -> {
|
||||
List<Predicate> preList = new ArrayList<>();
|
||||
if(user.getId() != null){
|
||||
preList.add(cb.equal(root.get("id").as(Long.class), user.getId()));
|
||||
}
|
||||
if(user.getUsername() != null){
|
||||
preList.add(cb.equal(root.get("username").as(String.class), user.getUsername()));
|
||||
}
|
||||
if(user.getNickname() != null){
|
||||
preList.add(cb.like(root.get("nickname").as(String.class), "%"+ user.getNickname() + "%"));
|
||||
}
|
||||
if(user.getDept() != null){
|
||||
// 联级查询部门
|
||||
Dept dept = user.getDept();
|
||||
List<Long> deptIn = new ArrayList<>();
|
||||
deptIn.add(dept.getId());
|
||||
List<Dept> deptList = deptService.getListByPidLikeOk(dept.getId());
|
||||
deptList.forEach(item -> deptIn.add(item.getId()));
|
||||
|
||||
@Override
|
||||
public Predicate toPredicate(Root<User> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
|
||||
List<Predicate> preList = new ArrayList<>();
|
||||
if(user.getId() != null){
|
||||
preList.add(cb.equal(root.get("id").as(Long.class), user.getId()));
|
||||
}
|
||||
if(user.getUsername() != null){
|
||||
preList.add(cb.equal(root.get("username").as(String.class), user.getUsername()));
|
||||
}
|
||||
if(user.getNickname() != null){
|
||||
preList.add(cb.like(root.get("nickname").as(String.class), "%"+ user.getNickname() + "%"));
|
||||
}
|
||||
if(user.getDept() != null){
|
||||
// 联级查询部门
|
||||
Dept dept = user.getDept();
|
||||
List<Long> deptIn = new ArrayList<>();
|
||||
deptIn.add(dept.getId());
|
||||
List<Dept> deptList = deptService.getListByPidLikeOk(dept.getId());
|
||||
deptList.forEach(item -> deptIn.add(item.getId()));
|
||||
|
||||
Join<User, Dept> join = root.join("dept", JoinType.INNER);
|
||||
CriteriaBuilder.In<Long> in = cb.in(join.get("id").as(Long.class));
|
||||
deptIn.forEach(in::value);
|
||||
preList.add(in);
|
||||
}
|
||||
|
||||
// 数据状态
|
||||
if(user.getStatus() != null){
|
||||
preList.add(cb.equal(root.get("status").as(Byte.class), user.getStatus()));
|
||||
}
|
||||
|
||||
Predicate[] pres = new Predicate[preList.size()];
|
||||
return query.where(preList.toArray(pres)).getRestriction();
|
||||
Join<User, Dept> join = root.join("dept", JoinType.INNER);
|
||||
CriteriaBuilder.In<Long> in = cb.in(join.get("id").as(Long.class));
|
||||
deptIn.forEach(in::value);
|
||||
preList.add(in);
|
||||
}
|
||||
|
||||
// 数据状态
|
||||
if(user.getStatus() != null){
|
||||
preList.add(cb.equal(root.get("status").as(Byte.class), user.getStatus()));
|
||||
}
|
||||
|
||||
Predicate[] pres = new Predicate[preList.size()];
|
||||
return query.where(preList.toArray(pres)).getRestriction();
|
||||
}, page);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user