| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111 |
- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
- <mapper namespace="cn.start.tz.module.pressure.dal.mysql.acceptorder.AcceptOrderMapper">
- <!--
- 一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。
- 无法满足的场景,例如说多表关联查询,才使用 XML 编写 SQL。
- 代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。
- 文档可见:https://www.iocoder.cn/MyBatis/x-plugins/
- -->
- <select id="selectOrderAppPage">
- SELECT * FROM (
- SELECT
- a.*,
- ROW_NUMBER() OVER (PARTITION BY a.document_no ORDER BY a.APPOINTMENT_DATE DESC) AS rn
- FROM (
- -- TASK_ORDER 数据
- SELECT
- to1.id,
- 'TASK_ORDER' AS record_type,
- to1.CHECK_TYPE,
- to1.ORDER_NO AS document_no,
- to1.UNIT_CODE,
- to1.UNIT_NAME,
- to1.CHECK_DATE AS APPOINTMENT_DATE,
- to1.EQUIP_NUM,
- to1.UNIT_ADDRESS,
- to1.TASK_STATUS AS STATUS,
- to1.deleted,
- to1.UNIT_PHONE,
- ec.CONTACT_PHONE,
- ec.CONTACT,
- ec.EQUIP_CODE
- FROM pressure_task_order to1
- LEFT JOIN pressure_task_order_item oi ON to1.id = oi.order_id
- LEFT JOIN PRESSURE_EQUIP_CONTAINER ec ON oi.EQUIP_ID = ec.ID
- WHERE to1.deleted = 0
- UNION ALL
- -- ACCEPT_ORDER 数据
- SELECT
- ao.id,
- 'ACCEPT_ORDER' AS record_type,
- ao.CHECK_TYPE,
- ao.ACCEPT_NO AS document_no,
- ao.UNIT_CODE,
- ao.UNIT_NAME,
- ao.APPOINTMENT_DATE,
- ao.EQUIP_NUM,
- ao.UNIT_ADDRESS,
- ao.STATUS,
- ao.deleted,
- ao.UNIT_PHONE,
- ec.CONTACT_PHONE,
- ec.CONTACT,
- ec.EQUIP_CODE
- FROM pressure_accept_order ao
- LEFT JOIN pressure_accept_order_item oi ON ao.id = oi.order_id
- LEFT JOIN PRESSURE_EQUIP_CONTAINER ec ON oi.EQUIP_ID = ec.ID
- WHERE ao.deleted = 0
- AND ao.STATUS IN (100, 300, 400)
- ) a
- <where>
- <if test="unitName != null and unitName != ''"> AND a.UNIT_NAME = #{unitName} </if>
- <if test="keyWord != null and keyWord != ''"> AND (a.UNIT_PHONE LIKE CONCAT('%',#{keyWord},'%') OR a.document_no LIKE CONCAT('%',#{keyWord},'%')) </if>
- <if test="contactPhone != null and contactPhone != ''"> AND a.CONTACT_PHONE = #{contactPhone} </if>
- </where>
- ) t
- WHERE rn = 1 -- 确保每个 document_no 只取最新的一条
- ORDER BY APPOINTMENT_DATE DESC
- OFFSET ${(pageNo - 1) * pageSize} ROWS FETCH NEXT #{pageSize} ROWS ONLY
- </select>
- <select id="selectOrderAppCount">
- SELECT COUNT(DISTINCT a.document_no) FROM (
- -- TASK_ORDER 数据
- SELECT
- to1.ORDER_NO AS document_no,
- to1.CHECK_DATE AS APPOINTMENT_DATE,
- to1.UNIT_NAME,
- to1.UNIT_PHONE,
- ec.CONTACT_PHONE
- FROM pressure_task_order to1
- LEFT JOIN pressure_task_order_item oi ON to1.id = oi.order_id
- LEFT JOIN PRESSURE_EQUIP_CONTAINER ec ON oi.EQUIP_ID = ec.ID
- WHERE to1.deleted = 0
- UNION ALL
- -- ACCEPT_ORDER 数据
- SELECT
- ao.ACCEPT_NO AS document_no,
- ao.APPOINTMENT_DATE,
- ao.UNIT_NAME,
- ao.UNIT_PHONE,
- ec.CONTACT_PHONE
- FROM pressure_accept_order ao
- LEFT JOIN pressure_accept_order_item oi ON ao.id = oi.order_id
- LEFT JOIN PRESSURE_EQUIP_CONTAINER ec ON oi.EQUIP_ID = ec.ID
- WHERE ao.deleted = 0
- AND ao.STATUS IN (100, 300, 400)
- ) a
- <where>
- <if test="unitName != null and unitName != ''"> AND a.UNIT_NAME = #{unitName} </if>
- <if test="keyWord != null and keyWord != ''"> AND (a.UNIT_PHONE LIKE CONCAT('%',#{keyWord},'%') OR a.document_no LIKE CONCAT('%',#{keyWord},'%')) </if>
- <if test="contactPhone != null and contactPhone != ''"> AND a.CONTACT_PHONE = #{contactPhone} </if>
- </where>
- </select>
- </mapper>
|