SELECT ROW_NUMBER() OVER(ORDER BY ROUTE_REGDATE_ORG DESC) AS RNUM, AA.*
, AK.TARGET_NAME
FROM (
SELECT A.OBJID AS APPROVAL_OBJID
, A.TARGET_OBJID
, A.TARGET_TYPE
, A.APPROVAL_SEQ
, REPLACE('APPROVAL-'||TO_CHAR(A.APPROVAL_SEQ::numeric, '0009'), ' ', '') AS APPROVAL_NO
, A.STATUS AS APPROVAL_STATUS
, TO_CHAR(A.REGDATE, 'YYYY-MM-DD') AS APPROVAL_REGDATE
, B.OBJID AS ROUTE_OBJID
, B.ROUTE_SEQ
, REPLACE('ROUTE-'||TO_CHAR(B.ROUTE_SEQ::numeric, '0009'), ' ', '') AS ROUTE_NO
, B.APPROVAL_TITLE
, B.APPROVAL_DESC
, B.WRITER
, (SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = B.WRITER) AS WRITER_DEPT_NAME
, (SELECT USER_NAME FROM USER_INFO WHERE USER_ID = B.WRITER) AS WRITER_USER_NAME
, TO_CHAR(B.REGDATE, 'YYYY-MM-DD') AS ROUTE_REGDATE
, B.REGDATE AS ROUTE_REGDATE_ORG
, B.STATUS
, INBOX.TARGET_USER_ID
<iftest="connectUserId != null and !''.equals(connectUserId)">
, (SELECT COUNT(*) AS CNT FROM INBOXTASK WHERE 1=1 AND TARGET_USER_ID = #{connectUserId} AND (APPROVAL_OBJID = A.OBJID OR ROUTE_OBJID = B.OBJID) AND UPPER(STATUS) = 'READY') AS MY_APPROVAL
, (SELECT COUNT(*) AS CNT FROM INBOXTASK WHERE 1=1 AND TARGET_USER_ID = #{connectUserId} AND (APPROVAL_OBJID = A.OBJID OR ROUTE_OBJID = B.OBJID) AND UPPER(STATUS) = 'READY') AS MY_READY_APPROVAL
</if>
FROM APPROVAL A, ROUTE B
,INBOXTASK INBOX
WHERE 1=1
AND A.OBJID = B.APPROVAL_OBJID
AND A.SYSTEM_TYPE = #{systemType}
AND INBOX.APPROVAL_OBJID = A.OBJID
AND INBOX.ROUTE_OBJID = B.OBJID
AND UPPER(INBOX.STATUS) = 'READY'
AND B.STATUS ='inProcess'
<!-- AND UPPER(B.STATUS) = UPPER('inProcess') -->
) AA
LEFT OUTER JOIN APPROVAL_KIND AK
ON AA.TARGET_TYPE = AK.TARGET_TYPE
WHERE 1=1
<iftest="connectUserId != null and !'plm_admin'.equals(connectUserId) and !'READY'.equals(header_approvalStatus)">
<!--
AND (MY_APPROVAL <![CDATA[ > ]]> 0 OR AA.WRITER = #{connectUserId})
-->
AND AA.TARGET_USER_ID = #{connectUserId}
</if>
<iftest="search_approvalTitle != null and !''.equals(search_approvalTitle)">
AND UPPER(AA.APPROVAL_TITLE) LIKE '%${search_approvalTitle}%'
</if>
<iftest="search_fromDate != null and !''.equals(search_fromDate)">
AND AA.ROUTE_REGDATE <![CDATA[ >= ]]> TO_DATE(#{search_fromDate}, 'yyyy-mm-dd')
</if>
<iftest="search_toDate != null and !''.equals(search_toDate)">
AND AA.ROUTE_REGDATE <![CDATA[ <= ]]> TO_DATE(#{search_toDate}, 'yyyy-mm-dd')
</if>
<iftest="search_writerUserName != null and !''.equals(search_writerUserName)">
AND UPPER(AA.WRITER_USER_NAME) LIKE UPPER('%${search_writerUserName}%')
</if>
<iftest="search_approvalStatus != null and !''.equals(search_approvalStatus)">
AND UPPER(AA.STATUS) = UPPER(#{search_approvalStatus})
</if>
<iftest="'READY'.equals(header_approvalStatus)">
AND MY_READY_APPROVAL <![CDATA[ > ]]> 0
</if>
<iftest="'excel' != actionType">
) A
WHERE 1=1
AND <![CDATA[ RNUM::integer <= #{PAGE_END}::integer ]]>
AND <![CDATA[ RNUM::integer >= #{PAGE_START}::integer]]>
CEIL(TOTAL_CNT::FLOAT/20)::INTEGER AS MAX_PAGE_SIZE,
TOTAL_CNT::integer
FROM (
SELECT *
FROM (
SELECT
COUNT(1) TOTAL_CNT
FROM (
SELECT A.OBJID AS APPROVAL_OBJID
, A.TARGET_OBJID
, A.TARGET_TYPE
, A.APPROVAL_SEQ
, REPLACE('APPROVAL-'||TO_CHAR(A.APPROVAL_SEQ::numeric, '0009'), ' ', '') AS APPROVAL_NO
, A.STATUS AS APPROVAL_STATUS
, TO_CHAR(A.REGDATE, 'YYYY-MM-DD') AS APPROVAL_REGDATE
, B.OBJID AS ROUTE_OBJID
, B.ROUTE_SEQ
, REPLACE('ROUTE-'||TO_CHAR(B.ROUTE_SEQ::numeric, '0009'), ' ', '') AS ROUTE_NO
, B.APPROVAL_TITLE
, B.APPROVAL_DESC
, B.WRITER
, (SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = B.WRITER) AS WRITER_DEPT_NAME
, (SELECT USER_NAME FROM USER_INFO WHERE USER_ID = B.WRITER) AS WRITER_USER_NAME
, TO_CHAR(B.REGDATE, 'YYYY-MM-DD') AS ROUTE_REGDATE
, B.STATUS
, INBOX.TARGET_USER_ID
<iftest="connectUserId != null and !''.equals(connectUserId)">
, (SELECT COUNT(*) AS CNT FROM INBOXTASK WHERE 1=1 AND TARGET_USER_ID = #{connectUserId} AND (APPROVAL_OBJID = A.OBJID OR ROUTE_OBJID = B.OBJID) AND UPPER(STATUS) = 'READY') AS MY_APPROVAL
, (SELECT COUNT(*) AS CNT FROM INBOXTASK WHERE 1=1 AND TARGET_USER_ID = #{connectUserId} AND (APPROVAL_OBJID = A.OBJID OR ROUTE_OBJID = B.OBJID) AND UPPER(STATUS) = 'READY') AS MY_READY_APPROVAL
</if>
FROM APPROVAL A, ROUTE B
,INBOXTASK INBOX
WHERE 1=1
AND A.OBJID = B.APPROVAL_OBJID
AND A.SYSTEM_TYPE = #{systemType}
AND INBOX.APPROVAL_OBJID = A.OBJID
AND INBOX.ROUTE_OBJID = B.OBJID
AND UPPER(INBOX.STATUS) = 'READY'
AND B.STATUS ='inProcess'
) AA
LEFT OUTER JOIN APPROVAL_KIND AK
ON AA.TARGET_TYPE = AK.TARGET_TYPE
WHERE 1=1
<iftest="connectUserId != null and !'plm_admin'.equals(connectUserId) and !'READY'.equals(header_approvalStatus)">
<!--
AND (MY_APPROVAL <![CDATA[ > ]]> 0 OR AA.WRITER = #{connectUserId})
-->
AND AA.TARGET_USER_ID = #{connectUserId}
</if>
<iftest="search_approvalTitle != null and !''.equals(search_approvalTitle)">
AND UPPER(AA.APPROVAL_TITLE) LIKE '%${search_approvalTitle}%'
</if>
<iftest="search_fromDate != null and !''.equals(search_fromDate)">
AND AA.ROUTE_REGDATE <![CDATA[ >= ]]> TO_DATE(#{search_fromDate}, 'yyyy-mm-dd')
</if>
<iftest="search_toDate != null and !''.equals(search_toDate)">
AND AA.ROUTE_REGDATE <![CDATA[ <= ]]> TO_DATE(#{search_toDate}, 'yyyy-mm-dd')
</if>
<iftest="search_writerUserName != null and !''.equals(search_writerUserName)">
AND UPPER(AA.WRITER_USER_NAME) LIKE UPPER('%${search_writerUserName}%')
</if>
<iftest="search_approvalStatus != null and !''.equals(search_approvalStatus)">
AND UPPER(AA.STATUS) = UPPER(#{search_approvalStatus})