+新排序

This commit is contained in:
wuyu 2023-11-30 16:46:48 +08:00
parent f0369975e8
commit d0477bb8f7

View File

@ -3,33 +3,102 @@
<mapper namespace="cn.axzo.msg.center.dal.mapper.PendingMessageRecordMapper">
<select id="queryByTemplateCodes" resultType="cn.axzo.msg.center.domain.entity.PendingMessageRecord">
select * from (
<if test="isNowDay">
SELECT * from (SELECT * FROM pending_message_record WHERE DATE(create_at) <![CDATA[<]]> DATE(#{selectDate})
AND (state = ('HAS_BEEN_SENT') or (state = ('COMPLETED') and DATE(update_at) = DATE(#{selectDate})))
AND is_delete = 0
AND executor_person_id=#{personId} AND template_code IN<foreach collection="pendingCalendarCodeDTO.allCodes" index="index" item="item" open="(" separator="," close=")">
#{item}
</foreach> ORDER BY create_at ASC) old_pending_message
union ALL
</if>
select * from (SELECT * FROM pending_message_record WHERE DATE(create_at) = DATE(#{selectDate}) AND state IN('HAS_BEEN_SENT','COMPLETED')
AND is_delete = 0
AND executor_person_id=#{personId} AND template_code IN<foreach collection="pendingCalendarCodeDTO.constructionCodes" index="index" item="item" open="(" separator="," close=")">
#{item}
</foreach> ORDER BY create_at,state DESC) new_pending_message
union all
SELECT * FROM (SELECT * FROM pending_message_record WHERE DATE(create_at) = DATE(#{selectDate}) AND state IN('HAS_BEEN_SENT','COMPLETED')
AND is_delete = 0
AND executor_person_id=#{personId} AND template_code IN<foreach collection="pendingCalendarCodeDTO.punchInCodes" index="index" item="item" open="(" separator="," close=")">
#{item}
</foreach> ORDER BY create_at,state DESC) new_pending_message1
union all
SELECT * FROM(SELECT * FROM pending_message_record WHERE DATE(create_at) = DATE(#{selectDate}) AND state IN('HAS_BEEN_SENT','COMPLETED')
AND is_delete = 0
AND executor_person_id=#{personId} AND template_code IN<foreach collection="pendingCalendarCodeDTO.clockInCodes" index="index" item="item" open="(" separator="," close=")">
#{item}
</foreach> ORDER BY create_at,state DESC) new_pending_message2
ORDER BY create_at DESC )ccc
SELECT
*
FROM
(
<if test="isNowDay">
(SELECT
old_undo.*,1 AS flag
FROM
(SELECT
*
FROM
pending_message_record
WHERE DATE(create_at) <![CDATA[<]]> DATE (#{selectDate})
AND (state = ('HAS_BEEN_SENT'))
AND is_delete = 0
AND executor_person_id = #{personId}
AND template_code IN <foreach collection="pendingCalendarCodeDTO.constructionCodes" index="index" item="item" open="(" separator="," close=")">#{item}</foreach>
ORDER BY create_at ASC) old_undo)
UNION
ALL
</if>
(SELECT
new_todo.*,2 AS flag
FROM
(SELECT
*
FROM
pending_message_record
WHERE DATE (create_at) = DATE (#{selectDate})
AND state IN ('HAS_BEEN_SENT')
AND is_delete = 0
AND executor_person_id = #{personId}
AND template_code IN <foreach collection="pendingCalendarCodeDTO.constructionCodes" index="index" item="item" open="(" separator="," close=")">#{item}</foreach>
ORDER BY create_at DESC) new_todo)
UNION
ALL
(SELECT
new_todo_3.*,3 AS flag
FROM
(SELECT
*
FROM
pending_message_record
WHERE DATE (create_at) = DATE (#{selectDate})
AND state IN ('HAS_BEEN_SENT')
AND is_delete = 0
AND executor_person_id = #{personId}
AND template_code IN <foreach collection="pendingCalendarCodeDTO.punchInCodes" index="index" item="item" open="(" separator="," close=")">#{item}</foreach>
ORDER BY create_at DESC) new_todo_3)
UNION
ALL
(SELECT
new_todo_4.*,4 AS flag
FROM
(SELECT
*
FROM
pending_message_record
WHERE DATE (create_at) = DATE (#{selectDate})
AND state IN ('HAS_BEEN_SENT')
AND is_delete = 0
AND executor_person_id = #{personId}
AND template_code IN <foreach collection="pendingCalendarCodeDTO.clockInCodes" index="index" item="item" open="(" separator="," close=")">#{item}</foreach>
ORDER BY create_at DESC) new_todo_4)
UNION
ALL
(SELECT
all_new_do.*,5 AS flag
FROM
(SELECT
*
FROM
pending_message_record
WHERE DATE (create_at) = DATE (#{selectDate})
AND state = 'COMPLETED'
AND is_delete = 0
AND executor_person_id = #{personId}
AND template_code IN <foreach collection="pendingCalendarCodeDTO.allCodes" index="index" item="item" open="(" separator="," close=")">#{item}</foreach>
ORDER BY create_at DESC) all_new_do)
UNION
ALL
<if test="isNowDay">
(SELECT
old_do.*,6 AS flag
FROM
(SELECT
*
FROM
pending_message_record
WHERE DATE(create_at) <![CDATA[<]]> DATE(#{selectDate})
AND (state = ('COMPLETED') AND update_at = DATE(#{selectDate}))
AND is_delete = 0
AND executor_person_id = #{personId}
AND template_code IN <foreach collection="pendingCalendarCodeDTO.constructionCodes" index="index" item="item" open="(" separator="," close=")">#{item}</foreach>
ORDER BY create_at DESC) old_do)
</if>
) ccc ORDER BY flag ASC
</select>
</mapper>