<?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="com.sinata.appointment.mapper.ApprovalTaskMapper">
|
|
<select id="pageMiniApprovalHistory" resultType="com.sinata.appointment.dto.MiniApprovalHistoryRow">
|
SELECT o.id,
|
o.uuid,
|
o.order_no AS orderNo,
|
o.visited_user_name AS visitedUserName,
|
o.visited_dept_id AS visitedDeptId,
|
o.visit_start_date AS visitStartDate,
|
o.visit_end_date AS visitEndDate,
|
o.visit_reason_code AS visitReasonCode,
|
o.visit_reason_other AS visitReasonOther,
|
o.visit_time_mode AS visitTimeMode,
|
o.visit_time_slot AS visitTimeSlot,
|
o.pass_access_area_names AS passAccessAreaNames,
|
o.status,
|
o.create_time AS createTime,
|
t.task_status AS taskStatus
|
FROM approval_task t
|
INNER JOIN approval_instance ai ON ai.id = t.instance_id AND ai.del_flag = 0
|
INNER JOIN appointment_order o ON o.id = ai.order_id AND o.del_flag = 0
|
INNER JOIN (
|
SELECT ai2.order_id AS orderId, MAX(t2.id) AS latestTaskId
|
FROM approval_task t2
|
INNER JOIN approval_instance ai2 ON ai2.id = t2.instance_id AND ai2.del_flag = 0
|
WHERE t2.del_flag = 0
|
AND t2.assignee_user_id = #{assigneeUserId}
|
AND t2.task_status IN ('APPROVED', 'REJECTED')
|
<if test="status != null and status != ''">
|
AND t2.task_status = #{status}
|
</if>
|
GROUP BY ai2.order_id
|
) latest ON latest.latestTaskId = t.id
|
WHERE t.del_flag = 0
|
<if test="visitedUserNameKeyword != null and visitedUserNameKeyword != ''">
|
AND EXISTS (
|
SELECT 1
|
FROM appointment_visitor av
|
WHERE av.del_flag = 0
|
AND av.order_id = o.id
|
AND av.name LIKE CONCAT('%', #{visitedUserNameKeyword}, '%')
|
)
|
</if>
|
<if test="visitDate != null">
|
AND o.visit_start_date IS NOT NULL
|
AND o.visit_end_date IS NOT NULL
|
AND #{visitDate} >= o.visit_start_date
|
AND #{visitDate} <= o.visit_end_date
|
</if>
|
ORDER BY t.update_time DESC, t.id DESC
|
</select>
|
|
</mapper>
|