huangzhen
2023-12-28 d6ae4bd543971312b51ba0e40b2565f63ed682e0
src/main/java/com/gkhy/fourierSpecialGasMonitor/service/impl/GasConcentrationServiceImpl.java
@@ -64,13 +64,16 @@
    }
    @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()));
                }
@@ -98,4 +101,23 @@
        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;
    }
}