ERP-node/src/com/pms/mapper/approval.xml

590 lines
20 KiB
XML

<?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="approval">
<!-- //approval 단건조회 -->
<select id="selectApprovalInfo" parameterType="map" resultType="map">
SELECT * FROM(
SELECT
(ROW_NUMBER() OVER(ORDER BY REGDATE DESC)) AS ROWNUM,
OBJID ,
TARGET_OBJID ,
TARGET_TYPE ,
APPROVAL_SEQ ,
TO_CHAR(REGDATE, 'YYYY-MM-DD HH24:MI:SS') AS REGDATE ,
REGDATE AS REGDATE_ORG,
STATUS
FROM
APPROVAL
WHERE 1 = 1
<if test="targetObjId != null and !''.equals(targetObjId)">
AND TARGET_OBJID = #{targetObjId}::numeric
</if>
<if test="search_type != null and !''.equals(search_type) and 'last'.equals(search_type)">
ORDER BY REGDATE DESC
</if>
)A WHERE 1=1 AND ROWNUM = '1'
</select>
<!-- //approval 등록 -->
<insert id="insertApprovalInfo" parameterType="map">
INSERT INTO APPROVAL(
OBJID
, TARGET_OBJID
, TARGET_TYPE
, APPROVAL_SEQ
, SYSTEM_TYPE
, REGDATE
, STATUS
) VALUES (
#{objId}::numeric
, #{targetObjId}::numeric
, #{targetType}
, (SELECT COALESCE(MAX(APPROVAL_SEQ::numeric)+ 1,1) from APPROVAL)
, #{systemType}
, now()
, 'inProcess'
)
</insert>
<!-- //approval의 status를 inProcess로 변경. -->
<update id="changeApprovalStatus" parameterType="map">
UPDATE APPROVAL SET STATUS = #{status} WHERE OBJID = #{approvalObjId}::numeric
</update>
<update id="changeApprovalStatusByTargetObjId" parameterType="map">
UPDATE APPROVAL SET STATUS = #{status} WHERE TARGET_OBJID = #{targetObjId}::numeric
</update>
<!-- //route 생성 -->
<insert id="createRouteInfo" parameterType="map">
INSERT INTO ROUTE (
OBJID
, TARGET_OBJID
, APPROVAL_OBJID
, ROUTE_SEQ
, APPROVAL_TITLE
, APPROVAL_DESC
, SYSTEM_TYPE
, WRITER
, REGDATE
, STATUS
) VALUES (
#{routeObjId}::numeric
, #{targetObjId}::numeric
, #{approvalObjId}::numeric
, (SELECT COALESCE(MAX(ROUTE_SEQ::numeric)+ 1,1) from ROUTE)
, #{approvalTitle}
, #{approvalDescription}
, #{systemType}
, #{writer}
, now()
, 'inProcess'
)
</insert>
<!-- //APPROVAL_TARGET 생성 -->
<insert id="createApprovalTagetInfo" parameterType="map">
INSERT INTO APPROVAL_TARGET (
OBJID
, MASTER_TARGET_OBJID
, TARGET_OBJID
, APPROVAL_OBJID
, WRITER
, REGDATE
) VALUES (
#{objId}::numeric
, #{masterTargetObjId}::numeric
, #{targetObjId}::numeric
, #{approvalObjId}::numeric
, #{writer}
, now()
)
</insert>
<!-- //inboxtask 생성 -->
<insert id="createInboxTaskInfo" parameterType="map">
INSERT INTO INBOXTASK(
OBJID
, SEQ
, APPROVAL_TYPE
, TARGET_OBJID
, APPROVAL_OBJID
, ROUTE_OBJID
, TARGET_USER_ID
, REGDATE
, STATUS
) VALUES (
#{inboxTaskObjId}::numeric
, #{seq}::numeric
, #{approvalType}
, #{targetObjId}::numeric
, #{approvalObjId}::numeric
, #{routeObjId}::numeric
, #{targetUserId}
, now()
, #{status}
)
</insert>
<!-- //결재함의 목록 조회 -->
<select id="selectApprovalList" parameterType="map" resultType="map">
<if test="'excel' != actionType">
SELECT *
FROM
(
</if>
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
<if test="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
<if test="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>
<if test="search_approvalTitle != null and !''.equals(search_approvalTitle)">
AND UPPER(AA.APPROVAL_TITLE) LIKE '%${search_approvalTitle}%'
</if>
<if test="search_fromDate != null and !''.equals(search_fromDate)">
AND AA.ROUTE_REGDATE <![CDATA[ >= ]]> TO_DATE(#{search_fromDate}, 'yyyy-mm-dd')
</if>
<if test="search_toDate != null and !''.equals(search_toDate)">
AND AA.ROUTE_REGDATE <![CDATA[ <= ]]> TO_DATE(#{search_toDate}, 'yyyy-mm-dd')
</if>
<if test="search_writerUserName != null and !''.equals(search_writerUserName)">
AND UPPER(AA.WRITER_USER_NAME) LIKE UPPER('%${search_writerUserName}%')
</if>
<if test="search_approvalStatus != null and !''.equals(search_approvalStatus)">
AND UPPER(AA.STATUS) = UPPER(#{search_approvalStatus})
</if>
<if test="'READY'.equals(header_approvalStatus)">
AND MY_READY_APPROVAL <![CDATA[ > ]]> 0
</if>
<if test="'excel' != actionType">
) A
WHERE 1=1
AND <![CDATA[ RNUM::integer <= #{PAGE_END}::integer ]]>
AND <![CDATA[ RNUM::integer >= #{PAGE_START}::integer]]>
</if>
</select>
<!-- //결재함의 목록 갯수 -->
<select id="selectApprovalListCnt" parameterType="map" resultType="map">
SELECT
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
<if test="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
<if test="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>
<if test="search_approvalTitle != null and !''.equals(search_approvalTitle)">
AND UPPER(AA.APPROVAL_TITLE) LIKE '%${search_approvalTitle}%'
</if>
<if test="search_fromDate != null and !''.equals(search_fromDate)">
AND AA.ROUTE_REGDATE <![CDATA[ >= ]]> TO_DATE(#{search_fromDate}, 'yyyy-mm-dd')
</if>
<if test="search_toDate != null and !''.equals(search_toDate)">
AND AA.ROUTE_REGDATE <![CDATA[ <= ]]> TO_DATE(#{search_toDate}, 'yyyy-mm-dd')
</if>
<if test="search_writerUserName != null and !''.equals(search_writerUserName)">
AND UPPER(AA.WRITER_USER_NAME) LIKE UPPER('%${search_writerUserName}%')
</if>
<if test="search_approvalStatus != null and !''.equals(search_approvalStatus)">
AND UPPER(AA.STATUS) = UPPER(#{search_approvalStatus})
</if>
<if test="'READY'.equals(header_approvalStatus)">
AND MY_READY_APPROVAL <![CDATA[ > ]]> 0
</if>
) AA
) A
</select>
<!-- //Route 상세 -->
<select id="getRouteInfo" parameterType="map" resultType="map">
SELECT A.OBJID AS APPROVAL_OBJID
, B.OBJID AS ROUTE_OBJID
, A.TARGET_TYPE
, 'APPROVAL-'||LPAD(A.APPROVAL_SEQ::TEXT, 4, '0') AS APPROVAL_NO
, 'ROUTE-'||LPAD(B.ROUTE_SEQ::TEXT, 4, '0') AS ROUTE_NO
, B.TARGET_OBJID
, B.APPROVAL_TITLE
, B.APPROVAL_DESC
, B.WRITER
, (SELECT EMAIL FROM USER_INFO WHERE USER_ID = B.WRITER) AS EMAIL
, (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
FROM APPROVAL A, ROUTE B
WHERE 1=1
AND A.OBJID = B.APPROVAL_OBJID
AND B.OBJID = #{routeObjId}::integer
</select>
<!-- //ROUTE 목록 -->
<select id="getRouteList" parameterType="map" resultType="map">
SELECT A.OBJID AS APPROVAL_OBJID
, B.OBJID AS ROUTE_OBJID
, 'APPROVAL-'||LPAD(APPROVAL_SEQ::TEXT, 4, '0') AS APPROVAL_NO
, 'ROUTE-'||LPAD(ROUTE_SEQ::TEXT, 4, '0') AS ROUTE_NO
, B.STATUS
FROM APPROVAL A, ROUTE B
WHERE 1=1
AND A.OBJID = B.APPROVAL_OBJID
AND A.OBJID = #{approvalObjId}::integer
ORDER BY B.REGDATE DESC
</select>
<!-- //route별 inboxtask 목록 -->
<select id="selectInboxtaskList" parameterType="map" resultType="map">
SELECT OBJID AS INBOXTASK_OBJID
, SEQ
, TARGET_USER_ID
, (SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = TARGET_USER_ID) AS DEPT_NAME
, (SELECT USER_NAME FROM USER_INFO WHERE USER_ID = TARGET_USER_ID) AS USER_NAME
, TO_CHAR(REGDATE, 'YYYY-MM-DD') AS REGDATE
, TO_CHAR(PROC_DATE, 'YYYY-MM-DD') AS PROC_DATE
, STATUS
, COALESCE(RESULT_MESSAGE,'') AS RESULT_MESSAGE
, SIGN
, SIGN_WIDTH
, SIGN_HEIGHT
FROM INBOXTASK
WHERE 1=1
AND ROUTE_OBJID = #{routeObjId}::integer
AND APPROVAL_TYPE = #{approvalType}
ORDER BY SEQ
</select>
<!-- //inboxtask 담당자 결과처리 -->
<update id="setInboxtaskResult" parameterType="map">
UPDATE INBOXTASK
SET RESULT = #{result}, STATUS = #{status}, PROC_DATE = now(), RESULT_MESSAGE = #{resultMessage}
,SIGN = #{SIGN}
,SIGN_WIDTH = #{SIGN_WIDTH}
,SIGN_HEIGHT = #{SIGN_HEIGHT}
WHERE OBJID = #{inboxtaskObjId}::numeric
</update>
<!-- //다음 차례의 결재자가 있는지 확인 -->
<select id="getNextApprovalObjId" parameterType="map" resultType="map">
SELECT
OBJID AS INBOXTASK_OBJID
,TARGET_USER_ID
,TARGET_OBJID
,(SELECT O.EMAIL FROM USER_INFO O WHERE O.USER_ID = TARGET_USER_ID) AS EMAIL
FROM INBOXTASK
WHERE 1=1
AND UPPER(APPROVAL_TYPE) = 'NORMAL'
AND APPROVAL_OBJID = #{approvalObjId}::numeric
AND ROUTE_OBJID = #{routeObjId}::numeric
AND SEQ = #{nextSeq}
</select>
<!-- //다음 차례의 결재자상태를 ready로 변경 -->
<update id="setNextInboxtaskStatus" parameterType="string">
UPDATE INBOXTASK SET STATUS = 'ready', REGDATE = now() WHERE OBJID = #{nextInboxtaskObjId}::numeric
</update>
<!-- route별 inboxtask의 상태가 ready나 standby가 있는지 확인. (결재가 완료되었는지 확인하기 위함) -->
<select id="getNotCompleteInboxtaskCnt" parameterType="map" resultType="map">
SELECT COUNT(*) AS CNT
FROM INBOXTASK
WHERE 1=1
AND ROUTE_OBJID = #{routeObjId}::numeric
AND STATUS IN ('ready', 'standby')
</select>
<!-- //route를 종결시킨다.(complete, reject) -->
<update id="completeRoute" parameterType="map">
UPDATE ROUTE SET STATUS = #{completeStatus} WHERE OBJID = #{routeObjId}::numeric
</update>
<!-- //route를 상태 update(complete, reject, cancel) -->
<update id="updateRouteStatus" parameterType="map">
UPDATE ROUTE SET STATUS = #{status} WHERE OBJID = #{routeObjId}::numeric
</update>
<update id="updateRouteStatusByApprovalObjId" parameterType="map">
UPDATE ROUTE SET STATUS = #{status} WHERE APPROVAL_OBJID = #{approvalObjId}::numeric
</update>
<update id="updateRouteStatusByTargetObjId" parameterType="map">
UPDATE ROUTE SET STATUS = #{status} WHERE TARGET_OBJID = #{targetObjId}::numeric
</update>
<!-- //reject일 경우 해당 route의 상태값이 reject, complete인것을 제외한 값을 cancel로 변경한다. -->
<update id="cancelInboxtask" parameterType="map">
UPDATE INBOXTASK SET STATUS = 'cancel' WHERE STATUS NOT IN ('complete', 'reject') AND ROUTE_OBJID = #{routeObjId}::numeric
</update>
<!-- //approval 종결 -->
<update id="completeApproval" parameterType="map">
UPDATE APPROVAL SET STATUS = 'complete', COMPLETE_DATE = now() WHERE OBJID = #{approvalObjId}::numeric
</update>
<!-- //targetType을 가져온다. -->
<select id="getTargetType" parameterType="map" resultType="map">
SELECT
TARGET_TYPE
, TARGET_OBJID
FROM APPROVAL
WHERE 1=1
AND OBJID = #{approvalObjId}::numeric
</select>
<!-- //eo의 상태를 변경한다. -->
<update id="changeEOStatus" parameterType="map">
UPDATE EO_INFO SET STATUS = #{status} WHERE OBJID = #{TARGET_OBJID}
</update>
<!-- EO의 차종에 해당하는 배포처의 목록을 가져온다. -->
<select id="getEODistributeMemberList" parameterType="map" resultType="map">
SELECT
MEMBER.OBJID
,(SELECT EMAIL FROM USER_INFO WHERE USER_ID = MEMBER.MEMBER_USER_ID) AS EMAIL
,(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = MEMBER.MEMBER_USER_ID) AS USER_NAME
,(SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = MEMBER.MEMBER_USER_ID) AS DEPT_NAME
,MEMBER.MEMBER_SABUN
,MEMBER.MEMBER_USER_ID
,MEMBER.CAR_OBJID
,MEMBER.REGDATE
,MEMBER.STATUS
FROM CAR_DISTRIBUTE_MEMBER MEMBER
WHERE MEMBER.CAR_OBJID = (SELECT CAR_OBJID FROM EO_INFO WHERE OBJID = #{targetObjId})
</select>
<!-- //통합문제점 그룹의 상태를 변경한다. -->
<update id="changeProblemApprovalStatus" parameterType="map">
UPDATE PMS_PROBLEM_GROUP SET
APPROVAL_STATUS = #{status}
<if test="routeObjId != null and !''.equals(routeObjId)">
, CURRENT_ROUTE_OBJID = #{routeObjId}
</if>
WHERE OBJID = #{targetObjId}
</update>
<!-- 설계 체크리스트 상태를 변경한다. -->
<update id="changeDesignCheckListApprovalStatus" parameterType="map">
UPDATE PMS_DESIGN_CHK_LIST_BASE_INFO SET
APPROVAL_STATUS = #{status}
<if test="routeObjId != null and !''.equals(routeObjId)">
, CURRENT_ROUTE_OBJID = #{routeObjId}
</if>
WHERE OBJID = #{targetObjId}
</update>
<!-- 이슈 상태를 변경한다. -->
<update id="changeIssueMgmtApprovalStatus" parameterType="map">
UPDATE ISSUE_MGMT SET
WPST_CD = #{status}
,RET_DATE = SYSDATE
WHERE OBJID = #{targetObjId}
</update>
<!-- 발주관리 상태를 변경한다. -->
<update id="changeMaterApprovalStatus" parameterType="map">
UPDATE MATERIAL_MASTER_MGMT SET
STATUS_CD = #{status}
WHERE MATERIAL_MASTER_OBJID = #{targetObjId}::numeric
</update>
<!-- 중고관리 상태를 변경한다. -->
<update id="changeUsedMngApprovalStatus" parameterType="map">
UPDATE USED_MNG SET
STATUS = (SELECT CODE_ID FROM COMM_CODE WHERE PARENT_CODE_ID = #{statusCommCD} AND CODE_NAME = #{statusName})
WHERE OBJID = #{targetObjId}::numeric
</update>
<update id="changeCustomerMngApprovalStatus" parameterType="map">
UPDATE CUSTOMER_MNG SET
STATUS = (SELECT CODE_ID FROM COMM_CODE WHERE PARENT_CODE_ID = #{statusCommCD} AND CODE_NAME = #{statusName})
WHERE OBJID = #{targetObjId}::numeric
</update>
<update id="checkReportMngApprovalStatus" parameterType="map">
UPDATE CHECK_REPORT_MNG SET
STATUS = #{status}
WHERE OBJID = #{targetObjId}::numeric
</update>
<update id="eoMngApprovalStatus" parameterType="map">
UPDATE EO_MNG SET
<if test="'approvalComplete'.equals(status)">
DEPLOY_DATE = NOW(),
DEPLOY_WRITER = #{writer},
</if>
STATUS = #{status}
WHERE OBJID = #{targetObjId}::numeric
</update>
<update id="moldDevRequestApprovalStatus" parameterType="map">
UPDATE MOLD_DEV_REQUEST_INFO SET
STATUS = #{status}
WHERE OBJID = #{targetObjId}
</update>
<update id="EcrMngApprovalStatus" parameterType="map">
UPDATE ECR_MNG
SET STATUS_CD = #{status}
WHERE OBJID = #{targetObjId}::numeric
</update>
<update id="ASMngApprovalStatus" parameterType="map">
UPDATE AS_MNG
SET STATUS_CD = #{status}
WHERE OBJID = #{targetObjId}::numeric
</update>
<update id="CSMApprovalStatus" parameterType="map">
UPDATE CUSTOMER_SERVICE_MGMT
SET STATUS = #{status}
WHERE OBJID = #{targetObjId}
</update>
<update id="salesRequestApprovalStatus" parameterType="map">
UPDATE SALES_REQUEST_MASTER
SET STATUS = #{status}
WHERE OBJID::varchar = #{targetObjId}::varchar
</update>
<update id="purchaseOrderApprovalStatus" parameterType="map">
UPDATE PURCHASE_ORDER_MASTER
SET
STATUS = #{status}
<if test="'approvalComplete'.equals(status)">
,PURCHASE_DATE = TO_CHAR(NOW(),'YYYY-MM-DD')
</if>
WHERE ( OBJID::varchar = #{targetObjId}::varchar
OR MULTI_MASTER_OBJID::varchar = #{targetObjId}::varchar)
AND STATUS != 'cancel'
</update>
<!-- //발주 상태 가져온다. -->
<select id="getmaterstatus" parameterType="map" resultType="map">
SELECT STATUS_CD
FROM MATERIAL_MASTER_MGMT
WHERE MATERIAL_MASTER_OBJID = #{TARGET_OBJID}
</select>
<!-- //접속자의 결재건수를 가져온다. -->
<select id="getApprovalCnt" parameterType="map" resultType="map">
SELECT COUNT(1) CNT
FROM
INBOXTASK INBOX,
APPROVAL APP,
ROUTE ROU
WHERE 1=1
AND TARGET_USER_ID = #{userId}
AND INBOX.APPROVAL_OBJID = APP.OBJID
AND INBOX.ROUTE_OBJID = ROU.OBJID
AND APP.SYSTEM_TYPE = #{systemType}
AND UPPER(INBOX.STATUS) = 'READY'
AND ROU.STATUS ='inProcess'
</select>
<select id="getApprovalLine" resultType="map" parameterType="map">
SELECT
(SELECT DEPT_NAME||' '||USER_NAME FROM USER_INFO WHERE USER_ID = T1.WRITER) AS WRITER,
TO_CHAR(T1.REGDATE, 'YYYY-MM-DD') AS REGDATE,
(SELECT DEPT_NAME||' '||USER_NAME FROM USER_INFO WHERE USER_ID = T2.TARGET_USER_ID) AS TARGET_USER_NAME,
TO_CHAR(T2.PROC_DATE, 'YYYY-MM-DD') AS PROC_DATE,
T2.SEQ,
T2.STATUS
FROM
APPROVAL T,
ROUTE T1,
INBOXTASK T2
WHERE
T.OBJID = T1.APPROVAL_OBJID
<if test="objId != null and !''.equals(objId)">
AND T.TARGET_OBJID = #{objId}::integer
</if>
<if test="OBJID != null and !''.equals(OBJID)">
AND T.TARGET_OBJID = #{OBJID}::integer
</if>
AND T1.STATUS != 'reject'
AND T1.OBJID = T2.ROUTE_OBJID
ORDER BY
T1.REGDATE,
T2.SEQ ASC
</select>
</mapper>