From 762bd28b8b3f1bccdb4caba1896258f0db7b8c32 Mon Sep 17 00:00:00 2001 From: yqy Date: Thu, 27 Jul 2023 09:34:02 +0800 Subject: [PATCH] =?UTF-8?q?=E9=9B=86=E6=88=90QuerySDL?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ad-platform-pojo/pom.xml | 32 ++ .../ad-platform-source/pom.xml | 30 ++ .../config/JPAQueryFactoryConfiguration.java | 20 ++ .../com/baiye/module/dao/ClueQueryDSL.java | 308 ++++++++++++++++++ .../com/baiye/module/dao/ClueRepository.java | 3 +- .../module/service/impl/ClueServiceImpl.java | 35 +- .../service/impl/ReportClueServiceImpl.java | 6 +- 7 files changed, 410 insertions(+), 24 deletions(-) create mode 100644 ad-platform-services/ad-platform-source/src/main/java/com/baiye/config/JPAQueryFactoryConfiguration.java create mode 100644 ad-platform-services/ad-platform-source/src/main/java/com/baiye/module/dao/ClueQueryDSL.java diff --git a/ad-platform-pojo/pom.xml b/ad-platform-pojo/pom.xml index 51b2bdc0..0fec244f 100644 --- a/ad-platform-pojo/pom.xml +++ b/ad-platform-pojo/pom.xml @@ -55,7 +55,39 @@ spring-cloud-starter-alibaba-nacos-discovery + + com.querydsl + querydsl-jpa + + + + com.querydsl + querydsl-apt + provided + + + + + + com.mysema.maven + apt-maven-plugin + 1.1.3 + + + + process + + + target/generated-sources/java + com.querydsl.apt.jpa.JPAAnnotationProcessor + + + + + + + diff --git a/ad-platform-services/ad-platform-source/pom.xml b/ad-platform-services/ad-platform-source/pom.xml index 32292f41..85953a7f 100644 --- a/ad-platform-services/ad-platform-source/pom.xml +++ b/ad-platform-services/ad-platform-source/pom.xml @@ -98,6 +98,17 @@ poi-ooxml-schemas + + com.querydsl + querydsl-jpa + + + + com.querydsl + querydsl-apt + provided + + @@ -119,6 +130,25 @@ + + + + com.mysema.maven + apt-maven-plugin + 1.1.3 + + + + process + + + target/generated-sources/java + com.querydsl.apt.jpa.JPAAnnotationProcessor + + + + + diff --git a/ad-platform-services/ad-platform-source/src/main/java/com/baiye/config/JPAQueryFactoryConfiguration.java b/ad-platform-services/ad-platform-source/src/main/java/com/baiye/config/JPAQueryFactoryConfiguration.java new file mode 100644 index 00000000..f0133ac4 --- /dev/null +++ b/ad-platform-services/ad-platform-source/src/main/java/com/baiye/config/JPAQueryFactoryConfiguration.java @@ -0,0 +1,20 @@ +package com.baiye.config; + +import com.querydsl.jpa.impl.JPAQueryFactory; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +import javax.persistence.EntityManager; + +/** + * @Author YQY + * @Date 2023/7/4 + */ +@Configuration +public class JPAQueryFactoryConfiguration { + + @Bean + public JPAQueryFactory jpaQueryFactory(EntityManager entityManager) { + return new JPAQueryFactory(entityManager); + } +} \ No newline at end of file diff --git a/ad-platform-services/ad-platform-source/src/main/java/com/baiye/module/dao/ClueQueryDSL.java b/ad-platform-services/ad-platform-source/src/main/java/com/baiye/module/dao/ClueQueryDSL.java new file mode 100644 index 00000000..57655a8d --- /dev/null +++ b/ad-platform-services/ad-platform-source/src/main/java/com/baiye/module/dao/ClueQueryDSL.java @@ -0,0 +1,308 @@ +package com.baiye.module.dao; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ArrayUtil; +import cn.hutool.core.util.RandomUtil; +import cn.hutool.core.util.StrUtil; +import com.baiye.constant.DefaultNumberConstants; +import com.baiye.constant.KeyFieldConstants; +import com.baiye.exception.BadRequestException; +import com.baiye.feign.TaskClient; +import com.baiye.model.dto.ClueDto; +import com.baiye.model.dto.ClueQueryCriteria; +import com.baiye.model.entity.QBaseClueMiddle; +import com.baiye.model.vo.ResSourceLabel; +import com.baiye.module.entity.QClue; +import com.baiye.module.entity.QClueMiddle; +import com.baiye.module.entity.QClueTalk; +import com.baiye.util.RedisUtils; +import com.baiye.util.ValidationUtil; +import com.querydsl.core.BooleanBuilder; +import com.querydsl.core.types.Expression; +import com.querydsl.core.types.Projections; +import com.querydsl.core.types.dsl.Expressions; +import com.querydsl.jpa.impl.JPAQuery; +import com.querydsl.jpa.impl.JPAQueryFactory; +import org.apache.commons.lang.StringUtils; +import org.springframework.data.domain.Pageable; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.sql.Timestamp; +import java.util.*; + +/** + * @Author YQY + * @Date 2023/7/4 + */ +@Component +public class ClueQueryDSL { + + @Resource + private JPAQueryFactory jpaQueryFactory; + @Resource + private RedisUtils redisUtils; + @Resource + private TaskClient taskClient; + + private final QClue qClue = QClue.clue; + private final QClueMiddle qClueMiddle = QClueMiddle.clueMiddle; + private final QClueTalk qClueTalk = QClueTalk.clueTalk; + + /** + * 联合查询"crm"线索 + */ + public List getCRMClueList(ClueQueryCriteria clueQueryCriteria, Pageable pageable) { + JPAQuery query = + jpaQueryFactory.select( + Projections.bean( + ClueDto.class, + cluePojo(DefaultNumberConstants.ONE_NUMBER) + )).from(qClue) + .innerJoin(qClueMiddle) + .on(qClue.id.eq(qClueMiddle.clueId)) + .where(this.builder(clueQueryCriteria, DefaultNumberConstants.ONE_NUMBER)) + .orderBy(qClue.createTime.desc(), qClue.id.desc()); + if (pageable != null) { + query.offset((long) pageable.getPageNumber() * pageable.getPageSize()).limit(pageable.getPageSize()); + } + return this.dataHandle(query.fetch(), clueQueryCriteria.getIsAdmin()); + } + + /** + * 联合分页查询"crm"线索的"总条数" + */ + public Long getCRMCount(ClueQueryCriteria clueQueryCriteria) { + return jpaQueryFactory.select( + QClue.clue.count() + ).from(QClue.clue) + .innerJoin(QClueMiddle.clueMiddle) + .on(QClue.clue.id.eq(QClueMiddle.clueMiddle.clueId)) + .where(this.builder(clueQueryCriteria, DefaultNumberConstants.ONE_NUMBER)) + .fetchOne(); + } + + /** + * 联合查询"拓客"线索 + */ + public List getTalkClueList(ClueQueryCriteria clueQueryCriteria, Pageable pageable) { + JPAQuery query = + jpaQueryFactory.select( + Projections.bean( + ClueDto.class, + cluePojo(DefaultNumberConstants.TWO_NUMBER) + )).from(qClue) + .innerJoin(qClueTalk) + .on(qClue.id.eq(qClueTalk.clueId)) + .where(this.builder(clueQueryCriteria, DefaultNumberConstants.TWO_NUMBER)) + .orderBy(qClue.createTime.desc(), qClue.id.desc()); + if (pageable != null) { + query.offset((long) pageable.getPageNumber() * pageable.getPageSize()).limit(pageable.getPageSize()); + } + return this.dataHandle(query.fetch(), clueQueryCriteria.getIsAdmin()); + } + + /** + * 联合分页查询"拓客"线索的"总条数" + */ + public Long getTalkCount(ClueQueryCriteria clueQueryCriteria) { + return jpaQueryFactory.select( + QClue.clue.count() + ).from(QClue.clue) + .innerJoin(QClueTalk.clueTalk) + .on(QClue.clue.id.eq(QClueTalk.clueTalk.clueId)) + .where(this.builder(clueQueryCriteria, DefaultNumberConstants.TWO_NUMBER)) + .fetchOne(); + } + + /** + * 表字段映射 + * + * @param type 1:crm中间表映射 2:拓客线索中间表映射 + */ + public Expression[] cluePojo(Integer type) { + QBaseClueMiddle qBaseClueMiddle; + if (type == DefaultNumberConstants.ONE_NUMBER) qBaseClueMiddle = qClueMiddle._super; + else qBaseClueMiddle = qClueTalk._super; + + Expression[] expressions = new Expression[]{ + qBaseClueMiddle.clueStage, qBaseClueMiddle.clueStageTime, qBaseClueMiddle.clueCallStatus, qBaseClueMiddle.organizeId, + qBaseClueMiddle.memberId, qBaseClueMiddle.taskId, qBaseClueMiddle.memberStatus, qBaseClueMiddle.sourceLabel, qBaseClueMiddle.labelTime, + qBaseClueMiddle.newestCallTime, qBaseClueMiddle.remark, qBaseClueMiddle.publicPoolStatus, qBaseClueMiddle.turnoverAmount, qBaseClueMiddle.clueType + }; + Expression[] clueExpressions = new Expression[]{ + qClue.id, qClue.audioUrl, qClue.gender, qClue.name, qClue.nid, qClue.wx, qClue.routeId, + qClue.amount, qClue.collectTime, qClue.address, qClue.platform, qClue.recordId, qClue.createBy, + qClue.createTime, qClue.updateTime, qClue.isEncryption, qClue.tag + }; + Expression[] allData = ArrayUtil.addAll(expressions, clueExpressions); + if (type == DefaultNumberConstants.TWO_NUMBER) { + Expression[] talkArr = new Expression[]{qClueTalk.isFreeze}; + allData = ArrayUtil.addAll(allData, talkArr); + } + return allData; + } + + /** + * 构建查询条件 + * + * @param type 1:crm中间表 2:拓客线索中间表 + */ + private BooleanBuilder builder(ClueQueryCriteria clueQuery, Integer type) { + Integer memberStatus = clueQuery.getMemberStatus(); + Boolean isAdmin = clueQuery.getIsAdmin(); + List newestCallTimeList = clueQuery.getNewestCallTime(); + List createTime = clueQuery.getCreateTime(); + + QBaseClueMiddle qBaseClueMiddle; + if (type == DefaultNumberConstants.ONE_NUMBER) + qBaseClueMiddle = qClueMiddle._super; + else + qBaseClueMiddle = qClueTalk._super; + + BooleanBuilder builder = new BooleanBuilder(); + if (clueQuery.getId() != null) { + builder.and(qClue.id.eq(clueQuery.getId())); + } + if (StrUtil.isNotBlank(clueQuery.getNid())) { + builder.and(qClue.nid.eq(clueQuery.getNid())); + } + if (StringUtils.isNotBlank(clueQuery.getName())) { + builder.and(qClue.name.like("%".concat(clueQuery.getName()).concat("%"))); + } + if (clueQuery.getRouteId() != null) { + builder.and(qClue.routeId.eq(clueQuery.getRouteId())); + } + if (CollUtil.isNotEmpty(clueQuery.getRouteIdList())) { + builder.and(qClue.routeId.in(clueQuery.getRouteIdList())); + } + if (clueQuery.getUserId() != null) { + builder.and(qClue.createBy.eq(clueQuery.getUserId())); + } + if (clueQuery.getMemberId() != null && !isAdmin) { + builder.and(qBaseClueMiddle.memberId.eq(clueQuery.getMemberId())); + } + if (clueQuery.getUserIdList() != null) { + builder.and(qBaseClueMiddle.memberId.in(clueQuery.getUserIdList())); + } + if (clueQuery.getOrganizeId() != null) { + builder.and(qBaseClueMiddle.organizeId.eq(clueQuery.getOrganizeId())); + } + if (memberStatus != null) { + if (isAdmin) { + if (memberStatus == 0) { + builder.and(qBaseClueMiddle.memberId.isNull()); + } + if (memberStatus > 0) { + builder.and(qBaseClueMiddle.memberId.isNotNull()); + } + } else { + builder.and(qBaseClueMiddle.memberStatus.eq(memberStatus)); + } + } + if (StrUtil.isNotEmpty(clueQuery.getLabel())) { + builder.and(Expressions.booleanTemplate("LOWER({0}) LIKE LOWER({1})", qBaseClueMiddle.sourceLabel, "%" + clueQuery.getLabel() + "%")); + } + if (clueQuery.getClueCallStatus() != null) { + builder.and(qBaseClueMiddle.clueCallStatus.eq(clueQuery.getClueCallStatus())); + } + if (clueQuery.getClueStage() != null) { + builder.and(qBaseClueMiddle.clueStage.eq(clueQuery.getClueStage())); + } + if (createTime != null && createTime.size() == 2) { + Date createTimeBegin = new Date(createTime.get(0).getTime()); + Date createTimeEnd = new Date(createTime.get(1).getTime()); + builder.and(qBaseClueMiddle.createTime.between(createTimeBegin, createTimeEnd)); + } + if (newestCallTimeList != null && newestCallTimeList.size() == 2) { + Date beginTime = new Date(newestCallTimeList.get(0).getTime()); + Date endTime = new Date(newestCallTimeList.get(1).getTime()); + builder.and(qBaseClueMiddle.newestCallTime.between(beginTime, endTime)); + } + if (clueQuery.getClueType() != null) { + builder.and(qBaseClueMiddle.clueType.eq(clueQuery.getClueType())); + } + if (CollUtil.isNotEmpty(clueQuery.getClueTypes())) { + builder.and(qBaseClueMiddle.clueType.in(clueQuery.getClueTypes())); + } + if (CollUtil.isNotEmpty(clueQuery.getTaskIds())) { + builder.and(qBaseClueMiddle.taskId.in(clueQuery.getTaskIds())); + } + if (clueQuery.getPublicPoolStatus() != null) { + builder.and(qBaseClueMiddle.publicPoolStatus.eq(clueQuery.getPublicPoolStatus())); + } + if (clueQuery.getIsFreeze() != null) { + builder.and(qClueTalk.isFreeze.eq(clueQuery.getIsFreeze())); + } + return builder; + } + + /** + * 查询结果 数据处理(手机号解密...) + */ + private List dataHandle(List result, boolean isAdmin) { + for (ClueDto clueDto : result) { + //查看任务是否需要加密显示资源 + String taskEncryption = String.valueOf(redisUtils.get(KeyFieldConstants.TASK_ENCRYPTION_KEY + clueDto.getTaskId())); + if (StringUtils.isBlank(taskEncryption) || taskEncryption.equals("null")) { + ResponseEntity> response = taskClient.findRedisTask(clueDto.getTaskId(), 1); + if (response.getStatusCode().value() != 200) { + throw new BadRequestException("获取加密信息错误"); + } + taskEncryption = String.valueOf(Objects.requireNonNull(response.getBody()).get(KeyFieldConstants.TASK_ENCRYPTION_KEY)); + } + int encryption = ValidationUtil.isInteger(taskEncryption) + ? Integer.parseInt(taskEncryption) : DefaultNumberConstants.ZERO_NUMBER; + //处理手机号显示是否用****隐藏,管理员查看任务下的资源不需要加密(isAdmin控制) + String nid = clueDto.getNid(); + if (StringUtils.isNotBlank(nid)) { + //投流线索 返回处理 + Integer clueType = clueDto.getClueType(); + if (clueType != null && clueType == 4) { + clueDto.setNid(RandomUtil.randomString(22)); + } else if (clueType != null && clueType == 5 + && encryption > DefaultNumberConstants.ZERO_NUMBER) { + nid = Integer.parseInt(taskEncryption) == DefaultNumberConstants.ONE_NUMBER + ? nid.replaceAll("(\\d{3})\\d{4}(\\d{4})", "$1****$2") + : RandomUtil.randomString(22); + clueDto.setNid(nid); + } else { + //查看资源是否需要加密显示-任务是否需要加密(注:资源加密 > 任务加密优先级) + if (clueDto.getIsEncryption() != null && clueDto.getIsEncryption() == 1) { + StringBuilder stringBuilder = new StringBuilder(nid); + nid = stringBuilder.replace(3, 7, "****").toString(); + } else { + if (!isAdmin && (taskEncryption.equals("1"))) { + StringBuilder stringBuilder = new StringBuilder(nid); + nid = stringBuilder.replace(3, 7, "****").toString(); + } + } + clueDto.setNid(nid); + } + } + } + return result; + } + + /** + * 查询资源标签(2023/07/05 暂不使用) + */ + public List findSourceLabel(List clueIds) { + return jpaQueryFactory.select( + Projections.bean( + ResSourceLabel.class, + qClue.nid, + qClue.createTime, + qClue.name, + qClueMiddle.clueId, + qClueMiddle.remark, + qClueMiddle.sourceLabel, + qClueMiddle.clueStage + )).from(qClue) + .innerJoin(qClueMiddle) + .on(qClue.id.eq(qClueMiddle.clueId)) + .where(qClueMiddle.clueId.in(clueIds)) + .fetch(); + } +} diff --git a/ad-platform-services/ad-platform-source/src/main/java/com/baiye/module/dao/ClueRepository.java b/ad-platform-services/ad-platform-source/src/main/java/com/baiye/module/dao/ClueRepository.java index 388fc95c..0f71b242 100644 --- a/ad-platform-services/ad-platform-source/src/main/java/com/baiye/module/dao/ClueRepository.java +++ b/ad-platform-services/ad-platform-source/src/main/java/com/baiye/module/dao/ClueRepository.java @@ -5,6 +5,7 @@ import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaSpecificationExecutor; import org.springframework.data.jpa.repository.Modifying; import org.springframework.data.jpa.repository.Query; +import org.springframework.data.querydsl.QuerydslPredicateExecutor; import org.springframework.stereotype.Repository; import java.util.List; @@ -13,7 +14,7 @@ import java.util.Set; @Repository -public interface ClueRepository extends JpaRepository, JpaSpecificationExecutor { +public interface ClueRepository extends JpaRepository, JpaSpecificationExecutor, QuerydslPredicateExecutor { /** * Id批量删除 */ diff --git a/ad-platform-services/ad-platform-source/src/main/java/com/baiye/module/service/impl/ClueServiceImpl.java b/ad-platform-services/ad-platform-source/src/main/java/com/baiye/module/service/impl/ClueServiceImpl.java index ac6b692b..ed66727c 100644 --- a/ad-platform-services/ad-platform-source/src/main/java/com/baiye/module/service/impl/ClueServiceImpl.java +++ b/ad-platform-services/ad-platform-source/src/main/java/com/baiye/module/service/impl/ClueServiceImpl.java @@ -66,6 +66,7 @@ public class ClueServiceImpl implements ClueService { private final CallClueRepository callClueRepository; private final AllCallInfoRepository allCallInfoRepository; private final AssignDataClient assignDataClient; + private final ClueQueryDSL clueQueryDSL; private final TurnCrmLogRepository turnCrmLogRepository; private final ReportTokerRepository reportTokerRepository; @@ -197,7 +198,6 @@ public class ClueServiceImpl implements ClueService { @Override public Map queryAll(ClueQueryCriteria clueQueryCriteria, Pageable pageable) { - String nid = clueQueryCriteria.getNid(); if (clueQueryCriteria.getMemberId() != null) { if (StrUtil.isNotEmpty(clueQueryCriteria.getTaskName())) { @@ -258,11 +258,10 @@ public class ClueServiceImpl implements ClueService { public List query(ClueQueryCriteria clueQueryCriteria) { if (clueQueryCriteria.getMemberId() != null) { List clueDtoList; - if (clueQueryCriteria.getClueType() == null) { - clueDtoList = clueJpa.getClueList(clueQueryCriteria, null); - } else { - clueDtoList = clueJpa.getTalkClueList(clueQueryCriteria, null); - } + if (clueQueryCriteria.getClueType() == null) + clueDtoList = clueQueryDSL.getCRMClueList(clueQueryCriteria, null); + else + clueDtoList = clueQueryDSL.getTalkClueList(clueQueryCriteria, null); Set memberIds = clueDtoList.stream().map(ClueDto::getMemberId).collect(Collectors.toSet()); Map userNickNameMap = userClient.findById(memberIds); // 资源ID查询(详情查询)时返回标签信息 @@ -409,11 +408,6 @@ public class ClueServiceImpl implements ClueService { public Boolean updateMember(Long userId, Long replaceUserId) { clueMiddleRepository.updateMember(userId, replaceUserId); clueTalkRepository.updateMember(userId, replaceUserId); - // 线索公海 - //UserDto userInfo = userClient.findUserInfo(replaceUserId); - //publicCluePoolRepository.updateMember(userId, replaceUserId, userInfo.getUsername()); - // 跟进记录 - //conductRecordRepository.updateCreateBy(userId, replaceUserId, userInfo.getUsername()); return true; } @@ -439,7 +433,7 @@ public class ClueServiceImpl implements ClueService { @Override public List findSourceLabel(List clueIds) { - return clueJpa.findSourceLabel(clueIds); + return clueQueryDSL.findSourceLabel(clueIds); } @Override @@ -499,7 +493,7 @@ public class ClueServiceImpl implements ClueService { Set clueIds = Collections.singleton(clueId); ClueQueryCriteria clueQueryCriteria = new ClueQueryCriteria(); clueQueryCriteria.setId(clueId); - List clueAll = clueJpa.getClueList(clueQueryCriteria, null); + List clueAll = clueQueryDSL.getCRMClueList(clueQueryCriteria, null); this.delete(clueAll, clueIds, SecurityUtils.getCurrentUserId()); if (clueTalk.getClueId() != null) clueTalkRepository.deleteById(clueId); @@ -514,8 +508,8 @@ public class ClueServiceImpl implements ClueService { CommonLog.infoUserTraceId("删除任务下所有资源", operateUserId, traceId); ClueQueryCriteria clueQueryCriteria = new ClueQueryCriteria(); clueQueryCriteria.setTaskIds(taskIds); - List clueList = clueJpa.getClueList(clueQueryCriteria, null); - List talkClueList = clueJpa.getTalkClueList(clueQueryCriteria, null); + List clueList = clueQueryDSL.getCRMClueList(clueQueryCriteria, null); + List talkClueList = clueQueryDSL.getTalkClueList(clueQueryCriteria, null); clueList.addAll(talkClueList); Set clueIds = clueList.stream().map(ClueDto::getId).collect(Collectors.toSet()); Set clueRecordId = clueRecordRepository.findByTaskIdIn(taskIds).stream().map(ClueRecord::getId).collect(Collectors.toSet()); @@ -541,7 +535,8 @@ public class ClueServiceImpl implements ClueService { public Map delClueByUser(Long userId) { ClueQueryCriteria clueQueryCriteria = new ClueQueryCriteria(); clueQueryCriteria.setMemberId(userId); - List clueAll = clueJpa.getClueList(clueQueryCriteria, null); +// List clueAll = clueJpa.getClueList(clueQueryCriteria, null); + List clueAll = clueQueryDSL.getCRMClueList(clueQueryCriteria, null); Set clueIds = clueAll.stream().map(ClueDto::getId).collect(Collectors.toSet()); Set taskIds = clueAll.stream().map(ClueDto::getTaskId).collect(Collectors.toSet()); //1、删除备份数据 @@ -1150,9 +1145,9 @@ public class ClueServiceImpl implements ClueService { private List findClue(ClueQueryCriteria clueQueryCriteria, Pageable pageable) { List clueList; if (clueQueryCriteria.getClueType() == null) { - clueList = clueJpa.getClueList(clueQueryCriteria, pageable); + clueList = clueQueryDSL.getCRMClueList(clueQueryCriteria, pageable); } else { - clueList = clueJpa.getTalkClueList(clueQueryCriteria, pageable); + clueList = clueQueryDSL.getTalkClueList(clueQueryCriteria, pageable); } return clueList; } @@ -1163,9 +1158,9 @@ public class ClueServiceImpl implements ClueService { private Long findClueCount(ClueQueryCriteria clueQueryCriteria) { Long count; if (clueQueryCriteria.getClueType() == null) { - count = clueJpa.getCount(clueQueryCriteria); + count = clueQueryDSL.getCRMCount(clueQueryCriteria); } else { - count = clueJpa.getTalkCount(clueQueryCriteria); + count = clueQueryDSL.getTalkCount(clueQueryCriteria); } return count; } diff --git a/ad-platform-services/ad-platform-source/src/main/java/com/baiye/module/service/impl/ReportClueServiceImpl.java b/ad-platform-services/ad-platform-source/src/main/java/com/baiye/module/service/impl/ReportClueServiceImpl.java index 7e4d1a52..51241c9c 100644 --- a/ad-platform-services/ad-platform-source/src/main/java/com/baiye/module/service/impl/ReportClueServiceImpl.java +++ b/ad-platform-services/ad-platform-source/src/main/java/com/baiye/module/service/impl/ReportClueServiceImpl.java @@ -16,8 +16,8 @@ import com.baiye.model.dto.ClueDto; import com.baiye.model.dto.ClueQueryCriteria; import com.baiye.model.dto.ReportStageAndTurnoverDto; import com.baiye.model.enums.ClueExportStatusEnum; -import com.baiye.module.dao.ClueJpa; import com.baiye.module.dao.ClueMiddleRepository; +import com.baiye.module.dao.ClueQueryDSL; import com.baiye.module.entity.ClueMiddle; import com.baiye.module.entity.ClueRoute; import com.baiye.module.service.ClueRouteService; @@ -45,7 +45,7 @@ import java.util.stream.Collectors; public class ReportClueServiceImpl implements ReportClueService { private final ClueMiddleRepository clueMiddleRepository; - private final ClueJpa clueJpa; + private final ClueQueryDSL clueQueryDSL; private final UserClient userClient; private final OrganizeClient organizeClient; private final ClueRouteService clueRouteService; @@ -102,7 +102,7 @@ public class ReportClueServiceImpl implements ReportClueService { clueQueryCriteria.setUserIdList(exportReqDTO.getMemberIds()); clueQueryCriteria.setCreateTime(list); clueQueryCriteria.setRouteIdList(routeIdList); - List clueList = clueJpa.getClueList(clueQueryCriteria, null); + List clueList = clueQueryDSL.getCRMClueList(clueQueryCriteria, null); Map> groupMember = clueList.stream().collect(Collectors.groupingBy(ClueDto::getMemberId)); Set memberIdSet = groupMember.keySet();