集成QuerySDL

master
yqy 1 year ago
parent 4e8002c4f9
commit 762bd28b8b

@ -55,7 +55,39 @@
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency> </dependency>
<dependency>
<groupId>com.querydsl</groupId>
<artifactId>querydsl-jpa</artifactId>
</dependency>
<dependency>
<groupId>com.querydsl</groupId>
<artifactId>querydsl-apt</artifactId>
<scope>provided</scope>
</dependency>
</dependencies> </dependencies>
<build>
<plugins>
<!-- QueryDSL-JPA框架生成Q类插件 -->
<plugin>
<groupId>com.mysema.maven</groupId>
<artifactId>apt-maven-plugin</artifactId>
<version>1.1.3</version>
<executions>
<execution>
<goals>
<goal>process</goal>
</goals>
<configuration>
<outputDirectory>target/generated-sources/java</outputDirectory>
<processor>com.querydsl.apt.jpa.JPAAnnotationProcessor</processor>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project> </project>

@ -98,6 +98,17 @@
<artifactId>poi-ooxml-schemas</artifactId> <artifactId>poi-ooxml-schemas</artifactId>
</dependency> </dependency>
<dependency>
<groupId>com.querydsl</groupId>
<artifactId>querydsl-jpa</artifactId>
</dependency>
<dependency>
<groupId>com.querydsl</groupId>
<artifactId>querydsl-apt</artifactId>
<scope>provided</scope>
</dependency>
</dependencies> </dependencies>
<!-- 配置插件 --> <!-- 配置插件 -->
@ -119,6 +130,25 @@
</execution> </execution>
</executions> </executions>
</plugin> </plugin>
<!-- QueryDSL-JPA框架生成Q类插件 -->
<plugin>
<groupId>com.mysema.maven</groupId>
<artifactId>apt-maven-plugin</artifactId>
<version>1.1.3</version>
<executions>
<execution>
<goals>
<goal>process</goal>
</goals>
<configuration>
<outputDirectory>target/generated-sources/java</outputDirectory>
<processor>com.querydsl.apt.jpa.JPAAnnotationProcessor</processor>
</configuration>
</execution>
</executions>
</plugin>
</plugins> </plugins>
</build> </build>

@ -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);
}
}

