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>
  • Method Details

    • findByUid

    • findByQueueTopicAndQueueDayAndThreadUidAndStatus

      Optional<QueueMemberEntity> findByQueueTopicAndQueueDayAndThreadUidAndStatus(String queueTopic, String queueDay, String threadUid, String status)
    • findByOrgUidAndCreatedAtBetweenAndSolved

      List<QueueMemberEntity> findByOrgUidAndCreatedAtBetweenAndSolved(String orgUid, LocalDateTime startTime, LocalDateTime endTime, boolean solved)
    • findByOrgUidAndCreatedAtBetweenAndAcceptType

      List<QueueMemberEntity> findByOrgUidAndCreatedAtBetweenAndAcceptType(String orgUid, LocalDateTime startTime, LocalDateTime endTime, String acceptType)
    • findByThreadUid

      List<QueueMemberEntity> findByThreadUid(String threadUid)
    • findByStatus

      List<QueueMemberEntity> findByStatus(String status)
    • findByStatusOrderByPriorityDesc

      List<QueueMemberEntity> findByStatusOrderByPriorityDesc(String status)
    • countByQueueUidAndStatus

      int countByQueueUidAndStatus(String queueUid, String status)
    • countByQueueUidAndPriorityGreaterThan

      @Query("SELECT COUNT(m) FROM QueueMemberEntity m WHERE m.queueUid = :queueUid AND m.priority > :priority AND m.status = \'WAITING\'") int countByQueueUidAndPriorityGreaterThan(@Param("queueUid") String queueUid, @Param("priority") int priority)
    • countByQueueUidAndEndStatusIsTrue

      @Query("SELECT COUNT(m) FROM QueueMemberEntity m WHERE m.queueUid = :queueUid AND m.status IN (\'COMPLETED\', \'CANCELLED\', \'TIMEOUT\', \'REJECTED\')") int countByQueueUidAndEndStatusIsTrue(@Param("queueUid") String queueUid)
    • calculateAverageWaitTime

      @Query("SELECT AVG(TIMESTAMPDIFF(SECOND, m.enqueueTime, CASE WHEN m.acceptTime IS NULL THEN CURRENT_TIMESTAMP ELSE m.acceptTime END)) FROM QueueMemberEntity m WHERE m.queueUid = :queueUid AND m.status = \'WAITING\'") Double calculateAverageWaitTime(@Param("queueUid") String queueUid)
    • findByQueueUidAndStatus

      List<QueueMemberEntity> findByQueueUidAndStatus(String queueUid, String status)
    • findByQueueUidOrderByPriorityDesc

      List<QueueMemberEntity> findByQueueUidOrderByPriorityDesc(String queueUid)
    • findByAgentUid

      List<QueueMemberEntity> findByAgentUid(String agentUid)
    • findByVisitorUid

      List<QueueMemberEntity> findByVisitorUid(String visitorUid)
    • getQueueStats

      @Query("SELECT new map(COUNT(m) as total, SUM(CASE WHEN m.status = \'WAITING\' THEN 1 ELSE 0 END) as waiting, SUM(CASE WHEN m.status = \'PROCESSING\' THEN 1 ELSE 0 END) as processing, AVG(TIMESTAMPDIFF(SECOND, m.enqueueTime, CASE WHEN m.acceptTime IS NULL THEN CURRENT_TIMESTAMP ELSE m.acceptTime END)) as avgWaitTime) FROM QueueMemberEntity m WHERE m.queueUid = :queueUid") Map<String,Object> getQueueStats(@Param("queueUid") String queueUid)
    • cleanupExpiredMembers

      @Query("DELETE FROM QueueMemberEntity m WHERE m.queueUid = :queueUid AND m.closeTime < :beforeTime AND m.status IN (\'COMPLETED\', \'CANCELLED\', \'TIMEOUT\', \'REJECTED\')") @Modifying int cleanupExpiredMembers(@Param("queueUid") String queueUid, @Param("beforeTime") LocalDateTime beforeTime)
    • countServingThreadsByAgent

      @Query("SELECT COUNT(t) FROM QueueMemberEntity t WHERE t.agentUid = :agentUid AND t.status = \'SERVING\'") int countServingThreadsByAgent(@Param("agentUid") String agentUid)
    • findServingThreadsByAgent

      @Query("SELECT t.uid FROM QueueMemberEntity t WHERE t.agentUid = :agentUid AND t.status = \'SERVING\'") List<String> findServingThreadsByAgent(@Param("agentUid") String agentUid)
    • getAssignedAgent

      @Query("SELECT t.agentUid FROM QueueMemberEntity t WHERE t.uid = :threadUid") String getAssignedAgent(@Param("threadUid") String threadUid)
    • updateAssignedAgent

      @Modifying @Query("UPDATE QueueMemberEntity t SET t.agentUid = :agentUid WHERE t.uid = :threadUid") void updateAssignedAgent(@Param("threadUid") String threadUid, @Param("agentUid") String agentUid)
    • countTotalThreadsByAgent

      @Query("SELECT COUNT(t) FROM QueueMemberEntity t WHERE t.agentUid = :agentUid") int countTotalThreadsByAgent(@Param("agentUid") String agentUid)
    • countResolvedThreadsByAgent

      @Query("SELECT COUNT(t) FROM QueueMemberEntity t WHERE t.agentUid = :agentUid AND t.status = \'resolved\'") int countResolvedThreadsByAgent(@Param("agentUid") String agentUid)