SmsbVisitorsFlowRateMapper.xml 3.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE mapper
  3. PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  4. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  5. <mapper namespace="com.inspur.device.mapper.SmsbVisitorsFlowRateMapper">
  6. <select id="selectFlowRateCountList" parameterType="com.inspur.device.domain.bo.SmsbVisitorsFlowRateBo"
  7. resultType="com.inspur.device.domain.vo.SmsbVisitorsFlowRateCountVo">
  8. SELECT
  9. sd.serial_number AS deviceSn,
  10. sd.mac AS deviceMac,
  11. sd.id AS deviceId,
  12. sd.`name` AS deviceName,
  13. IFNULL(rate.totalNum,0) AS totalNum,
  14. IFNULL(rate.todayNum,0) AS todayNum,
  15. IFNULL(rate.yesterdayNum,0) AS yesterdayNum,
  16. IFNULL(rate.lastWeekNum,0) AS lastWeekNum,
  17. IFNULL(rate.weekNum,0) AS weekNum,
  18. IFNULL(rate.monthNum,0) AS monthNum
  19. FROM
  20. smsb_device sd
  21. LEFT JOIN
  22. (
  23. SELECT
  24. device_id AS deviceId,
  25. SUM(person_num) AS totalNum,
  26. SUM(CASE WHEN DATE(create_time) = CURDATE() THEN person_num ELSE 0 END) AS todayNum,
  27. SUM(CASE WHEN DATE(create_time) = CURDATE() - INTERVAL 1 DAY THEN person_num ELSE 0 END) AS yesterdayNum,
  28. SUM(CASE WHEN YEARWEEK(create_time, 1) = YEARWEEK(CURDATE(), 1) - 1 THEN person_num ELSE 0 END) AS lastWeekNum,
  29. SUM(CASE WHEN YEARWEEK(create_time, 1) = YEARWEEK(CURDATE(), 1) THEN person_num ELSE 0 END) AS weekNum,
  30. SUM(CASE WHEN MONTH(create_time) = MONTH(CURDATE()) AND YEAR(create_time) = YEAR(CURDATE()) THEN person_num ELSE 0 END) AS monthNum
  31. FROM
  32. smsb_visitors_flow_rate
  33. GROUP BY
  34. device_id
  35. ORDER BY
  36. totalNum DESC
  37. ) rate
  38. ON rate.deviceId = sd.id
  39. WHERE 1 = 1
  40. <if test="bo.deviceName != null and bo.deviceName != ''">
  41. AND sd.name LIKE concat('%',#{bo.deviceName},'%')
  42. </if>
  43. ORDER BY totalNum DESC
  44. </select>
  45. <select id="selectVisitorsFlowRateMonthlyInfo" resultType="com.inspur.device.domain.vo.DateAndCountVO">
  46. SELECT
  47. dates.date AS date,
  48. IFNULL(COUNT(smsb_visitors_flow_rate.id),0) AS count
  49. FROM
  50. (
  51. SELECT DATE_SUB(CURDATE(), INTERVAL n DAY) AS date
  52. FROM
  53. (
  54. SELECT 0 AS n UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION
  55. SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION
  56. SELECT 8 UNION SELECT 9 UNION SELECT 10 UNION SELECT 11 UNION
  57. SELECT 12 UNION SELECT 13 UNION SELECT 14 UNION SELECT 15 UNION
  58. SELECT 16 UNION SELECT 17 UNION SELECT 18 UNION SELECT 19 UNION
  59. SELECT 20 UNION SELECT 21 UNION SELECT 22 UNION SELECT 23 UNION
  60. SELECT 24 UNION SELECT 25 UNION SELECT 26 UNION SELECT 27 UNION
  61. SELECT 28 UNION SELECT 29
  62. ) AS numbers
  63. ) AS dates
  64. LEFT JOIN
  65. smsb_visitors_flow_rate
  66. ON smsb_visitors_flow_rate.device_id = #{deviceId}
  67. AND DATE(smsb_visitors_flow_rate.create_time) = dates.date
  68. GROUP BY
  69. dates.date
  70. ORDER BY
  71. dates.date;
  72. </select>
  73. </mapper>