Files
vexplor/src/com/pms/mapper/productDev.xml
2025-08-21 09:41:46 +09:00

2465 lines
101 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="productDev">
<!-- //EO 적용현황 목록조회 -->
<select id="getEOApplyStatusListCnt" parameterType="map" resultType="map">
SELECT CEIL(TOTAL_CNT/#{COUNT_PER_PAGE}) MAX_PAGE_SIZE,
TOTAL_CNT
FROM (
SELECT COUNT(1) TOTAL_CNT
FROM(
SELECT PART.OBJID AS PART_OBJID
, PART.OEM_OBJID
, (SELECT OEM_NAME FROM OEM_MNG WHERE OBJID = PART.OEM_OBJID) AS OEM_NAME
, PART.CAR_OBJID
, (SELECT CAR_NAME FROM CAR_MNG WHERE OBJID = PART.CAR_OBJID) AS CAR_NAME
, (SELECT CAR_CODE FROM CAR_MNG WHERE OBJID = PART.CAR_OBJID) AS CAR_CODE
, (SELECT MODEL_CODE FROM CAR_MNG WHERE OBJID = PART.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
, PART.PART_NAME
, PART.EO_NO
, TO_CHAR(PART.EO_ISSUE_DATE, 'YYYY-MM-DD') AS EO_ISSUE_DATE
, PART.APPLY_POINT_OBJID
, (SELECT APPLY_POINT_NAME FROM APPLY_POINT_MNG WHERE OBJID = PART.APPLY_POINT_OBJID) AS APPLY_POINT_NAME
, APPLY.OBJID AS EO_APPLY_OBJID
, APPLY.ILJI_APPLY_POINT_STEP1
, APPLY.ILJI_APPLY_POINT_STEP2
, TO_CHAR(APPLY.ILJI_APPLY_POINT_DATE, 'YYYY-MM-DD') AS ILJI_APPLY_POINT_DATE
, APPLY.MOLD_MODIFY_DOC_WRITE_TYPE
, APPLY.MOLD_EO_APPLY_TYPE_NEW
, APPLY.MOLD_EO_APPLY_TYPE_DISUSE
, APPLY.MOLD_EO_APPLY_TYPE_MODIFY
, APPLY.MOLD_VAATZ_NO
, TO_CHAR(APPLY.MOLD_VAATZ_CONFIRM_DATE, 'YYYY-MM-DD') AS MOLD_VAATZ_CONFIRM_DATE
, APPLY.JIG_MODIFY_DOC_WRITE_TYPE
, APPLY.JIG_EO_APPLY_TYPE_NEW
, APPLY.JIG_EO_APPLY_TYPE_DISUSE
, APPLY.JIG_EO_APPLY_TYPE_MODIFY
, APPLY.JIG_VAATZ_NO
, TO_CHAR(APPLY.JIG_VAATZ_CONFIRM_DATE, 'YYYY-MM-DD') AS JIG_VAATZ_CONFIRM_DATE
, TO_CHAR(PART.EO_ISSUE_DATE + 90, 'YYYY-MM-DD') AS VAATZ_TARGET_DATE
, (TO_DATE(PART.EO_ISSUE_DATE, 'YYYY-MM-DD') + 90)-TO_DATE(SYSDATE, 'YYYY-MM-DD') AS VAATZ_LIMIT_DATE_CNT
, TO_CHAR(APPLY.CHECK_DATE, 'YYYY-MM-DD') AS CHECK_DATE
, APPLY.CHECK_RESULT
, APPLY.ETC_CONTENTS
FROM (
SELECT P.*
FROM EO_INFO E, PART_INFO P
WHERE 1=1
AND E.OBJID = P.EO_OBJID
AND UPPER(P.STATUS) = 'COMPLETE'
AND UPPER(E.STATUS) = 'RELEASE'
AND UPPER(P.DRAWING_TYPE) = 'DRAW'
) PART, PMS_EO_APPLY_INFO APPLY
WHERE 1=1
AND PART.OBJID = APPLY.TARGET_OBJID(+)
ORDER BY PART.EO_ISSUE_DATE DESC
)WHERE 1=1
<if test="search_oemObjId != null and !''.equals(search_oemObjId)">
AND OEM_OBJID = #{search_oemObjId}
</if>
<if test="search_carObjId != null and !''.equals(search_carObjId)">
AND CAR_OBJID = #{search_carObjId}
</if>
<if test="search_eoNo != null and !''.equals(search_eoNo)">
AND UPPER(EO_NO) LIKE UPPER('%${search_eoNo}%')
</if>
<if test="search_eoIssueFromDate != null and !''.equals(search_eoIssueFromDate)">
AND TO_DATE(EO_ISSUE_DATE, 'YYYY-MM-DD') <![CDATA[ >= ]]> TO_DATE(#{search_eoIssueFromDate}, 'YYYY-MM-DD')
</if>
<if test="search_eoIssueToDate != null and !''.equals(search_eoIssueToDate)">
AND TO_DATE(EO_ISSUE_DATE, 'YYYY-MM-DD') <![CDATA[ <= ]]> TO_DATE(#{search_eoIssueToDate}, 'YYYY-MM-DD')
</if>
<if test="search_applyPointObjId != null and !''.equals(search_applyPointObjId)">
AND APPLY_POINT_OBJID = #{search_applyPointObjId}
</if>
<if test="search_productGroupObjId != null and !''.equals(search_productGroupObjId)">
AND PROD_GROUP_OBJID = #{search_productGroupObjId}
</if>
<if test="search_productObjId != null and !''.equals(search_productObjId)">
AND PROD_OBJID = #{search_productObjId}
</if>
<if test="search_partNo != null and !''.equals(search_partNo)">
AND UPPER(PART_NO) LIKE UPPER('%${search_partNo}%')
</if>
<if test="search_partName != null and !''.equals(search_partName)">
AND UPPER(PART_NAME) LIKE UPPER('%${search_partName}%')
</if>
<if test="search_checkResult != null">
<choose>
<when test="''.equals(search_checkResult)">
AND CHECK_RESULT IS NULL
</when>
<when test="'all'.equals(search_checkResult)">
</when>
<otherwise>
AND CHECK_RESULT = #{search_checkResult}
</otherwise>
</choose>
</if>
<!-- //아래는 현황에서 필요한 쿼리 -->
<if test="search_moldStatus != null and !''.equals(search_moldStatus)">
<if test="'registed'.equals(search_moldStatus)">
AND MOLD_MODIFY_DOC_WRITE_TYPE = 'Y' AND MOLD_VAATZ_NO IS NOT NULL
</if>
<if test="'unregisted'.equals(search_moldStatus)">
AND MOLD_MODIFY_DOC_WRITE_TYPE = 'Y' AND MOLD_VAATZ_NO IS NULL
</if>
<if test="'untarget'.equals(search_moldStatus)">
AND MOLD_MODIFY_DOC_WRITE_TYPE = 'N'
</if>
<if test="'unchoose'.equals(search_moldStatus)">
AND MOLD_MODIFY_DOC_WRITE_TYPE IS NULL
</if>
</if>
<if test="search_jigStatus != null and !''.equals(search_jigStatus)">
<if test="'registed'.equals(search_jigStatus)">
AND JIG_MODIFY_DOC_WRITE_TYPE = 'Y' AND JIG_VAATZ_NO IS NOT NULL
</if>
<if test="'unregisted'.equals(search_jigStatus)">
AND JIG_MODIFY_DOC_WRITE_TYPE = 'Y' AND JIG_VAATZ_NO IS NULL
</if>
<if test="'untarget'.equals(search_jigStatus)">
AND JIG_MODIFY_DOC_WRITE_TYPE = 'N'
</if>
<if test="'unchoose'.equals(search_jigStatus)">
AND JIG_MODIFY_DOC_WRITE_TYPE IS NULL
</if>
</if>
<!-- //Gate별 조회시 날짜조회 필요. -->
<if test="search_applyPointFromDate != null and !''.equals(search_applyPointFromDate)">
AND ILJI_APPLY_POINT_DATE <![CDATA[ >= ]]> TO_DATE(#{search_applyPointFromDate}, 'YYYY-MM-DD')
</if>
<if test="search_applyPointToDate != null and !''.equals(search_applyPointToDate)">
AND ILJI_APPLY_POINT_DATE <![CDATA[ <= ]]> TO_DATE(#{search_applyPointToDate}, 'YYYY-MM-DD')
</if>
<!-- //EO 적용/미적용 관련 현황 조회쿼리 -->
<if test="search_applyStatus != null and !''.equals(search_applyStatus)">
<if test="'complete'.equals(search_applyStatus)">
AND ILJI_APPLY_POINT_DATE IS NOT NULL
</if>
<if test="'uncomplete'.equals(search_applyStatus)">
AND ILJI_APPLY_POINT_DATE IS NULL
</if>
</if>
)WHERE 1=1
</select>
<select id="getEOApplyStatusList" parameterType="map" resultType="map">
SELECT *
FROM (
SELECT PMS_PROBLEM_REQUEST_INFO.*,ROWNUM AS RNUM
FROM(
SELECT *
FROM (
SELECT PART.OBJID AS PART_OBJID
, PART.OEM_OBJID
, (SELECT OEM_NAME FROM OEM_MNG WHERE OBJID = PART.OEM_OBJID) AS OEM_NAME
, PART.CAR_OBJID
, (SELECT CAR_NAME FROM CAR_MNG WHERE OBJID = PART.CAR_OBJID) AS CAR_NAME
, (SELECT CAR_CODE FROM CAR_MNG WHERE OBJID = PART.CAR_OBJID) AS CAR_CODE
, (SELECT MODEL_CODE FROM CAR_MNG WHERE OBJID = PART.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
, PART.PART_NAME
, PART.EO_NO
, TO_CHAR(PART.EO_ISSUE_DATE, 'YYYY-MM-DD') AS EO_ISSUE_DATE
, PART.APPLY_POINT_OBJID
, (SELECT APPLY_POINT_NAME FROM APPLY_POINT_MNG WHERE OBJID = PART.APPLY_POINT_OBJID) AS APPLY_POINT_NAME
, APPLY.OBJID AS EO_APPLY_OBJID
, APPLY.ILJI_APPLY_POINT_STEP1
, APPLY.ILJI_APPLY_POINT_STEP2
, TO_CHAR(APPLY.ILJI_APPLY_POINT_DATE, 'YYYY-MM-DD') AS ILJI_APPLY_POINT_DATE
, APPLY.MOLD_MODIFY_DOC_WRITE_TYPE
, APPLY.MOLD_EO_APPLY_TYPE_NEW
, APPLY.MOLD_EO_APPLY_TYPE_DISUSE
, APPLY.MOLD_EO_APPLY_TYPE_MODIFY
, APPLY.MOLD_VAATZ_NO
, TO_CHAR(APPLY.MOLD_VAATZ_CONFIRM_DATE, 'YYYY-MM-DD') AS MOLD_VAATZ_CONFIRM_DATE
, APPLY.JIG_MODIFY_DOC_WRITE_TYPE
, APPLY.JIG_EO_APPLY_TYPE_NEW
, APPLY.JIG_EO_APPLY_TYPE_DISUSE
, APPLY.JIG_EO_APPLY_TYPE_MODIFY
, APPLY.JIG_VAATZ_NO
, TO_CHAR(APPLY.JIG_VAATZ_CONFIRM_DATE, 'YYYY-MM-DD') AS JIG_VAATZ_CONFIRM_DATE
, CASE WHEN MOLD_MODIFY_DOC_WRITE_TYPE = 'Y' AND MOLD_VAATZ_NO IS NOT NULL AND MOLD_VAATZ_CONFIRM_DATE IS NOT NULL THEN 'complete'
WHEN MOLD_MODIFY_DOC_WRITE_TYPE = 'Y' AND MOLD_VAATZ_NO IS NOT NULL AND MOLD_VAATZ_CONFIRM_DATE IS NULL THEN 'confirmDateNoRegist'
WHEN MOLD_MODIFY_DOC_WRITE_TYPE = 'Y' AND MOLD_VAATZ_NO IS NULL AND MOLD_VAATZ_CONFIRM_DATE IS NULL THEN 'vaatzNoRegist'
WHEN MOLD_MODIFY_DOC_WRITE_TYPE IS NULL THEN 'noRegist'
WHEN MOLD_MODIFY_DOC_WRITE_TYPE = 'N' THEN 'noTarget'
ELSE '' END AS MOLD_STATUS
, CASE WHEN JIG_MODIFY_DOC_WRITE_TYPE = 'Y' AND JIG_VAATZ_NO IS NOT NULL AND JIG_VAATZ_CONFIRM_DATE IS NOT NULL THEN 'complete'
WHEN JIG_MODIFY_DOC_WRITE_TYPE = 'Y' AND JIG_VAATZ_NO IS NOT NULL AND JIG_VAATZ_CONFIRM_DATE IS NULL THEN 'confirmDateNoRegist'
WHEN JIG_MODIFY_DOC_WRITE_TYPE = 'Y' AND JIG_VAATZ_NO IS NULL AND JIG_VAATZ_CONFIRM_DATE IS NULL THEN 'vaatzNoRegist'
WHEN JIG_MODIFY_DOC_WRITE_TYPE IS NULL THEN 'noRegist'
WHEN JIG_MODIFY_DOC_WRITE_TYPE = 'N' THEN 'noTarget'
ELSE '' END AS JIG_STATUS
, TO_CHAR(PART.EO_ISSUE_DATE + 90, 'YYYY-MM-DD') AS VAATZ_TARGET_DATE
, (TO_DATE(PART.EO_ISSUE_DATE, 'YYYY-MM-DD') + 90)-TO_DATE(SYSDATE, 'YYYY-MM-DD') AS VAATZ_LIMIT_DATE_CNT
, TO_CHAR(APPLY.CHECK_DATE, 'YYYY-MM-DD') AS CHECK_DATE
, APPLY.CHECK_RESULT
, APPLY.ETC_CONTENTS
, (SELECT COUNT(1) FROM ATTACH_FILE_INFO WHERE TARGET_OBJID = PART.OBJID AND DOC_TYPE='EO_ATTACH' AND UPPER(STATUS) = 'ACTIVE') AS OE_FILE_CNT
, (SELECT COUNT(WBS_TASK.OBJID) AS TASK_CNT FROM PMS_WBS_TASK WBS_TASK,PMS_REL_WBS_TASK_FNC_TASK REL WHERE REL.TARGET_OBJID = WBS_TASK.OBJID AND REL.SUB_OBJID = APPLY.OBJID) AS REL_TASK_CNT
FROM (
SELECT P.*
FROM EO_INFO E, PART_INFO P
WHERE 1=1
AND UPPER(P.DRAWING_TYPE) = 'DRAW'
AND E.OBJID = P.EO_OBJID
AND UPPER(P.STATUS) = 'COMPLETE'
AND UPPER(E.STATUS) = 'RELEASE'
) PART, PMS_EO_APPLY_INFO APPLY
WHERE 1=1
AND PART.OBJID = APPLY.TARGET_OBJID(+)
)WHERE 1=1
<if test="search_oemObjId != null and !''.equals(search_oemObjId)">
AND OEM_OBJID = #{search_oemObjId}
</if>
<if test="search_carObjId != null and !''.equals(search_carObjId)">
AND CAR_OBJID = #{search_carObjId}
</if>
<if test="search_eoNo != null and !''.equals(search_eoNo)">
AND UPPER(EO_NO) LIKE UPPER('%${search_eoNo}%')
</if>
<if test="search_eoIssueFromDate != null and !''.equals(search_eoIssueFromDate)">
AND TO_DATE(EO_ISSUE_DATE, 'YYYY-MM-DD') <![CDATA[ >= ]]> TO_DATE(#{search_eoIssueFromDate}, 'YYYY-MM-DD')
</if>
<if test="search_eoIssueToDate != null and !''.equals(search_eoIssueToDate)">
AND TO_DATE(EO_ISSUE_DATE, 'YYYY-MM-DD') <![CDATA[ <= ]]> TO_DATE(#{search_eoIssueToDate}, 'YYYY-MM-DD')
</if>
<if test="search_applyPointObjId != null and !''.equals(search_applyPointObjId)">
AND APPLY_POINT_OBJID = #{search_applyPointObjId}
</if>
<if test="search_productGroupObjId != null and !''.equals(search_productGroupObjId)">
AND PROD_GROUP_OBJID = #{search_productGroupObjId}
</if>
<if test="search_productObjId != null and !''.equals(search_productObjId)">
AND PROD_OBJID = #{search_productObjId}
</if>
<if test="search_partNo != null and !''.equals(search_partNo)">
AND UPPER(PART_NO) LIKE UPPER('%${search_partNo}%')
</if>
<if test="search_partName != null and !''.equals(search_partName)">
AND UPPER(PART_NAME) LIKE UPPER('%${search_partName}%')
</if>
<if test="search_checkResult != null">
<choose>
<when test="''.equals(search_checkResult)">
AND CHECK_RESULT IS NULL
</when>
<when test="'all'.equals(search_checkResult)">
</when>
<otherwise>
AND CHECK_RESULT = #{search_checkResult}
</otherwise>
</choose>
</if>
<!-- //아래는 현황에서 필요한 쿼리 -->
<if test="search_moldStatus != null and !''.equals(search_moldStatus)">
<if test="'registed'.equals(search_moldStatus)">
AND MOLD_MODIFY_DOC_WRITE_TYPE = 'Y' AND MOLD_VAATZ_NO IS NOT NULL
</if>
<if test="'unregisted'.equals(search_moldStatus)">
AND MOLD_MODIFY_DOC_WRITE_TYPE = 'Y' AND MOLD_VAATZ_NO IS NULL
</if>
<if test="'untarget'.equals(search_moldStatus)">
AND MOLD_MODIFY_DOC_WRITE_TYPE = 'N'
</if>
<if test="'unchoose'.equals(search_moldStatus)">
AND MOLD_MODIFY_DOC_WRITE_TYPE IS NULL
</if>
</if>
<if test="search_jigStatus != null and !''.equals(search_jigStatus)">
<if test="'registed'.equals(search_jigStatus)">
AND JIG_MODIFY_DOC_WRITE_TYPE = 'Y' AND JIG_VAATZ_NO IS NOT NULL
</if>
<if test="'unregisted'.equals(search_jigStatus)">
AND JIG_MODIFY_DOC_WRITE_TYPE = 'Y' AND JIG_VAATZ_NO IS NULL
</if>
<if test="'untarget'.equals(search_jigStatus)">
AND JIG_MODIFY_DOC_WRITE_TYPE = 'N'
</if>
<if test="'unchoose'.equals(search_jigStatus)">
AND JIG_MODIFY_DOC_WRITE_TYPE IS NULL
</if>
</if>
<!-- //Gate별 조회시 날짜조회 필요. -->
<if test="search_applyPointFromDate != null and !''.equals(search_applyPointFromDate)">
AND ILJI_APPLY_POINT_DATE <![CDATA[ >= ]]> TO_DATE(#{search_applyPointFromDate}, 'YYYY-MM-DD')
</if>
<if test="search_applyPointToDate != null and !''.equals(search_applyPointToDate)">
AND ILJI_APPLY_POINT_DATE <![CDATA[ <= ]]> TO_DATE(#{search_applyPointToDate}, 'YYYY-MM-DD')
</if>
<!-- //EO 적용/미적용 관련 현황 조회쿼리 -->
<if test="search_applyStatus != null and !''.equals(search_applyStatus)">
<if test="'complete'.equals(search_applyStatus)">
AND ILJI_APPLY_POINT_DATE IS NOT NULL
</if>
<if test="'uncomplete'.equals(search_applyStatus)">
AND ILJI_APPLY_POINT_DATE IS NULL
</if>
</if>
ORDER BY OEM_NAME, CAR_NAME, EO_ISSUE_DATE DESC, EO_NO, PROD_GROUP_NAME, PROD_NAME, PART_NAME
)PMS_PROBLEM_REQUEST_INFO
WHERE 1=1
)WHERE 1=1
<if test="PAGE_END != null and PAGE_END !=''">
<![CDATA[ AND RNUM <= #{PAGE_END} ]]>
</if>
<if test="PAGE_START != null and PAGE_STRART!=''">
<![CDATA[ AND RNUM >= #{PAGE_START} ]]>
</if>
</select>
<!-- //EO 적용현황 기본 Object 생성 -->
<insert id="createEOApplyBaseObject" parameterType="map">
INSERT INTO PMS_EO_APPLY_INFO(OBJID, TARGET_OBJID) VALUES (${objId}, ${targetObjId})
</insert>
<!-- //EO 적용현황 > EO 적용관리 정보조회 -->
<select id="getEOApplyPointInfo" resultType="map" parameterType="map">
SELECT OBJID
, TARGET_OBJID
, ILJI_APPLY_POINT_STEP1
, ILJI_APPLY_POINT_STEP2
, TO_CHAR(ILJI_APPLY_POINT_DATE, 'YYYY-MM-DD') AS ILJI_APPLY_POINT_DATE
FROM PMS_EO_APPLY_INFO
WHERE 1=1
AND OBJID = #{objId}
</select>
<!-- //EO 적용현황 > EO 적용관리 저장 -->
<update id="saveEOApplyPointInfo" parameterType="map">
UPDATE PMS_EO_APPLY_INFO SET ILJI_APPLY_POINT_STEP1 = #{step1}, ILJI_APPLY_POINT_STEP2 = #{step2}, ILJI_APPLY_POINT_DATE = TO_DATE(#{iljiApplyPointDate}, 'yyyy-mm-dd') WHERE TARGET_OBJID = #{targetObjId}
</update>
<!-- //EO 적용현황 > 금형/JIG 수정승인관리 조회 -->
<select id="getEOApplyModifyConfirmInfo" resultType="map" parameterType="map">
SELECT APPLY.OBJID AS EO_APPLY_OBJID
, PART.OBJID AS TARGET_OBJID
<if test="targetType != null and 'MOLD'.equals(targetType)">
, MOLD_MODIFY_DOC_WRITE_TYPE AS MODIFY_DOC_WRITE_TYPE
, MOLD_EO_APPLY_TYPE_NEW AS EO_APPLY_TYPE_NEW
, MOLD_EO_APPLY_TYPE_DISUSE AS EO_APPLY_TYPE_DISUSE
, MOLD_EO_APPLY_TYPE_MODIFY AS EO_APPLY_TYPE_MODIFY
, MOLD_VAATZ_NO AS VAATZ_NO
, TO_CHAR(MOLD_VAATZ_CONFIRM_DATE, 'YYYY-MM-DD') AS VAATZ_CONFIRM_DATE
</if>
<if test="targetType != null and 'JIG'.equals(targetType)">
, JIG_MODIFY_DOC_WRITE_TYPE AS MODIFY_DOC_WRITE_TYPE
, JIG_EO_APPLY_TYPE_NEW AS EO_APPLY_TYPE_NEW
, JIG_EO_APPLY_TYPE_DISUSE AS EO_APPLY_TYPE_DISUSE
, JIG_EO_APPLY_TYPE_MODIFY AS EO_APPLY_TYPE_MODIFY
, JIG_VAATZ_NO AS VAATZ_NO
, TO_CHAR(JIG_VAATZ_CONFIRM_DATE, 'YYYY-MM-DD') AS VAATZ_CONFIRM_DATE
</if>
, TO_CHAR(PART.EO_ISSUE_DATE + 90, 'YYYY-MM-DD') AS VAATZ_TARGET_DATE
, (TO_DATE(PART.EO_ISSUE_DATE, 'YYYY-MM-DD') + 90)-TO_DATE(SYSDATE, 'YYYY-MM-DD') AS VAATZ_LIMIT_DATE_CNT
FROM PMS_EO_APPLY_INFO APPLY, PART_INFO PART
WHERE 1=1
AND PART.OBJID = APPLY.TARGET_OBJID(+)
AND PART.OBJID = #{targetObjId}
</select>
<!-- //EO 적용현황 > 금형/JIG 수정승인관리 저장 -->
<update id="saveEOApplyModifyConfirmInfo" parameterType="map">
UPDATE PMS_EO_APPLY_INFO
SET
<if test="targetType != null and !''.equals(targetType)">
<if test="'MOLD'.equals(targetType)">
MOLD_MODIFY_DOC_WRITE_TYPE = #{modifyDocWriteType}
, MOLD_EO_APPLY_TYPE_NEW = #{eoApplyTypeNew}
, MOLD_EO_APPLY_TYPE_DISUSE = #{eoApplyTypeDisuse}
, MOLD_EO_APPLY_TYPE_MODIFY = #{eoApplyTypeModify}
, MOLD_VAATZ_NO = #{vaatzNo}
, MOLD_VAATZ_CONFIRM_DATE = #{vaatzConfirmDate}
</if>
<if test="'JIG'.equals(targetType)">
JIG_MODIFY_DOC_WRITE_TYPE = #{modifyDocWriteType}
, JIG_EO_APPLY_TYPE_NEW = #{eoApplyTypeNew}
, JIG_EO_APPLY_TYPE_DISUSE = #{eoApplyTypeDisuse}
, JIG_EO_APPLY_TYPE_MODIFY = #{eoApplyTypeModify}
, JIG_VAATZ_NO = #{vaatzNo}
, JIG_VAATZ_CONFIRM_DATE = #{vaatzConfirmDate}
</if>
</if>
WHERE TARGET_OBJID = #{targetObjId}
</update>
<!-- //EO 적용현황 > EO 적용완료 점검결과 조회-->
<select id="getEOApplyCheckInfo" resultType="map" parameterType="map">
SELECT OBJID
, TARGET_OBJID
, TO_CHAR(CHECK_DATE, 'YYYY-MM-DD') AS CHECK_DATE
, CHECK_RESULT
FROM PMS_EO_APPLY_INFO
WHERE 1=1
AND OBJID = ${objId}
AND TARGET_OBJID = ${targetObjId}
</select>
<!-- //EO 적용현황 > EO 적용완료 점검결과 저장 -->
<update id="saveEOApplyCheckInfo" parameterType="map">
UPDATE PMS_EO_APPLY_INFO
SET
CHECK_DATE = TO_DATE(#{checkDate}, 'yyyy-mm-dd')
, CHECK_RESULT = #{checkResult}
WHERE TARGET_OBJID = #{targetObjId} AND OBJID = #{objId}
</update>
<!-- //jmpark start -->
<!-- //금형이력 중복 count 조회 -->
<select id="checkDuplicateMoldHistoryInfo" parameterType="map" resultType="map">
SELECT COUNT(*) AS CNT
FROM PMS_MOLD_HISTORY_INFO
WHERE 1=1
AND OEM_OBJID = #{oemObjId}
AND CAR_OBJID = #{carObjId}
AND UPPER(CURRENT_STEP) = UPPER(#{currentStep})
</select>
<!-- //금형이력 갑지목록 조회 -->
<select id="getMoldHistoryList" 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_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 MODEL_CODE FROM CAR_MNG WHERE OBJID = A.CAR_OBJID) AS MODEL_CODE
, A.CURRENT_STEP
, (SELECT COUNT(*) FROM PMS_MOLD_HISTORY_REL_PROD WHERE TARGET_OBJID = A.OBJID AND UPPER(STATUS) = 'ACTIVE') AS PRODUCT_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
, A.REGDATE AS REGDATE_ORG
, TO_CHAR(A.REGDATE, 'YYYY-MM-DD') AS REGDATE
, A.STATUS
FROM PMS_MOLD_HISTORY_INFO A
WHERE 1=1
<if test="search_oemObjId != null and !''.equals(search_oemObjId)">
AND A.OEM_OBJID = #{search_oemObjId}
</if>
<if test="search_carObjId != null and !''.equals(search_carObjId)">
AND A.CAR_OBJID = #{search_carObjId}
</if>
<if test="search_currentStep != null and !''.equals(search_currentStep)">
AND A.CURRENT_STEP = #{search_currentStep}
</if>
</select>
<!-- //금형이력 갑지 조회 -->
<select id="getMoldHistoryInfo" 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_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 MODEL_CODE FROM CAR_MNG WHERE OBJID = A.CAR_OBJID) AS MODEL_CODE
, A.CURRENT_STEP
, 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
FROM PMS_MOLD_HISTORY_INFO A
WHERE 1=1
AND OBJID = #{objId}
</select>
<!-- //금형이력 갑지별 제품목록 조회 -->
<select id="getMoldHistoryRelProductList" parameterType="map" resultType="map">
SELECT A.OBJID AS MASTER_OBJID
, B.OBJID AS SUB_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.CURRENT_STEP
, A.WRITER AS MASTER_WRITER
, (SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = A.WRITER) AS MASTER_WRITER_DEPT_NAME
, (SELECT USER_NAME FROM USER_INFO WHERE USER_ID = A.WRITER) AS MASTER_WRITER_USER_NAME
, A.REGDATE AS MASTER_REGDATE_ORG
, TO_CHAR(A.REGDATE, 'YYYY-MM-DD') AS MASTER_REGDATE
, A.STATUS AS MASTER_STATUS
, B.PROD_GROUP_OBJID
, (SELECT PRODUCT_GROUP_NAME FROM PRODUCT_GROUP_MNG WHERE OBJID = B.PROD_GROUP_OBJID) AS PROD_GROUP_NAME
, B.PROD_OBJID
, (SELECT PRODUCT_NAME FROM PRODUCT_MNG WHERE OBJID = B.PROD_OBJID) AS PROD_NAME
, B.WRITER AS SUB_WRITER
, (SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = B.WRITER) AS SUB_WRITER_DEPT_NAME
, (SELECT USER_NAME FROM USER_INFO WHERE USER_ID = B.WRITER) AS SUB_WRITER_USER_NAME
, B.REGDATE AS SUB_REGDATE_ORG
, TO_CHAR(B.REGDATE, 'YYYY-MM-DD') AS SUB_REGDATE
, B.STATUS AS SUB_STATUS
, (SELECT COUNT(*) FROM PMS_MOLD_HISTORY_REL_PROD_ATTR WHERE TARGET_OBJID = B.OBJID) AS HISTORY_CNT
FROM PMS_MOLD_HISTORY_INFO A, PMS_MOLD_HISTORY_REL_PROD B
WHERE 1=1
AND A.OBJID(+) = B.TARGET_OBJID
AND UPPER(B.STATUS) = 'ACTIVE'
AND B.TARGET_OBJID = #{targetObjId}
</select>
<!-- //금형이력 갑지 저장 -->
<update id="saveMoldHistoryInfo" parameterType="map">
MERGE INTO PMS_MOLD_HISTORY_INFO P USING DUAL ON (P.OBJID = #{objId})
WHEN MATCHED THEN
UPDATE
SET
P.OEM_OBJID = #{oemObjId}
, P.CAR_OBJID = #{carObjId}
, P.CURRENT_STEP = #{currentStep}
WHEN NOT MATCHED THEN
INSERT (
P.OBJID
, P.OEM_OBJID
, P.CAR_OBJID
, P.CURRENT_STEP
, P.WRITER
, P.REGDATE
, P.STATUS
)VALUES(
#{objId}
, #{oemObjId}
, #{carObjId}
, #{currentStep}
, #{writer}
, SYSDATE
, 'create'
)
</update>
<!-- //금형이력 갑지 제품연결 -->
<insert id="connectMoldHistoryRelProduct" parameterType="map">
INSERT INTO PMS_MOLD_HISTORY_REL_PROD(
OBJID
, TARGET_OBJID
, PROD_GROUP_OBJID
, PROD_OBJID
, WRITER
, REGDATE
, STATUS
) VALUES (
#{objId}
, #{targetObjId}
, #{prodGroupObjId}
, #{prodObjId}
, #{writer}
, sysdate
, 'active'
)
</insert>
<!-- //금형이력 갑지 제품 중복확인 -->
<select id="getDuplicateMoldHistoryRelProductCnt" parameterType="map" resultType="map">
SELECT COUNT(*) AS CNT
FROM PMS_MOLD_HISTORY_REL_PROD
WHERE 1=1
AND UPPER(STATUS) = 'ACTIVE'
AND TARGET_OBJID = #{targetObjId}
AND PROD_OBJID = #{prodObjId}
</select>
<!-- //금형이력 갑지 제품연결 해제 -->
<update id="disconnectMoldHistoryRelProduct" parameterType="map">
UPDATE PMS_MOLD_HISTORY_REL_PROD SET STATUS = 'Inactive' WHERE OBJID = #{objId}
</update>
<!-- //금형이력 파일첨부 target별 max+1의 차수 조회 -->
<select id="getMoldHistoryRelProdAttrNextRev" parameterType="map" resultType="map">
SELECT nvl(MAX(REV), -1)+1 as NEXT_REV FROM PMS_MOLD_HISTORY_REL_PROD_ATTR WHERE 1=1 AND TARGET_OBJID = #{targetObjId}
</select>
<!-- //금형이력 파일첨부 상세 -->
<select id="getMoldHistoryRelProdAttrInfo" parameterType="map" resultType="map">
SELECT A.OBJID AS MASTER_OBJID
, B.OBJID AS SUB_OBJID
, A.PROD_GROUP_OBJID
, (SELECT PRODUCT_GROUP_NAME FROM PRODUCT_GROUP_MNG WHERE OBJID = A.PROD_GROUP_OBJID) AS PROD_GROUP_NAME
, A.PROD_OBJID
, (SELECT PRODUCT_NAME FROM PRODUCT_MNG WHERE OBJID = A.PROD_OBJID) AS PROD_NAME
, B.PIC
, (SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = B.PIC) AS PIC_DEPT_NAME
, (SELECT USER_NAME FROM USER_INFO WHERE USER_ID = B.PIC) AS PIC_USER_NAME
, B.REV
, B.DESCRIPTION
, B.REGDATE AS REGDATE_ORG
, TO_CHAR(B.REGDATE, 'YYYY-MM-DD') AS REGDATE
, B.LAST_MODIFIED AS LAST_MODIFIED_ORG
, TO_CHAR(B.LAST_MODIFIED, 'YYYY-MM-DD') AS LAST_MODIFIED
FROM PMS_MOLD_HISTORY_REL_PROD A, PMS_MOLD_HISTORY_REL_PROD_ATTR B
WHERE 1=1
AND A.OBJID = B.TARGET_OBJID
AND UPPER(A.STATUS) = 'ACTIVE'
AND B.TARGET_OBJID = #{targetObjId}
AND B.OBJID = #{objId}
</select>
<!-- //금형이력 파일첨부 목록조회 -->
<select id="getMoldHistoryRelProdAttrList" parameterType="map" resultType="map">
SELECT A.OBJID AS MASTER_OBJID
, B.OBJID AS SUB_OBJID
, A.PROD_GROUP_OBJID
, (SELECT PRODUCT_GROUP_NAME FROM PRODUCT_GROUP_MNG WHERE OBJID = A.PROD_GROUP_OBJID) AS PROD_GROUP_NAME
, A.PROD_OBJID
, (SELECT PRODUCT_NAME FROM PRODUCT_MNG WHERE OBJID = A.PROD_OBJID) AS PROD_NAME
, B.PIC
, (SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = B.PIC) AS PIC_DEPT_NAME
, (SELECT USER_NAME FROM USER_INFO WHERE USER_ID = B.PIC) AS PIC_USER_NAME
, B.REV
, B.DESCRIPTION
, B.REGDATE AS REGDATE_ORG
, TO_CHAR(B.REGDATE, 'YYYY-MM-DD') AS REGDATE
, B.LAST_MODIFIED AS LAST_MODIFIED_ORG
, TO_CHAR(B.LAST_MODIFIED, 'YYYY-MM-DD') AS LAST_MODIFIED
, (SELECT COUNT(1) FROM ATTACH_FILE_INFO WHERE TARGET_OBJID = B.OBJID AND DOC_TYPE='MOLD_HISTORY_PROD_ATTR_CODE' AND UPPER(STATUS) = 'ACTIVE') AS FILE_CNT
FROM PMS_MOLD_HISTORY_REL_PROD A, PMS_MOLD_HISTORY_REL_PROD_ATTR B
WHERE 1=1
AND A.OBJID = B.TARGET_OBJID
AND UPPER(A.STATUS) = 'ACTIVE'
AND B.TARGET_OBJID = #{targetObjId}
ORDER BY TO_NUMBER(REV) DESC
</select>
<!-- //금형이력 파일첨부 내용 저장 -->
<update id="saveMoldHistoryRelProdAttrInfo" parameterType="map">
MERGE INTO PMS_MOLD_HISTORY_REL_PROD_ATTR USING DUAL ON (OBJID = #{objId})
WHEN MATCHED THEN
UPDATE SET DESCRIPTION = #{description}, LAST_MODIFIED = SYSDATE
WHEN NOT MATCHED THEN
INSERT (
OBJID
, MOLD_HISTORY_OBJID
, TARGET_OBJID
, PIC
, REV
, DESCRIPTION
, REGDATE
, LAST_MODIFIED
) VALUES (
#{objId}
, #{moldHistoryObjId}
, #{targetObjId}
, #{pic}
, #{rev}
, #{description}
, SYSDATE
, SYSDATE
)
</update>
<!-- //jmpark end -->
<!-- //edhwang start -->
<!-- DFMEA 갑지 목록을 가져온다. -->
<select id="getDFMEABaseInfoList" parameterType="map" resultType="map">
SELECT *
FROM (
SELECT INFO.*, ROW_NUMBER() OVER(ORDER BY INFO.REGDATE ASC) RNUM
FROM(
SELECT INFO.*
FROM(
SELECT
INFO.OBJID,
INFO.OEM_OBJID,
(SELECT OEM_NAME FROM OEM_MNG WHERE OBJID = INFO.OEM_OBJID) AS OEM_NAME,
INFO.CAR_OBJID,
(SELECT CAR_CODE FROM CAR_MNG WHERE OBJID = INFO.CAR_OBJID) AS CAR_CODE,
(SELECT CAR_NAME FROM CAR_MNG WHERE OBJID = INFO.CAR_OBJID) AS CAR_NAME,
INFO.PROD_GROUP_OBJID,
(SELECT PRODUCT_GROUP_NAME FROM PRODUCT_GROUP_MNG WHERE OBJID = INFO.PROD_GROUP_OBJID) AS PRODUCT_GROUP_NAME,
INFO.PROD_OBJID,
(SELECT PRODUCT_NAME FROM PRODUCT_MNG WHERE OBJID = INFO.PROD_OBJID) AS PRODUCT_NAME,
INFO.REGDATE,
INFO.TITLE,
TO_CHAR(INFO.REGDATE,'YYYY-MM-DD') AS REGDATE_TITLE,
INFO.STATUS,
INFO.WRITER,
(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = INFO.WRITER) AS USER_NAME,
(SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = INFO.WRITER) AS DEPT_NAME,
(SELECT COUNT(1) FROM ATTACH_FILE_INFO WHERE TARGET_OBJID = INFO.OBJID AND DOC_TYPE='DFMEA_BLOCK' AND UPPER(STATUS) = 'ACTIVE') AS BLOCK_FILE_CNT,
(SELECT COUNT(1) FROM ATTACH_FILE_INFO WHERE TARGET_OBJID = INFO.OBJID AND DOC_TYPE='DFMEA_RPN' AND UPPER(STATUS) = 'ACTIVE') AS RPN_FILE_CNT
FROM PMS_DFMEA_BASE_INFO INFO
) INFO WHERE 1=1
<if test="search_oem != null and search_oem !='' ">
AND INFO.OEM_OBJID = #{search_oem}
</if>
<if test="search_carType != null and search_carType !='' ">
AND INFO.CAR_OBJID = #{search_carType}
</if>
<if test="search_productGroup != null and search_productGroup !='' ">
AND INFO.PROD_GROUP_OBJID = #{search_productGroup}
</if>
<if test="search_productType != null and search_productType !='' ">
AND INFO.PROD_OBJID = #{search_productType}
</if>
<if test="search_writer != null and search_writer !='' ">
AND UPPER(INFO.USER_NAME) LIKE UPPER('%${search_writer}%')
</if>
) INFO
) WHERE 1=1
<if test="PAGE_END != null and PAGE_END !='' and actionType != 'excel'">
<![CDATA[ AND RNUM <= #{PAGE_END} ]]>
</if>
<if test="PAGE_START != null and PAGE_STRART!='' and actionType != 'excel'">
<![CDATA[ AND RNUM >= #{PAGE_START} ]]>
</if>
</select>
<!-- DFMEA 갑지 count 목록을 가져온다. -->
<select id="getDFMEABaseInfoListCnt" parameterType="map" resultType="map">
SELECT CEIL(TOTAL_CNT/#{COUNT_PER_PAGE}) MAX_PAGE_SIZE,
TOTAL_CNT
FROM (
SELECT COUNT(1) TOTAL_CNT
FROM(
SELECT INFO.*
FROM(
SELECT
INFO.OBJID,
INFO.OEM_OBJID,
(SELECT OEM_NAME FROM OEM_MNG WHERE OBJID = INFO.OEM_OBJID) AS OEM_NAME,
INFO.CAR_OBJID,
(SELECT CAR_NAME FROM CAR_MNG WHERE OBJID = INFO.CAR_OBJID) AS CAR_NAME,
INFO.PROD_GROUP_OBJID,
(SELECT PRODUCT_GROUP_NAME FROM PRODUCT_GROUP_MNG WHERE OBJID = INFO.PROD_GROUP_OBJID) AS PRODUCT_GROUP_NAME,
INFO.PROD_OBJID,
(SELECT PRODUCT_NAME FROM PRODUCT_MNG WHERE OBJID = INFO.PROD_OBJID) AS PRODUCT_NAME,
INFO.REGDATE,
INFO.TITLE,
TO_CHAR(INFO.REGDATE,'YYYY-MM-DD') AS REGDATE_TITLE,
INFO.STATUS,
INFO.WRITER,
(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = INFO.WRITER) AS USER_NAME,
(SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = INFO.WRITER) AS DEPT_NAME
FROM PMS_DFMEA_BASE_INFO INFO
) INFO WHERE 1=1
<if test="search_oem != null and search_oem !='' ">
AND INFO.OEM_OBJID = #{search_oem}
</if>
<if test="search_carType != null and search_carType !='' ">
AND INFO.CAR_OBJID = #{search_carType}
</if>
<if test="search_productGroup != null and search_productGroup !='' ">
AND INFO.PROD_GROUP_OBJID = #{search_productGroup}
</if>
<if test="search_productType != null and search_productType !='' ">
AND INFO.PROD_OBJID = #{search_productType}
</if>
<if test="search_writer != null and search_writer !='' ">
AND UPPER(INFO.USER_NAME) LIKE UPPER('%${search_writer}%')
</if>
)
)
</select>
<!-- DFMEA 갑지 내용(단건)을 가져온다. -->
<select id="getDFMEABaseInfo" parameterType="map" resultType="map">
SELECT
INFO.OBJID,
INFO.OEM_OBJID,
(SELECT OEM_NAME FROM OEM_MNG WHERE OBJID = INFO.OEM_OBJID) AS OEM_NAME,
INFO.CAR_OBJID,
(SELECT CAR_CODE FROM CAR_MNG WHERE OBJID = INFO.CAR_OBJID) AS CAR_CODE,
(SELECT CAR_NAME FROM CAR_MNG WHERE OBJID = INFO.CAR_OBJID) AS CAR_NAME,
INFO.PROD_GROUP_OBJID,
(SELECT PRODUCT_GROUP_NAME FROM PRODUCT_GROUP_MNG WHERE OBJID = INFO.PROD_GROUP_OBJID) AS PRODUCT_GROUP_NAME,
INFO.PROD_OBJID,
(SELECT PRODUCT_NAME FROM PRODUCT_MNG WHERE OBJID = INFO.PROD_OBJID) AS PRODUCT_NAME,
INFO.REGDATE,
INFO.TITLE,
TO_CHAR(INFO.REGDATE,'YYYY-MM-DD') AS REGDATE_TITLE,
INFO.STATUS,
INFO.WRITER,
(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = INFO.WRITER) AS USER_NAME,
(SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = INFO.WRITER) AS DEPT_NAME
FROM PMS_DFMEA_BASE_INFO INFO
WHERE OBJID = #{objId}
</select>
<!-- DFMEA 갑지의 중복여부를 확인한다. -->
<select id="checkDFMEABaseInfoDuplicate" parameterType="map" resultType="map">
SELECT COUNT(1) CNT FROM(
SELECT
INFO.OBJID,
INFO.OEM_OBJID,
INFO.CAR_OBJID,
INFO.PROD_GROUP_OBJID,
INFO.PROD_OBJID,
INFO.STATUS
FROM PMS_DFMEA_BASE_INFO INFO
WHERE INFO.OBJID != #{objId}
AND INFO.OEM_OBJID = #{oemObjId}
AND INFO.CAR_OBJID = #{carObjId}
AND INFO.PROD_GROUP_OBJID = #{productGroupObjId}
AND INFO.PROD_OBJID = #{productObjId}
)
</select>
<!-- DFMEA 갑지 내용을 저장한다. -->
<update id="saveDFMEABaseInfo" parameterType="map">
MERGE INTO PMS_DFMEA_BASE_INFO P USING DUAL ON (P.OBJID = #{objId})
WHEN MATCHED THEN
UPDATE
SET
P.OEM_OBJID = #{oemObjId}
,P.CAR_OBJID = #{carObjId}
,P.PROD_GROUP_OBJID = #{productGroupObjId}
,P.PROD_OBJID = #{productObjId}
,P.TITLE = #{title}
WHEN NOT MATCHED THEN
INSERT (
P.OBJID,
P.OEM_OBJID,
P.CAR_OBJID,
P.PROD_GROUP_OBJID,
P.PROD_OBJID,
P.REGDATE,
P.STATUS,
P.TITLE,
P.WRITER
)VALUES(
#{objId},
#{oemObjId},
#{carObjId},
#{productGroupObjId},
#{productObjId},
SYSDATE,
#{status},
#{title},
#{writer}
)
</update>
<!-- DFMEA 갑지에 연결된 정보 목록을 가져온다. -->
<select id="getDFMEAList" parameterType="map" resultType="map">
SELECT
ROW_NUMBER() OVER(ORDER BY INFO.REGDATE ASC) DFMEA_RNUM,
INFO.OBJID,
INFO.TARGET_OBJID,
INFO.MASTER_CATEGORY_PART_NO,
INFO.MASTER_CATEGORY_OBJID,
(SELECT REPLACE(CATEGORY_GROUP_NAME, chr(13)||chr(10), '\n') FROM DFMEA_CATEGORY_GROUP WHERE OBJID = INFO.MASTER_CATEGORY_OBJID) AS MASTER_CATEGORY_NAME,
INFO.SUB_CATEGORY_PART_NO,
INFO.SUB_CATEGORY_OBJID,
(SELECT REPLACE(CATEGORY_NAME, chr(13)||chr(10), '\n') FROM DFMEA_CATEGORY WHERE OBJID = INFO.SUB_CATEGORY_OBJID) AS CATEGORY_NAME,
INFO.FILTER_PART_NO,
INFO.FILTER_COMMENT,
INFO.POTENTIAL_FAIL_FILTER_OBJID,
(SELECT REPLACE(ATTRIBUTE_NAME, chr(13)||chr(10), '\n') FROM DFMEA_CATEGORY_ATTRIBUTE WHERE OBJID = INFO.POTENTIAL_FAIL_FILTER_OBJID) AS ATTR_NAME,
REPLACE(NVL(INFO.POTENTIAL_IMPACT,(SELECT POTENTIAL_IMPACT FROM DFMEA_CATEGORY_ATTRIBUTE WHERE OBJID = INFO.POTENTIAL_FAIL_FILTER_OBJID)), chr(13)||chr(10), '\n') AS POTENTIAL_IMPACT,
INFO.SEVERITY_SCORE,
INFO.SPECIAL_SPEC,
REPLACE(NVL(INFO.POTENTIAL_CAUSE,(SELECT POTENTIAL_CAUSE FROM DFMEA_CATEGORY_ATTRIBUTE WHERE OBJID = INFO.POTENTIAL_FAIL_FILTER_OBJID)), chr(13)||chr(10), '\n') AS POTENTIAL_CAUSE,
INFO.INCIDENCE_SCORE,
REPLACE(NVL(INFO.CURRENT_DESIGN_MANAGE_PREVENT,(SELECT CURRENT_DESIGN_MANAGE_PREVENT FROM DFMEA_CATEGORY_ATTRIBUTE WHERE OBJID = INFO.POTENTIAL_FAIL_FILTER_OBJID)), chr(13)||chr(10), '\n') AS CURRENT_DESIGN_MANAGE_PREVENT,
REPLACE(NVL(INFO.CURRENT_DESIGN_MANAGE_DETECT,(SELECT CURRENT_DESIGN_MANAGE_DETECT FROM DFMEA_CATEGORY_ATTRIBUTE WHERE OBJID = INFO.POTENTIAL_FAIL_FILTER_OBJID)), chr(13)||chr(10), '\n') AS CURRENT_DESIGN_MANAGE_DETECT,
INFO.DETECT_SCORE,
REPLACE(NVL(INFO.RECOMMEND_OPTION,(SELECT RECOMMEND_OPTION FROM DFMEA_CATEGORY_ATTRIBUTE WHERE OBJID = INFO.POTENTIAL_FAIL_FILTER_OBJID)), chr(13)||chr(10), '\n') AS RECOMMEND_OPTION,
TO_CHAR(INFO.REGDATE,'YYYY-MM-DD') AS REGDATE,
INFO.STATUS,
INFO.WRITER,
(TO_NUMBER(NVL(INFO.SEVERITY_SCORE,0))*TO_NUMBER(NVL(INFO.INCIDENCE_SCORE,0))*TO_NUMBER(NVL(INFO.DETECT_SCORE,0))) AS RPN,
TO_CHAR(APPLY.PLAN_COMPLETE_DATE,'YYYY-MM-DD') AS PLAN_COMPLETE_DATE,
TO_CHAR(APPLY.COMPLETE_DATE,'YYYY-MM-DD') AS COMPLETE_DATE,
REPLACE(APPLY.ACTION_CONTENTS, chr(13)||chr(10), '\n') AS ACTION_CONTENTS,
APPLY.APPLY_SEVERITY_SCORE,
APPLY.APPLY_INCIDENCE_SCORE,
APPLY.APPLY_DETECT_SCORE,
APPLY.STEP1_TITLE,
APPLY.STEP2,
(TO_NUMBER(NVL(APPLY.APPLY_SEVERITY_SCORE,0))*TO_NUMBER(NVL(APPLY.APPLY_INCIDENCE_SCORE,0))*TO_NUMBER(NVL(APPLY.APPLY_DETECT_SCORE,0))) AS APPLY_RPN
FROM
PMS_DFMEA_INFO INFO,
(
SELECT * FROM(
SELECT
ROW_NUMBER() OVER(PARTITION BY TARGET_OBJID ORDER BY REGDATE DESC) RNUM,
OBJID,
TARGET_OBJID,
PLAN_COMPLETE_DATE,
COMPLETE_DATE,
ACTION_CONTENTS,
SEVERITY_SCORE AS APPLY_SEVERITY_SCORE,
INCIDENCE_SCORE,
INCIDENCE_SCORE AS APPLY_INCIDENCE_SCORE,
DETECT_SCORE,
DETECT_SCORE AS APPLY_DETECT_SCORE,
STEP1,
DECODE(STEP1, 'design', '설계', 'develop', '개발', 'production', '양산', STEP1) AS STEP1_TITLE,
STEP2,
REGDATE,
STATUS,
WRITER
FROM PMS_DFMEA_CHANGE_ATTR
)WHERE 1=1 AND RNUM = 1
)APPLY
WHERE 1=1
AND APPLY.TARGET_OBJID(+)=INFO.OBJID
AND INFO.TARGET_OBJID = #{targetObjId}
</select>
<!-- DFMEA 대분류 목록을 가져온다. -->
<select id="getDFMEACategoryGroupList" parameterType="map" resultType="map">
SELECT
CATEGORY_GROUP.*,
ROW_NUMBER() OVER(ORDER BY CATEGORY_GROUP.REGDATE DESC) AS RNUM
FROM (
SELECT
OBJID,
REPLACE(CATEGORY_GROUP_NAME, CHR(13)||CHR(10), '\N') AS CATEGORY_GROUP_NAME,
DESCRIPTION,
WRITER,
REGDATE,
STATUS,
TARGET_OBJID,
TARGET_OBJID AS PRODUCT_OBJID,
(SELECT PRODUCT_GROUP_OBJID FROM PRODUCT_MNG WHERE OBJID = TARGET_OBJID) AS PRODUCT_GORUP_OBJID
FROM DFMEA_CATEGORY_GROUP
WHERE UPPER(STATUS) = 'ACTIVE'
) CATEGORY_GROUP WHERE 1=1
<if test="search_productObjId != null and !''.equals(search_productObjId)">
AND CATEGORY_GROUP.PRODUCT_OBJID = #{search_productObjId}
</if>
<if test="search_productGroupObjId != null and !''.equals(search_productGroupObjId)">
AND CATEGORY_GROUP.PRODUCT_GORUP_OBJID = #{search_productGroupObjId}
</if>
</select>
<!-- DFMEA 중분류 목록을 가져온다. -->
<select id="getDFMEACategoryList" parameterType="map" resultType="map">
SELECT
ROW_NUMBER() OVER(ORDER BY CATEGORY.REGDATE DESC) AS RNUM,
CATEGORY.OBJID,
CATEGORY.CATEGORY_GROUP_OBJID,
REPLACE(CATEGORY.CATEGORY_NAME, chr(13)||chr(10), '\n') AS CATEGORY_NAME,
CATEGORY.WRITER,
CATEGORY.REGDATE,
CATEGORY.STATUS
FROM DFMEA_CATEGORY CATEGORY
WHERE UPPER(STATUS) = 'ACTIVE'
AND CATEGORY.CATEGORY_GROUP_OBJID = #{categoryGroupObjId}
</select>
<!-- DFMEA 필터 목록을 가져온다. -->
<select id="getDFMEAAttributeList" parameterType="map" resultType="map">
SELECT
ROW_NUMBER() OVER(ORDER BY ATTRIBUTE.REGDATE DESC) AS RNUM,
ATTRIBUTE.OBJID,
ATTRIBUTE.CATEGORY_OBJID,
REPLACE(ATTRIBUTE.ATTRIBUTE_NAME, chr(13)||chr(10), '\n') AS ATTRIBUTE_NAME,
REPLACE(ATTRIBUTE.POTENTIAL_IMPACT, chr(13)||chr(10), '\n') AS POTENTIAL_IMPACT,
REPLACE(ATTRIBUTE.POTENTIAL_CAUSE, chr(13)||chr(10), '\n') AS POTENTIAL_CAUSE,
REPLACE(ATTRIBUTE.CURRENT_DESIGN_MANAGE_PREVENT, chr(13)||chr(10), '\n') AS CURRENT_DESIGN_MANAGE_PREVENT,
REPLACE(ATTRIBUTE.CURRENT_DESIGN_MANAGE_DETECT, chr(13)||chr(10), '\n') AS CURRENT_DESIGN_MANAGE_DETECT,
REPLACE(ATTRIBUTE.RECOMMEND_OPTION, chr(13)||chr(10), '\n') AS RECOMMEND_OPTION,
ATTRIBUTE.WRITER,
ATTRIBUTE.REGDATE,
ATTRIBUTE.STATUS
FROM DFMEA_CATEGORY_ATTRIBUTE ATTRIBUTE
WHERE UPPER(STATUS) = 'ACTIVE'
<if test="categoryObjId != null and !''.equals(categoryObjId)">
AND ATTRIBUTE.CATEGORY_OBJID = #{categoryObjId}
</if>
<if test="objId != null and !''.equals(objId)">
AND ATTRIBUTE.OBJID = #{objId}
</if>
</select>
<!-- DFMEA의 설변 적용내용을 가져온다. -->
<select id="getStructureChangeInfo" parameterType="map" resultType="map">
SELECT
ATTR.OBJID,
ATTR.TARGET_OBJID,
TO_CHAR(ATTR.PLAN_COMPLETE_DATE,'YYYY-MM-DD') AS PLAN_COMPLETE_DATE,
TO_CHAR(ATTR.COMPLETE_DATE,'YYYY-MM-DD') AS COMPLETE_DATE,
ATTR.ACTION_CONTENTS,
ATTR.SEVERITY_SCORE,
ATTR.INCIDENCE_SCORE,
ATTR.DETECT_SCORE,
ATTR.STEP1,
DECODE(ATTR.STEP1, 'design', '설계', 'develop', '개발', 'production', '양산', STEP1) AS STEP1_TITLE,
ATTR.STEP2,
ATTR.REGDATE,
ATTR.STATUS,
ATTR.WRITER,
(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = ATTR.WRITER) AS USER_NAME,
(SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = ATTR.WRITER) AS DEPT_NAME
FROM PMS_DFMEA_CHANGE_ATTR ATTR
WHERE 1=1
AND OBJID = #{objId}
</select>
<!-- DFMEA의 설변 적용내용의 중복 여부를 확인한다. -->
<select id="checkStructureChangeInfoDuplicate" parameterType="map" resultType="map">
SELECT COUNT(1) CNT FROM(
SELECT
ATTR.OBJID,
ATTR.STEP1,
DECODE(ATTR.STEP1, 'design', '설계', 'develop', '개발', 'production', '양산', STEP1) AS STEP1_TITLE,
ATTR.STEP2
FROM PMS_DFMEA_CHANGE_ATTR ATTR
WHERE OBJID != #{objId}
AND ATTR.STEP1 = #{step1}
AND ATTR.STEP2 = #{step2}
AND ATTR.TARGET_OBJID = #{targetObjId}
)
</select>
<!-- DFMEA의 설변 적용내용을 저장한다. -->
<update id="saveStructureChangeInfo" parameterType="map">
MERGE INTO PMS_DFMEA_CHANGE_ATTR P USING DUAL ON (P.OBJID = #{objId} AND P.TARGET_OBJID = #{targetObjId})
WHEN MATCHED THEN
UPDATE
SET
P.PLAN_COMPLETE_DATE =#{planCompleteDate},
P.COMPLETE_DATE =#{completeDate},
P.ACTION_CONTENTS =#{actionContents},
P.SEVERITY_SCORE =#{severityScore},
P.INCIDENCE_SCORE =#{incidenceScore},
P.DETECT_SCORE =#{detectScore},
P.STEP1 =#{step1},
P.STEP2 =#{step2}
WHEN NOT MATCHED THEN
INSERT (
P.OBJID,
P.TARGET_OBJID,
P.PLAN_COMPLETE_DATE,
P.COMPLETE_DATE,
P.ACTION_CONTENTS,
P.SEVERITY_SCORE,
P.INCIDENCE_SCORE,
P.DETECT_SCORE,
P.STEP1,
P.STEP2,
P.REGDATE,
P.STATUS,
P.WRITER
)VALUES(
#{objId},
#{targetObjId},
#{planCompleteDate},
#{completeDate},
#{actionContents},
#{severityScore},
#{incidenceScore},
#{detectScore},
#{step1},
#{step2},
SYSDATE,
#{status},
#{writer}
)
</update>
<!-- DFMEA 내용을 저장한다. -->
<update id="saveDFMEAInfo" parameterType="map">
MERGE INTO PMS_DFMEA_INFO P USING DUAL ON (P.OBJID = #{objId} AND P.TARGET_OBJID = #{targetObjId})
WHEN MATCHED THEN
UPDATE
SET
P.MASTER_CATEGORY_PART_NO =#{groupPartNo},
P.MASTER_CATEGORY_OBJID =#{groupObjId},
P.SUB_CATEGORY_PART_NO =#{categoryPartNo},
P.SUB_CATEGORY_OBJID =#{categoryObjId},
P.FILTER_PART_NO =#{attrPartNo},
P.FILTER_COMMENT =#{attrPartComment},
P.POTENTIAL_FAIL_FILTER_OBJID =#{attrObjId},
P.POTENTIAL_IMPACT =#{potentialImpact},
P.SEVERITY_SCORE =#{severityScore},
P.SPECIAL_SPEC =#{specialSpec},
P.POTENTIAL_CAUSE =#{potentialCause},
P.INCIDENCE_SCORE =#{incidenceScore},
P.CURRENT_DESIGN_MANAGE_PREVENT =#{currentMngPrevent},
P.CURRENT_DESIGN_MANAGE_DETECT =#{currentMngDetect},
P.DETECT_SCORE =#{detectScore},
P.RECOMMEND_OPTION =#{recommendOption}
WHEN NOT MATCHED THEN
INSERT (
P.OBJID,
P.TARGET_OBJID,
P.MASTER_CATEGORY_PART_NO,
P.MASTER_CATEGORY_OBJID,
P.SUB_CATEGORY_PART_NO,
P.SUB_CATEGORY_OBJID,
P.FILTER_PART_NO,
P.FILTER_COMMENT,
P.POTENTIAL_FAIL_FILTER_OBJID,
P.POTENTIAL_IMPACT,
P.SEVERITY_SCORE,
P.SPECIAL_SPEC,
P.POTENTIAL_CAUSE,
P.INCIDENCE_SCORE,
P.CURRENT_DESIGN_MANAGE_PREVENT,
P.CURRENT_DESIGN_MANAGE_DETECT,
P.DETECT_SCORE,
P.RECOMMEND_OPTION,
P.REGDATE,
P.STATUS,
P.WRITER
)VALUES(
#{objId},
#{targetObjId},
#{groupPartNo},
#{groupObjId},
#{categoryPartNo},
#{categoryObjId},
#{attrPartNo},
#{attrPartComment},
#{attrObjId},
#{potentialImpact},
#{severityScore},
#{specialSpec},
#{potentialCause},
#{incidenceScore},
#{currentMngPrevent},
#{currentMngDetect},
#{detectScore},
#{recommendOption},
SYSDATE,
#{status},
#{writer}
)
</update>
<!-- DFMEA 내용을 삭제한다. -->
<delete id="deleteDFMEAInfo" parameterType="map">
DELETE PMS_DFMEA_INFO WHERE OBJID = #{objId}
</delete>
<!-- 설변적용 내용의 이력을 가져온다. -->
<select id="dfmeaChangeStructureList" parameterType="map" resultType="map">
SELECT A.* , ROW_NUMBER() OVER(ORDER BY A.COMPLETE_DATE DESC NULLS LAST) AS RNUM
FROM(
SELECT
ATTR.OBJID,
ATTR.TARGET_OBJID,
TO_CHAR(ATTR.PLAN_COMPLETE_DATE,'YYYY-MM-DD') AS PLAN_COMPLETE_DATE,
TO_CHAR(ATTR.COMPLETE_DATE,'YYYY-MM-DD') AS COMPLETE_DATE,
ATTR.ACTION_CONTENTS,
ATTR.SEVERITY_SCORE,
ATTR.INCIDENCE_SCORE,
ATTR.DETECT_SCORE,
ATTR.STEP1,
DECODE(ATTR.STEP1, 'design', '설계', 'develop', '개발', 'production', '양산', ATTR.STEP1) AS STEP1_TITLE,
ATTR.STEP2,
TO_CHAR(ATTR.REGDATE,'YYYY-MM-DD') AS REGDATE,
ATTR.STATUS,
ATTR.WRITER,
(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = ATTR.WRITER) AS USER_NAME,
(SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = ATTR.WRITER) AS DEPT_NAME,
(TO_NUMBER(NVL(ATTR.SEVERITY_SCORE,0))*TO_NUMBER(NVL(ATTR.INCIDENCE_SCORE,0))*TO_NUMBER(NVL(ATTR.DETECT_SCORE,0))) AS APPLY_RPN
FROM PMS_DFMEA_CHANGE_ATTR ATTR
WHERE ATTR.TARGET_OBJID = #{targetObjId}
) A
</select>
<!-- 설계 체크리스트 갑지의 목록을 가져온다.. -->
<select id="designCheckListBaseInfoList" parameterType="map" resultType="map">
SELECT *
FROM (
SELECT INFO.*, ROW_NUMBER() OVER(ORDER BY REGDATE DESC) AS RNUM
FROM(
SELECT CNT_INFO.*
FROM(
SELECT
BASE_INFO.OBJID,
BASE_INFO.OEM_OBJID,
(SELECT OEM_NAME FROM OEM_MNG WHERE OBJID = BASE_INFO.OEM_OBJID) AS OEM_NAME,
BASE_INFO.CAR_OBJID,
(SELECT CAR_NAME FROM CAR_MNG WHERE OBJID = BASE_INFO.CAR_OBJID) AS CAR_NAME,
(SELECT CAR_CODE FROM CAR_MNG WHERE OBJID = BASE_INFO.CAR_OBJID) AS CAR_CODE,
(SELECT MODEL_CODE FROM CAR_MNG WHERE OBJID = BASE_INFO.CAR_OBJID) AS MODEL_CODE,
BASE_INFO.PRODUCT_GROUP_OBJID,
(SELECT PRODUCT_GROUP_NAME FROM PRODUCT_GROUP_MNG WHERE OBJID = BASE_INFO.PRODUCT_GROUP_OBJID) AS PRODUCT_GROUP_NAME,
BASE_INFO.PRODUCT_OBJID,
(SELECT PRODUCT_NAME FROM PRODUCT_MNG WHERE OBJID = BASE_INFO.PRODUCT_OBJID) AS PRODUCT_NAME,
BASE_INFO.TITLE,
BASE_INFO.L1_PIC,
BASE_INFO.L2_PIC,
BASE_INFO.L3_PIC,
BASE_INFO.L4_PIC,
BASE_INFO.INSTL_PIC,
BASE_INFO.REGDATE,
TO_CHAR(BASE_INFO.REGDATE,'YYYY-MM-DD') AS REGDATE_TITLE,
BASE_INFO.STATUS,
CASE
WHEN L1_RESULT_DATE IS NULL AND L1_SUBMIT_DATE IS NULL THEN 'L1작성'
WHEN L1_RESULT_DATE IS NULL AND L1_SUBMIT_DATE IS NOT NULL THEN 'L1 제출'
WHEN L1_RESULT_DATE IS NOT NULL AND L1_SUBMIT_DATE IS NOT NULL AND L2_RESULT_DATE IS NULL AND L2_SUBMIT_DATE IS NULL THEN 'L1 확인완료'
WHEN L2_RESULT_DATE IS NULL AND L2_SUBMIT_DATE IS NULL THEN 'L2 작성중'
WHEN L2_RESULT_DATE IS NULL AND L2_SUBMIT_DATE IS NOT NULL THEN 'L2 제출'
WHEN L2_RESULT_DATE IS NOT NULL AND L2_SUBMIT_DATE IS NOT NULL AND L3_RESULT_DATE IS NULL AND L3_SUBMIT_DATE IS NULL THEN 'L2 확인완료'
WHEN L3_RESULT_DATE IS NULL AND L3_SUBMIT_DATE IS NULL THEN 'L3 작성중'
WHEN L3_RESULT_DATE IS NULL AND L3_SUBMIT_DATE IS NOT NULL THEN 'L3 제출'
WHEN L3_RESULT_DATE IS NOT NULL AND L2_SUBMIT_DATE IS NOT NULL AND L4_RESULT_DATE IS NULL AND L4_SUBMIT_DATE IS NULL THEN 'L3 확인완료'
WHEN L4_RESULT_DATE IS NULL AND L4_SUBMIT_DATE IS NULL THEN 'L4 작성중'
WHEN L4_RESULT_DATE IS NULL AND L4_SUBMIT_DATE IS NOT NULL THEN 'L4 제출'
WHEN L4_RESULT_DATE IS NOT NULL AND L2_SUBMIT_DATE IS NOT NULL AND INSTL_RESULT_DATE IS NULL AND INSTL_SUBMIT_DATE IS NULL THEN 'L4 확인완료'
WHEN INSTL_RESULT_DATE IS NULL AND INSTL_SUBMIT_DATE IS NULL THEN 'INSTL 작성중'
WHEN INSTL_RESULT_DATE IS NULL AND INSTL_SUBMIT_DATE IS NOT NULL THEN 'INSTL 제출'
WHEN INSTL_RESULT_DATE IS NOT NULL AND INSTL_SUBMIT_DATE IS NOT NULL AND EO_RESULT_DATE IS NULL AND EO_SUBMIT_DATE IS NULL THEN 'INSTL 확인완료'
WHEN EO_RESULT_DATE IS NULL AND EO_SUBMIT_DATE IS NULL THEN 'EO 작성중'
WHEN EO_RESULT_DATE IS NULL AND EO_SUBMIT_DATE IS NOT NULL THEN 'EO 제출'
WHEN EO_RESULT_DATE IS NOT NULL AND EO_SUBMIT_DATE IS NOT NULL THEN 'EO 확인완료'
ELSE '작성'
END AS STATUS_TITLE,
CASE
WHEN INSTL_RESULT_DATE IS NOT NULL AND INSTL_SUBMIT_DATE IS NOT NULL THEN 'Y'
ELSE 'N'
END AS APPROVAL_FLAG,
BASE_INFO.APPROVAL_STATUS,
CASE
WHEN BASE_INFO.APPROVAL_STATUS IS NULL THEN '미결재'
WHEN UPPER(BASE_INFO.APPROVAL_STATUS) = 'APPROVAL' THEN '결재중'
WHEN UPPER(BASE_INFO.APPROVAL_STATUS) = 'REJECT' THEN '반려'
WHEN UPPER(BASE_INFO.APPROVAL_STATUS) = 'RELEASE' THEN '결재완료'
ELSE ''
END AS APPROVAL_STATUS_TITLE,
BASE_INFO.CURRENT_ROUTE_OBJID,
BASE_INFO.CURRENT_ROUTE_OBJID AS ROUTE_OBJID,
(SELECT APPROVAL_OBJID FROM ROUTE WHERE OBJID = BASE_INFO.CURRENT_ROUTE_OBJID) AS APPROVAL_OBJID,
BASE_INFO.WRITER,
(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = BASE_INFO.WRITER) AS USER_NAME,
(SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = BASE_INFO.WRITER) AS DEPT_NAME,
(SELECT COUNT(1) CHECK_LIST_CNT FROM PMS_DESIGN_CHK_LIST_INFO WHERE TARGET_OBJID = BASE_INFO.OBJID) AS CHECK_LIST_CNT,
CNT_INFO.TOTAL_CHECK_LIST_CNT,
CNT_INFO.APPLY_CNT,
CNT_INFO.REVIEW_CNT,
CNT_INFO.UNAPPLY_CNT,
CNT_INFO.TOTAL_PROBLEM_CONTINUAL_CNT
FROM PMS_DESIGN_CHK_LIST_BASE_INFO BASE_INFO,
(
SELECT
TARGET_OBJID,
SUM(RESULT_APPLY_COUNT) AS APPLY_CNT,
SUM(RESULT_REVIEW_COUNT) AS REVIEW_CNT,
SUM(RESULT_UNAPPLY_COUNT) AS UNAPPLY_CNT,
SUM(CHECK_LIST_CNT) AS TOTAL_CHECK_LIST_CNT,
SUM(PROBLEM_CONTINUAL_CNT) AS TOTAL_PROBLEM_CONTINUAL_CNT
FROM(
SELECT
TARGET_OBJID,
CASE
WHEN UPPER(INFO.RATING_EO) = 'APPLY' THEN 1
WHEN UPPER(INFO.RATING_INSTL) = 'APPLY' THEN 1
WHEN UPPER(INFO.RATING_L4) = 'APPLY' THEN 1
WHEN UPPER(INFO.RATING_L3) = 'APPLY' THEN 1
WHEN UPPER(INFO.RATING_L2) = 'APPLY' THEN 1
WHEN UPPER(INFO.RATING_L1) = 'APPLY' THEN 1
ELSE 0
END AS RESULT_APPLY_COUNT,
CASE
WHEN UPPER(INFO.RATING_EO) = 'REVIEW' THEN 1
WHEN UPPER(INFO.RATING_INSTL) = 'REVIEW' THEN 1
WHEN UPPER(INFO.RATING_L4) = 'REVIEW' THEN 1
WHEN UPPER(INFO.RATING_L3) = 'REVIEW' THEN 1
WHEN UPPER(INFO.RATING_L2) = 'REVIEW' THEN 1
WHEN UPPER(INFO.RATING_L1) = 'REVIEW' THEN 1
ELSE 0
END AS RESULT_REVIEW_COUNT,
CASE
WHEN UPPER(INFO.RATING_EO) = 'UNAPPLY' THEN 1
WHEN UPPER(INFO.RATING_INSTL) = 'UNAPPLY' THEN 1
WHEN UPPER(INFO.RATING_L4) = 'UNAPPLY' THEN 1
WHEN UPPER(INFO.RATING_L3) = 'UNAPPLY' THEN 1
WHEN UPPER(INFO.RATING_L2) = 'UNAPPLY' THEN 1
WHEN UPPER(INFO.RATING_L1) = 'UNAPPLY' THEN 1
ELSE 0
END AS RESULT_UNAPPLY_COUNT,
1 AS CHECK_LIST_CNT,
(SELECT COUNT(1) FROM PMS_REL_CHK_LIST_PROBLEM REL WHERE REL.TARGET_OBJID = INFO.OBJID) AS PROBLEM_CONTINUAL_CNT
FROM PMS_DESIGN_CHK_LIST_INFO INFO
)GROUP BY TARGET_OBJID
)CNT_INFO
WHERE 1=1
AND BASE_INFO.OBJID = CNT_INFO.TARGET_OBJID(+)
)CNT_INFO
WHERE 1=1
<if test="search_carType != null and search_carType != '' ">
AND CAR_OBJID = #{search_carType}
</if>
<if test="search_productType != null and search_productType !=''">
AND PRODUCT_OBJID = #{search_productType}
</if>
<if test="search_oem !=null and search_oem !=''">
AND OEM_OBJID = #{search_oem}
</if>
<if test="search_productGroup != null and search_productGroup !=''">
AND PRODUCT_GROUP_OBJID = #{search_productGroup}
</if>
<if test="search_writer != null and !''.equals(search_writer)">
AND UPPER(USER_NAME) LIKE UPPER('%${search_writer}%')
</if>
) INFO
WHERE 1=1
) WHERE 1=1
<if test="PAGE_END != null and PAGE_END !='' and actionType != 'excel'">
<![CDATA[ AND RNUM <= #{PAGE_END} ]]>
</if>
<if test="PAGE_START != null and PAGE_STRART!='' and actionType != 'excel'">
<![CDATA[ AND RNUM >= #{PAGE_START} ]]>
</if>
</select>
<!-- 설계 체크리스트 갑지의 목록 Count를 가져온다.. -->
<select id="designCheckListBaseInfoListCnt" parameterType="map" resultType="map">
SELECT CEIL(TOTAL_CNT/#{COUNT_PER_PAGE}) MAX_PAGE_SIZE,
TOTAL_CNT
FROM (
SELECT COUNT(1) TOTAL_CNT
FROM(
SELECT
BASE_INFO.OBJID,
BASE_INFO.OEM_OBJID,
(SELECT OEM_NAME FROM OEM_MNG WHERE OBJID = BASE_INFO.OEM_OBJID) AS OEM_NAME,
BASE_INFO.CAR_OBJID,
(SELECT CAR_NAME FROM CAR_MNG WHERE OBJID = BASE_INFO.CAR_OBJID) AS CAR_NAME,
(SELECT CAR_CODE FROM CAR_MNG WHERE OBJID = BASE_INFO.CAR_OBJID) AS CAR_CODE,
(SELECT MODEL_CODE FROM CAR_MNG WHERE OBJID = BASE_INFO.CAR_OBJID) AS MODEL_CODE,
BASE_INFO.PRODUCT_GROUP_OBJID,
(SELECT PRODUCT_GROUP_NAME FROM PRODUCT_GROUP_MNG WHERE OBJID = BASE_INFO.PRODUCT_GROUP_OBJID) AS PRODUCT_GROUP_NAME,
BASE_INFO.PRODUCT_OBJID,
(SELECT PRODUCT_NAME FROM PRODUCT_MNG WHERE OBJID = BASE_INFO.PRODUCT_OBJID) AS PRODUCT_NAME,
BASE_INFO.TITLE,
BASE_INFO.L1_PIC,
BASE_INFO.L2_PIC,
BASE_INFO.L3_PIC,
BASE_INFO.L4_PIC,
BASE_INFO.INSTL_PIC,
BASE_INFO.REGDATE,
TO_CHAR(BASE_INFO.REGDATE,'YYYY-MM-DD') AS REGDATE_TITLE,
BASE_INFO.STATUS,
CASE
WHEN L1_RESULT_DATE IS NULL AND L1_SUBMIT_DATE IS NULL THEN '작성'
WHEN L1_RESULT_DATE IS NULL AND L1_SUBMIT_DATE IS NOT NULL THEN 'L1 제출'
WHEN L1_RESULT_DATE IS NOT NULL AND L1_SUBMIT_DATE IS NOT NULL THEN 'L1 확인완료'
WHEN L2_RESULT_DATE IS NULL AND L2_SUBMIT_DATE IS NULL THEN 'L2 진행중'
WHEN L2_RESULT_DATE IS NULL AND L2_SUBMIT_DATE IS NOT NULL THEN 'L2 제출'
WHEN L2_RESULT_DATE IS NOT NULL AND L2_SUBMIT_DATE IS NOT NULL THEN 'L2 확인완료'
WHEN L3_RESULT_DATE IS NULL AND L3_SUBMIT_DATE IS NULL THEN 'L3 진행중'
WHEN L3_RESULT_DATE IS NULL AND L3_SUBMIT_DATE IS NOT NULL THEN 'L3 제출'
WHEN L3_RESULT_DATE IS NOT NULL AND L2_SUBMIT_DATE IS NOT NULL THEN 'L3 확인완료'
WHEN L4_RESULT_DATE IS NULL AND L4_SUBMIT_DATE IS NULL THEN 'L4 진행중'
WHEN L4_RESULT_DATE IS NULL AND L4_SUBMIT_DATE IS NOT NULL THEN 'L4 제출'
WHEN L4_RESULT_DATE IS NOT NULL AND L2_SUBMIT_DATE IS NOT NULL THEN 'L4 확인완료'
WHEN INSTL_RESULT_DATE IS NULL AND INSTL_SUBMIT_DATE IS NULL THEN 'INSTL 진행중'
WHEN INSTL_RESULT_DATE IS NULL AND INSTL_SUBMIT_DATE IS NOT NULL THEN 'INSTL 제출'
WHEN INSTL_RESULT_DATE IS NOT NULL AND INSTL_SUBMIT_DATE IS NOT NULL THEN 'INSTL 확인완료'
WHEN EO_RESULT_DATE IS NULL AND EO_SUBMIT_DATE IS NULL THEN 'EO 진행중'
WHEN EO_RESULT_DATE IS NULL AND EO_SUBMIT_DATE IS NOT NULL THEN 'EO 제출'
WHEN EO_RESULT_DATE IS NOT NULL AND EO_SUBMIT_DATE IS NOT NULL THEN 'EO 확인완료'
ELSE '작성'
END AS STATUS_TITLE,
BASE_INFO.APPROVAL_STATUS,
CASE
WHEN BASE_INFO.APPROVAL_STATUS IS NULL THEN '미결재'
WHEN UPPER(BASE_INFO.APPROVAL_STATUS) = 'APPROVAL' THEN '결재중'
WHEN UPPER(BASE_INFO.APPROVAL_STATUS) = 'REJECT' THEN '반려'
WHEN UPPER(BASE_INFO.APPROVAL_STATUS) = 'RELEASE' THEN '결재완료'
ELSE ''
END AS APPROVAL_STATUS_TITLE,
BASE_INFO.CURRENT_ROUTE_OBJID,
BASE_INFO.CURRENT_ROUTE_OBJID AS ROUTE_OBJID,
(SELECT APPROVAL_OBJID FROM ROUTE WHERE OBJID = BASE_INFO.CURRENT_ROUTE_OBJID) AS APPROVAL_OBJID,
BASE_INFO.WRITER,
(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = BASE_INFO.WRITER) AS USER_NAME,
(SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = BASE_INFO.WRITER) AS DEPT_NAME,
(SELECT COUNT(1) CHECK_LIST_CNT FROM PMS_DESIGN_CHK_LIST_INFO WHERE TARGET_OBJID = BASE_INFO.OBJID) AS CHECK_LIST_CNT,
CNT_INFO.TOTAL_CHECK_LIST_CNT,
CNT_INFO.APPLY_CNT,
CNT_INFO.REVIEW_CNT,
CNT_INFO.UNAPPLY_CNT,
CNT_INFO.TOTAL_PROBLEM_CONTINUAL_CNT
FROM PMS_DESIGN_CHK_LIST_BASE_INFO BASE_INFO,
(
SELECT
TARGET_OBJID,
SUM(RESULT_APPLY_COUNT) AS APPLY_CNT,
SUM(RESULT_REVIEW_COUNT) AS REVIEW_CNT,
SUM(RESULT_UNAPPLY_COUNT) AS UNAPPLY_CNT,
SUM(CHECK_LIST_CNT) AS TOTAL_CHECK_LIST_CNT,
SUM(PROBLEM_CONTINUAL_CNT) AS TOTAL_PROBLEM_CONTINUAL_CNT
FROM(
SELECT
TARGET_OBJID,
CASE
WHEN UPPER(INFO.RATING_EO) = 'APPLY' THEN 1
WHEN UPPER(INFO.RATING_INSTL) = 'APPLY' THEN 1
WHEN UPPER(INFO.RATING_L4) = 'APPLY' THEN 1
WHEN UPPER(INFO.RATING_L3) = 'APPLY' THEN 1
WHEN UPPER(INFO.RATING_L2) = 'APPLY' THEN 1
WHEN UPPER(INFO.RATING_L1) = 'APPLY' THEN 1
ELSE 0
END AS RESULT_APPLY_COUNT,
CASE
WHEN UPPER(INFO.RATING_EO) = 'REVIEW' THEN 1
WHEN UPPER(INFO.RATING_INSTL) = 'REVIEW' THEN 1
WHEN UPPER(INFO.RATING_L4) = 'REVIEW' THEN 1
WHEN UPPER(INFO.RATING_L3) = 'REVIEW' THEN 1
WHEN UPPER(INFO.RATING_L2) = 'REVIEW' THEN 1
WHEN UPPER(INFO.RATING_L1) = 'REVIEW' THEN 1
ELSE 0
END AS RESULT_REVIEW_COUNT,
CASE
WHEN UPPER(INFO.RATING_EO) = 'UNAPPLY' THEN 1
WHEN UPPER(INFO.RATING_INSTL) = 'UNAPPLY' THEN 1
WHEN UPPER(INFO.RATING_L4) = 'UNAPPLY' THEN 1
WHEN UPPER(INFO.RATING_L3) = 'UNAPPLY' THEN 1
WHEN UPPER(INFO.RATING_L2) = 'UNAPPLY' THEN 1
WHEN UPPER(INFO.RATING_L1) = 'UNAPPLY' THEN 1
ELSE 0
END AS RESULT_UNAPPLY_COUNT,
1 AS CHECK_LIST_CNT,
(SELECT COUNT(1) FROM PMS_REL_CHK_LIST_PROBLEM REL WHERE REL.TARGET_OBJID = INFO.OBJID) AS PROBLEM_CONTINUAL_CNT
FROM PMS_DESIGN_CHK_LIST_INFO INFO
)GROUP BY TARGET_OBJID
)CNT_INFO
WHERE 1=1
AND BASE_INFO.OBJID = CNT_INFO.TARGET_OBJID(+)
)CNT_INFO
WHERE 1=1
<if test="search_carType != null and search_carType != '' ">
AND CAR_OBJID = #{search_carType}
</if>
<if test="search_productType != null and search_productType !=''">
AND PRODUCT_OBJID = #{search_productType}
</if>
<if test="search_oem !=null and search_oem !=''">
AND OEM_OBJID = #{search_oem}
</if>
<if test="search_productGroup != null and search_productGroup !=''">
AND PRODUCT_GROUP_OBJID = #{search_productGroup}
</if>
<if test="search_writer != null and !''.equals(search_writer)">
AND UPPER(USER_NAME) LIKE UPPER('%${search_writer}%')
</if>
) WHERE 1=1
</select>
<!-- 설계 체크리스트의 갑지 상세정보를 가져온다. -->
<select id="getCheckListBaseInfo" parameterType="map" resultType="map">
SELECT
ROW_NUMBER() OVER(ORDER BY BASE_INFO.REGDATE DESC) AS RNUM,
BASE_INFO.OBJID,
BASE_INFO.OEM_OBJID,
(SELECT OEM_NAME FROM OEM_MNG WHERE OBJID = BASE_INFO.OEM_OBJID) AS OEM_NAME,
BASE_INFO.CAR_OBJID,
(SELECT CAR_NAME FROM CAR_MNG WHERE OBJID = BASE_INFO.CAR_OBJID) AS CAR_NAME,
(SELECT CAR_CODE FROM CAR_MNG WHERE OBJID = BASE_INFO.CAR_OBJID) AS CAR_CODE,
(SELECT MODEL_CODE FROM CAR_MNG WHERE OBJID = BASE_INFO.CAR_OBJID) AS MODEL_CODE,
BASE_INFO.PRODUCT_GROUP_OBJID,
(SELECT PRODUCT_GROUP_NAME FROM PRODUCT_GROUP_MNG WHERE OBJID = BASE_INFO.PRODUCT_GROUP_OBJID) AS PRODUCT_GROUP_NAME,
BASE_INFO.PRODUCT_OBJID,
(SELECT PRODUCT_NAME FROM PRODUCT_MNG WHERE OBJID = BASE_INFO.PRODUCT_OBJID) AS PRODUCT_NAME,
BASE_INFO.TITLE,
BASE_INFO.L1_PIC,
(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = BASE_INFO.L1_PIC) AS L1_USER_NAME,
(SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = BASE_INFO.L1_PIC) AS L1_DEPT_NAME,
BASE_INFO.L2_PIC,
(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = BASE_INFO.L2_PIC) AS L2_USER_NAME,
(SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = BASE_INFO.L2_PIC) AS L2_DEPT_NAME,
BASE_INFO.L3_PIC,
(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = BASE_INFO.L3_PIC) AS L3_USER_NAME,
(SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = BASE_INFO.L3_PIC) AS L3_DEPT_NAME,
BASE_INFO.L4_PIC,
(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = BASE_INFO.L4_PIC) AS L4_USER_NAME,
(SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = BASE_INFO.L4_PIC) AS L4_DEPT_NAME,
BASE_INFO.INSTL_PIC,
(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = BASE_INFO.INSTL_PIC) AS INSTL_USER_NAME,
(SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = BASE_INFO.INSTL_PIC) AS INSTL_DEPT_NAME,
BASE_INFO.REGDATE,
TO_CHAR(BASE_INFO.REGDATE,'YYYY-MM-DD') AS REGDATE_TITLE,
BASE_INFO.STATUS,
BASE_INFO.WRITER,
REPLACE(BASE_INFO.L1_RESULT_COMMENT,chr(13)||chr(10), '\n') AS L1_RESULT_COMMENT,
TO_CHAR(BASE_INFO.L1_RESULT_DATE,'YYYY-MM-DD') AS L1_RESULT_DATE,
REPLACE(BASE_INFO.L2_RESULT_COMMENT,chr(13)||chr(10), '\n') AS L2_RESULT_COMMENT,
TO_CHAR(BASE_INFO.L2_RESULT_DATE,'YYYY-MM-DD') AS L2_RESULT_DATE,
REPLACE(BASE_INFO.L3_RESULT_COMMENT,chr(13)||chr(10), '\n') AS L3_RESULT_COMMENT,
TO_CHAR(BASE_INFO.L3_RESULT_DATE,'YYYY-MM-DD') AS L3_RESULT_DATE,
REPLACE(BASE_INFO.L4_RESULT_COMMENT,chr(13)||chr(10), '\n') AS L4_RESULT_COMMENT,
TO_CHAR(BASE_INFO.L4_RESULT_DATE,'YYYY-MM-DD') AS L4_RESULT_DATE,
REPLACE(BASE_INFO.INSTL_RESULT_COMMENT,chr(13)||chr(10), '\n') AS INSTL_RESULT_COMMENT,
TO_CHAR(BASE_INFO.INSTL_RESULT_DATE,'YYYY-MM-DD') AS INSTL_RESULT_DATE,
REPLACE(BASE_INFO.EO_RESULT_COMMENT,chr(13)||chr(10), '\n') AS EO_RESULT_COMMENT,
TO_CHAR(BASE_INFO.EO_RESULT_DATE,'YYYY-MM-DD') AS EO_RESULT_DATE
FROM PMS_DESIGN_CHK_LIST_BASE_INFO BASE_INFO
WHERE OBJID = #{objId}
</select>
<!-- 설계 체크리스트 갑지의 중복 여부를 확인한다. -->
<select id="checkCheckListBaseInfoDuplicate" parameterType="map" resultType="map">
SELECT COUNT(1) CNT FROM(
SELECT
OBJID,
OEM_OBJID,
CAR_OBJID,
PRODUCT_GROUP_OBJID,
PRODUCT_OBJID,
L1_PIC,
L2_PIC,
L3_PIC,
L4_PIC,
INSTL_PIC,
REGDATE,
STATUS,
WRITER
FROM PMS_DESIGN_CHK_LIST_BASE_INFO
WHERE OBJID != #{objId}
AND OEM_OBJID = #{oemObjId}
AND CAR_OBJID = #{carObjId}
AND PRODUCT_GROUP_OBJID = #{productGroupObjId}
AND PRODUCT_OBJID = #{productObjId}
)
</select>
<!-- 설계 체크리스트의 갑지 정보를 저장한다. -->
<update id="saveCheckListBaseInfo" parameterType="map">
MERGE INTO PMS_DESIGN_CHK_LIST_BASE_INFO P USING DUAL ON (P.OBJID = #{objId})
WHEN MATCHED THEN
UPDATE
SET
P.OEM_OBJID = #{oemObjId},
P.CAR_OBJID = #{carObjId},
P.PRODUCT_GROUP_OBJID = #{productGroupObjId},
P.PRODUCT_OBJID = #{productObjId},
P.TITLE = #{baseInfoTitle},
P.L1_PIC = #{l1PICId},
P.L2_PIC = #{l2PICId},
P.L3_PIC = #{l3PICId},
P.L4_PIC = #{l4PICId},
P.INSTL_PIC = #{instlPICId},
P.STATUS = #{status}
WHEN NOT MATCHED THEN
INSERT
(
OBJID,
OEM_OBJID,
CAR_OBJID,
PRODUCT_GROUP_OBJID,
PRODUCT_OBJID,
TITLE,
L1_PIC,
L2_PIC,
L3_PIC,
L4_PIC,
INSTL_PIC,
REGDATE,
STATUS,
WRITER
)
VALUES
(
#{objId},
#{oemObjId},
#{carObjId},
#{productGroupObjId},
#{productObjId},
#{baseInfoTitle},
#{l1PICId},
#{l2PICId},
#{l3PICId},
#{l4PICId},
#{instlPICId},
SYSDATE,
#{status},
#{writer}
)
</update>
<!-- 설계 체크리스트 갑지에 연결된 체크리스트 건수 가져온다. -->
<select id="getConnectCheckListCnt" parameterType="map" resultType="map">
SELECT
COUNT(1) AS CNT
FROM(
SELECT
(SELECT PRODUCT_OBJID FROM DESIGN_CHECK_LIST_ATTRIBUTE WHERE OBJID = INFO.CHECK_LIST_ATTRIBUTE_OBJID) AS PRODUCT_OBJID,
INFO.TARGET_OBJID
FROM PMS_DESIGN_CHK_LIST_INFO INFO
)info
WHERE INFO.TARGET_OBJID = #{objId}
AND INFO.PRODUCT_OBJID = #{productObjId}
</select>
<!-- 설계 체크리스트 갑지에 연결된 체크리스트 목록을 가져온다. -->
<select id="getDesignCheckList" parameterType="map" resultType="map">
SELECT
INFO.*
FROM(
SELECT
INFO.OBJID,
INFO.TARGET_OBJID,
INFO.CHECK_LIST_GROUP_OBJID,
(SELECT GROUP_NAME FROM DESIGN_CHECK_LIST_GROUP WHERE OBJID = INFO.CHECK_LIST_GROUP_OBJID) AS GROUP_NAME,
(SELECT SEQ FROM DESIGN_CHECK_LIST_GROUP WHERE OBJID = INFO.CHECK_LIST_GROUP_OBJID) AS GROUP_SEQ,
(SELECT TARGET_OBJID FROM DESIGN_CHECK_LIST_GROUP WHERE OBJID = INFO.CHECK_LIST_GROUP_OBJID) AS GROUP_PRODUCT_OBJID,
INFO.CHECK_LIST_CATEGORY_OBJID,
(SELECT CATEGORY_NAME FROM DESIGN_CHECK_LIST_CATEGORY WHERE OBJID = INFO.CHECK_LIST_CATEGORY_OBJID) AS CATEGORY_NAME,
(SELECT SEQ FROM DESIGN_CHECK_LIST_CATEGORY WHERE OBJID = INFO.CHECK_LIST_CATEGORY_OBJID) AS CATEGORY_SEQ,
(SELECT PRODUCT_OBJID FROM DESIGN_CHECK_LIST_CATEGORY WHERE OBJID = INFO.CHECK_LIST_CATEGORY_OBJID) AS CATEGORY_PRODUCT_OBJID,
INFO.CHECK_LIST_ATTRIBUTE_OBJID,
(SELECT SEQ FROM DESIGN_CHECK_LIST_ATTRIBUTE WHERE OBJID = INFO.CHECK_LIST_ATTRIBUTE_OBJID) AS ATTRIBUTE_SEQ,
(SELECT ATTRIBUTE_NAME FROM DESIGN_CHECK_LIST_ATTRIBUTE WHERE OBJID = INFO.CHECK_LIST_ATTRIBUTE_OBJID) AS ATTRIBUTE_NAME,
(SELECT PRODUCT_OBJID FROM DESIGN_CHECK_LIST_ATTRIBUTE WHERE OBJID = INFO.CHECK_LIST_ATTRIBUTE_OBJID) AS ATTR_PRODUCT_OBJID,
REPLACE(NVL2(INFO.CHECK_OPTION,INFO.CHECK_OPTION,(SELECT CHECK_OPTION FROM DESIGN_CHECK_LIST_ATTRIBUTE WHERE OBJID = INFO.CHECK_LIST_ATTRIBUTE_OBJID)), chr(13)||chr(10), '\n') AS CHECK_OPTION,
REPLACE(NVL2(INFO.CHECK_BASE,INFO.CHECK_BASE,(SELECT CHECK_BASE FROM DESIGN_CHECK_LIST_ATTRIBUTE WHERE OBJID = INFO.CHECK_LIST_ATTRIBUTE_OBJID)), chr(13)||chr(10), '\n') AS CHECK_BASE,
UPPER(INFO.RATING_L1) AS RATING_L1,
CASE
WHEN UPPER(INFO.RATING_L1) = 'APPLY' THEN '●'
WHEN UPPER(INFO.RATING_L1) = 'REVIEW' THEN '◐'
WHEN UPPER(INFO.RATING_L1) = 'UNAPPLY' THEN 'X'
WHEN INFO.RATING_L1 IS NULL THEN '미등록'
ELSE INFO.RATING_L1
END AS RATING_L1_TITLE,
INFO.RESULT_L1,
REPLACE(INFO.COMMENT_L1,chr(13)||chr(10), '\n') AS COMMENT_L1,
INFO.RESULT_DATE_L1,
TO_CHAR(INFO.RESULT_DATE_L1,'YYYY-MM-DD') AS RESULT_DATE_L1_TITLE,
UPPER(INFO.RATING_L2) AS RATING_L2,
CASE
WHEN UPPER(INFO.RATING_L2) = 'APPLY' THEN '●'
WHEN UPPER(INFO.RATING_L2) = 'REVIEW' THEN '◐'
WHEN UPPER(INFO.RATING_L2) = 'UNAPPLY' THEN 'X'
WHEN INFO.RATING_L2 IS NULL THEN '미등록'
ELSE INFO.RATING_L2
END AS RATING_L2_TITLE,
INFO.RESULT_L2,
REPLACE(INFO.COMMENT_L2,chr(13)||chr(10), '\n') AS COMMENT_L2,
INFO.RESULT_DATE_L2,
TO_CHAR(INFO.RESULT_DATE_L2,'YYYY-MM-DD') AS RESULT_DATE_L2_TITLE,
UPPER(INFO.RATING_L3) AS RATING_L3,
CASE
WHEN UPPER(INFO.RATING_L3) = 'APPLY' THEN '●'
WHEN UPPER(INFO.RATING_L3) = 'REVIEW' THEN '◐'
WHEN UPPER(INFO.RATING_L3) = 'UNAPPLY' THEN 'X'
WHEN INFO.RATING_L3 IS NULL THEN '미등록'
ELSE INFO.RATING_L3
END AS RATING_L3_TITLE,
INFO.RESULT_L3,
REPLACE(INFO.COMMENT_L3,chr(13)||chr(10), '\n') AS COMMENT_L3,
INFO.RESULT_DATE_L3,
TO_CHAR(INFO.RESULT_DATE_L3,'YYYY-MM-DD') AS RESULT_DATE_L3_TITLE,
UPPER(INFO.RATING_L4) AS RATING_L4,
CASE
WHEN UPPER(INFO.RATING_L4) = 'APPLY' THEN '●'
WHEN UPPER(INFO.RATING_L4) = 'REVIEW' THEN '◐'
WHEN UPPER(INFO.RATING_L4) = 'UNAPPLY' THEN 'X'
WHEN INFO.RATING_L4 IS NULL THEN '미등록'
ELSE INFO.RATING_L4
END AS RATING_L4_TITLE,
INFO.RESULT_L4,
REPLACE(INFO.COMMENT_L4,chr(13)||chr(10), '\n') AS COMMENT_L4,
INFO.RESULT_DATE_L4,
TO_CHAR(INFO.RESULT_DATE_L4,'YYYY-MM-DD') AS RESULT_DATE_L4_TITLE,
UPPER(INFO.RATING_INSTL) AS RATING_INSTL,
CASE
WHEN UPPER(INFO.RATING_INSTL) = 'APPLY' THEN '●'
WHEN UPPER(INFO.RATING_INSTL) = 'REVIEW' THEN '◐'
WHEN UPPER(INFO.RATING_INSTL) = 'UNAPPLY' THEN 'X'
WHEN INFO.RATING_INSTL IS NULL THEN '미등록'
ELSE INFO.RATING_INSTL
END AS RATING_INSTL_TITLE,
INFO.RESULT_INSTL,
REPLACE(INFO.COMMENT_INSTL,chr(13)||chr(10), '\n') AS COMMENT_INSTL,
INFO.RESULT_DATE_INSTL,
TO_CHAR(INFO.RESULT_DATE_INSTL,'YYYY-MM-DD') AS RESULT_DATE_INSTL_TITLE,
UPPER(INFO.RATING_EO) AS RATING_EO,
CASE
WHEN UPPER(INFO.RATING_EO) = 'APPLY' THEN '●'
WHEN UPPER(INFO.RATING_EO) = 'REVIEW' THEN '◐'
WHEN UPPER(INFO.RATING_EO) = 'UNAPPLY' THEN 'X'
WHEN INFO.RATING_EO IS NULL THEN '미등록'
ELSE INFO.RATING_EO
END AS RATING_EO_TITLE,
INFO.RESULT_EO,
REPLACE(INFO.COMMENT_EO,chr(13)||chr(10), '\n') AS COMMENT_EO,
INFO.RESULT_DATE_EO,
TO_CHAR(INFO.RESULT_DATE_EO,'YYYY-MM-DD') AS RESULT_DATE_EO_TITLE,
CASE
WHEN (SELECT COUNT(1) FROM ATTACH_FILE_INFO WHERE TARGET_OBJID = INFO.OBJID AND DOC_TYPE = #{eoDocType} AND UPPER(STATUS) = 'ACTIVE') > 0 OR INFO.COMMENT_EO IS NOT NULL THEN REPLACE(INFO.COMMENT_EO,chr(13)||chr(10), '\n')
WHEN (SELECT COUNT(1) FROM ATTACH_FILE_INFO WHERE TARGET_OBJID = INFO.OBJID AND DOC_TYPE = #{instlDocType} AND UPPER(STATUS) = 'ACTIVE') > 0 OR INFO.COMMENT_INSTL IS NOT NULL THEN REPLACE(INFO.COMMENT_INSTL,chr(13)||chr(10), '\n')
WHEN (SELECT COUNT(1) FROM ATTACH_FILE_INFO WHERE TARGET_OBJID = INFO.OBJID AND DOC_TYPE = #{l4DocType} AND UPPER(STATUS) = 'ACTIVE') > 0 OR INFO.COMMENT_L4 IS NOT NULL THEN REPLACE(INFO.COMMENT_L4,chr(13)||chr(10), '\n')
WHEN (SELECT COUNT(1) FROM ATTACH_FILE_INFO WHERE TARGET_OBJID = INFO.OBJID AND DOC_TYPE = #{l3DocType} AND UPPER(STATUS) = 'ACTIVE') > 0 OR INFO.COMMENT_L3 IS NOT NULL THEN REPLACE(INFO.COMMENT_L3,chr(13)||chr(10), '\n')
WHEN (SELECT COUNT(1) FROM ATTACH_FILE_INFO WHERE TARGET_OBJID = INFO.OBJID AND DOC_TYPE = #{l2DocType} AND UPPER(STATUS) = 'ACTIVE') > 0 OR INFO.COMMENT_L2 IS NOT NULL THEN REPLACE(INFO.COMMENT_L2,chr(13)||chr(10), '\n')
WHEN (SELECT COUNT(1) FROM ATTACH_FILE_INFO WHERE TARGET_OBJID = INFO.OBJID AND DOC_TYPE = #{l1DocType} AND UPPER(STATUS) = 'ACTIVE') > 0 OR INFO.COMMENT_L1 IS NOT NULL THEN REPLACE(INFO.COMMENT_L1,chr(13)||chr(10), '\n')
ELSE ''
END AS LAST_CHECK_RESULT_COMMENT,
CASE
WHEN (SELECT COUNT(1) FROM ATTACH_FILE_INFO WHERE TARGET_OBJID = INFO.OBJID AND DOC_TYPE = #{eoDocType} AND UPPER(STATUS) = 'ACTIVE') > 0 THEN (SELECT OBJID FROM ATTACH_FILE_INFO WHERE TARGET_OBJID = INFO.OBJID AND DOC_TYPE = #{eoDocType} AND UPPER(STATUS) = 'ACTIVE')
WHEN (SELECT COUNT(1) FROM ATTACH_FILE_INFO WHERE TARGET_OBJID = INFO.OBJID AND DOC_TYPE = #{instlDocType} AND UPPER(STATUS) = 'ACTIVE') > 0 THEN (SELECT OBJID FROM ATTACH_FILE_INFO WHERE TARGET_OBJID = INFO.OBJID AND DOC_TYPE = #{instlDocType} AND UPPER(STATUS) = 'ACTIVE')
WHEN (SELECT COUNT(1) FROM ATTACH_FILE_INFO WHERE TARGET_OBJID = INFO.OBJID AND DOC_TYPE = #{l4DocType} AND UPPER(STATUS) = 'ACTIVE') > 0 THEN (SELECT OBJID FROM ATTACH_FILE_INFO WHERE TARGET_OBJID = INFO.OBJID AND DOC_TYPE = #{l4DocType} AND UPPER(STATUS) = 'ACTIVE')
WHEN (SELECT COUNT(1) FROM ATTACH_FILE_INFO WHERE TARGET_OBJID = INFO.OBJID AND DOC_TYPE = #{l3DocType} AND UPPER(STATUS) = 'ACTIVE') > 0 THEN (SELECT OBJID FROM ATTACH_FILE_INFO WHERE TARGET_OBJID = INFO.OBJID AND DOC_TYPE = #{l3DocType} AND UPPER(STATUS) = 'ACTIVE')
WHEN (SELECT COUNT(1) FROM ATTACH_FILE_INFO WHERE TARGET_OBJID = INFO.OBJID AND DOC_TYPE = #{l2DocType} AND UPPER(STATUS) = 'ACTIVE') > 0 THEN (SELECT OBJID FROM ATTACH_FILE_INFO WHERE TARGET_OBJID = INFO.OBJID AND DOC_TYPE = #{l2DocType} AND UPPER(STATUS) = 'ACTIVE')
WHEN (SELECT COUNT(1) FROM ATTACH_FILE_INFO WHERE TARGET_OBJID = INFO.OBJID AND DOC_TYPE = #{l1DocType} AND UPPER(STATUS) = 'ACTIVE') > 0 THEN (SELECT OBJID FROM ATTACH_FILE_INFO WHERE TARGET_OBJID = INFO.OBJID AND DOC_TYPE = #{l1DocType} AND UPPER(STATUS) = 'ACTIVE')
ELSE null
END AS LAST_CHECK_RESULT_FILE_OBJID,
CASE
WHEN INFO.RESULT_DATE_EO IS NOT NULL THEN 'EO 평가완료'
WHEN INFO.RESULT_DATE_INSTL IS NOT NULL THEN 'INSTL 평가완료'
WHEN INFO.RESULT_DATE_L4 IS NOT NULL THEN 'L4 평가완료'
WHEN INFO.RESULT_DATE_L3 IS NOT NULL THEN 'L3 평가완료'
WHEN INFO.RESULT_DATE_L2 IS NOT NULL THEN 'L2 평가완료'
WHEN INFO.RESULT_DATE_L1 IS NOT NULL THEN 'L1 평가완료'
ELSE ''
END AS LAST_RESULT,
UPPER(INFO.RELATION_TYPE) AS RELATION_TYPE,
CASE
WHEN UPPER(INFO.RELATION_TYPE) = 'UNRELATE' THEN '-'
WHEN UPPER(INFO.RELATION_TYPE) = 'RELATED' THEN '○'
ELSE ''
END AS RELATION_TYPE_TITLE,
INFO.REGDATE,
INFO.STATUS,
INFO.STATUS AS STATUS_TITLE,
INFO.WRITER,
(SELECT COUNT(1) FROM PMS_REL_CHK_LIST_PROBLEM REL WHERE REL.TARGET_OBJID = INFO.OBJID) AS REL_CNT
FROM PMS_DESIGN_CHK_LIST_INFO INFO
)INFO
WHERE INFO.TARGET_OBJID = #{targetObjId}
ORDER BY INFO.GROUP_SEQ ASC NULLS LAST,INFO.CATEGORY_SEQ ASC NULLS LAST,INFO.ATTRIBUTE_SEQ ASC NULLS LAST
<!-- AND INFO.GROUP_PRODUCT_OBJID = #{productObjId} -->
<!-- AND INFO.CATEGORY_PRODUCT_OBJID = #{productObjId} -->
<!-- AND INFO.ATTR_PRODUCT_OBJID = #{productObjId} -->
</select>
<!-- 설계 체크리스트 갑지의 제품에 해당하는 체크리스트 템플릿 목록을 가져온다. -->
<select id="getDesignCheckListTemplate" parameterType="map" resultType="map">
SELECT
CHECK_GROUP.OBJID AS GROUP_OBJID,
CATEGORY.OBJID AS CATEGORY_OBJID,
ATTR.OBJID AS ATTRIBUTE_OBJID,
ATTR.PRODUCT_OBJID,
ATTR.ATTRIBUTE_NAME,
ATTR.CHECK_OPTION,
ATTR.CHECK_BASE
FROM
DESIGN_CHECK_LIST_ATTRIBUTE ATTR,
DESIGN_CHECK_LIST_GROUP CHECK_GROUP,
DESIGN_CHECK_LIST_CATEGORY CATEGORY
WHERE ATTR.PRODUCT_OBJID = #{productObjId}
AND ATTR.PRODUCT_OBJID = CATEGORY.PRODUCT_OBJID
AND ATTR.PRODUCT_OBJID = CHECK_GROUP.TARGET_OBJID
AND ATTR.CATEGORY_OBJID = CATEGORY.OBJID
AND CATEGORY.GROUP_OBJID = CHECK_GROUP.OBJID
AND UPPER(CHECK_GROUP.STATUS) = 'ACTIVE'
AND UPPER(CATEGORY.STATUS) = 'ACTIVE'
AND UPPER(ATTR.STATUS) = 'ACTIVE'
</select>
<!-- 설계 체크리스트(갑지X)를 merge 한다. -->
<update id="mergeCheckListInfo" parameterType="map">
MERGE INTO PMS_DESIGN_CHK_LIST_INFO P USING DUAL ON (P.OBJID = #{objId} AND P.TARGET_OBJID = #{targetObjId})
WHEN MATCHED THEN
UPDATE
SET
CHECK_LIST_GROUP_OBJID = #{groupObjId},
CHECK_LIST_CATEGORY_OBJID = #{categoryObjId},
CHECK_LIST_ATTRIBUTE_OBJID = #{attributeObjId},
CHECK_OPTION = #{checkOption},
CHECK_BASE = #{checkBase},
RELATION_TYPE = #{relationType}
WHEN NOT MATCHED THEN
INSERT
(
OBJID,
TARGET_OBJID,
CHECK_LIST_GROUP_OBJID,
CHECK_LIST_CATEGORY_OBJID,
CHECK_LIST_ATTRIBUTE_OBJID,
CHECK_OPTION,
CHECK_BASE,
RELATION_TYPE,
REGDATE,
STATUS,
WRITER
)
VALUES
(
#{objId},
#{targetObjId},
#{groupObjId},
#{categoryObjId},
#{attributeObjId},
#{checkOption},
#{checkBase},
#{relationType},
SYSDATE,
#{status},
#{writer}
)
</update>
<!-- 설계 체크리스트(갑지X)를 delete 한다. -->
<delete id="deleteCheckListInfo" parameterType="map">
DELETE PMS_DESIGN_CHK_LIST_INFO WHERE OBJID = #{objId} AND TARGET_OBJID = #{targetObjId}
</delete>
<!-- 설계 체크리스트 상세 정보를 가져온다. -->
<select id="getCheckListDetailInfo" parameterType="map" resultType="map">
SELECT
INFO.*
FROM(
SELECT
INFO.OBJID,
INFO.TARGET_OBJID,
INFO.CHECK_LIST_GROUP_OBJID,
(SELECT GROUP_NAME FROM DESIGN_CHECK_LIST_GROUP WHERE OBJID = INFO.CHECK_LIST_GROUP_OBJID) AS GROUP_NAME,
(SELECT TARGET_OBJID FROM DESIGN_CHECK_LIST_GROUP WHERE OBJID = INFO.CHECK_LIST_GROUP_OBJID) AS GROUP_PRODUCT_OBJID,
INFO.CHECK_LIST_CATEGORY_OBJID,
(SELECT CATEGORY_NAME FROM DESIGN_CHECK_LIST_CATEGORY WHERE OBJID = INFO.CHECK_LIST_CATEGORY_OBJID) AS CATEGORY_NAME,
(SELECT PRODUCT_OBJID FROM DESIGN_CHECK_LIST_CATEGORY WHERE OBJID = INFO.CHECK_LIST_CATEGORY_OBJID) AS CATEGORY_PRODUCT_OBJID,
INFO.CHECK_LIST_ATTRIBUTE_OBJID,
(SELECT ATTRIBUTE_NAME FROM DESIGN_CHECK_LIST_ATTRIBUTE WHERE OBJID = INFO.CHECK_LIST_ATTRIBUTE_OBJID) AS ATTRIBUTE_NAME,
(SELECT PRODUCT_OBJID FROM DESIGN_CHECK_LIST_ATTRIBUTE WHERE OBJID = INFO.CHECK_LIST_ATTRIBUTE_OBJID) AS ATTR_PRODUCT_OBJID,
REPLACE(NVL2(INFO.CHECK_OPTION,INFO.CHECK_OPTION,(SELECT CHECK_OPTION FROM DESIGN_CHECK_LIST_ATTRIBUTE WHERE OBJID = INFO.CHECK_LIST_ATTRIBUTE_OBJID)), chr(13)||chr(10), '\n') AS CHECK_OPTION,
REPLACE(NVL2(INFO.CHECK_BASE,INFO.CHECK_BASE,(SELECT CHECK_BASE FROM DESIGN_CHECK_LIST_ATTRIBUTE WHERE OBJID = INFO.CHECK_LIST_ATTRIBUTE_OBJID)), chr(13)||chr(10), '\n') AS CHECK_BASE,
UPPER(INFO.RATING_L1) AS RATING_L1,
CASE
WHEN UPPER(INFO.RATING_L1) = 'APPLY' THEN '●'
WHEN UPPER(INFO.RATING_L1) = 'REVIEW' THEN '◐'
WHEN UPPER(INFO.RATING_L1) = 'UNAPPLY' THEN 'X'
ELSE ''
END AS RATING_L1_TITLE,
INFO.RESULT_L1,
CASE
WHEN UPPER(INFO.RESULT_L1) = 'OK' THEN '승인'
WHEN UPPER(INFO.RESULT_L1) = 'NG' THEN '반려'
ELSE ''
END AS RESULT_L1_TITLE,
INFO.COMMENT_L1,
INFO.RESULT_DATE_L1,
TO_CHAR(INFO.RESULT_DATE_L1, 'YYYY-MM-DD') AS RESULT_DATE_L1_TITLE,
UPPER(INFO.RATING_L2) AS RATING_L2,
CASE
WHEN UPPER(INFO.RATING_L2) = 'APPLY' THEN '●'
WHEN UPPER(INFO.RATING_L2) = 'REVIEW' THEN '◐'
WHEN UPPER(INFO.RATING_L2) = 'UNAPPLY' THEN 'X'
ELSE ''
END AS RATING_L2_TITLE,
INFO.RESULT_L2,
CASE
WHEN UPPER(INFO.RESULT_L2) = 'OK' THEN '승인'
WHEN UPPER(INFO.RESULT_L2) = 'NG' THEN '반려'
ELSE ''
END AS RESULT_L2_TITLE,
INFO.COMMENT_L2,
INFO.RESULT_DATE_L2,
TO_CHAR(INFO.RESULT_DATE_L2, 'YYYY-MM-DD') AS RESULT_DATE_L2_TITLE,
UPPER(INFO.RATING_L3) AS RATING_L3,
CASE
WHEN UPPER(INFO.RATING_L3) = 'APPLY' THEN '●'
WHEN UPPER(INFO.RATING_L3) = 'REVIEW' THEN '◐'
WHEN UPPER(INFO.RATING_L3) = 'UNAPPLY' THEN 'X'
ELSE ''
END AS RATING_L3_TITLE,
INFO.RESULT_L3,
CASE
WHEN UPPER(INFO.RESULT_L3) = 'OK' THEN '승인'
WHEN UPPER(INFO.RESULT_L3) = 'NG' THEN '반려'
ELSE ''
END AS RESULT_L3_TITLE,
INFO.COMMENT_L3,
INFO.RESULT_DATE_L3,
TO_CHAR(INFO.RESULT_DATE_L3, 'YYYY-MM-DD') AS RESULT_DATE_L3_TITLE,
UPPER(INFO.RATING_L4) AS RATING_L4,
CASE
WHEN UPPER(INFO.RATING_L4) = 'APPLY' THEN '●'
WHEN UPPER(INFO.RATING_L4) = 'REVIEW' THEN '◐'
WHEN UPPER(INFO.RATING_L4) = 'UNAPPLY' THEN 'X'
ELSE ''
END AS RATING_L4_TITLE,
INFO.RESULT_L4,
CASE
WHEN UPPER(INFO.RESULT_L4) = 'OK' THEN '승인'
WHEN UPPER(INFO.RESULT_L4) = 'NG' THEN '반려'
ELSE ''
END AS RESULT_L4_TITLE,
INFO.COMMENT_L4,
INFO.RESULT_DATE_L4,
TO_CHAR(INFO.RESULT_DATE_L4, 'YYYY-MM-DD') AS RESULT_DATE_L4_TITLE,
UPPER(INFO.RATING_INSTL) AS RATING_INSTL,
CASE
WHEN UPPER(INFO.RATING_INSTL) = 'APPLY' THEN '●'
WHEN UPPER(INFO.RATING_INSTL) = 'REVIEW' THEN '◐'
WHEN UPPER(INFO.RATING_INSTL) = 'UNAPPLY' THEN 'X'
ELSE ''
END AS RATING_INSTL_TITLE,
INFO.RESULT_INSTL,
CASE
WHEN UPPER(INFO.RESULT_INSTL) = 'OK' THEN '승인'
WHEN UPPER(INFO.RESULT_INSTL) = 'NG' THEN '반려'
ELSE ''
END AS RESULT_INSTL_TITLE,
INFO.COMMENT_INSTL,
INFO.RESULT_DATE_INSTL,
TO_CHAR(INFO.RESULT_DATE_INSTL, 'YYYY-MM-DD') AS RESULT_DATE_INSTL_TITLE,
UPPER(INFO.RATING_EO) AS RATING_EO,
CASE
WHEN UPPER(INFO.RATING_EO) = 'APPLY' THEN '●'
WHEN UPPER(INFO.RATING_EO) = 'REVIEW' THEN '◐'
WHEN UPPER(INFO.RATING_EO) = 'UNAPPLY' THEN 'X'
ELSE ''
END AS RATING_EO_TITLE,
INFO.RESULT_EO,
CASE
WHEN UPPER(INFO.RESULT_EO) = 'OK' THEN '승인'
WHEN UPPER(INFO.RESULT_EO) = 'NG' THEN '반려'
ELSE ''
END AS RESULT_EO_TITLE,
INFO.COMMENT_EO,
INFO.RESULT_DATE_EO,
TO_CHAR(INFO.RESULT_DATE_EO, 'YYYY-MM-DD') AS RESULT_DATE_EO_TITLE,
CASE
WHEN INFO.COMMENT_EO IS NOT NULL THEN REPLACE(INFO.COMMENT_EO,chr(13)||chr(10), '\n')
WHEN INFO.COMMENT_INSTL IS NOT NULL THEN REPLACE(INFO.COMMENT_INSTL,chr(13)||chr(10), '\n')
WHEN INFO.COMMENT_L4 IS NOT NULL THEN REPLACE(INFO.COMMENT_L4,chr(13)||chr(10), '\n')
WHEN INFO.COMMENT_L3 IS NOT NULL THEN REPLACE(INFO.COMMENT_L3,chr(13)||chr(10), '\n')
WHEN INFO.COMMENT_L2 IS NOT NULL THEN REPLACE(INFO.COMMENT_L2,chr(13)||chr(10), '\n')
WHEN INFO.COMMENT_L1 IS NOT NULL THEN REPLACE(INFO.COMMENT_L1,chr(13)||chr(10), '\n')
ELSE ''
END AS LAST_CHECK_RESULT_COMMENT,
UPPER(INFO.RELATION_TYPE) AS RELATION_TYPE,
CASE
WHEN UPPER(INFO.RELATION_TYPE) = 'UNRELATE' THEN '-'
WHEN UPPER(INFO.RELATION_TYPE) = 'RELATED' THEN '○'
ELSE ''
END AS RELATION_TYPE_TITLE,
INFO.REGDATE,
INFO.STATUS,
INFO.STATUS AS STATUS_TITLE,
INFO.WRITER
FROM PMS_DESIGN_CHK_LIST_INFO INFO
)INFO
WHERE INFO.OBJID = #{objId}
AND INFO.TARGET_OBJID = #{targetObjId}
</select>
<!-- 설계 체크리스트 소분류 상세 내용을 가져온다. -->
<select id="getCheckListAttributeInfo" parameterType="map" resultType="map">
SELECT
OBJID,
PRODUCT_OBJID,
(SELECT PRODUCT_NAME FROM PRODUCT_MNG WHERE OBJID = PRODUCT_OBJID) AS PROD_NAME,
CATEGORY_OBJID,
ATTRIBUTE_NAME,
REPLACE(CHECK_OPTION,chr(13)||chr(10), '\n') AS CHECK_OPTION,
REPLACE(CHECK_BASE,chr(13)||chr(10), '\n') AS CHECK_BASE,
SEQ,
WRITER,
REGDATE,
STATUS
FROM DESIGN_CHECK_LIST_ATTRIBUTE
WHERE OBJID = #{objId}
</select>
<!-- 설계 체크리스트 평가결과를 저장한다. -->
<update id="mergeCheckListTestResult" parameterType="map">
UPDATE PMS_DESIGN_CHK_LIST_INFO
<if test="step != null and step == 'L1'">
SET
<if test="result == 'apply'">
RATING_L2 = #{result},
RESULT_DATE_L2=#{resultDate},
RATING_L3 = #{result},
RESULT_DATE_L3=#{resultDate},
RATING_L4 = #{result},
RESULT_DATE_L4=#{resultDate},
RATING_INSTL = #{result},
RESULT_DATE_INSTL=#{resultDate},
</if>
RATING_L1 = #{result},
COMMENT_L1 = #{contents},
RESULT_DATE_L1=#{resultDate}
</if>
<if test="step != null and step == 'L2'">
SET
<if test="result == 'apply'">
RATING_L3 = #{result},
RESULT_DATE_L3=#{resultDate},
RATING_L4 = #{result},
RESULT_DATE_L4=#{resultDate},
RATING_INSTL = #{result},
RESULT_DATE_INSTL=#{resultDate},
</if>
RATING_L2 = #{result},
COMMENT_L2 = #{contents},
RESULT_DATE_L2=#{resultDate}
</if>
<if test="step != null and step == 'L3'">
SET
<if test="result == 'apply'">
RATING_L4 = #{result},
RESULT_DATE_L4=#{resultDate},
RATING_INSTL = #{result},
RESULT_DATE_INSTL=#{resultDate},
</if>
RATING_L3 = #{result},
COMMENT_L3 = #{contents},
RESULT_DATE_L3=#{resultDate}
</if>
<if test="step != null and step == 'L4'">
SET
<if test="result == 'apply'">
RATING_INSTL = #{result},
RESULT_DATE_INSTL=#{resultDate},
</if>
RATING_L4 = #{result},
COMMENT_L4 = #{contents},
RESULT_DATE_L4=#{resultDate}
</if>
<if test="step != null and step == 'INSTL'">
SET
RATING_INSTL = #{result},
COMMENT_INSTL = #{contents},
RESULT_DATE_INSTL=#{resultDate}
</if>
<if test="step != null and step == 'EO'">
SET
RATING_EO = #{result},
COMMENT_EO = #{contents},
RESULT_DATE_EO=#{resultDate}
</if>
WHERE OBJID = #{objId}
AND TARGET_OBJID = #{targetObjId}
</update>
<!-- 설계 체크리스트를 단계별로 확인처리한다. -->
<update id="mergeComfirmTestResultInfo" parameterType="map">
UPDATE PMS_DESIGN_CHK_LIST_BASE_INFO
<set>
<if test="step != null and step == 'L1'">
L1_RESULT_COMMENT=#{contents},
L1_RESULT_DATE=SYSDATE
</if>
<if test="step != null and step == 'L2'">
L2_RESULT_COMMENT=#{contents},
L2_RESULT_DATE=SYSDATE
</if>
<if test="step != null and step == 'L3'">
L3_RESULT_COMMENT=#{contents},
L3_RESULT_DATE=SYSDATE
</if>
<if test="step != null and step == 'L4'">
L4_RESULT_COMMENT=#{contents},
L4_RESULT_DATE=SYSDATE
</if>
<if test="step != null and step == 'INSTL'">
INSTL_RESULT_COMMENT=#{contents},
INSTL_RESULT_DATE=SYSDATE
</if>
<if test="step != null and step == 'EO'">
EO_RESULT_COMMENT=#{contents},
EO_RESULT_DATE=SYSDATE
</if>
</set>
WHERE OBJID = #{objId}
</update>
<!-- 과거차 문제점을 조회한다. -->
<select id="getProblemContinualList" parameterType="map" resultType="map">
SELECT PMS_STRUCTURE_REVIEW_REPORT.*, ROW_NUMBER() OVER(ORDER BY REGDATE DESC NULLS LAST) RNUM
FROM(
SELECT PMS_STRUCTURE_REVIEW_REPORT.*
, (SELECT COUNT(*) FROM PMS_PROBLEM_CONTINUAL_REFLECT WHERE TARGET_OBJID = PMS_STRUCTURE_REVIEW_REPORT.OBJID) AS REFLECT_CNT
FROM(
SELECT B.OBJID
, B.TARGET_OBJID
, 'problem' AS DATA_TYPE
, A.REGION
, A.CAR_OBJID
, (SELECT OEM_OBJID FROM CAR_MNG WHERE OBJID = A.CAR_OBJID) AS OEM_OBJID
, (SELECT OEM_NAME FROM OEM_MNG WHERE OBJID = (SELECT OEM_OBJID FROM CAR_MNG WHERE OBJID = A.CAR_OBJID)) AS OEM_NAME
, (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 PRODUCT_GROUP_OBJID FROM PRODUCT_MNG WHERE OBJID = A.PROD_OBJID) AS PROD_GROUP_OBJID
, (SELECT PRODUCT_GROUP_NAME FROM PRODUCT_GROUP_MNG WHERE OBJID = (SELECT PRODUCT_GROUP_OBJID FROM PRODUCT_MNG WHERE OBJID = A.PROD_OBJID)) AS PROD_GROUP_NAME
, A.PROD_OBJID
, (SELECT PRODUCT_NAME FROM PRODUCT_MNG WHERE OBJID = A.PROD_OBJID) AS PROD_NAME
, B.PART_NO
, A.STEP1
, A.STEP2
, B.TYPE1
, B.TYPE2
, A.STATUS
, A.TEST_TYPE_OBJID
, (SELECT TEST_TYPE_NAME FROM TEST_TYPE_MNG WHERE OBJID = A.TEST_TYPE_OBJID) AS TEST_TYPE_NAME
, B.SUBJECT
, B.CONTINUAL_MNG_REVIEW_TYPE
, B.CONTINUAL_MNG_RECHOICE_TYPE
, B.CONTINUAL_MNG_TYPE1
, B.CONTINUAL_MNG_TYPE2
, B.REGDATE
FROM PMS_PROBLEM_GROUP A, PMS_PROBLEM_INFO B
WHERE 1=1
AND A.OBJID = B.TARGET_OBJID
AND UPPER(B.CONTINUAL_MNG_TYPE) = 'Y'
AND UPPER(B.CONTINUAL_MNG_TYPE_RESULT) = 'Y'
AND UPPER(A.STATUS) = 'COMPLETE'
AND UPPER(B.STATUS) = 'COMPLETE'
UNION ALL
SELECT A.OBJID
, TO_NUMBER('') AS TARGET_OBJID
, 'structure' AS DATA_TYPE
, A.REGION
, A.CAR_OBJID
, (SELECT OEM_OBJID FROM CAR_MNG WHERE OBJID = A.CAR_OBJID) AS OEM_OBJID
, (SELECT OEM_NAME FROM OEM_MNG WHERE OBJID = (SELECT OEM_OBJID FROM CAR_MNG WHERE OBJID = A.CAR_OBJID)) AS OEM_NAME
, (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 PRODUCT_GROUP_OBJID FROM PRODUCT_MNG WHERE OBJID = A.PROD_OBJID) AS PROD_GROUP_OBJID
, (SELECT PRODUCT_GROUP_NAME FROM PRODUCT_GROUP_MNG WHERE OBJID = (SELECT PRODUCT_GROUP_OBJID FROM PRODUCT_MNG WHERE OBJID = A.PROD_OBJID)) AS PROD_GROUP_NAME
, A.PROD_OBJID
, (SELECT PRODUCT_NAME FROM PRODUCT_MNG WHERE OBJID = A.PROD_OBJID) AS PROD_NAME
, A.PART_NO
, A.STEP1
, A.STEP2
, A.TYPE1
, A.TYPE2
, A.STATUS
, TO_NUMBER('') AS TEST_TYPE_OBJID
, '' AS TEST_TYPE_NAME
, A.SUBJECT
, A.CONTINUAL_MNG_REVIEW_TYPE
, A.CONTINUAL_MNG_RECHOICE_TYPE
, A.CONTINUAL_MNG_TYPE1
, A.CONTINUAL_MNG_TYPE2
, A.REGDATE
FROM PMS_STRUCTURE_REVIEW_REPORT A
WHERE 1=1
AND UPPER(A.STATUS) = 'COMPLETE'
AND UPPER(A.CONTINUAL_MNG_TYPE) = 'Y'
AND UPPER(A.CONTINUAL_MNG_TYPE_RESULT) = 'Y'
)PMS_STRUCTURE_REVIEW_REPORT
WHERE 1=1
<if test="search_dataType != null and search_dataType !='' ">
AND DATA_TYPE = #{search_dataType}
</if>
<if test="search_region != null and search_region !='' ">
AND REGION = #{search_region}
</if>
<if test="search_carType != null and search_carType !='' ">
AND CAR_OBJID = #{search_carType}
</if>
<if test="search_productType != null and search_productType !='' ">
AND PROD_OBJID = #{search_productType}
</if>
<if test="step1 != null and step1 !='' ">
AND STEP1 = #{step1}
</if>
<if test="step2 != null and step2 !='' ">
AND STEP2 = #{step2}
</if>
<if test="search_action_result != null and search_action_result !='' ">
AND ACTION_RESULT = #{search_action_result}
</if>
<if test="search_oem != null and search_oem !='' ">
AND OEM_OBJID = #{search_oem}
</if>
<if test="search_productGroup != null and search_productGroup !='' ">
AND PROD_GROUP_OBJID = #{search_productGroup}
</if>
<if test="search_subject != null and search_subject != '' ">
AND UPPER(SUBJECT) LIKE UPPER('%${search_subject}%')
</if>
<if test="search_partNo != null and search_partNo != '' ">
AND PART_NO LIKE '%${search_partNo}%'
</if>
)PMS_STRUCTURE_REVIEW_REPORT
WHERE 1=1
AND NOT EXISTS(
SELECT * FROM PMS_REL_CHK_LIST_PROBLEM REL WHERE REL.TARGET_OBJID = #{targetObjId} AND PMS_STRUCTURE_REVIEW_REPORT.OBJID = REL.PROBLEM_CONTINUAL_OBJID
)
</select>
<!-- 설계 체크리스트와 과거차 문제점을 연결한다. -->
<update id="mergeCheckListRelProblemContinual" parameterType="map">
MERGE INTO PMS_REL_CHK_LIST_PROBLEM P USING DUAL ON (P.TARGET_OBJID = #{targetObjId} AND P.PROBLEM_CONTINUAL_OBJID = #{problemContinualObjId} AND P.DATA_TYPE = #{dataType})
WHEN NOT MATCHED THEN
INSERT
(
OBJID,
TARGET_OBJID,
PROBLEM_CONTINUAL_OBJID,
DATA_TYPE,
REGDATE,
WRITER
)
VALUES
(
#{objId},
#{targetObjId},
#{problemContinualObjId},
#{dataType},
SYSDATE,
#{writer}
)
</update>
<!-- 설계 체크리스트와 과거차 문제점을 연결한다. -->
<delete id="deleteCheckListRelProblemContinual" parameterType="map">
DELETE PMS_REL_CHK_LIST_PROBLEM WHERE TARGET_OBJID = #{targetObjId} AND PROBLEM_CONTINUAL_OBJID = #{problemContinualObjId} AND DATA_TYPE = #{dataType}
</delete>
<!-- 과거차 문제점을 조회한다. -->
<select id="getConnectProblemContinualList" parameterType="map" resultType="map">
SELECT PMS_STRUCTURE_REVIEW_REPORT.*, ROW_NUMBER() OVER(ORDER BY REGDATE DESC NULLS LAST) RNUM
FROM(
SELECT PMS_STRUCTURE_REVIEW_REPORT.*
, (SELECT COUNT(*) FROM PMS_PROBLEM_CONTINUAL_REFLECT WHERE TARGET_OBJID = PMS_STRUCTURE_REVIEW_REPORT.OBJID) AS REFLECT_CNT
FROM(
SELECT B.OBJID
, B.TARGET_OBJID
, 'problem' AS DATA_TYPE
, A.REGION
, A.CAR_OBJID
, (SELECT OEM_OBJID FROM CAR_MNG WHERE OBJID = A.CAR_OBJID) AS OEM_OBJID
, (SELECT OEM_NAME FROM OEM_MNG WHERE OBJID = (SELECT OEM_OBJID FROM CAR_MNG WHERE OBJID = A.CAR_OBJID)) AS OEM_NAME
, (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 PRODUCT_GROUP_OBJID FROM PRODUCT_MNG WHERE OBJID = A.PROD_OBJID) AS PROD_GROUP_OBJID
, (SELECT PRODUCT_GROUP_NAME FROM PRODUCT_GROUP_MNG WHERE OBJID = (SELECT PRODUCT_GROUP_OBJID FROM PRODUCT_MNG WHERE OBJID = A.PROD_OBJID)) AS PROD_GROUP_NAME
, A.PROD_OBJID
, (SELECT PRODUCT_NAME FROM PRODUCT_MNG WHERE OBJID = A.PROD_OBJID) AS PROD_NAME
, B.PART_NO
, A.STEP1
, A.STEP2
, B.TYPE1
, B.TYPE2
, A.STATUS
, A.TEST_TYPE_OBJID
, (SELECT TEST_TYPE_NAME FROM TEST_TYPE_MNG WHERE OBJID = A.TEST_TYPE_OBJID) AS TEST_TYPE_NAME
, B.SUBJECT
, B.CONTINUAL_MNG_REVIEW_TYPE
, B.CONTINUAL_MNG_RECHOICE_TYPE
, B.CONTINUAL_MNG_TYPE1
, B.CONTINUAL_MNG_TYPE2
, B.REGDATE
FROM PMS_PROBLEM_GROUP A, PMS_PROBLEM_INFO B
WHERE 1=1
AND A.OBJID = B.TARGET_OBJID
AND UPPER(B.CONTINUAL_MNG_TYPE) = 'Y'
AND UPPER(B.CONTINUAL_MNG_TYPE_RESULT) = 'Y'
AND UPPER(A.STATUS) = 'COMPLETE'
AND UPPER(B.STATUS) = 'COMPLETE'
UNION ALL
SELECT A.OBJID
, TO_NUMBER('') AS TARGET_OBJID
, 'structure' AS DATA_TYPE
, A.REGION
, A.CAR_OBJID
, (SELECT OEM_OBJID FROM CAR_MNG WHERE OBJID = A.CAR_OBJID) AS OEM_OBJID
, (SELECT OEM_NAME FROM OEM_MNG WHERE OBJID = (SELECT OEM_OBJID FROM CAR_MNG WHERE OBJID = A.CAR_OBJID)) AS OEM_NAME
, (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 PRODUCT_GROUP_OBJID FROM PRODUCT_MNG WHERE OBJID = A.PROD_OBJID) AS PROD_GROUP_OBJID
, (SELECT PRODUCT_GROUP_NAME FROM PRODUCT_GROUP_MNG WHERE OBJID = (SELECT PRODUCT_GROUP_OBJID FROM PRODUCT_MNG WHERE OBJID = A.PROD_OBJID)) AS PROD_GROUP_NAME
, A.PROD_OBJID
, (SELECT PRODUCT_NAME FROM PRODUCT_MNG WHERE OBJID = A.PROD_OBJID) AS PROD_NAME
, A.PART_NO
, A.STEP1
, A.STEP2
, A.TYPE1
, A.TYPE2
, A.STATUS
, TO_NUMBER('') AS TEST_TYPE_OBJID
, '' AS TEST_TYPE_NAME
, A.SUBJECT
, A.CONTINUAL_MNG_REVIEW_TYPE
, A.CONTINUAL_MNG_RECHOICE_TYPE
, A.CONTINUAL_MNG_TYPE1
, A.CONTINUAL_MNG_TYPE2
, A.REGDATE
FROM PMS_STRUCTURE_REVIEW_REPORT A
WHERE 1=1
AND UPPER(A.STATUS) = 'COMPLETE'
AND UPPER(A.CONTINUAL_MNG_TYPE) = 'Y'
AND UPPER(A.CONTINUAL_MNG_TYPE_RESULT) = 'Y'
)PMS_STRUCTURE_REVIEW_REPORT
WHERE 1=1
)PMS_STRUCTURE_REVIEW_REPORT
WHERE 1=1
AND EXISTS(
SELECT * FROM PMS_REL_CHK_LIST_PROBLEM REL WHERE REL.TARGET_OBJID = #{targetObjId} AND PMS_STRUCTURE_REVIEW_REPORT.OBJID = REL.PROBLEM_CONTINUAL_OBJID
)
</select>
<!-- //파일목록 조회 -->
<select id="getFileList" resultType="map" parameterType="map">
SELECT OBJID
, TARGET_OBJID
, SAVED_FILE_NAME
, REAL_FILE_NAME
, DOC_TYPE
, DOC_TYPE_NAME
, FILE_SIZE
, FILE_EXT
, UPPER(FILE_EXT) UPPER_FILE_EXT
, REPLACE(FILE_PATH, '\', '\\') AS FILE_PATH
, WRITER
, (SELECT USER_NAME FROM USER_INFO USER_INFO_T WHERE USER_INFO_T.USER_ID = WRITER) AS USER_NAME
, (SELECT DEPT_NAME FROM USER_INFO USER_INFO_T WHERE USER_INFO_T.USER_ID = WRITER) AS DEPT_NAME
, TO_CHAR(REGDATE, 'YYYY-MM-DD') AS REGDATE
, REGDATE AS REGDATE_ORG
, STATUS
FROM ATTACH_FILE_INFO
WHERE 1=1
AND TARGET_OBJID = ${targetObjId}
<if test="objId != null and !''.equals(objId)">
AND OBJID = #{objId}
</if>
<if test="docType != null and !''.equals(docType)">
AND DOC_TYPE = #{docType}
</if>
<!-- 일괄다운로드시 여러 DOC_TYPE 조회 시 사용 -->
<if test="docTypeList != null and docTypeList.size != 0">
AND DOC_TYPE IN
<foreach collection="docTypeList" item="docType" index="index" separator="," open="(" close=")">
#{docType}
</foreach>
</if>
<!-- //date search -->
<if test="search_fromDate != null and !''.equals(search_fromDate)">
AND REGDATE <![CDATA[ >= ]]> TO_DATE(#{search_fromDate}, 'YYYY-MM-DD')
</if>
<if test="search_toDate != null and !''.equals(search_toDate)">
AND REGDATE <![CDATA[ <= ]]> last_day(TO_DATE(#{search_toDate}, 'YYYY-MM-DD'))
</if>
AND UPPER(STATUS) = 'ACTIVE'
ORDER BY REGDATE_ORG DESC
</select>
<!-- 각 단계별 상태를 가져온다. -->
<select id="getCheckListStepStatus" parameterType="map" resultType="map">
SELECT
CASE
WHEN L1_CNT > 0 THEN 'L1'
WHEN L2_CNT > 0 THEN 'L2'
WHEN L3_CNT > 0 THEN 'L3'
WHEN L4_CNT > 0 THEN 'L4'
WHEN INSTL_CNT > 0 THEN 'INSTL'
WHEN EO_CNT > 0 THEN 'EO'
ELSE ''
END AS STEP,
CASE
WHEN L1_SUBMIT_DATE IS NULL AND L1_RESULT_DATE IS NULL THEN 'L1'
WHEN L2_SUBMIT_DATE IS NULL AND L2_RESULT_DATE IS NULL THEN 'L2'
WHEN L3_SUBMIT_DATE IS NULL AND L3_RESULT_DATE IS NULL THEN 'L3'
WHEN L4_SUBMIT_DATE IS NULL AND L4_RESULT_DATE IS NULL THEN 'L4'
WHEN INSTL_SUBMIT_DATE IS NULL AND INSTL_RESULT_DATE IS NULL THEN 'INSTL'
WHEN EO_SUBMIT_DATE IS NULL AND EO_RESULT_DATE IS NULL THEN 'EO'
ELSE ''
END AS WORK_STEP,
CASE
WHEN L1_SUBMIT_DATE IS NOT NULL AND L1_RESULT_DATE IS NULL THEN 'L1'
WHEN L2_SUBMIT_DATE IS NOT NULL AND L2_RESULT_DATE IS NULL THEN 'L2'
WHEN L3_SUBMIT_DATE IS NOT NULL AND L3_RESULT_DATE IS NULL THEN 'L3'
WHEN L4_SUBMIT_DATE IS NOT NULL AND L4_RESULT_DATE IS NULL THEN 'L4'
WHEN INSTL_SUBMIT_DATE IS NOT NULL AND INSTL_RESULT_DATE IS NULL THEN 'INSTL'
WHEN EO_SUBMIT_DATE IS NOT NULL AND EO_RESULT_DATE IS NULL THEN 'EO'
ELSE ''
END AS CONFIRM_STEP,
CASE
WHEN L1_SUBMIT_DATE IS NOT NULL AND L1_RESULT_DATE IS NULL THEN L1_PIC
WHEN L2_SUBMIT_DATE IS NOT NULL AND L2_RESULT_DATE IS NULL THEN L2_PIC
WHEN L3_SUBMIT_DATE IS NOT NULL AND L3_RESULT_DATE IS NULL THEN L3_PIC
WHEN L4_SUBMIT_DATE IS NOT NULL AND L4_RESULT_DATE IS NULL THEN L4_PIC
WHEN INSTL_SUBMIT_DATE IS NOT NULL AND INSTL_RESULT_DATE IS NULL THEN INSTL_PIC
WHEN EO_SUBMIT_DATE IS NOT NULL AND EO_RESULT_DATE IS NULL THEN EO_PIC
ELSE ''
END AS CONFIRM_STEP_PIC,
WRITER,
STATUS
FROM (
SELECT
(SELECT COUNT(1) FROM PMS_DESIGN_CHK_LIST_INFO WHERE TARGET_OBJID = BASE_INFO.OBJID AND RATING_L1 IS NULL AND UPPER(RELATION_TYPE) = 'RELATED') AS L1_CNT,
(SELECT COUNT(1) FROM PMS_DESIGN_CHK_LIST_INFO WHERE TARGET_OBJID = BASE_INFO.OBJID AND RATING_L2 IS NULL AND UPPER(RELATION_TYPE) = 'RELATED') AS L2_CNT,
(SELECT COUNT(1) FROM PMS_DESIGN_CHK_LIST_INFO WHERE TARGET_OBJID = BASE_INFO.OBJID AND RATING_L3 IS NULL AND UPPER(RELATION_TYPE) = 'RELATED') AS L3_CNT,
(SELECT COUNT(1) FROM PMS_DESIGN_CHK_LIST_INFO WHERE TARGET_OBJID = BASE_INFO.OBJID AND RATING_L4 IS NULL AND UPPER(RELATION_TYPE) = 'RELATED') AS L4_CNT,
(SELECT COUNT(1) FROM PMS_DESIGN_CHK_LIST_INFO WHERE TARGET_OBJID = BASE_INFO.OBJID AND RATING_INSTL IS NULL AND UPPER(RELATION_TYPE) = 'RELATED') AS INSTL_CNT,
(SELECT COUNT(1) FROM PMS_DESIGN_CHK_LIST_INFO WHERE TARGET_OBJID = BASE_INFO.OBJID AND RATING_EO IS NULL AND UPPER(RELATION_TYPE) = 'RELATED') AS EO_CNT,
BASE_INFO.WRITER,
BASE_INFO.L1_RESULT,
BASE_INFO.L1_RESULT_COMMENT,
BASE_INFO.L1_RESULT_DATE,
BASE_INFO.L1_SUBMIT_DATE,
BASE_INFO.L2_RESULT,
BASE_INFO.L2_RESULT_COMMENT,
BASE_INFO.L2_RESULT_DATE,
BASE_INFO.L2_SUBMIT_DATE,
BASE_INFO.L3_RESULT,
BASE_INFO.L3_RESULT_COMMENT,
BASE_INFO.L3_RESULT_DATE,
BASE_INFO.L3_SUBMIT_DATE,
BASE_INFO.L4_RESULT,
BASE_INFO.L4_RESULT_COMMENT,
BASE_INFO.L4_RESULT_DATE,
BASE_INFO.L4_SUBMIT_DATE,
BASE_INFO.INSTL_RESULT,
BASE_INFO.INSTL_RESULT_COMMENT,
BASE_INFO.INSTL_RESULT_DATE,
BASE_INFO.INSTL_SUBMIT_DATE,
BASE_INFO.EO_RESULT,
BASE_INFO.EO_RESULT_COMMENT,
BASE_INFO.EO_RESULT_DATE,
BASE_INFO.EO_SUBMIT_DATE,
BASE_INFO.L1_PIC,
BASE_INFO.L2_PIC,
BASE_INFO.L3_PIC,
BASE_INFO.L4_PIC,
BASE_INFO.INSTL_PIC,
BASE_INFO.EO_PIC,
BASE_INFO.STATUS
FROM PMS_DESIGN_CHK_LIST_BASE_INFO BASE_INFO
WHERE OBJID = #{targetObjId}
)
</select>
<!-- 설계 체크리스트의 상태를 변경한다. -->
<update id="changeCheckListStatus" parameterType="map">
UPDATE PMS_DESIGN_CHK_LIST_BASE_INFO SET STATUS = #{status}
<if test="step != null and !''.equals(step)">
<if test="'L1'.equals(step)">
,L1_SUBMIT_DATE = SYSDATE
</if>
<if test="'L2'.equals(step)">
,L2_SUBMIT_DATE = SYSDATE
</if>
<if test="'L3'.equals(step)">
,L3_SUBMIT_DATE = SYSDATE
</if>
<if test="'L4'.equals(step)">
,L4_SUBMIT_DATE = SYSDATE
</if>
<if test="'INSTL'.equals(step)">
,INSTL_SUBMIT_DATE = SYSDATE
</if>
<if test="'EO'.equals(step)">
,EO_SUBMIT_DATE = SYSDATE
</if>
</if>
WHERE OBJID = #{targetObjId}
</update>
<!-- //edhwang end -->
</mapper>