diff --git a/src/main/java/com/baiyee/adcallback/repository/TbJlBackdataEntityRepository.java b/src/main/java/com/baiyee/adcallback/repository/TbJlBackdataEntityRepository.java index 320f13d..a9b542a 100644 --- a/src/main/java/com/baiyee/adcallback/repository/TbJlBackdataEntityRepository.java +++ b/src/main/java/com/baiyee/adcallback/repository/TbJlBackdataEntityRepository.java @@ -13,6 +13,6 @@ public interface TbJlBackdataEntityRepository extends JpaRepository queryAllImei(); - @Query(value = "SELECT imei FROM tb_jl_backdata WHERE imei != '' AND imei != '__IMEI__' AND gmt_create > :startDate AND gmt_create < :endDate", nativeQuery = true) + @Query(value = "SELECT imei FROM tb_jl_backdata WHERE imei != '' AND imei != '__IMEI__' AND gmt_cr eate > :startDate AND gmt_create < :endDate", nativeQuery = true) List queryAllImeiByDate(Date startDate, Date endDate); } \ No newline at end of file diff --git a/src/main/java/com/baiyee/adcallback/service/impl/DmpMonitorNumServiceImpl.java b/src/main/java/com/baiyee/adcallback/service/impl/DmpMonitorNumServiceImpl.java index 32a125a..a72b65f 100644 --- a/src/main/java/com/baiyee/adcallback/service/impl/DmpMonitorNumServiceImpl.java +++ b/src/main/java/com/baiyee/adcallback/service/impl/DmpMonitorNumServiceImpl.java @@ -117,7 +117,7 @@ public class DmpMonitorNumServiceImpl implements DmpMonitorNumService { listAll.addAll(getImeiNumJpa(TableEnum.BD.getTableName(), startTime, endTime, bdArray, flag)); } if (CollUtil.isNotEmpty(gdArray)) { - listAll.addAll(getImeiNumJpa(TableEnum.GD.getTableName(), startTime, endTime, gdArray, flag)); + listAll.addAll(getGdtNumJpa(TableEnum.GD.getTableName(), startTime, endTime, gdArray, flag)); } return listAll; } @@ -156,6 +156,16 @@ public class DmpMonitorNumServiceImpl implements DmpMonitorNumService { return list; } + /** + * 通用sql条件 + * + * @param tableName + * @param startDate + * @param endDate + * @param tags + * @param flag + * @return + */ @Transactional(rollbackFor = Exception.class) public List getImeiNumJpa(String tableName, Date startDate, Date endDate, List tags, Integer flag) { String sql = getSqlString(tableName, flag); @@ -193,6 +203,63 @@ public class DmpMonitorNumServiceImpl implements DmpMonitorNumService { return sql.toString(); } + /** + * 广点通查询条件 + * + * @param tableName + * @param startDate + * @param endDate + * @param tags + * @param flag + * @return + */ + @Transactional(rollbackFor = Exception.class) + public List getGdtNumJpa(String tableName, Date startDate, Date endDate, List tags, Integer flag) { + String sql = getGdtSqlString(tableName, flag); + Query query = entityManager.createNativeQuery(sql); + query.setParameter("muid1", ""); + query.setParameter("muid2", "__IMEI__"); + query.setParameter("startDate", startDate); + query.setParameter("endDate", endDate); + query.setParameter("deviceOsType", "android"); + query.setParameter("tag", tags); + query.unwrap(NativeQueryImpl.class).setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP); + List list = query.getResultList(); + return getDmpMonitorJpaDto(list, flag); + } + + /** + * 广点通sql + * + * @param tableName + * @param flag + * @return + */ + private String getGdtSqlString(String tableName, Integer flag) { + StringBuilder sql = new StringBuilder(); + if (1 == flag) { + sql.append(" select a.tag,a.date as date ,COUNT(*) as num FROM ( SELECT tb.muid,tb.tag ,substring_index(group_concat(DATE_FORMAT( tb.gmt_create, '%Y-%m-%d' )),',',-1) AS date FROM ").append(tableName).append(" as tb where "); + sql.append(" tb.muid != :muid1 "); + sql.append(" and tb.muid != :muid2 "); + sql.append(" and tb.gmt_create >= :startDate "); + sql.append(" and tb.gmt_create < :endDate "); + sql.append(" and tb.device_os_type = :deviceOsType "); + sql.append(" and tb.tag in :tag "); + sql.append(" group by muid,tag"); + sql.append(" ) a group by a.tag,a.date"); + } else { + sql.append("select substring_index(group_concat( DATE_FORMAT( tb.gmt_create, '%Y-%m-%d' )),',',-1) as date ,tb.muid as imei ,tb.tag as tag from ").append(tableName).append(" as tb where"); + sql.append(" tb.muid != :muid1 "); + sql.append(" and tb.muid != :muid2 "); + sql.append(" and tb.gmt_create >= :startDate "); + sql.append(" and tb.gmt_create < :endDate "); + sql.append(" and tb.device_os_type = :deviceOsType "); + sql.append(" and tb.tag in :tag "); + sql.append(" group by tb.muid,tb.tag"); + } + return sql.toString(); + } + private List getDmpMonitorJpaDto(List list, Integer flag) { List tradeList = new ArrayList<>(); for (Object obj : list) { diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index f22d935..ae02e3c 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -31,7 +31,7 @@ spring: ddl-auto: none dialect: org.hibernate.dialect.MySQL5InnoDBDialect open-in-view: true - + show-sql: true redis: #数据库索引 database: 0