AcceptOrderMapper.xml 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  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.start.tz.module.pressure.dal.mysql.acceptorder.AcceptOrderMapper">
  4. <!--
  5. 一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。
  6. 无法满足的场景,例如说多表关联查询,才使用 XML 编写 SQL。
  7. 代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。
  8. 文档可见:https://www.iocoder.cn/MyBatis/x-plugins/
  9. -->
  10. <select id="selectOrderAppPage">
  11. SELECT * FROM (
  12. SELECT
  13. a.*,
  14. ROW_NUMBER() OVER (PARTITION BY a.document_no ORDER BY a.APPOINTMENT_DATE DESC) AS rn
  15. FROM (
  16. -- TASK_ORDER 数据
  17. SELECT
  18. to1.id,
  19. 'TASK_ORDER' AS record_type,
  20. to1.CHECK_TYPE,
  21. to1.ORDER_NO AS document_no,
  22. to1.UNIT_CODE,
  23. to1.UNIT_NAME,
  24. to1.CHECK_DATE AS APPOINTMENT_DATE,
  25. to1.EQUIP_NUM,
  26. to1.UNIT_ADDRESS,
  27. to1.TASK_STATUS AS STATUS,
  28. to1.deleted,
  29. to1.UNIT_PHONE,
  30. ec.CONTACT_PHONE,
  31. ec.CONTACT,
  32. ec.EQUIP_CODE
  33. FROM pressure_task_order to1
  34. LEFT JOIN pressure_task_order_item oi ON to1.id = oi.order_id
  35. LEFT JOIN PRESSURE_EQUIP_CONTAINER ec ON oi.EQUIP_ID = ec.ID
  36. WHERE to1.deleted = 0
  37. UNION ALL
  38. -- ACCEPT_ORDER 数据
  39. SELECT
  40. ao.id,
  41. 'ACCEPT_ORDER' AS record_type,
  42. ao.CHECK_TYPE,
  43. ao.ACCEPT_NO AS document_no,
  44. ao.UNIT_CODE,
  45. ao.UNIT_NAME,
  46. ao.APPOINTMENT_DATE,
  47. ao.EQUIP_NUM,
  48. ao.UNIT_ADDRESS,
  49. ao.STATUS,
  50. ao.deleted,
  51. ao.UNIT_PHONE,
  52. ec.CONTACT_PHONE,
  53. ec.CONTACT,
  54. ec.EQUIP_CODE
  55. FROM pressure_accept_order ao
  56. LEFT JOIN pressure_accept_order_item oi ON ao.id = oi.order_id
  57. LEFT JOIN PRESSURE_EQUIP_CONTAINER ec ON oi.EQUIP_ID = ec.ID
  58. WHERE ao.deleted = 0
  59. AND ao.STATUS IN (100, 300, 400)
  60. ) a
  61. <where>
  62. <if test="unitName != null and unitName != ''"> AND a.UNIT_NAME = #{unitName} </if>
  63. <if test="keyWord != null and keyWord != ''"> AND (a.UNIT_PHONE LIKE CONCAT('%',#{keyWord},'%') OR a.document_no LIKE CONCAT('%',#{keyWord},'%')) </if>
  64. <if test="contactPhone != null and contactPhone != ''"> AND a.CONTACT_PHONE = #{contactPhone} </if>
  65. </where>
  66. ) t
  67. WHERE rn = 1 -- 确保每个 document_no 只取最新的一条
  68. ORDER BY APPOINTMENT_DATE DESC
  69. OFFSET ${(pageNo - 1) * pageSize} ROWS FETCH NEXT #{pageSize} ROWS ONLY
  70. </select>
  71. <select id="selectOrderAppCount">
  72. SELECT COUNT(DISTINCT a.document_no) FROM (
  73. -- TASK_ORDER 数据
  74. SELECT
  75. to1.ORDER_NO AS document_no,
  76. to1.CHECK_DATE AS APPOINTMENT_DATE,
  77. to1.UNIT_NAME,
  78. to1.UNIT_PHONE,
  79. ec.CONTACT_PHONE
  80. FROM pressure_task_order to1
  81. LEFT JOIN pressure_task_order_item oi ON to1.id = oi.order_id
  82. LEFT JOIN PRESSURE_EQUIP_CONTAINER ec ON oi.EQUIP_ID = ec.ID
  83. WHERE to1.deleted = 0
  84. UNION ALL
  85. -- ACCEPT_ORDER 数据
  86. SELECT
  87. ao.ACCEPT_NO AS document_no,
  88. ao.APPOINTMENT_DATE,
  89. ao.UNIT_NAME,
  90. ao.UNIT_PHONE,
  91. ec.CONTACT_PHONE
  92. FROM pressure_accept_order ao
  93. LEFT JOIN pressure_accept_order_item oi ON ao.id = oi.order_id
  94. LEFT JOIN PRESSURE_EQUIP_CONTAINER ec ON oi.EQUIP_ID = ec.ID
  95. WHERE ao.deleted = 0
  96. AND ao.STATUS IN (100, 300, 400)
  97. ) a
  98. <where>
  99. <if test="unitName != null and unitName != ''"> AND a.UNIT_NAME = #{unitName} </if>
  100. <if test="keyWord != null and keyWord != ''"> AND (a.UNIT_PHONE LIKE CONCAT('%',#{keyWord},'%') OR a.document_no LIKE CONCAT('%',#{keyWord},'%')) </if>
  101. <if test="contactPhone != null and contactPhone != ''"> AND a.CONTACT_PHONE = #{contactPhone} </if>
  102. </where>
  103. </select>
  104. </mapper>