- 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
3371 lines
164 KiB
XML
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> |