From 3dee2a15cad899b998da637ca07768d7c92f6052 Mon Sep 17 00:00:00 2001
From: “djh” <“3298565835@qq.com”>
Date: Tue, 04 Nov 2025 13:18:03 +0800
Subject: [PATCH] 修改
---
src/main/java/com/gkhy/fourierSpecialGasMonitor/service/impl/GasConcentrationServiceImpl.java | 62 ++++++++++++++++++++++++++++++
1 files changed, 61 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..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;
@@ -64,13 +67,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 +104,58 @@
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;
+ }
+
+ @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