package com.gkhy.testFourierSpecialGasMonitor.service.impl; import com.gkhy.testFourierSpecialGasMonitor.commons.domain.Result; import com.gkhy.testFourierSpecialGasMonitor.commons.domain.SearchResult; import com.gkhy.testFourierSpecialGasMonitor.commons.model.PageQuery; import com.gkhy.testFourierSpecialGasMonitor.entity.DeviceExceptionLog; import com.gkhy.testFourierSpecialGasMonitor.entity.query.DeviceExcLogPageQuery; import com.gkhy.testFourierSpecialGasMonitor.repository.DeviceExceptionLogRepository; import com.gkhy.testFourierSpecialGasMonitor.service.DeviceExceptionLogService; 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 javax.annotation.Resource; import javax.persistence.criteria.CriteriaBuilder; import javax.persistence.criteria.CriteriaQuery; import javax.persistence.criteria.Predicate; import javax.persistence.criteria.Root; import java.time.LocalDateTime; import java.util.HashSet; import java.util.List; import java.util.Set; /** * @author Mr.huang * @decription * @date 2023/8/8 15:12 */ @Service public class DeviceExceptionLogServiceImpl implements DeviceExceptionLogService { @Resource private DeviceExceptionLogRepository deviceExceptionLogRepository; @Override public DeviceExceptionLog save(DeviceExceptionLog log) { return deviceExceptionLogRepository.save(log); } @Override public Result deviceExcLogPage(PageQuery pageQuery) { SearchResult> searchResult = new SearchResult<>(); searchResult.setPageIndex(pageQuery.getPageIndex()); searchResult.setPageSize(pageQuery.getPageSize()); searchResult.setSuccess(); Pageable pageable = PageRequest.of(pageQuery.getPageIndex()-1, pageQuery.getPageSize(), Sort.Direction.DESC, "time"); Specification specification = new Specification() { @Override public Predicate toPredicate(Root root, CriteriaQuery query, CriteriaBuilder criteriaBuilder) { Set predicateList = new HashSet<>(); DeviceExcLogPageQuery searchParams = pageQuery.getSearchParams(); if (searchParams != null && searchParams.getStartTime() != null && searchParams.getEndTime() != null){ predicateList.add(criteriaBuilder.between(root.get("time").as(LocalDateTime.class),searchParams.getStartTime(),searchParams.getEndTime())); } return criteriaBuilder.and(predicateList.toArray(new Predicate[predicateList.size()])); } }; Page pageResult = deviceExceptionLogRepository.findAll(specification,pageable); searchResult.setTotal(pageResult.getTotalElements()); searchResult.setPages(pageResult.getTotalPages()); searchResult.setData(pageResult.getContent()); return searchResult; } @Override public DeviceExceptionLog getLastLog() { return deviceExceptionLogRepository.getLastLog(); } }