@Repository
public interface WarehousingRepository extends JpaRepository<Warehousing, Integer>, JpaSpecificationExecutor<Warehousing> {
}
@Override
public Page<Warehousing> getWarehousing(Integer id, Integer approvalStatus, String number, Boolean isAdopt, RequestPage requestPage) {
Specification<Warehousing> specification = (root, criteriaQuery, criteriaBuilder) -> {
List<Predicate> predicates = new ArrayList<>();
if (id != null) {
predicates.add(criteriaBuilder.equal(root.get("id"), id));
}
if (approvalStatus != null) {
predicates.add(criteriaBuilder.equal(root.get("approvalStatus"), approvalStatus));
}
if (number != null) {
predicates.add(criteriaBuilder.like(root.get("number"), "%" + number.trim() + "%"));
}
if (isAdopt != null) {
predicates.add(criteriaBuilder.equal(root.get("isAdopt"), isAdopt));
}
return criteriaBuilder.and(predicates.toArray(new Predicate[0]));
};
Pageable pageable = new PageRequest(requestPage.getPage(), requestPage.getSize(), Sort.Direction.DESC, "createDate");
return warehousingRepository.findAll(specification, pageable);
}