DataBoardMapper.java 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155
  1. package com.zsElectric.boot.system.mapper;
  2. import com.zsElectric.boot.system.model.vo.DataBoardRealTimeVO;
  3. import com.zsElectric.boot.system.model.vo.DataBoardTodayVO;
  4. import com.zsElectric.boot.system.model.vo.StationRankVO;
  5. import org.apache.ibatis.annotations.Mapper;
  6. import org.apache.ibatis.annotations.Param;
  7. import java.math.BigDecimal;
  8. import java.util.List;
  9. import java.util.Map;
  10. /**
  11. * 数据看板Mapper接口
  12. *
  13. * @author zsElectric
  14. * @since 2026-03-09
  15. */
  16. @Mapper
  17. public interface DataBoardMapper {
  18. /**
  19. * 获取累计实时数据
  20. *
  21. * @return 累计实时数据
  22. */
  23. DataBoardRealTimeVO selectRealTimeData();
  24. /**
  25. * 获取今日实时数据
  26. *
  27. * @param todayStart 今日开始时间
  28. * @param todayEnd 今日结束时间
  29. * @return 今日实时数据
  30. */
  31. DataBoardTodayVO selectTodayData(@Param("todayStart") String todayStart, @Param("todayEnd") String todayEnd);
  32. /**
  33. * 获取今日退款金额
  34. *
  35. * @param todayStart 今日开始时间
  36. * @param todayEnd 今日结束时间
  37. * @return 今日退款金额
  38. */
  39. BigDecimal selectTodayRefundAmount(@Param("todayStart") String todayStart, @Param("todayEnd") String todayEnd);
  40. /**
  41. * 获取累计退款金额
  42. *
  43. * @return 累计退款金额
  44. */
  45. BigDecimal selectTotalRefundAmount();
  46. /**
  47. * 按小时统计充电度数
  48. *
  49. * @param dateStart 开始日期时间
  50. * @param dateEnd 结束日期时间
  51. * @return 小时-充电度数映射
  52. */
  53. List<Map<String, Object>> selectHourlyChargePower(@Param("dateStart") String dateStart, @Param("dateEnd") String dateEnd);
  54. /**
  55. * 按日统计充电度数
  56. *
  57. * @param startDate 开始日期
  58. * @param endDate 结束日期
  59. * @return 日期-充电度数映射
  60. */
  61. List<Map<String, Object>> selectDailyChargePower(@Param("startDate") String startDate, @Param("endDate") String endDate);
  62. /**
  63. * 按日统计充电金额
  64. *
  65. * @param startDate 开始日期
  66. * @param endDate 结束日期
  67. * @return 日期-充电金额映射
  68. */
  69. List<Map<String, Object>> selectDailyChargeAmount(@Param("startDate") String startDate, @Param("endDate") String endDate);
  70. /**
  71. * 按日统计有效订单数
  72. *
  73. * @param startDate 开始日期
  74. * @param endDate 结束日期
  75. * @return 日期-订单数映射
  76. */
  77. List<Map<String, Object>> selectDailyValidOrders(@Param("startDate") String startDate, @Param("endDate") String endDate);
  78. /**
  79. * 按日统计注册用户数
  80. *
  81. * @param startDate 开始日期
  82. * @param endDate 结束日期
  83. * @return 日期-用户数映射
  84. */
  85. List<Map<String, Object>> selectDailyRegisterUsers(@Param("startDate") String startDate, @Param("endDate") String endDate);
  86. /**
  87. * 获取热门充电站排名
  88. *
  89. * @param startDate 开始日期
  90. * @param endDate 结束日期
  91. * @param limit 限制数量
  92. * @return 热门站点列表
  93. */
  94. List<StationRankVO> selectHotStations(@Param("startDate") String startDate, @Param("endDate") String endDate, @Param("limit") int limit);
  95. /**
  96. * 获取站点在时间段内的充电度数
  97. *
  98. * @param stationId 站点ID
  99. * @param startDate 开始日期
  100. * @param endDate 结束日期
  101. * @return 充电度数
  102. */
  103. BigDecimal selectStationChargePower(@Param("stationId") String stationId, @Param("startDate") String startDate, @Param("endDate") String endDate);
  104. /**
  105. * 获取活跃用户数(在指定时间段内有充电记录的用户)
  106. *
  107. * @param startDate 开始日期
  108. * @param endDate 结束日期
  109. * @return 活跃用户数
  110. */
  111. Long selectActiveUserCount(@Param("startDate") String startDate, @Param("endDate") String endDate);
  112. /**
  113. * 获取流失用户数(在早期有充电记录,但在最近时间段内没有充电记录的用户)
  114. *
  115. * @param earlyStart 早期开始日期
  116. * @param earlyEnd 早期结束日期
  117. * @param recentStart 最近开始日期
  118. * @param recentEnd 最近结束日期
  119. * @return 流失用户数
  120. */
  121. Long selectChurnUserCount(@Param("earlyStart") String earlyStart, @Param("earlyEnd") String earlyEnd,
  122. @Param("recentStart") String recentStart, @Param("recentEnd") String recentEnd);
  123. /**
  124. * 获取今日首单金额(用户在今日的第一笔订单)
  125. *
  126. * @param todayStart 今日开始时间
  127. * @param todayEnd 今日结束时间
  128. * @return 首单金额
  129. */
  130. BigDecimal selectTodayFirstOrderAmount(@Param("todayStart") String todayStart, @Param("todayEnd") String todayEnd);
  131. /**
  132. * 获取累计首单金额
  133. *
  134. * @return 累计首单金额
  135. */
  136. BigDecimal selectTotalFirstOrderAmount();
  137. }