BiRankingMapper.xml 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  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.bi.dal.mysql.BiRankingMapper">
  4. <select id="contractRanKing"
  5. resultType="cn.iocoder.yudao.module.bi.controller.admin.ranking.vo.BiContractRanKingRespVO">
  6. SELECT IFNULL(SUM(t.price), 0) AS price, su.nickname, t.owner_user_id, dept.name AS deptName
  7. FROM crm_contract t
  8. <!-- TODO @anhaohao:system_users、system_dept 是不是没用到?尽量不连这 2 个表,微服务下会是独立仓库;如果显示需要,可以在 service 读取后拼接; -->
  9. LEFT JOIN system_users AS su ON su.id = t.owner_user_id
  10. LEFT JOIN system_dept AS dept ON dept.id = su.dept_id
  11. WHERE t.deleted = 0
  12. AND t.audit_status = 20
  13. <if test="userIds != null and userIds.size() > 0">
  14. and t.owner_user_id in
  15. <foreach collection="userIds" item="item" open="(" close=")" separator=",">
  16. #{item}
  17. </foreach>
  18. </if>
  19. <!-- TODO @anhaohao:在某个区间的时间,这么做有点浪费性能;一般做法是 beginTime 是开始时间(00:00:00),finalTime 是结束时间(23:59:59),这样实现的; -->
  20. AND DATE_FORMAT(t.order_date,'${sqlDateFormat}') between #{beginTime} and #{finalTime}
  21. GROUP BY t.owner_user_id
  22. ORDER BY price DESC
  23. </select>
  24. <select id="receivablesRanKing"
  25. resultType="cn.iocoder.yudao.module.bi.controller.admin.ranking.vo.BiReceivablesRanKingRespVO">
  26. SELECT IFNULL(SUM(t.price), 0) AS price, su.nickname, t.owner_user_id, dept.name AS deptName
  27. FROM crm_receivable t
  28. LEFT JOIN system_users AS su ON su.id = t.owner_user_id
  29. LEFT JOIN system_dept AS dept ON dept.id = su.dept_id
  30. WHERE t.deleted = 0
  31. AND t.audit_status = 20
  32. <if test="userIds != null and userIds.size() > 0">
  33. and t.owner_user_id in
  34. <foreach collection="userIds" item="item" open="(" close=")" separator=",">
  35. #{item}
  36. </foreach>
  37. </if>
  38. AND DATE_FORMAT(t.return_time,'${sqlDateFormat}') between #{beginTime} and #{finalTime}
  39. GROUP BY t.owner_user_id
  40. ORDER BY price DESC
  41. </select>
  42. </mapper>