|
|
@ -3,6 +3,7 @@ package com.baiyee.adcallback.service.impl;
|
|
|
|
import cn.hutool.core.convert.Convert;
|
|
|
|
import cn.hutool.core.convert.Convert;
|
|
|
|
import cn.hutool.core.date.DateTime;
|
|
|
|
import cn.hutool.core.date.DateTime;
|
|
|
|
import cn.hutool.core.text.CharSequenceUtil;
|
|
|
|
import cn.hutool.core.text.CharSequenceUtil;
|
|
|
|
|
|
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
|
|
import com.baiyee.adcallback.api.constants.SqlConstant;
|
|
|
|
import com.baiyee.adcallback.api.constants.SqlConstant;
|
|
|
|
import com.baiyee.adcallback.api.dto.DmpMonitorJpaDto;
|
|
|
|
import com.baiyee.adcallback.api.dto.DmpMonitorJpaDto;
|
|
|
|
import com.baiyee.adcallback.api.vo.QueryImeiVO;
|
|
|
|
import com.baiyee.adcallback.api.vo.QueryImeiVO;
|
|
|
@ -15,10 +16,7 @@ import com.baiyee.adcallback.service.BdBackDateService;
|
|
|
|
import com.querydsl.core.Tuple;
|
|
|
|
import com.querydsl.core.Tuple;
|
|
|
|
import com.querydsl.core.types.Projections;
|
|
|
|
import com.querydsl.core.types.Projections;
|
|
|
|
import com.querydsl.core.types.SubQueryExpression;
|
|
|
|
import com.querydsl.core.types.SubQueryExpression;
|
|
|
|
import com.querydsl.core.types.dsl.Expressions;
|
|
|
|
import com.querydsl.core.types.dsl.*;
|
|
|
|
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 com.querydsl.sql.SQLExpressions;
|
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
import org.springframework.stereotype.Service;
|
|
|
@ -38,7 +36,7 @@ public class BdBackDataServiceImpl extends AbstractService<TbBdNewBackdataEntity
|
|
|
|
QTbBdNewBackdataEntity bdNewBackdata = QTbBdNewBackdataEntity.tbBdNewBackdataEntity;
|
|
|
|
QTbBdNewBackdataEntity bdNewBackdata = QTbBdNewBackdataEntity.tbBdNewBackdataEntity;
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
|
public List<DmpMonitorJpaDto> queryByTagAndTimeAndFlag
|
|
|
|
public List<DmpMonitorJpaDto> queryByTagAndTimeAndFlag
|
|
|
|
(Date startTime, Date endTime, List<String> tagList, Integer flag, Integer type) {
|
|
|
|
(Date startTime, Date endTime, List<String> tagList, Integer flag, Integer type, Integer vPoint) {
|
|
|
|
Timestamp endTimeStamp = new Timestamp(endTime.getTime());
|
|
|
|
Timestamp endTimeStamp = new Timestamp(endTime.getTime());
|
|
|
|
Timestamp startTimeStamp = new Timestamp(startTime.getTime());
|
|
|
|
Timestamp startTimeStamp = new Timestamp(startTime.getTime());
|
|
|
|
return this.applyJPA(query -> {
|
|
|
|
return this.applyJPA(query -> {
|
|
|
@ -50,26 +48,24 @@ public class BdBackDataServiceImpl extends AbstractService<TbBdNewBackdataEntity
|
|
|
|
SimpleTemplate<String> t3Imei = Expressions.template(String.class, "t3.imei");
|
|
|
|
SimpleTemplate<String> t3Imei = Expressions.template(String.class, "t3.imei");
|
|
|
|
SimpleTemplate<String> t3Oaid = Expressions.template(String.class, "t3.oaid");
|
|
|
|
SimpleTemplate<String> t3Oaid = Expressions.template(String.class, "t3.oaid");
|
|
|
|
SimpleTemplate<Date> t3Date = Expressions.template(Date.class, "t3.gmtCreate");
|
|
|
|
SimpleTemplate<Date> t3Date = Expressions.template(Date.class, "t3.gmtCreate");
|
|
|
|
|
|
|
|
|
|
|
|
if (type == 2) {
|
|
|
|
if (type == 2) {
|
|
|
|
|
|
|
|
BooleanExpression expression = getOaidBooleanExpression(tagList, vPoint, startTimeStamp, endTimeStamp);
|
|
|
|
// 封装子查询
|
|
|
|
// 封装子查询
|
|
|
|
SubQueryExpression<Tuple> gmtCreate = SQLExpressions.select
|
|
|
|
SubQueryExpression<Tuple> gmtCreate = SQLExpressions.select
|
|
|
|
(bdNewBackdata.oaid, bdNewBackdata.tag, bdNewBackdata.gmtCreate.max().as(SqlConstant.CREATE_TIME)).from
|
|
|
|
(bdNewBackdata.oaid, bdNewBackdata.tag, bdNewBackdata.gmtCreate.max().as(SqlConstant.CREATE_TIME)).from
|
|
|
|
(bdNewBackdata).where(bdNewBackdata.tag.in(tagList).and(bdNewBackdata.gmtCreate.gt(startTimeStamp)).and(bdNewBackdata.gmtCreate.lt(endTimeStamp)).and
|
|
|
|
(bdNewBackdata).where(expression).groupBy(bdNewBackdata.oaid, bdNewBackdata.tag);
|
|
|
|
(bdNewBackdata.oaid.ne(CharSequenceUtil.EMPTY)).and(bdNewBackdata.oaid.ne(DataConstant.IMEI_NULL_TAG)).and(bdNewBackdata.oaid.ne(DataConstant.IDFA_NUM))).groupBy(bdNewBackdata.oaid, bdNewBackdata.tag);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 结果返回
|
|
|
|
// 结果返回
|
|
|
|
List<QueryQuantityVO> voList = query.select(Projections.bean
|
|
|
|
List<QueryQuantityVO> voList = query.select(Projections.bean
|
|
|
|
(QueryQuantityVO.class, bdNewBackdata.oaid.count().as("num"), bdNewBackdata.tag, dateExpr.as(SqlConstant.CREATE_TIME))).from
|
|
|
|
(QueryQuantityVO.class, bdNewBackdata.oaid.count().as("num"), bdNewBackdata.tag, dateExpr.as(SqlConstant.CREATE_TIME))).from
|
|
|
|
(bdNewBackdata).innerJoin(gmtCreate, t3).on(bdNewBackdata.oaid.eq(t3Oaid).and(bdNewBackdata.gmtCreate.eq(t3Date).and(bdNewBackdata.tag.eq(t3Tag)))).groupBy(dateExpr, bdNewBackdata.tag).fetch();
|
|
|
|
(bdNewBackdata).innerJoin(gmtCreate, t3).on(bdNewBackdata.oaid.eq(t3Oaid).and(bdNewBackdata.gmtCreate.eq(t3Date).and(bdNewBackdata.tag.eq(t3Tag)))).groupBy(dateExpr, bdNewBackdata.tag).fetch();
|
|
|
|
return Convert.toList(DmpMonitorJpaDto.class, voList);
|
|
|
|
return Convert.toList(DmpMonitorJpaDto.class, voList);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
BooleanExpression expression = getImeiBooleanExpression(tagList, vPoint, startTimeStamp, endTimeStamp);
|
|
|
|
// 封装子查询
|
|
|
|
// 封装子查询
|
|
|
|
SubQueryExpression<Tuple> gmtCreate = SQLExpressions.select
|
|
|
|
SubQueryExpression<Tuple> gmtCreate = SQLExpressions.select
|
|
|
|
(bdNewBackdata.imei, bdNewBackdata.tag, bdNewBackdata.gmtCreate.max().as(SqlConstant.CREATE_TIME)).from
|
|
|
|
(bdNewBackdata.imei, bdNewBackdata.tag, bdNewBackdata.gmtCreate.max().as(SqlConstant.CREATE_TIME)).from
|
|
|
|
(bdNewBackdata).where(bdNewBackdata.tag.in(tagList).and(bdNewBackdata.gmtCreate.gt(startTimeStamp)).and(bdNewBackdata.gmtCreate.lt(endTimeStamp)).and
|
|
|
|
(bdNewBackdata).where(expression).groupBy(bdNewBackdata.imei, bdNewBackdata.tag);
|
|
|
|
(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
|
|
|
|
List<QueryQuantityVO> voList = query.select(Projections.bean
|
|
|
|
(QueryQuantityVO.class, bdNewBackdata.imei.count().as("num"), bdNewBackdata.tag, dateExpr.as(SqlConstant.CREATE_TIME))).from
|
|
|
|
(QueryQuantityVO.class, bdNewBackdata.imei.count().as("num"), bdNewBackdata.tag, dateExpr.as(SqlConstant.CREATE_TIME))).from
|
|
|
@ -81,24 +77,42 @@ public class BdBackDataServiceImpl extends AbstractService<TbBdNewBackdataEntity
|
|
|
|
dateExpr = Expressions.stringTemplate(SqlConstant.DATE_EXPR_V2, bdNewBackdata.gmtCreate);
|
|
|
|
dateExpr = Expressions.stringTemplate(SqlConstant.DATE_EXPR_V2, bdNewBackdata.gmtCreate);
|
|
|
|
|
|
|
|
|
|
|
|
if (type == 2) {
|
|
|
|
if (type == 2) {
|
|
|
|
|
|
|
|
BooleanExpression expression = getOaidBooleanExpression(tagList, vPoint, startTimeStamp, endTimeStamp);
|
|
|
|
List<QueryImeiVO> oaidVOList = query.select(Projections.bean
|
|
|
|
List<QueryImeiVO> oaidVOList = query.select(Projections.bean
|
|
|
|
(QueryImeiVO.class, bdNewBackdata.oaid.as("imei"), bdNewBackdata.tag, dateExpr.as(SqlConstant.CREATE_TIME))).distinct().from(bdNewBackdata).where
|
|
|
|
(QueryImeiVO.class, bdNewBackdata.oaid.as("imei"), bdNewBackdata.tag, dateExpr.as(SqlConstant.CREATE_TIME))).distinct().from(bdNewBackdata).where
|
|
|
|
(bdNewBackdata.tag.in(tagList).and(bdNewBackdata.gmtCreate.gt(startTimeStamp)).and(bdNewBackdata.gmtCreate.lt(endTimeStamp)).and(bdNewBackdata.oaid.ne(CharSequenceUtil.EMPTY)).and
|
|
|
|
(expression).groupBy(bdNewBackdata.oaid, bdNewBackdata.tag).fetch();
|
|
|
|
(bdNewBackdata.oaid.ne(DataConstant.IDFA_NUM)).and(bdNewBackdata.oaid.ne(DataConstant.IMEI_TAG))).groupBy(bdNewBackdata.oaid, bdNewBackdata.tag).fetch();
|
|
|
|
|
|
|
|
return Convert.toList(DmpMonitorJpaDto.class, oaidVOList);
|
|
|
|
return Convert.toList(DmpMonitorJpaDto.class, oaidVOList);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
BooleanExpression expression = getImeiBooleanExpression(tagList, vPoint, startTimeStamp, endTimeStamp);
|
|
|
|
List<QueryImeiVO> imeiVOList = query.select(Projections.bean
|
|
|
|
List<QueryImeiVO> imeiVOList = query.select(Projections.bean
|
|
|
|
(QueryImeiVO.class, bdNewBackdata.imei, bdNewBackdata.tag, dateExpr.as(SqlConstant.CREATE_TIME))).distinct().from(bdNewBackdata).where
|
|
|
|
(QueryImeiVO.class, bdNewBackdata.imei, bdNewBackdata.tag, dateExpr.as(SqlConstant.CREATE_TIME))).distinct().from(bdNewBackdata).where
|
|
|
|
(bdNewBackdata.tag.in(tagList).and(bdNewBackdata.gmtCreate.gt(startTimeStamp)).and(bdNewBackdata.gmtCreate.lt(endTimeStamp)).and(bdNewBackdata.imei.ne(CharSequenceUtil.EMPTY)).and
|
|
|
|
(expression).groupBy(bdNewBackdata.imei, bdNewBackdata.tag).fetch();
|
|
|
|
(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);
|
|
|
|
return Convert.toList(DmpMonitorJpaDto.class, imeiVOList);
|
|
|
|
});
|
|
|
|
});
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private BooleanExpression getImeiBooleanExpression(List<String> tagList, Integer vPoint, Timestamp startTimeStamp, Timestamp endTimeStamp) {
|
|
|
|
|
|
|
|
BooleanExpression expression = bdNewBackdata.tag.in(tagList).and(bdNewBackdata.gmtCreate.gt(startTimeStamp)).and(bdNewBackdata.gmtCreate.lt(endTimeStamp)).and
|
|
|
|
|
|
|
|
(bdNewBackdata.imei.ne(CharSequenceUtil.EMPTY)).and(bdNewBackdata.imei.ne(DataConstant.IMEI_NULL_TAG)).and(bdNewBackdata.imei.ne(DataConstant.IMEI_TAG));
|
|
|
|
|
|
|
|
if (ObjectUtil.isNotNull(vPoint)){
|
|
|
|
|
|
|
|
expression = expression.and(bdNewBackdata.vpoint.eq(vPoint));
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
return expression;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private BooleanExpression getOaidBooleanExpression(List<String> tagList, Integer vPoint, Timestamp startTimeStamp, Timestamp endTimeStamp) {
|
|
|
|
|
|
|
|
BooleanExpression expression = bdNewBackdata.tag.in(tagList).and(bdNewBackdata.gmtCreate.gt(startTimeStamp)).and(bdNewBackdata.gmtCreate.lt(endTimeStamp)).and(bdNewBackdata.oaid.ne(CharSequenceUtil.EMPTY)).and
|
|
|
|
|
|
|
|
(bdNewBackdata.oaid.ne(DataConstant.IDFA_NUM)).and(bdNewBackdata.oaid.ne(DataConstant.IMEI_TAG));
|
|
|
|
|
|
|
|
if (ObjectUtil.isNotNull(vPoint)){
|
|
|
|
|
|
|
|
expression = expression.and(bdNewBackdata.vpoint.eq(vPoint));
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
return expression;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
|
public Long deleteDateByDateAndLimitNum(DateTime date, Integer num) {
|
|
|
|
public Long deleteDateByDateAndLimitNum(DateTime date, Integer num) {
|
|
|
|
Timestamp timestamp = new Timestamp(date.getTime());
|
|
|
|
Timestamp timestamp = new Timestamp(date.getTime());
|
|
|
|
return this.newQuery().delete(bdNewBackdata).where(bdNewBackdata.gmtCreate.lt(timestamp)).execute();
|
|
|
|
return this.newQuery().delete(bdNewBackdata).where(bdNewBackdata.gmtCreate.gt(timestamp)).execute();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
|