CrmStatisticsPerformanceMapper.xml 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  3. <mapper namespace="cn.iocoder.yudao.module.crm.dal.mysql.statistics.CrmStatisticsPerformanceMapper">
  4. <select id="selectContractCountPerformance"
  5. resultType="cn.iocoder.yudao.module.crm.controller.admin.statistics.vo.performance.CrmStatisticsPerformanceRespVO">
  6. SELECT
  7. t.time as time,
  8. COALESCE(t.currentMonthCount,0) as currentMonthCount,
  9. COALESCE(y.lastMonthCount,0) as lastMonthCount,
  10. COALESCE(z.lastYearCount,0) as lastYearCount
  11. FROM
  12. (SELECT
  13. COUNT(1) AS currentMonthCount,
  14. DATE_FORMAT(order_date, '%Y-%m') AS time
  15. FROM crm_contract
  16. WHERE deleted = 0
  17. AND audit_status = 20
  18. AND owner_user_id in
  19. <foreach collection="userIds" item="userId" open="(" close=")" separator=",">
  20. #{userId}
  21. </foreach>
  22. AND DATE_FORMAT(order_date, '%Y') = DATE_FORMAT(#{times[0],javaType=java.time.LocalDateTime},'%Y')
  23. GROUP BY time)t
  24. LEFT JOIN
  25. (SELECT
  26. COUNT(1) AS lastMonthCount,
  27. DATE_FORMAT(DATE_ADD(order_date,INTERVAL 1 MONTH), '%Y-%m') AS time
  28. FROM crm_contract
  29. WHERE deleted = 0
  30. AND audit_status = 20
  31. AND owner_user_id in
  32. <foreach collection="userIds" item="userId" open="(" close=")" separator=",">
  33. #{userId}
  34. </foreach>
  35. AND (DATE_FORMAT(order_date, '%Y') = DATE_FORMAT(#{times[0],javaType=java.time.LocalDateTime},'%Y')
  36. or DATE_FORMAT(order_date, '%Y') = DATE_FORMAT(#{times[0],javaType=java.time.LocalDateTime},'%Y')-1)
  37. GROUP BY time)y ON t.time = y.time
  38. LEFT JOIN
  39. (SELECT
  40. COUNT(1) AS lastYearCount,
  41. DATE_FORMAT(DATE_ADD(order_date,INTERVAL 1 YEAR), '%Y-%m') AS time
  42. FROM crm_contract
  43. WHERE deleted = 0
  44. AND audit_status = 20
  45. AND owner_user_id in
  46. <foreach collection="userIds" item="userId" open="(" close=")" separator=",">
  47. #{userId}
  48. </foreach>
  49. AND DATE_FORMAT(order_date, '%Y') = DATE_FORMAT(#{times[0],javaType=java.time.LocalDateTime},'%Y')-1
  50. GROUP BY time)z ON t.time = z.time
  51. </select>
  52. <select id="selectContractPricePerformance"
  53. resultType="cn.iocoder.yudao.module.crm.controller.admin.statistics.vo.performance.CrmStatisticsPerformanceRespVO">
  54. SELECT
  55. t.time as time,
  56. COALESCE(t.currentMonthCount,0) as currentMonthCount,
  57. COALESCE(y.lastMonthCount,0) as lastMonthCount,
  58. COALESCE(z.lastYearCount,0) as lastYearCount
  59. FROM
  60. (SELECT
  61. IFNULL(SUM(total_price), 0) AS currentMonthCount,
  62. DATE_FORMAT(order_date, '%Y-%m') AS time
  63. FROM crm_contract
  64. WHERE deleted = 0
  65. AND audit_status = 20
  66. AND owner_user_id in
  67. <foreach collection="userIds" item="userId" open="(" close=")" separator=",">
  68. #{userId}
  69. </foreach>
  70. AND DATE_FORMAT(order_date, '%Y') = DATE_FORMAT(#{times[0],javaType=java.time.LocalDateTime},'%Y')
  71. GROUP BY time)t
  72. LEFT JOIN
  73. (SELECT
  74. IFNULL(SUM(total_price), 0) AS lastMonthCount,
  75. DATE_FORMAT(DATE_ADD(order_date,INTERVAL 1 MONTH), '%Y-%m') AS time
  76. FROM crm_contract
  77. WHERE deleted = 0
  78. AND audit_status = 20
  79. AND owner_user_id in
  80. <foreach collection="userIds" item="userId" open="(" close=")" separator=",">
  81. #{userId}
  82. </foreach>
  83. AND (DATE_FORMAT(order_date, '%Y') = DATE_FORMAT(#{times[0],javaType=java.time.LocalDateTime},'%Y')
  84. or DATE_FORMAT(order_date, '%Y') = DATE_FORMAT(#{times[0],javaType=java.time.LocalDateTime},'%Y')-1)
  85. GROUP BY time)y ON t.time = y.time
  86. LEFT JOIN
  87. (SELECT
  88. IFNULL(SUM(total_price), 0) AS lastYearCount,
  89. DATE_FORMAT(DATE_ADD(order_date,INTERVAL 1 YEAR), '%Y-%m') AS time
  90. FROM crm_contract
  91. WHERE deleted = 0
  92. AND audit_status = 20
  93. AND owner_user_id in
  94. <foreach collection="userIds" item="userId" open="(" close=")" separator=",">
  95. #{userId}
  96. </foreach>
  97. AND DATE_FORMAT(order_date, '%Y') = DATE_FORMAT(#{times[0],javaType=java.time.LocalDateTime},'%Y')-1
  98. GROUP BY time)z ON t.time = z.time
  99. </select>
  100. <select id="selectReceivablePricePerformance"
  101. resultType="cn.iocoder.yudao.module.crm.controller.admin.statistics.vo.performance.CrmStatisticsPerformanceRespVO">
  102. SELECT
  103. t.time as time,
  104. COALESCE(t.currentMonthCount,0) as currentMonthCount,
  105. COALESCE(y.lastMonthCount,0) as lastMonthCount,
  106. COALESCE(z.lastYearCount,0) as lastYearCount
  107. FROM
  108. (SELECT
  109. IFNULL(SUM(price), 0) AS currentMonthCount,
  110. DATE_FORMAT(return_time, '%Y-%m') AS time
  111. FROM crm_receivable
  112. WHERE deleted = 0
  113. AND audit_status = 20
  114. AND owner_user_id in
  115. <foreach collection="userIds" item="userId" open="(" close=")" separator=",">
  116. #{userId}
  117. </foreach>
  118. AND DATE_FORMAT(return_time, '%Y') = DATE_FORMAT(#{times[0],javaType=java.time.LocalDateTime},'%Y')
  119. GROUP BY time)t
  120. LEFT JOIN
  121. (SELECT
  122. IFNULL(SUM(price), 0) AS lastMonthCount,
  123. DATE_FORMAT(DATE_ADD(return_time,INTERVAL 1 MONTH), '%Y-%m') AS time
  124. FROM crm_receivable
  125. WHERE deleted = 0
  126. AND audit_status = 20
  127. AND owner_user_id in
  128. <foreach collection="userIds" item="userId" open="(" close=")" separator=",">
  129. #{userId}
  130. </foreach>
  131. AND (DATE_FORMAT(return_time, '%Y') = DATE_FORMAT(#{times[0],javaType=java.time.LocalDateTime},'%Y')
  132. or DATE_FORMAT(return_time, '%Y') = DATE_FORMAT(#{times[0],javaType=java.time.LocalDateTime},'%Y')-1)
  133. GROUP BY time)y ON t.time = y.time
  134. LEFT JOIN
  135. (SELECT
  136. IFNULL(SUM(price), 0) AS lastYearCount,
  137. DATE_FORMAT(DATE_ADD(return_time,INTERVAL 1 YEAR), '%Y-%m') AS time
  138. FROM crm_receivable
  139. WHERE deleted = 0
  140. AND audit_status = 20
  141. AND owner_user_id in
  142. <foreach collection="userIds" item="userId" open="(" close=")" separator=",">
  143. #{userId}
  144. </foreach>
  145. AND DATE_FORMAT(return_time, '%Y') = DATE_FORMAT(#{times[0],javaType=java.time.LocalDateTime},'%Y')-1
  146. GROUP BY time)z ON t.time = z.time
  147. </select>
  148. </mapper>