16639036659
2024-07-16 19514ff362a94a611888f371ffc43a00ec21a38a
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;
    }
}