From d6ae4bd543971312b51ba0e40b2565f63ed682e0 Mon Sep 17 00:00:00 2001
From: huangzhen <867217663@qq.com>
Date: 星期四, 28 十二月 2023 16:14:28 +0800
Subject: [PATCH] 气体浓度加入方位

---
 src/main/java/com/gkhy/fourierSpecialGasMonitor/service/impl/GasConcentrationServiceImpl.java |   24 +++++++++++++++++++++++-
 1 files changed, 23 insertions(+), 1 deletions(-)

diff --git a/src/main/java/com/gkhy/fourierSpecialGasMonitor/service/impl/GasConcentrationServiceImpl.java b/src/main/java/com/gkhy/fourierSpecialGasMonitor/service/impl/GasConcentrationServiceImpl.java
index b27996e..6f1f5d4 100644
--- a/src/main/java/com/gkhy/fourierSpecialGasMonitor/service/impl/GasConcentrationServiceImpl.java
+++ b/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;
+    }
 }

--
Gitblit v1.9.2