| | |
| | | } |
| | | |
| | | @Override |
| | | public Page<GasConcentration> listDatabyTimeSlotAndPage(PageQuery<GasPageQuery> pageQuery) { |
| | | public Page<GasConcentration> listDatabyTimeSlotAndPositionAndPage(PageQuery<GasPageQuery> pageQuery) { |
| | | Pageable pageable = PageRequest.of(pageQuery.getPageIndex()-1, pageQuery.getPageSize(), Sort.Direction.DESC, "time"); |
| | | Specification<GasConcentration> specification = new Specification<GasConcentration>() { |
| | | @Override |
| | | public Predicate toPredicate(Root root, CriteriaQuery query, CriteriaBuilder criteriaBuilder) { |
| | | Set<Predicate> predicateList = new HashSet<>(); |
| | | GasPageQuery searchParams = pageQuery.getSearchParams(); |
| | | if (searchParams != null && searchParams.getPosition() != null){ |
| | | predicateList.add(criteriaBuilder.equal(root.get("position").as(Integer.class),searchParams.getPosition())); |
| | | } |
| | | if (searchParams != null && searchParams.getStartTime() != null && searchParams.getEndTime() != null){ |
| | | predicateList.add(criteriaBuilder.between(root.get("time").as(LocalDateTime.class),searchParams.getStartTime(),searchParams.getEndTime())); |
| | | } |
| | |
| | | Page<GasConcentration> pageResult = gasConcentrationRepository.findAll(specification,pageable); |
| | | return pageResult; |
| | | } |
| | | |
| | | @Override |
| | | public List<GasConcentration> listDatabyTimeSlotAndPosition(LocalDateTime startTime, LocalDateTime endTime, Integer position) { |
| | | if (startTime == null || endTime == null) |
| | | throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(),"时间区段值不能为空"); |
| | | Specification<GasConcentration> specification = new Specification<GasConcentration>() { |
| | | @Override |
| | | public Predicate toPredicate(Root root, CriteriaQuery query, CriteriaBuilder criteriaBuilder) { |
| | | Set<Predicate> predicateList = new HashSet<>(); |
| | | if (position != null){ |
| | | predicateList.add(criteriaBuilder.equal(root.get("position").as(Integer.class),position)); |
| | | } |
| | | predicateList.add(criteriaBuilder.between(root.get("time").as(LocalDateTime.class),startTime,endTime)); |
| | | return criteriaBuilder.and(predicateList.toArray(new Predicate[predicateList.size()])); |
| | | } |
| | | }; |
| | | List<GasConcentration> gasConcentrations = gasConcentrationRepository.findAll(specification); |
| | | return gasConcentrations; |
| | | } |
| | | } |