Files
wace_plm/WebContent/WEB-INF/classes/com/pms/mapper/transfer.xml
chpark da06c4684c Initial commit: WACE PLM with database initialization features
- Add Docker Compose configurations for dev, prod, and standalone environments
- Add database initialization scripts (init-db.sh, init-db-docker.sh)
- Add enhanced start-docker-linux.sh with DB init support
- Add comprehensive database initialization guide
- Support for automatic dbexport.pgsql import on first run
- Include safety checks for production environment
2025-08-29 15:46:08 +09:00

3371 lines
164 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="transfer">
<!-- //JMPARK START -->
<!-- 차종별 개발중인 제품목록조회 -->
<select id="getProductList_byCarObjId" parameterType="map" resultType="map">
SELECT ROWNUM AS RNUM
, AA.PROJECT_OBJID
, AA.OEM_OBJID
, AA.CAR_OBJID
, AA.PROD_OBJID
, AA.PROD_GROUP_NAME
, AA.PROD_NAME
, (SELECT COUNT(*) FROM PMS_DEV_MASTER WHERE CAR_OBJID = AA.CAR_OBJID AND PROD_OBJID = AA.PROD_OBJID) AS DEV_MASTER_CNT
FROM (
SELECT B.TARGET_OBJID AS PROJECT_OBJID
, B.SUB_OBJID AS PROD_OBJID
, (SELECT PRODUCT_GROUP_NAME FROM PRODUCT_GROUP_MNG WHERE OBJID = (SELECT PRODUCT_GROUP_OBJID FROM PRODUCT_MNG WHERE OBJID = B.SUB_OBJID)) AS PROD_GROUP_NAME
, (SELECT PRODUCT_NAME FROM PRODUCT_MNG WHERE OBJID = B.SUB_OBJID) AS PROD_NAME
, A.OEM_OBJID AS OEM_OBJID
, A.CAR_OBJID AS CAR_OBJID
FROM PMS_PJT_INFO A, PMS_REL_PJT_PROD B
WHERE 1=1
AND A.OBJID = B.TARGET_OBJID
AND UPPER(A.STATUS) = 'CONFIRM'
) AA
WHERE 1=1
AND AA.CAR_OBJID = #{carObjId}
</select>
<!-- //양산이관(금형) 갑지 조회 -->
<select id="getTransferMoldMasterInfo" parameterType="map" resultType="map">
SELECT ROWNUM AS RNUM
, BASE_T.*
FROM (
SELECT A.OBJID
, A.OEM_OBJID
, (SELECT OEM_NAME FROM OEM_MNG WHERE OBJID = A.OEM_OBJID) AS OEM_NAME
, A.CAR_OBJID
, (SELECT CAR_CODE FROM CAR_MNG WHERE OBJID = A.CAR_OBJID) AS CAR_CODE
, (SELECT CAR_NAME FROM CAR_MNG WHERE OBJID = A.CAR_OBJID) AS CAR_NAME
, '150' AS MOLD_SET_CNT
, '0' AS TAKE_OVER_RATIO
, '진행중' AS TAKE_OVER_STATUS
, (SELECT TO_CHAR(CAR.MILESTONE_DATE, 'YYYY-MM-DD') FROM OEM_MILESTONE_MNG OEM, CAR_MILESTONE_MNG CAR WHERE OEM.OBJID = CAR.MILESTONE_OBJID AND OEM.MILESTONE_NAME = 'SOP' AND OEM.OEM_OBJID = A.OEM_OBJID AND CAR.CAR_OBJID = A.CAR_OBJID) AS SOP
, '9999-99-99' TAKE_OVER_DATE
FROM PMS_TRANSFER_MOLD A
WHERE 1=1
) BASE_T
WHERE 1=1
AND BASE_T.OBJID = #{objId}
</select>
<!-- //양산이관(금형) 갑지 목록 -->
<select id="getTransferMoldMasterList" parameterType="map" resultType="map">
SELECT ROWNUM AS RNUM
, BASE_T.*
, CASE WHEN BASE_T.ALL_CNT = 0 THEN 0 ELSE ROUND((TO_NUMBER(BASE_T.APPLY_CNT) / TO_NUMBER(BASE_T.ALL_CNT)) * 100, 0) END AS TAKE_OVER_RATIO
FROM (
SELECT A.OBJID
, A.OEM_OBJID
, (SELECT OEM_NAME FROM OEM_MNG WHERE OBJID = A.OEM_OBJID) AS OEM_NAME
, A.CAR_OBJID
, (SELECT CAR_CODE FROM CAR_MNG WHERE OBJID = A.CAR_OBJID) AS CAR_CODE
, (SELECT CAR_NAME FROM CAR_MNG WHERE OBJID = A.CAR_OBJID) AS CAR_NAME
, (SELECT SUM(CASE WHEN OPERATION_OP05 IS NULL THEN 0 WHEN OPERATION_OP05 = 'BL' THEN 1 WHEN OPERATION_OP05 = 'BL_COMMON' THEN 0 WHEN OPERATION_OP05 = 'PI_BL' THEN 1 ELSE 0 END + CASE WHEN OPERATION_OP10 IS NULL THEN 0 ELSE 1 END + CASE WHEN OPERATION_OP20 IS NULL THEN 0 ELSE 1 END + CASE WHEN OPERATION_OP30 IS NULL THEN 0 ELSE 1 END + CASE WHEN OPERATION_OP40 IS NULL THEN 0 ELSE 1 END + CASE WHEN OPERATION_OP50 IS NULL THEN 0 ELSE 1 END + CASE WHEN OPERATION_OP60 IS NULL THEN 0 ELSE 1 END + CASE WHEN OPERATION_OP70 IS NULL THEN 0 ELSE 1 END + CASE WHEN OPERATION_OP80 IS NULL THEN 0 ELSE 1 END)
FROM PMS_DEV_MASTER DM, PMS_DEV_MASTER_REL_PART_INFO DP
WHERE DM.OBJID = DP.TARGET_OBJID
AND OEM_OBJID = A.OEM_OBJID
AND CAR_OBJID = A.CAR_OBJID
AND UPPER(DEV_POINT) = '2REALISTICPRODUCE') AS MOLD_SET_CNT
, STATUS AS TAKE_OVER_STATUS
, (SELECT TO_CHAR(CAR.MILESTONE_DATE, 'YYYY-MM-DD') FROM OEM_MILESTONE_MNG OEM, CAR_MILESTONE_MNG CAR WHERE OEM.OBJID = CAR.MILESTONE_OBJID AND OEM.MILESTONE_NAME = 'SOP' AND OEM.OEM_OBJID = A.OEM_OBJID AND CAR.CAR_OBJID = A.CAR_OBJID) AS SOP
, TO_CHAR(TAKE_OVER_DATE, 'YYYY-MM-DD') AS TAKE_OVER_DATE
, (SELECT COUNT(*) FROM PMS_TRANSFER_MOLD_PART_HISTORY WHERE TARGET_OBJID = A.OBJID AND IS_LAST = 'Y' AND UPPER(RESULT) IN ('APPLY', 'ACCEPTAPPLY')) AS APPLY_CNT
, (SELECT COUNT(*) FROM PMS_DEV_MASTER DM, PMS_DEV_MASTER_REL_PART_INFO DP WHERE DM.OBJID = DP.TARGET_OBJID AND OEM_OBJID = A.OEM_OBJID AND CAR_OBJID = A.CAR_OBJID AND UPPER(DEV_POINT) = '2REALISTICPRODUCE') AS ALL_CNT
, A.WRITER
, (SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = A.WRITER) AS WRITER_DEPT_NAME
, (SELECT USER_NAME FROM USER_INFO WHERE USER_ID = A.WRITER) AS WRITER_USER_NAME
FROM PMS_TRANSFER_MOLD A
WHERE 1=1
) BASE_T
WHERE 1=1
<if test="search_oemObjId != null and !''.equals(search_oemObjId)">
AND BASE_T.OEM_OBJID = #{search_oemObjId}
</if>
<if test="search_carObjId != null and !''.equals(search_carObjId)">
AND BASE_T.CAR_OBJID = #{search_carObjId}
</if>
<if test="search_takeOverStatus != null and !''.equals(search_takeOverStatus)">
AND BASE_T.TAKE_OVER_STATUS = #{search_takeOverStatus}
</if>
<if test="search_takeOverFromDate != null and !''.equals(search_takeOverFromDate)">
AND BASE_T.TAKE_OVER_DATE <![CDATA[>=]]> TO_DATE(#{search_takeOverFromDate}, 'YYYY-MM-DD')
</if>
<if test="search_takeOverToDate != null and !''.equals(search_takeOverToDate)">
AND BASE_T.TAKE_OVER_DATE <![CDATA[<=]]> TO_DATE(#{search_takeOverToDate}, 'YYYY-MM-DD')
</if>
</select>
<!-- //양산이관(금형) 갑지 저장 -->
<update id="saveTransferMoldMasterInfo" parameterType="map">
MERGE INTO PMS_TRANSFER_MOLD USING DUAL ON (OBJID = #{objId})
WHEN MATCHED THEN
UPDATE
SET OEM_OBJID = #{oemObjId}, CAR_OBJID = #{carObjId}
WHEN NOT MATCHED THEN
INSERT
(
OBJID
, OEM_OBJID
, CAR_OBJID
, WRITER
, REGDATE
, STATUS
)
VALUES
(
#{objId}
, #{oemObjId}
, #{carObjId}
, #{writer}
, SYSDATE
, 'create'
)
</update>
<!-- //양산이관(금형) 중복 저장 체크용 -->
<select id="getTransferMoldMasterDuplicateCnt" parameterType="map" resultType="map">
SELECT COUNT(*) AS CNT
FROM PMS_TRANSFER_MOLD
WHERE CAR_OBJID = #{carObjId}
</select>
<!-- //양산이관(금형) 갑지별 제품목록 -->
<select id="getTransferMoldProductList" parameterType="map" resultType="map">
SELECT AA.*
, CASE WHEN AA.PART_TAKE_OVER_COMPLETE_CNT = 0 THEN 0 ELSE ROUND((AA.PART_TAKE_OVER_COMPLETE_CNT / AA.PART_TAKE_OVER_ALL_CNT)*100, 0) END AS PART_TAKE_OVER_RATIO
, (SELECT WM_CONCAT(DISTINCT RESULT) FROM PMS_DEV_MASTER M, PMS_DEV_MASTER_REL_PART_INFO P, PMS_TRANSFER_MOLD_PART_HISTORY HIS WHERE M.OBJID = P.TARGET_OBJID AND UPPER(P.DEV_POINT) = '2REALISTICPRODUCE' AND HIS.PART_NO(+) = P.PART_NO AND UPPER(HIS.IS_LAST(+)) = 'Y' AND HIS.TARGET_OBJID(+) = AA.MOLD_GABJI_OBJID AND M.PROD_OBJID = AA.PROD_OBJID) AS RESULT_CONCAT
, (SELECT TO_CHAR(REGDATE, 'YYYY-MM-DD') FROM (SELECT HIS.*, M.PROD_OBJID AS DEV_MASTER_PROD_OBJID FROM PMS_DEV_MASTER M, PMS_DEV_MASTER_REL_PART_INFO P, PMS_TRANSFER_MOLD_PART_HISTORY HIS WHERE M.OBJID = P.TARGET_OBJID AND UPPER(P.DEV_POINT) = '2REALISTICPRODUCE' AND HIS.PART_NO(+) = P.PART_NO AND UPPER(HIS.IS_LAST(+)) = 'Y' ORDER BY HIS.REGDATE DESC) WHERE ROWNUM = 1 AND TARGET_OBJID(+) = AA.MOLD_GABJI_OBJID AND DEV_MASTER_PROD_OBJID = AA.PROD_OBJID ) AS LAST_DATE
, (SELECT ROWNUM FROM (SELECT HIS.*, M.PROD_OBJID DEV_MASTER_PROD_OBJID FROM PMS_DEV_MASTER M, PMS_DEV_MASTER_REL_PART_INFO P, PMS_TRANSFER_MOLD_PART_HISTORY HIS WHERE M.OBJID = P.TARGET_OBJID AND UPPER(P.DEV_POINT) = '2REALISTICPRODUCE' AND HIS.PART_NO(+) = P.PART_NO AND UPPER(HIS.IS_LAST(+)) = 'Y' ORDER BY HIS.REGDATE DESC) WHERE ROWNUM = 1 AND TARGET_OBJID(+) = AA.MOLD_GABJI_OBJID AND DEV_MASTER_PROD_OBJID = AA.PROD_OBJID ) AS RNUM
FROM (
SELECT A.*
, (SELECT COUNT(*) FROM PMS_TRANSFER_MOLD_PART_HISTORY WHERE UPPER(IS_LAST) = 'Y' AND TARGET_OBJID = A.MOLD_GABJI_OBJID AND UPPER(RESULT) IN ('APPLY', 'ACCEPTAPPLY') AND PROD_OBJID = A.PROD_OBJID) AS PART_TAKE_OVER_COMPLETE_CNT
, A.PART_TAKE_OVER_ALL_CNT - (SELECT COUNT(*) FROM PMS_TRANSFER_MOLD_PART_HISTORY WHERE UPPER(IS_LAST) = 'Y' AND TARGET_OBJID = A.MOLD_GABJI_OBJID AND UPPER(RESULT) IN ('APPLY', 'ACCEPTAPPLY') AND PROD_OBJID = A.PROD_OBJID) AS PART_TAKE_OVER_ONGOING_CNT
FROM (
SELECT MOLD.OBJID AS MOLD_GABJI_OBJID
, M.OEM_OBJID
, M.CAR_OBJID
, M.PROD_GROUP_OBJID
, (SELECT PRODUCT_GROUP_NAME FROM PRODUCT_GROUP_MNG WHERE OBJID = M.PROD_GROUP_OBJID) AS PROD_GROUP_NAME
, M.PROD_OBJID
, (SELECT PRODUCT_NAME FROM PRODUCT_MNG WHERE OBJID = M.PROD_OBJID) AS PROD_NAME
, SUM(CASE WHEN OPERATION_OP05 IS NULL THEN 0
WHEN UPPER(OPERATION_OP05) = 'BL' THEN 1
WHEN UPPER(OPERATION_OP05) = 'BL_COMMON' THEN 0
WHEN UPPER(OPERATION_OP05) = 'PI_BL' THEN 1
ELSE 0 END
+ CASE WHEN OPERATION_OP10 IS NULL THEN 0 ELSE 1 END
+ CASE WHEN OPERATION_OP20 IS NULL THEN 0 ELSE 1 END
+ CASE WHEN OPERATION_OP30 IS NULL THEN 0 ELSE 1 END
+ CASE WHEN OPERATION_OP40 IS NULL THEN 0 ELSE 1 END
+ CASE WHEN OPERATION_OP50 IS NULL THEN 0 ELSE 1 END
+ CASE WHEN OPERATION_OP60 IS NULL THEN 0 ELSE 1 END
+ CASE WHEN OPERATION_OP70 IS NULL THEN 0 ELSE 1 END
+ CASE WHEN OPERATION_OP80 IS NULL THEN 0 ELSE 1 END)
AS MOLD_SET_CNT_SUM
, COUNT(M.PROD_OBJID) AS PART_TAKE_OVER_ALL_CNT
FROM PMS_DEV_MASTER M, PMS_DEV_MASTER_REL_PART_INFO P, PMS_TRANSFER_MOLD MOLD
WHERE 1=1
AND M.OBJID = P.TARGET_OBJID
AND M.OEM_OBJID = MOLD.OEM_OBJID
AND M.CAR_OBJID = MOLD.CAR_OBJID
AND UPPER(P.DEV_POINT) = '2REALISTICPRODUCE'
GROUP BY MOLD.OBJID, M.OEM_OBJID, M.CAR_OBJID, M.PROD_GROUP_OBJID, M.PROD_OBJID
) A
) AA
WHERE 1=1
AND AA.MOLD_GABJI_OBJID = #{objId}
</select>
<!-- //양산이관(금형) 차종, 제품별 part목록 -->
<select id="getTransferMoldPartList_byProduct" parameterType="map" resultType="map">
SELECT AA.*
, (SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = AA.TAKE_OVER_HIS_WRITER) AS TAKE_OVER_DEPT_NAME
, (SELECT USER_NAME FROM USER_INFO WHERE USER_ID = AA.TAKE_OVER_HIS_WRITER) AS TAKE_OVER_USER_NAME
, ROWNUM RNUM
, (SELECT REAL_FILE_NAME FROM ATTACH_FILE_INFO WHERE TARGET_OBJID = AA.PART_OBJID AND DOC_TYPE = 'PART_SHAPE' AND UPPER(STATUS) = 'ACTIVE') AS PART_IMAGE_REAL_FILE_NAME
, (SELECT SAVED_FILE_NAME FROM ATTACH_FILE_INFO WHERE TARGET_OBJID = AA.PART_OBJID AND DOC_TYPE = 'PART_SHAPE' AND UPPER(STATUS) = 'ACTIVE') AS PART_IMAGE_SAVED_FILE_NAME
, (SELECT REPLACE(FILE_PATH, '\', '\\') FROM ATTACH_FILE_INFO WHERE TARGET_OBJID = AA.PART_OBJID AND DOC_TYPE = 'PART_SHAPE' AND UPPER(STATUS) = 'ACTIVE') AS PART_IMAGE_FILE_PATH
FROM (
SELECT A.*
, CASE WHEN A.PROBLEM_ALL_CNT = 0 THEN 0 ELSE ROUND((TO_NUMBER(A.PROBLEM_COMPLETE_CNT) / TO_NUMBER(A.PROBLEM_ALL_CNT)) * 100, 0) END AS PROBLEM_COMPLETE_RATIO
, (SELECT COUNT(*) FROM ATTACH_FILE_INFO WHERE DOC_TYPE = 'TRANSFER_MOLD_TAKE_OVER' AND UPPER(STATUS) = 'ACTIVE' AND UPPER(REAL_FILE_NAME) LIKE UPPER('%'||A.PART_NO||'%') AND TARGET_OBJID = A.MOLD_GABJI_OBJID) AS FILE_CNT
, (SELECT OBJID FROM PMS_TRANSFER_MOLD_PART_HISTORY WHERE TARGET_OBJID = A.MOLD_GABJI_OBJID AND UPPER(IS_LAST) = 'Y' AND PART_NO = A.PART_NO) AS TAKE_OVER_HIS_OBJID
, (SELECT RESULT FROM PMS_TRANSFER_MOLD_PART_HISTORY WHERE TARGET_OBJID = A.MOLD_GABJI_OBJID AND UPPER(IS_LAST) = 'Y' AND PART_NO = A.PART_NO) AS TAKE_OVER_HIS_RESULT
, (SELECT WRITER FROM PMS_TRANSFER_MOLD_PART_HISTORY WHERE TARGET_OBJID = A.MOLD_GABJI_OBJID AND UPPER(IS_LAST) = 'Y' AND PART_NO = A.PART_NO) AS TAKE_OVER_HIS_WRITER
, (SELECT TO_CHAR(REGDATE, 'YYYY-MM-DD') FROM PMS_TRANSFER_MOLD_PART_HISTORY WHERE TARGET_OBJID = A.MOLD_GABJI_OBJID AND UPPER(IS_LAST) = 'Y' AND PART_NO = A.PART_NO) AS TAKE_OVER_HIS_REGDATE
FROM (
SELECT MOLD.OBJID AS MOLD_GABJI_OBJID
, (SELECT OBJID FROM PART_INFO WHERE PART_NO = P.PART_NO AND IS_LAST = 1 AND UPPER(STATUS) = 'COMPLETE') AS PART_OBJID
, P.PART_NO
, (SELECT PART_NAME FROM PART_INFO WHERE PART_NO = P.PART_NO AND UPPER(STATUS) = 'COMPLETE' AND IS_LAST = 1) AS PART_NAME
, (SELECT DRAWING_NO_OBJID FROM PART_INFO WHERE PART_NO = P.PART_NO AND IS_LAST = 1) AS DRAWING_NO_OBJID
, M.OEM_OBJID
, M.CAR_OBJID
, M.PROD_GROUP_OBJID
, (SELECT PRODUCT_GROUP_NAME FROM PRODUCT_GROUP_MNG WHERE OBJID = M.PROD_GROUP_OBJID) AS PROD_GROUP_NAME
, M.PROD_OBJID
, (SELECT PRODUCT_NAME FROM PRODUCT_MNG WHERE OBJID = M.PROD_OBJID) AS PROD_NAME
, (SELECT MATERIAL_NAME FROM MATERIAL_MNG WHERE UPPER(STATUS) = 'ACTIVE' AND OBJID = (SELECT MATERIAL_OBJID FROM PART_INFO WHERE PART_NO = P.PART_NO AND UPPER(STATUS) = 'COMPLETE' AND IS_LAST = 1)) AS MATERIAL
, (SELECT THICKNESS FROM PART_INFO WHERE PART_NO = P.PART_NO AND UPPER(STATUS) = 'COMPLETE' AND IS_LAST = 1) AS THICKNESS
, P.BLANK_SIZE_REAL_WIDTH
, P.BLANK_SIZE_REAL_PITCH
, CASE WHEN OPERATION_OP05 IS NULL THEN 0
WHEN OPERATION_OP05 = 'BL' THEN 1
WHEN OPERATION_OP05 = 'BL_COMMON' THEN 0
WHEN OPERATION_OP05 = 'PI_BL' THEN 1
ELSE 0 END
+ CASE WHEN OPERATION_OP10 IS NULL THEN 0 ELSE 1 END
+ CASE WHEN OPERATION_OP20 IS NULL THEN 0 ELSE 1 END
+ CASE WHEN OPERATION_OP30 IS NULL THEN 0 ELSE 1 END
+ CASE WHEN OPERATION_OP40 IS NULL THEN 0 ELSE 1 END
+ CASE WHEN OPERATION_OP50 IS NULL THEN 0 ELSE 1 END
+ CASE WHEN OPERATION_OP60 IS NULL THEN 0 ELSE 1 END
+ CASE WHEN OPERATION_OP70 IS NULL THEN 0 ELSE 1 END
+ CASE WHEN OPERATION_OP80 IS NULL THEN 0 ELSE 1 END
AS MOLD_SET_CNT
, P.MOLD_MAKE_COMPANY
, P.PRODUCING_COMPANY
, (SELECT COUNT(*) FROM PMS_PROBLEM_INFO WHERE PART_NO = P.PART_NO AND TYPE1 = 'mold') AS PROBLEM_ALL_CNT
, (SELECT COUNT(*) FROM PMS_PROBLEM_INFO WHERE PART_NO = P.PART_NO AND TYPE1 = 'mold' AND UPPER(STATUS) = 'COMPLETE') AS PROBLEM_COMPLETE_CNT
FROM PMS_DEV_MASTER M, PMS_DEV_MASTER_REL_PART_INFO P, PMS_TRANSFER_MOLD MOLD
WHERE 1=1
AND M.OBJID = P.TARGET_OBJID
AND UPPER(P.DEV_POINT) = '2REALISTICPRODUCE'
AND M.CAR_OBJID = MOLD.CAR_OBJID
AND MOLD.OBJID = #{objId}
AND M.PROD_OBJID = #{prodObjId}
) A
) AA
WHERE 1=1
<if test="search_partNo != null and !''.equals(search_partNo)">
AND UPPER(AA.PART_NO) LIKE UPPER('%${search_partNo}%')
</if>
<if test="search_partName != null and !''.equals(search_partName)">
AND UPPER(AA.PART_NAME) LIKE UPPER('%${search_partName}%')
</if>
<if test="search_moldMakeCompany != null and !''.equals(search_moldMakeCompany)">
AND UPPER(AA.MOLD_MAKE_COMPANY) LIKE UPPER('%${search_moldMakeCompany}%')
</if>
<if test="search_producingCompany != null and !''.equals(search_producingCompany)">
AND UPPER(AA.PRODUCING_COMPANY) LIKE UPPER('%${search_producingCompany}%')
</if>
<if test="search_result != null and !''.equals(search_result)">
AND AA.TAKE_OVER_HIS_RESULT = #{search_result}
</if>
<if test="search_takeOverFromDate != null and !''.equals(search_takeOverFromDate)">
AND AA.TAKE_OVER_HIS_REGDATE <![CDATA[ >= ]]> TO_DATE(#{search_takeOverFromDate}, 'YYYY-MM-DD')
</if>
<if test="search_takeOverToDate != null and !''.equals(search_takeOverToDate)">
AND AA.TAKE_OVER_HIS_REGDATE <![CDATA[ <= ]]> TO_DATE(#{search_takeOverToDate}, 'YYYY-MM-DD')
</if>
</select>
<!-- //양산이관(금형) 인수결정 history 목록조회 -->
<select id="getTransferMoldTakeOverHistoryList" parameterType="map" resultType="map">
SELECT ROWNUM AS RNUM
, AA.*
FROM (
SELECT A.OBJID
, A.TARGET_OBJID
, A.PART_NO
, A.RESULT
, A.REASON
, A.DESCRIPTION
, A.REGDATE AS REGDATE_ORG
, TO_CHAR(A.REGDATE, 'YYYY-MM-DD') AS REGDATE
, A.WRITER
, (SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = A.WRITER) AS WRITER_DEPT_NAME
, (SELECT USER_NAME FROM USER_INFO WHERE USER_ID = A.WRITER) AS WRITER_USER_NAME
, A.IS_LAST
FROM PMS_TRANSFER_MOLD_PART_HISTORY A
WHERE 1=1
AND TARGET_OBJID = #{targetObjId}
AND UPPER(PART_NO) = UPPER(#{partNo})
ORDER BY REGDATE_ORG DESC
) AA
</select>
<!-- //양산이관(금형) 인수결정 권한 확인 -->
<select id="getTransferMoldTakeOverAuthCheck" parameterType="map" resultType="map">
SELECT COUNT(*) as CNT FROM TAKE_OVER_PIC_MNG WHERE USER_ID = #{connectUserId}
</select>
<!-- //양산이관(금형) 인수이력 isLast 수정 -->
<update id="updateTransferMoldPartHistory_LastValue" parameterType="map">
UPDATE PMS_TRANSFER_MOLD_PART_HISTORY SET IS_LAST = 'N' WHERE TARGET_OBJID = #{targetObjId} AND PART_NO = #{partNo}
</update>
<!-- //양산이관(금형) 인수이력 등록 -->
<insert id="registTransferMoldPartHistory" parameterType="map">
INSERT INTO PMS_TRANSFER_MOLD_PART_HISTORY(
OBJID
, TARGET_OBJID
, PROD_GROUP_OBJID
, PROD_OBJID
, PART_NO
, RESULT
, REASON
, DESCRIPTION
, REGDATE
, WRITER
, IS_LAST
) VALUES (
#{objId}
, #{targetObjId}
, (SELECT PRODUCT_GROUP_OBJID FROM PART_INFO WHERE PART_NO = #{partNo} AND IS_LAST = 1 AND UPPER(STATUS) = 'COMPLETE')
, (SELECT PRODUCT_OBJID FROM PART_INFO WHERE PART_NO = #{partNo} AND IS_LAST = 1 AND UPPER(STATUS) = 'COMPLETE')
, #{partNo}
, #{result}
, #{reason}
, #{description}
, SYSDATE
, #{writer}
, 'Y'
)
</insert>
<!-- //targetObjId별 최종 이력 결과값 조회 -->
<select id="getTransferMoldLastResult" parameterType="map" resultType="map">
SELECT RESULT
FROM PMS_TRANSFER_MOLD_PART_HISTORY
WHERE 1=1
AND TARGET_OBJID = #{targetObjId}
AND UPPER(PART_NO) = UPPER(#{partNo})
AND UPPER(IS_LAST) = 'Y'
</select>
<!-- //금형 미이관 단품리스트 -->
<select id="getTransferMoldReviewOrRejectPartList" parameterType="map" resultType="map">
SELECT ROWNUM AS RNUM
, A.*
, (SELECT REAL_FILE_NAME FROM ATTACH_FILE_INFO WHERE TARGET_OBJID = A.PART_OBJID AND DOC_TYPE = 'PART_SHAPE' AND UPPER(STATUS) = 'ACTIVE') AS PART_IMAGE_REAL_FILE_NAME
, (SELECT SAVED_FILE_NAME FROM ATTACH_FILE_INFO WHERE TARGET_OBJID = A.PART_OBJID AND DOC_TYPE = 'PART_SHAPE' AND UPPER(STATUS) = 'ACTIVE') AS PART_IMAGE_SAVED_FILE_NAME
, (SELECT REPLACE(FILE_PATH, '\', '\\') FROM ATTACH_FILE_INFO WHERE TARGET_OBJID = A.PART_OBJID AND DOC_TYPE = 'PART_SHAPE' AND UPPER(STATUS) = 'ACTIVE') AS PART_IMAGE_FILE_PATH
FROM (
SELECT HIS.OBJID AS HIS_OBJID
, HIS.TARGET_OBJID AS MOLD_GABJI_OBJID
, P.OBJID AS PART_OBJID
, P.PRODUCT_GROUP_OBJID AS PROD_GROUP_OBJID
, (SELECT PRODUCT_GROUP_NAME FROM PRODUCT_GROUP_MNG WHERE OBJID = P.PRODUCT_GROUP_OBJID) AS PROD_GROUP_NAME
, P.PRODUCT_OBJID AS PROD_OBJID
, (SELECT PRODUCT_NAME FROM PRODUCT_MNG WHERE OBJID = P.PRODUCT_OBJID) AS PROD_NAME
, (SELECT CAR_OBJID FROM EO_INFO WHERE OBJID = P.EO_OBJID AND UPPER(STATUS) = 'RELEASE') AS CAR_OBJID
, P.PART_NO
, P.PART_NAME
, HIS.REASON
, HIS.DESCRIPTION
, HIS.RESULT
, HIS.REGDATE AS REGDATE_ORG
, TO_CHAR(HIS.REGDATE, 'YYYY-MM-DD') AS REGDATE
FROM PMS_TRANSFER_MOLD_PART_HISTORY HIS, PART_INFO P
WHERE 1=1
AND HIS.PART_NO = P.PART_NO
AND UPPER(P.STATUS) = 'COMPLETE'
AND P.IS_LAST = 1
AND HIS.IS_LAST = 'Y'
AND UPPER(HIS.RESULT) IN ('REVIEW', 'REJECT')
) A
WHERE 1=1
AND A.CAR_OBJID = #{carObjId}
ORDER BY A.REGDATE DESC
</select>
<!-- //양산이관(설비) 상세 -->
<select id="getTransferFacilitiesInfo" parameterType="map" resultType="map">
SELECT A.OBJID
, A.OEM_OBJID
, (SELECT OEM_NAME FROM OEM_MNG WHERE OBJID = A.OEM_OBJID) AS OEM_NAME
, A.CAR_OBJID
, (SELECT CAR_NAME FROM CAR_MNG WHERE OBJID = A.CAR_OBJID) AS CAR_NAME
, (SELECT CAR_CODE FROM CAR_MNG WHERE OBJID = A.CAR_OBJID) AS CAR_CODE
, (SELECT MODEL_CODE FROM CAR_MNG WHERE OBJID = A.CAR_OBJID) AS MODEL_CODE
, A.ACCEPTOR
, (SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = A.ACCEPTOR) AS ACCEPTOR_DEPT_NAME
, (SELECT USER_NAME FROM USER_INFO WHERE USER_ID = A.ACCEPTOR) AS ACCEPTOR_USER_NAME
, A.WRITER
, (SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = A.WRITER) AS WRITER_DEPT_NAME
, (SELECT USER_NAME FROM USER_INFO WHERE USER_ID = A.WRITER) AS WRITER_USER_NAME
, A.REGDATE AS REGDATE_ORG
, TO_CHAR(A.REGDATE, 'YYYY-MM-DD') AS REGDATE
, A.STATUS
, A.TAKE_OVER_DATE AS TAKE_OVER_DATE_ORG
, TO_CHAR(A.TAKE_OVER_DATE, 'YYYY-MM-DD') AS TAKE_OVER_DATE
FROM PMS_TRANSFER_FACILITIES A
WHERE 1=1
<if test="targetObjId != null and !''.equals(targetObjId)">
AND OBJID = #{targetObjId}
</if>
</select>
<!-- //양산이관(설비) 중복 저장 체크용 -->
<select id="getTransferFacilitiesMasterDuplicateCnt" parameterType="map" resultType="map">
SELECT COUNT(*) AS CNT
FROM PMS_TRANSFER_FACILITIES
WHERE CAR_OBJID = #{carObjId}
</select>
<!-- //양산이관(설비) 갑지 저장 -->
<update id="saveTransferFacilitiesMasterInfo" parameterType="map">
MERGE INTO PMS_TRANSFER_FACILITIES USING DUAL ON (OBJID = #{objId})
WHEN MATCHED THEN
UPDATE
SET OEM_OBJID = #{oemObjId}, CAR_OBJID = #{carObjId}, ACCEPTOR = #{acceptor}
WHEN NOT MATCHED THEN
INSERT
(
OBJID
, OEM_OBJID
, CAR_OBJID
, WRITER
, REGDATE
, STATUS
, ACCEPTOR
)
VALUES
(
#{objId}
, #{oemObjId}
, #{carObjId}
, #{writer}
, SYSDATE
, 'create'
, #{acceptor}
)
</update>
<!-- //양산이관(설비) 갑지 목록 -->
<select id="getTransferFacilitiesMasterList" parameterType="map" resultType="map">
SELECT ROWNUM AS RNUM
, BASE_T.*
, CASE WHEN BASE_T.ALL_CNT = 0 THEN 0 ELSE ROUND((TO_NUMBER(BASE_T.APPLY_CNT) / TO_NUMBER(BASE_T.ALL_CNT)) * 100, 0) END AS TAKE_OVER_RATIO
FROM (
SELECT A.OBJID
, A.OEM_OBJID
, (SELECT OEM_NAME FROM OEM_MNG WHERE OBJID = A.OEM_OBJID) AS OEM_NAME
, A.CAR_OBJID
, (SELECT CAR_CODE FROM CAR_MNG WHERE OBJID = A.CAR_OBJID) AS CAR_CODE
, (SELECT CAR_NAME FROM CAR_MNG WHERE OBJID = A.CAR_OBJID) AS CAR_NAME
, A.STATUS AS TAKE_OVER_STATUS
, (SELECT TO_CHAR(CAR.MILESTONE_DATE, 'YYYY-MM-DD') FROM OEM_MILESTONE_MNG OEM, CAR_MILESTONE_MNG CAR WHERE OEM.OBJID = CAR.MILESTONE_OBJID AND OEM.MILESTONE_NAME = 'SOP' AND OEM.OEM_OBJID = A.OEM_OBJID AND CAR.CAR_OBJID = A.CAR_OBJID) AS SOP
, TO_CHAR(A.TAKE_OVER_DATE, 'YYYY-MM-DD') AS TAKE_OVER_DATE
, (SELECT COUNT(*) FROM PMS_TRANSFER_FACILITIES_HIS WHERE TARGET_OBJID = A.OBJID AND IS_LAST = 'Y' AND UPPER(RESULT) IN ('APPLY', 'ACCEPTAPPLY')) AS APPLY_CNT
, (SELECT COUNT(*) FROM PMS_DEV_MASTER DM, PMS_DEV_MASTER_REL_PART_INFO DP, PART_INFO P WHERE DM.OBJID = DP.TARGET_OBJID AND DP.PART_NO = P.PART_NO AND P.IS_LAST = 1 AND P.MATERIAL_TYPE_OBJID = (SELECT OBJID FROM MATERIAL_TYPE_MNG WHERE MATERIAL_TYPE_NAME = '제품') AND DM.OEM_OBJID = A.OEM_OBJID AND DM.CAR_OBJID = A.CAR_OBJID AND UPPER(DEV_POINT) = '2REALISTICPRODUCE') AS ALL_CNT
, A.WRITER
, (SELECT COUNT(*) FROM PMS_PJT_INFO PJT, PMS_REL_PJT_PROD PJT_PROD WHERE PJT.OBJID = PJT_PROD.TARGET_OBJID AND PJT.CAR_OBJID = A.CAR_OBJID) AS PROD_CNT
, (SELECT PJT.OBJID FROM PMS_PJT_INFO PJT WHERE PJT.CAR_OBJID = A.CAR_OBJID) AS PROJECT_OBJID
FROM PMS_TRANSFER_FACILITIES A
WHERE 1=1
) BASE_T
WHERE 1=1
<if test="search_oemObjId != null and !''.equals(search_oemObjId)">
AND BASE_T.OEM_OBJID = #{search_oemObjId}
</if>
<if test="search_carObjId != null and !''.equals(search_carObjId)">
AND BASE_T.CAR_OBJID = #{search_carObjId}
</if>
<if test="search_takeOverStatus != null and !''.equals(search_takeOverStatus)">
AND BASE_T.TAKE_OVER_STATUS = #{search_takeOverStatus}
</if>
<if test="search_takeOverFromDate != null and !''.equals(search_takeOverFromDate)">
AND BASE_T.TAKE_OVER_DATE <![CDATA[>=]]> TO_DATE(#{search_takeOverFromDate}, 'YYYY-MM-DD')
</if>
<if test="search_takeOverToDate != null and !''.equals(search_takeOverToDate)">
AND BASE_T.TAKE_OVER_DATE <![CDATA[<=]]> TO_DATE(#{search_takeOverToDate}, 'YYYY-MM-DD')
</if>
</select>
<!-- //설비이관 메인목록 內 차종별 ASSY 목록 -->
<select id="getTransferFacilitiesAssyList_byCar" parameterType="map" resultType="map">
SELECT AA.*
, (SELECT REAL_FILE_NAME FROM ATTACH_FILE_INFO WHERE TARGET_OBJID = AA.PART_OBJID AND DOC_TYPE = 'PART_SHAPE' AND UPPER(STATUS) = 'ACTIVE') AS PART_IMAGE_REAL_FILE_NAME
, (SELECT SAVED_FILE_NAME FROM ATTACH_FILE_INFO WHERE TARGET_OBJID = AA.PART_OBJID AND DOC_TYPE = 'PART_SHAPE' AND UPPER(STATUS) = 'ACTIVE') AS PART_IMAGE_SAVED_FILE_NAME
, (SELECT REPLACE(FILE_PATH, '\', '\\') FROM ATTACH_FILE_INFO WHERE TARGET_OBJID = AA.PART_OBJID AND DOC_TYPE = 'PART_SHAPE' AND UPPER(STATUS) = 'ACTIVE') AS PART_IMAGE_FILE_PATH
FROM (
SELECT P.PART_NO
, P.PART_NAME
, P.OBJID AS PART_OBJID
, (SELECT PRODUCT_GROUP_NAME FROM PRODUCT_GROUP_MNG WHERE OBJID = (SELECT PRODUCT_GROUP_OBJID FROM PRODUCT_MNG WHERE OBJID = PJT_PROD.SUB_OBJID)) AS PROD_GROUP_NAME
, (SELECT PRODUCT_NAME FROM PRODUCT_MNG WHERE OBJID = PJT_PROD.SUB_OBJID) AS PROD_NAME
, (SELECT COUNT(*) FROM PMS_PROBLEM_INFO WHERE PART_NO IN (SELECT PART_NO FROM PART_BOM_QTY CONNECT BY PRIOR PART_NO = PARENT_PART_NO START WITH PART_NO = P.PART_NO)) AS PROBLEM_ALL_CNT
, (SELECT COUNT(*) FROM PMS_PROBLEM_INFO WHERE PART_NO IN (SELECT PART_NO FROM PART_BOM_QTY CONNECT BY PRIOR PART_NO = PARENT_PART_NO START WITH PART_NO = P.PART_NO) AND UPPER(STATUS) = 'COMPLETE') AS PROBLEM_COMPLETE_CNT
, (SELECT COUNT(*) FROM PMS_PROBLEM_INFO WHERE PART_NO IN (SELECT PART_NO FROM PART_BOM_QTY CONNECT BY PRIOR PART_NO = PARENT_PART_NO START WITH PART_NO = P.PART_NO) AND UPPER(STATUS) = 'CREATE') AS PROBLEM_ONGOING_CNT
FROM PMS_TRANSFER_FACILITIES A, PMS_PJT_INFO PJT, PMS_REL_PJT_PROD PJT_PROD, PART_INFO P
WHERE 1=1
AND A.CAR_OBJID = PJT.CAR_OBJID
AND PJT.OBJID = PJT_PROD.TARGET_OBJID
AND PJT_PROD.SUB_OBJID = P.PRODUCT_OBJID
AND PJT.CAR_OBJID = P.CAR_OBJID
AND P.IS_LAST = 1
AND P.MATERIAL_TYPE_OBJID = (SELECT OBJID FROM MATERIAL_TYPE_MNG WHERE MATERIAL_TYPE_NAME = '제품')
AND A.CAR_OBJID = #{carObjId}
) AA
WHERE 1=1
ORDER BY PART_NO
</select>
<!-- //양산이관(설비) 갑지별 제품목록 -->
<select id="getTransferFacilitiesProductList" parameterType="map" resultType="map">
SELECT
A.*
, (CASE WHEN PROBLEM_COMPLETE_CNT = 0 THEN 0 ELSE (PROBLEM_COMPLETE_CNT / PROBLEM_ALL_CNT)*100 END) AS PROBLEM_COMPLETE_RATIO
, NVL(DOC_TRANSFER_RESULT.DOC_TOTAL_CNT,0) AS DOC_TOTAL_CNT
, NVL(DOC_TRANSFER_RESULT.DOC_PROGRESS_TOTAL_CNT,0) AS DOC_PROGRESS_TOTAL_CNT
, NVL(DOC_TRANSFER_RESULT.DOC_OK_TOTAL_CNT,0) AS DOC_OK_TOTAL_CNT
FROM (
SELECT TRANS.OBJID TRANSFER_OBJID
, PJT.OBJID AS PROJECT_OBJID
, TRANS.OEM_OBJID
, (SELECT OEM_NAME FROM OEM_MNG WHERE OBJID = TRANS.OEM_OBJID) AS OEM_NAME
, TRANS.CAR_OBJID
, (SELECT CAR_NAME FROM CAR_MNG WHERE OBJID = TRANS.CAR_OBJID) AS CAR_NAME
, (SELECT CAR_CODE FROM CAR_MNG WHERE OBJID = TRANS.CAR_OBJID) AS CAR_CODE
, (SELECT PRODUCT_GROUP_OBJID FROM PRODUCT_MNG WHERE OBJID = PJT_PROD.SUB_OBJID) AS PROD_GROUP_OBJID
, (SELECT PRODUCT_GROUP_NAME FROM PRODUCT_GROUP_MNG WHERE OBJID = (SELECT PRODUCT_GROUP_OBJID FROM PRODUCT_MNG WHERE OBJID = PJT_PROD.SUB_OBJID)) AS PROD_GROUP_NAME
, PJT_PROD.SUB_OBJID AS PROD_OBJID
, (SELECT PRODUCT_NAME FROM PRODUCT_MNG WHERE OBJID = PJT_PROD.SUB_OBJID) AS PROD_NAME
, (SELECT COUNT(*) FROM PMS_PROBLEM_GROUP G, PMS_PROBLEM_INFO P WHERE G.OBJID = P.TARGET_OBJID AND G.TEST_TYPE_OBJID = (SELECT OBJID FROM TEST_TYPE_MNG WHERE TEST_TYPE_NAME = '설비 이관검사') AND G.CAR_OBJID = TRANS.CAR_OBJID AND G.PROD_OBJID = PJT_PROD.SUB_OBJID) AS PROBLEM_ALL_CNT
, (SELECT COUNT(*) FROM PMS_PROBLEM_GROUP G, PMS_PROBLEM_INFO P WHERE G.OBJID = P.TARGET_OBJID AND G.TEST_TYPE_OBJID = (SELECT OBJID FROM TEST_TYPE_MNG WHERE TEST_TYPE_NAME = '설비 이관검사') AND G.CAR_OBJID = TRANS.CAR_OBJID AND G.PROD_OBJID = PJT_PROD.SUB_OBJID AND UPPER(P.STATUS) = 'COMPLETE') AS PROBLEM_COMPLETE_CNT
, (SELECT COUNT(*) FROM PMS_PROBLEM_GROUP G, PMS_PROBLEM_INFO P WHERE G.OBJID = P.TARGET_OBJID AND G.TEST_TYPE_OBJID = (SELECT OBJID FROM TEST_TYPE_MNG WHERE TEST_TYPE_NAME = '설비 이관검사') AND G.CAR_OBJID = TRANS.CAR_OBJID AND G.PROD_OBJID = PJT_PROD.SUB_OBJID AND UPPER(P.STATUS) = 'CREATE') AS PROBLEM_ONGOING_CNT
, (SELECT WM_CONCAT(DISTINCT RESULT) FROM PMS_TRANSFER_FACILITIES_HIS WHERE TARGET_OBJID = TRANS.OBJID AND PROD_OBJID = PJT_PROD.SUB_OBJID) AS RESULT_CONCAT
, (SELECT TO_CHAR(REGDATE, 'YYYY-MM-DD') FROM (SELECT A.CAR_OBJID, B.PROD_OBJID, B.REGDATE FROM PMS_TRANSFER_FACILITIES A, PMS_TRANSFER_FACILITIES_HIS B WHERE 1=1 AND A.OBJID = B.TARGET_OBJID AND B.IS_LAST = 'Y' ORDER BY B.REGDATE DESC) WHERE CAR_OBJID = TRANS.CAR_OBJID AND PROD_OBJID = PJT_PROD.SUB_OBJID AND ROWNUM = 1) AS LAST_DATE
FROM PMS_TRANSFER_FACILITIES TRANS, PMS_PJT_INFO PJT, PMS_REL_PJT_PROD PJT_PROD
WHERE 1=1
AND TRANS.CAR_OBJID = PJT.CAR_OBJID
AND PJT.OBJID = PJT_PROD.TARGET_OBJID
AND TRANS.OBJID = #{objId}
) A,
(
SELECT
CAR_OBJID,
PRODUCT_GROUP_OBJID,
CASE WHEN SUM(CNT) != 0 THEN ROUND((SUM(OK_CNT)/SUM(CNT))*100,0) ELSE 0 END OK_RATIO,
SUM(CNT) AS DOC_TOTAL_CNT,
SUM(OK_CNT) AS DOC_OK_TOTAL_CNT,
SUM(PROGRESS_CNT) AS DOC_PROGRESS_TOTAL_CNT
FROM(
SELECT
OBJID,
CAR_OBJID,
(SELECT PRODUCT_GROUP_OBJID FROM PRODUCT_MNG WHERE OBJID = PRODUCT_OBJID) AS PRODUCT_GROUP_OBJID,
PRODUCT_OBJID,
DOC_OBJID,
(SELECT TRANSLATE_TYPE FROM PMS_TRANSLATE_DOC_MNG WHERE OBJID = DOC_OBJID) AS TRANSLATE_TYPE,
STATUS,
1 AS CNT,
CASE WHEN UPPER(STATUS) = 'OK' THEN 1 ELSE 0 END OK_CNT,
CASE WHEN STATUS IS NULL THEN 1 ELSE 0 END PROGRESS_CNT
FROM PMS_TRANS_DOC_INFO
)WHERE UPPER(TRANSLATE_TYPE) = 'FACILITY'
GROUP BY CAR_OBJID,PRODUCT_GROUP_OBJID
)DOC_TRANSFER_RESULT
WHERE 1=1
AND A.CAR_OBJID = DOC_TRANSFER_RESULT.CAR_OBJID(+)
AND A.PROD_GROUP_OBJID = DOC_TRANSFER_RESULT.PRODUCT_GROUP_OBJID(+)
ORDER BY PROD_NAME
</select>
<!-- //양산이관(설비) 차종, 제품별 ASSY part목록 -->
<select id="getTransferFacilitiesPartList_byProduct" parameterType="map" resultType="map">
SELECT TRANS.OBJID AS TRANSFER_OBJID
, PART.OBJID AS PART_OBJID
, PART.EO_OBJID AS EO_OBJID
, TRANS.OEM_OBJID AS OEM_OBJID
, (SELECT OEM_NAME FROM OEM_MNG WHERE OBJID = TRANS.OEM_OBJID) AS OEM_NAME
, TRANS.CAR_OBJID AS CAR_OBJID
, (SELECT CAR_NAME FROM CAR_MNG WHERE OBJID = TRANS.CAR_OBJID) AS CAR_NAME
, (SELECT CAR_CODE FROM CAR_MNG WHERE OBJID = TRANS.CAR_OBJID) AS CAR_CODE
, (SELECT MODEL_CODE FROM CAR_MNG WHERE OBJID = TRANS.CAR_OBJID) AS MODEL_CODE
, PART.PRODUCT_GROUP_OBJID AS PROD_GROUP_OBJID
, (SELECT PRODUCT_GROUP_NAME FROM PRODUCT_GROUP_MNG WHERE OBJID = PART.PRODUCT_GROUP_OBJID) AS PROD_GROUP_NAME
, PART.PRODUCT_OBJID AS PROD_OBJID
, (SELECT PRODUCT_NAME FROM PRODUCT_MNG WHERE OBJID = PART.PRODUCT_OBJID) AS PROD_NAME
, PART.PART_NO AS PART_NO
, PART.PART_NAME AS PART_NAME
, (SELECT REAL_FILE_NAME FROM ATTACH_FILE_INFO WHERE TARGET_OBJID = PART.OBJID AND DOC_TYPE = 'PART_SHAPE' AND UPPER(STATUS) = 'ACTIVE') AS PART_IMAGE_REAL_FILE_NAME
, (SELECT SAVED_FILE_NAME FROM ATTACH_FILE_INFO WHERE TARGET_OBJID = PART.OBJID AND DOC_TYPE = 'PART_SHAPE' AND UPPER(STATUS) = 'ACTIVE') AS PART_IMAGE_SAVED_FILE_NAME
, (SELECT REPLACE(FILE_PATH, '\', '\\') FROM ATTACH_FILE_INFO WHERE TARGET_OBJID = PART.OBJID AND DOC_TYPE = 'PART_SHAPE' AND UPPER(STATUS) = 'ACTIVE') AS PART_IMAGE_FILE_PATH
, (SELECT COUNT(*) FROM PMS_PROBLEM_INFO WHERE PART_NO IN (SELECT PART_NO FROM PART_BOM_QTY CONNECT BY PRIOR PART_NO = PARENT_PART_NO START WITH PART_NO = PART.PART_NO)) AS PROBLEM_ALL_CNT
, (SELECT COUNT(*) FROM PMS_PROBLEM_INFO WHERE PART_NO IN (SELECT PART_NO FROM PART_BOM_QTY CONNECT BY PRIOR PART_NO = PARENT_PART_NO START WITH PART_NO = PART.PART_NO) AND UPPER(STATUS) = 'COMPLETE') AS PROBLEM_COMPLETE_CNT
, (SELECT COUNT(*) FROM PMS_PROBLEM_INFO WHERE PART_NO IN (SELECT PART_NO FROM PART_BOM_QTY CONNECT BY PRIOR PART_NO = PARENT_PART_NO START WITH PART_NO = PART.PART_NO) AND UPPER(STATUS) = 'CREATE') AS PROBLEM_ONGOING_CNT
, (SELECT OBJID FROM PMS_TRANSFER_FACILITIES_HIS WHERE TARGET_OBJID = TRANS.OBJID AND UPPER(IS_LAST) = 'Y' AND PART_NO = PART.PART_NO) AS HIS_OBJID
, (SELECT RESULT FROM PMS_TRANSFER_FACILITIES_HIS WHERE TARGET_OBJID = TRANS.OBJID AND UPPER(IS_LAST) = 'Y' AND PART_NO = PART.PART_NO) AS RESULT
, (SELECT WRITER FROM PMS_TRANSFER_FACILITIES_HIS WHERE TARGET_OBJID = TRANS.OBJID AND UPPER(IS_LAST) = 'Y' AND PART_NO = PART.PART_NO) AS HIS_WRITER
, (SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = (SELECT WRITER FROM PMS_TRANSFER_FACILITIES_HIS WHERE TARGET_OBJID = TRANS.OBJID AND UPPER(IS_LAST) = 'Y' AND PART_NO = PART.PART_NO)) AS HIS_WRITER_DEPT_NAME
, (SELECT USER_NAME FROM USER_INFO WHERE USER_ID = (SELECT WRITER FROM PMS_TRANSFER_FACILITIES_HIS WHERE TARGET_OBJID = TRANS.OBJID AND UPPER(IS_LAST) = 'Y' AND PART_NO = PART.PART_NO)) AS HIS_WRITER_USER_NAME
, (SELECT TO_CHAR(REGDATE, 'YYYY-MM-DD') FROM PMS_TRANSFER_FACILITIES_HIS WHERE TARGET_OBJID = TRANS.OBJID AND UPPER(IS_LAST) = 'Y' AND PART_NO = PART.PART_NO) AS HIS_REGDATE
FROM PART_INFO PART, PMS_TRANSFER_FACILITIES TRANS
WHERE 1=1
AND PART.CAR_OBJID = TRANS.CAR_OBJID
AND PART.MATERIAL_TYPE_OBJID = (SELECT OBJID FROM MATERIAL_TYPE_MNG WHERE MATERIAL_TYPE_NAME = '제품')
AND PART.IS_LAST = 1
AND TRANS.OBJID = #{objId}
AND PART.PRODUCT_OBJID = #{prodObjId}
ORDER BY PART.PART_NO, EO_ISSUE_DATE
</select>
<!-- //양산이관(설비) 인수결정 history 목록조회 -->
<select id="getTransferFacilitiesTakeOverHistoryList" parameterType="map" resultType="map">
SELECT ROWNUM AS RNUM
, AA.*
FROM (
SELECT A.OBJID
, A.TARGET_OBJID
, A.PART_NO
, A.RESULT
, A.REASON
, A.DESCRIPTION
, A.REGDATE AS REGDATE_ORG
, TO_CHAR(A.REGDATE, 'YYYY-MM-DD') AS REGDATE
, A.WRITER
, (SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = A.WRITER) AS WRITER_DEPT_NAME
, (SELECT USER_NAME FROM USER_INFO WHERE USER_ID = A.WRITER) AS WRITER_USER_NAME
, A.IS_LAST
FROM PMS_TRANSFER_FACILITIES_HIS A
WHERE 1=1
AND TARGET_OBJID = #{targetObjId}
AND UPPER(PART_NO) = UPPER(#{partNo})
ORDER BY REGDATE_ORG DESC
) AA
</select>
<!-- //targetObjId별 최종 이력 결과값 조회 -->
<select id="getTransferFacilitiesLastResult" parameterType="map" resultType="map">
SELECT RESULT
FROM PMS_TRANSFER_FACILITIES_HIS
WHERE 1=1
AND TARGET_OBJID = #{targetObjId}
AND UPPER(PART_NO) = UPPER(#{partNo})
AND UPPER(IS_LAST) = 'Y'
</select>
<!-- //양산이관(설비) 인수이력 isLast 수정 -->
<update id="updateTransferFacilitiesPartHistory_LastValue" parameterType="map">
UPDATE PMS_TRANSFER_FACILITIES_HIS SET IS_LAST = 'N' WHERE TARGET_OBJID = #{targetObjId} AND PART_NO = #{partNo}
</update>
<!-- //양산이관(설비) 인수이력 등록 -->
<insert id="registTransferFacilitiesPartHistory" parameterType="map">
INSERT INTO PMS_TRANSFER_FACILITIES_HIS(
OBJID
, TARGET_OBJID
, PROD_GROUP_OBJID
, PROD_OBJID
, PART_NO
, RESULT
, REASON
, DESCRIPTION
, REGDATE
, WRITER
, IS_LAST
) VALUES (
#{objId}
, #{targetObjId}
, (SELECT PRODUCT_GROUP_OBJID FROM PART_INFO WHERE PART_NO = #{partNo} AND IS_LAST = 1 AND UPPER(STATUS) = 'COMPLETE')
, (SELECT PRODUCT_OBJID FROM PART_INFO WHERE PART_NO = #{partNo} AND IS_LAST = 1 AND UPPER(STATUS) = 'COMPLETE')
, #{partNo}
, #{result}
, #{reason}
, #{description}
, SYSDATE
, #{writer}
, 'Y'
)
</insert>
<!-- //JMPARK END -->
<!-- euidon start -->
<!-- //양산이관(금형) 갑지 목록 -->
<select id="getTransferDocMasterList" parameterType="map" resultType="map">
SELECT
ROWNUM AS RNUM,
BASE_T.*,
INFO.COMPLETE_RATIO,
INFO.TRANSFER_STATUS,
INFO.TRANSFER_DATE
FROM (
SELECT
A.OBJID
, A.OEM_OBJID
, (SELECT OEM_NAME FROM OEM_MNG WHERE OBJID = A.OEM_OBJID) AS OEM_NAME
, A.CAR_OBJID
, (SELECT CAR_CODE FROM CAR_MNG WHERE OBJID = A.CAR_OBJID) AS CAR_CODE
, (SELECT CAR_NAME FROM CAR_MNG WHERE OBJID = A.CAR_OBJID) AS CAR_NAME
, A.STATUS AS TAKE_OVER_STATUS
, (SELECT TO_CHAR(CAR.MILESTONE_DATE, 'YYYY-MM-DD') FROM OEM_MILESTONE_MNG OEM, CAR_MILESTONE_MNG CAR WHERE OEM.OBJID = CAR.MILESTONE_OBJID AND OEM.MILESTONE_NAME = 'SOP' AND OEM.OEM_OBJID = A.OEM_OBJID AND CAR.CAR_OBJID = A.CAR_OBJID) AS SOP
, TO_CHAR(TAKE_OVER_DATE, 'YYYY-MM-DD') AS TAKE_OVER_DATE
, A.WRITER
,(SELECT COUNT(1) FROM PMS_REL_PJT_PROD WHERE TARGET_OBJID = PJT.OBJID) AS PROD_CNT
FROM
PMS_TRANSFER_DOC A,
PMS_PJT_INFO PJT
WHERE 1=1
AND A.CAR_OBJID = PJT.CAR_OBJID
AND UPPER(PJT.STATUS) = 'CONFIRM'
) BASE_T,
(
SELECT
DOC_INFO_TARGET_OBJID,
CASE WHEN SUM(TOTAL_CNT) != 0 AND SUM(OK_CNT) != 0 THEN ROUND((SUM(OK_CNT)/SUM(TOTAL_CNT))*100,0) ELSE 0 END COMPLETE_RATIO,
SUM(TOTAL_CNT) AS TOTAL_CNT,
SUM(OK_CNT) AS OK_CNT,
SUM(NG_CNT) AS NG_CNT,
SUM(PROCEEDING_CNT) AS PROCEEDING_CNT,
NVL2(MAX(TRANSFER_DATE),MAX(TO_CHAR(TRANSFER_DATE,'YYYY-MM-DD')),'') AS TRANSFER_DATE,
CASE
WHEN SUM(TOTAL_CNT) = (SUM(OK_CNT)+SUM(NG_CNT)) THEN 'OK'
WHEN SUM(TOTAL_CNT) != (SUM(OK_CNT)+SUM(NG_CNT)) THEN 'PROCEEDING'
ELSE ''
END TRANSFER_STATUS
FROM
(
SELECT
INFO.DOC_INFO_OBJID,
INFO.DOC_INFO_TARGET_OBJID,
INFO.DOC_INFO_PRODUCT_OBJID,
INFO.DOC_INFO_DOC_OBJID,
INFO.TRANSFER_DATE,
CASE WHEN INFO.TOTAL_TARGET_CNT = INFO.TOTAL_OK_CNT THEN 1 ELSE 0 END OK_CNT,
CASE WHEN INFO.TOTAL_TARGET_CNT = (INFO.TOTAL_OK_CNT+INFO.TOTAL_NG_CNT) AND INFO.TOTAL_NG_CNT > 0 THEN 1 ELSE 0 END NG_CNT,
CASE WHEN INFO.TOTAL_TARGET_CNT != (INFO.TOTAL_OK_CNT+INFO.TOTAL_NG_CNT) THEN 1 ELSE 0 END PROCEEDING_CNT,
1 TOTAL_CNT
FROM (
SELECT
DOC_INFO.OBJID AS DOC_INFO_OBJID,
DOC_INFO.TARGET_OBJID AS DOC_INFO_TARGET_OBJID,
DOC_INFO.PRODUCT_OBJID AS DOC_INFO_PRODUCT_OBJID,
DOC_INFO.DOC_OBJID AS DOC_INFO_DOC_OBJID,
DOC_INFO.TRANSFER_DATE,
CASE WHEN UPPER(BASE_DOC.IS_PRODUCTION) = 'TARGET' THEN 1 ELSE 0 END
+ CASE WHEN UPPER(BASE_DOC.IS_PRODUCT_MNG) = 'TARGET' THEN 1 ELSE 0 END
+ CASE WHEN UPPER(BASE_DOC.IS_INTEGRITY) = 'TARGET' THEN 1 ELSE 0 END
+ CASE WHEN UPPER(BASE_DOC.IS_COMPONENT_BUY) = 'TARGET' THEN 1 ELSE 0 END
+ CASE WHEN UPPER(BASE_DOC.IS_PRODUCT_QUALITY) = 'TARGET' THEN 1 ELSE 0 END
AS TOTAL_TARGET_CNT,
CASE WHEN UPPER(BASE_DOC.IS_PRODUCTION) = 'TARGET' AND (UPPER(DOC_INFO.PRODUCTION_STATUS) = 'OK' OR UPPER(DOC_INFO.PRODUCTION_STATUS) = 'ACCEPTOK') THEN 1 ELSE 0 END
+ CASE WHEN UPPER(BASE_DOC.IS_PRODUCT_MNG) = 'TARGET' AND (UPPER(DOC_INFO.PRODUCT_MNG_STATUS) = 'OK' OR UPPER(DOC_INFO.PRODUCT_MNG_STATUS) = 'ACCEPTOK') THEN 1 ELSE 0 END
+ CASE WHEN UPPER(BASE_DOC.IS_INTEGRITY) = 'TARGET' AND (UPPER(DOC_INFO.INTEGRITY_STATUS) = 'OK' OR UPPER(DOC_INFO.INTEGRITY_STATUS) = 'ACCEPTOK') THEN 1 ELSE 0 END
+ CASE WHEN UPPER(BASE_DOC.IS_COMPONENT_BUY) = 'TARGET' AND (UPPER(DOC_INFO.COMPONENT_BUY_STATUS) = 'OK' OR UPPER(DOC_INFO.COMPONENT_BUY_STATUS) = 'ACCEPTOK') THEN 1 ELSE 0 END
+ CASE WHEN UPPER(BASE_DOC.IS_PRODUCT_QUALITY) = 'TARGET' AND (UPPER(DOC_INFO.PRODUCT_QUALITY_STATUS) = 'OK' OR UPPER(DOC_INFO.PRODUCT_QUALITY_STATUS) = 'ACCEPTOK') THEN 1 ELSE 0 END
AS TOTAL_OK_CNT,
CASE WHEN UPPER(BASE_DOC.IS_PRODUCTION) = 'TARGET' AND UPPER(DOC_INFO.PRODUCTION_STATUS) = 'NG' THEN 1 ELSE 0 END
+ CASE WHEN UPPER(BASE_DOC.IS_PRODUCT_MNG) = 'TARGET' AND UPPER(DOC_INFO.PRODUCT_MNG_STATUS) = 'NG' THEN 1 ELSE 0 END
+ CASE WHEN UPPER(BASE_DOC.IS_INTEGRITY) = 'TARGET' AND UPPER(DOC_INFO.INTEGRITY_STATUS) = 'NG' THEN 1 ELSE 0 END
+ CASE WHEN UPPER(BASE_DOC.IS_COMPONENT_BUY) = 'TARGET' AND UPPER(DOC_INFO.COMPONENT_BUY_STATUS) = 'NG' THEN 1 ELSE 0 END
+ CASE WHEN UPPER(BASE_DOC.IS_PRODUCT_QUALITY) = 'TARGET' AND UPPER(DOC_INFO.PRODUCT_QUALITY_STATUS) = 'NG' THEN 1 ELSE 0 END
AS TOTAL_NG_CNT
FROM
PMS_TRANS_DOC_INFO DOC_INFO,
PMS_TRANSLATE_DOC_MNG BASE_DOC
WHERE DOC_INFO.DOC_OBJID = BASE_DOC.OBJID
)INFO
)INFO
GROUP BY DOC_INFO_TARGET_OBJID
)INFO
WHERE 1=1
AND BASE_T.OBJID = INFO.DOC_INFO_TARGET_OBJID(+)
<if test="search_oemObjId != null and !''.equals(search_oemObjId)">
AND BASE_T.OEM_OBJID = #{search_oemObjId}
</if>
<if test="search_carObjId != null and !''.equals(search_carObjId)">
AND BASE_T.CAR_OBJID = #{search_carObjId}
</if>
<if test="search_takeOverStatus != null and !''.equals(search_takeOverStatus)">
AND BASE_T.TAKE_OVER_STATUS = #{search_takeOverStatus}
</if>
<if test="search_takeOverFromDate != null and !''.equals(search_takeOverFromDate)">
AND BASE_T.TAKE_OVER_DATE <![CDATA[>=]]> TO_DATE(#{search_takeOverFromDate}, 'YYYY-MM-DD')
</if>
<if test="search_takeOverToDate != null and !''.equals(search_takeOverToDate)">
AND BASE_T.TAKE_OVER_DATE <![CDATA[<=]]> TO_DATE(#{search_takeOverToDate}, 'YYYY-MM-DD')
</if>
</select>
<!-- //양산이관(문서) 갑지 조회 -->
<select id="getTransferDocMasterInfo" parameterType="map" resultType="map">
SELECT ROWNUM AS RNUM
, BASE_T.*
FROM (
SELECT A.OBJID
, A.OEM_OBJID
, (SELECT OEM_NAME FROM OEM_MNG WHERE OBJID = A.OEM_OBJID) AS OEM_NAME
, A.CAR_OBJID
, (SELECT CAR_CODE FROM CAR_MNG WHERE OBJID = A.CAR_OBJID) AS CAR_CODE
, (SELECT CAR_NAME FROM CAR_MNG WHERE OBJID = A.CAR_OBJID) AS CAR_NAME
, '0' AS TAKE_OVER_RATIO
, '진행중' AS TAKE_OVER_STATUS
, (SELECT TO_CHAR(CAR.MILESTONE_DATE, 'YYYY-MM-DD') FROM OEM_MILESTONE_MNG OEM, CAR_MILESTONE_MNG CAR WHERE OEM.OBJID = CAR.MILESTONE_OBJID AND OEM.MILESTONE_NAME = 'SOP' AND OEM.OEM_OBJID = A.OEM_OBJID AND CAR.CAR_OBJID = A.CAR_OBJID) AS SOP
, '9999-99-99' TAKE_OVER_DATE
FROM PMS_TRANSFER_DOC A
WHERE 1=1
) BASE_T
WHERE 1=1
AND BASE_T.OBJID = #{objId}
</select>
<!-- 양산이관(문서) 갑지 저장 시 중복여부 검사 -->
<select id="checkTransferDocDuplicateMaster" parameterType="map" resultType="map">
SELECT COUNT(1) CNT
FROM (
SELECT A.OBJID
, A.OEM_OBJID
, A.CAR_OBJID
FROM PMS_TRANSFER_DOC A
WHERE 1=1
) BASE_T
WHERE 1=1
AND BASE_T.OBJID != #{objId}
AND BASE_T.OEM_OBJID = #{oemObjId}
AND BASE_T.CAR_OBJID = #{carObjId}
</select>
<!-- //양산이관(문서) 갑지 저장 -->
<update id="saveTransferDocMasterInfo" parameterType="map">
MERGE INTO PMS_TRANSFER_DOC USING DUAL ON (OBJID = #{objId})
WHEN MATCHED THEN
UPDATE
SET OEM_OBJID = #{oemObjId},
CAR_OBJID = #{carObjId}
WHEN NOT MATCHED THEN
INSERT
(
OBJID
, OEM_OBJID
, CAR_OBJID
, WRITER
, REGDATE
, STATUS
)
VALUES
(
#{objId}
, #{oemObjId}
, #{carObjId}
, #{writer}
, SYSDATE
, 'create'
)
</update>
<!-- 문서이관 기준정보 목록을 가져온다. -->
<select id="getTransferDocBaseList" parameterType="map" resultType="map">
SELECT A.*,ROW_NUMBER() OVER(ORDER BY SEQ ASC NULLS LAST) RNUM
FROM(
SELECT
OBJID,
DOC_TITLE,
DOC_TYPE,
DECODE(TRANSLATE_TYPE, 'facility', '설계', 'quality', '품질', 'etc', '기타', TRANSLATE_TYPE) TRANSLATE_TYPE_TITLE,
TRANSLATE_TYPE,
CASE
WHEN UPPER(DOC_TYPE) = 'FILE' THEN '파일'
WHEN UPPER(DOC_TYPE) = 'OUTPUT' THEN '출력'
ELSE ''
END DOC_TYPE_TITLE,
IS_PRODUCTION,
CASE
WHEN UPPER(IS_PRODUCTION) = 'TARGET' THEN '대상'
WHEN UPPER(IS_PRODUCTION) = 'NONTARGET' THEN '비대상'
ELSE ''
END IS_PRODUCTION_TITLE,
IS_PRODUCT_MNG,
CASE
WHEN UPPER(IS_PRODUCT_MNG) = 'TARGET' THEN '대상'
WHEN UPPER(IS_PRODUCT_MNG) = 'NONTARGET' THEN '비대상'
ELSE ''
END IS_PRODUCT_MNG_TITLE,
IS_INTEGRITY,
CASE
WHEN UPPER(IS_INTEGRITY) = 'TARGET' THEN '대상'
WHEN UPPER(IS_INTEGRITY) = 'NONTARGET' THEN '비대상'
ELSE ''
END IS_INTEGRITY_TITLE,
IS_COMPONENT_BUY,
CASE
WHEN UPPER(IS_COMPONENT_BUY) = 'TARGET' THEN '대상'
WHEN UPPER(IS_COMPONENT_BUY) = 'NONTARGET' THEN '비대상'
ELSE ''
END IS_COMPONENT_BUY_TITLE,
IS_PRODUCT_QUALITY,
CASE
WHEN UPPER(IS_PRODUCT_QUALITY) = 'TARGET' THEN '대상'
WHEN UPPER(IS_PRODUCT_QUALITY) = 'NONTARGET' THEN '비대상'
ELSE ''
END IS_PRODUCT_QUALITY_TITLE,
TO_CHAR(REGDATE,'YYYY-MM-DD') REGDATE,
REGDATE REGDATE_ORG,
SEQ,
STATUS,
DECODE (UPPER(STATUS), 'ACTIVE', '활성화', 'INACTIVE', '비활성화', STATUS) STATUS_STR,
HAND_OVER_DEPT,
(SELECT DEPT_NAME FROM DEPT_INFO WHERE DEPT_CODE = HAND_OVER_DEPT) AS HAND_OVER_DEPT_NAME,
WRITER,
(SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = WRITER) AS DEPT_NAME,
(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = WRITER) AS USER_NAME,
(SELECT COUNT(1) FROM PMS_TRANS_DOC_INFO WHERE TARGET_OBJID = #{objId} AND DOC_OBJID = DOC_MNG.OBJID) AS REL_CNT
FROM PMS_TRANSLATE_DOC_MNG DOC_MNG
WHERE 1=1
AND UPPER(STATUS) = 'ACTIVE'
)A WHERE 1=1
</select>
<!-- 문서이관 갑지에 문서 기준정보를 연결한다. -->
<update id="applyBaseDocInfo" parameterType="map">
MERGE INTO PMS_TRANS_DOC_INFO USING DUAL ON (TARGET_OBJID = #{targetObjId} AND DOC_OBJID = #{docObjId} AND PRODUCT_OBJID = #{productObjId} AND CAR_OBJID = #{carObjId})
WHEN NOT MATCHED THEN
INSERT
(
OBJID,
TARGET_OBJID,
CAR_OBJID,
PRODUCT_OBJID,
DOC_OBJID
)
VALUES
(
#{objId},
#{targetObjId},
#{carObjId},
#{productObjId},
#{docObjId}
)
</update>
<delete id="deleteNonTargetDocInfo" parameterType="map">
DELETE PMS_TRANS_DOC_INFO WHERE TARGET_OBJID = #{targetObjId} AND DOC_OBJID = #{docObjId}
</delete>
<!-- 차종별 제품별 이관 내용을 가져온다. -->
<select id="getTransferDocProductList" parameterType="map" resultType="map">
SELECT
OBJID,
OEM_OBJID,
(SELECT OEM_NAME FROM OEM_MNG WHERE OBJID = (SELECT OEM_OBJID FROM CAR_MNG WHERE OBJID = CAR_OBJID)) AS OEM_NAME,
CAR_OBJID,
(SELECT CAR_CODE FROM CAR_MNG WHERE OBJID = CAR_OBJID) AS CAR_CODE,
PROD_GROUP_OBJID,
(SELECT PRODUCT_GROUP_NAME FROM PRODUCT_GROUP_MNG WHERE OBJID = (SELECT PRODUCT_GROUP_OBJID FROM PRODUCT_MNG WHERE OBJID = PROD_OBJID)) PROD_GROUP_NAME,
PROD_OBJID,
(SELECT PRODUCT_NAME FROM PRODUCT_MNG WHERE OBJID = PROD_OBJID) AS PROD_NAME,
CASE WHEN SUM(TOTAL_CNT) != 0 AND SUM(OK_CNT) != 0 THEN ROUND((SUM(OK_CNT)/SUM(TOTAL_CNT))*100,0) ELSE 0 END COMPLETE_RATIO,
SUM(TOTAL_CNT) AS TOTAL_CNT,
SUM(OK_CNT) AS OK_CNT,
SUM(NG_CNT) AS NG_CNT,
SUM(PROCEEDING_CNT) AS PROCEEDING_CNT,
NVL2(MAX(TRANSFER_DATE),MAX(TO_CHAR(TRANSFER_DATE,'YYYY-MM-DD')),'') AS TRANSFER_DATE,
CASE
WHEN SUM(TOTAL_CNT) = (SUM(OK_CNT)+SUM(NG_CNT)) THEN 'OK'
WHEN SUM(TOTAL_CNT) != (SUM(OK_CNT)+SUM(NG_CNT)) THEN 'PROCEEDING'
ELSE ''
END TRANSFER_STATUS
FROM
(
SELECT
DOC.OBJID,
(SELECT OEM_NAME FROM OEM_MNG WHERE OBJID = (SELECT OEM_OBJID FROM CAR_MNG WHERE OBJID = PJT.CAR_OBJID)) AS OEM_NAME,
(SELECT CAR_CODE FROM CAR_MNG WHERE OBJID = PJT.CAR_OBJID) AS CAR_CODE,
(SELECT PRODUCT_GROUP_NAME FROM PRODUCT_GROUP_MNG WHERE OBJID = (SELECT PRODUCT_GROUP_OBJID FROM PRODUCT_MNG WHERE OBJID = PROD_PJT.SUB_OBJID)) PROD_GROUP_NAME,
(SELECT PRODUCT_NAME FROM PRODUCT_MNG WHERE OBJID = PROD_PJT.SUB_OBJID) AS PROD_NAME,
(SELECT OEM_OBJID FROM CAR_MNG WHERE OBJID = PJT.CAR_OBJID) AS OEM_OBJID,
PJT.CAR_OBJID,
(SELECT PRODUCT_GROUP_OBJID FROM PRODUCT_MNG WHERE OBJID = PROD_PJT.SUB_OBJID) PROD_GROUP_OBJID,
PROD_PJT.SUB_OBJID AS PROD_OBJID
FROM
PMS_PJT_INFO PJT,
PMS_REL_PJT_PROD PROD_PJT,
PMS_TRANSFER_DOC DOC
WHERE PJT.OBJID = PROD_PJT.TARGET_OBJID
AND DOC.CAR_OBJID = PJT.CAR_OBJID
)PRODUCT_INFO,
(
SELECT
INFO.DOC_INFO_OBJID,
INFO.DOC_INFO_TARGET_OBJID,
INFO.DOC_INFO_PRODUCT_OBJID,
INFO.DOC_INFO_DOC_OBJID,
INFO.TRANSFER_DATE,
CASE WHEN INFO.TOTAL_TARGET_CNT = INFO.TOTAL_OK_CNT THEN 1 ELSE 0 END OK_CNT,
CASE WHEN INFO.TOTAL_TARGET_CNT = (INFO.TOTAL_OK_CNT+INFO.TOTAL_NG_CNT) AND INFO.TOTAL_NG_CNT > 0 THEN 1 ELSE 0 END NG_CNT,
CASE WHEN INFO.TOTAL_TARGET_CNT != (INFO.TOTAL_OK_CNT+INFO.TOTAL_NG_CNT) THEN 1 ELSE 0 END PROCEEDING_CNT,
1 TOTAL_CNT
FROM (
SELECT
DOC_INFO.OBJID AS DOC_INFO_OBJID,
DOC_INFO.TARGET_OBJID AS DOC_INFO_TARGET_OBJID,
DOC_INFO.PRODUCT_OBJID AS DOC_INFO_PRODUCT_OBJID,
DOC_INFO.DOC_OBJID AS DOC_INFO_DOC_OBJID,
DOC_INFO.TRANSFER_DATE,
CASE WHEN UPPER(BASE_DOC.IS_PRODUCTION) = 'TARGET' THEN 1 ELSE 0 END
+ CASE WHEN UPPER(BASE_DOC.IS_PRODUCT_MNG) = 'TARGET' THEN 1 ELSE 0 END
+ CASE WHEN UPPER(BASE_DOC.IS_INTEGRITY) = 'TARGET' THEN 1 ELSE 0 END
+ CASE WHEN UPPER(BASE_DOC.IS_COMPONENT_BUY) = 'TARGET' THEN 1 ELSE 0 END
+ CASE WHEN UPPER(BASE_DOC.IS_PRODUCT_QUALITY) = 'TARGET' THEN 1 ELSE 0 END
AS TOTAL_TARGET_CNT,
CASE WHEN UPPER(BASE_DOC.IS_PRODUCTION) = 'TARGET' AND (UPPER(DOC_INFO.PRODUCTION_STATUS) = 'OK' OR UPPER(DOC_INFO.PRODUCTION_STATUS) = 'ACCEPTOK') THEN 1 ELSE 0 END
+ CASE WHEN UPPER(BASE_DOC.IS_PRODUCT_MNG) = 'TARGET' AND (UPPER(DOC_INFO.PRODUCT_MNG_STATUS) = 'OK' OR UPPER(DOC_INFO.PRODUCT_MNG_STATUS) = 'ACCEPTOK') THEN 1 ELSE 0 END
+ CASE WHEN UPPER(BASE_DOC.IS_INTEGRITY) = 'TARGET' AND (UPPER(DOC_INFO.INTEGRITY_STATUS) = 'OK' OR UPPER(DOC_INFO.INTEGRITY_STATUS) = 'ACCEPTOK') THEN 1 ELSE 0 END
+ CASE WHEN UPPER(BASE_DOC.IS_COMPONENT_BUY) = 'TARGET' AND (UPPER(DOC_INFO.COMPONENT_BUY_STATUS) = 'OK' OR UPPER(DOC_INFO.COMPONENT_BUY_STATUS) = 'ACCEPTOK') THEN 1 ELSE 0 END
+ CASE WHEN UPPER(BASE_DOC.IS_PRODUCT_QUALITY) = 'TARGET' AND (UPPER(DOC_INFO.PRODUCT_QUALITY_STATUS) = 'OK' OR UPPER(DOC_INFO.PRODUCT_QUALITY_STATUS) = 'ACCEPTOK') THEN 1 ELSE 0 END
AS TOTAL_OK_CNT,
CASE WHEN UPPER(BASE_DOC.IS_PRODUCTION) = 'TARGET' AND UPPER(DOC_INFO.PRODUCTION_STATUS) = 'NG' THEN 1 ELSE 0 END
+ CASE WHEN UPPER(BASE_DOC.IS_PRODUCT_MNG) = 'TARGET' AND UPPER(DOC_INFO.PRODUCT_MNG_STATUS) = 'NG' THEN 1 ELSE 0 END
+ CASE WHEN UPPER(BASE_DOC.IS_INTEGRITY) = 'TARGET' AND UPPER(DOC_INFO.INTEGRITY_STATUS) = 'NG' THEN 1 ELSE 0 END
+ CASE WHEN UPPER(BASE_DOC.IS_COMPONENT_BUY) = 'TARGET' AND UPPER(DOC_INFO.COMPONENT_BUY_STATUS) = 'NG' THEN 1 ELSE 0 END
+ CASE WHEN UPPER(BASE_DOC.IS_PRODUCT_QUALITY) = 'TARGET' AND UPPER(DOC_INFO.PRODUCT_QUALITY_STATUS) = 'NG' THEN 1 ELSE 0 END
AS TOTAL_NG_CNT
FROM
PMS_TRANS_DOC_INFO DOC_INFO,
PMS_TRANSLATE_DOC_MNG BASE_DOC
WHERE DOC_INFO.DOC_OBJID = BASE_DOC.OBJID
)INFO
)INFO
WHERE PRODUCT_INFO.OBJID = INFO.DOC_INFO_TARGET_OBJID(+)
AND PRODUCT_INFO.PROD_OBJID = INFO.DOC_INFO_PRODUCT_OBJID(+)
AND PRODUCT_INFO.OBJID = #{objId}
GROUP BY OBJID,OEM_OBJID,CAR_OBJID,PROD_GROUP_OBJID,PROD_OBJID
</select>
<!-- 차종별 제품별 이관 내용을 가져온다. -->
<select id="getProductRelTransferDocList" parameterType="map" resultType="map">
SELECT
ROW_NUMBER() OVER (ORDER BY REL_DOC.SEQ ASC) RNUM,
REL_DOC.*,
(SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = REL_DOC.HANDOVER_USER_ID) AS HANDOVER_DEPT_NAME,
(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = REL_DOC.HANDOVER_USER_ID) AS HANDOVER_USER_NAME,
(SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = REL_DOC.PRODUCTION_USER_ID) AS PRODUCTION_DEPT_NAME,
(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = REL_DOC.PRODUCTION_USER_ID) AS PRODUCTION_USER_NAME,
(SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = REL_DOC.PRODUCT_MNG_USER_ID) AS PRODUCT_MNG_DEPT_NAME,
(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = REL_DOC.PRODUCT_MNG_USER_ID) AS PRODUCT_MNG_USER_NAME,
(SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = REL_DOC.INTEGRITY_USER_ID) AS INTEGRITY_DEPT_NAME,
(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = REL_DOC.INTEGRITY_USER_ID) AS INTEGRITY_USER_NAME,
(SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = REL_DOC.COMPONENT_BUY_USER_ID) AS COMPONENT_BUY_DEPT_NAME,
(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = REL_DOC.COMPONENT_BUY_USER_ID) AS COMPONENT_BUY_USER_NAME,
(SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = REL_DOC.PRODUCT_QUALITY_USER_ID) AS PRODUCT_QUALITY_DEPT_NAME,
(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = REL_DOC.PRODUCT_QUALITY_USER_ID) AS PRODUCT_QUALITY_USER_NAME
FROM(
SELECT
DOC_MNG.OBJID,
DOC_MNG.TARGET_OBJID,
DOC_MNG.CAR_OBJID,
DOC_MNG.PRODUCT_OBJID,
BASE_DOC.DOC_TITLE,
BASE_DOC.DOC_TYPE,
BASE_DOC.TRANSLATE_TYPE,
CASE
WHEN UPPER(BASE_DOC.TRANSLATE_TYPE) = 'FACILITY' THEN '설계'
WHEN UPPER(BASE_DOC.TRANSLATE_TYPE) = 'QUALITY' THEN '품질'
WHEN UPPER(BASE_DOC.TRANSLATE_TYPE) = 'ETC' THEN '기타'
ELSE BASE_DOC.TRANSLATE_TYPE
END TRANSLATE_TYPE_TITLE,
CASE
WHEN UPPER(BASE_DOC.DOC_TYPE) = 'FILE' THEN '파일'
WHEN UPPER(BASE_DOC.DOC_TYPE) = 'OUTPUT' THEN '출력'
ELSE ''
END DOC_TYPE_TITLE,
BASE_DOC.IS_PRODUCTION,
CASE
WHEN UPPER(BASE_DOC.IS_PRODUCTION) = 'TARGET' THEN '대상'
WHEN UPPER(BASE_DOC.IS_PRODUCTION) = 'NONTARGET' THEN '비대상'
ELSE ''
END IS_PRODUCTION_TITLE,
BASE_DOC.IS_PRODUCT_MNG,
CASE
WHEN UPPER(BASE_DOC.IS_PRODUCT_MNG) = 'TARGET' THEN '대상'
WHEN UPPER(BASE_DOC.IS_PRODUCT_MNG) = 'NONTARGET' THEN '비대상'
ELSE ''
END IS_PRODUCT_MNG_TITLE,
BASE_DOC.IS_INTEGRITY,
CASE
WHEN UPPER(BASE_DOC.IS_INTEGRITY) = 'TARGET' THEN '대상'
WHEN UPPER(BASE_DOC.IS_INTEGRITY) = 'NONTARGET' THEN '비대상'
ELSE ''
END IS_INTEGRITY_TITLE,
BASE_DOC.IS_COMPONENT_BUY,
CASE
WHEN UPPER(BASE_DOC.IS_COMPONENT_BUY) = 'TARGET' THEN '대상'
WHEN UPPER(BASE_DOC.IS_COMPONENT_BUY) = 'NONTARGET' THEN '비대상'
ELSE ''
END IS_COMPONENT_BUY_TITLE,
BASE_DOC.IS_PRODUCT_QUALITY,
CASE
WHEN UPPER(BASE_DOC.IS_PRODUCT_QUALITY) = 'TARGET' THEN '대상'
WHEN UPPER(BASE_DOC.IS_PRODUCT_QUALITY) = 'NONTARGET' THEN '비대상'
ELSE ''
END IS_PRODUCT_QUALITY_TITLE,
TO_CHAR(BASE_DOC.REGDATE,'YYYY-MM-DD') REGDATE,
BASE_DOC.SEQ,
BASE_DOC.HAND_OVER_DEPT,
(SELECT DEPT_NAME FROM DEPT_INFO WHERE DEPT_CODE = BASE_DOC.HAND_OVER_DEPT) AS HAND_OVER_DEPT_NAME,
DOC_MNG.HAND_OVER_STATUS,
CASE
WHEN DOC_MNG.HAND_OVER_STATUS IS NULL THEN '미등록'
WHEN UPPER(DOC_MNG.HAND_OVER_STATUS) = 'CREATE' THEN '등록중'
WHEN UPPER(DOC_MNG.HAND_OVER_STATUS) = 'CONFIRM' THEN '인계확정'
ELSE DOC_MNG.HAND_OVER_STATUS
END HAND_OVER_STATUS_TITLE,
DOC_MNG.PRODUCTION_STATUS,
CASE
WHEN DOC_MNG.PRODUCTION_STATUS IS NULL THEN '미등록'
WHEN UPPER(DOC_MNG.PRODUCTION_STATUS) = 'OK' THEN '승인'
WHEN UPPER(DOC_MNG.PRODUCTION_STATUS) = 'ACCEPTOK' THEN '수용승인'
WHEN UPPER(DOC_MNG.PRODUCTION_STATUS) = 'NG' THEN '승인불가'
ELSE DOC_MNG.PRODUCTION_STATUS
END PRODUCTION_STATUS_TITLE,
DOC_MNG.PRODUCT_MNG_STATUS,
CASE
WHEN DOC_MNG.PRODUCT_MNG_STATUS IS NULL THEN '미등록'
WHEN UPPER(DOC_MNG.PRODUCT_MNG_STATUS) = 'OK' THEN '승인'
WHEN UPPER(DOC_MNG.PRODUCT_MNG_STATUS) = 'ACCEPTOK' THEN '수용승인'
WHEN UPPER(DOC_MNG.PRODUCT_MNG_STATUS) = 'NG' THEN '승인불가'
ELSE DOC_MNG.PRODUCT_MNG_STATUS
END PRODUCT_MNG_STATUS_TITLE,
DOC_MNG.INTEGRITY_STATUS,
CASE
WHEN DOC_MNG.INTEGRITY_STATUS IS NULL THEN '미등록'
WHEN UPPER(DOC_MNG.INTEGRITY_STATUS) = 'OK' THEN '승인'
WHEN UPPER(DOC_MNG.INTEGRITY_STATUS) = 'ACCEPTOK' THEN '수용승인'
WHEN UPPER(DOC_MNG.INTEGRITY_STATUS) = 'NG' THEN '승인불가'
ELSE DOC_MNG.INTEGRITY_STATUS
END INTEGRITY_STATUS_TITLE,
DOC_MNG.COMPONENT_BUY_STATUS,
CASE
WHEN DOC_MNG.COMPONENT_BUY_STATUS IS NULL THEN '미등록'
WHEN UPPER(DOC_MNG.COMPONENT_BUY_STATUS) = 'OK' THEN '승인'
WHEN UPPER(DOC_MNG.COMPONENT_BUY_STATUS) = 'ACCEPTOK' THEN '수용승인'
WHEN UPPER(DOC_MNG.COMPONENT_BUY_STATUS) = 'NG' THEN '승인불가'
ELSE DOC_MNG.COMPONENT_BUY_STATUS
END COMPONENT_BUY_STATUS_TITLE,
DOC_MNG.PRODUCT_QUALITY_STATUS,
CASE
WHEN DOC_MNG.PRODUCT_QUALITY_STATUS IS NULL THEN '미등록'
WHEN UPPER(DOC_MNG.PRODUCT_QUALITY_STATUS) = 'OK' THEN '승인'
WHEN UPPER(DOC_MNG.PRODUCT_QUALITY_STATUS) = 'ACCEPTOK' THEN '수용승인'
WHEN UPPER(DOC_MNG.PRODUCT_QUALITY_STATUS) = 'NG' THEN '승인불가'
ELSE DOC_MNG.PRODUCT_QUALITY_STATUS
END PRODUCT_QUALITY_STATUS_TITLE,
(
SELECT CHARGER_USER_ID FROM(
SELECT
CHARGER_USER_ID,
(SELECT DEPT_CODE FROM USER_INFO WHERE USER_ID = CHARGER_USER_ID) AS DEPT_CODE
FROM PMS_TRANS_DOC_PROD_REL_USER
WHERE TARGET_OBJID = #{objId}
AND PRODUCT_OBJID = #{productObjId}
AND UPPER(CHARGER_TYPE) = 'HANDOVER'
)WHERE DEPT_CODE = BASE_DOC.HAND_OVER_DEPT
) AS HANDOVER_USER_ID,
(SELECT CHARGER_USER_ID FROM PMS_TRANS_DOC_PROD_REL_USER WHERE TARGET_OBJID = #{objId} AND PRODUCT_OBJID = #{productObjId} AND UPPER(CHARGER_TYPE) = 'PRODUCTION') AS PRODUCTION_USER_ID,
(SELECT CHARGER_USER_ID FROM PMS_TRANS_DOC_PROD_REL_USER WHERE TARGET_OBJID = #{objId} AND PRODUCT_OBJID = #{productObjId} AND UPPER(CHARGER_TYPE) = 'PRODUCTMNG') AS PRODUCT_MNG_USER_ID,
(SELECT CHARGER_USER_ID FROM PMS_TRANS_DOC_PROD_REL_USER WHERE TARGET_OBJID = #{objId} AND PRODUCT_OBJID = #{productObjId} AND UPPER(CHARGER_TYPE) = 'INTEGRITY') AS INTEGRITY_USER_ID,
(SELECT CHARGER_USER_ID FROM PMS_TRANS_DOC_PROD_REL_USER WHERE TARGET_OBJID = #{objId} AND PRODUCT_OBJID = #{productObjId} AND UPPER(CHARGER_TYPE) = 'COMPONENTBUY') AS COMPONENT_BUY_USER_ID,
(SELECT CHARGER_USER_ID FROM PMS_TRANS_DOC_PROD_REL_USER WHERE TARGET_OBJID = #{objId} AND PRODUCT_OBJID = #{productObjId} AND UPPER(CHARGER_TYPE) = 'PRODUCTQUALITY') AS PRODUCT_QUALITY_USER_ID
FROM
PMS_TRANS_DOC_INFO DOC_MNG,
PMS_TRANSLATE_DOC_MNG BASE_DOC
WHERE 1=1
AND DOC_MNG.DOC_OBJID = BASE_DOC.OBJID
AND DOC_MNG.TARGET_OBJID = #{objId}
AND DOC_MNG.PRODUCT_OBJID = #{productObjId}
AND DOC_MNG.CAR_OBJID = #{carObjId}
ORDER BY BASE_DOC.SEQ ASC NULLS LAST
)REL_DOC
</select>
<!-- 문서이관에 연결된 문서에 해당하는 인수인계 인력 정보를 가져온다. -->
<select id="getDocTransferHistoryList" parameterType="map" resultType="map">
SELECT
INFO.*,
ROW_NUMBER() OVER(ORDER BY INFO.HAND_OVER_REGDATE) RNUM,
(SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = INFO.HANDOVER_USER_ID) AS HANDOVER_DEPT_NAME,
(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = INFO.HANDOVER_USER_ID) AS HANDOVER_USER_NAME,
(SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = INFO.PRODUCTION_USER_ID) AS PRODUCTION_DEPT_NAME,
(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = INFO.PRODUCTION_USER_ID) AS PRODUCTION_USER_NAME,
(SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = INFO.PRODUCT_MNG_USER_ID) AS PRODUCT_MNG_DEPT_NAME,
(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = INFO.PRODUCT_MNG_USER_ID) AS PRODUCT_MNG_USER_NAME,
(SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = INFO.INTEGRITY_USER_ID) AS INTEGRITY_DEPT_NAME,
(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = INFO.INTEGRITY_USER_ID) AS INTEGRITY_USER_NAME,
(SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = INFO.COMPONENT_BUY_USER_ID) AS COMPONENT_BUY_DEPT_NAME,
(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = INFO.COMPONENT_BUY_USER_ID) AS COMPONENT_BUY_USER_NAME,
(SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = INFO.PRODUCT_QUALITY_USER_ID) AS PRODUCT_QUALITY_DEPT_NAME,
(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = INFO.PRODUCT_QUALITY_USER_ID) AS PRODUCT_QUALITY_USER_NAME,
CASE
WHEN INFO.TOTAL_TARGET_CNT = TOTAL_OK_CNT THEN 'OK'
WHEN INFO.TOTAL_TARGET_CNT = (TOTAL_OK_CNT+TOTAL_NG_CNT) THEN 'NG'
ELSE 'PROCESSING'
END FINAL_STATUS
FROM(
SELECT
HISTORY.OBJID AS HISTORY_OBJID,
HISTORY.TARGET_OBJID AS HISTORY_TARGET_OBJID,
HISTORY.HAND_OVER_STATUS,
CASE
WHEN UPPER(HISTORY.HAND_OVER_STATUS) = 'CREATE' THEN '작성중'
WHEN UPPER(HISTORY.HAND_OVER_STATUS) = 'CONFIRM' THEN '확정'
ELSE HISTORY.HAND_OVER_STATUS
END HAND_OVER_STATUS_TITLE,
HISTORY.HAND_OVER_COMMENT,
HISTORY.HAND_OVER_REGDATE,
TO_CHAR(HISTORY.HAND_OVER_REGDATE,'YYYY-MM-DD') AS HAND_OVER_REGDATE_TITLE,
HISTORY.PRODUCTION_STATUS,
CASE
WHEN UPPER(HISTORY.PRODUCTION_STATUS) = 'OK' THEN '승인'
WHEN UPPER(HISTORY.PRODUCTION_STATUS) = 'ACCEPTOK' THEN '수용승인'
WHEN UPPER(HISTORY.PRODUCTION_STATUS) = 'NG' THEN '승인불가'
WHEN HISTORY.PRODUCTION_STATUS IS NULL THEN '미등록'
ELSE HISTORY.PRODUCTION_STATUS
END PRODUCTION_STATUS_TITLE,
HISTORY.PRODUCTION_COMMENT,
HISTORY.PRODUCTION_REGDATE,
TO_CHAR(HISTORY.PRODUCTION_REGDATE,'YYYY-MM-DD') AS PRODUCTION_REGDATE_TITLE,
HISTORY.PRODUCT_MNG_STATUS,
CASE
WHEN UPPER(HISTORY.PRODUCT_MNG_STATUS) = 'OK' THEN '승인'
WHEN UPPER(HISTORY.PRODUCT_MNG_STATUS) = 'ACCEPTOK' THEN '수용승인'
WHEN UPPER(HISTORY.PRODUCT_MNG_STATUS) = 'NG' THEN '승인불가'
WHEN HISTORY.PRODUCT_MNG_STATUS IS NULL THEN '미등록'
ELSE HISTORY.PRODUCT_MNG_STATUS
END PRODUCT_MNG_STATUS_TITLE,
HISTORY.PRODUCT_MNG_COMMENT,
HISTORY.PRODUCT_MNG_REGDATE,
TO_CHAR(HISTORY.PRODUCT_MNG_REGDATE,'YYYY-MM-DD') AS PRODUCT_MNG_REGDATE_TITLE,
HISTORY.INTEGRITY_STATUS,
CASE
WHEN UPPER(HISTORY.INTEGRITY_STATUS) = 'OK' THEN '승인'
WHEN UPPER(HISTORY.INTEGRITY_STATUS) = 'ACCEPTOK' THEN '수용승인'
WHEN UPPER(HISTORY.INTEGRITY_STATUS) = 'NG' THEN '승인불가'
WHEN HISTORY.INTEGRITY_STATUS IS NULL THEN '미등록'
ELSE HISTORY.INTEGRITY_STATUS
END INTEGRITY_STATUS_TITLE,
HISTORY.INTEGRITY_COMMENT,
HISTORY.INTEGRITY_REGDATE,
TO_CHAR(HISTORY.INTEGRITY_REGDATE,'YYYY-MM-DD') AS INTEGRITY_REGDATE_TITLE,
HISTORY.COMPONENT_BUY_STATUS,
CASE
WHEN UPPER(HISTORY.COMPONENT_BUY_STATUS) = 'OK' THEN '승인'
WHEN UPPER(HISTORY.COMPONENT_BUY_STATUS) = 'ACCEPTOK' THEN '수용승인'
WHEN UPPER(HISTORY.COMPONENT_BUY_STATUS) = 'NG' THEN '승인불가'
WHEN HISTORY.COMPONENT_BUY_STATUS IS NULL THEN '미등록'
ELSE HISTORY.COMPONENT_BUY_STATUS
END COMPONENT_BUY_STATUS_TITLE,
HISTORY.COMPONENT_BUY_COMMENT,
HISTORY.COMPONENT_BUY_REGDATE,
TO_CHAR(HISTORY.COMPONENT_BUY_REGDATE,'YYYY-MM-DD') AS COMPONENT_BUY_REGDATE_TITLE,
HISTORY.PRODUCT_QUALITY_STATUS,
CASE
WHEN UPPER(HISTORY.PRODUCT_QUALITY_STATUS) = 'OK' THEN '승인'
WHEN UPPER(HISTORY.PRODUCT_QUALITY_STATUS) = 'ACCEPTOK' THEN '수용승인'
WHEN UPPER(HISTORY.PRODUCT_QUALITY_STATUS) = 'NG' THEN '승인불가'
WHEN HISTORY.PRODUCT_QUALITY_STATUS IS NULL THEN '미등록'
ELSE HISTORY.PRODUCT_QUALITY_STATUS
END PRODUCT_QUALITY_STATUS_TITLE,
HISTORY.PRODUCT_QUALITY_COMMENT,
HISTORY.PRODUCT_QUALITY_REGDATE,
TO_CHAR(HISTORY.PRODUCT_QUALITY_REGDATE,'YYYY-MM-DD') AS PRODUCT_QUALITY_REGDATE_TITLE,
DOC_INFO.OBJID AS DOC_INFO_OBJID,
DOC_INFO.TARGET_OBJID AS DOC_INFO_TARGET_OBJID,
DOC_INFO.PRODUCT_OBJID AS DOC_INFO_PRODUCT_OBJID,
DOC_INFO.DOC_OBJID AS DOC_INFO_DOC_OBJID,
DOC_INFO.HAND_OVER_STATUS AS HAND_OVER_LAST_STATUS,
DOC_INFO.PRODUCTION_STATUS AS PRODUCTION_LAST_STATUS,
DOC_INFO.PRODUCT_MNG_STATUS AS PRODUCT_MNG_LAST_STATUS,
DOC_INFO.INTEGRITY_STATUS AS INTEGRITY_LAST_STATUS,
DOC_INFO.COMPONENT_BUY_STATUS AS COMPONENT_BUY_LAST_STATUS,
DOC_INFO.PRODUCT_QUALITY_STATUS AS PRODUCT_QUALITY_LAST_STATUS,
BASE_DOC.DOC_TITLE,
BASE_DOC.DOC_TYPE,
BASE_DOC.TRANSLATE_TYPE,
CASE
WHEN UPPER(BASE_DOC.TRANSLATE_TYPE) = 'FACILITY' THEN '설계'
WHEN UPPER(BASE_DOC.TRANSLATE_TYPE) = 'QUALITY' THEN '품질'
WHEN UPPER(BASE_DOC.TRANSLATE_TYPE) = 'ETC' THEN '기타'
ELSE BASE_DOC.TRANSLATE_TYPE
END TRANSLATE_TYPE_TITLE,
CASE
WHEN UPPER(BASE_DOC.DOC_TYPE) = 'FILE' THEN '파일'
WHEN UPPER(BASE_DOC.DOC_TYPE) = 'OUTPUT' THEN '출력'
ELSE BASE_DOC.DOC_TYPE
END DOC_TYPE_TITLE,
BASE_DOC.IS_PRODUCTION,
BASE_DOC.IS_PRODUCT_MNG,
BASE_DOC.IS_INTEGRITY,
BASE_DOC.IS_COMPONENT_BUY,
BASE_DOC.IS_PRODUCT_QUALITY,
(
SELECT CHARGER_USER_ID FROM(
SELECT
CHARGER_USER_ID,
(SELECT DEPT_CODE FROM USER_INFO WHERE USER_ID = CHARGER_USER_ID) AS DEPT_CODE
FROM PMS_TRANS_DOC_PROD_REL_USER
WHERE TARGET_OBJID = #{docTargetObjId}
AND PRODUCT_OBJID = #{productObjId}
AND UPPER(CHARGER_TYPE) = 'HANDOVER'
)WHERE DEPT_CODE = BASE_DOC.HAND_OVER_DEPT
) AS HANDOVER_USER_ID,
(SELECT CHARGER_USER_ID FROM PMS_TRANS_DOC_PROD_REL_USER WHERE TARGET_OBJID = #{docTargetObjId} AND PRODUCT_OBJID = #{productObjId} AND UPPER(CHARGER_TYPE) = 'PRODUCTION') AS PRODUCTION_USER_ID,
(SELECT CHARGER_USER_ID FROM PMS_TRANS_DOC_PROD_REL_USER WHERE TARGET_OBJID = #{docTargetObjId} AND PRODUCT_OBJID = #{productObjId} AND UPPER(CHARGER_TYPE) = 'PRODUCTMNG') AS PRODUCT_MNG_USER_ID,
(SELECT CHARGER_USER_ID FROM PMS_TRANS_DOC_PROD_REL_USER WHERE TARGET_OBJID = #{docTargetObjId} AND PRODUCT_OBJID = #{productObjId} AND UPPER(CHARGER_TYPE) = 'INTEGRITY') AS INTEGRITY_USER_ID,
(SELECT CHARGER_USER_ID FROM PMS_TRANS_DOC_PROD_REL_USER WHERE TARGET_OBJID = #{docTargetObjId} AND PRODUCT_OBJID = #{productObjId} AND UPPER(CHARGER_TYPE) = 'COMPONENTBUY') AS COMPONENT_BUY_USER_ID,
(SELECT CHARGER_USER_ID FROM PMS_TRANS_DOC_PROD_REL_USER WHERE TARGET_OBJID = #{docTargetObjId} AND PRODUCT_OBJID = #{productObjId} AND UPPER(CHARGER_TYPE) = 'PRODUCTQUALITY') AS PRODUCT_QUALITY_USER_ID,
CASE WHEN UPPER(BASE_DOC.IS_PRODUCTION) = 'TARGET' THEN 1 ELSE 0 END
+ CASE WHEN UPPER(BASE_DOC.IS_PRODUCT_MNG) = 'TARGET' THEN 1 ELSE 0 END
+ CASE WHEN UPPER(BASE_DOC.IS_INTEGRITY) = 'TARGET' THEN 1 ELSE 0 END
+ CASE WHEN UPPER(BASE_DOC.IS_COMPONENT_BUY) = 'TARGET' THEN 1 ELSE 0 END
+ CASE WHEN UPPER(BASE_DOC.IS_PRODUCT_QUALITY) = 'TARGET' THEN 1 ELSE 0 END
AS TOTAL_TARGET_CNT,
CASE WHEN UPPER(BASE_DOC.IS_PRODUCTION) = 'TARGET' AND (UPPER(DOC_INFO.PRODUCTION_STATUS) = 'OK' OR UPPER(DOC_INFO.PRODUCTION_STATUS) = 'ACCEPTOK') THEN 1 ELSE 0 END
+ CASE WHEN UPPER(BASE_DOC.IS_PRODUCT_MNG) = 'TARGET' AND (UPPER(DOC_INFO.PRODUCT_MNG_STATUS) = 'OK' OR UPPER(DOC_INFO.PRODUCT_MNG_STATUS) = 'ACCEPTOK') THEN 1 ELSE 0 END
+ CASE WHEN UPPER(BASE_DOC.IS_INTEGRITY) = 'TARGET' AND (UPPER(DOC_INFO.INTEGRITY_STATUS) = 'OK' OR UPPER(DOC_INFO.INTEGRITY_STATUS) = 'ACCEPTOK') THEN 1 ELSE 0 END
+ CASE WHEN UPPER(BASE_DOC.IS_COMPONENT_BUY) = 'TARGET' AND (UPPER(DOC_INFO.COMPONENT_BUY_STATUS) = 'OK' OR UPPER(DOC_INFO.COMPONENT_BUY_STATUS) = 'ACCEPTOK') THEN 1 ELSE 0 END
+ CASE WHEN UPPER(BASE_DOC.IS_PRODUCT_QUALITY) = 'TARGET' AND (UPPER(DOC_INFO.PRODUCT_QUALITY_STATUS) = 'OK' OR UPPER(DOC_INFO.PRODUCT_QUALITY_STATUS) = 'ACCEPTOK') THEN 1 ELSE 0 END
AS TOTAL_OK_CNT,
CASE WHEN UPPER(BASE_DOC.IS_PRODUCTION) = 'TARGET' AND UPPER(DOC_INFO.PRODUCTION_STATUS) = 'NG' THEN 1 ELSE 0 END
+ CASE WHEN UPPER(BASE_DOC.IS_PRODUCT_MNG) = 'TARGET' AND UPPER(DOC_INFO.PRODUCT_MNG_STATUS) = 'NG' THEN 1 ELSE 0 END
+ CASE WHEN UPPER(BASE_DOC.IS_INTEGRITY) = 'TARGET' AND UPPER(DOC_INFO.INTEGRITY_STATUS) = 'NG' THEN 1 ELSE 0 END
+ CASE WHEN UPPER(BASE_DOC.IS_COMPONENT_BUY) = 'TARGET' AND UPPER(DOC_INFO.COMPONENT_BUY_STATUS) = 'NG' THEN 1 ELSE 0 END
+ CASE WHEN UPPER(BASE_DOC.IS_PRODUCT_QUALITY) = 'TARGET' AND UPPER(DOC_INFO.PRODUCT_QUALITY_STATUS) = 'NG' THEN 1 ELSE 0 END
AS TOTAL_NG_CNT,
(SELECT COUNT(1) FROM ATTACH_FILE_INFO WHERE TARGET_OBJID = HISTORY.OBJID AND UPPER(DOC_TYPE) = 'TRANSFER_DOC_TAKING_OVER' AND UPPER(STATUS) = 'ACTIVE') AS REL_FILE_CNT
FROM
PMS_TRANSFER_DOC_HISTORY HISTORY,
PMS_TRANS_DOC_INFO DOC_INFO,
PMS_TRANSLATE_DOC_MNG BASE_DOC
WHERE HISTORY.TARGET_OBJID = #{targetObjId}
AND DOC_INFO.OBJID = HISTORY.TARGET_OBJID
AND DOC_INFO.DOC_OBJID = BASE_DOC.OBJID
AND DOC_INFO.TARGET_OBJID = #{docTargetObjId}
AND DOC_INFO.PRODUCT_OBJID = #{productObjId}
)INFO
</select>
<!-- 문서이관 인계 내용을 가져온다. -->
<select id="getDocTransferTakingOverInfo" parameterType="map" resultType="map">
SELECT
INFO.*,
ROW_NUMBER() OVER(ORDER BY INFO.HAND_OVER_REGDATE) RNUM,
(SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = INFO.HANDOVER_USER_ID) AS HANDOVER_DEPT_NAME,
(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = INFO.HANDOVER_USER_ID) AS HANDOVER_USER_NAME,
(SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = INFO.PRODUCTION_USER_ID) AS PRODUCTION_DEPT_NAME,
(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = INFO.PRODUCTION_USER_ID) AS PRODUCTION_USER_NAME,
(SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = INFO.PRODUCT_MNG_USER_ID) AS PRODUCT_MNG_DEPT_NAME,
(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = INFO.PRODUCT_MNG_USER_ID) AS PRODUCT_MNG_USER_NAME,
(SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = INFO.INTEGRITY_USER_ID) AS INTEGRITY_DEPT_NAME,
(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = INFO.INTEGRITY_USER_ID) AS INTEGRITY_USER_NAME,
(SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = INFO.COMPONENT_BUY_USER_ID) AS COMPONENT_BUY_DEPT_NAME,
(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = INFO.COMPONENT_BUY_USER_ID) AS COMPONENT_BUY_USER_NAME,
(SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = INFO.PRODUCT_QUALITY_USER_ID) AS PRODUCT_QUALITY_DEPT_NAME,
(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = INFO.PRODUCT_QUALITY_USER_ID) AS PRODUCT_QUALITY_USER_NAME
FROM(
SELECT
HISTORY.OBJID,
HISTORY.OBJID AS HISTORY_OBJID,
HISTORY.TARGET_OBJID AS HISTORY_TARGET_OBJID,
HISTORY.HAND_OVER_STATUS,
CASE
WHEN UPPER(HISTORY.HAND_OVER_STATUS) = 'CREATE' THEN '작성중'
WHEN UPPER(HISTORY.HAND_OVER_STATUS) = 'CONFIRM' THEN '확정'
ELSE HISTORY.HAND_OVER_STATUS
END HAND_OVER_STATUS_TITLE,
HISTORY.HAND_OVER_COMMENT,
HISTORY.HAND_OVER_REGDATE,
TO_CHAR(HISTORY.HAND_OVER_REGDATE,'YYYY-MM-DD') AS HAND_OVER_REGDATE_TITLE,
HISTORY.PRODUCTION_STATUS,
CASE
WHEN UPPER(HISTORY.PRODUCTION_STATUS) = 'CREATE' THEN '작성중'
WHEN UPPER(HISTORY.PRODUCTION_STATUS) = 'CONFIRM' THEN '확정'
ELSE HISTORY.PRODUCTION_STATUS
END PRODUCTION_STATUS_TITLE,
HISTORY.PRODUCTION_COMMENT,
HISTORY.PRODUCTION_REGDATE,
TO_CHAR(HISTORY.PRODUCTION_REGDATE,'YYYY-MM-DD') AS PRODUCTION_REGDATE_TITLE,
HISTORY.PRODUCT_MNG_STATUS,
CASE
WHEN UPPER(HISTORY.PRODUCT_MNG_STATUS) = 'CREATE' THEN '작성중'
WHEN UPPER(HISTORY.PRODUCT_MNG_STATUS) = 'CONFIRM' THEN '확정'
ELSE HISTORY.PRODUCT_MNG_STATUS
END PRODUCT_MNG_STATUS_TITLE,
HISTORY.PRODUCT_MNG_COMMENT,
HISTORY.PRODUCT_MNG_REGDATE,
TO_CHAR(HISTORY.PRODUCT_MNG_REGDATE,'YYYY-MM-DD') AS PRODUCT_MNG_REGDATE_TITLE,
HISTORY.INTEGRITY_STATUS,
CASE
WHEN UPPER(HISTORY.INTEGRITY_STATUS) = 'CREATE' THEN '작성중'
WHEN UPPER(HISTORY.INTEGRITY_STATUS) = 'CONFIRM' THEN '확정'
ELSE HISTORY.INTEGRITY_STATUS
END INTEGRITY_STATUS_TITLE,
HISTORY.INTEGRITY_COMMENT,
HISTORY.INTEGRITY_REGDATE,
TO_CHAR(HISTORY.INTEGRITY_REGDATE,'YYYY-MM-DD') AS INTEGRITY_REGDATE_TITLE,
HISTORY.COMPONENT_BUY_STATUS,
CASE
WHEN UPPER(HISTORY.COMPONENT_BUY_STATUS) = 'CREATE' THEN '작성중'
WHEN UPPER(HISTORY.COMPONENT_BUY_STATUS) = 'CONFIRM' THEN '확정'
ELSE HISTORY.COMPONENT_BUY_STATUS
END COMPONENT_BUY_STATUS_TITLE,
HISTORY.COMPONENT_BUY_COMMENT,
HISTORY.COMPONENT_BUY_REGDATE,
TO_CHAR(HISTORY.COMPONENT_BUY_REGDATE,'YYYY-MM-DD') AS COMPONENT_BUY_REGDATE_TITLE,
HISTORY.PRODUCT_QUALITY_STATUS,
CASE
WHEN UPPER(HISTORY.PRODUCT_QUALITY_STATUS) = 'CREATE' THEN '작성중'
WHEN UPPER(HISTORY.PRODUCT_QUALITY_STATUS) = 'CONFIRM' THEN '확정'
ELSE HISTORY.PRODUCT_QUALITY_STATUS
END PRODUCT_QUALITY_STATUS_TITLE,
HISTORY.PRODUCT_QUALITY_COMMENT,
HISTORY.PRODUCT_QUALITY_REGDATE,
TO_CHAR(HISTORY.PRODUCT_QUALITY_REGDATE,'YYYY-MM-DD') AS PRODUCT_QUALITY_REGDATE_TITLE,
DOC_INFO.OBJID AS DOC_INFO_OBJID,
DOC_INFO.TARGET_OBJID AS DOC_INFO_TARGET_OBJID,
DOC_INFO.PRODUCT_OBJID AS DOC_INFO_PRODUCT_OBJID,
DOC_INFO.DOC_OBJID AS DOC_INFO_DOC_OBJID,
DOC_INFO.HAND_OVER_STATUS AS HAND_OVER_LAST_STATUS,
DOC_INFO.PRODUCTION_STATUS AS PRODUCTION_LAST_STATUS,
DOC_INFO.PRODUCT_MNG_STATUS AS PRODUCT_MNG_LAST_STATUS,
DOC_INFO.INTEGRITY_STATUS AS INTEGRITY_LAST_STATUS,
DOC_INFO.COMPONENT_BUY_STATUS AS COMPONENT_BUY_LAST_STATUS,
DOC_INFO.PRODUCT_QUALITY_STATUS AS PRODUCT_QUALITY_LAST_STATUS,
BASE_DOC.DOC_TITLE,
BASE_DOC.DOC_TYPE,
BASE_DOC.TRANSLATE_TYPE,
CASE
WHEN UPPER(BASE_DOC.TRANSLATE_TYPE) = 'FACILITY' THEN '설계'
WHEN UPPER(BASE_DOC.TRANSLATE_TYPE) = 'QUALITY' THEN '품질'
WHEN UPPER(BASE_DOC.TRANSLATE_TYPE) = 'ETC' THEN '기타'
ELSE BASE_DOC.TRANSLATE_TYPE
END TRANSLATE_TYPE_TITLE,
CASE
WHEN UPPER(BASE_DOC.DOC_TYPE) = 'FILE' THEN '파일'
WHEN UPPER(BASE_DOC.DOC_TYPE) = 'OUTPUT' THEN '출력'
ELSE BASE_DOC.DOC_TYPE
END DOC_TYPE_TITLE,
BASE_DOC.IS_PRODUCTION,
BASE_DOC.IS_PRODUCT_MNG,
BASE_DOC.IS_INTEGRITY,
BASE_DOC.IS_COMPONENT_BUY,
BASE_DOC.IS_PRODUCT_QUALITY,
(
SELECT CHARGER_USER_ID FROM(
SELECT
CHARGER_USER_ID,
(SELECT DEPT_CODE FROM USER_INFO WHERE USER_ID = CHARGER_USER_ID) AS DEPT_CODE
FROM PMS_TRANS_DOC_PROD_REL_USER
WHERE TARGET_OBJID = #{docTargetObjId}
AND PRODUCT_OBJID = #{productObjId}
AND UPPER(CHARGER_TYPE) = 'HANDOVER'
)WHERE DEPT_CODE = BASE_DOC.HAND_OVER_DEPT
) AS HANDOVER_USER_ID,
(SELECT CHARGER_USER_ID FROM PMS_TRANS_DOC_PROD_REL_USER WHERE TARGET_OBJID = #{docTargetObjId} AND PRODUCT_OBJID = #{productObjId} AND UPPER(CHARGER_TYPE) = 'PRODUCTION') AS PRODUCTION_USER_ID,
(SELECT CHARGER_USER_ID FROM PMS_TRANS_DOC_PROD_REL_USER WHERE TARGET_OBJID = #{docTargetObjId} AND PRODUCT_OBJID = #{productObjId} AND UPPER(CHARGER_TYPE) = 'PRODUCTMNG') AS PRODUCT_MNG_USER_ID,
(SELECT CHARGER_USER_ID FROM PMS_TRANS_DOC_PROD_REL_USER WHERE TARGET_OBJID = #{docTargetObjId} AND PRODUCT_OBJID = #{productObjId} AND UPPER(CHARGER_TYPE) = 'INTEGRITY') AS INTEGRITY_USER_ID,
(SELECT CHARGER_USER_ID FROM PMS_TRANS_DOC_PROD_REL_USER WHERE TARGET_OBJID = #{docTargetObjId} AND PRODUCT_OBJID = #{productObjId} AND UPPER(CHARGER_TYPE) = 'COMPONENTBUY') AS COMPONENT_BUY_USER_ID,
(SELECT CHARGER_USER_ID FROM PMS_TRANS_DOC_PROD_REL_USER WHERE TARGET_OBJID = #{docTargetObjId} AND PRODUCT_OBJID = #{productObjId} AND UPPER(CHARGER_TYPE) = 'PRODUCTQUALITY') AS PRODUCT_QUALITY_USER_ID
FROM
PMS_TRANSFER_DOC_HISTORY HISTORY,
PMS_TRANS_DOC_INFO DOC_INFO,
PMS_TRANSLATE_DOC_MNG BASE_DOC
WHERE HISTORY.OBJID = #{objId}
AND HISTORY.TARGET_OBJID = DOC_INFO.OBJID
AND DOC_INFO.DOC_OBJID = BASE_DOC.OBJID
AND DOC_INFO.TARGET_OBJID = #{docTargetObjId}
AND DOC_INFO.PRODUCT_OBJID = #{productObjId}
)INFO
</select>
<!-- 문서이관 인계 내용 최초 등록 시 문서 기준정보를 가져온다. -->
<select id="getDocTransferTakingOverBaseInfo" parameterType="map" resultType="map">
SELECT
CASE
WHEN UPPER(DOC_TYPE) = 'FILE' THEN '파일'
WHEN UPPER(DOC_TYPE) = 'OUTPUT' THEN '출력'
ELSE DOC_TYPE
END DOC_TYPE_TITLE
FROM
PMS_TRANSLATE_DOC_MNG
WHERE OBJID = (SELECT DOC_OBJID FROM PMS_TRANS_DOC_INFO WHERE OBJID = #{targetObjId})
</select>
<!-- 문서이관 인계자가 인계 내용을 저장한다. -->
<update id="saveDocTransferTakingOverInfo" parameterType="map">
MERGE INTO PMS_TRANSFER_DOC_HISTORY USING DUAL ON (OBJID = #{objId} AND TARGET_OBJID = #{targetObjId})
WHEN MATCHED THEN
UPDATE
SET
HAND_OVER_STATUS = #{status},
HAND_OVER_COMMENT = #{handOverComment}
WHEN NOT MATCHED THEN
INSERT
(
OBJID,
TARGET_OBJID,
HAND_OVER_STATUS,
HAND_OVER_COMMENT,
HAND_OVER_REGDATE
)
VALUES
(
#{objId},
#{targetObjId},
'create',
#{handOverComment},
SYSDATE
)
</update>
<!-- 문서이관 인수 내용을 가져온다. -->
<select id="getDocTransferTakeOverInfo" parameterType="map" resultType="map">
SELECT
INFO.*,
ROW_NUMBER() OVER(ORDER BY INFO.HAND_OVER_REGDATE DESC) RNUM,
(SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = INFO.HANDOVER_USER_ID) AS HANDOVER_DEPT_NAME,
(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = INFO.HANDOVER_USER_ID) AS HANDOVER_USER_NAME,
(SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = INFO.PRODUCTION_USER_ID) AS PRODUCTION_DEPT_NAME,
(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = INFO.PRODUCTION_USER_ID) AS PRODUCTION_USER_NAME,
(SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = INFO.PRODUCT_MNG_USER_ID) AS PRODUCT_MNG_DEPT_NAME,
(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = INFO.PRODUCT_MNG_USER_ID) AS PRODUCT_MNG_USER_NAME,
(SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = INFO.INTEGRITY_USER_ID) AS INTEGRITY_DEPT_NAME,
(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = INFO.INTEGRITY_USER_ID) AS INTEGRITY_USER_NAME,
(SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = INFO.COMPONENT_BUY_USER_ID) AS COMPONENT_BUY_DEPT_NAME,
(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = INFO.COMPONENT_BUY_USER_ID) AS COMPONENT_BUY_USER_NAME,
(SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = INFO.PRODUCT_QUALITY_USER_ID) AS PRODUCT_QUALITY_DEPT_NAME,
(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = INFO.PRODUCT_QUALITY_USER_ID) AS PRODUCT_QUALITY_USER_NAME
FROM(
SELECT
HISTORY.OBJID,
HISTORY.OBJID AS HISTORY_OBJID,
HISTORY.TARGET_OBJID AS HISTORY_TARGET_OBJID,
HISTORY.HAND_OVER_STATUS,
CASE
WHEN UPPER(HISTORY.HAND_OVER_STATUS) = 'CREATE' THEN '작성중'
WHEN UPPER(HISTORY.HAND_OVER_STATUS) = 'CONFIRM' THEN '확정'
ELSE HISTORY.HAND_OVER_STATUS
END HAND_OVER_STATUS_TITLE,
HISTORY.HAND_OVER_COMMENT,
HISTORY.HAND_OVER_REGDATE,
TO_CHAR(HISTORY.HAND_OVER_REGDATE,'YYYY-MM-DD') AS HAND_OVER_REGDATE_TITLE,
HISTORY.PRODUCTION_STATUS,
CASE
WHEN UPPER(HISTORY.PRODUCTION_STATUS) = 'OK' THEN '승인'
WHEN UPPER(HISTORY.PRODUCTION_STATUS) = 'ACCEPTOK' THEN '수용승인'
WHEN UPPER(HISTORY.PRODUCTION_STATUS) = 'NG' THEN '승인불가'
WHEN HISTORY.PRODUCTION_STATUS IS NULL THEN '미등록'
ELSE HISTORY.PRODUCTION_STATUS
END PRODUCTION_STATUS_TITLE,
HISTORY.PRODUCTION_COMMENT,
HISTORY.PRODUCTION_REGDATE,
TO_CHAR(HISTORY.PRODUCTION_REGDATE,'YYYY-MM-DD') AS PRODUCTION_REGDATE_TITLE,
HISTORY.PRODUCT_MNG_STATUS,
CASE
WHEN UPPER(HISTORY.PRODUCT_MNG_STATUS) = 'OK' THEN '승인'
WHEN UPPER(HISTORY.PRODUCT_MNG_STATUS) = 'ACCEPTOK' THEN '수용승인'
WHEN UPPER(HISTORY.PRODUCT_MNG_STATUS) = 'NG' THEN '승인불가'
WHEN HISTORY.PRODUCT_MNG_STATUS IS NULL THEN '미등록'
ELSE HISTORY.PRODUCT_MNG_STATUS
END PRODUCT_MNG_STATUS_TITLE,
HISTORY.PRODUCT_MNG_COMMENT,
HISTORY.PRODUCT_MNG_REGDATE,
TO_CHAR(HISTORY.PRODUCT_MNG_REGDATE,'YYYY-MM-DD') AS PRODUCT_MNG_REGDATE_TITLE,
HISTORY.INTEGRITY_STATUS,
CASE
WHEN UPPER(HISTORY.INTEGRITY_STATUS) = 'OK' THEN '승인'
WHEN UPPER(HISTORY.INTEGRITY_STATUS) = 'ACCEPTOK' THEN '수용승인'
WHEN UPPER(HISTORY.INTEGRITY_STATUS) = 'NG' THEN '승인불가'
WHEN HISTORY.INTEGRITY_STATUS IS NULL THEN '미등록'
ELSE HISTORY.INTEGRITY_STATUS
END INTEGRITY_STATUS_TITLE,
HISTORY.INTEGRITY_COMMENT,
HISTORY.INTEGRITY_REGDATE,
TO_CHAR(HISTORY.INTEGRITY_REGDATE,'YYYY-MM-DD') AS INTEGRITY_REGDATE_TITLE,
HISTORY.COMPONENT_BUY_STATUS,
CASE
WHEN UPPER(HISTORY.COMPONENT_BUY_STATUS) = 'OK' THEN '승인'
WHEN UPPER(HISTORY.COMPONENT_BUY_STATUS) = 'ACCEPTOK' THEN '수용승인'
WHEN UPPER(HISTORY.COMPONENT_BUY_STATUS) = 'NG' THEN '승인불가'
WHEN HISTORY.COMPONENT_BUY_STATUS IS NULL THEN '미등록'
ELSE HISTORY.COMPONENT_BUY_STATUS
END COMPONENT_BUY_STATUS_TITLE,
HISTORY.COMPONENT_BUY_COMMENT,
HISTORY.COMPONENT_BUY_REGDATE,
TO_CHAR(HISTORY.COMPONENT_BUY_REGDATE,'YYYY-MM-DD') AS COMPONENT_BUY_REGDATE_TITLE,
HISTORY.PRODUCT_QUALITY_STATUS,
CASE
WHEN UPPER(HISTORY.PRODUCT_QUALITY_STATUS) = 'OK' THEN '승인'
WHEN UPPER(HISTORY.PRODUCT_QUALITY_STATUS) = 'ACCEPTOK' THEN '수용승인'
WHEN UPPER(HISTORY.PRODUCT_QUALITY_STATUS) = 'NG' THEN '승인불가'
WHEN HISTORY.PRODUCT_QUALITY_STATUS IS NULL THEN '미등록'
ELSE HISTORY.PRODUCT_QUALITY_STATUS
END PRODUCT_QUALITY_STATUS_TITLE,
HISTORY.PRODUCT_QUALITY_COMMENT,
HISTORY.PRODUCT_QUALITY_REGDATE,
TO_CHAR(HISTORY.PRODUCT_QUALITY_REGDATE,'YYYY-MM-DD') AS PRODUCT_QUALITY_REGDATE_TITLE,
DOC_INFO.OBJID AS DOC_INFO_OBJID,
DOC_INFO.TARGET_OBJID AS DOC_INFO_TARGET_OBJID,
DOC_INFO.PRODUCT_OBJID AS DOC_INFO_PRODUCT_OBJID,
DOC_INFO.DOC_OBJID AS DOC_INFO_DOC_OBJID,
DOC_INFO.HAND_OVER_STATUS AS HAND_OVER_LAST_STATUS,
DOC_INFO.PRODUCTION_STATUS AS PRODUCTION_LAST_STATUS,
DOC_INFO.PRODUCT_MNG_STATUS AS PRODUCT_MNG_LAST_STATUS,
DOC_INFO.INTEGRITY_STATUS AS INTEGRITY_LAST_STATUS,
DOC_INFO.COMPONENT_BUY_STATUS AS COMPONENT_BUY_LAST_STATUS,
DOC_INFO.PRODUCT_QUALITY_STATUS AS PRODUCT_QUALITY_LAST_STATUS,
BASE_DOC.DOC_TITLE,
BASE_DOC.DOC_TYPE,
BASE_DOC.TRANSLATE_TYPE,
CASE
WHEN UPPER(BASE_DOC.TRANSLATE_TYPE) = 'FACILITY' THEN '설계'
WHEN UPPER(BASE_DOC.TRANSLATE_TYPE) = 'QUALITY' THEN '품질'
WHEN UPPER(BASE_DOC.TRANSLATE_TYPE) = 'ETC' THEN '기타'
ELSE BASE_DOC.TRANSLATE_TYPE
END TRANSLATE_TYPE_TITLE,
CASE
WHEN UPPER(BASE_DOC.DOC_TYPE) = 'FILE' THEN '파일'
WHEN UPPER(BASE_DOC.DOC_TYPE) = 'OUTPUT' THEN '출력'
ELSE BASE_DOC.DOC_TYPE
END DOC_TYPE_TITLE,
BASE_DOC.IS_PRODUCTION,
BASE_DOC.IS_PRODUCT_MNG,
BASE_DOC.IS_INTEGRITY,
BASE_DOC.IS_COMPONENT_BUY,
BASE_DOC.IS_PRODUCT_QUALITY,
(
SELECT CHARGER_USER_ID FROM(
SELECT
CHARGER_USER_ID,
(SELECT DEPT_CODE FROM USER_INFO WHERE USER_ID = CHARGER_USER_ID) AS DEPT_CODE
FROM PMS_TRANS_DOC_PROD_REL_USER
WHERE TARGET_OBJID = #{docTargetObjId}
AND PRODUCT_OBJID = #{productObjId}
AND UPPER(CHARGER_TYPE) = 'HANDOVER'
)WHERE DEPT_CODE = BASE_DOC.HAND_OVER_DEPT
) AS HANDOVER_USER_ID,
(SELECT CHARGER_USER_ID FROM PMS_TRANS_DOC_PROD_REL_USER WHERE TARGET_OBJID = #{docTargetObjId} AND PRODUCT_OBJID = #{productObjId} AND UPPER(CHARGER_TYPE) = 'PRODUCTION') AS PRODUCTION_USER_ID,
(SELECT CHARGER_USER_ID FROM PMS_TRANS_DOC_PROD_REL_USER WHERE TARGET_OBJID = #{docTargetObjId} AND PRODUCT_OBJID = #{productObjId} AND UPPER(CHARGER_TYPE) = 'PRODUCTMNG') AS PRODUCT_MNG_USER_ID,
(SELECT CHARGER_USER_ID FROM PMS_TRANS_DOC_PROD_REL_USER WHERE TARGET_OBJID = #{docTargetObjId} AND PRODUCT_OBJID = #{productObjId} AND UPPER(CHARGER_TYPE) = 'INTEGRITY') AS INTEGRITY_USER_ID,
(SELECT CHARGER_USER_ID FROM PMS_TRANS_DOC_PROD_REL_USER WHERE TARGET_OBJID = #{docTargetObjId} AND PRODUCT_OBJID = #{productObjId} AND UPPER(CHARGER_TYPE) = 'COMPONENTBUY') AS COMPONENT_BUY_USER_ID,
(SELECT CHARGER_USER_ID FROM PMS_TRANS_DOC_PROD_REL_USER WHERE TARGET_OBJID = #{docTargetObjId} AND PRODUCT_OBJID = #{productObjId} AND UPPER(CHARGER_TYPE) = 'PRODUCTQUALITY') AS PRODUCT_QUALITY_USER_ID
FROM
PMS_TRANSFER_DOC_HISTORY HISTORY,
PMS_TRANS_DOC_INFO DOC_INFO,
PMS_TRANSLATE_DOC_MNG BASE_DOC
WHERE HISTORY.OBJID = #{objId}
AND HISTORY.TARGET_OBJID = DOC_INFO.OBJID
AND DOC_INFO.DOC_OBJID = BASE_DOC.OBJID
AND DOC_INFO.TARGET_OBJID = #{docTargetObjId}
AND DOC_INFO.PRODUCT_OBJID = #{productObjId}
)INFO
</select>
<!-- 문서이관 인수 내용을 저장한다. -->
<update id="saveDocTransferTakeOverInfo" parameterType="map">
MERGE INTO PMS_TRANSFER_DOC_HISTORY USING DUAL ON (OBJID = #{objId} AND TARGET_OBJID = #{targetObjId})
WHEN MATCHED THEN
UPDATE
<trim prefix="SET" suffixOverrides=",">
<if test="'production'.equals(entryType)">
PRODUCTION_STATUS = #{takeOverStatus},
PRODUCTION_COMMENT = #{takeOverComment}
</if>
<if test="'productMng'.equals(entryType)">
PRODUCT_MNG_STATUS = #{takeOverStatus},
PRODUCT_MNG_COMMENT = #{takeOverComment}
</if>
<if test="'integrity'.equals(entryType)">
INTEGRITY_STATUS = #{takeOverStatus},
INTEGRITY_COMMENT = #{takeOverComment}
</if>
<if test="'componentBuy'.equals(entryType)">
COMPONENT_BUY_STATUS = #{takeOverStatus},
COMPONENT_BUY_COMMENT = #{takeOverComment}
</if>
<if test="'productQuality'.equals(entryType)">
PRODUCT_QUALITY_STATUS = #{takeOverStatus},
PRODUCT_QUALITY_COMMENT = #{takeOverComment}
</if>
</trim>
</update>
<!-- 인계 상태를 변경한다. -->
<update id="changeTakingOverStatus" parameterType="map">
UPDATE PMS_TRANSFER_DOC_HISTORY SET HAND_OVER_STATUS = #{status} WHERE OBJID = #{objId}
</update>
<!-- 인계 상태를 변경한다. -->
<select id="getTransferDocProductChargerList" parameterType="map" resultType="map">
SELECT
CHARGER_INFO.*,
(SELECT EMAIL FROM USER_INFO WHERE USER_ID = CHARGER_INFO.PRODUCTION_USER_ID) AS PRODUCTION_USER_EMIL,
(SELECT EMAIL FROM USER_INFO WHERE USER_ID = CHARGER_INFO.PRODUCT_MNG_USER_ID) AS PRODUCT_MNG_USER_EMIL,
(SELECT EMAIL FROM USER_INFO WHERE USER_ID = CHARGER_INFO.INTEGRITY_USER_ID) AS INTEGRITY_USER_EMIL,
(SELECT EMAIL FROM USER_INFO WHERE USER_ID = CHARGER_INFO.COMPONENT_BUY_USER_ID) AS COMPONENT_BUY_USER_EMIL,
(SELECT EMAIL FROM USER_INFO WHERE USER_ID = CHARGER_INFO.PRODUCT_QUALITY_USER_ID) AS PRODUCT_QUALITY_USER_EMIL
FROM(
SELECT
BASE_INFO.*,
(SELECT CHARGER_USER_ID FROM PMS_TRANS_DOC_PROD_REL_USER WHERE TARGET_OBJID = DOC_INFO.TARGET_OBJID AND PRODUCT_OBJID = DOC_INFO.PRODUCT_OBJID AND UPPER(CHARGER_TYPE) = 'PRODUCTION') AS PRODUCTION_USER_ID,
(SELECT CHARGER_USER_ID FROM PMS_TRANS_DOC_PROD_REL_USER WHERE TARGET_OBJID = DOC_INFO.TARGET_OBJID AND PRODUCT_OBJID = DOC_INFO.PRODUCT_OBJID AND UPPER(CHARGER_TYPE) = 'PRODUCTMNG') AS PRODUCT_MNG_USER_ID,
(SELECT CHARGER_USER_ID FROM PMS_TRANS_DOC_PROD_REL_USER WHERE TARGET_OBJID = DOC_INFO.TARGET_OBJID AND PRODUCT_OBJID = DOC_INFO.PRODUCT_OBJID AND UPPER(CHARGER_TYPE) = 'INTEGRITY') AS INTEGRITY_USER_ID,
(SELECT CHARGER_USER_ID FROM PMS_TRANS_DOC_PROD_REL_USER WHERE TARGET_OBJID = DOC_INFO.TARGET_OBJID AND PRODUCT_OBJID = DOC_INFO.PRODUCT_OBJID AND UPPER(CHARGER_TYPE) = 'COMPONENTBUY') AS COMPONENT_BUY_USER_ID,
(SELECT CHARGER_USER_ID FROM PMS_TRANS_DOC_PROD_REL_USER WHERE TARGET_OBJID = DOC_INFO.TARGET_OBJID AND PRODUCT_OBJID = DOC_INFO.PRODUCT_OBJID AND UPPER(CHARGER_TYPE) = 'PRODUCTQUALITY') AS PRODUCT_QUALITY_USER_ID
FROM
PMS_TRANSFER_DOC_HISTORY HISTORY,
PMS_TRANS_DOC_INFO DOC_INFO,
PMS_TRANSLATE_DOC_MNG BASE_INFO
WHERE HISTORY.OBJID = #{objId}
AND HISTORY.TARGET_OBJID = DOC_INFO.OBJID
AND DOC_INFO.DOC_OBJID = BASE_INFO.OBJID
)CHARGER_INFO
</select>
<!-- 인수 승인처리한다. -->
<update id="changeTakeOverStatus" parameterType="map">
MERGE INTO PMS_TRANSFER_DOC_HISTORY USING DUAL ON (OBJID = #{objId})
WHEN MATCHED THEN
UPDATE
<trim prefix="SET" suffixOverrides=",">
<if test="entryType != null and 'production'.equals(entryType)">
PRODUCTION_REGDATE = SYSDATE
</if>
<if test="entryType != null and 'productMng'.equals(entryType)">
PRODUCT_MNG_REGDATE = SYSDATE
</if>
<if test="entryType != null and 'integrity'.equals(entryType)">
INTEGRITY_REGDATE = SYSDATE
</if>
<if test="entryType != null and 'componentBuy'.equals(entryType)">
COMPONENT_BUY_REGDATE = SYSDATE
</if>
<if test="entryType != null and 'productQuality'.equals(entryType)">
PRODUCT_QUALITY_REGDATE = SYSDATE
</if>
</trim>
</update>
<!-- 제품에 연결된 문서의 상태를 변경한다. -->
<update id="changeProductRelDocTransferInfoStatus" parameterType="map">
UPDATE PMS_TRANS_DOC_INFO
<trim prefix="SET" suffixOverrides=",">
<if test="entryType != null and 'production'.equals(entryType)">
PRODUCTION_STATUS = #{status}
</if>
<if test="entryType != null and 'productMng'.equals(entryType)">
PRODUCT_MNG_STATUS = #{status}
</if>
<if test="entryType != null and 'integrity'.equals(entryType)">
INTEGRITY_STATUS = #{status}
</if>
<if test="entryType != null and 'componentBuy'.equals(entryType)">
COMPONENT_BUY_STATUS = #{status}
</if>
<if test="entryType != null and 'productQuality'.equals(entryType)">
PRODUCT_QUALITY_STATUS = #{status}
</if>
<if test="entryType != null and 'handOver'.equals(entryType)">
TRANSFER_DATE = SYSDATE
</if>
</trim>
WHERE OBJID = #{targetObjId}
</update>
<!-- 양산문서의 제품에 해당하는 대표자 목록을 가져온다. -->
<select id="getDocTransferChargerUserList" parameterType="map" resultType="map">
SELECT
INFO.*,
ROW_NUMBER() OVER(PARTITION BY INFO.CHARGER_TYPE ORDER BY INFO.REGDATE) RNUM
FROM(
SELECT
OBJID,
TARGET_OBJID,
PRODUCT_OBJID,
CHARGER_USER_ID,
(SELECT DEPT_CODE FROM USER_INFO WHERE USER_ID = CHARGER_USER_ID) AS DEPT_CODE,
(SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = CHARGER_USER_ID) AS DEPT_NAME,
(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = CHARGER_USER_ID) AS USER_NAME,
CHARGER_TYPE,
WRITER,
REGDATE
FROM PMS_TRANS_DOC_PROD_REL_USER
WHERE TARGET_OBJID = #{targetObjId}
AND PRODUCT_OBJID = #{productObjId}
)INFO
</select>
<update id="saveTransferDocChargerInfo" parameterType="map">
MERGE INTO PMS_TRANS_DOC_PROD_REL_USER USING DUAL ON (TARGET_OBJID = #{targetObjId} AND PRODUCT_OBJID = #{productObjId} AND CHARGER_USER_ID = #{userId} AND CHARGER_TYPE = #{userType})
WHEN NOT MATCHED THEN
INSERT
(
OBJID
, TARGET_OBJID
, PRODUCT_OBJID
, CHARGER_USER_ID
, CHARGER_TYPE
, WRITER
, REGDATE
)
VALUES
(
#{objId}
, #{targetObjId}
, #{productObjId}
, #{userId}
, #{userType}
, #{writer}
, SYSDATE
)
</update>
<!-- 기존에 지정된 문서이관 차종 제품별 대표자 정보를 삭제한다. -->
<delete id="deleteTransferDocChargerInfo" parameterType="map">
DELETE PMS_TRANS_DOC_PROD_REL_USER WHERE TARGET_OBJID = #{targetObjId} AND PRODUCT_OBJID = #{productObjId} AND CHARGER_USER_ID = #{userId} AND CHARGER_TYPE = #{userType}
</delete>
<delete id="deleteAlreadyTransferDocChargerInfo" parameterType="map">
DELETE PMS_TRANS_DOC_PROD_REL_USER WHERE TARGET_OBJID = #{targetObjId} AND PRODUCT_OBJID = #{productObjId} AND CHARGER_TYPE = #{userType}
</delete>
<!-- 문서의 최종 상태 정보를 가져온다. -->
<select id="getDocTransferProductDocStatus" parameterType="map" resultType="map">
SELECT
OBJID,
OEM_OBJID,
(SELECT OEM_NAME FROM OEM_MNG WHERE OBJID = (SELECT OEM_OBJID FROM CAR_MNG WHERE OBJID = CAR_OBJID)) AS OEM_NAME,
CAR_OBJID,
(SELECT CAR_CODE FROM CAR_MNG WHERE OBJID = CAR_OBJID) AS CAR_CODE,
PROD_GROUP_OBJID,
(SELECT PRODUCT_GROUP_NAME FROM PRODUCT_GROUP_MNG WHERE OBJID = (SELECT PRODUCT_GROUP_OBJID FROM PRODUCT_MNG WHERE OBJID = PROD_OBJID)) PROD_GROUP_NAME,
PROD_OBJID,
(SELECT PRODUCT_NAME FROM PRODUCT_MNG WHERE OBJID = PROD_OBJID) AS PROD_NAME,
DOC_INFO_OBJID,
CASE WHEN SUM(TOTAL_CNT) != 0 AND SUM(OK_CNT) != 0 THEN ROUND((SUM(OK_CNT)/SUM(TOTAL_CNT))*100,0) ELSE 0 END COMPLETE_RATIO,
SUM(TOTAL_CNT) AS TOTAL_CNT,
SUM(OK_CNT) AS OK_CNT,
SUM(NG_CNT) AS NG_CNT,
SUM(PROCEEDING_CNT) AS PROCEEDING_CNT,
NVL2(MAX(TRANSFER_DATE),MAX(TO_CHAR(TRANSFER_DATE,'YYYY-MM-DD')),'') AS TRANSFER_DATE,
CASE
WHEN SUM(TOTAL_CNT) = (SUM(OK_CNT)+SUM(NG_CNT)) THEN 'OK'
WHEN SUM(TOTAL_CNT) != (SUM(OK_CNT)+SUM(NG_CNT)) THEN 'PROCEEDING'
ELSE ''
END TRANSFER_STATUS
FROM
(
SELECT
DOC.OBJID,
(SELECT OEM_NAME FROM OEM_MNG WHERE OBJID = (SELECT OEM_OBJID FROM CAR_MNG WHERE OBJID = PJT.CAR_OBJID)) AS OEM_NAME,
(SELECT CAR_CODE FROM CAR_MNG WHERE OBJID = PJT.CAR_OBJID) AS CAR_CODE,
(SELECT PRODUCT_GROUP_NAME FROM PRODUCT_GROUP_MNG WHERE OBJID = (SELECT PRODUCT_GROUP_OBJID FROM PRODUCT_MNG WHERE OBJID = PROD_PJT.SUB_OBJID)) PROD_GROUP_NAME,
(SELECT PRODUCT_NAME FROM PRODUCT_MNG WHERE OBJID = PROD_PJT.SUB_OBJID) AS PROD_NAME,
(SELECT OEM_OBJID FROM CAR_MNG WHERE OBJID = PJT.CAR_OBJID) AS OEM_OBJID,
PJT.CAR_OBJID,
(SELECT PRODUCT_GROUP_OBJID FROM PRODUCT_MNG WHERE OBJID = PROD_PJT.SUB_OBJID) PROD_GROUP_OBJID,
PROD_PJT.SUB_OBJID AS PROD_OBJID
FROM
PMS_PJT_INFO PJT,
PMS_REL_PJT_PROD PROD_PJT,
PMS_TRANSFER_DOC DOC
WHERE PJT.OBJID = PROD_PJT.TARGET_OBJID
AND DOC.CAR_OBJID = PJT.CAR_OBJID
)PRODUCT_INFO,
(
SELECT
INFO.DOC_INFO_OBJID,
INFO.DOC_INFO_TARGET_OBJID,
INFO.DOC_INFO_PRODUCT_OBJID,
INFO.DOC_INFO_DOC_OBJID,
INFO.TRANSFER_DATE,
CASE WHEN INFO.TOTAL_TARGET_CNT = INFO.TOTAL_OK_CNT THEN 1 ELSE 0 END OK_CNT,
CASE WHEN INFO.TOTAL_TARGET_CNT = (INFO.TOTAL_OK_CNT+INFO.TOTAL_NG_CNT) AND INFO.TOTAL_NG_CNT > 0 THEN 1 ELSE 0 END NG_CNT,
CASE WHEN INFO.TOTAL_TARGET_CNT != (INFO.TOTAL_OK_CNT+INFO.TOTAL_NG_CNT) THEN 1 ELSE 0 END PROCEEDING_CNT,
1 TOTAL_CNT
FROM (
SELECT
DOC_INFO.OBJID AS DOC_INFO_OBJID,
DOC_INFO.TARGET_OBJID AS DOC_INFO_TARGET_OBJID,
DOC_INFO.PRODUCT_OBJID AS DOC_INFO_PRODUCT_OBJID,
DOC_INFO.DOC_OBJID AS DOC_INFO_DOC_OBJID,
DOC_INFO.TRANSFER_DATE,
CASE WHEN UPPER(BASE_DOC.IS_PRODUCTION) = 'TARGET' THEN 1 ELSE 0 END
+ CASE WHEN UPPER(BASE_DOC.IS_PRODUCT_MNG) = 'TARGET' THEN 1 ELSE 0 END
+ CASE WHEN UPPER(BASE_DOC.IS_INTEGRITY) = 'TARGET' THEN 1 ELSE 0 END
+ CASE WHEN UPPER(BASE_DOC.IS_COMPONENT_BUY) = 'TARGET' THEN 1 ELSE 0 END
+ CASE WHEN UPPER(BASE_DOC.IS_PRODUCT_QUALITY) = 'TARGET' THEN 1 ELSE 0 END
AS TOTAL_TARGET_CNT,
CASE WHEN UPPER(BASE_DOC.IS_PRODUCTION) = 'TARGET' AND (UPPER(DOC_INFO.PRODUCTION_STATUS) = 'OK' OR UPPER(DOC_INFO.PRODUCTION_STATUS) = 'ACCEPTOK') THEN 1 ELSE 0 END
+ CASE WHEN UPPER(BASE_DOC.IS_PRODUCT_MNG) = 'TARGET' AND (UPPER(DOC_INFO.PRODUCT_MNG_STATUS) = 'OK' OR UPPER(DOC_INFO.PRODUCT_MNG_STATUS) = 'ACCEPTOK') THEN 1 ELSE 0 END
+ CASE WHEN UPPER(BASE_DOC.IS_INTEGRITY) = 'TARGET' AND (UPPER(DOC_INFO.INTEGRITY_STATUS) = 'OK' OR UPPER(DOC_INFO.INTEGRITY_STATUS) = 'ACCEPTOK') THEN 1 ELSE 0 END
+ CASE WHEN UPPER(BASE_DOC.IS_COMPONENT_BUY) = 'TARGET' AND (UPPER(DOC_INFO.COMPONENT_BUY_STATUS) = 'OK' OR UPPER(DOC_INFO.COMPONENT_BUY_STATUS) = 'ACCEPTOK') THEN 1 ELSE 0 END
+ CASE WHEN UPPER(BASE_DOC.IS_PRODUCT_QUALITY) = 'TARGET' AND (UPPER(DOC_INFO.PRODUCT_QUALITY_STATUS) = 'OK' OR UPPER(DOC_INFO.PRODUCT_QUALITY_STATUS) = 'ACCEPTOK') THEN 1 ELSE 0 END
AS TOTAL_OK_CNT,
CASE WHEN UPPER(BASE_DOC.IS_PRODUCTION) = 'TARGET' AND UPPER(DOC_INFO.PRODUCTION_STATUS) = 'NG' THEN 1 ELSE 0 END
+ CASE WHEN UPPER(BASE_DOC.IS_PRODUCT_MNG) = 'TARGET' AND UPPER(DOC_INFO.PRODUCT_MNG_STATUS) = 'NG' THEN 1 ELSE 0 END
+ CASE WHEN UPPER(BASE_DOC.IS_INTEGRITY) = 'TARGET' AND UPPER(DOC_INFO.INTEGRITY_STATUS) = 'NG' THEN 1 ELSE 0 END
+ CASE WHEN UPPER(BASE_DOC.IS_COMPONENT_BUY) = 'TARGET' AND UPPER(DOC_INFO.COMPONENT_BUY_STATUS) = 'NG' THEN 1 ELSE 0 END
+ CASE WHEN UPPER(BASE_DOC.IS_PRODUCT_QUALITY) = 'TARGET' AND UPPER(DOC_INFO.PRODUCT_QUALITY_STATUS) = 'NG' THEN 1 ELSE 0 END
AS TOTAL_NG_CNT
FROM
PMS_TRANS_DOC_INFO DOC_INFO,
PMS_TRANSLATE_DOC_MNG BASE_DOC
WHERE DOC_INFO.DOC_OBJID = BASE_DOC.OBJID
)INFO
)INFO
WHERE PRODUCT_INFO.OBJID = INFO.DOC_INFO_TARGET_OBJID(+)
AND PRODUCT_INFO.PROD_OBJID = INFO.DOC_INFO_PRODUCT_OBJID(+)
AND INFO.DOC_INFO_OBJID = #{targetObjId}
GROUP BY OBJID,OEM_OBJID,CAR_OBJID,PROD_GROUP_OBJID,PROD_OBJID,DOC_INFO_OBJID
</select>
<!-- 문서의 최종상태를 변경한다. -->
<update id="changeDocInfoStatus" parameterType="map">
UPDATE PMS_TRANS_DOC_INFO SET STATUS = #{status} WHERE OBJID = #{targetObjId}
</update>
<!-- 품질이관 갑지 저장 시 중복여부 검사 -->
<select id="checkQualityTransferDuplicateMaster" parameterType="map" resultType="map">
SELECT COUNT(1) CNT
FROM (
SELECT A.OBJID
, A.OEM_OBJID
, A.CAR_OBJID
FROM PMS_TRANSFER_QUALITY A
WHERE 1=1
) BASE_T
WHERE 1=1
AND BASE_T.OBJID != #{objId}
AND BASE_T.OEM_OBJID = #{oemObjId}
AND BASE_T.CAR_OBJID = #{carObjId}
</select>
<!-- //품질이관 갑지 저장 -->
<update id="saveQualityTransferInfo" parameterType="map">
MERGE INTO PMS_TRANSFER_QUALITY USING DUAL ON (OBJID = #{objId})
WHEN MATCHED THEN
UPDATE
SET
OEM_OBJID = #{oemObjId},
CAR_OBJID = #{carObjId},
STATUS = #{status}
WHEN NOT MATCHED THEN
INSERT
(
OBJID,
OEM_OBJID,
CAR_OBJID,
WRITER,
REGDATE,
STATUS
)
VALUES
(
#{objId},
#{oemObjId},
#{carObjId},
#{writer},
SYSDATE,
#{status}
)
</update>
<!-- //품질이관 갑지 상세 내용을 가져온다. -->
<select id="getQualityTransferInfo" parameterType="map" resultType="map">
SELECT
OBJID,
OEM_OBJID,
(SELECT OEM_NAME FROM OEM_MNG WHERE OBJID = OEM_OBJID) AS OEM_NAME,
CAR_OBJID,
(SELECT CAR_CODE FROM CAR_MNG WHERE OBJID = CAR_OBJID) AS CAR_CODE,
(SELECT CAR_NAME FROM CAR_MNG WHERE OBJID = CAR_OBJID) AS CAR_NAME,
WRITER,
(SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = WRITER) AS USER_DEPT_NAME,
(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = WRITER) AS USER_NAME,
REGDATE,
STATUS,
(SELECT TO_CHAR(CAR.MILESTONE_DATE, 'YYYY-MM-DD') FROM OEM_MILESTONE_MNG OEM, CAR_MILESTONE_MNG CAR WHERE OEM.OBJID = CAR.MILESTONE_OBJID AND OEM.MILESTONE_NAME = 'SOP' AND OEM.OEM_OBJID = INFO.OEM_OBJID AND CAR.CAR_OBJID = INFO.CAR_OBJID) AS SOP,
TAKE_OVER_DATE
FROM PMS_TRANSFER_QUALITY INFO
WHERE OBJID = #{objId}
</select>
<!-- //품질이관 갑지 목록을 가져온다. -->
<select id="getQualityTransferInfoList" parameterType="map" resultType="map">
SELECT
ROW_NUMBER() OVER(ORDER BY REGDATE ASC NULLS LAST) RNUM,
INFO.*,
RESULT_INFO.TEST_RESULT_RATIO,
RESULT_INFO.DOC_RESULT_RATIO,
CASE WHEN RESULT_INFO.TEST_RESULT_RATIO > 0 OR RESULT_INFO.DOC_RESULT_RATIO > 0 THEN (RESULT_INFO.TEST_RESULT_RATIO+RESULT_INFO.DOC_RESULT_RATIO)/2 ELSE 0 END RESULT_RATIO
FROM(
SELECT
QUALITY.OBJID,
QUALITY.OEM_OBJID,
(SELECT OEM_NAME FROM OEM_MNG WHERE OBJID = QUALITY.OEM_OBJID) AS OEM_NAME,
QUALITY.CAR_OBJID,
(SELECT CAR_CODE FROM CAR_MNG WHERE OBJID = QUALITY.CAR_OBJID) AS CAR_CODE,
(SELECT CAR_NAME FROM CAR_MNG WHERE OBJID = QUALITY.CAR_OBJID) AS CAR_NAME,
QUALITY.WRITER,
(SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = QUALITY.WRITER) AS USER_DEPT_NAME,
(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = QUALITY.WRITER) AS USER_NAME,
QUALITY.REGDATE,
QUALITY.STATUS,
(SELECT TO_CHAR(CAR.MILESTONE_DATE, 'YYYY-MM-DD') FROM OEM_MILESTONE_MNG OEM, CAR_MILESTONE_MNG CAR WHERE OEM.OBJID = CAR.MILESTONE_OBJID AND OEM.MILESTONE_NAME = 'SOP' AND OEM.OEM_OBJID = QUALITY.OEM_OBJID AND CAR.CAR_OBJID = QUALITY.CAR_OBJID) AS SOP,
QUALITY.TAKE_OVER_DATE,
(SELECT COUNT(1) FROM PMS_REL_PJT_PROD WHERE TARGET_OBJID = PJT.OBJID) AS PROD_CNT
FROM
PMS_TRANSFER_QUALITY QUALITY,
PMS_PJT_INFO PJT
WHERE QUALITY.CAR_OBJID = PJT.CAR_OBJID(+)
) INFO,
(
SELECT
INFO.GABJI_OBJID,
CASE WHEN SUM(ASSY_TARGET_TOTAL_CNT+PART_TARGET_TOTAL_CNT) > 0 THEN ROUND((SUM(ASSY_OK_CNT+PART_OK_CNT)/SUM(ASSY_TARGET_TOTAL_CNT+PART_TARGET_TOTAL_CNT))*100,0) ELSE 0 END TEST_RESULT_RATIO,
CASE WHEN SUM(DOC_TRANSFER_RESULT.DOC_TOTAL_CNT) > 0 THEN ROUND((SUM(DOC_TRANSFER_RESULT.DOC_OK_TOTAL_CNT)/SUM(DOC_TRANSFER_RESULT.DOC_TOTAL_CNT))*100,0) ELSE 0 END DOC_RESULT_RATIO,
MAX(HISTORY.TAKE_OVER_DATE) AS TAKE_OVER_DATE
FROM(
SELECT
A.GABJI_OBJID,
A.OEM_OBJID,
A.CAR_OBJID,
A.PROD_GROUP_OBJID,
A.PROD_OBJID,
A.PART_NO,
A.PART_OBJID,
(SELECT COUNT(1) FROM PMS_TRANSFER_REL_TEST_RESULT WHERE TARGET_OBJID = A.GABJI_OBJID AND PRODUCT_OBJID = A.PROD_OBJID AND UPPER(PART_TYPE) = 'ASSY') AS ASSY_TARGET_TOTAL_CNT,
(SELECT COUNT(1) FROM PMS_TRANSFER_REL_TEST_RESULT WHERE TARGET_OBJID = A.GABJI_OBJID AND PRODUCT_OBJID = A.PROD_OBJID AND UPPER(PART_TYPE) = 'PART') AS PART_TARGET_TOTAL_CNT,
CASE WHEN SUM(TEST_RESULT.ASSY_OK_CNT) IS NULL THEN 0 ELSE SUM(TEST_RESULT.ASSY_OK_CNT) END ASSY_OK_CNT,
CASE WHEN SUM(TEST_RESULT.ASSY_PROGRESS_CNT) IS NULL THEN 0 ELSE SUM(TEST_RESULT.ASSY_PROGRESS_CNT) END ASSY_PROGRESS_CNT,
CASE WHEN SUM(TEST_RESULT.PART_OK_CNT) IS NULL THEN 0 ELSE SUM(TEST_RESULT.PART_OK_CNT) END PART_OK_CNT,
CASE WHEN SUM(TEST_RESULT.PART_PROGRESS_CNT) IS NULL THEN 0 ELSE SUM(TEST_RESULT.PART_PROGRESS_CNT) END PART_PROGRESS_CNT
FROM (
SELECT
QUALITY.OBJID AS GABJI_OBJID
, M.OEM_OBJID
, M.CAR_OBJID
, M.PROD_GROUP_OBJID
, M.PROD_OBJID
, P.PART_NO
, P.PART_OBJID
FROM
PMS_DEV_MASTER M,
PMS_TRANSFER_QUALITY QUALITY,
(
SELECT
DP.*,
(SELECT (SELECT MATERIAL_TYPE_NAME FROM MATERIAL_TYPE_MNG WHERE OBJID = PART.MATERIAL_TYPE_OBJID) FROM PART_INFO PART WHERE PART.PART_NO = DP.PART_NO AND PART.IS_LAST = 1) AS MATERIAL_TYPE_NAME,
(SELECT OBJID FROM PART_INFO PART WHERE PART.PART_NO = DP.PART_NO AND PART.IS_LAST = 1) AS PART_OBJID
FROM PMS_DEV_MASTER_REL_PART_INFO DP
) P,
(
SELECT
B.TARGET_OBJID AS PROJECT_OBJID
, B.SUB_OBJID AS PROD_OBJID
, A.OEM_OBJID AS OEM_OBJID
, A.CAR_OBJID AS CAR_OBJID
FROM PMS_PJT_INFO A, PMS_REL_PJT_PROD B
WHERE 1=1
AND A.OBJID = B.TARGET_OBJID
AND UPPER(A.STATUS) = 'CONFIRM'
) PROJ_PROD
WHERE 1=1
AND M.OBJID = P.TARGET_OBJID
AND M.OEM_OBJID = QUALITY.OEM_OBJID
AND M.CAR_OBJID = QUALITY.CAR_OBJID
AND UPPER(P.DEV_POINT) = '2REALISTICPRODUCE'
AND P.MATERIAL_TYPE_NAME = '제품'
AND PROJ_PROD.OEM_OBJID = QUALITY.OEM_OBJID
AND PROJ_PROD.CAR_OBJID = QUALITY.CAR_OBJID
AND M.OEM_OBJID = PROJ_PROD.OEM_OBJID
AND M.CAR_OBJID = PROJ_PROD.CAR_OBJID
AND M.PROD_OBJID = PROJ_PROD.PROD_OBJID
) A,
(
SELECT
TEST_RESULT_STATUS.PART_NO AS DEV_MASTER_PART_NO,
TEST_RESULT_STATUS.TAKE_OVER_DATE,
CASE WHEN UPPER(TEST_RESULT_PART.PART_TYPE) = 'ASSY' THEN 1 ELSE 0 END ASSY_CNT,
CASE WHEN UPPER(TEST_RESULT_PART.PART_TYPE) = 'PART' THEN 1 ELSE 0 END PART_CNT,
CASE WHEN TEST_RESULT_STATUS.TAKE_OVER_DATE IS NOT NULL AND UPPER(TEST_RESULT_PART.PART_TYPE) = 'ASSY' THEN 1 ELSE 0 END ASSY_OK_CNT,
CASE WHEN TEST_RESULT_STATUS.TAKE_OVER_DATE IS NULL AND UPPER(TEST_RESULT_PART.PART_TYPE) = 'ASSY' THEN 1 ELSE 0 END ASSY_PROGRESS_CNT,
CASE WHEN TEST_RESULT_STATUS.TAKE_OVER_DATE IS NOT NULL AND UPPER(TEST_RESULT_PART.PART_TYPE) = 'PART' THEN 1 ELSE 0 END PART_OK_CNT,
CASE WHEN TEST_RESULT_STATUS.TAKE_OVER_DATE IS NULL AND UPPER(TEST_RESULT_PART.PART_TYPE) = 'PART' THEN 1 ELSE 0 END PART_PROGRESS_CNT
FROM
PMS_TRANSFER_REL_TEST_RESULT TEST_RESULT_PART,
PMS_TRANS_TEST_RESULT_STATUS TEST_RESULT_STATUS
WHERE 1=1
AND TEST_RESULT_PART.TARGET_OBJID = TEST_RESULT_STATUS.TRANSFER_INFO_OBJID(+)
AND TEST_RESULT_PART.PRODUCT_OBJID = TEST_RESULT_STATUS.PRODUCT_OBJID(+)
AND TEST_RESULT_PART.TEST_RESULT_MASTER_OBJID = TEST_RESULT_STATUS.TEST_RESULT_MASTER_OBJID(+)
AND TEST_RESULT_PART.TEST_RESULT_SLAVE_OBJID = TEST_RESULT_STATUS.TEST_RESULT_SLAVE_OBJID(+)
)TEST_RESULT
WHERE 1=1
AND A.PART_NO = TEST_RESULT.DEV_MASTER_PART_NO(+)
GROUP BY A.GABJI_OBJID,A.OEM_OBJID,A.CAR_OBJID,A.PROD_GROUP_OBJID,A.PROD_OBJID,A.PART_OBJID,A.PART_NO
) INFO,
(
SELECT
CAR_OBJID,
PRODUCT_OBJID,
CASE WHEN SUM(CNT) != 0 THEN ROUND((SUM(OK_CNT)/SUM(CNT))*100,0) ELSE 0 END OK_RATIO,
SUM(CNT) AS DOC_TOTAL_CNT,
SUM(OK_CNT) AS DOC_OK_TOTAL_CNT
FROM(
SELECT
OBJID,
CAR_OBJID,
PRODUCT_OBJID,
DOC_OBJID,
(SELECT TRANSLATE_TYPE FROM PMS_TRANSLATE_DOC_MNG WHERE OBJID = DOC_OBJID) AS TRANSLATE_TYPE,
STATUS,
1 AS CNT,
CASE WHEN UPPER(STATUS) = 'OK' THEN 1 ELSE 0 END OK_CNT
FROM PMS_TRANS_DOC_INFO
)WHERE UPPER(TRANSLATE_TYPE) = 'QUALITY'
GROUP BY CAR_OBJID,PRODUCT_OBJID
)DOC_TRANSFER_RESULT,
(
SELECT
OBJID,
TARGET_OBJID,
PRODUCT_OBJID,
PART_NO,
CHARGER_ID,
TAKE_OVER_STATUS,
REASON,
TAKE_OVER_COMMENT,
IS_LAST,
TAKE_OVER_DATE,
REGDATE
FROM PMS_TRANSFER_QUALITY_HISTORY
WHERE IS_LAST = 1
)HISTORY
WHERE 1=1
AND INFO.CAR_OBJID = DOC_TRANSFER_RESULT.CAR_OBJID(+)
AND INFO.PROD_OBJID = DOC_TRANSFER_RESULT.PRODUCT_OBJID(+)
AND INFO.GABJI_OBJID = HISTORY.TARGET_OBJID(+)
AND INFO.PROD_OBJID = HISTORY.PRODUCT_OBJID(+)
AND INFO.PART_NO = HISTORY.PART_NO(+)
GROUP BY INFO.GABJI_OBJID
)RESULT_INFO
WHERE INFO.OBJID = RESULT_INFO.GABJI_OBJID(+)
</select>
<!-- //검색 조건에 해당하는 합부판정 Part 목록을 가져온다. -->
<select id="getTestResultPartList" parameterType="map" resultType="map">
SELECT
ORA_HASH(DBMS_RANDOM.VALUE(1, 100000)) AS OBJID
,ROW_NUMBER() OVER(ORDER BY SEQ) AS RNUM
, QUALITY_MASTER.PART_MASTER_OBJID
, QUALITY_MASTER.OEM_OBJID
, (SELECT OEM_NAME FROM OEM_MNG WHERE OBJID = QUALITY_MASTER.OEM_OBJID) AS OEM_NAME
, QUALITY_MASTER.CAR_OBJID
, (SELECT CAR_NAME FROM CAR_MNG WHERE OBJID = QUALITY_MASTER.CAR_OBJID) AS CAR_NAME
, (SELECT CAR_CODE FROM CAR_MNG WHERE OBJID = QUALITY_MASTER.CAR_OBJID) AS CAR_CODE
, QUALITY_MASTER.PROD_GROUP_OBJID
, (SELECT PRODUCT_GROUP_NAME FROM PRODUCT_GROUP_MNG WHERE OBJID = QUALITY_MASTER.PROD_GROUP_OBJID) AS PRODUCT_GROUP_NAME
, QUALITY_MASTER.PROD_OBJID
, (SELECT PRODUCT_NAME FROM PRODUCT_MNG WHERE OBJID = QUALITY_MASTER.PROD_OBJID) AS PRODUCT_NAME
, QUALITY_MASTER.PART_NO
, QUALITY_MASTER.PART_NAME
, QUALITY_MASTER.MATERIAL_TYPE
, QUALITY_MASTER.SEQ
, QUALITY_MASTER.RATE
, QUALITY_MASTER.MOLD_MAKE_COMPANY
, QUALITY_MASTER.PROBLEM_CNT
, QUALITY_MASTER.QUALITY_MASTER_OBJID
, QUALITY_MASTER.TEST_TYPE_OBJID
, QUALITY_MASTER.STEP1
, CASE
WHEN UPPER(QUALITY_MASTER.STEP1) = 'DESIGN' THEN '설계'
WHEN UPPER(QUALITY_MASTER.STEP1) = 'DEVELOP' THEN '개발'
WHEN UPPER(QUALITY_MASTER.STEP1) = 'PRODUCTION' THEN '양산'
ELSE QUALITY_MASTER.STEP1
END STEP1_TITLE
, QUALITY_MASTER.STEP2
, QUALITY_MASTER.STATUS AS QUALITY_MASTER_STATUS
, QUALITY_SLAVE.OBJID AS QUALITY_SLAVE_OBJID
, QUALITY_SLAVE.SCORE
, QUALITY_SLAVE.RESULT
, QUALITY_SLAVE.TYPE1
, QUALITY_SLAVE.TYPE2
FROM (
SELECT
PART.PART_MASTER_OBJID
, PART.OEM_OBJID
, PART.CAR_OBJID
, PART.PROD_GROUP_OBJID
, PART.PROD_OBJID
, PART.PART_NO
, PART.PART_NAME
, PART.SEQ
, PART.MATERIAL_TYPE_NAME
, CASE
WHEN PART.MATERIAL_TYPE_NAME = '제품' THEN 'ASSY'
WHEN PART.MATERIAL_TYPE_NAME = '반제품' THEN 'PART'
ELSE ''
END AS MATERIAL_TYPE
, UPPER(PART.RATE) AS RATE
, MOLD_MAKE_COMPANY
, PART.PROBLEM_CNT
, Q_M.OBJID AS QUALITY_MASTER_OBJID
, Q_M.TEST_TYPE_OBJID
, Q_M.STEP1
, Q_M.STEP2
, Q_M.STATUS
FROM (
SELECT
M.OBJID AS PART_MASTER_OBJID
, M.OEM_OBJID
, M.CAR_OBJID
, M.PROD_GROUP_OBJID
, M.PROD_OBJID
, S.PART_NO
, (SELECT PART_NAME FROM PART_INFO WHERE PART_NO = S.PART_NO AND UPPER(STATUS) = 'COMPLETE' AND IS_LAST = 1) AS PART_NAME
, (SELECT (SELECT MATERIAL_TYPE_NAME FROM MATERIAL_TYPE_MNG WHERE OBJID = MATERIAL_TYPE_OBJID) AS MATERIAL_TYPE_NAME FROM PART_INFO WHERE PART_NO = S.PART_NO AND UPPER(STATUS) = 'COMPLETE' AND IS_LAST = 1) AS MATERIAL_TYPE_NAME
, S.SEQ
, (SELECT RATE FROM (SELECT B.RATE, B.PART_NO FROM PMS_DEV_MASTER A, PMS_DEV_MASTER_REL_PART_INFO B WHERE A.OBJID = B.TARGET_OBJID AND B.RATE IS NOT NULL ORDER BY DEV_POINT DESC) A WHERE A.PART_NO = S.PART_NO AND ROWNUM = 1) AS RATE
, (SELECT MOLD_MAKE_COMPANY FROM (SELECT B.MOLD_MAKE_COMPANY, B.PART_NO FROM PMS_DEV_MASTER A, PMS_DEV_MASTER_REL_PART_INFO B WHERE A.OBJID = B.TARGET_OBJID AND B.MOLD_MAKE_COMPANY IS NOT NULL ORDER BY DEV_POINT DESC) A WHERE A.PART_NO = S.PART_NO AND ROWNUM = 1) AS MOLD_MAKE_COMPANY
, (SELECT COUNT(*) FROM PMS_PROBLEM_INFO WHERE PART_NO = S.PART_NO) PROBLEM_CNT
FROM PMS_PART_MASTER M, PMS_PART_MASTER_CONNECT_PART S
WHERE 1=1
AND M.OBJID = S.TARGET_OBJID
AND UPPER(S.IS_DEL) IS NULL
ORDER BY S.SEQ
) PART, PMS_QUALITY_TEST_INFO Q_M
WHERE 1=1
AND PART.CAR_OBJID = Q_M.CAR_OBJID
AND PART.PROD_OBJID = Q_M.PROD_OBJID
) QUALITY_MASTER, PMS_QUALITY_TEST_REL_PART_ATTR QUALITY_SLAVE
WHERE 1=1
AND QUALITY_MASTER.QUALITY_MASTER_OBJID = QUALITY_SLAVE.TARGET_OBJID(+)
AND QUALITY_MASTER.PART_NO = QUALITY_SLAVE.PART_NO(+)
AND UPPER(QUALITY_MASTER.STATUS) = 'COMPLETE'
AND NOT EXISTS(
SELECT 1
FROM PMS_TRANSFER_REL_TEST_RESULT REL_TEST_RESULT
WHERE REL_TEST_RESULT.TEST_RESULT_MASTER_OBJID = QUALITY_MASTER.QUALITY_MASTER_OBJID
AND REL_TEST_RESULT.PART_NO = QUALITY_MASTER.PART_NO
AND REL_TEST_RESULT.TARGET_OBJID = #{targetObjId}
<!-- 같은 갑지내 제품이 다수일 경우 중복되지 않도록 한다. -->
<!-- AND REL_TEST_RESULT.PRODUCT_OBJID = #{productObjId} -->
)
<if test="partType != null and !''.equals(partType)">
AND UPPER(QUALITY_MASTER.MATERIAL_TYPE) = UPPER(#{partType})
</if>
<if test="search_oemObjId != null and !''.equals(search_oemObjId)">
AND QUALITY_MASTER.OEM_OBJID = #{search_oemObjId}
</if>
<if test="search_carObjId != null and !''.equals(search_carObjId)">
AND QUALITY_MASTER.CAR_OBJID = #{search_carObjId}
</if>
<if test="search_testTypeObjId != null and !''.equals(search_testTypeObjId)">
AND QUALITY_MASTER.TEST_TYPE_OBJID = #{search_testTypeObjId}
</if>
<if test="step1 != null and !''.equals(step1)">
AND QUALITY_MASTER.STEP1 = #{step1}
</if>
<if test="step2 != null and !''.equals(step2)">
AND QUALITY_MASTER.STEP2 = #{step2}
</if>
</select>
<!-- //제품에 연결된 합부판정 Part 목록을 가져온다. -->
<select id="getConnectedTestResultPartList" parameterType="map" resultType="map">
SELECT
REL_TEST_RESULT.OBJID
, ROW_NUMBER() OVER(ORDER BY SEQ) AS RNUM
, QUALITY_MASTER.PART_MASTER_OBJID
, QUALITY_MASTER.OEM_OBJID
, (SELECT OEM_NAME FROM OEM_MNG WHERE OBJID = QUALITY_MASTER.OEM_OBJID) AS OEM_NAME
, QUALITY_MASTER.CAR_OBJID
, (SELECT CAR_NAME FROM CAR_MNG WHERE OBJID = QUALITY_MASTER.CAR_OBJID) AS CAR_NAME
, (SELECT CAR_CODE FROM CAR_MNG WHERE OBJID = QUALITY_MASTER.CAR_OBJID) AS CAR_CODE
, QUALITY_MASTER.PROD_GROUP_OBJID
, (SELECT PRODUCT_GROUP_NAME FROM PRODUCT_GROUP_MNG WHERE OBJID = QUALITY_MASTER.PROD_GROUP_OBJID) AS PRODUCT_GROUP_NAME
, QUALITY_MASTER.PROD_OBJID
, (SELECT PRODUCT_NAME FROM PRODUCT_MNG WHERE OBJID = QUALITY_MASTER.PROD_OBJID) AS PRODUCT_NAME
, QUALITY_MASTER.PART_NO
, QUALITY_MASTER.PART_NAME
, QUALITY_MASTER.SEQ
, QUALITY_MASTER.RATE
, QUALITY_MASTER.MOLD_MAKE_COMPANY
, QUALITY_MASTER.PROBLEM_CNT
, QUALITY_MASTER.QUALITY_MASTER_OBJID
, QUALITY_MASTER.TEST_TYPE_OBJID
, QUALITY_MASTER.STEP1
, QUALITY_MASTER.STEP2
, QUALITY_MASTER.STATUS AS QUALITY_MASTER_STATUS
, QUALITY_SLAVE.OBJID AS QUALITY_SLAVE_OBJID
, QUALITY_SLAVE.SCORE
, QUALITY_SLAVE.RESULT
, QUALITY_SLAVE.TYPE1
, QUALITY_SLAVE.TYPE2
FROM (
SELECT PART.PART_MASTER_OBJID
, PART.OEM_OBJID
, PART.CAR_OBJID
, PART.PROD_GROUP_OBJID
, PART.PROD_OBJID
, PART.PART_NO
, PART.PART_NAME
, PART.SEQ
, UPPER(PART.RATE) AS RATE
, MOLD_MAKE_COMPANY
, PART.PROBLEM_CNT
, Q_M.OBJID AS QUALITY_MASTER_OBJID
, Q_M.TEST_TYPE_OBJID
, Q_M.STEP1
, Q_M.STEP2
, Q_M.STATUS
FROM (
SELECT
M.OBJID AS PART_MASTER_OBJID
, M.OEM_OBJID
, M.CAR_OBJID
, M.PROD_GROUP_OBJID
, M.PROD_OBJID
, S.PART_NO
, (SELECT PART_NAME FROM PART_INFO WHERE PART_NO = S.PART_NO AND UPPER(STATUS) = 'COMPLETE' AND IS_LAST = 1) AS PART_NAME
, S.SEQ
, (SELECT RATE FROM (SELECT B.RATE, B.PART_NO FROM PMS_DEV_MASTER A, PMS_DEV_MASTER_REL_PART_INFO B WHERE A.OBJID = B.TARGET_OBJID AND B.RATE IS NOT NULL ORDER BY DEV_POINT DESC) A WHERE A.PART_NO = S.PART_NO AND ROWNUM = 1) AS RATE
, (SELECT MOLD_MAKE_COMPANY FROM (SELECT B.MOLD_MAKE_COMPANY, B.PART_NO FROM PMS_DEV_MASTER A, PMS_DEV_MASTER_REL_PART_INFO B WHERE A.OBJID = B.TARGET_OBJID AND B.MOLD_MAKE_COMPANY IS NOT NULL ORDER BY DEV_POINT DESC) A WHERE A.PART_NO = S.PART_NO AND ROWNUM = 1) AS MOLD_MAKE_COMPANY
, (SELECT COUNT(*) FROM PMS_PROBLEM_INFO WHERE PART_NO = S.PART_NO) PROBLEM_CNT
FROM PMS_PART_MASTER M, PMS_PART_MASTER_CONNECT_PART S
WHERE 1=1
AND M.OBJID = S.TARGET_OBJID
AND UPPER(S.IS_DEL) IS NULL
ORDER BY S.SEQ
) PART,
PMS_QUALITY_TEST_INFO Q_M
WHERE 1=1
AND PART.CAR_OBJID = Q_M.CAR_OBJID
AND PART.PROD_OBJID = Q_M.PROD_OBJID
) QUALITY_MASTER,PMS_QUALITY_TEST_REL_PART_ATTR QUALITY_SLAVE,PMS_TRANSFER_REL_TEST_RESULT REL_TEST_RESULT
WHERE 1=1
AND QUALITY_MASTER.QUALITY_MASTER_OBJID = QUALITY_SLAVE.TARGET_OBJID(+)
AND QUALITY_MASTER.PART_NO = QUALITY_SLAVE.PART_NO(+)
AND REL_TEST_RESULT.TEST_RESULT_MASTER_OBJID = QUALITY_MASTER.QUALITY_MASTER_OBJID
AND REL_TEST_RESULT.PART_NO = QUALITY_MASTER.PART_NO
AND REL_TEST_RESULT.TARGET_OBJID = #{targetObjId}
AND REL_TEST_RESULT.PRODUCT_OBJID = #{productObjId}
AND UPPER(REL_TEST_RESULT.PART_TYPE) = UPPER(#{partType})
</select>
<!-- 품질이관 제품별 합부 판정 Part를 연결한다. -->
<update id="connectTestResultPart" parameterType="map">
MERGE INTO PMS_TRANSFER_REL_TEST_RESULT USING DUAL
ON (TARGET_OBJID = #{targetObjId}
AND TEST_RESULT_MASTER_OBJID = #{testResultMasterObjId}
AND TEST_RESULT_SLAVE_OBJID = #{testResultSlaveObjId}
AND PRODUCT_OBJID = #{productObjId}
AND PART_NO = #{partNo}
)
WHEN NOT MATCHED THEN
INSERT
(
OBJID,
TARGET_OBJID,
TEST_RESULT_MASTER_OBJID,
TEST_RESULT_SLAVE_OBJID,
PRODUCT_OBJID,
PART_NO,
PART_TYPE,
REGDATE
)
VALUES
(
#{objId},
#{targetObjId},
#{testResultMasterObjId},
#{testResultSlaveObjId},
#{productObjId},
#{partNo},
#{partType},
SYSDATE
)
</update>
<!-- 품질이관 제품에 연결된 합부판정 Part와의 연결을 해제한다. -->
<delete id="disConnectTestResultPart" parameterType="map">
DELETE PMS_TRANSFER_REL_TEST_RESULT WHERE OBJID = #{objId} AND TARGET_OBJID = #{targetObjId} AND PRODUCT_OBJID = #{productObjId} AND UPPER(PART_TYPE) = UPPER(#{partType})
</delete>
<!-- 품질이관 제품별 담당자를 지정한다. -->
<update id="saveQualityTransferChaerger" parameterType="map">
MERGE INTO PMS_TRANSFER_QUALITY_CHARGER USING DUAL ON (TARGET_OBJID = #{targetObjId} AND PRODUCT_OBJID = #{productObjId})
WHEN MATCHED THEN
UPDATE
SET CHARGER_ID = #{chargerUsereId}
WHEN NOT MATCHED THEN
INSERT
(
OBJID,
TARGET_OBJID,
PRODUCT_OBJID,
CHARGER_ID,
REGDATE
)
VALUES
(
#{objId},
#{targetObjId},
#{productObjId},
#{chargerUsereId},
SYSDATE
)
</update>
<!-- 품질이관 제품별 담당자를 지정한다. -->
<select id="getQualityTransferChaergerInfo" parameterType="map" resultType="map">
SELECT
OBJID,
TARGET_OBJID,
PRODUCT_OBJID,
CHARGER_ID,
(SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = CHARGER_ID) AS DEPT_NAME,
(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = CHARGER_ID) AS USER_NAME,
REGDATE
FROM PMS_TRANSFER_QUALITY_CHARGER
WHERE TARGET_OBJID = #{targetObjId}
AND PRODUCT_OBJID = #{productObjId}
</select>
<!-- 품질이관 갑지에 해당하는 제품의 목록을 가져온다. -->
<select id="getQualityTransferRelProductList" parameterType="map" resultType="map">
SELECT
AA.*,
TO_CHAR(AA.TAKE_OVER_DATE,'YYYY-MM-DD') AS TAKE_OVER_DATE_TITLE,
CASE WHEN AA.TOTAL_TARGET_PART_CNT > 0 THEN ROUND((AA.TOTAL_TARGET_OK_PART_CNT/AA.TOTAL_TARGET_PART_CNT)*100,0) ELSE 0 END TRANSFER_RATIO
FROM (
SELECT
A.*,
(SELECT COUNT(1) FROM PMS_TRANSFER_QUALITY_HISTORY WHERE TARGET_OBJID = A.GABJI_OBJID AND PRODUCT_OBJID = A.PROD_OBJID AND (UPPER(TAKE_OVER_STATUS) = 'OK' OR UPPER(TAKE_OVER_STATUS) = 'ACCEPTOK') AND IS_LAST = 1) AS TOTAL_TARGET_OK_PART_CNT,
(SELECT COUNT(1) FROM PMS_TRANSFER_QUALITY_HISTORY WHERE TARGET_OBJID = A.GABJI_OBJID AND PRODUCT_OBJID = A.PROD_OBJID AND TAKE_OVER_STATUS IS NOT NULL AND IS_LAST = 1) AS TOTAL_TARGET_PROGRESS_PART_CNT,
(SELECT MAX(TAKE_OVER_DATE) FROM PMS_TRANSFER_QUALITY_HISTORY WHERE TARGET_OBJID = A.GABJI_OBJID AND PRODUCT_OBJID = A.PROD_OBJID AND (UPPER(TAKE_OVER_STATUS) = 'OK' OR UPPER(TAKE_OVER_STATUS) = 'ACCEPTOK') AND IS_LAST = 1) AS TAKE_OVER_DATE
FROM (
SELECT QUALITY.OBJID AS GABJI_OBJID
, M.OEM_OBJID
, M.CAR_OBJID
, M.PROD_GROUP_OBJID
, (SELECT PRODUCT_GROUP_NAME FROM PRODUCT_GROUP_MNG WHERE OBJID = M.PROD_GROUP_OBJID) AS PROD_GROUP_NAME
, M.PROD_OBJID
, (SELECT PRODUCT_NAME FROM PRODUCT_MNG WHERE OBJID = M.PROD_OBJID) AS PROD_NAME
, COUNT(P.PART_NO) AS TOTAL_TARGET_PART_CNT
FROM
PMS_DEV_MASTER M,
PMS_TRANSFER_QUALITY QUALITY,
(
SELECT
DP.*,
(SELECT (SELECT MATERIAL_TYPE_NAME FROM MATERIAL_TYPE_MNG WHERE OBJID = PART.MATERIAL_TYPE_OBJID) FROM PART_INFO PART WHERE PART.PART_NO = DP.PART_NO AND PART.IS_LAST = 1) AS MATERIAL_TYPE_NAME
FROM PMS_DEV_MASTER_REL_PART_INFO DP
) P,
(
SELECT B.TARGET_OBJID AS PROJECT_OBJID
, B.SUB_OBJID AS PROD_OBJID
, (SELECT PRODUCT_GROUP_NAME FROM PRODUCT_GROUP_MNG WHERE OBJID = (SELECT PRODUCT_GROUP_OBJID FROM PRODUCT_MNG WHERE OBJID = B.SUB_OBJID)) AS PROD_GROUP_NAME
, (SELECT PRODUCT_NAME FROM PRODUCT_MNG WHERE OBJID = B.SUB_OBJID) AS PROD_NAME
, A.OEM_OBJID AS OEM_OBJID
, A.CAR_OBJID AS CAR_OBJID
FROM PMS_PJT_INFO A, PMS_REL_PJT_PROD B
WHERE 1=1
AND A.OBJID = B.TARGET_OBJID
AND UPPER(A.STATUS) = 'CONFIRM'
) PROJ_PROD
WHERE 1=1
AND M.OBJID = P.TARGET_OBJID
AND M.OEM_OBJID = QUALITY.OEM_OBJID
AND M.CAR_OBJID = QUALITY.CAR_OBJID
AND UPPER(P.DEV_POINT) = '2REALISTICPRODUCE'
AND P.MATERIAL_TYPE_NAME = '제품'
AND PROJ_PROD.OEM_OBJID = QUALITY.OEM_OBJID
AND PROJ_PROD.CAR_OBJID = QUALITY.CAR_OBJID
AND M.OEM_OBJID = PROJ_PROD.OEM_OBJID
AND M.CAR_OBJID = PROJ_PROD.CAR_OBJID
AND M.PROD_OBJID = PROJ_PROD.prod_objid
GROUP BY QUALITY.OBJID, M.OEM_OBJID, M.CAR_OBJID, M.PROD_GROUP_OBJID, M.PROD_OBJID
) A
) AA
WHERE 1=1
AND AA.GABJI_OBJID = #{transferObjId}
</select>
<!-- 품질이관 갑지에 해당하는 제품의 개발마스터 Part를 가져온다. -->
<select id="getQualityTransferTargetPartList" parameterType="map" resultType="map">
SELECT
INFO.*,
DOC_TRANSFER_RESULT.OK_RATIO,
DOC_TRANSFER_RESULT.DOC_TOTAL_CNT,
DOC_TRANSFER_RESULT.DOC_OK_TOTAL_CNT,
HISTORY.OBJID AS HISTORY_OBJID,
HISTORY.CHARGER_ID,
(SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = HISTORY.CHARGER_ID) HISTORY_DEPT_NAME,
(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = HISTORY.CHARGER_ID) HISTORY_USER_NAME,
HISTORY.TAKE_OVER_STATUS,
HISTORY.REASON,
HISTORY.TAKE_OVER_COMMENT,
CASE
WHEN HISTORY.TAKE_OVER_STATUS IS NULL THEN '미등록'
WHEN UPPER(HISTORY.TAKE_OVER_STATUS) = 'OK' THEN '승인'
WHEN UPPER(HISTORY.TAKE_OVER_STATUS) = 'ACCEPTOK' THEN '수용승인'
WHEN UPPER(HISTORY.TAKE_OVER_STATUS) = 'NG' THEN '승인거부'
WHEN UPPER(HISTORY.TAKE_OVER_STATUS) = 'REVIEW' THEN '검토'
ELSE HISTORY.TAKE_OVER_STATUS
END TAKE_OVER_STATUS_TITLE,
HISTORY.TAKE_OVER_DATE,
CASE WHEN HISTORY.TAKE_OVER_DATE IS NOT NULL THEN TO_CHAR(HISTORY.TAKE_OVER_DATE,'YYYY-MM-DD') ELSE '' END TAKE_OVER_DATE_TITLE,
CHARGER_INFO.CHARGER_ID AS PRODUCT_CHARGER_ID,
CASE WHEN (INFO.ASSY_TARGET_TOTAL_CNT+INFO.PART_TARGET_TOTAL_CNT) > 0 THEN ROUND(((INFO.ASSY_OK_CNT+INFO.PART_OK_CNT)/(INFO.ASSY_TARGET_TOTAL_CNT+INFO.PART_TARGET_TOTAL_CNT))*100,0) ELSE 0 END TEST_RESULT_RATIO
FROM(
SELECT
A.GABJI_OBJID,
A.OEM_OBJID,
A.CAR_OBJID,
A.PROD_GROUP_OBJID,
(SELECT PRODUCT_GROUP_NAME FROM PRODUCT_GROUP_MNG WHERE OBJID = A.PROD_GROUP_OBJID) AS PRODUCT_GROUP_NAME,
A.PROD_OBJID,
(SELECT PRODUCT_NAME FROM PRODUCT_MNG WHERE OBJID = A.PROD_OBJID) AS PRODUCT_NAME,
A.PART_NO,
A.PART_OBJID,
(SELECT PART_NAME FROM PART_INFO PART WHERE PART.OBJID = A.PART_OBJID) AS PART_NAME,
(SELECT SAVED_FILE_NAME FROM ATTACH_FILE_INFO WHERE TARGET_OBJID = A.PART_OBJID AND DOC_TYPE = 'PART_SHAPE' AND UPPER(STATUS) = 'ACTIVE') AS SAVED_FILE_NAME,
(SELECT REAL_FILE_NAME FROM ATTACH_FILE_INFO WHERE TARGET_OBJID = A.PART_OBJID AND DOC_TYPE = 'PART_SHAPE' AND UPPER(STATUS) = 'ACTIVE') AS REAL_FILE_NAME,
(SELECT REPLACE(FILE_PATH, '\', '\\') FILE_PATH FROM ATTACH_FILE_INFO WHERE TARGET_OBJID = A.PART_OBJID AND DOC_TYPE = 'PART_SHAPE' AND UPPER(STATUS) = 'ACTIVE') AS FILE_PATH,
(SELECT COUNT(1) FROM PMS_TRANSFER_REL_TEST_RESULT WHERE TARGET_OBJID = A.GABJI_OBJID AND PRODUCT_OBJID = A.PROD_OBJID AND UPPER(PART_TYPE) = 'ASSY') AS ASSY_TARGET_TOTAL_CNT,
(SELECT COUNT(1) FROM PMS_TRANSFER_REL_TEST_RESULT WHERE TARGET_OBJID = A.GABJI_OBJID AND PRODUCT_OBJID = A.PROD_OBJID AND UPPER(PART_TYPE) = 'PART') AS PART_TARGET_TOTAL_CNT,
CASE WHEN SUM(TEST_RESULT.ASSY_OK_CNT) IS NULL THEN 0 ELSE SUM(TEST_RESULT.ASSY_OK_CNT) END ASSY_OK_CNT,
CASE WHEN SUM(TEST_RESULT.ASSY_PROGRESS_CNT) IS NULL THEN 0 ELSE SUM(TEST_RESULT.ASSY_PROGRESS_CNT) END ASSY_PROGRESS_CNT,
CASE WHEN SUM(TEST_RESULT.PART_OK_CNT) IS NULL THEN 0 ELSE SUM(TEST_RESULT.PART_OK_CNT) END PART_OK_CNT,
CASE WHEN SUM(TEST_RESULT.PART_PROGRESS_CNT) IS NULL THEN 0 ELSE SUM(TEST_RESULT.PART_PROGRESS_CNT) END PART_PROGRESS_CNT
FROM (
SELECT
QUALITY.OBJID AS GABJI_OBJID
, M.OEM_OBJID
, M.CAR_OBJID
, M.PROD_GROUP_OBJID
, M.PROD_OBJID
, P.PART_NO
, P.PART_OBJID
FROM
PMS_DEV_MASTER M,
PMS_TRANSFER_QUALITY QUALITY,
(
SELECT
DP.*,
(SELECT (SELECT MATERIAL_TYPE_NAME FROM MATERIAL_TYPE_MNG WHERE OBJID = PART.MATERIAL_TYPE_OBJID) FROM PART_INFO PART WHERE PART.PART_NO = DP.PART_NO AND PART.IS_LAST = 1) AS MATERIAL_TYPE_NAME,
(SELECT OBJID FROM PART_INFO PART WHERE PART.PART_NO = DP.PART_NO AND PART.IS_LAST = 1) AS PART_OBJID
FROM PMS_DEV_MASTER_REL_PART_INFO DP
) P,
(
SELECT
B.TARGET_OBJID AS PROJECT_OBJID
, B.SUB_OBJID AS PROD_OBJID
, A.OEM_OBJID AS OEM_OBJID
, A.CAR_OBJID AS CAR_OBJID
FROM PMS_PJT_INFO A, PMS_REL_PJT_PROD B
WHERE 1=1
AND A.OBJID = B.TARGET_OBJID
AND UPPER(A.STATUS) = 'CONFIRM'
) PROJ_PROD
WHERE 1=1
AND M.OBJID = P.TARGET_OBJID
AND M.OEM_OBJID = QUALITY.OEM_OBJID
AND M.CAR_OBJID = QUALITY.CAR_OBJID
AND UPPER(P.DEV_POINT) = '2REALISTICPRODUCE'
AND P.MATERIAL_TYPE_NAME = '제품'
AND PROJ_PROD.OEM_OBJID = QUALITY.OEM_OBJID
AND PROJ_PROD.CAR_OBJID = QUALITY.CAR_OBJID
AND M.OEM_OBJID = PROJ_PROD.OEM_OBJID
AND M.CAR_OBJID = PROJ_PROD.CAR_OBJID
AND M.PROD_OBJID = PROJ_PROD.PROD_OBJID
) A,
(
SELECT
TEST_RESULT_PART.OBJID,
TEST_RESULT_PART.TARGET_OBJID,
TEST_RESULT_PART.TEST_RESULT_MASTER_OBJID,
TEST_RESULT_PART.TEST_RESULT_SLAVE_OBJID,
TEST_RESULT_PART.PRODUCT_OBJID,
TEST_RESULT_PART.PART_NO,
TEST_RESULT_PART.PART_TYPE,
TEST_RESULT_PART.TAKE_OVER_STATUS,
TEST_RESULT_PART.TAKE_OVER_COMMENT,
TEST_RESULT_PART.IS_LAST,
TEST_RESULT_PART.REGDATE,
TEST_RESULT_STATUS.PART_NO DEV_MASTER_PART_NO,
TEST_RESULT_STATUS.TAKE_OVER_STATUS,
TEST_RESULT_STATUS.TAKE_OVER_USER_ID,
TEST_RESULT_STATUS.TAKE_OVER_COMMENT,
TEST_RESULT_STATUS.TAKE_OVER_DATE,
CASE WHEN UPPER(TEST_RESULT_PART.PART_TYPE) = 'ASSY' THEN 1 ELSE 0 END ASSY_CNT,
CASE WHEN UPPER(TEST_RESULT_PART.PART_TYPE) = 'PART' THEN 1 ELSE 0 END PART_CNT,
CASE WHEN TEST_RESULT_STATUS.TAKE_OVER_DATE IS NOT NULL AND UPPER(TEST_RESULT_PART.PART_TYPE) = 'ASSY' THEN 1 ELSE 0 END ASSY_OK_CNT,
CASE WHEN TEST_RESULT_STATUS.TAKE_OVER_DATE IS NULL AND UPPER(TEST_RESULT_PART.PART_TYPE) = 'ASSY' THEN 1 ELSE 0 END ASSY_PROGRESS_CNT,
CASE WHEN TEST_RESULT_STATUS.TAKE_OVER_DATE IS NOT NULL AND UPPER(TEST_RESULT_PART.PART_TYPE) = 'PART' THEN 1 ELSE 0 END PART_OK_CNT,
CASE WHEN TEST_RESULT_STATUS.TAKE_OVER_DATE IS NULL AND UPPER(TEST_RESULT_PART.PART_TYPE) = 'PART' THEN 1 ELSE 0 END PART_PROGRESS_CNT
FROM
PMS_TRANSFER_REL_TEST_RESULT TEST_RESULT_PART,
PMS_TRANS_TEST_RESULT_STATUS TEST_RESULT_STATUS
WHERE 1=1
AND TEST_RESULT_PART.TARGET_OBJID = TEST_RESULT_STATUS.TRANSFER_INFO_OBJID(+)
AND TEST_RESULT_PART.PRODUCT_OBJID = TEST_RESULT_STATUS.PRODUCT_OBJID(+)
AND TEST_RESULT_PART.TEST_RESULT_MASTER_OBJID = TEST_RESULT_STATUS.TEST_RESULT_MASTER_OBJID(+)
AND TEST_RESULT_PART.TEST_RESULT_SLAVE_OBJID = TEST_RESULT_STATUS.TEST_RESULT_SLAVE_OBJID(+)
)TEST_RESULT
WHERE 1=1
AND A.PART_NO = TEST_RESULT.DEV_MASTER_PART_NO(+)
GROUP BY A.GABJI_OBJID,A.OEM_OBJID,A.CAR_OBJID,A.PROD_GROUP_OBJID,A.PROD_OBJID,A.PART_OBJID,A.PART_NO
) INFO,
(
SELECT
CAR_OBJID,
PRODUCT_OBJID,
CASE WHEN SUM(CNT) != 0 THEN ROUND((SUM(OK_CNT)/SUM(CNT))*100,0) ELSE 0 END OK_RATIO,
SUM(CNT) AS DOC_TOTAL_CNT,
SUM(OK_CNT) AS DOC_OK_TOTAL_CNT
FROM(
SELECT
OBJID,
CAR_OBJID,
PRODUCT_OBJID,
DOC_OBJID,
(SELECT TRANSLATE_TYPE FROM PMS_TRANSLATE_DOC_MNG WHERE OBJID = DOC_OBJID) AS TRANSLATE_TYPE,
STATUS,
1 AS CNT,
CASE WHEN UPPER(STATUS) = 'OK' THEN 1 ELSE 0 END OK_CNT
FROM PMS_TRANS_DOC_INFO
)WHERE UPPER(TRANSLATE_TYPE) = 'QUALITY'
GROUP BY CAR_OBJID,PRODUCT_OBJID
)DOC_TRANSFER_RESULT,
(
SELECT
OBJID,
TARGET_OBJID,
PRODUCT_OBJID,
PART_NO,
CHARGER_ID,
TAKE_OVER_STATUS,
REASON,
TAKE_OVER_COMMENT,
IS_LAST,
TAKE_OVER_DATE,
REGDATE
FROM PMS_TRANSFER_QUALITY_HISTORY
WHERE IS_LAST = 1
)HISTORY,
(
SELECT
OBJID,
TARGET_OBJID,
PRODUCT_OBJID,
CHARGER_ID,
REGDATE
FROM PMS_TRANSFER_QUALITY_CHARGER
)CHARGER_INFO
WHERE 1=1
AND INFO.OEM_OBJID = #{oemObjId}
AND INFO.CAR_OBJID = #{carObjId}
AND INFO.PROD_OBJID = #{productObjId}
AND INFO.CAR_OBJID = DOC_TRANSFER_RESULT.CAR_OBJID(+)
AND INFO.PROD_OBJID = DOC_TRANSFER_RESULT.PRODUCT_OBJID(+)
AND INFO.GABJI_OBJID = HISTORY.TARGET_OBJID(+)
AND INFO.PROD_OBJID = HISTORY.PRODUCT_OBJID(+)
AND INFO.PART_NO = HISTORY.PART_NO(+)
AND INFO.GABJI_OBJID = CHARGER_INFO.TARGET_OBJID(+)
AND INFO.PROD_OBJID = CHARGER_INFO.PRODUCT_OBJID(+)
</select>
<!-- 개발마스터 Part에 해당하는 합부판정 Part 목록을 가져온다. -->
<select id="getQualityTransferTestPartList" parameterType="map" resultType="map">
SELECT
ROW_NUMBER() OVER(ORDER BY QUALITY_MASTER.SEQ) AS RNUM
, ORA_HASH(DBMS_RANDOM.VALUE(1, 100000)) AS OBJID
, QUALITY_MASTER.PART_NO
, QUALITY_MASTER.PART_NAME
, QUALITY_MASTER.SEQ
, QUALITY_MASTER.RATE
, QUALITY_MASTER.MOLD_MAKE_COMPANY
, QUALITY_MASTER.PROBLEM_CNT
, QUALITY_MASTER.STEP1
, QUALITY_MASTER.STEP2
, QUALITY_MASTER.STATUS AS QUALITY_MASTER_STATUS
, QUALITY_MASTER.QUALITY_MASTER_OBJID
, QUALITY_SLAVE.OBJID AS QUALITY_SLAVE_OBJID
, QUALITY_SLAVE.SCORE
, QUALITY_SLAVE.RESULT
, QUALITY_SLAVE.TYPE1
, QUALITY_SLAVE.TYPE2
, INFO.TAKE_OVER_STATUS
, CASE
WHEN INFO.TAKE_OVER_STATUS IS NULL THEN '미등록'
WHEN UPPER(INFO.TAKE_OVER_STATUS) = 'OK' THEN '승인'
WHEN UPPER(INFO.TAKE_OVER_STATUS) = 'ACCEPTOK' THEN '수용승인'
WHEN UPPER(INFO.TAKE_OVER_STATUS) = 'NG' THEN '승인거부'
WHEN UPPER(INFO.TAKE_OVER_STATUS) = 'REVIEW' THEN '검토'
ELSE INFO.TAKE_OVER_STATUS
END TAKE_OVER_STATUS_TITLE
, INFO.TAKE_OVER_USER_ID
, (SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = INFO.TAKE_OVER_USER_ID) AS DEPT_NAME
, (SELECT USER_NAME FROM USER_INFO WHERE USER_ID = INFO.TAKE_OVER_USER_ID) AS USER_NAME
, INFO.TAKE_OVER_COMMENT
, INFO.TAKE_OVER_DATE
FROM (
SELECT PART.PART_MASTER_OBJID
, PART.OEM_OBJID
, PART.CAR_OBJID
, PART.PROD_GROUP_OBJID
, PART.PROD_OBJID
, PART.PART_NO
, PART.PART_NAME
, PART.SEQ
, UPPER(PART.RATE) AS RATE
, MOLD_MAKE_COMPANY
, PART.PROBLEM_CNT
, Q_M.OBJID AS QUALITY_MASTER_OBJID
, Q_M.TEST_TYPE_OBJID
, Q_M.STEP1
, Q_M.STEP2
, Q_M.STATUS
FROM (
SELECT M.OBJID AS PART_MASTER_OBJID
, M.OEM_OBJID
, M.CAR_OBJID
, M.PROD_GROUP_OBJID
, M.PROD_OBJID
, S.PART_NO
, (SELECT PART_NAME FROM PART_INFO WHERE PART_NO = S.PART_NO AND UPPER(STATUS) = 'COMPLETE' AND IS_LAST = 1) AS PART_NAME
, S.SEQ
, (SELECT RATE FROM (SELECT B.RATE, B.PART_NO FROM PMS_DEV_MASTER A, PMS_DEV_MASTER_REL_PART_INFO B WHERE A.OBJID = B.TARGET_OBJID AND B.RATE IS NOT NULL ORDER BY DEV_POINT DESC) A WHERE A.PART_NO = S.PART_NO AND ROWNUM = 1) AS RATE
, (SELECT MOLD_MAKE_COMPANY FROM (SELECT B.MOLD_MAKE_COMPANY, B.PART_NO FROM PMS_DEV_MASTER A, PMS_DEV_MASTER_REL_PART_INFO B WHERE A.OBJID = B.TARGET_OBJID AND B.MOLD_MAKE_COMPANY IS NOT NULL ORDER BY DEV_POINT DESC) A WHERE A.PART_NO = S.PART_NO AND ROWNUM = 1) AS MOLD_MAKE_COMPANY
, (SELECT COUNT(*) FROM PMS_PROBLEM_INFO WHERE PART_NO = S.PART_NO) PROBLEM_CNT
FROM PMS_PART_MASTER M, PMS_PART_MASTER_CONNECT_PART S
WHERE 1=1
AND M.OBJID = S.TARGET_OBJID
AND UPPER(S.IS_DEL) IS NULL
ORDER BY S.SEQ
) PART,
PMS_QUALITY_TEST_INFO Q_M
WHERE 1=1
AND PART.CAR_OBJID = Q_M.CAR_OBJID
AND PART.PROD_OBJID = Q_M.PROD_OBJID
) QUALITY_MASTER,
PMS_QUALITY_TEST_REL_PART_ATTR QUALITY_SLAVE,
(
SELECT
TEST_RESULT_PART.OBJID,
TEST_RESULT_PART.TARGET_OBJID,
TEST_RESULT_PART.TEST_RESULT_MASTER_OBJID,
TEST_RESULT_PART.TEST_RESULT_SLAVE_OBJID,
TEST_RESULT_PART.PRODUCT_OBJID,
TEST_RESULT_PART.PART_NO,
TEST_RESULT_PART.PART_TYPE,
TEST_RESULT_PART.REGDATE,
TEST_RESULT_STATUS.PART_NO DEV_MASTER_PART_NO,
TEST_RESULT_STATUS.TAKE_OVER_STATUS,
TEST_RESULT_STATUS.TAKE_OVER_USER_ID,
TEST_RESULT_STATUS.TAKE_OVER_COMMENT,
TEST_RESULT_STATUS.TAKE_OVER_DATE
FROM
PMS_TRANSFER_REL_TEST_RESULT TEST_RESULT_PART,
PMS_TRANS_TEST_RESULT_STATUS TEST_RESULT_STATUS
WHERE 1=1
AND TEST_RESULT_PART.TARGET_OBJID = TEST_RESULT_STATUS.TRANSFER_INFO_OBJID(+)
AND TEST_RESULT_PART.PRODUCT_OBJID = TEST_RESULT_STATUS.PRODUCT_OBJID(+)
AND TEST_RESULT_PART.TEST_RESULT_MASTER_OBJID = TEST_RESULT_STATUS.TEST_RESULT_MASTER_OBJID(+)
AND TEST_RESULT_PART.TEST_RESULT_SLAVE_OBJID = TEST_RESULT_STATUS.TEST_RESULT_SLAVE_OBJID(+)
AND TEST_RESULT_STATUS.PART_NO(+) = #{partNo}
AND TEST_RESULT_PART.TARGET_OBJID = #{targetObjId}
AND TEST_RESULT_PART.PRODUCT_OBJID = #{productObjId}
AND UPPER(TEST_RESULT_PART.PART_TYPE) = UPPER(#{partType})
)INFO
WHERE 1=1
AND QUALITY_MASTER.QUALITY_MASTER_OBJID = QUALITY_SLAVE.TARGET_OBJID(+)
AND QUALITY_MASTER.PART_NO = QUALITY_SLAVE.PART_NO(+)
AND INFO.TEST_RESULT_MASTER_OBJID = QUALITY_MASTER.QUALITY_MASTER_OBJID
AND INFO.PART_NO = QUALITY_MASTER.PART_NO
</select>
<!-- 개발마스터 Part 별 합부판정 인수 내용을 저장한다. -->
<update id="saveQualityTransferTestPartInfo" parameterType="map">
MERGE INTO PMS_TRANS_TEST_RESULT_STATUS USING DUAL
ON (
TRANSFER_INFO_OBJID = #{transferInfoObjid}
AND PRODUCT_OBJID = #{productObjId}
AND PART_NO = #{devMasterPartNo}
AND TEST_RESULT_MASTER_OBJID = #{testResultMasterObjId}
AND TEST_RESULT_SLAVE_OBJID = #{testResultSlaveObjId}
)
WHEN MATCHED THEN
UPDATE
SET
TAKE_OVER_STATUS = #{takeOverStatus},
TAKE_OVER_USER_ID = #{takeOverUserId},
TAKE_OVER_COMMENT = #{takeOverComment}
WHEN NOT MATCHED THEN
INSERT
(
OBJID,
TEST_RESULT_MASTER_OBJID,
TEST_RESULT_SLAVE_OBJID,
TRANSFER_INFO_OBJID,
PRODUCT_OBJID,
PART_NO,
TAKE_OVER_STATUS,
TAKE_OVER_USER_ID,
TAKE_OVER_COMMENT,
REGDATE
)
VALUES
(
#{objId},
#{testResultMasterObjId},
#{testResultSlaveObjId},
#{transferInfoObjid},
#{productObjId},
#{devMasterPartNo},
#{takeOverStatus},
#{takeOverUserId},
#{takeOverComment},
SYSDATE
)
</update>
<!-- 개발마스터 Assy Part의 인수이력을 가져온다. -->
<select id="getQualityTransferHistoryList" parameterType="map" resultType="map">
SELECT
ROW_NUMBER() OVER(ORDER BY HISTORY.REGDATE DESC) RNUM,
HISTORY.OBJID,
HISTORY.TARGET_OBJID,
HISTORY.PRODUCT_OBJID,
HISTORY.PART_NO,
HISTORY.CHARGER_ID,
(SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = HISTORY.CHARGER_ID) AS DEPT_NAME,
(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = HISTORY.CHARGER_ID) AS USER_NAME,
HISTORY.TAKE_OVER_STATUS,
CASE
WHEN HISTORY.TAKE_OVER_STATUS IS NULL THEN '미등록'
WHEN UPPER(HISTORY.TAKE_OVER_STATUS) = 'OK' THEN '승인'
WHEN UPPER(HISTORY.TAKE_OVER_STATUS) = 'ACCEPTOK' THEN '수용승인'
WHEN UPPER(HISTORY.TAKE_OVER_STATUS) = 'NG' THEN '승인거부'
WHEN UPPER(HISTORY.TAKE_OVER_STATUS) = 'REVIEW' THEN '검토'
ELSE HISTORY.TAKE_OVER_STATUS
END TAKE_OVER_STATUS_TITLE,
HISTORY.REASON,
HISTORY.TAKE_OVER_COMMENT,
HISTORY.IS_LAST,
HISTORY.TAKE_OVER_DATE,
CASE WHEN HISTORY.TAKE_OVER_DATE IS NOT NULL THEN TO_CHAR(HISTORY.TAKE_OVER_DATE,'YYYY-MM-DD') ELSE '' END TAKE_OVER_DATE_TITLE,
HISTORY.REGDATE,
(SELECT COUNT(1) FROM ATTACH_FILE_INFO WHERE TARGET_OBJID = HISTORY.OBJID AND DOC_TYPE = #{docType}) AS REL_FILE_CNT
FROM PMS_TRANSFER_QUALITY_HISTORY HISTORY
WHERE HISTORY.TARGET_OBJID = #{targetObjId}
AND HISTORY.PRODUCT_OBJID = #{productObjId}
AND HISTORY.PART_NO = #{partNo}
</select>
<!-- 개발마스터 Assy Part의 인수이력을 가져온다. -->
<select id="getQualityTransferHistoryInfo" parameterType="map" resultType="map">
SELECT
ROW_NUMBER() OVER(ORDER BY HISTORY.REGDATE DESC) RNUM,
HISTORY.OBJID,
HISTORY.TARGET_OBJID,
HISTORY.PRODUCT_OBJID,
HISTORY.PART_NO,
HISTORY.CHARGER_ID,
(SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = HISTORY.CHARGER_ID) AS DEPT_NAME,
(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = HISTORY.CHARGER_ID) AS USER_NAME,
HISTORY.TAKE_OVER_STATUS,
CASE
WHEN HISTORY.TAKE_OVER_STATUS IS NULL THEN '미등록'
WHEN UPPER(HISTORY.TAKE_OVER_STATUS) = 'OK' THEN '승인'
WHEN UPPER(HISTORY.TAKE_OVER_STATUS) = 'ACCEPTOK' THEN '수용승인'
WHEN UPPER(HISTORY.TAKE_OVER_STATUS) = 'NG' THEN '승인거부'
WHEN UPPER(HISTORY.TAKE_OVER_STATUS) = 'REVIEW' THEN '검토'
ELSE HISTORY.TAKE_OVER_STATUS
END TAKE_OVER_STATUS_TITLE,
HISTORY.REASON,
HISTORY.TAKE_OVER_COMMENT,
HISTORY.IS_LAST,
HISTORY.TAKE_OVER_DATE,
CASE WHEN HISTORY.TAKE_OVER_DATE IS NOT NULL THEN TO_CHAR(HISTORY.TAKE_OVER_DATE,'YYYY-MM-DD') ELSE '' END TAKE_OVER_DATE_TITLE,
HISTORY.REGDATE,
(SELECT COUNT(1) FROM ATTACH_FILE_INFO WHERE TARGET_OBJID = HISTORY.OBJID AND DOC_TYPE = #{docType}) AS REL_FILE_CNT
FROM PMS_TRANSFER_QUALITY_HISTORY HISTORY
WHERE HISTORY.TARGET_OBJID = #{targetObjId}
AND HISTORY.PRODUCT_OBJID = #{productObjId}
AND HISTORY.PART_NO = #{partNo}
AND HISTORY.OBJID = #{objId}
</select>
<!-- 품질이관 인수 내용저장 -->
<update id="saveQualityTransferTakeOverInfo" parameterType="map">
MERGE INTO PMS_TRANSFER_QUALITY_HISTORY USING DUAL
ON (
OBJID = #{objId}
AND TARGET_OBJID = #{targetObjId}
AND PRODUCT_OBJID = #{productObjId}
AND PART_NO = #{partNo}
)
WHEN MATCHED THEN
UPDATE
SET
TAKE_OVER_STATUS = #{takeOverStatus},
REASON = #{takeOverReason},
TAKE_OVER_COMMENT = #{takeOverComment}
WHEN NOT MATCHED THEN
INSERT
(
OBJID,
TARGET_OBJID,
PRODUCT_OBJID,
PART_NO,
CHARGER_ID,
TAKE_OVER_STATUS,
REASON,
TAKE_OVER_COMMENT,
IS_LAST,
REGDATE
)
VALUES
(
#{objId},
#{targetObjId},
#{productObjId},
#{partNo},
#{chargerId},
#{takeOverStatus},
#{takeOverReason},
#{takeOverComment},
1,
SYSDATE
)
</update>
<!-- 품질이관 인수 내용 중 과거 내용의 IS_LAST를 변경한다. -->
<update id="changeQualityTransferIsLastInfo" parameterType="map">
UPDATE PMS_TRANSFER_QUALITY_HISTORY SET IS_LAST = 0 WHERE OBJID != #{objId} AND TARGET_OBJID = #{targetObjId} AND PRODUCT_OBJID = #{productObjId} AND PART_NO = #{partNo}
</update>
<!-- 품질이관 인수 내용 중 과거 내용의 IS_LAST를 변경한다. -->
<update id="confirmQualityTransferTakeOverInfo" parameterType="map">
UPDATE PMS_TRANSFER_QUALITY_HISTORY SET TAKE_OVER_DATE = SYSDATE WHERE OBJID = #{objId} AND TARGET_OBJID = #{targetObjId} AND PRODUCT_OBJID = #{productObjId} AND PART_NO = #{partNo}
</update>
<!-- 품질인관 최종 인수확정 전 확정 가능여부를 확인한다. -->
<select id="checkConfirmQualityTransferTakeOverInfo" parameterType="map" resultType="map">
SELECT
INFO.*,
DOC_TRANSFER_RESULT.OK_RATIO,
CASE WHEN DOC_TRANSFER_RESULT.OK_RATIO = 100 THEN OK ELSE NG END DOC_TRANSFER_STATUS,
DOC_TRANSFER_RESULT.DOC_TOTAL_CNT,
DOC_TRANSFER_RESULT.DOC_OK_TOTAL_CNT,
HISTORY.OBJID AS HISTORY_OBJID,
HISTORY.CHARGER_ID,
(SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = HISTORY.CHARGER_ID) HISTORY_DEPT_NAME,
(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = HISTORY.CHARGER_ID) HISTORY_USER_NAME,
HISTORY.TAKE_OVER_STATUS,
HISTORY.REASON,
HISTORY.TAKE_OVER_COMMENT,
CASE
WHEN HISTORY.TAKE_OVER_STATUS IS NULL THEN '미등록'
WHEN UPPER(HISTORY.TAKE_OVER_STATUS) = 'OK' THEN '승인'
WHEN UPPER(HISTORY.TAKE_OVER_STATUS) = 'ACCEPTOK' THEN '수용승인'
WHEN UPPER(HISTORY.TAKE_OVER_STATUS) = 'NG' THEN '승인거부'
WHEN UPPER(HISTORY.TAKE_OVER_STATUS) = 'REVIEW' THEN '검토'
ELSE HISTORY.TAKE_OVER_STATUS
END TAKE_OVER_STATUS_TITLE,
HISTORY.TAKE_OVER_DATE,
CHARGER_INFO.CHARGER_ID AS PRODUCT_CHARGER_ID,
CASE WHEN (INFO.ASSY_TARGET_TOTAL_CNT+INFO.PART_TARGET_TOTAL_CNT) > 0 THEN ROUND(((INFO.ASSY_OK_CNT+INFO.PART_OK_CNT)/(INFO.ASSY_TARGET_TOTAL_CNT+INFO.PART_TARGET_TOTAL_CNT))*100,0) ELSE 0 END TEST_RESULT_RATIO
FROM(
SELECT
A.GABJI_OBJID,
A.OEM_OBJID,
A.CAR_OBJID,
A.PROD_GROUP_OBJID,
(SELECT PRODUCT_GROUP_NAME FROM PRODUCT_GROUP_MNG WHERE OBJID = A.PROD_GROUP_OBJID) AS PRODUCT_GROUP_NAME,
A.PROD_OBJID,
(SELECT PRODUCT_NAME FROM PRODUCT_MNG WHERE OBJID = A.PROD_OBJID) AS PRODUCT_NAME,
A.PART_NO,
A.PART_OBJID,
(SELECT PART_NAME FROM PART_INFO PART WHERE PART.OBJID = A.PART_OBJID) AS PART_NAME,
(SELECT SAVED_FILE_NAME FROM ATTACH_FILE_INFO WHERE TARGET_OBJID = A.PART_OBJID AND DOC_TYPE = 'PART_SHAPE' AND UPPER(STATUS) = 'ACTIVE') AS SAVED_FILE_NAME,
(SELECT REAL_FILE_NAME FROM ATTACH_FILE_INFO WHERE TARGET_OBJID = A.PART_OBJID AND DOC_TYPE = 'PART_SHAPE' AND UPPER(STATUS) = 'ACTIVE') AS REAL_FILE_NAME,
(SELECT REPLACE(FILE_PATH, '\', '\\') FILE_PATH FROM ATTACH_FILE_INFO WHERE TARGET_OBJID = A.PART_OBJID AND DOC_TYPE = 'PART_SHAPE' AND UPPER(STATUS) = 'ACTIVE') AS FILE_PATH,
(SELECT COUNT(1) FROM PMS_TRANSFER_REL_TEST_RESULT WHERE TARGET_OBJID = A.GABJI_OBJID AND PRODUCT_OBJID = A.PROD_OBJID AND UPPER(PART_TYPE) = 'ASSY') AS ASSY_TARGET_TOTAL_CNT,
(SELECT COUNT(1) FROM PMS_TRANSFER_REL_TEST_RESULT WHERE TARGET_OBJID = A.GABJI_OBJID AND PRODUCT_OBJID = A.PROD_OBJID AND UPPER(PART_TYPE) = 'PART') AS PART_TARGET_TOTAL_CNT,
CASE WHEN SUM(TEST_RESULT.ASSY_OK_CNT) IS NULL THEN 0 ELSE SUM(TEST_RESULT.ASSY_OK_CNT) END ASSY_OK_CNT,
CASE WHEN SUM(TEST_RESULT.ASSY_PROGRESS_CNT) IS NULL THEN 0 ELSE SUM(TEST_RESULT.ASSY_PROGRESS_CNT) END ASSY_PROGRESS_CNT,
CASE WHEN SUM(TEST_RESULT.PART_OK_CNT) IS NULL THEN 0 ELSE SUM(TEST_RESULT.PART_OK_CNT) END PART_OK_CNT,
CASE WHEN SUM(TEST_RESULT.PART_PROGRESS_CNT) IS NULL THEN 0 ELSE SUM(TEST_RESULT.PART_PROGRESS_CNT) END PART_PROGRESS_CNT
FROM (
SELECT
QUALITY.OBJID AS GABJI_OBJID
, M.OEM_OBJID
, M.CAR_OBJID
, M.PROD_GROUP_OBJID
, M.PROD_OBJID
, P.PART_NO
, P.PART_OBJID
FROM
PMS_DEV_MASTER M,
PMS_TRANSFER_QUALITY QUALITY,
(
SELECT
DP.*,
(SELECT (SELECT MATERIAL_TYPE_NAME FROM MATERIAL_TYPE_MNG WHERE OBJID = PART.MATERIAL_TYPE_OBJID) FROM PART_INFO PART WHERE PART.PART_NO = DP.PART_NO AND PART.IS_LAST = 1) AS MATERIAL_TYPE_NAME,
(SELECT OBJID FROM PART_INFO PART WHERE PART.PART_NO = DP.PART_NO AND PART.IS_LAST = 1) AS PART_OBJID
FROM PMS_DEV_MASTER_REL_PART_INFO DP
) P,
(
SELECT
B.TARGET_OBJID AS PROJECT_OBJID
, B.SUB_OBJID AS PROD_OBJID
, A.OEM_OBJID AS OEM_OBJID
, A.CAR_OBJID AS CAR_OBJID
FROM PMS_PJT_INFO A, PMS_REL_PJT_PROD B
WHERE 1=1
AND A.OBJID = B.TARGET_OBJID
AND UPPER(A.STATUS) = 'CONFIRM'
) PROJ_PROD
WHERE 1=1
AND M.OBJID = P.TARGET_OBJID
AND M.OEM_OBJID = QUALITY.OEM_OBJID
AND M.CAR_OBJID = QUALITY.CAR_OBJID
AND UPPER(P.DEV_POINT) = '2REALISTICPRODUCE'
AND P.MATERIAL_TYPE_NAME = '제품'
AND PROJ_PROD.OEM_OBJID = QUALITY.OEM_OBJID
AND PROJ_PROD.CAR_OBJID = QUALITY.CAR_OBJID
AND M.OEM_OBJID = PROJ_PROD.OEM_OBJID
AND M.CAR_OBJID = PROJ_PROD.CAR_OBJID
AND M.PROD_OBJID = PROJ_PROD.PROD_OBJID
) A,
(
SELECT
TEST_RESULT_PART.OBJID,
TEST_RESULT_PART.TARGET_OBJID,
TEST_RESULT_PART.TEST_RESULT_MASTER_OBJID,
TEST_RESULT_PART.TEST_RESULT_SLAVE_OBJID,
TEST_RESULT_PART.PRODUCT_OBJID,
TEST_RESULT_PART.PART_NO,
TEST_RESULT_PART.PART_TYPE,
TEST_RESULT_PART.TAKE_OVER_STATUS,
TEST_RESULT_PART.TAKE_OVER_COMMENT,
TEST_RESULT_PART.IS_LAST,
TEST_RESULT_PART.REGDATE,
TEST_RESULT_STATUS.PART_NO DEV_MASTER_PART_NO,
TEST_RESULT_STATUS.TAKE_OVER_STATUS,
TEST_RESULT_STATUS.TAKE_OVER_USER_ID,
TEST_RESULT_STATUS.TAKE_OVER_COMMENT,
TEST_RESULT_STATUS.TAKE_OVER_DATE,
CASE WHEN UPPER(TEST_RESULT_PART.PART_TYPE) = 'ASSY' THEN 1 ELSE 0 END ASSY_CNT,
CASE WHEN UPPER(TEST_RESULT_PART.PART_TYPE) = 'PART' THEN 1 ELSE 0 END PART_CNT,
CASE WHEN TEST_RESULT_STATUS.TAKE_OVER_DATE IS NOT NULL AND UPPER(TEST_RESULT_PART.PART_TYPE) = 'ASSY' THEN 1 ELSE 0 END ASSY_OK_CNT,
CASE WHEN TEST_RESULT_STATUS.TAKE_OVER_DATE IS NULL AND UPPER(TEST_RESULT_PART.PART_TYPE) = 'ASSY' THEN 1 ELSE 0 END ASSY_PROGRESS_CNT,
CASE WHEN TEST_RESULT_STATUS.TAKE_OVER_DATE IS NOT NULL AND UPPER(TEST_RESULT_PART.PART_TYPE) = 'PART' THEN 1 ELSE 0 END PART_OK_CNT,
CASE WHEN TEST_RESULT_STATUS.TAKE_OVER_DATE IS NULL AND UPPER(TEST_RESULT_PART.PART_TYPE) = 'PART' THEN 1 ELSE 0 END PART_PROGRESS_CNT
FROM
PMS_TRANSFER_REL_TEST_RESULT TEST_RESULT_PART,
PMS_TRANS_TEST_RESULT_STATUS TEST_RESULT_STATUS
WHERE 1=1
AND TEST_RESULT_PART.TARGET_OBJID = TEST_RESULT_STATUS.TRANSFER_INFO_OBJID(+)
AND TEST_RESULT_PART.PRODUCT_OBJID = TEST_RESULT_STATUS.PRODUCT_OBJID(+)
AND TEST_RESULT_PART.TEST_RESULT_MASTER_OBJID = TEST_RESULT_STATUS.TEST_RESULT_MASTER_OBJID(+)
AND TEST_RESULT_PART.TEST_RESULT_SLAVE_OBJID = TEST_RESULT_STATUS.TEST_RESULT_SLAVE_OBJID(+)
)TEST_RESULT
WHERE 1=1
AND A.PART_NO = TEST_RESULT.DEV_MASTER_PART_NO(+)
GROUP BY A.GABJI_OBJID,A.OEM_OBJID,A.CAR_OBJID,A.PROD_GROUP_OBJID,A.PROD_OBJID,A.PART_OBJID,A.PART_NO
) INFO,
(
SELECT
CAR_OBJID,
PRODUCT_OBJID,
CASE WHEN SUM(CNT) != 0 THEN ROUND((SUM(OK_CNT)/SUM(CNT))*100,0) ELSE 0 END OK_RATIO,
SUM(CNT) AS DOC_TOTAL_CNT,
SUM(OK_CNT) AS DOC_OK_TOTAL_CNT
FROM(
SELECT
OBJID,
CAR_OBJID,
PRODUCT_OBJID,
DOC_OBJID,
(SELECT TRANSLATE_TYPE FROM PMS_TRANSLATE_DOC_MNG WHERE OBJID = DOC_OBJID) AS TRANSLATE_TYPE,
STATUS,
1 AS CNT,
CASE WHEN UPPER(STATUS) = 'OK' THEN 1 ELSE 0 END OK_CNT
FROM PMS_TRANS_DOC_INFO
)WHERE UPPER(TRANSLATE_TYPE) = 'QUALITY'
GROUP BY CAR_OBJID,PRODUCT_OBJID
)DOC_TRANSFER_RESULT,
(
SELECT
OBJID,
TARGET_OBJID,
PRODUCT_OBJID,
PART_NO,
CHARGER_ID,
TAKE_OVER_STATUS,
REASON,
TAKE_OVER_COMMENT,
IS_LAST,
TAKE_OVER_DATE,
REGDATE
FROM PMS_TRANSFER_QUALITY_HISTORY
WHERE IS_LAST = 1
)HISTORY,
(
SELECT
OBJID,
TARGET_OBJID,
PRODUCT_OBJID,
CHARGER_ID,
REGDATE
FROM PMS_TRANSFER_QUALITY_CHARGER
)CHARGER_INFO
WHERE 1=1
AND INFO.OEM_OBJID = #{oemObjId}
AND INFO.CAR_OBJID = #{carObjId}
AND INFO.PROD_OBJID = #{productObjId}
AND INFO.CAR_OBJID = DOC_TRANSFER_RESULT.CAR_OBJID(+)
AND INFO.PROD_OBJID = DOC_TRANSFER_RESULT.PRODUCT_OBJID(+)
AND INFO.GABJI_OBJID = HISTORY.TARGET_OBJID(+)
AND INFO.PROD_OBJID = HISTORY.PRODUCT_OBJID(+)
AND INFO.PART_NO = HISTORY.PART_NO(+)
AND INFO.GABJI_OBJID = CHARGER_INFO.TARGET_OBJID(+)
AND INFO.PROD_OBJID = CHARGER_INFO.PRODUCT_OBJID(+)
</select>
<!-- 품질이관 갑지에 해당하는 개발마스터 Part를 가져온다. -->
<select id="getQualityTransferBaseInfoPartList" parameterType="map" resultType="map">
SELECT
INFO.*,
CASE WHEN (DOC_OK_RATIO > 0 OR TEST_RESULT_RATIO > 0) THEN (DOC_OK_RATIO+TEST_RESULT_RATIO/2) ELSE 0 END AS PRODUCT_TOTAL_RATIO
FROM(
SELECT
INFO.*,
DOC_TRANSFER_RESULT.OK_RATIO AS DOC_OK_RATIO,
DOC_TRANSFER_RESULT.DOC_TOTAL_CNT,
DOC_TRANSFER_RESULT.DOC_OK_TOTAL_CNT,
HISTORY.OBJID AS HISTORY_OBJID,
HISTORY.CHARGER_ID,
(SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = HISTORY.CHARGER_ID) HISTORY_DEPT_NAME,
(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = HISTORY.CHARGER_ID) HISTORY_USER_NAME,
HISTORY.TAKE_OVER_STATUS,
HISTORY.REASON,
HISTORY.TAKE_OVER_COMMENT,
CASE
WHEN HISTORY.TAKE_OVER_STATUS IS NULL THEN '미등록'
WHEN UPPER(HISTORY.TAKE_OVER_STATUS) = 'OK' THEN '승인'
WHEN UPPER(HISTORY.TAKE_OVER_STATUS) = 'ACCEPTOK' THEN '수용승인'
WHEN UPPER(HISTORY.TAKE_OVER_STATUS) = 'NG' THEN '승인거부'
WHEN UPPER(HISTORY.TAKE_OVER_STATUS) = 'REVIEW' THEN '검토'
ELSE HISTORY.TAKE_OVER_STATUS
END TAKE_OVER_STATUS_TITLE,
HISTORY.TAKE_OVER_DATE,
CASE WHEN HISTORY.TAKE_OVER_DATE IS NOT NULL THEN TO_CHAR(HISTORY.TAKE_OVER_DATE,'YYYY-MM-DD') ELSE '' END TAKE_OVER_DATE_TITLE,
CHARGER_INFO.CHARGER_ID AS PRODUCT_CHARGER_ID,
CASE WHEN (INFO.ASSY_TARGET_TOTAL_CNT+INFO.PART_TARGET_TOTAL_CNT) > 0 THEN ROUND(((INFO.ASSY_OK_CNT+INFO.PART_OK_CNT)/(INFO.ASSY_TARGET_TOTAL_CNT+INFO.PART_TARGET_TOTAL_CNT))*100,0) ELSE 0 END TEST_RESULT_RATIO
FROM(
SELECT
A.GABJI_OBJID,
A.OEM_OBJID,
A.CAR_OBJID,
A.PROD_GROUP_OBJID,
(SELECT PRODUCT_GROUP_NAME FROM PRODUCT_GROUP_MNG WHERE OBJID = A.PROD_GROUP_OBJID) AS PRODUCT_GROUP_NAME,
A.PROD_OBJID,
(SELECT PRODUCT_NAME FROM PRODUCT_MNG WHERE OBJID = A.PROD_OBJID) AS PRODUCT_NAME,
A.PART_NO,
A.PART_OBJID,
(SELECT PART_NAME FROM PART_INFO PART WHERE PART.OBJID = A.PART_OBJID) AS PART_NAME,
(SELECT SAVED_FILE_NAME FROM ATTACH_FILE_INFO WHERE TARGET_OBJID = A.PART_OBJID AND DOC_TYPE = 'PART_SHAPE' AND UPPER(STATUS) = 'ACTIVE') AS SAVED_FILE_NAME,
(SELECT REAL_FILE_NAME FROM ATTACH_FILE_INFO WHERE TARGET_OBJID = A.PART_OBJID AND DOC_TYPE = 'PART_SHAPE' AND UPPER(STATUS) = 'ACTIVE') AS REAL_FILE_NAME,
(SELECT REPLACE(FILE_PATH, '\', '\\') FILE_PATH FROM ATTACH_FILE_INFO WHERE TARGET_OBJID = A.PART_OBJID AND DOC_TYPE = 'PART_SHAPE' AND UPPER(STATUS) = 'ACTIVE') AS FILE_PATH,
(SELECT COUNT(1) FROM PMS_TRANSFER_REL_TEST_RESULT WHERE TARGET_OBJID = A.GABJI_OBJID AND PRODUCT_OBJID = A.PROD_OBJID AND UPPER(PART_TYPE) = 'ASSY') AS ASSY_TARGET_TOTAL_CNT,
(SELECT COUNT(1) FROM PMS_TRANSFER_REL_TEST_RESULT WHERE TARGET_OBJID = A.GABJI_OBJID AND PRODUCT_OBJID = A.PROD_OBJID AND UPPER(PART_TYPE) = 'PART') AS PART_TARGET_TOTAL_CNT,
CASE WHEN SUM(TEST_RESULT.ASSY_OK_CNT) IS NULL THEN 0 ELSE SUM(TEST_RESULT.ASSY_OK_CNT) END ASSY_OK_CNT,
CASE WHEN SUM(TEST_RESULT.ASSY_PROGRESS_CNT) IS NULL THEN 0 ELSE SUM(TEST_RESULT.ASSY_PROGRESS_CNT) END ASSY_PROGRESS_CNT,
CASE WHEN SUM(TEST_RESULT.PART_OK_CNT) IS NULL THEN 0 ELSE SUM(TEST_RESULT.PART_OK_CNT) END PART_OK_CNT,
CASE WHEN SUM(TEST_RESULT.PART_PROGRESS_CNT) IS NULL THEN 0 ELSE SUM(TEST_RESULT.PART_PROGRESS_CNT) END PART_PROGRESS_CNT
FROM (
SELECT
QUALITY.OBJID AS GABJI_OBJID
, M.OEM_OBJID
, M.CAR_OBJID
, M.PROD_GROUP_OBJID
, M.PROD_OBJID
, P.PART_NO
, P.PART_OBJID
FROM
PMS_DEV_MASTER M,
PMS_TRANSFER_QUALITY QUALITY,
(
SELECT
DP.*,
(SELECT (SELECT MATERIAL_TYPE_NAME FROM MATERIAL_TYPE_MNG WHERE OBJID = PART.MATERIAL_TYPE_OBJID) FROM PART_INFO PART WHERE PART.PART_NO = DP.PART_NO AND PART.IS_LAST = 1) AS MATERIAL_TYPE_NAME,
(SELECT OBJID FROM PART_INFO PART WHERE PART.PART_NO = DP.PART_NO AND PART.IS_LAST = 1) AS PART_OBJID
FROM PMS_DEV_MASTER_REL_PART_INFO DP
) P,
(
SELECT
B.TARGET_OBJID AS PROJECT_OBJID
, B.SUB_OBJID AS PROD_OBJID
, A.OEM_OBJID AS OEM_OBJID
, A.CAR_OBJID AS CAR_OBJID
FROM PMS_PJT_INFO A, PMS_REL_PJT_PROD B
WHERE 1=1
AND A.OBJID = B.TARGET_OBJID
AND UPPER(A.STATUS) = 'CONFIRM'
) PROJ_PROD
WHERE 1=1
AND M.OBJID = P.TARGET_OBJID
AND M.OEM_OBJID = QUALITY.OEM_OBJID
AND M.CAR_OBJID = QUALITY.CAR_OBJID
AND UPPER(P.DEV_POINT) = '2REALISTICPRODUCE'
AND P.MATERIAL_TYPE_NAME = '제품'
AND PROJ_PROD.OEM_OBJID = QUALITY.OEM_OBJID
AND PROJ_PROD.CAR_OBJID = QUALITY.CAR_OBJID
AND M.OEM_OBJID = PROJ_PROD.OEM_OBJID
AND M.CAR_OBJID = PROJ_PROD.CAR_OBJID
AND M.PROD_OBJID = PROJ_PROD.PROD_OBJID
) A,
(
SELECT
TEST_RESULT_PART.OBJID,
TEST_RESULT_PART.TARGET_OBJID,
TEST_RESULT_PART.TEST_RESULT_MASTER_OBJID,
TEST_RESULT_PART.TEST_RESULT_SLAVE_OBJID,
TEST_RESULT_PART.PRODUCT_OBJID,
TEST_RESULT_PART.PART_NO,
TEST_RESULT_PART.PART_TYPE,
TEST_RESULT_PART.TAKE_OVER_STATUS,
TEST_RESULT_PART.TAKE_OVER_COMMENT,
TEST_RESULT_PART.IS_LAST,
TEST_RESULT_PART.REGDATE,
TEST_RESULT_STATUS.PART_NO DEV_MASTER_PART_NO,
TEST_RESULT_STATUS.TAKE_OVER_STATUS,
TEST_RESULT_STATUS.TAKE_OVER_USER_ID,
TEST_RESULT_STATUS.TAKE_OVER_COMMENT,
TEST_RESULT_STATUS.TAKE_OVER_DATE,
CASE WHEN UPPER(TEST_RESULT_PART.PART_TYPE) = 'ASSY' THEN 1 ELSE 0 END ASSY_CNT,
CASE WHEN UPPER(TEST_RESULT_PART.PART_TYPE) = 'PART' THEN 1 ELSE 0 END PART_CNT,
CASE WHEN TEST_RESULT_STATUS.TAKE_OVER_DATE IS NOT NULL AND UPPER(TEST_RESULT_PART.PART_TYPE) = 'ASSY' THEN 1 ELSE 0 END ASSY_OK_CNT,
CASE WHEN TEST_RESULT_STATUS.TAKE_OVER_DATE IS NULL AND UPPER(TEST_RESULT_PART.PART_TYPE) = 'ASSY' THEN 1 ELSE 0 END ASSY_PROGRESS_CNT,
CASE WHEN TEST_RESULT_STATUS.TAKE_OVER_DATE IS NOT NULL AND UPPER(TEST_RESULT_PART.PART_TYPE) = 'PART' THEN 1 ELSE 0 END PART_OK_CNT,
CASE WHEN TEST_RESULT_STATUS.TAKE_OVER_DATE IS NULL AND UPPER(TEST_RESULT_PART.PART_TYPE) = 'PART' THEN 1 ELSE 0 END PART_PROGRESS_CNT
FROM
PMS_TRANSFER_REL_TEST_RESULT TEST_RESULT_PART,
PMS_TRANS_TEST_RESULT_STATUS TEST_RESULT_STATUS
WHERE 1=1
AND TEST_RESULT_PART.TARGET_OBJID = TEST_RESULT_STATUS.TRANSFER_INFO_OBJID(+)
AND TEST_RESULT_PART.PRODUCT_OBJID = TEST_RESULT_STATUS.PRODUCT_OBJID(+)
AND TEST_RESULT_PART.TEST_RESULT_MASTER_OBJID = TEST_RESULT_STATUS.TEST_RESULT_MASTER_OBJID(+)
AND TEST_RESULT_PART.TEST_RESULT_SLAVE_OBJID = TEST_RESULT_STATUS.TEST_RESULT_SLAVE_OBJID(+)
)TEST_RESULT
WHERE 1=1
AND A.PART_NO = TEST_RESULT.DEV_MASTER_PART_NO(+)
GROUP BY A.GABJI_OBJID,A.OEM_OBJID,A.CAR_OBJID,A.PROD_GROUP_OBJID,A.PROD_OBJID,A.PART_OBJID,A.PART_NO
) INFO,
(
SELECT
CAR_OBJID,
PRODUCT_OBJID,
CASE WHEN SUM(CNT) != 0 THEN ROUND((SUM(OK_CNT)/SUM(CNT))*100,0) ELSE 0 END OK_RATIO,
SUM(CNT) AS DOC_TOTAL_CNT,
SUM(OK_CNT) AS DOC_OK_TOTAL_CNT
FROM(
SELECT
OBJID,
CAR_OBJID,
PRODUCT_OBJID,
DOC_OBJID,
(SELECT TRANSLATE_TYPE FROM PMS_TRANSLATE_DOC_MNG WHERE OBJID = DOC_OBJID) AS TRANSLATE_TYPE,
STATUS,
1 AS CNT,
CASE WHEN UPPER(STATUS) = 'OK' THEN 1 ELSE 0 END OK_CNT
FROM PMS_TRANS_DOC_INFO
)WHERE UPPER(TRANSLATE_TYPE) = 'QUALITY'
GROUP BY CAR_OBJID,PRODUCT_OBJID
)DOC_TRANSFER_RESULT,
(
SELECT
OBJID,
TARGET_OBJID,
PRODUCT_OBJID,
PART_NO,
CHARGER_ID,
TAKE_OVER_STATUS,
REASON,
TAKE_OVER_COMMENT,
IS_LAST,
TAKE_OVER_DATE,
REGDATE
FROM PMS_TRANSFER_QUALITY_HISTORY
WHERE IS_LAST = 1
)HISTORY,
(
SELECT
OBJID,
TARGET_OBJID,
PRODUCT_OBJID,
CHARGER_ID,
REGDATE
FROM PMS_TRANSFER_QUALITY_CHARGER
)CHARGER_INFO
WHERE 1=1
AND INFO.GABJI_OBJID = #{objId}
AND INFO.CAR_OBJID = DOC_TRANSFER_RESULT.CAR_OBJID(+)
AND INFO.PROD_OBJID = DOC_TRANSFER_RESULT.PRODUCT_OBJID(+)
AND INFO.GABJI_OBJID = HISTORY.TARGET_OBJID(+)
AND INFO.PROD_OBJID = HISTORY.PRODUCT_OBJID(+)
AND INFO.PART_NO = HISTORY.PART_NO(+)
AND INFO.GABJI_OBJID = CHARGER_INFO.TARGET_OBJID(+)
AND INFO.PROD_OBJID = CHARGER_INFO.PRODUCT_OBJID(+)
)INFO
</select>
<!-- euidon end -->
</mapper>