Interface ViewAgentThreadStatsRepository

All Superinterfaces:
org.springframework.data.repository.CrudRepository<ViewAgentThreadStats,ViewAgentThreadStats.ViewAgentThreadStatsId>, org.springframework.data.jpa.repository.JpaRepository<ViewAgentThreadStats,ViewAgentThreadStats.ViewAgentThreadStatsId>, org.springframework.data.repository.ListCrudRepository<ViewAgentThreadStats,ViewAgentThreadStats.ViewAgentThreadStatsId>, org.springframework.data.repository.ListPagingAndSortingRepository<ViewAgentThreadStats,ViewAgentThreadStats.ViewAgentThreadStatsId>, org.springframework.data.repository.PagingAndSortingRepository<ViewAgentThreadStats,ViewAgentThreadStats.ViewAgentThreadStatsId>, org.springframework.data.repository.query.QueryByExampleExecutor<ViewAgentThreadStats>, org.springframework.data.repository.Repository<ViewAgentThreadStats,ViewAgentThreadStats.ViewAgentThreadStatsId>

@Repository public interface ViewAgentThreadStatsRepository extends org.springframework.data.jpa.repository.JpaRepository<ViewAgentThreadStats,ViewAgentThreadStats.ViewAgentThreadStatsId>
客服会话统计视图仓库 Agent Thread Statistics View Repository 用途:查询客服会话统计视图数据 示例用法:
 
 // 1. 查询某个客服今天的统计
 List<ViewAgentThreadStats> todayStats = repository
     .findByAgentUidAndStatDate("agent123", LocalDate.now());
 
 // 2. 查询某个客服某天某小时的统计
 Optional<ViewAgentThreadStats> hourStats = repository
     .findByAgentUidAndStatDateAndStatHour("agent123", LocalDate.now(), 14);
 
 // 3. 查询某个组织今天所有客服的统计
 List<ViewAgentThreadStats> orgStats = repository
     .findByOrgUidAndStatDate("org123", LocalDate.now());
 
 // 4. 查询某个客服最近7天的统计
 List<ViewAgentThreadStats> weekStats = repository
     .findByAgentUidAndStatDateBetween(
         "agent123", 
         LocalDate.now().minusDays(7), 
         LocalDate.now()
     );
 
 
  • Method Details

    • findByAgentUidAndStatDate

      @Query("SELECT v FROM ViewAgentThreadStats v\nWHERE v.id.agentUid = :agentUid\n AND v.id.statDate = :statDate\nORDER BY v.id.statHour\n") List<ViewAgentThreadStats> findByAgentUidAndStatDate(@Param("agentUid") String agentUid, @Param("statDate") LocalDate statDate)
      查询某个客服在指定日期的统计(所有小时汇总)
    • findByAgentUidAndStatDateBetween

      @Query("SELECT v FROM ViewAgentThreadStats v\nWHERE v.id.agentUid = :agentUid\n AND v.id.statDate BETWEEN :startDate AND :endDate\nORDER BY v.id.statDate, v.id.statHour\n") List<ViewAgentThreadStats> findByAgentUidAndStatDateBetween(@Param("agentUid") String agentUid, @Param("startDate") LocalDate startDate, @Param("endDate") LocalDate endDate)
      查询某个客服在指定日期范围内的统计
    • findByAgentUidAndStatDateAndStatHour

      @Query("SELECT v FROM ViewAgentThreadStats v\nWHERE v.id.agentUid = :agentUid\n AND v.id.statDate = :statDate\n AND v.id.statHour = :statHour\n") Optional<ViewAgentThreadStats> findByAgentUidAndStatDateAndStatHour(@Param("agentUid") String agentUid, @Param("statDate") LocalDate statDate, @Param("statHour") Integer statHour)
      查询某个客服在指定日期和小时的统计
    • findByOrgUidAndStatDate

      @Query("SELECT v FROM ViewAgentThreadStats v\nWHERE v.id.orgUid = :orgUid\n AND v.id.statDate = :statDate\nORDER BY v.totalThreads DESC\n") List<ViewAgentThreadStats> findByOrgUidAndStatDate(@Param("orgUid") String orgUid, @Param("statDate") LocalDate statDate)
      查询某个组织在指定日期的所有客服统计
    • findByOrgUidAndStatDateBetween

      @Query("SELECT v FROM ViewAgentThreadStats v\nWHERE v.id.orgUid = :orgUid\n AND v.id.statDate BETWEEN :startDate AND :endDate\nORDER BY v.id.statDate, v.totalThreads DESC\n") List<ViewAgentThreadStats> findByOrgUidAndStatDateBetween(@Param("orgUid") String orgUid, @Param("startDate") LocalDate startDate, @Param("endDate") LocalDate endDate)
      查询某个组织在指定日期范围内的所有客服统计
    • findDailySummaryByAgentUidAndStatDate

      @Query("SELECT new com.bytedesk.service.service_statistic.view.AgentDailyStats(\n v.id.agentUid,\n v.id.orgUid,\n v.id.statDate,\n SUM(v.totalThreads),\n SUM(v.acceptedThreads),\n SUM(v.abandonedThreads),\n AVG(v.avgWaitTime),\n MAX(v.maxWaitTime),\n AVG(v.avgResponseTime),\n SUM(v.totalAgentMessages),\n SUM(v.totalVisitorMessages)\n)\nFROM ViewAgentThreadStats v\nWHERE v.id.agentUid = :agentUid\n AND v.id.statDate = :statDate\nGROUP BY v.id.agentUid, v.id.orgUid, v.id.statDate\n") Optional<AgentDailyStats> findDailySummaryByAgentUidAndStatDate(@Param("agentUid") String agentUid, @Param("statDate") LocalDate statDate)
      查询某个客服某天的汇总统计(所有小时求和)
    • findTopAgentsByResponseTime

      @Query("SELECT v FROM ViewAgentThreadStats v\nWHERE v.id.orgUid = :orgUid\n AND v.id.statDate = :statDate\n AND v.acceptedThreads > :minThreads\nORDER BY v.avgResponseTime ASC\n") List<ViewAgentThreadStats> findTopAgentsByResponseTime(@Param("orgUid") String orgUid, @Param("statDate") LocalDate statDate, @Param("minThreads") Integer minThreads)
      查询响应速度最快的前N名客服
    • findTopAgentsByThreadCount

      @Query("SELECT v FROM ViewAgentThreadStats v\nWHERE v.id.orgUid = :orgUid\n AND v.id.statDate = :statDate\nORDER BY v.totalThreads DESC\n") List<ViewAgentThreadStats> findTopAgentsByThreadCount(@Param("orgUid") String orgUid, @Param("statDate") LocalDate statDate)
      查询会话量最多的前N名客服
    • sumTotalThreadsByOrgUidAndStatDate

      @Query("SELECT SUM(v.totalThreads)\nFROM ViewAgentThreadStats v\nWHERE v.id.orgUid = :orgUid\n AND v.id.statDate = :statDate\n") Long sumTotalThreadsByOrgUidAndStatDate(@Param("orgUid") String orgUid, @Param("statDate") LocalDate statDate)
      统计某个组织某天的总会话量
    • avgResponseTimeByOrgUidAndStatDate

      @Query("SELECT AVG(v.avgResponseTime)\nFROM ViewAgentThreadStats v\nWHERE v.id.orgUid = :orgUid\n AND v.id.statDate = :statDate\n AND v.acceptedThreads > 0\n") Double avgResponseTimeByOrgUidAndStatDate(@Param("orgUid") String orgUid, @Param("statDate") LocalDate statDate)
      统计某个组织某天的平均响应时间