添加querydsl
parent
a4ba863c01
commit
9a548a08dc
@ -0,0 +1,25 @@
|
|||||||
|
package com.baiyee.adcallback.api.vo;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Enzo
|
||||||
|
* @date : 2023/6/19
|
||||||
|
*/
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
public class QueryImeiVO {
|
||||||
|
|
||||||
|
|
||||||
|
private String imei;
|
||||||
|
|
||||||
|
private String tag;
|
||||||
|
|
||||||
|
private String gmtCreate;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,25 @@
|
|||||||
|
package com.baiyee.adcallback.api.vo;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Enzo
|
||||||
|
* @date : 2022/11/9
|
||||||
|
*/
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
public class QueryQuantityVO {
|
||||||
|
|
||||||
|
|
||||||
|
private Long num;
|
||||||
|
|
||||||
|
private String tag;
|
||||||
|
|
||||||
|
private String gmtCreate;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,20 @@
|
|||||||
|
package com.baiyee.adcallback.config;
|
||||||
|
|
||||||
|
import com.querydsl.jpa.impl.JPAQueryFactory;
|
||||||
|
import org.springframework.context.annotation.Bean;
|
||||||
|
import org.springframework.context.annotation.Configuration;
|
||||||
|
|
||||||
|
import javax.persistence.EntityManager;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Enzo
|
||||||
|
* @date : 2023/6/20
|
||||||
|
*/
|
||||||
|
@Configuration
|
||||||
|
public class JpaConfig {
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
public JPAQueryFactory jpaQueryFactory(EntityManager entityManager){
|
||||||
|
return new JPAQueryFactory(entityManager);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,16 @@
|
|||||||
|
package com.baiyee.adcallback.repository;
|
||||||
|
|
||||||
|
import org.springframework.data.jpa.repository.JpaRepository;
|
||||||
|
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
|
||||||
|
import org.springframework.data.querydsl.QuerydslPredicateExecutor;
|
||||||
|
import org.springframework.data.repository.NoRepositoryBean;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Enzo
|
||||||
|
* @param <T>
|
||||||
|
* @param <ID>
|
||||||
|
*/
|
||||||
|
@NoRepositoryBean
|
||||||
|
public interface BaseRepository<T, ID> extends JpaRepository<T, ID>, JpaSpecificationExecutor <T>, QuerydslPredicateExecutor<T> {
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,290 @@
|
|||||||
|
package com.baiyee.adcallback.service;
|
||||||
|
|
||||||
|
import com.baiyee.adcallback.repository.BaseRepository;
|
||||||
|
import com.querydsl.core.types.OrderSpecifier;
|
||||||
|
import com.querydsl.core.types.Predicate;
|
||||||
|
import com.querydsl.jpa.impl.JPAQueryFactory;
|
||||||
|
import com.querydsl.jpa.sql.JPASQLQuery;
|
||||||
|
import com.querydsl.sql.DerbyTemplates;
|
||||||
|
import com.querydsl.sql.SQLTemplates;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.data.domain.Example;
|
||||||
|
import org.springframework.data.domain.Page;
|
||||||
|
import org.springframework.data.domain.Pageable;
|
||||||
|
import org.springframework.data.domain.Sort;
|
||||||
|
import org.springframework.data.jpa.domain.Specification;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
|
import javax.persistence.EntityManager;
|
||||||
|
import javax.persistence.PersistenceContext;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Optional;
|
||||||
|
import java.util.function.Function;
|
||||||
|
|
||||||
|
public class AbstractService<T, ID> implements BaseService <T, ID>{
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
protected BaseRepository<T,ID> baseRepository;
|
||||||
|
|
||||||
|
@PersistenceContext
|
||||||
|
protected EntityManager entityManager;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Transactional(readOnly = true, rollbackFor = Throwable.class)
|
||||||
|
public List<T> findAll() {
|
||||||
|
return this.baseRepository.findAll();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Transactional(readOnly = true, rollbackFor = Throwable.class)
|
||||||
|
public List<T> findAll(Sort sort) {
|
||||||
|
return this.baseRepository.findAll(sort);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Transactional(readOnly = true, rollbackFor = Throwable.class)
|
||||||
|
public List<T> findAllById(Iterable<ID> ids) {
|
||||||
|
return this.baseRepository.findAllById(ids);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Transactional(rollbackFor = Throwable.class)
|
||||||
|
public <S extends T> List<S> saveAll(Iterable<S> entities) {
|
||||||
|
return this.baseRepository.saveAll(entities);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Transactional(rollbackFor = Throwable.class)
|
||||||
|
public void flush() {
|
||||||
|
this.baseRepository.flush();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Transactional(rollbackFor = Throwable.class)
|
||||||
|
public <S extends T> S saveAndFlush(S entity) {
|
||||||
|
return this.baseRepository.saveAndFlush(entity);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Transactional(rollbackFor = Throwable.class)
|
||||||
|
@Deprecated
|
||||||
|
public void deleteInBatch(Iterable<T> entities) {
|
||||||
|
this.baseRepository.deleteInBatch(entities);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Transactional(rollbackFor = Throwable.class)
|
||||||
|
public void deleteAllInBatch() {
|
||||||
|
this.baseRepository.deleteAllInBatch();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Transactional(readOnly = true, rollbackFor = Throwable.class)
|
||||||
|
@Deprecated
|
||||||
|
public T getOne(ID id) {
|
||||||
|
return this.baseRepository.getOne(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Transactional(readOnly = true, rollbackFor = Throwable.class)
|
||||||
|
public <S extends T> List<S> findAll(Example<S> example) {
|
||||||
|
return this.baseRepository.findAll(example);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Transactional(readOnly = true, rollbackFor = Throwable.class)
|
||||||
|
public <S extends T> List<S> findAll(Example<S> example, Sort sort) {
|
||||||
|
return this.baseRepository.findAll(example, sort);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Transactional(readOnly = true, rollbackFor = Throwable.class)
|
||||||
|
public Page<T> findAll(Pageable pageable) {
|
||||||
|
return this.baseRepository.findAll(pageable);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Transactional(rollbackFor = Throwable.class)
|
||||||
|
public <S extends T> S save(S entity) {
|
||||||
|
return this.baseRepository.save(entity);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Transactional(readOnly = true, rollbackFor = Throwable.class)
|
||||||
|
public Optional<T> findById(ID id) {
|
||||||
|
return this.baseRepository.findById(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Transactional(readOnly = true, rollbackFor = Throwable.class)
|
||||||
|
public boolean existsById(ID id) {
|
||||||
|
return this.baseRepository.existsById(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Transactional(readOnly = true, rollbackFor = Throwable.class)
|
||||||
|
public long count() {
|
||||||
|
return this.baseRepository.count();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Transactional(rollbackFor = Throwable.class)
|
||||||
|
public void deleteById(ID id) {
|
||||||
|
this.baseRepository.deleteById(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Transactional(rollbackFor = Throwable.class)
|
||||||
|
public void delete(T entity) {
|
||||||
|
this.baseRepository.delete(entity);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Transactional(rollbackFor = Throwable.class)
|
||||||
|
public void deleteAll(Iterable<? extends T> entities) {
|
||||||
|
this.baseRepository.deleteAll(entities);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Transactional(rollbackFor = Throwable.class)
|
||||||
|
public void deleteAll() {
|
||||||
|
this.baseRepository.deleteAll();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Transactional(readOnly = true, rollbackFor = Throwable.class)
|
||||||
|
public <S extends T> Optional<S> findOne(Example<S> example) {
|
||||||
|
return this.baseRepository.findOne(example);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Transactional(readOnly = true, rollbackFor = Throwable.class)
|
||||||
|
public <S extends T> Page<S> findAll(Example<S> example, Pageable pageable) {
|
||||||
|
return this.baseRepository.findAll(example, pageable);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Transactional(readOnly = true, rollbackFor = Throwable.class)
|
||||||
|
public <S extends T> long count(Example<S> example) {
|
||||||
|
return this.baseRepository.count(example);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Transactional(readOnly = true, rollbackFor = Throwable.class)
|
||||||
|
public <S extends T> boolean exists(Example<S> example) {
|
||||||
|
return this.baseRepository.exists(example);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Transactional(readOnly = true, rollbackFor = Throwable.class)
|
||||||
|
public Optional<T> findOne(Specification<T> spec) {
|
||||||
|
return this.baseRepository.findOne(spec);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Transactional(readOnly = true, rollbackFor = Throwable.class)
|
||||||
|
public List<T> findAll(Specification<T> spec) {
|
||||||
|
return this.baseRepository.findAll(spec);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Transactional(readOnly = true, rollbackFor = Throwable.class)
|
||||||
|
public Page<T> findAll(Specification<T> spec, Pageable pageable) {
|
||||||
|
return this.baseRepository.findAll(spec, pageable);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Transactional(readOnly = true, rollbackFor = Throwable.class)
|
||||||
|
public List<T> findAll(Specification<T> spec, Sort sort) {
|
||||||
|
return this.baseRepository.findAll(spec, sort);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Transactional(readOnly = true, rollbackFor = Throwable.class)
|
||||||
|
public long count(Specification<T> spec) {
|
||||||
|
return this.baseRepository.count(spec);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Transactional(readOnly = true, rollbackFor = Throwable.class)
|
||||||
|
public Optional<T> findOne(Predicate predicate) {
|
||||||
|
return this.baseRepository.findOne(predicate);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Transactional(readOnly = true, rollbackFor = Throwable.class)
|
||||||
|
public Iterable<T> findAll(Predicate predicate) {
|
||||||
|
return this.baseRepository.findAll(predicate);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Transactional(readOnly = true, rollbackFor = Throwable.class)
|
||||||
|
public Iterable<T> findAll(Predicate predicate, Sort sort) {
|
||||||
|
return this.baseRepository.findAll(predicate, sort);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Transactional(readOnly = true, rollbackFor = Throwable.class)
|
||||||
|
public Iterable<T> findAll(Predicate predicate, OrderSpecifier<?>... orders) {
|
||||||
|
return this.baseRepository.findAll(predicate, orders);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Transactional(readOnly = true, rollbackFor = Throwable.class)
|
||||||
|
public Iterable<T> findAll(OrderSpecifier<?>... orders) {
|
||||||
|
return this.baseRepository.findAll(orders);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Transactional(readOnly = true, rollbackFor = Throwable.class)
|
||||||
|
public Page<T> findAll(Predicate predicate, Pageable pageable) {
|
||||||
|
return this.baseRepository.findAll(predicate, pageable);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Transactional(readOnly = true, rollbackFor = Throwable.class)
|
||||||
|
public long count(Predicate predicate) {
|
||||||
|
return this.baseRepository.count(predicate);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Transactional(readOnly = true, rollbackFor = Throwable.class)
|
||||||
|
public boolean exists(Predicate predicate) {
|
||||||
|
return this.baseRepository.exists(predicate);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// -----------------------
|
||||||
|
|
||||||
|
|
||||||
|
protected JPAQueryFactory newQuery() {
|
||||||
|
return new JPAQueryFactory(this.entityManager);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
protected JPASQLQuery<T> newJPAQuery() {
|
||||||
|
SQLTemplates templates = new DerbyTemplates();
|
||||||
|
return new JPASQLQuery<>(entityManager, templates);
|
||||||
|
}
|
||||||
|
|
||||||
|
@SuppressWarnings({ "unchecked", "hiding" })
|
||||||
|
protected <T> T repository() {
|
||||||
|
return (T) this.baseRepository;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Transactional(rollbackFor = Throwable.class)
|
||||||
|
public <R> R apply(Function<JPAQueryFactory, R> function) {
|
||||||
|
return function.apply(this.newQuery());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Transactional(rollbackFor = Throwable.class)
|
||||||
|
public <R> R applyJPA(Function<JPASQLQuery<T>, R> function) {
|
||||||
|
return function.apply(this.newJPAQuery());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Transactional(readOnly = true, rollbackFor = Throwable.class)
|
||||||
|
public <R> R applyReadOnly(Function<JPAQueryFactory, R> function) {
|
||||||
|
return function.apply(this.newQuery());
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,9 @@
|
|||||||
|
package com.baiyee.adcallback.service;
|
||||||
|
|
||||||
|
import org.springframework.data.jpa.repository.JpaRepository;
|
||||||
|
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
|
||||||
|
import org.springframework.data.querydsl.QuerydslPredicateExecutor;
|
||||||
|
|
||||||
|
public interface BaseService<T, ID> extends JpaRepository<T, ID>, JpaSpecificationExecutor <T>, QuerydslPredicateExecutor<T> {
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,26 @@
|
|||||||
|
package com.baiyee.adcallback.service;
|
||||||
|
|
||||||
|
import com.baiyee.adcallback.api.dto.DmpMonitorJpaDto;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Enzo
|
||||||
|
* @date : 2023/6/21
|
||||||
|
*/
|
||||||
|
public interface BdBackDateService {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 条件查询
|
||||||
|
* @param toUpperCase null
|
||||||
|
* @param empty ""
|
||||||
|
* @param imeiTag __imei__
|
||||||
|
* @param startTime begin time
|
||||||
|
* @param endTime end time
|
||||||
|
* @param tagList tag
|
||||||
|
* @param flag num or link
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
List<DmpMonitorJpaDto> queryByTagAndTimeAndFlag(String toUpperCase, String empty, String imeiTag, Date startTime, Date endTime, List<String> tagList, Integer flag);
|
||||||
|
}
|
@ -0,0 +1,30 @@
|
|||||||
|
package com.baiyee.adcallback.service;
|
||||||
|
|
||||||
|
import com.baiyee.adcallback.api.dto.DmpMonitorJpaDto;
|
||||||
|
import com.baiyee.adcallback.api.dto.DmpMonitorNumDto;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Enzo
|
||||||
|
* @date 2023-6-21
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public interface DmpMonitorV2Service {
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询数量
|
||||||
|
* @param dmpMonitorNumDto
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
Map<String, Object> queryNumByTags(DmpMonitorNumDto dmpMonitorNumDto);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 生成链接
|
||||||
|
* @param dmpMonitorNumDto
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
Map<String, List<DmpMonitorJpaDto>> getDmpImeiLink(DmpMonitorNumDto dmpMonitorNumDto);
|
||||||
|
}
|
@ -0,0 +1,26 @@
|
|||||||
|
package com.baiyee.adcallback.service;
|
||||||
|
|
||||||
|
import com.baiyee.adcallback.api.dto.DmpMonitorJpaDto;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Enzo
|
||||||
|
* @date : 2023/6/21
|
||||||
|
*/
|
||||||
|
public interface GdtBackDateService {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 条件查询
|
||||||
|
* @param toUpperCase null
|
||||||
|
* @param empty ""
|
||||||
|
* @param imeiTag __imei__
|
||||||
|
* @param startTime begin time
|
||||||
|
* @param endTime end time
|
||||||
|
* @param tagList tag
|
||||||
|
* @param flag num or link
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
List<DmpMonitorJpaDto> queryByTagAndTimeAndFlag(String toUpperCase, String empty, String imeiTag, Date startTime, Date endTime, List<String> tagList, Integer flag);
|
||||||
|
}
|
@ -0,0 +1,26 @@
|
|||||||
|
package com.baiyee.adcallback.service;
|
||||||
|
|
||||||
|
import com.baiyee.adcallback.api.dto.DmpMonitorJpaDto;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Enzo
|
||||||
|
* @date : 2023/6/21
|
||||||
|
*/
|
||||||
|
|
||||||
|
public interface JlV1BackDataService {
|
||||||
|
/**
|
||||||
|
* 条件查询
|
||||||
|
* @param toUpperCase null
|
||||||
|
* @param empty ""
|
||||||
|
* @param imeiTag __imei__
|
||||||
|
* @param startTime begin time
|
||||||
|
* @param endTime end time
|
||||||
|
* @param tagList tag
|
||||||
|
* @param flag num or link
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
List<DmpMonitorJpaDto> queryByTagAndTimeAndFlag(String toUpperCase, String empty, String imeiTag, Date startTime, Date endTime, List<String> tagList, Integer flag);
|
||||||
|
}
|
@ -0,0 +1,26 @@
|
|||||||
|
package com.baiyee.adcallback.service;
|
||||||
|
|
||||||
|
import com.baiyee.adcallback.api.dto.DmpMonitorJpaDto;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Enzo
|
||||||
|
* @date : 2023/6/21
|
||||||
|
*/
|
||||||
|
public interface JlV2BackDataService {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 条件查询
|
||||||
|
* @param toUpperCase null
|
||||||
|
* @param empty ""
|
||||||
|
* @param imeiTag __imei__
|
||||||
|
* @param startTime begin time
|
||||||
|
* @param endTime end time
|
||||||
|
* @param tagList tag
|
||||||
|
* @param flag num or link
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
List<DmpMonitorJpaDto> queryByTagAndTimeAndFlag(String toUpperCase, String empty, String imeiTag, Date startTime, Date endTime, List<String> tagList, Integer flag);
|
||||||
|
}
|
@ -0,0 +1,26 @@
|
|||||||
|
package com.baiyee.adcallback.service;
|
||||||
|
|
||||||
|
import com.baiyee.adcallback.api.dto.DmpMonitorJpaDto;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Enzo
|
||||||
|
* @date : 2023/6/21
|
||||||
|
*/
|
||||||
|
public interface KsBackDateService {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 条件查询
|
||||||
|
* @param toUpperCase null
|
||||||
|
* @param empty ""
|
||||||
|
* @param imeiTag __imei__
|
||||||
|
* @param startTime begin time
|
||||||
|
* @param endTime end time
|
||||||
|
* @param tagList tag
|
||||||
|
* @param flag num or link
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
List<DmpMonitorJpaDto> queryByTagAndTimeAndFlag(String toUpperCase, String empty, String imeiTag, Date startTime, Date endTime, List<String> tagList, Integer flag);
|
||||||
|
}
|
@ -0,0 +1,26 @@
|
|||||||
|
package com.baiyee.adcallback.service;
|
||||||
|
|
||||||
|
import com.baiyee.adcallback.api.dto.DmpMonitorJpaDto;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Enzo
|
||||||
|
* @date : 2023/6/21
|
||||||
|
*/
|
||||||
|
public interface UcBackDateService {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 条件查询
|
||||||
|
* @param toUpperCase null
|
||||||
|
* @param empty ""
|
||||||
|
* @param imeiTag __imei__
|
||||||
|
* @param startTime begin time
|
||||||
|
* @param endTime end time
|
||||||
|
* @param tagList tag
|
||||||
|
* @param flag num or link
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
List<DmpMonitorJpaDto> queryByTagAndTimeAndFlag(String toUpperCase, String empty, String imeiTag, Date startTime, Date endTime, List<String> tagList, Integer flag);
|
||||||
|
}
|
@ -0,0 +1,26 @@
|
|||||||
|
package com.baiyee.adcallback.service;
|
||||||
|
|
||||||
|
import com.baiyee.adcallback.api.dto.DmpMonitorJpaDto;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Enzo
|
||||||
|
* @date : 2023/6/21
|
||||||
|
*/
|
||||||
|
public interface VivoBackDateService {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 条件查询
|
||||||
|
* @param toUpperCase null
|
||||||
|
* @param empty ""
|
||||||
|
* @param imeiTag __imei__
|
||||||
|
* @param startTime begin time
|
||||||
|
* @param endTime end time
|
||||||
|
* @param tagList tag
|
||||||
|
* @param flag num or link
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
List<DmpMonitorJpaDto> queryByTagAndTimeAndFlag(String toUpperCase, String empty, String imeiTag, Date startTime, Date endTime, List<String> tagList, Integer flag);
|
||||||
|
}
|
@ -0,0 +1,72 @@
|
|||||||
|
package com.baiyee.adcallback.service.impl;
|
||||||
|
|
||||||
|
import cn.hutool.core.convert.Convert;
|
||||||
|
import cn.hutool.core.text.CharSequenceUtil;
|
||||||
|
import com.baiyee.adcallback.api.constants.SqlConstant;
|
||||||
|
import com.baiyee.adcallback.api.dto.DmpMonitorJpaDto;
|
||||||
|
import com.baiyee.adcallback.api.vo.QueryImeiVO;
|
||||||
|
import com.baiyee.adcallback.api.vo.QueryQuantityVO;
|
||||||
|
import com.baiyee.adcallback.common.constant.DataConstant;
|
||||||
|
import com.baiyee.adcallback.repository.entity.QTbBdNewBackdataEntity;
|
||||||
|
import com.baiyee.adcallback.repository.entity.TbBdNewBackdataEntity;
|
||||||
|
import com.baiyee.adcallback.service.AbstractService;
|
||||||
|
import com.baiyee.adcallback.service.BdBackDateService;
|
||||||
|
import com.querydsl.core.Tuple;
|
||||||
|
import com.querydsl.core.types.Projections;
|
||||||
|
import com.querydsl.core.types.SubQueryExpression;
|
||||||
|
import com.querydsl.core.types.dsl.Expressions;
|
||||||
|
import com.querydsl.core.types.dsl.SimpleTemplate;
|
||||||
|
import com.querydsl.core.types.dsl.StringPath;
|
||||||
|
import com.querydsl.core.types.dsl.StringTemplate;
|
||||||
|
import com.querydsl.sql.SQLExpressions;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Enzo
|
||||||
|
* @date : 2023/6/21
|
||||||
|
*/
|
||||||
|
|
||||||
|
@Service
|
||||||
|
@RequiredArgsConstructor
|
||||||
|
public class BdBackDataServiceImpl extends AbstractService<TbBdNewBackdataEntity, Long> implements BdBackDateService {
|
||||||
|
@Override
|
||||||
|
public List<DmpMonitorJpaDto> queryByTagAndTimeAndFlag
|
||||||
|
(String toUpperCase, String empty, String imeiTag, Date startTime, Date endTime, List<String> tagList, Integer flag) {
|
||||||
|
|
||||||
|
return this.applyJPA(query -> {
|
||||||
|
StringPath t3 = Expressions.stringPath("t3");
|
||||||
|
StringTemplate dateExpr;
|
||||||
|
QTbBdNewBackdataEntity bdNewBackdata = QTbBdNewBackdataEntity.tbBdNewBackdataEntity;
|
||||||
|
if (flag == 1) {
|
||||||
|
dateExpr = Expressions.stringTemplate(SqlConstant.DATE_EXPR, bdNewBackdata.gmtCreate);
|
||||||
|
SimpleTemplate<String> t3Tag = Expressions.template(String.class, "t3.tag");
|
||||||
|
SimpleTemplate<String> t3Imei = Expressions.template(String.class, "t3.imei");
|
||||||
|
SimpleTemplate<Date> t3Date = Expressions.template(Date.class, "t3.gmtCreate");
|
||||||
|
// 封装子查询
|
||||||
|
SubQueryExpression<Tuple> gmtCreate = SQLExpressions.select
|
||||||
|
(bdNewBackdata.imei, bdNewBackdata.tag,bdNewBackdata.gmtCreate.max().as(SqlConstant.CREATE_TIME)).from
|
||||||
|
(bdNewBackdata).where(bdNewBackdata.tag.in(tagList).and(bdNewBackdata.imei.ne(CharSequenceUtil.EMPTY).and
|
||||||
|
(bdNewBackdata.imei.ne(DataConstant.IMEI_NULL_TAG)).and(bdNewBackdata.imei.ne(DataConstant.IMEI_TAG)))).groupBy(bdNewBackdata.imei,bdNewBackdata.tag);
|
||||||
|
|
||||||
|
// 结果返回
|
||||||
|
List<QueryQuantityVO> voList = query.select(Projections.bean
|
||||||
|
(QueryQuantityVO.class, bdNewBackdata.imei.count().as("num"), bdNewBackdata.tag, dateExpr.as(SqlConstant.CREATE_TIME))).from
|
||||||
|
(bdNewBackdata).innerJoin(gmtCreate, t3).on(bdNewBackdata.imei.eq(t3Imei).and(bdNewBackdata.gmtCreate.eq(t3Date).and(bdNewBackdata.tag.eq(t3Tag)))).groupBy(dateExpr, bdNewBackdata.tag).fetch();
|
||||||
|
return Convert.toList(DmpMonitorJpaDto.class, voList);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 修改时间格式
|
||||||
|
dateExpr = Expressions.stringTemplate(SqlConstant.DATE_EXPR_V2, bdNewBackdata.gmtCreate);
|
||||||
|
|
||||||
|
List<QueryImeiVO> imeiVOList = query.select(Projections.bean
|
||||||
|
(QueryImeiVO.class, bdNewBackdata.imei, bdNewBackdata.tag, dateExpr.as(SqlConstant.CREATE_TIME))).distinct().from(bdNewBackdata).where
|
||||||
|
(bdNewBackdata.tag.in(tagList).and(bdNewBackdata.imei.ne(CharSequenceUtil.EMPTY).and(bdNewBackdata.imei.ne(DataConstant.IMEI_NULL_TAG)).and(bdNewBackdata.imei.ne
|
||||||
|
(DataConstant.IMEI_TAG)))).groupBy(bdNewBackdata.imei,bdNewBackdata.tag).fetch();
|
||||||
|
return Convert.toList(DmpMonitorJpaDto.class, imeiVOList);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,214 @@
|
|||||||
|
package com.baiyee.adcallback.service.impl;
|
||||||
|
|
||||||
|
import cn.hutool.core.collection.CollUtil;
|
||||||
|
import cn.hutool.core.convert.Convert;
|
||||||
|
import cn.hutool.core.date.DateUnit;
|
||||||
|
import cn.hutool.core.date.DateUtil;
|
||||||
|
import cn.hutool.core.text.CharSequenceUtil;
|
||||||
|
import com.baiyee.adcallback.api.dto.DmpMonitorJpaDto;
|
||||||
|
import com.baiyee.adcallback.api.dto.DmpMonitorNumDto;
|
||||||
|
import com.baiyee.adcallback.common.constant.DataConstant;
|
||||||
|
import com.baiyee.adcallback.common.enums.DeliveryPlatformEnum;
|
||||||
|
import com.baiyee.adcallback.config.pojo.DeliveryStatisticDTO;
|
||||||
|
import com.baiyee.adcallback.repository.TbDeliveryStatisticEntityRepository;
|
||||||
|
import com.baiyee.adcallback.repository.entity.TbDeliveryStatisticEntity;
|
||||||
|
import com.baiyee.adcallback.service.*;
|
||||||
|
import com.google.common.collect.Lists;
|
||||||
|
import com.google.common.collect.Maps;
|
||||||
|
import com.google.common.collect.Sets;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.util.*;
|
||||||
|
import java.util.concurrent.CompletableFuture;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Enzo
|
||||||
|
* @date 2023-6-21
|
||||||
|
*/
|
||||||
|
@Slf4j
|
||||||
|
@Service
|
||||||
|
@RequiredArgsConstructor
|
||||||
|
public class DmpMonitorV2ServiceImpl implements DmpMonitorV2Service {
|
||||||
|
|
||||||
|
private final JlV1BackDataService jlV1BackDataService;
|
||||||
|
|
||||||
|
private final JlV2BackDataService jlV2BackDataService;
|
||||||
|
|
||||||
|
private final VivoBackDateService vivoBackDateService;
|
||||||
|
|
||||||
|
private final GdtBackDateService gdtBackDateService;
|
||||||
|
|
||||||
|
private final KsBackDateService ksBackDateService;
|
||||||
|
|
||||||
|
private final UcBackDateService ucBackDateService;
|
||||||
|
|
||||||
|
private final BdBackDateService bdBackDateService;
|
||||||
|
|
||||||
|
private final TbDeliveryStatisticEntityRepository tbDeliveryStatisticEntityRepository;
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Map<String, Object> queryNumByTags(DmpMonitorNumDto dmpMonitorNumDto) {
|
||||||
|
HashMap<String, Object> map = new HashMap<>();
|
||||||
|
List<DmpMonitorJpaDto> mapData = getMapData(dmpMonitorNumDto, 1);
|
||||||
|
HashMap<String, List<DmpMonitorJpaDto>> numMapGroupByTag = new HashMap<>(8);
|
||||||
|
numMapGroupByTag.putAll(mapData.stream().collect(Collectors.groupingBy(DmpMonitorJpaDto::getTag, Collectors.toList())));
|
||||||
|
for (String key : dmpMonitorNumDto.getTags()) {
|
||||||
|
if (!numMapGroupByTag.containsKey(key)) {
|
||||||
|
numMapGroupByTag.put(key, new ArrayList<>());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for (String key : numMapGroupByTag.keySet()) {
|
||||||
|
List<HashMap<String, Object>> groupByTime = getGroupByTime
|
||||||
|
(dmpMonitorNumDto.getStartTime(), dmpMonitorNumDto.getEndTime(), numMapGroupByTag.get(key));
|
||||||
|
map.put(key, groupByTime);
|
||||||
|
}
|
||||||
|
return map;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Map<String, List<DmpMonitorJpaDto>> getDmpImeiLink(DmpMonitorNumDto dmpMonitorNumDto) {
|
||||||
|
List<DmpMonitorJpaDto> mapData = getMapData(dmpMonitorNumDto, 2);
|
||||||
|
return Maps.newHashMap(mapData.stream().collect(Collectors.groupingBy(DmpMonitorJpaDto::getTag, Collectors.toList())));
|
||||||
|
}
|
||||||
|
|
||||||
|
private List<DmpMonitorJpaDto> getMapData(DmpMonitorNumDto dmpMonitorNumDto, Integer flag) {
|
||||||
|
Map<Integer, List<String>> talbeMap = Maps.newHashMap();
|
||||||
|
List<DmpMonitorJpaDto> voList = Lists.newArrayList();
|
||||||
|
Date startTime = dmpMonitorNumDto.getStartTime();
|
||||||
|
Date endTime = dmpMonitorNumDto.getEndTime();
|
||||||
|
for (String tag : dmpMonitorNumDto.getTags()) {
|
||||||
|
for (DeliveryPlatformEnum value : DeliveryPlatformEnum.values()) {
|
||||||
|
if (tag.startsWith(value.getType().toLowerCase())) {
|
||||||
|
Integer num = value.getNum();
|
||||||
|
if (tag.lastIndexOf("v2") > 0) {
|
||||||
|
num = 7;
|
||||||
|
}
|
||||||
|
List<String> tagList =
|
||||||
|
talbeMap.containsKey(num) ?
|
||||||
|
talbeMap.get(num) : Lists.newArrayList();
|
||||||
|
tagList.add(tag);
|
||||||
|
talbeMap.put(num, tagList);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for (Map.Entry<Integer, List<String>> entry : talbeMap.entrySet()) {
|
||||||
|
Integer index = entry.getKey();
|
||||||
|
List<String> tagList = entry.getValue();
|
||||||
|
switch (index) {
|
||||||
|
case 1:
|
||||||
|
voList.addAll(jlV1BackDataService.queryByTagAndTimeAndFlag
|
||||||
|
(CharSequenceUtil.NULL.toUpperCase(), CharSequenceUtil.EMPTY, DataConstant.IMEI_TAG, startTime, endTime, tagList, flag));
|
||||||
|
break;
|
||||||
|
case 7:
|
||||||
|
// v2
|
||||||
|
voList.addAll(jlV2BackDataService.queryByTagAndTimeAndFlag
|
||||||
|
(CharSequenceUtil.NULL.toUpperCase(), CharSequenceUtil.EMPTY, DataConstant.IMEI_TAG, startTime, endTime, tagList, flag));
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
// 快手
|
||||||
|
voList.addAll(ksBackDateService.queryByTagAndTimeAndFlag
|
||||||
|
(CharSequenceUtil.NULL.toUpperCase(), CharSequenceUtil.EMPTY, DataConstant.IMEI_TAG, startTime, endTime, tagList, flag));
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
// UC
|
||||||
|
voList.addAll(ucBackDateService.queryByTagAndTimeAndFlag
|
||||||
|
(CharSequenceUtil.NULL.toUpperCase(), CharSequenceUtil.EMPTY, DataConstant.IMEI_TAG, startTime, endTime, tagList, flag));
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
// VIVO
|
||||||
|
voList.addAll(vivoBackDateService.queryByTagAndTimeAndFlag
|
||||||
|
(CharSequenceUtil.NULL.toUpperCase(), CharSequenceUtil.EMPTY, DataConstant.IMEI_TAG, startTime, endTime, tagList, flag));
|
||||||
|
break;
|
||||||
|
case 5:
|
||||||
|
//百度
|
||||||
|
voList.addAll(bdBackDateService.queryByTagAndTimeAndFlag
|
||||||
|
(CharSequenceUtil.NULL.toUpperCase(), CharSequenceUtil.EMPTY, DataConstant.IMEI_TAG, startTime, endTime, tagList, flag));
|
||||||
|
break;
|
||||||
|
case 6:
|
||||||
|
//广点通
|
||||||
|
voList.addAll(gdtBackDateService.queryByTagAndTimeAndFlag
|
||||||
|
(CharSequenceUtil.NULL.toUpperCase(), CharSequenceUtil.EMPTY, DataConstant.IMEI_TAG, startTime, endTime, tagList, flag));
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return flag == 1 ? voList : this.getDmpMonitorJpaDto(voList);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private List<HashMap<String, Object>> getGroupByTime(Date beginTime, Date endTime, List<DmpMonitorJpaDto> dto) {
|
||||||
|
List<HashMap<String, Object>> list = new ArrayList<>();
|
||||||
|
int betweenDay = (int) DateUtil.between(beginTime, endTime, DateUnit.DAY);
|
||||||
|
for (int i = 0; i <= betweenDay; i++) {
|
||||||
|
HashMap<String, Object> map = new HashMap<>();
|
||||||
|
String dateTime = DateUtil.format(DateUtil.offsetDay(beginTime, i), "yyyy-MM-dd");
|
||||||
|
if (!dto.isEmpty()) {
|
||||||
|
List<DmpMonitorJpaDto> collect = dto.stream().filter(c -> DateUtil.between(DateUtil.parseDate(dateTime),
|
||||||
|
DateUtil.parseDate(c.getGmtCreate()), DateUnit.DAY) == 0).collect(Collectors.toList());
|
||||||
|
if (!collect.isEmpty()) {
|
||||||
|
DmpMonitorJpaDto dmpMonitorJpaDto = collect.get(0);
|
||||||
|
map.put("date", dateTime);
|
||||||
|
map.put("num", dmpMonitorJpaDto.getNum());
|
||||||
|
} else {
|
||||||
|
map.put("date", dateTime);
|
||||||
|
map.put("num", 0);
|
||||||
|
}
|
||||||
|
list.add(map);
|
||||||
|
} else {
|
||||||
|
map.put("date", dateTime);
|
||||||
|
map.put("num", 0);
|
||||||
|
list.add(map);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private List<DmpMonitorJpaDto> getDmpMonitorJpaDto(List<DmpMonitorJpaDto> list) {
|
||||||
|
List<DmpMonitorJpaDto> tradeList = new ArrayList<>();
|
||||||
|
|
||||||
|
Map<String, List<DmpMonitorJpaDto>> stringCollectionMap =
|
||||||
|
list.stream().collect(Collectors.groupingBy(DmpMonitorJpaDto::getTag));
|
||||||
|
|
||||||
|
if (CollUtil.isNotEmpty(stringCollectionMap)) {
|
||||||
|
List<DmpMonitorJpaDto> newDataList = Lists.newArrayList();
|
||||||
|
List<DeliveryStatisticDTO> saveDataList = Lists.newArrayList();
|
||||||
|
for (Map.Entry<String, List<DmpMonitorJpaDto>> stringCollectionEntry : stringCollectionMap.entrySet()) {
|
||||||
|
String tagStr = stringCollectionEntry.getKey();
|
||||||
|
// 去除重复数据
|
||||||
|
Set<DmpMonitorJpaDto> dmpMonitorJpaDtoSet = Sets.newHashSet(stringCollectionEntry.getValue());
|
||||||
|
// 转换set
|
||||||
|
Set<DeliveryStatisticDTO> rawDataSet = Convert.toSet(DeliveryStatisticDTO.class, dmpMonitorJpaDtoSet);
|
||||||
|
// 查询数据
|
||||||
|
List<DeliveryStatisticDTO> tagLists = Convert.toList(DeliveryStatisticDTO.class, tbDeliveryStatisticEntityRepository.findByTag(tagStr, 0));
|
||||||
|
|
||||||
|
Set<DeliveryStatisticDTO> newDataSet = Sets.newHashSet(tagLists);
|
||||||
|
// 差集去除数据
|
||||||
|
List<DeliveryStatisticDTO> differentData = Lists.newArrayList(Sets.difference(rawDataSet, newDataSet));
|
||||||
|
// 保存将要插入数据
|
||||||
|
saveDataList.addAll(differentData);
|
||||||
|
List<DmpMonitorJpaDto> monitorJpaDtoList = Convert.toList(DmpMonitorJpaDto.class, differentData);
|
||||||
|
// 返回数据
|
||||||
|
newDataList.addAll(monitorJpaDtoList);
|
||||||
|
}
|
||||||
|
log.error("================ the save datalist size as {} ================", saveDataList.size());
|
||||||
|
if (CollUtil.isNotEmpty(saveDataList)) {
|
||||||
|
// 异步插入数据
|
||||||
|
CompletableFuture.runAsync(() -> {
|
||||||
|
List<TbDeliveryStatisticEntity> deliveryStatisticEntityList = Convert.toList(TbDeliveryStatisticEntity.class, saveDataList);
|
||||||
|
// 批量保存
|
||||||
|
tbDeliveryStatisticEntityRepository.saveAll(deliveryStatisticEntityList);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
log.error("================ the new datalist size as {} ================", newDataList.size());
|
||||||
|
return newDataList;
|
||||||
|
}
|
||||||
|
return tradeList;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,73 @@
|
|||||||
|
package com.baiyee.adcallback.service.impl;
|
||||||
|
|
||||||
|
import cn.hutool.core.convert.Convert;
|
||||||
|
import cn.hutool.core.text.CharSequenceUtil;
|
||||||
|
import com.baiyee.adcallback.api.constants.SqlConstant;
|
||||||
|
import com.baiyee.adcallback.api.dto.DmpMonitorJpaDto;
|
||||||
|
import com.baiyee.adcallback.api.vo.QueryImeiVO;
|
||||||
|
import com.baiyee.adcallback.api.vo.QueryQuantityVO;
|
||||||
|
import com.baiyee.adcallback.common.constant.DataConstant;
|
||||||
|
import com.baiyee.adcallback.repository.entity.QTbGdtNewBackdataEntity;
|
||||||
|
import com.baiyee.adcallback.repository.entity.TbGdtNewBackdataEntity;
|
||||||
|
import com.baiyee.adcallback.service.AbstractService;
|
||||||
|
import com.baiyee.adcallback.service.GdtBackDateService;
|
||||||
|
import com.querydsl.core.Tuple;
|
||||||
|
import com.querydsl.core.types.Projections;
|
||||||
|
import com.querydsl.core.types.SubQueryExpression;
|
||||||
|
import com.querydsl.core.types.dsl.Expressions;
|
||||||
|
import com.querydsl.core.types.dsl.SimpleTemplate;
|
||||||
|
import com.querydsl.core.types.dsl.StringPath;
|
||||||
|
import com.querydsl.core.types.dsl.StringTemplate;
|
||||||
|
import com.querydsl.sql.SQLExpressions;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Enzo
|
||||||
|
* @date : 2023/6/21
|
||||||
|
*/
|
||||||
|
|
||||||
|
@Service
|
||||||
|
@RequiredArgsConstructor
|
||||||
|
public class GdtBackDataServiceImpl extends AbstractService<TbGdtNewBackdataEntity,Long> implements GdtBackDateService {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<DmpMonitorJpaDto> queryByTagAndTimeAndFlag
|
||||||
|
(String toUpperCase, String empty, String imeiTag, Date startTime, Date endTime, List<String> tagList, Integer flag) {
|
||||||
|
|
||||||
|
return this.applyJPA(query -> {
|
||||||
|
StringPath t3 = Expressions.stringPath("t3");
|
||||||
|
StringTemplate dateExpr;
|
||||||
|
QTbGdtNewBackdataEntity gdtNewBackdata = QTbGdtNewBackdataEntity.tbGdtNewBackdataEntity;
|
||||||
|
if (flag == 1) {
|
||||||
|
dateExpr = Expressions.stringTemplate(SqlConstant.DATE_EXPR, gdtNewBackdata.gmtCreate);
|
||||||
|
SimpleTemplate<String> t3Tag = Expressions.template(String.class, "t3.tag");
|
||||||
|
SimpleTemplate<String> t3Imei = Expressions.template(String.class, "t3.imei");
|
||||||
|
SimpleTemplate<Date> t3Date = Expressions.template(Date.class, "t3.gmtCreate");
|
||||||
|
// 封装子查询
|
||||||
|
SubQueryExpression<Tuple> gmtCreate = SQLExpressions.select
|
||||||
|
(gdtNewBackdata.imei, gdtNewBackdata.tag,gdtNewBackdata.gmtCreate.max().as(SqlConstant.CREATE_TIME)).from
|
||||||
|
(gdtNewBackdata).where(gdtNewBackdata.tag.in(tagList).and(gdtNewBackdata.imei.ne(CharSequenceUtil.EMPTY).and
|
||||||
|
(gdtNewBackdata.imei.ne(DataConstant.IMEI_NULL_TAG)).and(gdtNewBackdata.imei.ne(DataConstant.IMEI_TAG)))).groupBy(gdtNewBackdata.imei,gdtNewBackdata.tag);
|
||||||
|
|
||||||
|
// 结果返回
|
||||||
|
List<QueryQuantityVO> voList = query.select(Projections.bean
|
||||||
|
(QueryQuantityVO.class, gdtNewBackdata.imei.count().as("num"), gdtNewBackdata.tag, dateExpr.as(SqlConstant.CREATE_TIME))).from
|
||||||
|
(gdtNewBackdata).innerJoin(gmtCreate, t3).on(gdtNewBackdata.imei.eq(t3Imei).and(gdtNewBackdata.gmtCreate.eq(t3Date).and(gdtNewBackdata.tag.eq(t3Tag)))).groupBy(dateExpr, gdtNewBackdata.tag).fetch();
|
||||||
|
return Convert.toList(DmpMonitorJpaDto.class, voList);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 修改时间格式
|
||||||
|
dateExpr = Expressions.stringTemplate(SqlConstant.DATE_EXPR_V2, gdtNewBackdata.gmtCreate);
|
||||||
|
|
||||||
|
List<QueryImeiVO> imeiVOList = query.select(Projections.bean
|
||||||
|
(QueryImeiVO.class, gdtNewBackdata.imei, gdtNewBackdata.tag, dateExpr.as(SqlConstant.CREATE_TIME))).distinct().from(gdtNewBackdata).where
|
||||||
|
(gdtNewBackdata.tag.in(tagList).and(gdtNewBackdata.imei.ne(CharSequenceUtil.EMPTY).and(gdtNewBackdata.imei.ne(DataConstant.IMEI_NULL_TAG)).and(gdtNewBackdata.imei.ne
|
||||||
|
(DataConstant.IMEI_TAG)))).groupBy(gdtNewBackdata.imei,gdtNewBackdata.tag).fetch();
|
||||||
|
return Convert.toList(DmpMonitorJpaDto.class, imeiVOList);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,72 @@
|
|||||||
|
package com.baiyee.adcallback.service.impl;
|
||||||
|
|
||||||
|
import cn.hutool.core.convert.Convert;
|
||||||
|
import cn.hutool.core.text.CharSequenceUtil;
|
||||||
|
import com.baiyee.adcallback.api.constants.SqlConstant;
|
||||||
|
import com.baiyee.adcallback.api.dto.DmpMonitorJpaDto;
|
||||||
|
import com.baiyee.adcallback.api.vo.QueryImeiVO;
|
||||||
|
import com.baiyee.adcallback.api.vo.QueryQuantityVO;
|
||||||
|
import com.baiyee.adcallback.common.constant.DataConstant;
|
||||||
|
import com.baiyee.adcallback.repository.entity.QTbJLBackDataV1Entity;
|
||||||
|
import com.baiyee.adcallback.repository.entity.TbJLBackDataV1Entity;
|
||||||
|
import com.baiyee.adcallback.service.AbstractService;
|
||||||
|
import com.baiyee.adcallback.service.JlV1BackDataService;
|
||||||
|
import com.querydsl.core.Tuple;
|
||||||
|
import com.querydsl.core.types.Projections;
|
||||||
|
import com.querydsl.core.types.SubQueryExpression;
|
||||||
|
import com.querydsl.core.types.dsl.Expressions;
|
||||||
|
import com.querydsl.core.types.dsl.SimpleTemplate;
|
||||||
|
import com.querydsl.core.types.dsl.StringPath;
|
||||||
|
import com.querydsl.core.types.dsl.StringTemplate;
|
||||||
|
import com.querydsl.sql.SQLExpressions;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Enzo
|
||||||
|
* @date : 2023/6/21
|
||||||
|
*/
|
||||||
|
@Service
|
||||||
|
@RequiredArgsConstructor
|
||||||
|
public class JlV1BackDataServiceImpl extends AbstractService<TbJLBackDataV1Entity, Long> implements JlV1BackDataService {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<DmpMonitorJpaDto> queryByTagAndTimeAndFlag
|
||||||
|
(String toUpperCase, String empty, String imeiTag, Date startTime, Date endTime, List<String> tagList, Integer flag) {
|
||||||
|
|
||||||
|
return this.applyJPA(query -> {
|
||||||
|
StringPath t3 = Expressions.stringPath("t3");
|
||||||
|
StringTemplate dateExpr;
|
||||||
|
QTbJLBackDataV1Entity v1Entity = QTbJLBackDataV1Entity.tbJLBackDataV1Entity;
|
||||||
|
if (flag == 1) {
|
||||||
|
dateExpr = Expressions.stringTemplate(SqlConstant.DATE_EXPR, v1Entity.gmtCreate);
|
||||||
|
SimpleTemplate<String> t3Tag = Expressions.template(String.class, "t3.tag");
|
||||||
|
SimpleTemplate<String> t3Imei = Expressions.template(String.class, "t3.imei");
|
||||||
|
SimpleTemplate<Date> t3Date = Expressions.template(Date.class, "t3.gmtCreate");
|
||||||
|
// 封装子查询
|
||||||
|
SubQueryExpression<Tuple> gmtCreate = SQLExpressions.select
|
||||||
|
(v1Entity.imei, v1Entity.tag,v1Entity.gmtCreate.max().as(SqlConstant.CREATE_TIME)).from
|
||||||
|
(v1Entity).where(v1Entity.tag.in(tagList).and(v1Entity.imei.ne(CharSequenceUtil.EMPTY).and
|
||||||
|
(v1Entity.imei.ne(DataConstant.IMEI_NULL_TAG)).and(v1Entity.imei.ne(DataConstant.IMEI_TAG)))).groupBy(v1Entity.imei,v1Entity.tag);
|
||||||
|
|
||||||
|
// 结果返回
|
||||||
|
List<QueryQuantityVO> voList = query.select(Projections.bean
|
||||||
|
(QueryQuantityVO.class, v1Entity.imei.count().as("num"), v1Entity.tag, dateExpr.as(SqlConstant.CREATE_TIME))).from
|
||||||
|
(v1Entity).innerJoin(gmtCreate, t3).on(v1Entity.imei.eq(t3Imei).and(v1Entity.gmtCreate.eq(t3Date).and(v1Entity.tag.eq(t3Tag)))).groupBy(dateExpr, v1Entity.tag).fetch();
|
||||||
|
return Convert.toList(DmpMonitorJpaDto.class, voList);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 修改时间格式
|
||||||
|
dateExpr = Expressions.stringTemplate(SqlConstant.DATE_EXPR_V2, v1Entity.gmtCreate);
|
||||||
|
|
||||||
|
List<QueryImeiVO> imeiVOList = query.select(Projections.bean
|
||||||
|
(QueryImeiVO.class, v1Entity.imei, v1Entity.tag, dateExpr.as(SqlConstant.CREATE_TIME))).distinct().from(v1Entity).where
|
||||||
|
(v1Entity.tag.in(tagList).and(v1Entity.imei.ne(CharSequenceUtil.EMPTY).and(v1Entity.imei.ne(DataConstant.IMEI_NULL_TAG)).and(v1Entity.imei.ne
|
||||||
|
(DataConstant.IMEI_TAG)))).groupBy(v1Entity.imei,v1Entity.tag).fetch();
|
||||||
|
return Convert.toList(DmpMonitorJpaDto.class, imeiVOList);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,72 @@
|
|||||||
|
package com.baiyee.adcallback.service.impl;
|
||||||
|
|
||||||
|
import cn.hutool.core.convert.Convert;
|
||||||
|
import cn.hutool.core.text.CharSequenceUtil;
|
||||||
|
import com.baiyee.adcallback.api.constants.SqlConstant;
|
||||||
|
import com.baiyee.adcallback.api.dto.DmpMonitorJpaDto;
|
||||||
|
import com.baiyee.adcallback.api.vo.QueryImeiVO;
|
||||||
|
import com.baiyee.adcallback.api.vo.QueryQuantityVO;
|
||||||
|
import com.baiyee.adcallback.common.constant.DataConstant;
|
||||||
|
import com.baiyee.adcallback.repository.entity.QTbJLBackDataV2Entity;
|
||||||
|
import com.baiyee.adcallback.repository.entity.TbJLBackDataV2Entity;
|
||||||
|
import com.baiyee.adcallback.service.AbstractService;
|
||||||
|
import com.baiyee.adcallback.service.JlV2BackDataService;
|
||||||
|
import com.querydsl.core.Tuple;
|
||||||
|
import com.querydsl.core.types.Projections;
|
||||||
|
import com.querydsl.core.types.SubQueryExpression;
|
||||||
|
import com.querydsl.core.types.dsl.Expressions;
|
||||||
|
import com.querydsl.core.types.dsl.SimpleTemplate;
|
||||||
|
import com.querydsl.core.types.dsl.StringPath;
|
||||||
|
import com.querydsl.core.types.dsl.StringTemplate;
|
||||||
|
import com.querydsl.sql.SQLExpressions;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Enzo
|
||||||
|
* @date : 2023/6/21
|
||||||
|
*/
|
||||||
|
@Service
|
||||||
|
@RequiredArgsConstructor
|
||||||
|
public class JlV2BackDataServiceImpl extends AbstractService<TbJLBackDataV2Entity,Long> implements JlV2BackDataService {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<DmpMonitorJpaDto> queryByTagAndTimeAndFlag
|
||||||
|
(String toUpperCase, String empty, String imeiTag, Date startTime, Date endTime, List<String> tagList, Integer flag) {
|
||||||
|
|
||||||
|
return this.applyJPA(query -> {
|
||||||
|
StringPath t3 = Expressions.stringPath("t3");
|
||||||
|
StringTemplate dateExpr;
|
||||||
|
QTbJLBackDataV2Entity v2Entity = QTbJLBackDataV2Entity.tbJLBackDataV2Entity;
|
||||||
|
if (flag == 1) {
|
||||||
|
dateExpr = Expressions.stringTemplate(SqlConstant.DATE_EXPR, v2Entity.gmtCreate);
|
||||||
|
SimpleTemplate<String> t3Tag = Expressions.template(String.class, "t3.tag");
|
||||||
|
SimpleTemplate<String> t3Imei = Expressions.template(String.class, "t3.imei");
|
||||||
|
SimpleTemplate<Date> t3Date = Expressions.template(Date.class, "t3.gmtCreate");
|
||||||
|
// 封装子查询
|
||||||
|
SubQueryExpression<Tuple> gmtCreate = SQLExpressions.select
|
||||||
|
(v2Entity.imei, v2Entity.tag,v2Entity.gmtCreate.max().as(SqlConstant.CREATE_TIME)).from
|
||||||
|
(v2Entity).where(v2Entity.tag.in(tagList).and(v2Entity.imei.ne(CharSequenceUtil.EMPTY).and
|
||||||
|
(v2Entity.imei.ne(DataConstant.IMEI_NULL_TAG)).and(v2Entity.imei.ne(DataConstant.IMEI_TAG)))).groupBy(v2Entity.imei,v2Entity.tag);
|
||||||
|
|
||||||
|
// 结果返回
|
||||||
|
List<QueryQuantityVO> voList = query.select(Projections.bean
|
||||||
|
(QueryQuantityVO.class, v2Entity.imei.count().as("num"), v2Entity.tag, dateExpr.as(SqlConstant.CREATE_TIME))).from
|
||||||
|
(v2Entity).innerJoin(gmtCreate, t3).on(v2Entity.imei.eq(t3Imei).and(v2Entity.gmtCreate.eq(t3Date).and(v2Entity.tag.eq(t3Tag)))).groupBy(dateExpr, v2Entity.tag).fetch();
|
||||||
|
return Convert.toList(DmpMonitorJpaDto.class, voList);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 修改时间格式
|
||||||
|
dateExpr = Expressions.stringTemplate(SqlConstant.DATE_EXPR_V2, v2Entity.gmtCreate);
|
||||||
|
|
||||||
|
List<QueryImeiVO> imeiVOList = query.select(Projections.bean
|
||||||
|
(QueryImeiVO.class, v2Entity.imei, v2Entity.tag, dateExpr.as(SqlConstant.CREATE_TIME))).distinct().from(v2Entity).where
|
||||||
|
(v2Entity.tag.in(tagList).and(v2Entity.imei.ne(CharSequenceUtil.EMPTY).and(v2Entity.imei.ne(DataConstant.IMEI_NULL_TAG)).and(v2Entity.imei.ne
|
||||||
|
(DataConstant.IMEI_TAG)))).groupBy(v2Entity.imei,v2Entity.tag).fetch();
|
||||||
|
return Convert.toList(DmpMonitorJpaDto.class, imeiVOList);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,73 @@
|
|||||||
|
package com.baiyee.adcallback.service.impl;
|
||||||
|
|
||||||
|
import cn.hutool.core.convert.Convert;
|
||||||
|
import cn.hutool.core.text.CharSequenceUtil;
|
||||||
|
import com.baiyee.adcallback.api.constants.SqlConstant;
|
||||||
|
import com.baiyee.adcallback.api.dto.DmpMonitorJpaDto;
|
||||||
|
import com.baiyee.adcallback.api.vo.QueryImeiVO;
|
||||||
|
import com.baiyee.adcallback.api.vo.QueryQuantityVO;
|
||||||
|
import com.baiyee.adcallback.common.constant.DataConstant;
|
||||||
|
import com.baiyee.adcallback.repository.entity.QTbKSNewBackdataEntity;
|
||||||
|
import com.baiyee.adcallback.repository.entity.TbKSNewBackdataEntity;
|
||||||
|
import com.baiyee.adcallback.service.AbstractService;
|
||||||
|
import com.baiyee.adcallback.service.KsBackDateService;
|
||||||
|
import com.querydsl.core.Tuple;
|
||||||
|
import com.querydsl.core.types.Projections;
|
||||||
|
import com.querydsl.core.types.SubQueryExpression;
|
||||||
|
import com.querydsl.core.types.dsl.Expressions;
|
||||||
|
import com.querydsl.core.types.dsl.SimpleTemplate;
|
||||||
|
import com.querydsl.core.types.dsl.StringPath;
|
||||||
|
import com.querydsl.core.types.dsl.StringTemplate;
|
||||||
|
import com.querydsl.sql.SQLExpressions;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Enzo
|
||||||
|
* @date : 2023/6/21
|
||||||
|
*/
|
||||||
|
|
||||||
|
@Service
|
||||||
|
@RequiredArgsConstructor
|
||||||
|
public class KsBackDataServiceImpl extends AbstractService<TbKSNewBackdataEntity,Long> implements KsBackDateService {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<DmpMonitorJpaDto> queryByTagAndTimeAndFlag
|
||||||
|
(String toUpperCase, String empty, String imeiTag, Date startTime, Date endTime, List<String> tagList, Integer flag) {
|
||||||
|
|
||||||
|
return this.applyJPA(query -> {
|
||||||
|
StringPath t3 = Expressions.stringPath("t3");
|
||||||
|
StringTemplate dateExpr;
|
||||||
|
QTbKSNewBackdataEntity ksNewBackdata = QTbKSNewBackdataEntity.tbKSNewBackdataEntity;
|
||||||
|
if (flag == 1) {
|
||||||
|
dateExpr = Expressions.stringTemplate(SqlConstant.DATE_EXPR, ksNewBackdata.gmtCreate);
|
||||||
|
SimpleTemplate<String> t3Tag = Expressions.template(String.class, "t3.tag");
|
||||||
|
SimpleTemplate<String> t3Imei = Expressions.template(String.class, "t3.imei");
|
||||||
|
SimpleTemplate<Date> t3Date = Expressions.template(Date.class, "t3.gmtCreate");
|
||||||
|
// 封装子查询
|
||||||
|
SubQueryExpression<Tuple> gmtCreate = SQLExpressions.select
|
||||||
|
(ksNewBackdata.imei, ksNewBackdata.tag,ksNewBackdata.gmtCreate.max().as(SqlConstant.CREATE_TIME)).from
|
||||||
|
(ksNewBackdata).where(ksNewBackdata.tag.in(tagList).and(ksNewBackdata.imei.ne(CharSequenceUtil.EMPTY).and
|
||||||
|
(ksNewBackdata.imei.ne(DataConstant.IMEI_NULL_TAG)).and(ksNewBackdata.imei.ne(DataConstant.IMEI_TAG)))).groupBy(ksNewBackdata.imei,ksNewBackdata.tag);
|
||||||
|
|
||||||
|
// 结果返回
|
||||||
|
List<QueryQuantityVO> voList = query.select(Projections.bean
|
||||||
|
(QueryQuantityVO.class, ksNewBackdata.imei.count().as("num"), ksNewBackdata.tag, dateExpr.as(SqlConstant.CREATE_TIME))).from
|
||||||
|
(ksNewBackdata).innerJoin(gmtCreate, t3).on(ksNewBackdata.imei.eq(t3Imei).and(ksNewBackdata.gmtCreate.eq(t3Date).and(ksNewBackdata.tag.eq(t3Tag)))).groupBy(dateExpr, ksNewBackdata.tag).fetch();
|
||||||
|
return Convert.toList(DmpMonitorJpaDto.class, voList);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 修改时间格式
|
||||||
|
dateExpr = Expressions.stringTemplate(SqlConstant.DATE_EXPR_V2, ksNewBackdata.gmtCreate);
|
||||||
|
|
||||||
|
List<QueryImeiVO> imeiVOList = query.select(Projections.bean
|
||||||
|
(QueryImeiVO.class, ksNewBackdata.imei, ksNewBackdata.tag, dateExpr.as(SqlConstant.CREATE_TIME))).distinct().from(ksNewBackdata).where
|
||||||
|
(ksNewBackdata.tag.in(tagList).and(ksNewBackdata.imei.ne(CharSequenceUtil.EMPTY).and(ksNewBackdata.imei.ne(DataConstant.IMEI_NULL_TAG)).and(ksNewBackdata.imei.ne
|
||||||
|
(DataConstant.IMEI_TAG)))).groupBy(ksNewBackdata.imei,ksNewBackdata.tag).fetch();
|
||||||
|
return Convert.toList(DmpMonitorJpaDto.class, imeiVOList);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,73 @@
|
|||||||
|
package com.baiyee.adcallback.service.impl;
|
||||||
|
|
||||||
|
import cn.hutool.core.convert.Convert;
|
||||||
|
import cn.hutool.core.text.CharSequenceUtil;
|
||||||
|
import com.baiyee.adcallback.api.constants.SqlConstant;
|
||||||
|
import com.baiyee.adcallback.api.dto.DmpMonitorJpaDto;
|
||||||
|
import com.baiyee.adcallback.api.vo.QueryImeiVO;
|
||||||
|
import com.baiyee.adcallback.api.vo.QueryQuantityVO;
|
||||||
|
import com.baiyee.adcallback.common.constant.DataConstant;
|
||||||
|
import com.baiyee.adcallback.repository.entity.QTbUcBackdataEntity;
|
||||||
|
import com.baiyee.adcallback.repository.entity.TbUcBackdataEntity;
|
||||||
|
import com.baiyee.adcallback.service.AbstractService;
|
||||||
|
import com.baiyee.adcallback.service.UcBackDateService;
|
||||||
|
import com.querydsl.core.Tuple;
|
||||||
|
import com.querydsl.core.types.Projections;
|
||||||
|
import com.querydsl.core.types.SubQueryExpression;
|
||||||
|
import com.querydsl.core.types.dsl.Expressions;
|
||||||
|
import com.querydsl.core.types.dsl.SimpleTemplate;
|
||||||
|
import com.querydsl.core.types.dsl.StringPath;
|
||||||
|
import com.querydsl.core.types.dsl.StringTemplate;
|
||||||
|
import com.querydsl.sql.SQLExpressions;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Enzo
|
||||||
|
* @date : 2023/6/21
|
||||||
|
*/
|
||||||
|
|
||||||
|
@Service
|
||||||
|
@RequiredArgsConstructor
|
||||||
|
public class UcBackDataServiceImpl extends AbstractService<TbUcBackdataEntity,Long> implements UcBackDateService {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<DmpMonitorJpaDto> queryByTagAndTimeAndFlag
|
||||||
|
(String toUpperCase, String empty, String imeiTag, Date startTime, Date endTime, List<String> tagList, Integer flag) {
|
||||||
|
|
||||||
|
return this.applyJPA(query -> {
|
||||||
|
StringPath t3 = Expressions.stringPath("t3");
|
||||||
|
StringTemplate dateExpr;
|
||||||
|
QTbUcBackdataEntity ucBackdata = QTbUcBackdataEntity.tbUcBackdataEntity;
|
||||||
|
if (flag == 1) {
|
||||||
|
dateExpr = Expressions.stringTemplate(SqlConstant.DATE_EXPR, ucBackdata.gmtCreate);
|
||||||
|
SimpleTemplate<String> t3Tag = Expressions.template(String.class, "t3.tag");
|
||||||
|
SimpleTemplate<String> t3Imei = Expressions.template(String.class, "t3.imei");
|
||||||
|
SimpleTemplate<Date> t3Date = Expressions.template(Date.class, "t3.gmtCreate");
|
||||||
|
// 封装子查询
|
||||||
|
SubQueryExpression<Tuple> gmtCreate = SQLExpressions.select
|
||||||
|
(ucBackdata.imei, ucBackdata.tag,ucBackdata.gmtCreate.max().as(SqlConstant.CREATE_TIME)).from
|
||||||
|
(ucBackdata).where(ucBackdata.tag.in(tagList).and(ucBackdata.imei.ne(CharSequenceUtil.EMPTY).and
|
||||||
|
(ucBackdata.imei.ne(DataConstant.IMEI_NULL_TAG)).and(ucBackdata.imei.ne(DataConstant.IMEI_TAG)))).groupBy(ucBackdata.imei,ucBackdata.tag);
|
||||||
|
|
||||||
|
// 结果返回
|
||||||
|
List<QueryQuantityVO> voList = query.select(Projections.bean
|
||||||
|
(QueryQuantityVO.class, ucBackdata.imei.count().as("num"), ucBackdata.tag, dateExpr.as(SqlConstant.CREATE_TIME))).from
|
||||||
|
(ucBackdata).innerJoin(gmtCreate, t3).on(ucBackdata.imei.eq(t3Imei).and(ucBackdata.gmtCreate.eq(t3Date).and(ucBackdata.tag.eq(t3Tag)))).groupBy(dateExpr, ucBackdata.tag).fetch();
|
||||||
|
return Convert.toList(DmpMonitorJpaDto.class, voList);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 修改时间格式
|
||||||
|
dateExpr = Expressions.stringTemplate(SqlConstant.DATE_EXPR_V2, ucBackdata.gmtCreate);
|
||||||
|
|
||||||
|
List<QueryImeiVO> imeiVOList = query.select(Projections.bean
|
||||||
|
(QueryImeiVO.class, ucBackdata.imei, ucBackdata.tag, dateExpr.as(SqlConstant.CREATE_TIME))).distinct().from(ucBackdata).where
|
||||||
|
(ucBackdata.tag.in(tagList).and(ucBackdata.imei.ne(CharSequenceUtil.EMPTY).and(ucBackdata.imei.ne(DataConstant.IMEI_NULL_TAG)).and(ucBackdata.imei.ne
|
||||||
|
(DataConstant.IMEI_TAG)))).groupBy(ucBackdata.imei,ucBackdata.tag).fetch();
|
||||||
|
return Convert.toList(DmpMonitorJpaDto.class, imeiVOList);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,73 @@
|
|||||||
|
package com.baiyee.adcallback.service.impl;
|
||||||
|
|
||||||
|
import cn.hutool.core.convert.Convert;
|
||||||
|
import cn.hutool.core.text.CharSequenceUtil;
|
||||||
|
import com.baiyee.adcallback.api.constants.SqlConstant;
|
||||||
|
import com.baiyee.adcallback.api.dto.DmpMonitorJpaDto;
|
||||||
|
import com.baiyee.adcallback.api.vo.QueryImeiVO;
|
||||||
|
import com.baiyee.adcallback.api.vo.QueryQuantityVO;
|
||||||
|
import com.baiyee.adcallback.common.constant.DataConstant;
|
||||||
|
import com.baiyee.adcallback.repository.entity.QTbVivoBackdataEntity;
|
||||||
|
import com.baiyee.adcallback.repository.entity.TbVivoBackdataEntity;
|
||||||
|
import com.baiyee.adcallback.service.AbstractService;
|
||||||
|
import com.baiyee.adcallback.service.VivoBackDateService;
|
||||||
|
import com.querydsl.core.Tuple;
|
||||||
|
import com.querydsl.core.types.Projections;
|
||||||
|
import com.querydsl.core.types.SubQueryExpression;
|
||||||
|
import com.querydsl.core.types.dsl.Expressions;
|
||||||
|
import com.querydsl.core.types.dsl.SimpleTemplate;
|
||||||
|
import com.querydsl.core.types.dsl.StringPath;
|
||||||
|
import com.querydsl.core.types.dsl.StringTemplate;
|
||||||
|
import com.querydsl.sql.SQLExpressions;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Enzo
|
||||||
|
* @date : 2023/6/21
|
||||||
|
*/
|
||||||
|
|
||||||
|
@Service
|
||||||
|
@RequiredArgsConstructor
|
||||||
|
public class VivoBackDataServiceImpl extends AbstractService<TbVivoBackdataEntity,Long> implements VivoBackDateService {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<DmpMonitorJpaDto> queryByTagAndTimeAndFlag
|
||||||
|
(String toUpperCase, String empty, String imeiTag, Date startTime, Date endTime, List<String> tagList, Integer flag) {
|
||||||
|
|
||||||
|
return this.applyJPA(query -> {
|
||||||
|
StringPath t3 = Expressions.stringPath("t3");
|
||||||
|
StringTemplate dateExpr;
|
||||||
|
QTbVivoBackdataEntity vivoBackdata = QTbVivoBackdataEntity.tbVivoBackdataEntity;
|
||||||
|
if (flag == 1) {
|
||||||
|
dateExpr = Expressions.stringTemplate(SqlConstant.DATE_EXPR, vivoBackdata.gmtCreate);
|
||||||
|
SimpleTemplate<String> t3Tag = Expressions.template(String.class, "t3.tag");
|
||||||
|
SimpleTemplate<String> t3Imei = Expressions.template(String.class, "t3.imei");
|
||||||
|
SimpleTemplate<Date> t3Date = Expressions.template(Date.class, "t3.gmtCreate");
|
||||||
|
// 封装子查询
|
||||||
|
SubQueryExpression<Tuple> gmtCreate = SQLExpressions.select
|
||||||
|
(vivoBackdata.imei, vivoBackdata.tag,vivoBackdata.gmtCreate.max().as(SqlConstant.CREATE_TIME)).from
|
||||||
|
(vivoBackdata).where(vivoBackdata.tag.in(tagList).and(vivoBackdata.imei.ne(CharSequenceUtil.EMPTY).and
|
||||||
|
(vivoBackdata.imei.ne(DataConstant.IMEI_NULL_TAG)).and(vivoBackdata.imei.ne(DataConstant.IMEI_TAG)))).groupBy(vivoBackdata.imei,vivoBackdata.tag);
|
||||||
|
|
||||||
|
// 结果返回
|
||||||
|
List<QueryQuantityVO> voList = query.select(Projections.bean
|
||||||
|
(QueryQuantityVO.class, vivoBackdata.imei.count().as("num"), vivoBackdata.tag, dateExpr.as(SqlConstant.CREATE_TIME))).from
|
||||||
|
(vivoBackdata).innerJoin(gmtCreate, t3).on(vivoBackdata.imei.eq(t3Imei).and(vivoBackdata.gmtCreate.eq(t3Date).and(vivoBackdata.tag.eq(t3Tag)))).groupBy(dateExpr, vivoBackdata.tag).fetch();
|
||||||
|
return Convert.toList(DmpMonitorJpaDto.class, voList);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 修改时间格式
|
||||||
|
dateExpr = Expressions.stringTemplate(SqlConstant.DATE_EXPR_V2, vivoBackdata.gmtCreate);
|
||||||
|
|
||||||
|
List<QueryImeiVO> imeiVOList = query.select(Projections.bean
|
||||||
|
(QueryImeiVO.class, vivoBackdata.imei, vivoBackdata.tag, dateExpr.as(SqlConstant.CREATE_TIME))).distinct().from(vivoBackdata).where
|
||||||
|
(vivoBackdata.tag.in(tagList).and(vivoBackdata.imei.ne(CharSequenceUtil.EMPTY).and(vivoBackdata.imei.ne(DataConstant.IMEI_NULL_TAG)).and(vivoBackdata.imei.ne
|
||||||
|
(DataConstant.IMEI_TAG)))).groupBy(vivoBackdata.imei,vivoBackdata.tag).fetch();
|
||||||
|
return Convert.toList(DmpMonitorJpaDto.class, imeiVOList);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue