123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131 |
- package com.jiayue.ipfcst.console.service;
- import com.jiayue.ipfcst.common.data.entity.WindTowerStatusData;
- import com.jiayue.ipfcst.common.data.repository.WindTowerStatusDataRepository;
- import com.jiayue.ipfcst.common.data.service.BaseService;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.data.domain.Page;
- import org.springframework.data.domain.PageRequest;
- import org.springframework.data.domain.Pageable;
- import org.springframework.data.domain.Sort;
- import org.springframework.data.jpa.domain.Specification;
- import org.springframework.stereotype.Service;
- import org.springframework.transaction.annotation.Propagation;
- import org.springframework.transaction.annotation.Transactional;
- import javax.persistence.criteria.Predicate;
- import java.lang.reflect.Field;
- import java.util.*;
- /**
- * 测风塔数据业务层
- *
- * @author yh
- * @version 1.0
- * @since 2019/8/5 16:02
- */
- @Service
- public class WindTowerStatusDataService extends BaseService {
- private final WindTowerStatusDataRepository windTowerStatusDataRepository;
- @Autowired
- public WindTowerStatusDataService(WindTowerStatusDataRepository windTowerStatusDataRepository) {
- this.windTowerStatusDataRepository = windTowerStatusDataRepository;
- }
- /**
- * 分页查询 环境监测仪数据 tl
- *
- * @param startTime 开始时间
- * @param endTime 结束时间
- * @param no 设备编号
- * @return
- */
- @Transactional(propagation = Propagation.NOT_SUPPORTED, readOnly = true)
- public Map<String, Object> findByTimeBetweenAndNoAndTimeStep(String stationCode, Date startTime, Date endTime,
- Integer page, Integer size, String no) {
- Map<String, Object> map = new HashMap<>();
- Sort sort = Sort.by(Sort.Direction.DESC, "time");
- Specification<WindTowerStatusData> specification = this.specificationFindByTime(stationCode, startTime, endTime, no);
- Pageable pageable = PageRequest.of(page - 1, size, sort); //页码:前端从1开始,jpa从0开始,做个转换
- Page windTowerStatusDatas = windTowerStatusDataRepository.findAll(specification, pageable);
- List<WindTowerStatusData> datas;
- datas = windTowerStatusDatas.getContent();
- map.put("content", datas);// 结果集
- map.put("count", windTowerStatusDatas.getTotalElements());// 总记录数
- return map;
- }
- /**
- * 根据时间 分页查询条件 yh
- *
- * @param startTime 开始时间
- * @param endTime 结束时间
- * @return 过滤条件
- */
- Specification<WindTowerStatusData> specificationFindByTime(final String stationCode, final Date startTime, final Date endTime, final String no) {
- return (Specification<WindTowerStatusData>) (root, criteriaQuery, cb) -> {
- List<Predicate> predicates = new ArrayList<>();
- predicates.add(cb.equal(root.get("stationCode").as(String.class), stationCode));
- if (!"ALL".equals(no)) {
- predicates.add(cb.equal(root.get("equipmentId").as(String.class), no));
- }
- if (startTime != null) {
- //大于或等于传入时间
- predicates.add(cb.greaterThanOrEqualTo(root.get("time").as(Date.class), startTime));
- }
- if (endTime != null) {
- //小于传入时间
- predicates.add(cb.lessThan(root.get("time").as(Date.class), endTime));
- }
- //添加排序的功能
- return cb.and(predicates.toArray(new Predicate[predicates.size()]));
- };
- }
- /**
- * 查询条件 yh
- *
- * @param startTime 开始时间
- * @param endTime 结束时间
- * @param no 设备编号
- * @return 过滤条件
- */
- Specification<WindTowerStatusData> Specification(final Date startTime, final Date endTime, final Integer no) {
- return (Specification<WindTowerStatusData>) (root, criteriaQuery, cb) -> {
- List<Predicate> predicates = new ArrayList<>();
- if (startTime != null) {
- //大于或等于传入时间
- predicates.add(cb.greaterThanOrEqualTo(root.get("time").as(Date.class), startTime));
- }
- if (endTime != null) {
- //小于传入时间
- predicates.add(cb.lessThan(root.get("time").as(Date.class), endTime));
- }
- if (no != null) {
- predicates.add(cb.equal(root.get("equipmentNo").as(Integer.class), no));
- }
- //添加排序的功能
- return cb.and(predicates.toArray(new Predicate[predicates.size()]));
- };
- }
- /**
- * 获取测风塔数据实体所有私有属性名称集合
- *
- * @return 属性名称集合
- */
- public List<String> getWindTowerStatusDataAttributeName() {
- List<String> attributeName = new ArrayList<>();
- Class<WindTowerStatusData> windTowerStatusData = WindTowerStatusData.class;
- Class c = windTowerStatusData;
- Field[] fs = c.getDeclaredFields();
- for (Field f : fs) {
- attributeName.add(f.getName());
- }
- return attributeName;
- }
- }
|