@ -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<ClueDto> getCRMClueList(ClueQueryCriteria clueQueryCriteria, Pageable pageable) {
JPAQuery<ClueDto> 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<ClueDto> getTalkClueList(ClueQueryCriteria clueQueryCriteria, Pageable pageable) {
JPAQuery<ClueDto> 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<Timestamp> newestCallTimeList = clueQuery.getNewestCallTime();
List<Timestamp> 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<ClueDto> dataHandle(List<ClueDto> 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<Map<String, Object>> 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<ResSourceLabel> findSourceLabel(List<Long> 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();
}
}

@ -5,6 +5,7 @@ import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor; import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Modifying; import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query; import org.springframework.data.jpa.repository.Query;
import org.springframework.data.querydsl.QuerydslPredicateExecutor;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import java.util.List; import java.util.List;
@ -13,7 +14,7 @@ import java.util.Set;
@Repository @Repository
public interface ClueRepository extends JpaRepository<Clue, Long>, JpaSpecificationExecutor<Clue> { public interface ClueRepository extends JpaRepository<Clue, Long>, JpaSpecificationExecutor<Clue>, QuerydslPredicateExecutor<Clue> {
/** /**
* Id * Id
*/ */

@ -66,6 +66,7 @@ public class ClueServiceImpl implements ClueService {
private final CallClueRepository callClueRepository; private final CallClueRepository callClueRepository;
private final AllCallInfoRepository allCallInfoRepository; private final AllCallInfoRepository allCallInfoRepository;
private final AssignDataClient assignDataClient; private final AssignDataClient assignDataClient;
private final ClueQueryDSL clueQueryDSL;
private final TurnCrmLogRepository turnCrmLogRepository; private final TurnCrmLogRepository turnCrmLogRepository;
private final ReportTokerRepository reportTokerRepository; private final ReportTokerRepository reportTokerRepository;
@ -197,7 +198,6 @@ public class ClueServiceImpl implements ClueService {
@Override @Override
public Map<String, Object> queryAll(ClueQueryCriteria clueQueryCriteria, Pageable pageable) { public Map<String, Object> queryAll(ClueQueryCriteria clueQueryCriteria, Pageable pageable) {
String nid = clueQueryCriteria.getNid(); String nid = clueQueryCriteria.getNid();
if (clueQueryCriteria.getMemberId() != null) { if (clueQueryCriteria.getMemberId() != null) {
if (StrUtil.isNotEmpty(clueQueryCriteria.getTaskName())) { if (StrUtil.isNotEmpty(clueQueryCriteria.getTaskName())) {
@ -258,11 +258,10 @@ public class ClueServiceImpl implements ClueService {
public List<ClueDto> query(ClueQueryCriteria clueQueryCriteria) { public List<ClueDto> query(ClueQueryCriteria clueQueryCriteria) {
if (clueQueryCriteria.getMemberId() != null) { if (clueQueryCriteria.getMemberId() != null) {
List<ClueDto> clueDtoList; List<ClueDto> clueDtoList;
if (clueQueryCriteria.getClueType() == null) { if (clueQueryCriteria.getClueType() == null)
clueDtoList = clueJpa.getClueList(clueQueryCriteria, null); clueDtoList = clueQueryDSL.getCRMClueList(clueQueryCriteria, null);
} else { else
clueDtoList = clueJpa.getTalkClueList(clueQueryCriteria, null); clueDtoList = clueQueryDSL.getTalkClueList(clueQueryCriteria, null);
}
Set<Long> memberIds = clueDtoList.stream().map(ClueDto::getMemberId).collect(Collectors.toSet()); Set<Long> memberIds = clueDtoList.stream().map(ClueDto::getMemberId).collect(Collectors.toSet());
Map<Long, String> userNickNameMap = userClient.findById(memberIds); Map<Long, String> userNickNameMap = userClient.findById(memberIds);
// 资源ID查询(详情查询)时返回标签信息 // 资源ID查询(详情查询)时返回标签信息
@ -409,11 +408,6 @@ public class ClueServiceImpl implements ClueService {
public Boolean updateMember(Long userId, Long replaceUserId) { public Boolean updateMember(Long userId, Long replaceUserId) {
clueMiddleRepository.updateMember(userId, replaceUserId); clueMiddleRepository.updateMember(userId, replaceUserId);
clueTalkRepository.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; return true;
} }
@ -439,7 +433,7 @@ public class ClueServiceImpl implements ClueService {
@Override @Override
public List<ResSourceLabel> findSourceLabel(List<Long> clueIds) { public List<ResSourceLabel> findSourceLabel(List<Long> clueIds) {
return clueJpa.findSourceLabel(clueIds); return clueQueryDSL.findSourceLabel(clueIds);
} }
@Override @Override
@ -499,7 +493,7 @@ public class ClueServiceImpl implements ClueService {
Set<Long> clueIds = Collections.singleton(clueId); Set<Long> clueIds = Collections.singleton(clueId);
ClueQueryCriteria clueQueryCriteria = new ClueQueryCriteria(); ClueQueryCriteria clueQueryCriteria = new ClueQueryCriteria();
clueQueryCriteria.setId(clueId); clueQueryCriteria.setId(clueId);
List<ClueDto> clueAll = clueJpa.getClueList(clueQueryCriteria, null); List<ClueDto> clueAll = clueQueryDSL.getCRMClueList(clueQueryCriteria, null);
this.delete(clueAll, clueIds, SecurityUtils.getCurrentUserId()); this.delete(clueAll, clueIds, SecurityUtils.getCurrentUserId());
if (clueTalk.getClueId() != null) clueTalkRepository.deleteById(clueId); if (clueTalk.getClueId() != null) clueTalkRepository.deleteById(clueId);
@ -514,8 +508,8 @@ public class ClueServiceImpl implements ClueService {
CommonLog.infoUserTraceId("删除任务下所有资源", operateUserId, traceId); CommonLog.infoUserTraceId("删除任务下所有资源", operateUserId, traceId);
ClueQueryCriteria clueQueryCriteria = new ClueQueryCriteria(); ClueQueryCriteria clueQueryCriteria = new ClueQueryCriteria();
clueQueryCriteria.setTaskIds(taskIds); clueQueryCriteria.setTaskIds(taskIds);
List<ClueDto> clueList = clueJpa.getClueList(clueQueryCriteria, null); List<ClueDto> clueList = clueQueryDSL.getCRMClueList(clueQueryCriteria, null);
List<ClueDto> talkClueList = clueJpa.getTalkClueList(clueQueryCriteria, null); List<ClueDto> talkClueList = clueQueryDSL.getTalkClueList(clueQueryCriteria, null);
clueList.addAll(talkClueList); clueList.addAll(talkClueList);
Set<Long> clueIds = clueList.stream().map(ClueDto::getId).collect(Collectors.toSet()); Set<Long> clueIds = clueList.stream().map(ClueDto::getId).collect(Collectors.toSet());
Set<Long> clueRecordId = clueRecordRepository.findByTaskIdIn(taskIds).stream().map(ClueRecord::getId).collect(Collectors.toSet()); Set<Long> clueRecordId = clueRecordRepository.findByTaskIdIn(taskIds).stream().map(ClueRecord::getId).collect(Collectors.toSet());
@ -541,7 +535,8 @@ public class ClueServiceImpl implements ClueService {
public Map<Long, Integer> delClueByUser(Long userId) { public Map<Long, Integer> delClueByUser(Long userId) {
ClueQueryCriteria clueQueryCriteria = new ClueQueryCriteria(); ClueQueryCriteria clueQueryCriteria = new ClueQueryCriteria();
clueQueryCriteria.setMemberId(userId); clueQueryCriteria.setMemberId(userId);
List<ClueDto> clueAll = clueJpa.getClueList(clueQueryCriteria, null); // List<ClueDto> clueAll = clueJpa.getClueList(clueQueryCriteria, null);
List<ClueDto> clueAll = clueQueryDSL.getCRMClueList(clueQueryCriteria, null);
Set<Long> clueIds = clueAll.stream().map(ClueDto::getId).collect(Collectors.toSet()); Set<Long> clueIds = clueAll.stream().map(ClueDto::getId).collect(Collectors.toSet());
Set<Long> taskIds = clueAll.stream().map(ClueDto::getTaskId).collect(Collectors.toSet()); Set<Long> taskIds = clueAll.stream().map(ClueDto::getTaskId).collect(Collectors.toSet());
//1、删除备份数据 //1、删除备份数据
@ -1150,9 +1145,9 @@ public class ClueServiceImpl implements ClueService {
private List<ClueDto> findClue(ClueQueryCriteria clueQueryCriteria, Pageable pageable) { private List<ClueDto> findClue(ClueQueryCriteria clueQueryCriteria, Pageable pageable) {
List<ClueDto> clueList; List<ClueDto> clueList;
if (clueQueryCriteria.getClueType() == null) { if (clueQueryCriteria.getClueType() == null) {
clueList = clueJpa.getClueList(clueQueryCriteria, pageable); clueList = clueQueryDSL.getCRMClueList(clueQueryCriteria, pageable);
} else { } else {
clueList = clueJpa.getTalkClueList(clueQueryCriteria, pageable); clueList = clueQueryDSL.getTalkClueList(clueQueryCriteria, pageable);
} }
return clueList; return clueList;
} }
@ -1163,9 +1158,9 @@ public class ClueServiceImpl implements ClueService {
private Long findClueCount(ClueQueryCriteria clueQueryCriteria) { private Long findClueCount(ClueQueryCriteria clueQueryCriteria) {
Long count; Long count;
if (clueQueryCriteria.getClueType() == null) { if (clueQueryCriteria.getClueType() == null) {
count = clueJpa.getCount(clueQueryCriteria); count = clueQueryDSL.getCRMCount(clueQueryCriteria);
} else { } else {
count = clueJpa.getTalkCount(clueQueryCriteria); count = clueQueryDSL.getTalkCount(clueQueryCriteria);
} }
return count; return count;
} }

@ -16,8 +16,8 @@ import com.baiye.model.dto.ClueDto;
import com.baiye.model.dto.ClueQueryCriteria; import com.baiye.model.dto.ClueQueryCriteria;
import com.baiye.model.dto.ReportStageAndTurnoverDto; import com.baiye.model.dto.ReportStageAndTurnoverDto;
import com.baiye.model.enums.ClueExportStatusEnum; import com.baiye.model.enums.ClueExportStatusEnum;
import com.baiye.module.dao.ClueJpa;
import com.baiye.module.dao.ClueMiddleRepository; import com.baiye.module.dao.ClueMiddleRepository;
import com.baiye.module.dao.ClueQueryDSL;
import com.baiye.module.entity.ClueMiddle; import com.baiye.module.entity.ClueMiddle;
import com.baiye.module.entity.ClueRoute; import com.baiye.module.entity.ClueRoute;
import com.baiye.module.service.ClueRouteService; import com.baiye.module.service.ClueRouteService;
@ -45,7 +45,7 @@ import java.util.stream.Collectors;
public class ReportClueServiceImpl implements ReportClueService { public class ReportClueServiceImpl implements ReportClueService {
private final ClueMiddleRepository clueMiddleRepository; private final ClueMiddleRepository clueMiddleRepository;
private final ClueJpa clueJpa; private final ClueQueryDSL clueQueryDSL;
private final UserClient userClient; private final UserClient userClient;
private final OrganizeClient organizeClient; private final OrganizeClient organizeClient;
private final ClueRouteService clueRouteService; private final ClueRouteService clueRouteService;
@ -102,7 +102,7 @@ public class ReportClueServiceImpl implements ReportClueService {
clueQueryCriteria.setUserIdList(exportReqDTO.getMemberIds()); clueQueryCriteria.setUserIdList(exportReqDTO.getMemberIds());
clueQueryCriteria.setCreateTime(list); clueQueryCriteria.setCreateTime(list);
clueQueryCriteria.setRouteIdList(routeIdList); clueQueryCriteria.setRouteIdList(routeIdList);
List<ClueDto> clueList = clueJpa.getClueList(clueQueryCriteria, null); List<ClueDto> clueList = clueQueryDSL.getCRMClueList(clueQueryCriteria, null);
Map<Long, List<ClueDto>> groupMember = clueList.stream().collect(Collectors.groupingBy(ClueDto::getMemberId)); Map<Long, List<ClueDto>> groupMember = clueList.stream().collect(Collectors.groupingBy(ClueDto::getMemberId));
Set<Long> memberIdSet = groupMember.keySet(); Set<Long> memberIdSet = groupMember.keySet();

Loading…
Cancel
Save