Interface QueueMemberRepository
- All Superinterfaces:
org.springframework.data.repository.CrudRepository<QueueMemberEntity,,Long> org.springframework.data.jpa.repository.JpaRepository<QueueMemberEntity,,Long> org.springframework.data.jpa.repository.JpaSpecificationExecutor<QueueMemberEntity>,org.springframework.data.repository.ListCrudRepository<QueueMemberEntity,,Long> org.springframework.data.repository.ListPagingAndSortingRepository<QueueMemberEntity,,Long> org.springframework.data.repository.PagingAndSortingRepository<QueueMemberEntity,,Long> org.springframework.data.repository.query.QueryByExampleExecutor<QueueMemberEntity>,org.springframework.data.repository.Repository<QueueMemberEntity,Long>
public interface QueueMemberRepository
extends org.springframework.data.jpa.repository.JpaRepository<QueueMemberEntity,Long>, org.springframework.data.jpa.repository.JpaSpecificationExecutor<QueueMemberEntity>
-
Nested Class Summary
Nested classes/interfaces inherited from interface org.springframework.data.jpa.repository.JpaSpecificationExecutor
org.springframework.data.jpa.repository.JpaSpecificationExecutor.SpecificationFluentQuery<T extends Object> -
Method Summary
Modifier and TypeMethodDescriptioncountByAgentUidAndDateBetween(String agentUid, ZonedDateTime startDate, ZonedDateTime endDate) countByOrgUidAndDateBetween(String orgUid, ZonedDateTime startDate, ZonedDateTime endDate) countByRobotUidAndDateBetween(String orgUid, String robotUid, ZonedDateTime startDate, ZonedDateTime endDate) countByWorkgroupUidAndDateBetween(String orgUid, String workgroupUid, ZonedDateTime startDate, ZonedDateTime endDate) intcountQueuingByAgentQueueUid(String agentQueueUid, String threadStatus) 统计指定客服队列中处于排队状态的会话数intcountUnassignedQueuingByWorkgroupQueueUids(List<String> workgroupQueueUids, String threadStatus) 统计指定工作组队列UIDs中未分配客服(agentQueue 为 null)且处于排队状态的会话数 用于计算某个客服所在工作组中等待分配的排队人数findAgentQueueHeadForUpdate(String agentQueueUid, String threadStatus, org.springframework.data.domain.Pageable pageable) org.springframework.data.domain.Page<QueueMemberEntity>findAgentQueueMembersByThreadStatus(String agentQueueUid, String threadStatus, org.springframework.data.domain.Pageable pageable) findByOrgUidAndCreatedAtBetweenAndAgentAcceptType(String orgUid, ZonedDateTime startTime, ZonedDateTime endTime, String acceptType) findByOrgUidAndCreatedAtBetweenAndResolved(String orgUid, ZonedDateTime startTime, ZonedDateTime endTime, boolean resolved) findByThreadUid(String threadUid) findFirstAgentQueueMemberByThreadStatus(String agentQueueUid, String threadStatus) findFirstRobotQueueMemberByThreadStatus(String robotQueueUid, String threadStatus) findFirstWorkgroupQueueMemberByThreadStatus(String workgroupQueueUid, String threadStatus) findIdleBefore(ZonedDateTime threshold) 查找在指定时间之前仍未发送任何访客消息(visitorMessageCount=0)的排队成员findMaxQueueNumberForQueue(QueueEntity queue, String queueType) findWorkgroupQueueMembersByThreadStatus(String workgroupQueueUid, String threadStatus) Methods inherited from interface org.springframework.data.repository.CrudRepository
count, delete, deleteAll, deleteAll, deleteAllById, deleteById, existsById, findById, saveMethods inherited from interface org.springframework.data.jpa.repository.JpaRepository
deleteAllByIdInBatch, deleteAllInBatch, deleteAllInBatch, deleteInBatch, findAll, findAll, flush, getById, getOne, getReferenceById, saveAllAndFlush, saveAndFlushMethods inherited from interface org.springframework.data.jpa.repository.JpaSpecificationExecutor
count, delete, exists, findAll, findAll, findAll, findAll, findBy, findOneMethods inherited from interface org.springframework.data.repository.ListCrudRepository
findAll, findAllById, saveAllMethods inherited from interface org.springframework.data.repository.ListPagingAndSortingRepository
findAllMethods inherited from interface org.springframework.data.repository.PagingAndSortingRepository
findAllMethods inherited from interface org.springframework.data.repository.query.QueryByExampleExecutor
count, exists, findAll, findBy, findOne
-
Method Details
-
findByUid
-
findByOrgUidAndCreatedAtBetweenAndResolved
List<QueueMemberEntity> findByOrgUidAndCreatedAtBetweenAndResolved(String orgUid, ZonedDateTime startTime, ZonedDateTime endTime, boolean resolved) -
findByOrgUidAndCreatedAtBetweenAndAgentAcceptType
List<QueueMemberEntity> findByOrgUidAndCreatedAtBetweenAndAgentAcceptType(String orgUid, ZonedDateTime startTime, ZonedDateTime endTime, String acceptType) -
findByThreadUid
@Query("SELECT qm FROM QueueMemberEntity qm WHERE qm.thread.uid = :threadUid AND qm.deleted = false") Optional<QueueMemberEntity> findByThreadUid(@Param("threadUid") String threadUid) -
countByOrgUidAndDateBetween
@Query("SELECT COUNT(qm) FROM QueueMemberEntity qm WHERE qm.orgUid = :orgUid AND qm.createdAt >= :startDate AND qm.createdAt <= :endDate") Long countByOrgUidAndDateBetween(@Param("orgUid") String orgUid, @Param("startDate") ZonedDateTime startDate, @Param("endDate") ZonedDateTime endDate) -
countByWorkgroupUidAndDateBetween
@Query("SELECT COUNT(qm) FROM QueueMemberEntity qm WHERE qm.orgUid = :orgUid AND qm.workgroupQueue IS NOT NULL AND qm.createdAt >= :startDate AND qm.createdAt <= :endDate") Long countByWorkgroupUidAndDateBetween(@Param("orgUid") String orgUid, @Param("workgroupUid") String workgroupUid, @Param("startDate") ZonedDateTime startDate, @Param("endDate") ZonedDateTime endDate) -
countByAgentUidAndDateBetween
@Query("SELECT COUNT(qm) FROM QueueMemberEntity qm WHERE qm.thread.agent LIKE CONCAT(\'%\', :agentUid, \'%\') AND qm.createdAt >= :startDate AND qm.createdAt <= :endDate") Long countByAgentUidAndDateBetween(@Param("agentUid") String agentUid, @Param("startDate") ZonedDateTime startDate, @Param("endDate") ZonedDateTime endDate) -
countByRobotUidAndDateBetween
@Query("SELECT COUNT(qm) FROM QueueMemberEntity qm WHERE qm.orgUid = :orgUid AND qm.robotQueue IS NOT NULL AND qm.createdAt >= :startDate AND qm.createdAt <= :endDate") Long countByRobotUidAndDateBetween(@Param("orgUid") String orgUid, @Param("robotUid") String robotUid, @Param("startDate") ZonedDateTime startDate, @Param("endDate") ZonedDateTime endDate) -
findIdleBefore
@Query("SELECT qm FROM QueueMemberEntity qm WHERE qm.visitorMessageCount = 0 AND qm.deleted = false AND qm.visitorEnqueueAt < :threshold") List<QueueMemberEntity> findIdleBefore(@Param("threshold") ZonedDateTime threshold) 查找在指定时间之前仍未发送任何访客消息(visitorMessageCount=0)的排队成员 -
findFirstAgentQueueMemberByThreadStatus
@Query("SELECT qm FROM QueueMemberEntity qm WHERE qm.agentQueue.uid = :agentQueueUid AND qm.deleted = false AND qm.thread.status = :threadStatus ORDER BY qm.queueNumber ASC") Optional<QueueMemberEntity> findFirstAgentQueueMemberByThreadStatus(@Param("agentQueueUid") String agentQueueUid, @Param("threadStatus") String threadStatus) -
findAgentQueueHeadForUpdate
@Lock(PESSIMISTIC_WRITE) @Query("SELECT qm FROM QueueMemberEntity qm WHERE qm.agentQueue.uid = :agentQueueUid AND qm.deleted = false AND qm.thread.status = :threadStatus ORDER BY qm.queueNumber ASC") List<QueueMemberEntity> findAgentQueueHeadForUpdate(@Param("agentQueueUid") String agentQueueUid, @Param("threadStatus") String threadStatus, org.springframework.data.domain.Pageable pageable) -
findFirstWorkgroupQueueMemberByThreadStatus
@Query("SELECT qm FROM QueueMemberEntity qm WHERE qm.workgroupQueue.uid = :workgroupQueueUid AND qm.deleted = false AND qm.thread.status = :threadStatus ORDER BY qm.queueNumber ASC") Optional<QueueMemberEntity> findFirstWorkgroupQueueMemberByThreadStatus(@Param("workgroupQueueUid") String workgroupQueueUid, @Param("threadStatus") String threadStatus) -
findWorkgroupQueueMembersByThreadStatus
@Query("SELECT qm FROM QueueMemberEntity qm WHERE qm.workgroupQueue.uid = :workgroupQueueUid AND qm.deleted = false AND qm.thread.status = :threadStatus ORDER BY qm.queueNumber ASC") List<QueueMemberEntity> findWorkgroupQueueMembersByThreadStatus(@Param("workgroupQueueUid") String workgroupQueueUid, @Param("threadStatus") String threadStatus) -
findFirstRobotQueueMemberByThreadStatus
@Query("SELECT qm FROM QueueMemberEntity qm WHERE qm.robotQueue.uid = :robotQueueUid AND qm.deleted = false AND qm.thread.status = :threadStatus ORDER BY qm.queueNumber ASC") Optional<QueueMemberEntity> findFirstRobotQueueMemberByThreadStatus(@Param("robotQueueUid") String robotQueueUid, @Param("threadStatus") String threadStatus) -
findAgentQueueMembersByThreadStatus
@Query(value="SELECT qm FROM QueueMemberEntity qm WHERE qm.agentQueue.uid = :agentQueueUid AND qm.deleted = false AND qm.thread.status = :threadStatus ORDER BY qm.queueNumber ASC", countQuery="SELECT COUNT(qm) FROM QueueMemberEntity qm WHERE qm.agentQueue.uid = :agentQueueUid AND qm.deleted = false AND qm.thread.status = :threadStatus") org.springframework.data.domain.Page<QueueMemberEntity> findAgentQueueMembersByThreadStatus(@Param("agentQueueUid") String agentQueueUid, @Param("threadStatus") String threadStatus, org.springframework.data.domain.Pageable pageable) -
findMaxQueueNumberForQueue
@Lock(PESSIMISTIC_WRITE) @Query("SELECT COALESCE(MAX(qm.queueNumber), 0) FROM QueueMemberEntity qm WHERE qm.deleted = false AND ((:queueType = \'AGENT\' AND qm.agentQueue = :queue) OR (:queueType = \'WORKGROUP\' AND qm.workgroupQueue = :queue) OR (:queueType = \'ROBOT\' AND qm.robotQueue = :queue))") Integer findMaxQueueNumberForQueue(@Param("queue") QueueEntity queue, @Param("queueType") String queueType) -
countUnassignedQueuingByWorkgroupQueueUids
@Query("SELECT COUNT(qm) FROM QueueMemberEntity qm WHERE qm.workgroupQueue.uid IN :workgroupQueueUids AND qm.agentQueue IS NULL AND qm.deleted = false AND qm.thread.status = :threadStatus") int countUnassignedQueuingByWorkgroupQueueUids(@Param("workgroupQueueUids") List<String> workgroupQueueUids, @Param("threadStatus") String threadStatus) 统计指定工作组队列UIDs中未分配客服(agentQueue 为 null)且处于排队状态的会话数 用于计算某个客服所在工作组中等待分配的排队人数- Parameters:
workgroupQueueUids- 工作组队列UID列表threadStatus- 线程状态(如 QUEUING)- Returns:
- 未分配客服的排队会话数
-
countQueuingByAgentQueueUid
@Query("SELECT COUNT(qm) FROM QueueMemberEntity qm WHERE qm.agentQueue.uid = :agentQueueUid AND qm.deleted = false AND qm.thread.status = :threadStatus") int countQueuingByAgentQueueUid(@Param("agentQueueUid") String agentQueueUid, @Param("threadStatus") String threadStatus) 统计指定客服队列中处于排队状态的会话数- Parameters:
agentQueueUid- 客服队列UIDthreadStatus- 线程状态(如 QUEUING)- Returns:
- 排队会话数
-