1274 lines
49 KiB
XML
1274 lines
49 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="quality">
|
|
<!-- //품질검사 중복 count 반환 -->
|
|
<select id="getDuplicateQualityTestCnt" parameterType="map" resultType="map">
|
|
SELECT COUNT(*) AS CNT
|
|
FROM PMS_QUALITY_TEST_INFO
|
|
WHERE 1=1
|
|
AND CAR_OBJID = #{carObjId}
|
|
AND PROD_OBJID = #{prodObjId}
|
|
AND TEST_TYPE_OBJID = #{testTypeObjId}
|
|
AND STEP1 = #{step1}
|
|
AND STEP2 = #{step2}
|
|
</select>
|
|
|
|
<!-- 품질검사 갑지등록 -->
|
|
<insert id="insertQualityTestInfo" parameterType="map">
|
|
MERGE INTO PMS_QUALITY_TEST_INFO USING DUAL ON (OBJID = #{objId})
|
|
WHEN MATCHED THEN
|
|
UPDATE SET
|
|
CAR_OBJID = #{carObjId}
|
|
, PROD_OBJID = #{prodObjId}
|
|
, TEST_TYPE_OBJID = #{testTypeObjId}
|
|
, STEP1 = #{step1}
|
|
, STEP2 = #{step2}
|
|
WHEN NOT MATCHED THEN
|
|
INSERT (
|
|
OBJID
|
|
, CAR_OBJID
|
|
, PROD_OBJID
|
|
, TEST_TYPE_OBJID
|
|
, STEP1
|
|
, STEP2
|
|
, WRITER
|
|
, REGDATE
|
|
, STATUS
|
|
) VALUES (
|
|
#{objId}
|
|
, #{carObjId}
|
|
, #{prodObjId}
|
|
, #{testTypeObjId}
|
|
, #{step1}
|
|
, #{step2}
|
|
, #{writer}
|
|
, SYSDATE
|
|
, 'create'
|
|
)
|
|
</insert>
|
|
|
|
<!-- //품질결과 임시목록 -->
|
|
<select id="getQualityTestTempList" parameterType="map" resultType="map">
|
|
SELECT *
|
|
FROM(
|
|
SELECT A.*, ROW_NUMBER() OVER (ORDER BY REGDATE_ORG DESC) RNUM
|
|
FROM(
|
|
SELECT A.*
|
|
FROM(
|
|
SELECT A.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
|
|
, 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
|
|
, (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.TEST_TYPE_OBJID
|
|
, (SELECT TEST_TYPE_NAME FROM TEST_TYPE_MNG WHERE OBJID = A.TEST_TYPE_OBJID) AS TEST_TYPE_NAME
|
|
, A.STEP1
|
|
, A.STEP2
|
|
, 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_QUALITY_TEST_INFO A
|
|
WHERE 1=1
|
|
AND UPPER(STATUS) = 'CREATE'
|
|
)A WHERE 1=1
|
|
<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_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="search_writer != null and !''.equals(search_writer)">
|
|
AND UPPER(WRITER_USER_NAME) LIKE UPPER('%${search_writer}%')
|
|
</if>
|
|
<if test="search_status !=null and search_status !='' ">
|
|
AND STATUS = #{search_status}
|
|
</if>
|
|
<if test="search_testType !=null and search_testType !='' ">
|
|
AND TEST_TYPE_OBJID = #{search_testType}
|
|
</if>
|
|
<if test="step1 !=null and step1 !='' ">
|
|
AND STEP1 = #{step1}
|
|
</if>
|
|
<if test="step2 !=null and step2 !='' ">
|
|
AND STEP2 = #{step2}
|
|
</if>
|
|
)A 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>
|
|
|
|
<!-- //품질결과 임시목록 Count -->
|
|
<select id="getQualityTestTempListCnt" parameterType="map" resultType="map">
|
|
SELECT CEIL(TOTAL_CNT/#{COUNT_PER_PAGE}) MAX_PAGE_SIZE,
|
|
TOTAL_CNT
|
|
FROM (
|
|
SELECT COUNT(1) TOTAL_CNT
|
|
FROM(
|
|
SELECT A.*
|
|
FROM(
|
|
SELECT A.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
|
|
, 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
|
|
, (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.TEST_TYPE_OBJID
|
|
, (SELECT TEST_TYPE_NAME FROM TEST_TYPE_MNG WHERE OBJID = A.TEST_TYPE_OBJID) AS TEST_TYPE_NAME
|
|
, A.STEP1
|
|
, A.STEP2
|
|
, 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_QUALITY_TEST_INFO A
|
|
WHERE 1=1
|
|
AND UPPER(STATUS) = 'CREATE'
|
|
)A WHERE 1=1
|
|
<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_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="search_resDeptName != null and !''.equals(search_resDeptName)">
|
|
AND UPPER(RES_PIC_DEPT_NAME) LIKE UPPER('%${search_resDeptName}%')
|
|
</if>
|
|
<if test="search_status !=null and search_status !='' ">
|
|
AND STATUS = #{search_status}
|
|
</if>
|
|
<if test="search_testType !=null and search_testType !='' ">
|
|
AND TEST_TYPE_OBJID = #{search_testType}
|
|
</if>
|
|
<if test="step1 !=null and step1 !='' ">
|
|
AND STEP1 = #{step1}
|
|
</if>
|
|
<if test="step2 !=null and step2 !='' ">
|
|
AND STEP2 = #{step2}
|
|
</if>
|
|
)A WHERE 1=1
|
|
)WHERE 1=1
|
|
</select>
|
|
|
|
<!-- //품질결과 확정목록 -->
|
|
<select id="getQualityTestList" parameterType="map" resultType="map">
|
|
SELECT *
|
|
FROM(
|
|
SELECT A.*, ROW_NUMBER() OVER (ORDER BY REGDATE_ORG DESC) RNUM
|
|
FROM(
|
|
SELECT A.*
|
|
FROM(
|
|
SELECT A.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
|
|
, 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
|
|
, (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.TEST_TYPE_OBJID
|
|
, (SELECT TEST_TYPE_NAME FROM TEST_TYPE_MNG WHERE OBJID = A.TEST_TYPE_OBJID) AS TEST_TYPE_NAME
|
|
, A.STEP1
|
|
, A.STEP2
|
|
, 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
|
|
, (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 = A.OBJID) AS REL_TASK_CNT
|
|
FROM PMS_QUALITY_TEST_INFO A
|
|
WHERE 1=1
|
|
AND UPPER(STATUS) = 'COMPLETE'
|
|
)A WHERE 1=1
|
|
<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_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="search_writer != null and !''.equals(search_writer)">
|
|
AND UPPER(WRITER_USER_NAME) LIKE UPPER('%${search_writer}%')
|
|
</if>
|
|
<if test="search_status !=null and search_status !='' ">
|
|
AND STATUS = #{search_status}
|
|
</if>
|
|
<if test="search_testType !=null and search_testType !='' ">
|
|
AND TEST_TYPE_OBJID = #{search_testType}
|
|
</if>
|
|
<if test="step1 !=null and step1 !='' ">
|
|
AND STEP1 = #{step1}
|
|
</if>
|
|
<if test="step2 !=null and step2 !='' ">
|
|
AND STEP2 = #{step2}
|
|
</if>
|
|
<if test="search_fromMonthRegDate != null and search_fromMonthRegDate !='' ">
|
|
AND TO_DATE(TO_CHAR(A.REGDATE, 'YYYY-MM'),'YYYY-MM') <![CDATA[ >= ]]> TO_DATE(#{search_fromMonthRegDate},'YYYY-MM')
|
|
</if>
|
|
<if test="search_toMonthRegDate != null and search_toMonthRegDate !='' ">
|
|
AND TO_DATE(TO_CHAR(A.REGDATE, 'YYYY-MM'),'YYYY-MM') <![CDATA[ <= ]]> TO_DATE(#{search_toMonthRegDate},'YYYY-MM')
|
|
</if>
|
|
)A 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>
|
|
|
|
<!-- //품질결과 확정목록 Count -->
|
|
<select id="getQualityTestListCnt" parameterType="map" resultType="map">
|
|
SELECT CEIL(TOTAL_CNT/#{COUNT_PER_PAGE}) MAX_PAGE_SIZE,
|
|
TOTAL_CNT
|
|
FROM (
|
|
SELECT COUNT(1) TOTAL_CNT
|
|
FROM(
|
|
SELECT A.*
|
|
FROM(
|
|
SELECT A.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
|
|
, 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
|
|
, (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.TEST_TYPE_OBJID
|
|
, (SELECT TEST_TYPE_NAME FROM TEST_TYPE_MNG WHERE OBJID = A.TEST_TYPE_OBJID) AS TEST_TYPE_NAME
|
|
, A.STEP1
|
|
, A.STEP2
|
|
, 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_QUALITY_TEST_INFO A
|
|
WHERE 1=1
|
|
AND UPPER(STATUS) = 'COMPLETE'
|
|
)A WHERE 1=1
|
|
<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_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="search_writer != null and !''.equals(search_writer)">
|
|
AND UPPER(WRITER_USER_NAME) LIKE UPPER('%search_writer%')
|
|
</if>
|
|
<if test="search_status !=null and search_status !='' ">
|
|
AND STATUS = #{search_status}
|
|
</if>
|
|
<if test="search_testType !=null and search_testType !='' ">
|
|
AND TEST_TYPE_OBJID = #{search_testType}
|
|
</if>
|
|
<if test="step1 !=null and step1 !='' ">
|
|
AND STEP1 = #{step1}
|
|
</if>
|
|
<if test="step2 !=null and step2 !='' ">
|
|
AND STEP2 = #{step2}
|
|
</if>
|
|
<if test="search_fromMonthRegDate != null and search_fromMonthRegDate !='' ">
|
|
AND TO_DATE(TO_CHAR(A.REGDATE, 'YYYY-MM'),'YYYY-MM') <![CDATA[ >= ]]> TO_DATE(#{search_fromMonthRegDate},'YYYY-MM')
|
|
</if>
|
|
<if test="search_toMonthRegDate != null and search_toMonthRegDate !='' ">
|
|
AND TO_DATE(TO_CHAR(A.REGDATE, 'YYYY-MM'),'YYYY-MM') <![CDATA[ <= ]]> TO_DATE(#{search_toMonthRegDate},'YYYY-MM')
|
|
</if>
|
|
)A WHERE 1=1
|
|
)WHERE 1=1
|
|
</select>
|
|
|
|
<!-- //품질검사 상세 part목록 -->
|
|
<select id="getQualityTestDetailPartList" parameterType="map" resultType="map">
|
|
SELECT ROW_NUMBER() OVER(ORDER BY SEQ) AS RNUM
|
|
, QUALITY_MASTER.PART_MASTER_OBJID
|
|
, QUALITY_MASTER.OEM_OBJID
|
|
, QUALITY_MASTER.CAR_OBJID
|
|
, QUALITY_MASTER.PROD_GROUP_OBJID
|
|
, QUALITY_MASTER.PROD_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.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 TARGET_OBJID, RATE, PART_NO FROM PMS_DEV_MASTER_REL_PART_INFO WHERE RATE IS NOT NULL ORDER BY DEV_POINT DESC) A, PMS_DEV_MASTER B WHERE A.TARGET_OBJID = B.OBJID AND B.TARGET_OBJID = M.OBJID AND A.PART_NO = S.PART_NO AND ROWNUM = 1) AS RATE
|
|
, (SELECT MOLD_MAKE_COMPANY FROM (SELECT TARGET_OBJID, MOLD_MAKE_COMPANY, PART_NO FROM PMS_DEV_MASTER_REL_PART_INFO WHERE MOLD_MAKE_COMPANY IS NOT NULL ORDER BY DEV_POINT DESC) A, PMS_DEV_MASTER B WHERE A.TARGET_OBJID = B.OBJID AND B.TARGET_OBJID = M.OBJID AND A.PART_NO = S.PART_NO AND ROWNUM = 1) AS MOLD_MAKE_COMPANY
|
|
-->
|
|
, (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 AND UNMANAGE_TYPE IS NULL) 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
|
|
AND Q_M.OBJID = ${targetObjId}
|
|
) 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(+)
|
|
</select>
|
|
|
|
<!-- //품질검사 part별 정보 저장 -->
|
|
<update id="saveQualityTestPartInfo" parameterType="map">
|
|
MERGE INTO PMS_QUALITY_TEST_REL_PART_ATTR USING DUAL ON (OBJID = #{objId})
|
|
WHEN MATCHED THEN
|
|
UPDATE SET
|
|
SCORE = #{score}
|
|
, RESULT = #{result}
|
|
, TYPE1 = #{type1}
|
|
, TYPE2 = #{type2}
|
|
WHEN NOT MATCHED THEN
|
|
INSERT (
|
|
OBJID
|
|
, TARGET_OBJID
|
|
, PART_NO
|
|
, SCORE
|
|
, RESULT
|
|
, TYPE1
|
|
, TYPE2
|
|
, WRITER
|
|
, REGDATE
|
|
, STATUS
|
|
) VALUES (
|
|
#{objId}
|
|
, #{targetObjId}
|
|
, #{partNo}
|
|
, #{score}
|
|
, #{result}
|
|
, #{type1}
|
|
, #{type2}
|
|
, #{writer}
|
|
, SYSDATE
|
|
, 'create'
|
|
)
|
|
</update>
|
|
|
|
<!-- //품질검사 갑지 확정 -->
|
|
<update id="completeQualityTestInfo" parameterType="map">
|
|
UPDATE PMS_QUALITY_TEST_INFO SET STATUS = 'complete' WHERE OBJID = #{targetObjId}
|
|
</update>
|
|
|
|
<!-- //품질검사 갑지조회 -->
|
|
<select id="getQualityTestInfo" parameterType="map" resultType="map">
|
|
SELECT OBJID
|
|
, (SELECT OEM_NAME FROM OEM_MNG WHERE OBJID = (SELECT OEM_OBJID FROM CAR_MNG WHERE OBJID = CAR_OBJID)) AS OEM_NAME
|
|
, (SELECT OEM_OBJID FROM CAR_MNG WHERE OBJID = CAR_OBJID) AS OEM_OBJID
|
|
, CAR_OBJID
|
|
, (SELECT CAR_NAME FROM CAR_MNG WHERE OBJID = CAR_OBJID) AS CAR_NAME
|
|
, (SELECT CAR_CODE FROM CAR_MNG WHERE OBJID = 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_OBJID)) AS PRODUCT_GROUP_NAME
|
|
, (SELECT PRODUCT_GROUP_OBJID FROM PRODUCT_MNG WHERE OBJID = PROD_OBJID) AS PROD_GROUP_OBJID
|
|
, PROD_OBJID
|
|
, (SELECT PRODUCT_NAME FROM PRODUCT_MNG WHERE OBJID = PROD_OBJID) AS PRODUCT_NAME
|
|
, TEST_TYPE_OBJID
|
|
, (SELECT TEST_TYPE_NAME FROM TEST_TYPE_MNG WHERE OBJID = TEST_TYPE_OBJID) AS TEST_TYPE_NAME
|
|
, STEP1
|
|
, DECODE(STEP1, 'design', '설계', 'develop', '개발', 'production', '양산', '') AS STEP1_NAME
|
|
, STEP2
|
|
, WRITER
|
|
, REGDATE
|
|
, STATUS
|
|
FROM PMS_QUALITY_TEST_INFO
|
|
WHERE 1=1
|
|
AND OBJID = #{targetObjId}
|
|
</select>
|
|
|
|
<!-- =====================================================
|
|
품질관리 기초정보관리
|
|
===================================================== -->
|
|
|
|
<!-- 검사구분 목록 조회 -->
|
|
<select id="getInspectionTypeList" parameterType="map" resultType="map">
|
|
SELECT OBJID
|
|
, INSPECTION_TYPE_NAME
|
|
, STATUS
|
|
, TO_CHAR(REG_DATE, 'YYYY-MM-DD') AS REG_DATE
|
|
FROM PMS_QUALITY_INSPECTION_TYPE
|
|
WHERE 1=1
|
|
ORDER BY REG_DATE DESC
|
|
</select>
|
|
|
|
<!-- 검사구분 등록 -->
|
|
<insert id="insertInspectionType" parameterType="map">
|
|
INSERT INTO PMS_QUALITY_INSPECTION_TYPE (
|
|
OBJID
|
|
, INSPECTION_TYPE_NAME
|
|
, STATUS
|
|
, WRITER
|
|
, REG_DATE
|
|
) VALUES (
|
|
#{OBJID}
|
|
, #{INSPECTION_TYPE_NAME}
|
|
, #{STATUS}
|
|
, #{writer}
|
|
, SYSDATE
|
|
)
|
|
</insert>
|
|
|
|
<!-- 검사구분 수정 -->
|
|
<update id="updateInspectionType" parameterType="map">
|
|
UPDATE PMS_QUALITY_INSPECTION_TYPE
|
|
SET INSPECTION_TYPE_NAME = #{INSPECTION_TYPE_NAME}
|
|
, STATUS = #{STATUS}
|
|
WHERE OBJID = #{OBJID}
|
|
</update>
|
|
|
|
<!-- 검사구분 삭제 -->
|
|
<delete id="deleteInspectionType" parameterType="map">
|
|
DELETE FROM PMS_QUALITY_INSPECTION_TYPE
|
|
WHERE OBJID = #{OBJID}
|
|
</delete>
|
|
|
|
<!-- 불량유형 목록 조회 -->
|
|
<select id="getDefectTypeList" parameterType="map" resultType="map">
|
|
SELECT OBJID
|
|
, DEFECT_TYPE_NAME
|
|
, STATUS
|
|
, TO_CHAR(REG_DATE, 'YYYY-MM-DD') AS REG_DATE
|
|
FROM PMS_QUALITY_DEFECT_TYPE
|
|
WHERE 1=1
|
|
ORDER BY REG_DATE DESC
|
|
</select>
|
|
|
|
<!-- 불량유형 등록 -->
|
|
<insert id="insertDefectType" parameterType="map">
|
|
INSERT INTO PMS_QUALITY_DEFECT_TYPE (
|
|
OBJID
|
|
, DEFECT_TYPE_NAME
|
|
, STATUS
|
|
, WRITER
|
|
, REG_DATE
|
|
) VALUES (
|
|
#{OBJID}
|
|
, #{DEFECT_TYPE_NAME}
|
|
, #{STATUS}
|
|
, #{writer}
|
|
, SYSDATE
|
|
)
|
|
</insert>
|
|
|
|
<!-- 불량유형 수정 -->
|
|
<update id="updateDefectType" parameterType="map">
|
|
UPDATE PMS_QUALITY_DEFECT_TYPE
|
|
SET DEFECT_TYPE_NAME = #{DEFECT_TYPE_NAME}
|
|
, STATUS = #{STATUS}
|
|
WHERE OBJID = #{OBJID}
|
|
</update>
|
|
|
|
<!-- 불량유형 삭제 -->
|
|
<delete id="deleteDefectType" parameterType="map">
|
|
DELETE FROM PMS_QUALITY_DEFECT_TYPE
|
|
WHERE OBJID = #{OBJID}
|
|
</delete>
|
|
|
|
<!-- 불량원인 목록 조회 -->
|
|
<select id="getDefectReasonList" parameterType="map" resultType="map">
|
|
SELECT A.OBJID
|
|
, A.DEFECT_TYPE_OBJID
|
|
, B.DEFECT_TYPE_NAME
|
|
, A.DEFECT_REASON_NAME
|
|
, A.STATUS
|
|
, TO_CHAR(A.REG_DATE, 'YYYY-MM-DD') AS REG_DATE
|
|
FROM PMS_QUALITY_DEFECT_REASON A
|
|
LEFT JOIN PMS_QUALITY_DEFECT_TYPE B ON A.DEFECT_TYPE_OBJID = B.OBJID
|
|
WHERE 1=1
|
|
<if test="DEFECT_TYPE_OBJID != null and DEFECT_TYPE_OBJID != ''">
|
|
AND A.DEFECT_TYPE_OBJID = #{DEFECT_TYPE_OBJID}
|
|
</if>
|
|
ORDER BY B.DEFECT_TYPE_NAME, A.REG_DATE DESC
|
|
</select>
|
|
|
|
<!-- 불량원인 등록 -->
|
|
<insert id="insertDefectReason" parameterType="map">
|
|
INSERT INTO PMS_QUALITY_DEFECT_REASON (
|
|
OBJID
|
|
, DEFECT_TYPE_OBJID
|
|
, DEFECT_REASON_NAME
|
|
, STATUS
|
|
, WRITER
|
|
, REG_DATE
|
|
) VALUES (
|
|
#{OBJID}
|
|
, #{DEFECT_TYPE_OBJID}
|
|
, #{DEFECT_REASON_NAME}
|
|
, #{STATUS}
|
|
, #{writer}
|
|
, SYSDATE
|
|
)
|
|
</insert>
|
|
|
|
<!-- 불량원인 수정 -->
|
|
<update id="updateDefectReason" parameterType="map">
|
|
UPDATE PMS_QUALITY_DEFECT_REASON
|
|
SET DEFECT_REASON_NAME = #{DEFECT_REASON_NAME}
|
|
, STATUS = #{STATUS}
|
|
WHERE OBJID = #{OBJID}
|
|
</update>
|
|
|
|
<!-- 불량원인 삭제 -->
|
|
<delete id="deleteDefectReason" parameterType="map">
|
|
DELETE FROM PMS_QUALITY_DEFECT_REASON
|
|
WHERE OBJID = #{OBJID}
|
|
</delete>
|
|
|
|
<!-- 불량유형별 불량원인 일괄 삭제 -->
|
|
<delete id="deleteDefectReasonByType" parameterType="map">
|
|
DELETE FROM PMS_QUALITY_DEFECT_REASON
|
|
WHERE DEFECT_TYPE_OBJID = #{OBJID}
|
|
</delete>
|
|
|
|
<!-- =====================================================
|
|
수입검사 관리
|
|
===================================================== -->
|
|
|
|
<!-- 품의서 번호 목록 조회 (검색조건용) -->
|
|
<select id="getProposalNoList" parameterType="map" resultType="map">
|
|
SELECT DISTINCT PROPOSAL_NO
|
|
FROM SALES_REQUEST_MASTER
|
|
WHERE PROPOSAL_NO IS NOT NULL
|
|
ORDER BY PROPOSAL_NO DESC
|
|
</select>
|
|
|
|
<!-- 발주서 번호 목록 조회 (검색조건용) -->
|
|
<select id="getPurchaseOrderNoList" parameterType="map" resultType="map">
|
|
SELECT DISTINCT PURCHASE_ORDER_NO
|
|
FROM PURCHASE_ORDER_MASTER
|
|
WHERE PURCHASE_ORDER_NO IS NOT NULL
|
|
ORDER BY PURCHASE_ORDER_NO DESC
|
|
</select>
|
|
|
|
<!-- 프로젝트 번호 목록 조회 (검색조건용) -->
|
|
<select id="getProjectNoList" parameterType="map" resultType="map">
|
|
SELECT DISTINCT PROJECT_NO
|
|
FROM CONTRACT_MNG
|
|
WHERE PROJECT_NO IS NOT NULL
|
|
ORDER BY PROJECT_NO DESC
|
|
</select>
|
|
|
|
<!-- 공급업체 목록 조회 (검색조건용) -->
|
|
<select id="getPartnerList" parameterType="map" resultType="map">
|
|
SELECT OBJID::VARCHAR, SUPPLY_NAME AS PARTNER_NAME
|
|
FROM ADMIN_SUPPLY_MNG
|
|
WHERE 1=1
|
|
ORDER BY SUPPLY_NAME
|
|
</select>
|
|
|
|
<!-- 검사자 목록 조회 (검색조건용) -->
|
|
<select id="getInspectorList" parameterType="map" resultType="map">
|
|
SELECT USER_ID, USER_NAME
|
|
FROM USER_INFO
|
|
WHERE STATUS = 'active'
|
|
ORDER BY USER_NAME
|
|
</select>
|
|
|
|
<!-- 수입검사 목록 조회 -->
|
|
<select id="getIncomingInspectionList" parameterType="map" resultType="map">
|
|
SELECT POM.OBJID
|
|
<!-- 품의서 번호 -->
|
|
,POM.SALES_REQUEST_OBJID AS PROPOSAL_OBJID
|
|
,(SELECT REQUEST_MNG_NO FROM SALES_REQUEST_MASTER WHERE OBJID::VARCHAR = POM.SALES_REQUEST_OBJID) AS PROPOSAL_NO
|
|
|
|
,POM.PURCHASE_ORDER_NO
|
|
,CM.PROJECT_NO
|
|
|
|
<!-- 품번/품명 (첫번째 + 외 N건) -->
|
|
,(SELECT
|
|
CASE
|
|
WHEN COUNT(*) > 1 THEN MIN(POP.PART_NO) || ' 외 ' || (COUNT(*) - 1) || '건'
|
|
ELSE MIN(POP.PART_NO)
|
|
END
|
|
FROM PURCHASE_ORDER_PART POP
|
|
WHERE POP.PURCHASE_ORDER_MASTER_OBJID = POM.OBJID::VARCHAR
|
|
) AS PART_NO
|
|
,(SELECT
|
|
CASE
|
|
WHEN COUNT(*) > 1 THEN MIN(POP.PART_NAME) || ' 외 ' || (COUNT(*) - 1) || '건'
|
|
ELSE MIN(POP.PART_NAME)
|
|
END
|
|
FROM PURCHASE_ORDER_PART POP
|
|
WHERE POP.PURCHASE_ORDER_MASTER_OBJID = POM.OBJID::VARCHAR
|
|
) AS PART_NAME
|
|
|
|
<!-- 공급업체 (CLIENT_MNG) -->
|
|
,POM.PARTNER_OBJID
|
|
,(SELECT CLIENT_NM FROM CLIENT_MNG WHERE OBJID::VARCHAR = POM.PARTNER_OBJID) AS PARTNER_NAME
|
|
|
|
<!-- 발주수량 -->
|
|
,(SELECT SUM(ORDER_QTY::NUMERIC) FROM PURCHASE_ORDER_PART AS O WHERE POM.OBJID::VARCHAR = O.PURCHASE_ORDER_MASTER_OBJID) AS TOTAL_PO_QTY
|
|
|
|
<!-- 입고수량/미입고수량 -->
|
|
,S1.TOTAL_DELIVERY_QTY
|
|
,((SELECT SUM(ORDER_QTY::NUMERIC) FROM PURCHASE_ORDER_PART AS O WHERE POM.OBJID::VARCHAR = O.PURCHASE_ORDER_MASTER_OBJID) - COALESCE(S1.TOTAL_DELIVERY_QTY, 0)) AS NON_DELIVERY_QTY
|
|
|
|
<!-- 입고상태 -->
|
|
,(CASE WHEN 0 <![CDATA[ >= ]]> ((SELECT SUM(ORDER_QTY::NUMERIC) FROM PURCHASE_ORDER_PART AS O WHERE POM.OBJID::VARCHAR = O.PURCHASE_ORDER_MASTER_OBJID) - COALESCE(S1.TOTAL_DELIVERY_QTY, 0)) THEN '입고완료'
|
|
WHEN TO_CHAR(NOW(),'YYYY-MM-DD') <![CDATA[ > ]]> POM.DELIVERY_DATE THEN '지연'
|
|
ELSE '입고중'
|
|
END) AS DELIVERY_STATUS
|
|
|
|
<!-- 검사 정보 (INCOMING_INSPECTION_DETAIL에서 조회) -->
|
|
,(SELECT U.USER_NAME FROM USER_INFO U WHERE U.USER_ID = IID.INSPECTOR_ID) AS INSPECTOR_NAME
|
|
,IID.INSPECTION_DATE
|
|
,(CASE WHEN IID.NG_COUNT > 0 THEN 'NG'
|
|
WHEN IID.TOTAL_COUNT > 0 AND IID.TOTAL_COUNT = IID.INSPECTED_COUNT THEN 'OK'
|
|
WHEN IID.INSPECTED_COUNT > 0 THEN '검사중'
|
|
ELSE '' END) AS INSPECTION_RESULT
|
|
FROM PURCHASE_ORDER_MASTER AS POM
|
|
LEFT OUTER JOIN (
|
|
SELECT PURCHASE_ORDER_MASTER_OBJID
|
|
,MAX(INSPECTOR_ID) AS INSPECTOR_ID
|
|
,MAX(INSPECTION_DATE) AS INSPECTION_DATE
|
|
,COUNT(*) AS TOTAL_COUNT
|
|
,COUNT(CASE WHEN INSPECTION_RESULT IS NOT NULL AND INSPECTION_RESULT != '' THEN 1 END) AS INSPECTED_COUNT
|
|
,COUNT(CASE WHEN INSPECTION_RESULT = 'NG' THEN 1 END) AS NG_COUNT
|
|
FROM INCOMING_INSPECTION_DETAIL
|
|
GROUP BY PURCHASE_ORDER_MASTER_OBJID
|
|
) AS IID ON POM.OBJID::VARCHAR = IID.PURCHASE_ORDER_MASTER_OBJID
|
|
LEFT OUTER JOIN (
|
|
SELECT POP.PURCHASE_ORDER_MASTER_OBJID
|
|
,SUM(POP.ORDER_QTY::NUMERIC) AS TOTAL_PO_QTY
|
|
,MAX(DH.RECEIPT_DATE) AS CUR_DELIVERY_DATE
|
|
,SUM(DH.RECEIPT_QTY::NUMERIC) AS TOTAL_DELIVERY_QTY
|
|
FROM PURCHASE_ORDER_PART POP
|
|
LEFT OUTER JOIN ARRIVAL_PLAN DH ON POP.OBJID = DH.ORDER_PART_OBJID
|
|
GROUP BY POP.PURCHASE_ORDER_MASTER_OBJID
|
|
) AS S1 ON POM.OBJID::VARCHAR = S1.PURCHASE_ORDER_MASTER_OBJID
|
|
LEFT OUTER JOIN PROJECT_MGMT AS CM ON POM.CONTRACT_MGMT_OBJID = CM.OBJID
|
|
WHERE 1=1
|
|
AND POM.MAIL_SEND_DATE IS NOT NULL
|
|
AND (MULTI_MASTER_YN = 'Y' OR NVL(MULTI_MASTER_YN, '') != 'Y' AND NVL(MULTI_YN, '') != 'Y')
|
|
<if test="search_proposal_no != null and search_proposal_no != ''">
|
|
AND (SELECT REQUEST_MNG_NO FROM SALES_REQUEST_MASTER WHERE OBJID::VARCHAR = POM.SALES_REQUEST_OBJID) LIKE '%' || #{search_proposal_no} || '%'
|
|
</if>
|
|
<if test="search_purchase_order_no != null and search_purchase_order_no != ''">
|
|
AND TRIM(UPPER(POM.PURCHASE_ORDER_NO)) LIKE '%' || TRIM(UPPER(#{search_purchase_order_no})) || '%'
|
|
</if>
|
|
<if test="search_project_no != null and search_project_no != ''">
|
|
AND CM.PROJECT_NO LIKE '%' || #{search_project_no} || '%'
|
|
</if>
|
|
<if test="search_part_no != null and search_part_no != ''">
|
|
AND POM.OBJID::VARCHAR IN (
|
|
SELECT PURCHASE_ORDER_MASTER_OBJID FROM PURCHASE_ORDER_PART
|
|
WHERE TRIM(UPPER(PART_NO)) LIKE '%' || TRIM(UPPER(#{search_part_no})) || '%'
|
|
)
|
|
</if>
|
|
<if test="search_part_name != null and search_part_name != ''">
|
|
AND POM.OBJID::VARCHAR IN (
|
|
SELECT PURCHASE_ORDER_MASTER_OBJID FROM PURCHASE_ORDER_PART
|
|
WHERE TRIM(UPPER(PART_NAME)) LIKE '%' || TRIM(UPPER(#{search_part_name})) || '%'
|
|
)
|
|
</if>
|
|
<if test="search_partner != null and search_partner != ''">
|
|
AND POM.PARTNER_OBJID = #{search_partner}
|
|
</if>
|
|
<if test="search_partner_name != null and search_partner_name != ''">
|
|
AND UPPER((SELECT CLIENT_NM FROM CLIENT_MNG WHERE OBJID::VARCHAR = POM.PARTNER_OBJID)) LIKE UPPER('%' || #{search_partner_name} || '%')
|
|
</if>
|
|
<if test="search_delivery_status != null and search_delivery_status != ''">
|
|
AND (CASE WHEN 0 <![CDATA[ >= ]]> ((SELECT SUM(REAL_ORDER_QTY::NUMERIC) FROM PURCHASE_ORDER_PART AS O WHERE POM.OBJID::VARCHAR = O.PURCHASE_ORDER_MASTER_OBJID) - COALESCE(S1.TOTAL_DELIVERY_QTY, 0)) THEN '입고완료'
|
|
WHEN TO_CHAR(NOW(),'YYYY-MM-DD') <![CDATA[ > ]]> POM.DELIVERY_DATE THEN '지연'
|
|
ELSE '입고중'
|
|
END) = #{search_delivery_status}
|
|
</if>
|
|
ORDER BY POM.REGDATE DESC
|
|
</select>
|
|
|
|
<!-- 수입검사 상세 정보 조회 -->
|
|
<select id="getIncomingInspectionInfo" parameterType="map" resultType="map">
|
|
SELECT A.OBJID
|
|
, A.PURCHASE_ORDER_MASTER_OBJID
|
|
, A.INSPECTOR_ID
|
|
, (SELECT USER_NAME FROM USER_INFO WHERE USER_ID = A.INSPECTOR_ID) AS INSPECTOR_NAME
|
|
, TO_CHAR(A.INSPECTION_DATE, 'YYYY-MM-DD') AS INSPECTION_DATE
|
|
, A.INSPECTION_RESULT
|
|
, A.INSPECTION_MEMO
|
|
, A.WRITER
|
|
, TO_CHAR(A.REG_DATE, 'YYYY-MM-DD') AS REG_DATE
|
|
FROM QUALITY_INCOMING_INSPECTION A
|
|
WHERE A.OBJID = #{OBJID}
|
|
</select>
|
|
|
|
<!-- 수입검사 등록 -->
|
|
<insert id="insertIncomingInspection" parameterType="map">
|
|
INSERT INTO QUALITY_INCOMING_INSPECTION (
|
|
OBJID
|
|
, PURCHASE_ORDER_MASTER_OBJID
|
|
, INSPECTOR_ID
|
|
, INSPECTION_DATE
|
|
, INSPECTION_RESULT
|
|
, INSPECTION_MEMO
|
|
, WRITER
|
|
, REG_DATE
|
|
) VALUES (
|
|
#{OBJID}
|
|
, #{PURCHASE_ORDER_MASTER_OBJID}
|
|
, #{INSPECTOR_ID}
|
|
, TO_DATE(#{INSPECTION_DATE}, 'YYYY-MM-DD')
|
|
, #{INSPECTION_RESULT}
|
|
, #{INSPECTION_MEMO}
|
|
, #{writer}
|
|
, SYSDATE
|
|
)
|
|
</insert>
|
|
|
|
<!-- 수입검사 수정 -->
|
|
<update id="updateIncomingInspection" parameterType="map">
|
|
UPDATE QUALITY_INCOMING_INSPECTION
|
|
SET INSPECTOR_ID = #{INSPECTOR_ID}
|
|
, INSPECTION_DATE = TO_DATE(#{INSPECTION_DATE}, 'YYYY-MM-DD')
|
|
, INSPECTION_RESULT = #{INSPECTION_RESULT}
|
|
, INSPECTION_MEMO = #{INSPECTION_MEMO}
|
|
WHERE OBJID = #{OBJID}
|
|
</update>
|
|
|
|
<!-- 수입검사 목록 조회 (엑셀용) -->
|
|
<select id="getIncomingInspectionListForExcel" parameterType="map" resultType="map">
|
|
SELECT A.OBJID
|
|
, A.PROPOSAL_NO
|
|
, A.PURCHASE_ORDER_NO
|
|
, A.PROJECT_NO
|
|
, A.PART_NO
|
|
, A.PART_NAME
|
|
, A.PARTNER_NAME
|
|
, A.DELIVERY_STATUS
|
|
, B.INSPECTOR_ID
|
|
, (SELECT USER_NAME FROM USER_INFO WHERE USER_ID = B.INSPECTOR_ID) AS INSPECTOR_NAME
|
|
, TO_CHAR(B.INSPECTION_DATE, 'YYYY-MM-DD') AS INSPECTION_DATE
|
|
, B.INSPECTION_RESULT
|
|
FROM (
|
|
SELECT POM.OBJID
|
|
, SRM.PROPOSAL_NO
|
|
, POM.PURCHASE_ORDER_NO
|
|
, PJ.PROJECT_NO
|
|
, POD.PART_NO
|
|
, POD.PART_NAME
|
|
, PM.PARTNER_NAME
|
|
, CASE WHEN NVL(POD.DELIVERY_QTY, 0) >= NVL(POD.ORDER_QTY, 0) THEN '입고완료' ELSE '입고중' END AS DELIVERY_STATUS
|
|
FROM PMS_PURCHASE_ORDER_MASTER POM
|
|
LEFT JOIN PMS_PURCHASE_ORDER_DETAIL POD ON POM.OBJID = POD.PURCHASE_ORDER_MASTER_OBJID
|
|
LEFT JOIN PMS_SALES_REQUEST_MASTER SRM ON POM.SALES_REQUEST_MASTER_OBJID = SRM.OBJID
|
|
LEFT JOIN PMS_PROJECT_INFO PJ ON POM.PROJECT_OBJID = PJ.OBJID
|
|
LEFT JOIN PARTNER_MNG PM ON POM.PARTNER_OBJID = PM.OBJID
|
|
WHERE 1=1
|
|
) A
|
|
LEFT JOIN QUALITY_INCOMING_INSPECTION B ON A.OBJID = B.PURCHASE_ORDER_MASTER_OBJID
|
|
ORDER BY A.PURCHASE_ORDER_NO DESC
|
|
</select>
|
|
|
|
<!-- =====================================================
|
|
공정검사 관리
|
|
===================================================== -->
|
|
|
|
<!-- 공정검사 목록 조회 -->
|
|
<select id="getProcessInspectionList" parameterType="map" resultType="map">
|
|
SELECT PPI.OBJID
|
|
, TO_CHAR(PPI.INSPECTION_DATE, 'YYYY-MM-DD') AS INSPECTION_DATE
|
|
, PPI.PROJECT_NO
|
|
, PPI.PART_NO
|
|
, PPI.PART_NAME
|
|
, PPI.DEFECT_QTY
|
|
, PPI.WORK_ENV_STATUS
|
|
, PPI.MEASURING_DEVICE
|
|
, PPI.INSPECTOR_ID
|
|
, (SELECT USER_NAME FROM USER_INFO WHERE USER_ID = PPI.INSPECTOR_ID) AS INSPECTOR_NAME
|
|
, PPI.INSPECTION_RESULT
|
|
FROM PMS_QUALITY_PROCESS_INSPECTION PPI
|
|
WHERE 1=1
|
|
<if test="search_project_no != null and search_project_no != ''">
|
|
AND UPPER(PPI.PROJECT_NO) LIKE UPPER('%' || #{search_project_no} || '%')
|
|
</if>
|
|
<if test="search_part_no != null and search_part_no != ''">
|
|
AND UPPER(PPI.PART_NO) LIKE UPPER('%' || #{search_part_no} || '%')
|
|
</if>
|
|
<if test="search_part_name != null and search_part_name != ''">
|
|
AND UPPER(PPI.PART_NAME) LIKE UPPER('%' || #{search_part_name} || '%')
|
|
</if>
|
|
<if test="search_work_env_status != null and search_work_env_status != ''">
|
|
AND UPPER(PPI.WORK_ENV_STATUS) LIKE UPPER('%' || #{search_work_env_status} || '%')
|
|
</if>
|
|
<if test="search_measuring_device != null and search_measuring_device != ''">
|
|
AND UPPER(PPI.MEASURING_DEVICE) LIKE UPPER('%' || #{search_measuring_device} || '%')
|
|
</if>
|
|
<if test="search_inspector != null and search_inspector != ''">
|
|
AND (
|
|
UPPER(PPI.INSPECTOR_ID) LIKE UPPER('%' || #{search_inspector} || '%')
|
|
OR UPPER((SELECT USER_NAME FROM USER_INFO WHERE USER_ID = PPI.INSPECTOR_ID)) LIKE UPPER('%' || #{search_inspector} || '%')
|
|
)
|
|
</if>
|
|
<if test="search_inspection_date_from != null and search_inspection_date_from != ''">
|
|
AND PPI.INSPECTION_DATE >= TO_DATE(#{search_inspection_date_from}, 'YYYY-MM-DD')
|
|
</if>
|
|
<if test="search_inspection_date_to != null and search_inspection_date_to != ''">
|
|
AND PPI.INSPECTION_DATE <![CDATA[<=]]> TO_DATE(#{search_inspection_date_to}, 'YYYY-MM-DD')
|
|
</if>
|
|
<if test="search_inspection_result != null and search_inspection_result != ''">
|
|
AND PPI.INSPECTION_RESULT = #{search_inspection_result}
|
|
</if>
|
|
ORDER BY PPI.INSPECTION_DATE DESC, PPI.REG_DATE DESC
|
|
</select>
|
|
|
|
<!-- 공정검사 상세 조회 -->
|
|
<select id="getProcessInspectionInfo" parameterType="map" resultType="map">
|
|
SELECT PPI.OBJID
|
|
, TO_CHAR(PPI.INSPECTION_DATE, 'YYYY-MM-DD') AS INSPECTION_DATE
|
|
, PPI.PROJECT_NO
|
|
, PPI.PART_NO
|
|
, PPI.PART_NAME
|
|
, PPI.DEFECT_QTY
|
|
, PPI.WORK_ENV_STATUS
|
|
, PPI.MEASURING_DEVICE
|
|
, PPI.INSPECTOR_ID
|
|
, (SELECT USER_NAME FROM USER_INFO WHERE USER_ID = PPI.INSPECTOR_ID) AS INSPECTOR_NAME
|
|
, PPI.INSPECTION_RESULT
|
|
, PPI.REMARK
|
|
, PPI.WRITER
|
|
, TO_CHAR(PPI.REG_DATE, 'YYYY-MM-DD') AS REG_DATE
|
|
FROM PMS_QUALITY_PROCESS_INSPECTION PPI
|
|
WHERE PPI.OBJID = #{OBJID}
|
|
</select>
|
|
|
|
<!-- =====================================================
|
|
반제품검사 관리
|
|
===================================================== -->
|
|
|
|
<!-- 반제품검사 목록 조회 -->
|
|
<select id="getSemiProductInspectionList" parameterType="map" resultType="map">
|
|
SELECT SPI.OBJID
|
|
, SPI.PROJECT_NO
|
|
, SPI.WORK_ORDER_NO
|
|
, SPI.PART_NO
|
|
, SPI.PART_NAME
|
|
, SPI.RECEIPT_QTY
|
|
, SPI.DISPOSITION_TYPE
|
|
FROM PMS_QUALITY_SEMI_PRODUCT_INSPECTION SPI
|
|
WHERE 1=1
|
|
ORDER BY SPI.REG_DATE DESC
|
|
</select>
|
|
|
|
<!-- 반제품검사 상세 조회 -->
|
|
<select id="getSemiProductInspectionInfo" parameterType="map" resultType="map">
|
|
SELECT SPI.OBJID
|
|
, SPI.PROJECT_NO
|
|
, SPI.WORK_ORDER_NO
|
|
, SPI.PART_NO
|
|
, SPI.PART_NAME
|
|
, SPI.RECEIPT_QTY
|
|
, SPI.DISPOSITION_TYPE
|
|
, SPI.REMARK
|
|
, SPI.WRITER
|
|
, TO_CHAR(SPI.REG_DATE, 'YYYY-MM-DD') AS REG_DATE
|
|
FROM PMS_QUALITY_SEMI_PRODUCT_INSPECTION SPI
|
|
WHERE SPI.OBJID = #{OBJID}
|
|
</select>
|
|
|
|
<!-- =====================================================
|
|
고객 CS 관리
|
|
===================================================== -->
|
|
|
|
<!-- 고객 CS 목록 조회 -->
|
|
<select id="getCustomerCsList" parameterType="map" resultType="map">
|
|
SELECT CCS.OBJID
|
|
, CCS.RECEIPT_NO
|
|
, TO_CHAR(CCS.RECEIPT_DATE, 'YYYY-MM-DD') AS RECEIPT_DATE
|
|
, CCS.QTY
|
|
, CCS.CUSTOMER_NAME
|
|
, CCS.MODEL_NAME
|
|
, CCS.PRODUCT_NAME
|
|
, CCS.PART_NO
|
|
, TO_CHAR(CCS.PRODUCTION_DATE, 'YYYY-MM-DD') AS PRODUCTION_DATE
|
|
, TO_CHAR(CCS.SALES_DATE, 'YYYY-MM-DD') AS SALES_DATE
|
|
, CCS.SERIAL_NO
|
|
, CCS.MANUFACTURER
|
|
, CCS.COMPLAINT_CONTENT
|
|
, CCS.ACTION_CONTENT
|
|
, CCS.BLAME_DECISION
|
|
, CCS.STATUS
|
|
, CCS.REMARK
|
|
, TO_CHAR(CCS.ACTION_DATE, 'YYYY-MM-DD') AS ACTION_DATE
|
|
, CCS.ACTION_USER_ID
|
|
, (SELECT USER_NAME FROM USER_INFO WHERE USER_ID = CCS.ACTION_USER_ID) AS ACTION_USER_NAME
|
|
, CASE WHEN CCS.ATTACH_FILE_OBJID IS NOT NULL THEN 'Y' ELSE 'N' END AS ATTACH_FILE
|
|
FROM PMS_QUALITY_CUSTOMER_CS CCS
|
|
WHERE 1=1
|
|
<if test="search_receipt_date_from != null and search_receipt_date_from != ''">
|
|
AND CCS.RECEIPT_DATE >= TO_DATE(#{search_receipt_date_from}, 'YYYY-MM-DD')
|
|
</if>
|
|
<if test="search_receipt_date_to != null and search_receipt_date_to != ''">
|
|
AND CCS.RECEIPT_DATE <![CDATA[<=]]> TO_DATE(#{search_receipt_date_to}, 'YYYY-MM-DD')
|
|
</if>
|
|
<if test="search_customer_name != null and search_customer_name != ''">
|
|
AND UPPER(CCS.CUSTOMER_NAME) LIKE UPPER('%' || #{search_customer_name} || '%')
|
|
</if>
|
|
<if test="search_model_name != null and search_model_name != ''">
|
|
AND UPPER(CCS.MODEL_NAME) LIKE UPPER('%' || #{search_model_name} || '%')
|
|
</if>
|
|
<if test="search_product_name != null and search_product_name != ''">
|
|
AND UPPER(CCS.PRODUCT_NAME) LIKE UPPER('%' || #{search_product_name} || '%')
|
|
</if>
|
|
<if test="search_part_no != null and search_part_no != ''">
|
|
AND UPPER(CCS.PART_NO) LIKE UPPER('%' || #{search_part_no} || '%')
|
|
</if>
|
|
<if test="search_serial_no != null and search_serial_no != ''">
|
|
AND UPPER(CCS.SERIAL_NO) LIKE UPPER('%' || #{search_serial_no} || '%')
|
|
</if>
|
|
<if test="search_manufacturer != null and search_manufacturer != ''">
|
|
AND UPPER(CCS.MANUFACTURER) LIKE UPPER('%' || #{search_manufacturer} || '%')
|
|
</if>
|
|
<if test="search_blame_decision != null and search_blame_decision != ''">
|
|
AND CCS.BLAME_DECISION = #{search_blame_decision}
|
|
</if>
|
|
<if test="search_status != null and search_status != ''">
|
|
AND CCS.STATUS = #{search_status}
|
|
</if>
|
|
<if test="search_action_date_from != null and search_action_date_from != ''">
|
|
AND CCS.ACTION_DATE >= TO_DATE(#{search_action_date_from}, 'YYYY-MM-DD')
|
|
</if>
|
|
<if test="search_action_date_to != null and search_action_date_to != ''">
|
|
AND CCS.ACTION_DATE <![CDATA[<=]]> TO_DATE(#{search_action_date_to}, 'YYYY-MM-DD')
|
|
</if>
|
|
<if test="search_action_user != null and search_action_user != ''">
|
|
AND (
|
|
UPPER(CCS.ACTION_USER_ID) LIKE UPPER('%' || #{search_action_user} || '%')
|
|
OR UPPER((SELECT USER_NAME FROM USER_INFO WHERE USER_ID = CCS.ACTION_USER_ID)) LIKE UPPER('%' || #{search_action_user} || '%')
|
|
)
|
|
</if>
|
|
ORDER BY CCS.RECEIPT_DATE DESC, CCS.REG_DATE DESC
|
|
</select>
|
|
|
|
<!-- 고객 CS 상세 조회 -->
|
|
<select id="getCustomerCsInfo" parameterType="map" resultType="map">
|
|
SELECT CCS.OBJID
|
|
, CCS.RECEIPT_NO
|
|
, TO_CHAR(CCS.RECEIPT_DATE, 'YYYY-MM-DD') AS RECEIPT_DATE
|
|
, CCS.QTY
|
|
, CCS.CUSTOMER_NAME
|
|
, CCS.MODEL_NAME
|
|
, CCS.PRODUCT_NAME
|
|
, CCS.PART_NO
|
|
, TO_CHAR(CCS.PRODUCTION_DATE, 'YYYY-MM-DD') AS PRODUCTION_DATE
|
|
, TO_CHAR(CCS.SALES_DATE, 'YYYY-MM-DD') AS SALES_DATE
|
|
, CCS.SERIAL_NO
|
|
, CCS.MANUFACTURER
|
|
, CCS.COMPLAINT_CONTENT
|
|
, CCS.ACTION_CONTENT
|
|
, CCS.BLAME_DECISION
|
|
, CCS.STATUS
|
|
, CCS.REMARK
|
|
, TO_CHAR(CCS.ACTION_DATE, 'YYYY-MM-DD') AS ACTION_DATE
|
|
, CCS.ACTION_USER_ID
|
|
, (SELECT USER_NAME FROM USER_INFO WHERE USER_ID = CCS.ACTION_USER_ID) AS ACTION_USER_NAME
|
|
, CCS.ATTACH_FILE_OBJID
|
|
, CCS.WRITER
|
|
, TO_CHAR(CCS.REG_DATE, 'YYYY-MM-DD') AS REG_DATE
|
|
FROM PMS_QUALITY_CUSTOMER_CS CCS
|
|
WHERE CCS.OBJID = #{OBJID}
|
|
</select>
|
|
|
|
<!-- =====================================================
|
|
ECR 관리
|
|
===================================================== -->
|
|
|
|
<!-- ECR 목록 조회 -->
|
|
<select id="getEcrList" parameterType="map" resultType="map">
|
|
SELECT ECR.OBJID
|
|
, ECR.ECR_NO
|
|
, TO_CHAR(ECR.REQUEST_DATE, 'YYYY-MM-DD') AS REQUEST_DATE
|
|
, ECR.REQUESTER_ID
|
|
, (SELECT USER_NAME FROM USER_INFO WHERE USER_ID = ECR.REQUESTER_ID) AS REQUESTER_NAME
|
|
, ECR.PART_NO
|
|
, ECR.PART_NAME
|
|
, ECR.ISSUE_CONTENT
|
|
, TO_CHAR(ECR.DUE_DATE, 'YYYY-MM-DD') AS DUE_DATE
|
|
, ECR.ACTION_DEPT
|
|
, ECR.ACTION_MANAGER_ID
|
|
, (SELECT USER_NAME FROM USER_INFO WHERE USER_ID = ECR.ACTION_MANAGER_ID) AS ACTION_MANAGER_NAME
|
|
, ECR.ACTION_USER_ID
|
|
, (SELECT USER_NAME FROM USER_INFO WHERE USER_ID = ECR.ACTION_USER_ID) AS ACTION_USER_NAME
|
|
, ECR.ACTION_CONTENT
|
|
, TO_CHAR(ECR.COMPLETE_DATE, 'YYYY-MM-DD') AS COMPLETE_DATE
|
|
, CASE WHEN ECR.ATTACH_FILE_OBJID IS NOT NULL THEN 'Y' ELSE 'N' END AS ATTACH_FILE
|
|
FROM PMS_QUALITY_ECR ECR
|
|
WHERE 1=1
|
|
<if test="search_request_date_from != null and search_request_date_from != ''">
|
|
AND ECR.REQUEST_DATE >= TO_DATE(#{search_request_date_from}, 'YYYY-MM-DD')
|
|
</if>
|
|
<if test="search_request_date_to != null and search_request_date_to != ''">
|
|
AND ECR.REQUEST_DATE <![CDATA[<=]]> TO_DATE(#{search_request_date_to}, 'YYYY-MM-DD')
|
|
</if>
|
|
<if test="search_requester != null and search_requester != ''">
|
|
AND (
|
|
UPPER(ECR.REQUESTER_ID) LIKE UPPER('%' || #{search_requester} || '%')
|
|
OR UPPER((SELECT USER_NAME FROM USER_INFO WHERE USER_ID = ECR.REQUESTER_ID)) LIKE UPPER('%' || #{search_requester} || '%')
|
|
)
|
|
</if>
|
|
<if test="search_part_no != null and search_part_no != ''">
|
|
AND UPPER(ECR.PART_NO) LIKE UPPER('%' || #{search_part_no} || '%')
|
|
</if>
|
|
<if test="search_part_name != null and search_part_name != ''">
|
|
AND UPPER(ECR.PART_NAME) LIKE UPPER('%' || #{search_part_name} || '%')
|
|
</if>
|
|
<if test="search_due_date_from != null and search_due_date_from != ''">
|
|
AND ECR.DUE_DATE >= TO_DATE(#{search_due_date_from}, 'YYYY-MM-DD')
|
|
</if>
|
|
<if test="search_due_date_to != null and search_due_date_to != ''">
|
|
AND ECR.DUE_DATE <![CDATA[<=]]> TO_DATE(#{search_due_date_to}, 'YYYY-MM-DD')
|
|
</if>
|
|
<if test="search_action_dept != null and search_action_dept != ''">
|
|
AND UPPER(ECR.ACTION_DEPT) LIKE UPPER('%' || #{search_action_dept} || '%')
|
|
</if>
|
|
<if test="search_action_manager != null and search_action_manager != ''">
|
|
AND (
|
|
UPPER(ECR.ACTION_MANAGER_ID) LIKE UPPER('%' || #{search_action_manager} || '%')
|
|
OR UPPER((SELECT USER_NAME FROM USER_INFO WHERE USER_ID = ECR.ACTION_MANAGER_ID)) LIKE UPPER('%' || #{search_action_manager} || '%')
|
|
)
|
|
</if>
|
|
<if test="search_action_user != null and search_action_user != ''">
|
|
AND (
|
|
UPPER(ECR.ACTION_USER_ID) LIKE UPPER('%' || #{search_action_user} || '%')
|
|
OR UPPER((SELECT USER_NAME FROM USER_INFO WHERE USER_ID = ECR.ACTION_USER_ID)) LIKE UPPER('%' || #{search_action_user} || '%')
|
|
)
|
|
</if>
|
|
<if test="search_complete_date_from != null and search_complete_date_from != ''">
|
|
AND ECR.COMPLETE_DATE >= TO_DATE(#{search_complete_date_from}, 'YYYY-MM-DD')
|
|
</if>
|
|
<if test="search_complete_date_to != null and search_complete_date_to != ''">
|
|
AND ECR.COMPLETE_DATE <![CDATA[<=]]> TO_DATE(#{search_complete_date_to}, 'YYYY-MM-DD')
|
|
</if>
|
|
ORDER BY ECR.REQUEST_DATE DESC, ECR.REG_DATE DESC
|
|
</select>
|
|
|
|
<!-- ECR 상세 조회 -->
|
|
<select id="getEcrInfo" parameterType="map" resultType="map">
|
|
SELECT ECR.OBJID
|
|
, ECR.ECR_NO
|
|
, TO_CHAR(ECR.REQUEST_DATE, 'YYYY-MM-DD') AS REQUEST_DATE
|
|
, ECR.REQUESTER_ID
|
|
, (SELECT USER_NAME FROM USER_INFO WHERE USER_ID = ECR.REQUESTER_ID) AS REQUESTER_NAME
|
|
, ECR.PART_NO
|
|
, ECR.PART_NAME
|
|
, ECR.ISSUE_CONTENT
|
|
, TO_CHAR(ECR.DUE_DATE, 'YYYY-MM-DD') AS DUE_DATE
|
|
, ECR.ACTION_DEPT
|
|
, ECR.ACTION_MANAGER_ID
|
|
, (SELECT USER_NAME FROM USER_INFO WHERE USER_ID = ECR.ACTION_MANAGER_ID) AS ACTION_MANAGER_NAME
|
|
, ECR.ACTION_USER_ID
|
|
, (SELECT USER_NAME FROM USER_INFO WHERE USER_ID = ECR.ACTION_USER_ID) AS ACTION_USER_NAME
|
|
, ECR.ACTION_CONTENT
|
|
, TO_CHAR(ECR.COMPLETE_DATE, 'YYYY-MM-DD') AS COMPLETE_DATE
|
|
, ECR.ATTACH_FILE_OBJID
|
|
, ECR.REMARK
|
|
, ECR.WRITER
|
|
, TO_CHAR(ECR.REG_DATE, 'YYYY-MM-DD') AS REG_DATE
|
|
FROM PMS_QUALITY_ECR ECR
|
|
WHERE ECR.OBJID = #{OBJID}
|
|
</select>
|
|
|
|
<!-- =====================================================
|
|
수입검사 상세 그리드 목록 (입고 결과 기준)
|
|
===================================================== -->
|
|
|
|
<!-- 수입검사 상세 그리드 목록 조회 (INVENTORY_MGMT_IN 기반) -->
|
|
<select id="getIncomingInspectionDetailList" parameterType="map" resultType="map">
|
|
SELECT IMI.OBJID
|
|
, IMI.PARENT_OBJID
|
|
, IM.PART_OBJID
|
|
, PM.PART_NO
|
|
, PM.PART_NAME
|
|
, COALESCE(IMI.RECEIPT_DATE, TO_CHAR(IMI.REGDATE, 'YYYY-MM-DD')) AS DELIVERY_DATE
|
|
, IMI.RECEIPT_QTY AS DELIVERY_QTY
|
|
, CASE WHEN EXISTS (
|
|
SELECT 1 FROM ATTACH_FILE_INFO DF
|
|
WHERE DF.TARGET_OBJID = POM.OBJID::VARCHAR
|
|
AND DF.DOC_TYPE = 'INSPECTION_FILE'
|
|
) THEN 'Y' ELSE 'N' END AS INSPECTION_FILE
|
|
, IID.OBJID AS INSPECTION_DETAIL_OBJID
|
|
, IID.INSPECTION_TYPE
|
|
, COALESCE(IID.INSPECTION_YN, '검사') AS INSPECTION_YN
|
|
, IID.DEFECT_TYPE
|
|
, (SELECT CODE_NAME FROM COMM_CODE WHERE CODE_ID = IID.DEFECT_TYPE) AS DEFECT_TYPE_NAME
|
|
, IID.DEFECT_REASON
|
|
, (SELECT CODE_NAME FROM COMM_CODE WHERE CODE_ID = IID.DEFECT_REASON) AS DEFECT_REASON_NAME
|
|
, IID.ACTION_STATUS
|
|
, IID.INSPECTION_QTY
|
|
, IID.DEFECT_QTY
|
|
, CASE WHEN NULLIF(IID.INSPECTION_QTY, '')::NUMERIC > 0
|
|
THEN ROUND((COALESCE(NULLIF(IID.DEFECT_QTY, '')::NUMERIC, 0) / NULLIF(IID.INSPECTION_QTY, '')::NUMERIC) * 100, 2)
|
|
ELSE NULL END AS DEFECT_RATE
|
|
, IID.INSPECTION_RESULT
|
|
, IID.ATTACH_FILE_OBJID
|
|
, (SELECT COUNT(*) FROM ATTACH_FILE_INFO AFI WHERE AFI.TARGET_OBJID = IMI.OBJID AND AFI.DOC_TYPE = 'INCOMING_INSPECTION' AND STATUS = 'Active') AS ATTACH_FILE_CNT
|
|
, IID.REMARK
|
|
, IMI.PURCHASE_ORDER_MASTER_OBJID
|
|
, POM.PURCHASE_ORDER_NO
|
|
FROM INVENTORY_MGMT_IN IMI
|
|
INNER JOIN INVENTORY_MGMT IM ON IM.OBJID = IMI.PARENT_OBJID
|
|
INNER JOIN PART_MNG PM ON PM.OBJID::VARCHAR = IM.PART_OBJID
|
|
LEFT JOIN PURCHASE_ORDER_MASTER POM ON POM.OBJID = IMI.PURCHASE_ORDER_MASTER_OBJID
|
|
LEFT JOIN INCOMING_INSPECTION_DETAIL IID ON IID.INVENTORY_IN_OBJID = IMI.OBJID
|
|
WHERE IMI.PURCHASE_ORDER_MASTER_OBJID = #{PURCHASE_ORDER_MASTER_OBJID}
|
|
ORDER BY IMI.REGDATE, PM.PART_NO
|
|
</select>
|
|
|
|
<!-- 수입검사 상세 정보 조회 (발주서 기준 첫번째 검사 정보) -->
|
|
<select id="getIncomingInspectionDetailInfo" parameterType="map" resultType="map">
|
|
SELECT IID.INSPECTION_DATE
|
|
, IID.INSPECTOR_ID
|
|
FROM INCOMING_INSPECTION_DETAIL IID
|
|
WHERE IID.PURCHASE_ORDER_MASTER_OBJID = #{OBJID}
|
|
ORDER BY IID.REG_DATE DESC
|
|
LIMIT 1
|
|
</select>
|
|
|
|
<!-- 수입검사 상세 저장 (UPSERT) -->
|
|
<update id="saveIncomingInspectionDetail" parameterType="map">
|
|
INSERT INTO INCOMING_INSPECTION_DETAIL (
|
|
OBJID
|
|
, INVENTORY_IN_OBJID
|
|
, PURCHASE_ORDER_MASTER_OBJID
|
|
, INSPECTION_DATE
|
|
, INSPECTOR_ID
|
|
, INSPECTION_TYPE
|
|
, INSPECTION_YN
|
|
, DEFECT_TYPE
|
|
, DEFECT_REASON
|
|
, ACTION_STATUS
|
|
, INSPECTION_QTY
|
|
, DEFECT_QTY
|
|
, INSPECTION_RESULT
|
|
, ATTACH_FILE_OBJID
|
|
, REMARK
|
|
, WRITER
|
|
, REG_DATE
|
|
) VALUES (
|
|
#{NEW_OBJID}
|
|
, #{OBJID}
|
|
, #{PURCHASE_ORDER_MASTER_OBJID}
|
|
, #{INSPECTION_DATE}
|
|
, #{INSPECTOR_ID}
|
|
, #{INSPECTION_TYPE}
|
|
, #{INSPECTION_YN}
|
|
, #{DEFECT_TYPE}
|
|
, #{DEFECT_REASON}
|
|
, #{ACTION_STATUS}
|
|
, #{INSPECTION_QTY}
|
|
, #{DEFECT_QTY}
|
|
, #{INSPECTION_RESULT}
|
|
, #{ATTACH_FILE_OBJID}
|
|
, #{REMARK}
|
|
, #{WRITER}
|
|
, NOW()
|
|
)
|
|
ON CONFLICT (INVENTORY_IN_OBJID) DO UPDATE SET
|
|
INSPECTION_DATE = #{INSPECTION_DATE}
|
|
, INSPECTOR_ID = #{INSPECTOR_ID}
|
|
, INSPECTION_TYPE = #{INSPECTION_TYPE}
|
|
, INSPECTION_YN = #{INSPECTION_YN}
|
|
, DEFECT_TYPE = #{DEFECT_TYPE}
|
|
, DEFECT_REASON = #{DEFECT_REASON}
|
|
, ACTION_STATUS = #{ACTION_STATUS}
|
|
, INSPECTION_QTY = #{INSPECTION_QTY}
|
|
, DEFECT_QTY = #{DEFECT_QTY}
|
|
, INSPECTION_RESULT = #{INSPECTION_RESULT}
|
|
, ATTACH_FILE_OBJID = #{ATTACH_FILE_OBJID}
|
|
, REMARK = #{REMARK}
|
|
, MODIFIER = #{WRITER}
|
|
, MOD_DATE = NOW()
|
|
</update>
|
|
|
|
</mapper> |