From 19514ff362a94a611888f371ffc43a00ec21a38a Mon Sep 17 00:00:00 2001
From: 16639036659 <577530412@qq.com>
Date: 星期二, 16 七月 2024 13:42:48 +0800
Subject: [PATCH] 数据导出

---
 src/main/java/com/gkhy/fourierSpecialGasMonitor/service/impl/GasConcentrationServiceImpl.java |   38 ++++++++++++++++++++++++++++++++++++++
 1 files changed, 38 insertions(+), 0 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 6f1f5d4..a094e91 100644
--- a/src/main/java/com/gkhy/fourierSpecialGasMonitor/service/impl/GasConcentrationServiceImpl.java
+++ b/src/main/java/com/gkhy/fourierSpecialGasMonitor/service/impl/GasConcentrationServiceImpl.java
@@ -5,12 +5,14 @@
 import com.gkhy.fourierSpecialGasMonitor.commons.exception.BusinessException;
 import com.gkhy.fourierSpecialGasMonitor.commons.model.PageQuery;
 import com.gkhy.fourierSpecialGasMonitor.entity.GasConcentration;
+import com.gkhy.fourierSpecialGasMonitor.entity.GasFlux;
 import com.gkhy.fourierSpecialGasMonitor.entity.GasWarnLog;
 import com.gkhy.fourierSpecialGasMonitor.entity.GasWarnUser;
 import com.gkhy.fourierSpecialGasMonitor.entity.query.FindGasWarnLogPageQuery;
 import com.gkhy.fourierSpecialGasMonitor.entity.query.FindGasWarnUserPageQuery;
 import com.gkhy.fourierSpecialGasMonitor.entity.query.GasAtmospherePageQuery;
 import com.gkhy.fourierSpecialGasMonitor.entity.query.GasPageQuery;
+import com.gkhy.fourierSpecialGasMonitor.entity.req.GasConcentrationExportBO;
 import com.gkhy.fourierSpecialGasMonitor.entity.resp.FindGasWarnUserPageRespDTO;
 import com.gkhy.fourierSpecialGasMonitor.enums.DeleteStatusEnum;
 import com.gkhy.fourierSpecialGasMonitor.repository.GasConcentrationRepository;
@@ -26,6 +28,7 @@
 
 import javax.persistence.criteria.*;
 import java.time.LocalDateTime;
+import java.util.ArrayList;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
@@ -120,4 +123,39 @@
         List<GasConcentration> gasConcentrations = gasConcentrationRepository.findAll(specification);
         return gasConcentrations;
     }
+
+    @Override
+    public List<GasConcentration> gasConcentrationExport(GasConcentrationExportBO gasConcentrationExportBO) {
+
+        if(gasConcentrationExportBO.getPosition1() == null && gasConcentrationExportBO.getPosition2() == null
+           && gasConcentrationExportBO.getPosition3() == null){
+            gasConcentrationExportBO.setPosition1(1);
+            gasConcentrationExportBO.setPosition2(2);
+            gasConcentrationExportBO.setPosition3(3);
+        }
+
+        //封装查询参数
+        Specification<GasConcentration> specification = new Specification<GasConcentration>() {
+            @Override
+            public Predicate toPredicate(Root<GasConcentration> root, CriteriaQuery<?> query, CriteriaBuilder criteriaBuilder) {
+                List<Predicate> predicateList = new ArrayList<>();
+                if (gasConcentrationExportBO.getStartTime() != null && !gasConcentrationExportBO.getStartTime().equals("")){
+                    predicateList.add(criteriaBuilder.greaterThanOrEqualTo(root.get("time"), gasConcentrationExportBO.getStartTime()));
+                }
+                if (gasConcentrationExportBO.getEndTime() != null && !gasConcentrationExportBO.getEndTime().equals("")){
+                    predicateList.add(criteriaBuilder.lessThanOrEqualTo(root.get("time"), gasConcentrationExportBO.getEndTime()));
+                }
+                predicateList.add(criteriaBuilder.or(
+                                criteriaBuilder.equal(root.get("position"), gasConcentrationExportBO.getPosition1()),
+                                criteriaBuilder.equal(root.get("position"), gasConcentrationExportBO.getPosition2()),
+                                criteriaBuilder.equal(root.get("position"), gasConcentrationExportBO.getPosition3())
+                        )
+                );
+                query.orderBy(criteriaBuilder.asc(root.get("time")),criteriaBuilder.asc(root.get("position")));
+                return criteriaBuilder.and(predicateList.toArray(new Predicate[0]));
+            }
+        };
+        List<GasConcentration> result = gasConcentrationRepository.findAll(specification);
+        return result;
+    }
 }

--
Gitblit v1.9.2