@ -9,6 +9,8 @@ import com.baiye.exception.BadRequestException;
import com.baiye.feign.OrganizeClient ;
import com.baiye.feign.OrganizeClient ;
import com.baiye.model.dto.ClueDto ;
import com.baiye.model.dto.ClueDto ;
import com.baiye.model.dto.ClueQueryCriteria ;
import com.baiye.model.dto.ClueQueryCriteria ;
import com.baiye.model.dto.PublicCluePoolDto ;
import com.baiye.model.dto.PublicCluePoolQueryCriteria ;
import com.baiye.model.vo.ResSourceLabel ;
import com.baiye.model.vo.ResSourceLabel ;
import com.baiye.module.entity.Clue ;
import com.baiye.module.entity.Clue ;
import com.baiye.util.AESUtils ;
import com.baiye.util.AESUtils ;
@ -54,7 +56,7 @@ public class ClueJpa {
public List < ClueDto > getClueList ( ClueQueryCriteria clueQueryCriteria , Pageable pageable ) {
public List < ClueDto > getClueList ( ClueQueryCriteria clueQueryCriteria , Pageable pageable ) {
StringBuilder sql = new StringBuilder ( ) ;
StringBuilder sql = new StringBuilder ( ) ;
sql . append ( "select c.id as id,c.name as name,c.nid as nid,c.wx as wx,c.origin as origin,c.collect_time as collectTime,c.address as address,c.record_id as recordId," +
sql . append ( "select c.id as id,c.name as name,c.nid as nid,c.wx as wx,c.origin as origin,c.collect_time as collectTime,c.address as address,c.record_id as recordId," +
"c.create_time as createTime,c.amount as amount,c.platform as platform,c m.remark as remark,cm.member_status as memberStatus,cm.organize_id as organizeId,cm.member_id as memberId," +
"c.create_time as createTime,c.amount as amount,c.platform as platform,c .tag as tag,c m.remark as remark,cm.member_status as memberStatus,cm.organize_id as organizeId,cm.member_id as memberId," +
"cm.optimistic_version as optimisticVersion,cm.source_label as sourceLabel,cm.task_id as taskId,cm.clue_stage as clueStage,cm.clue_call_status as clueCallStatus," +
"cm.optimistic_version as optimisticVersion,cm.source_label as sourceLabel,cm.task_id as taskId,cm.clue_stage as clueStage,cm.clue_call_status as clueCallStatus," +
"cm.newest_call_time as newestCallTime " +
"cm.newest_call_time as newestCallTime " +
"from tb_clue as c LEFT JOIN tb_clue_middle as cm on c.id = cm.clue_id where 1=1 " ) ;
"from tb_clue as c LEFT JOIN tb_clue_middle as cm on c.id = cm.clue_id where 1=1 " ) ;
@ -105,16 +107,16 @@ public class ClueJpa {
if ( clueQueryCriteria . getMemberStatus ( ) ! = null ) {
if ( clueQueryCriteria . getMemberStatus ( ) ! = null ) {
sql . append ( "and cm.member_status = :memberStatus " ) ;
sql . append ( "and cm.member_status = :memberStatus " ) ;
}
}
if ( clueQueryCriteria . getLabel ( ) ! = null ) {
if ( clueQueryCriteria . getLabel ( ) ! = null ) {
sql . append ( "and cm.source_label like :sourceLabel " ) ;
sql . append ( "and cm.source_label like :sourceLabel " ) ;
}
}
if ( clueQueryCriteria . getClueCallStatus ( ) ! = null ) {
if ( clueQueryCriteria . getClueCallStatus ( ) ! = null ) {
sql . append ( "and cm.clue_call_status = :clueCallStatus " ) ;
sql . append ( "and cm.clue_call_status = :clueCallStatus " ) ;
}
}
if ( clueQueryCriteria . getClueStage ( ) ! = null ) {
if ( clueQueryCriteria . getClueStage ( ) ! = null ) {
sql . append ( "and cm.clue_stage = :clueStage " ) ;
sql . append ( "and cm.clue_stage = :clueStage " ) ;
}
}
if ( newestCallTimeList ! = null & & newestCallTimeList . size ( ) = = 2 ) {
if ( newestCallTimeList ! = null & & newestCallTimeList . size ( ) = = 2 ) {
sql . append ( "and cm.newest_call_time between :createTimeBegin and :createTimeEnd " ) ;
sql . append ( "and cm.newest_call_time between :createTimeBegin and :createTimeEnd " ) ;
}
}
//拼接最后加入时间排序,没加id排序出现数据重复问题(注意空格)
//拼接最后加入时间排序,没加id排序出现数据重复问题(注意空格)
@ -139,20 +141,20 @@ public class ClueJpa {
if ( clueQueryCriteria . getMemberStatus ( ) ! = null ) {
if ( clueQueryCriteria . getMemberStatus ( ) ! = null ) {
query . setParameter ( "memberStatus" , clueQueryCriteria . getMemberStatus ( ) ) ;
query . setParameter ( "memberStatus" , clueQueryCriteria . getMemberStatus ( ) ) ;
}
}
if ( clueQueryCriteria . getClueStage ( ) ! = null ) {
if ( clueQueryCriteria . getClueStage ( ) ! = null ) {
query . setParameter ( "clueStage" , clueQueryCriteria . getClueStage ( ) ) ;
query . setParameter ( "clueStage" , clueQueryCriteria . getClueStage ( ) ) ;
}
}
if ( clueQueryCriteria . getLabel ( ) ! = null ) {
if ( clueQueryCriteria . getLabel ( ) ! = null ) {
query . setParameter ( "sourceLabel" , "%" + clueQueryCriteria . getLabel ( ) + "%" ) ;
query . setParameter ( "sourceLabel" , "%" + clueQueryCriteria . getLabel ( ) + "%" ) ;
}
}
if ( clueQueryCriteria . getClueCallStatus ( ) ! = null ) {
if ( clueQueryCriteria . getClueCallStatus ( ) ! = null ) {
query . setParameter ( "clueCallStatus" , clueQueryCriteria . getClueCallStatus ( ) ) ;
query . setParameter ( "clueCallStatus" , clueQueryCriteria . getClueCallStatus ( ) ) ;
}
}
if ( newestCallTimeList ! = null & & newestCallTimeList . size ( ) = = 2 ) {
if ( newestCallTimeList ! = null & & newestCallTimeList . size ( ) = = 2 ) {
String createTimeBegin = this . format . format ( newestCallTimeList . get ( 0 ) ) ;
String createTimeBegin = this . format . format ( newestCallTimeList . get ( 0 ) ) ;
String createTimeEnd = this . format . format ( newestCallTimeList . get ( 1 ) ) ;
String createTimeEnd = this . format . format ( newestCallTimeList . get ( 1 ) ) ;
query . setParameter ( "createTimeBegin" , createTimeBegin ) ;
query . setParameter ( "createTimeBegin" , createTimeBegin ) ;
query . setParameter ( "createTimeEnd" , createTimeEnd ) ;
query . setParameter ( "createTimeEnd" , createTimeEnd ) ;
}
}
if ( pageable ! = null ) {
if ( pageable ! = null ) {
query . setParameter ( "number" , pageable . getPageNumber ( ) * pageable . getPageSize ( ) ) ;
query . setParameter ( "number" , pageable . getPageNumber ( ) * pageable . getPageSize ( ) ) ;
@ -214,7 +216,7 @@ public class ClueJpa {
clueDto . setOrigin ( ( Integer ) row . get ( "origin" ) ) ;
clueDto . setOrigin ( ( Integer ) row . get ( "origin" ) ) ;
clueDto . setCollectTime ( ( Date ) row . get ( "collectTime" ) ) ;
clueDto . setCollectTime ( ( Date ) row . get ( "collectTime" ) ) ;
BigInteger organizeId = ( BigInteger ) row . get ( "organizeId" ) ;
BigInteger organizeId = ( BigInteger ) row . get ( "organizeId" ) ;
if ( organizeId ! = null ) {
if ( organizeId ! = null ) {
clueDto . setOrganizeId ( organizeId . longValue ( ) ) ;
clueDto . setOrganizeId ( organizeId . longValue ( ) ) ;
}
}
BigInteger memberId = ( BigInteger ) row . get ( "memberId" ) ;
BigInteger memberId = ( BigInteger ) row . get ( "memberId" ) ;
@ -275,6 +277,7 @@ public class ClueJpa {
Integer origin = clueQueryCriteria . getOrigin ( ) ;
Integer origin = clueQueryCriteria . getOrigin ( ) ;
List < Timestamp > createTimeList = clueQueryCriteria . getCreateTime ( ) ;
List < Timestamp > createTimeList = clueQueryCriteria . getCreateTime ( ) ;
Integer clueStage = clueQueryCriteria . getClueStage ( ) ;
Integer clueStage = clueQueryCriteria . getClueStage ( ) ;
List < Long > userIdList = clueQueryCriteria . getUserIdList ( ) ;
StringBuilder sql = new StringBuilder ( ) ;
StringBuilder sql = new StringBuilder ( ) ;
sql . append ( "SELECT tc.id as id,tc.nid as nid,tc.create_time as createTime,tc.name as name,tc.origin as origin,tcm.task_id as taskId,tcm.member_status as memberStatus," +
sql . append ( "SELECT tc.id as id,tc.nid as nid,tc.create_time as createTime,tc.name as name,tc.origin as origin,tcm.task_id as taskId,tcm.member_status as memberStatus," +
"tcm.clue_stage as clueStage,tcm.clue_call_status as clueCallStatus,tcm.member_id as memberId " +
"tcm.clue_stage as clueStage,tcm.clue_call_status as clueCallStatus,tcm.member_id as memberId " +
@ -284,24 +287,28 @@ public class ClueJpa {
}
}
if ( pageable ! = null ) {
if ( pageable ! = null ) {
Integer memberStatus = clueQueryCriteria . getMemberStatus ( ) ;
Integer memberStatus = clueQueryCriteria . getMemberStatus ( ) ;
if ( memberStatus ! = null & & memberStatus = = 0 ) {
if ( memberStatus ! = null & & memberStatus = = 0 ) {
sql . append ( "AND tcm.member_id is null " ) ;
sql . append ( "AND tcm.member_id is null " ) ;
}
}
if ( memberStatus ! = null & & memberStatus > 0 ) {
if ( memberStatus ! = null & & memberStatus > 0 ) {
sql . append ( "AND tcm.member_id is not null " ) ;
sql . append ( "AND tcm.member_id is not null " ) ;
}
}
if ( StringUtils . isNotBlank ( name ) ) {
if ( userIdList ! = null & & userIdList . size ( ) > 0 ) {
sql . append ( "and tcm.member_id in (:userIdList)" ) ;
}
if ( StringUtils . isNotBlank ( name ) ) {
sql . append ( "and tc.name like :name " ) ;
sql . append ( "and tc.name like :name " ) ;
}
}
if ( origin ! = null ) {
if ( origin ! = null ) {
sql . append ( "and tc.origin = :origin " ) ;
sql . append ( "and tc.origin = :origin " ) ;
}
}
if ( clueStage ! = null ) {
if ( clueStage ! = null ) {
sql . append ( "AND tcm.clue_stage = :clueStage " ) ;
sql . append ( "AND tcm.clue_stage = :clueStage " ) ;
}
}
if ( createTimeList ! = null & & createTimeList . size ( ) = = 2 ) {
if ( createTimeList ! = null & & createTimeList . size ( ) = = 2 ) {
sql . append ( "and tc.create_time between :createTimeBegin and :createTimeEnd " ) ;
sql . append ( "and tc.create_time between :createTimeBegin and :createTimeEnd " ) ;
}
}
//拼接最后加入时间排序,没加id排序出现数据重复问题(注意空格)
//拼接最后加入时间排序,没加id排序出现数据重复问题(注意空格)
sql . append ( "ORDER BY tc.create_time desc ,tc.id " ) ;
sql . append ( "ORDER BY tc.create_time desc ,tc.id " ) ;
sql . append ( "LIMIT :number,:size " ) ;
sql . append ( "LIMIT :number,:size " ) ;
@ -314,17 +321,20 @@ public class ClueJpa {
if ( origin ! = null ) {
if ( origin ! = null ) {
query . setParameter ( "origin" , origin ) ;
query . setParameter ( "origin" , origin ) ;
}
}
if ( clueStage ! = null ) {
if ( clueStage ! = null ) {
query . setParameter ( "clueStage" , clueStage ) ;
query . setParameter ( "clueStage" , clueStage ) ;
}
}
if ( StringUtils . isNotBlank ( name ) ) {
if ( StringUtils . isNotBlank ( name ) ) {
query . setParameter ( "name" , "%" + name + "%" ) ;
query . setParameter ( "name" , "%" + name + "%" ) ;
}
}
if ( createTimeList ! = null & & createTimeList . size ( ) = = 2 ) {
if ( createTimeList ! = null & & createTimeList . size ( ) = = 2 ) {
String createTimeBegin = this . format . format ( createTimeList . get ( 0 ) ) ;
String createTimeBegin = this . format . format ( createTimeList . get ( 0 ) ) ;
String createTimeEnd = this . format . format ( createTimeList . get ( 1 ) ) ;
String createTimeEnd = this . format . format ( createTimeList . get ( 1 ) ) ;
query . setParameter ( "createTimeBegin" , createTimeBegin ) ;
query . setParameter ( "createTimeBegin" , createTimeBegin ) ;
query . setParameter ( "createTimeEnd" , createTimeEnd ) ;
query . setParameter ( "createTimeEnd" , createTimeEnd ) ;
}
if ( userIdList ! = null & & userIdList . size ( ) > 0 ) {
query . setParameter ( "userIdList" , userIdList ) ;
}
}
query . setParameter ( "number" , pageable . getPageNumber ( ) * pageable . getPageSize ( ) ) ;
query . setParameter ( "number" , pageable . getPageNumber ( ) * pageable . getPageSize ( ) ) ;
query . setParameter ( "size" , pageable . getPageSize ( ) ) ;
query . setParameter ( "size" , pageable . getPageSize ( ) ) ;
@ -352,7 +362,7 @@ public class ClueJpa {
clue . setClueStage ( ( Integer ) row . get ( "clueStage" ) ) ;
clue . setClueStage ( ( Integer ) row . get ( "clueStage" ) ) ;
clue . setClueCallStatus ( ( Integer ) row . get ( "clueCallStatus" ) ) ;
clue . setClueCallStatus ( ( Integer ) row . get ( "clueCallStatus" ) ) ;
BigInteger memberId = ( BigInteger ) row . get ( "memberId" ) ;
BigInteger memberId = ( BigInteger ) row . get ( "memberId" ) ;
if ( memberId ! = null ) {
if ( memberId ! = null ) {
clue . setMemberId ( memberId . longValue ( ) ) ;
clue . setMemberId ( memberId . longValue ( ) ) ;
}
}
}
}
@ -373,19 +383,19 @@ public class ClueJpa {
if ( CollUtil . isNotEmpty ( taskIds ) ) {
if ( CollUtil . isNotEmpty ( taskIds ) ) {
sql . append ( "AND cm.task_id IN (:taskId) " ) ;
sql . append ( "AND cm.task_id IN (:taskId) " ) ;
Integer memberStatus = clueQueryCriteria . getMemberStatus ( ) ;
Integer memberStatus = clueQueryCriteria . getMemberStatus ( ) ;
if ( memberStatus ! = null & & memberStatus = = 0 ) {
if ( memberStatus ! = null & & memberStatus = = 0 ) {
sql . append ( "AND cm.member_id is null " ) ;
sql . append ( "AND cm.member_id is null " ) ;
}
}
if ( memberStatus ! = null & & memberStatus > 0 ) {
if ( memberStatus ! = null & & memberStatus > 0 ) {
sql . append ( "AND cm.member_id is not null " ) ;
sql . append ( "AND cm.member_id is not null " ) ;
}
}
if ( StringUtils . isNotBlank ( name ) ) {
if ( StringUtils . isNotBlank ( name ) ) {
sql . append ( "and c.name like :name " ) ;
sql . append ( "and c.name like :name " ) ;
}
}
if ( origin ! = null ) {
if ( origin ! = null ) {
sql . append ( "and c.origin = :origin " ) ;
sql . append ( "and c.origin = :origin " ) ;
}
}
if ( createTimeList ! = null & & createTimeList . size ( ) = = 2 ) {
if ( createTimeList ! = null & & createTimeList . size ( ) = = 2 ) {
sql . append ( "and c.create_time between :createTimeBegin and :createTimeEnd " ) ;
sql . append ( "and c.create_time between :createTimeBegin and :createTimeEnd " ) ;
}
}
}
}
@ -395,14 +405,14 @@ public class ClueJpa {
if ( origin ! = null ) {
if ( origin ! = null ) {
query . setParameter ( "origin" , origin ) ;
query . setParameter ( "origin" , origin ) ;
}
}
if ( StringUtils . isNotBlank ( name ) ) {
if ( StringUtils . isNotBlank ( name ) ) {
query . setParameter ( "name" , "%" + name + "%" ) ;
query . setParameter ( "name" , "%" + name + "%" ) ;
}
}
if ( createTimeList ! = null & & createTimeList . size ( ) = = 2 ) {
if ( createTimeList ! = null & & createTimeList . size ( ) = = 2 ) {
String createTimeBegin = this . format . format ( createTimeList . get ( 0 ) ) ;
String createTimeBegin = this . format . format ( createTimeList . get ( 0 ) ) ;
String createTimeEnd = this . format . format ( createTimeList . get ( 1 ) ) ;
String createTimeEnd = this . format . format ( createTimeList . get ( 1 ) ) ;
query . setParameter ( "createTimeBegin" , createTimeBegin ) ;
query . setParameter ( "createTimeBegin" , createTimeBegin ) ;
query . setParameter ( "createTimeEnd" , createTimeEnd ) ;
query . setParameter ( "createTimeEnd" , createTimeEnd ) ;
}
}
}
}
query . unwrap ( NativeQuery . class ) . setResultTransformer ( Transformers . ALIAS_TO_ENTITY_MAP ) ;
query . unwrap ( NativeQuery . class ) . setResultTransformer ( Transformers . ALIAS_TO_ENTITY_MAP ) ;
@ -415,4 +425,83 @@ public class ClueJpa {
}
}
return count ;
return count ;
}
}
/ * *
* 分 页 查 询 , 不 分 页 传 null
* /
public List < PublicCluePoolDto > getCluePoolList ( PublicCluePoolQueryCriteria publicCluePoolQueryCriteria , Pageable pageable ) {
StringBuilder sql = new StringBuilder ( ) ;
sql . append ( "select p.clue_id as clueId,c.name as clueName,cm.clue_stage as clueStage ,cm.clue_call_status as clueCallStatus ," +
"p.member_id as memberId ,p.member_name as memberName ,cm.member_status as memberStatus ,cm.source_label as sourceLabel ," +
"p.create_time as createTime ,cm.newest_call_time as newestCallTime from tb_public_clue_pool as p left join tb_clue_middle as cm on p.clue_id=cm.clue_id " +
"left join tb_clue as c on c.id =p.clue_id where 1=1" ) ;
List confirmReceipt = getCluePoolListCondition ( publicCluePoolQueryCriteria , sql , pageable ) ;
return getPoolClue ( confirmReceipt ) ;
}
public Long getPoolCount ( PublicCluePoolQueryCriteria clueQueryCriteria ) {
StringBuilder sql = new StringBuilder ( "select count(*) as countNum from tb_public_clue_pool as p left join tb_clue_middle as cm on p.clue_id=cm.clue_id where 1=1 " ) ;
List confirmReceipt = getCluePoolListCondition ( clueQueryCriteria , sql , null ) ;
Long count = 0 L ;
for ( Object obj : confirmReceipt ) {
Map row = ( Map ) obj ;
BigInteger countBig = ( BigInteger ) row . get ( "countNum" ) ;
count = countBig . longValue ( ) ;
}
return count ;
}
/ * *
* 拼 接 sql 条 件 查 询 ( 注 意 空 格 )
*
* @param pageable 不 分 页 查 询 参 数 传 输 null
* @return
* /
@Transactional ( rollbackOn = Exception . class )
public List getCluePoolListCondition ( PublicCluePoolQueryCriteria clueQueryCriteria , StringBuilder sql , Pageable pageable ) {
Long companyId = clueQueryCriteria . getCompanyId ( ) ;
sql . append ( " and p.company_id = :companyId " ) ;
//拼接最后加入时间排序,没加id排序出现数据重复问题(注意空格)
sql . append ( "ORDER BY p.create_time desc " ) ;
if ( pageable ! = null ) {
sql . append ( "LIMIT :number,:size " ) ;
}
Query query = entityManager . createNativeQuery ( sql . toString ( ) ) ;
query . setParameter ( "companyId" , companyId ) ;
if ( pageable ! = null ) {
query . setParameter ( "number" , pageable . getPageNumber ( ) * pageable . getPageSize ( ) ) ;
query . setParameter ( "size" , pageable . getPageSize ( ) ) ;
}
query . unwrap ( NativeQueryImpl . class ) . setResultTransformer ( Transformers . ALIAS_TO_ENTITY_MAP ) ;
return query . getResultList ( ) ;
}
/ * *
* 转 换 封 装 为 Dto , key 对 应 sql 语 句 的 as 别 名
* /
private List < PublicCluePoolDto > getPoolClue ( List list ) {
List < PublicCluePoolDto > clueDtoList = new ArrayList < > ( ) ;
for ( Object obj : list ) {
Map row = ( Map ) obj ;
PublicCluePoolDto clueDto = new PublicCluePoolDto ( ) ;
BigInteger id = ( BigInteger ) row . get ( "clueId" ) ;
clueDto . setClueId ( id . longValue ( ) ) ;
clueDto . setClueName ( ( String ) row . get ( "clueName" ) ) ;
clueDto . setClueStage ( ( Integer ) row . get ( "clueStage" ) ) ;
clueDto . setClueCallStatus ( ( Integer ) row . get ( "clueCallStatus" ) ) ;
BigInteger memberId = ( BigInteger ) row . get ( "memberId" ) ;
clueDto . setMemberId ( memberId . longValue ( ) ) ;
clueDto . setMemberName ( ( String ) row . get ( "memberName" ) ) ;
JSONArray sourceLabel = JSONUtil . parseArray ( row . get ( "sourceLabel" ) ) ;
clueDto . setSourceLabel ( sourceLabel ) ;
clueDto . setMemberStatus ( ( Integer ) row . get ( "memberStatus" ) ) ;
clueDto . setCreateTime ( ( Date ) row . get ( "createTime" ) ) ;
clueDto . setNewestCallTime ( ( Date ) row . get ( "newestCallTime" ) ) ;
clueDtoList . add ( clueDto ) ;
}
return clueDtoList ;
}
}
}