파일저장도 확인완료
This commit is contained in:
@@ -666,7 +666,7 @@
|
||||
|
||||
,POM.PURCHASE_ORDER_NO
|
||||
,CM.PROJECT_NO
|
||||
|
||||
,CODE_NAME(CM.PRODUCT) AS PRODUCT_NAME
|
||||
<!-- 품번/품명 (첫번째 + 외 N건) -->
|
||||
,(SELECT
|
||||
CASE
|
||||
@@ -702,24 +702,85 @@
|
||||
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 '검사중'
|
||||
<!-- 요청 정보 (INCOMING_INSPECTION_DETAIL에서 조회) -->
|
||||
,(SELECT U.USER_NAME FROM USER_INFO U WHERE U.USER_ID = IID.REQUEST_USER_ID) AS REQUEST_USER_NAME
|
||||
,IID.REQUEST_DATE
|
||||
|
||||
<!-- 검사 정보 (INCOMING_INSPECTION_DEFECT에서 조회) -->
|
||||
/* 검사자: XXX 외 N건 형태 */
|
||||
,DEFECT.INSPECTOR_NAME_DISPLAY AS INSPECTOR_NAME
|
||||
/* 검사일: YYYY-MM-DD 외 N건 형태 */
|
||||
,DEFECT.INSPECTION_DATE_DISPLAY AS INSPECTION_DATE
|
||||
/* 검사결과: 하나라도 NG면 NG, 검사 대상(스킵 제외) 모두 검사완료면 OK, 일부만 검사면 검사중 */
|
||||
,(CASE WHEN DEFECT.NG_COUNT > 0 THEN 'NG'
|
||||
WHEN DEFECT.INSPECTION_TARGET_COUNT > 0 AND DEFECT.INSPECTION_TARGET_COUNT = DEFECT.INSPECTED_COUNT THEN 'OK'
|
||||
WHEN DEFECT.INSPECTED_COUNT > 0 THEN '검사중'
|
||||
ELSE '' END) AS INSPECTION_RESULT
|
||||
|
||||
/* 검사여부: 검사가 하나라도 있으면 '검사', 모두 스킵이면 '스킵', 아무것도 없으면 빈값 */
|
||||
,(CASE WHEN IID.INSPECTION_YN_COUNT > 0 THEN '검사'
|
||||
WHEN IID.SKIP_YN_COUNT > 0 AND IID.INSPECTION_YN_COUNT = 0 THEN '스킵'
|
||||
ELSE '' END) AS INSPECTION_YN
|
||||
|
||||
/* 요청현황: 입고내역 기준으로 검사여부 선택 현황 계산
|
||||
미요청: 입고건이 있지만 전부 검사여부 미선택
|
||||
요청중: 일부만 검사여부 선택됨
|
||||
요청완료: 전부 검사여부 선택됨 */
|
||||
,(CASE WHEN REQ.DELIVERY_TOTAL_COUNT IS NULL OR REQ.DELIVERY_TOTAL_COUNT = 0 THEN ''
|
||||
WHEN REQ.SELECTED_COUNT = 0 THEN '미요청'
|
||||
WHEN REQ.SELECTED_COUNT <![CDATA[ < ]]> REQ.DELIVERY_TOTAL_COUNT THEN '요청중'
|
||||
ELSE '요청완료' END) AS REQUEST_STATUS
|
||||
,(SELECT COUNT(1) FROM ATTACH_FILE_INFO AF WHERE AF.TARGET_OBJID = POM.OBJID AND AF.DOC_TYPE = 'INSPECTION_FILE' AND UPPER(AF.STATUS) = 'ACTIVE') AS INSPECTION_FILE_CNT
|
||||
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
|
||||
,MAX(REQUEST_USER_ID) AS REQUEST_USER_ID
|
||||
,MAX(REQUEST_DATE) AS REQUEST_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
|
||||
/* 검사여부 카운트: 검사 선택 건수, 스킵 선택 건수 */
|
||||
,COUNT(CASE WHEN INSPECTION_YN = '검사' THEN 1 END) AS INSPECTION_YN_COUNT
|
||||
,COUNT(CASE WHEN INSPECTION_YN = '스킵' THEN 1 END) AS SKIP_YN_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 IID2.PURCHASE_ORDER_MASTER_OBJID
|
||||
/* 검사자: 여러명이면 "XXX 외 N건" 형태로 표시 */
|
||||
,CASE
|
||||
WHEN COUNT(DISTINCT IDF.INSPECTOR_ID) > 1
|
||||
THEN (SELECT USER_NAME FROM USER_INFO WHERE USER_ID = MIN(IDF.INSPECTOR_ID)) || ' 외 ' || (COUNT(DISTINCT IDF.INSPECTOR_ID) - 1) || '건'
|
||||
WHEN COUNT(DISTINCT IDF.INSPECTOR_ID) = 1
|
||||
THEN (SELECT USER_NAME FROM USER_INFO WHERE USER_ID = MIN(IDF.INSPECTOR_ID))
|
||||
ELSE ''
|
||||
END AS INSPECTOR_NAME_DISPLAY
|
||||
/* 검사일: 여러개면 "YYYY-MM-DD 외 N건" 형태로 표시 */
|
||||
,CASE
|
||||
WHEN COUNT(DISTINCT IDF.INSPECTION_DATE) > 1
|
||||
THEN TO_CHAR(MIN(IDF.INSPECTION_DATE), 'YYYY-MM-DD') || ' 외 ' || (COUNT(DISTINCT IDF.INSPECTION_DATE) - 1) || '건'
|
||||
WHEN COUNT(DISTINCT IDF.INSPECTION_DATE) = 1
|
||||
THEN TO_CHAR(MIN(IDF.INSPECTION_DATE), 'YYYY-MM-DD')
|
||||
ELSE ''
|
||||
END AS INSPECTION_DATE_DISPLAY
|
||||
/* 검사 대상 건수 (스킵 제외, 검사인 항목만) */
|
||||
,COUNT(CASE WHEN IID2.INSPECTION_YN = '검사' THEN 1 END) AS INSPECTION_TARGET_COUNT
|
||||
/* 검사결과 입력된 건수 */
|
||||
,COUNT(CASE WHEN IDF.INSPECTION_RESULT IS NOT NULL AND IDF.INSPECTION_RESULT != '' THEN 1 END) AS INSPECTED_COUNT
|
||||
,COUNT(CASE WHEN IDF.INSPECTION_RESULT = 'NG' THEN 1 END) AS NG_COUNT
|
||||
FROM INCOMING_INSPECTION_DETAIL IID2
|
||||
LEFT JOIN INCOMING_INSPECTION_DEFECT IDF ON IDF.INSPECTION_DETAIL_OBJID = IID2.OBJID
|
||||
GROUP BY IID2.PURCHASE_ORDER_MASTER_OBJID
|
||||
) AS DEFECT ON POM.OBJID::VARCHAR = DEFECT.PURCHASE_ORDER_MASTER_OBJID
|
||||
/* 입고내역 기준 검사여부 선택 현황 (요청현황 계산용) */
|
||||
LEFT OUTER JOIN (
|
||||
SELECT IMI.PURCHASE_ORDER_MASTER_OBJID
|
||||
,COUNT(*) AS DELIVERY_TOTAL_COUNT
|
||||
,COUNT(CASE WHEN IID.INSPECTION_YN IS NOT NULL AND IID.INSPECTION_YN != '' THEN 1 END) AS SELECTED_COUNT
|
||||
FROM INVENTORY_MGMT_IN IMI
|
||||
LEFT JOIN INCOMING_INSPECTION_DETAIL IID ON IID.INVENTORY_IN_OBJID = IMI.OBJID
|
||||
WHERE IMI.PURCHASE_ORDER_MASTER_OBJID IS NOT NULL
|
||||
GROUP BY IMI.PURCHASE_ORDER_MASTER_OBJID
|
||||
) AS REQ ON POM.OBJID::VARCHAR = REQ.PURCHASE_ORDER_MASTER_OBJID
|
||||
LEFT OUTER JOIN (
|
||||
SELECT POP.PURCHASE_ORDER_MASTER_OBJID
|
||||
,SUM(POP.ORDER_QTY::NUMERIC) AS TOTAL_PO_QTY
|
||||
@@ -792,6 +853,11 @@
|
||||
WHEN IID.INSPECTED_COUNT > 0 THEN '검사중'
|
||||
ELSE '' END) = #{search_inspection_result}
|
||||
</if>
|
||||
<!-- 요청현황 필터 (수입검사 진행 리스트에서 요청완료 건만 조회) -->
|
||||
<if test="request_status_filter != null and request_status_filter == '요청완료'">
|
||||
AND REQ.DELIVERY_TOTAL_COUNT = REQ.SELECTED_COUNT
|
||||
AND REQ.SELECTED_COUNT > 0
|
||||
</if>
|
||||
ORDER BY POM.REGDATE DESC
|
||||
</select>
|
||||
|
||||
@@ -1497,6 +1563,7 @@
|
||||
<!-- 반제품검사 상세 조회 (타입별) -->
|
||||
<select id="getSemiProductInspectionByType" parameterType="map" resultType="map">
|
||||
SELECT SPI.OBJID AS "OBJID"
|
||||
, SPI.OBJID AS "ROW_ID"
|
||||
, COALESCE(SPI.MODEL_NAME, '') AS "MODEL_NAME"
|
||||
, COALESCE(SPI.PRODUCT_TYPE, '') AS "PRODUCT_TYPE"
|
||||
, COALESCE(SPI.WORK_ORDER_NO, '') AS "WORK_ORDER_NO"
|
||||
@@ -1515,6 +1582,10 @@
|
||||
, COALESCE(SPI.REMARK, '') AS "REMARK"
|
||||
, SPI.DATA_TYPE AS "DATA_TYPE"
|
||||
, COALESCE(SPI.INSPECTION_GROUP_ID, '') AS "INSPECTION_GROUP_ID"
|
||||
<!-- 파일 카운트 조회 -->
|
||||
, (SELECT COUNT(*) FROM ATTACH_FILE_INFO AFI WHERE AFI.TARGET_OBJID = SPI.OBJID AND AFI.DOC_TYPE = 'SEMI_INSPECTION_IMAGE' AND AFI.STATUS = 'Active') AS "IMAGE_FILE_CNT"
|
||||
, (SELECT COUNT(*) FROM ATTACH_FILE_INFO AFI WHERE AFI.TARGET_OBJID = SPI.OBJID AND AFI.DOC_TYPE = 'SEMI_INSPECTION_NCR' AND AFI.STATUS = 'Active') AS "NCR_FILE_CNT"
|
||||
, (SELECT COUNT(*) FROM ATTACH_FILE_INFO AFI WHERE AFI.TARGET_OBJID = SPI.OBJID AND AFI.DOC_TYPE = 'SEMI_INSPECTION_REPORT' AND AFI.STATUS = 'Active') AS "REPORT_FILE_CNT"
|
||||
FROM PMS_QUALITY_SEMI_PRODUCT_INSPECTION SPI
|
||||
WHERE 1=1
|
||||
<if test="INSPECTION_GROUP_ID != null and INSPECTION_GROUP_ID != ''">
|
||||
@@ -1574,6 +1645,12 @@
|
||||
WHERE OBJID = #{OBJID}
|
||||
</update>
|
||||
|
||||
<!-- 반제품검사 데이터 삭제 (그룹ID 기준) -->
|
||||
<delete id="deleteSemiProductInspectionByGroupId" parameterType="map">
|
||||
DELETE FROM PMS_QUALITY_SEMI_PRODUCT_INSPECTION
|
||||
WHERE INSPECTION_GROUP_ID = #{INSPECTION_GROUP_ID}
|
||||
</delete>
|
||||
|
||||
<!-- 반제품검사 데이터 저장 (새 팝업 형식) -->
|
||||
<insert id="insertSemiProductInspectionData" parameterType="map">
|
||||
INSERT INTO PMS_QUALITY_SEMI_PRODUCT_INSPECTION (
|
||||
@@ -1623,6 +1700,40 @@
|
||||
)
|
||||
</insert>
|
||||
|
||||
<!-- 반제품검사 데이터 수정 (기존 OBJID 유지) -->
|
||||
<update id="updateSemiProductInspectionData" parameterType="map">
|
||||
UPDATE PMS_QUALITY_SEMI_PRODUCT_INSPECTION SET
|
||||
MODEL_NAME = #{MODEL_NAME}
|
||||
, PRODUCT_TYPE = #{PRODUCT_TYPE}
|
||||
, WORK_ORDER_NO = #{WORK_ORDER_NO}
|
||||
, PART_NO = #{PART_NO}
|
||||
, PART_NAME = #{PART_NAME}
|
||||
, RECEIPT_QTY = COALESCE(NULLIF(#{RECEIPT_QTY}, '')::NUMERIC, 0)
|
||||
, GOOD_QTY = COALESCE(NULLIF(#{GOOD_QTY}, '')::NUMERIC, 0)
|
||||
, DEFECT_QTY = COALESCE(NULLIF(#{DEFECT_QTY}, '')::NUMERIC, 0)
|
||||
, DEFECT_TYPE = #{DEFECT_TYPE}
|
||||
, DEFECT_CAUSE = #{DEFECT_CAUSE}
|
||||
, RESPONSIBLE_DEPT = #{RESPONSIBLE_DEPT}
|
||||
, PROCESS_STATUS = #{PROCESS_STATUS}
|
||||
, INSPECTION_DATE = CASE WHEN #{INSPECTION_DATE} = '' THEN NULL ELSE #{INSPECTION_DATE}::DATE END
|
||||
, INSPECTOR = #{INSPECTOR}
|
||||
, DISPOSITION_TYPE = #{DISPOSITION_TYPE}
|
||||
, REMARK = #{REMARK}
|
||||
WHERE OBJID = #{OBJID}
|
||||
</update>
|
||||
|
||||
<!-- 반제품검사 데이터 삭제 (특정 OBJID 제외) -->
|
||||
<delete id="deleteSemiProductInspectionExcludeObjIds" parameterType="map">
|
||||
DELETE FROM PMS_QUALITY_SEMI_PRODUCT_INSPECTION
|
||||
WHERE INSPECTION_GROUP_ID = #{INSPECTION_GROUP_ID}
|
||||
<if test="EXCLUDE_OBJIDS != null and EXCLUDE_OBJIDS.size() > 0">
|
||||
AND OBJID NOT IN
|
||||
<foreach collection="EXCLUDE_OBJIDS" item="objId" open="(" separator="," close=")">
|
||||
#{objId}
|
||||
</foreach>
|
||||
</if>
|
||||
</delete>
|
||||
|
||||
<!-- =====================================================
|
||||
고객 CS 관리
|
||||
===================================================== -->
|
||||
@@ -2020,7 +2131,10 @@
|
||||
) THEN 'Y' ELSE 'N' END AS INSPECTION_FILE
|
||||
, IID.OBJID AS INSPECTION_DETAIL_OBJID
|
||||
, IID.INSPECTION_TYPE
|
||||
, COALESCE(IID.INSPECTION_YN, '검사') AS INSPECTION_YN
|
||||
, COALESCE(IID.INSPECTION_YN, '') AS INSPECTION_YN
|
||||
, IID.REQUEST_DATE
|
||||
, IID.REQUEST_USER_ID
|
||||
, (SELECT USER_NAME FROM USER_INFO WHERE USER_ID = IID.REQUEST_USER_ID) AS REQUEST_USER_NAME
|
||||
, IID.DEFECT_TYPE
|
||||
, (SELECT CODE_NAME FROM COMM_CODE WHERE CODE_ID = IID.DEFECT_TYPE) AS DEFECT_TYPE_NAME
|
||||
, IID.DEFECT_REASON
|
||||
@@ -2043,6 +2157,54 @@
|
||||
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}
|
||||
<!-- <if test="INSPECTION_YN != null and INSPECTION_YN != ''">
|
||||
AND IID.INSPECTION_YN = #{INSPECTION_YN}
|
||||
</if> -->
|
||||
ORDER BY IMI.REGDATE, PM.PART_NO
|
||||
</select>
|
||||
|
||||
<!-- 수입검사 진행 상세 그리드 목록 조회 (검사여부가 '검사'인 항목만) -->
|
||||
<select id="getIncomingInspectionProgressDetailList" 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
|
||||
, IID.INSPECTION_YN
|
||||
, IID.REQUEST_DATE
|
||||
, IID.REQUEST_USER_ID
|
||||
, (SELECT USER_NAME FROM USER_INFO WHERE USER_ID = IID.REQUEST_USER_ID) AS REQUEST_USER_NAME
|
||||
, 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
|
||||
INNER JOIN INCOMING_INSPECTION_DETAIL IID ON IID.INVENTORY_IN_OBJID = IMI.OBJID AND IID.INSPECTION_YN = '검사'
|
||||
WHERE IMI.PURCHASE_ORDER_MASTER_OBJID = #{PURCHASE_ORDER_MASTER_OBJID}
|
||||
ORDER BY IMI.REGDATE, PM.PART_NO
|
||||
</select>
|
||||
|
||||
@@ -2062,6 +2224,8 @@
|
||||
OBJID
|
||||
, INVENTORY_IN_OBJID
|
||||
, PURCHASE_ORDER_MASTER_OBJID
|
||||
, REQUEST_DATE
|
||||
, REQUEST_USER_ID
|
||||
, INSPECTION_DATE
|
||||
, INSPECTOR_ID
|
||||
, INSPECTION_TYPE
|
||||
@@ -2080,6 +2244,8 @@
|
||||
#{NEW_OBJID}
|
||||
, #{OBJID}
|
||||
, #{PURCHASE_ORDER_MASTER_OBJID}
|
||||
, #{REQUEST_DATE}
|
||||
, #{REQUEST_USER_ID}
|
||||
, #{INSPECTION_DATE}
|
||||
, #{INSPECTOR_ID}
|
||||
, #{INSPECTION_TYPE}
|
||||
@@ -2096,20 +2262,120 @@
|
||||
, 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}
|
||||
REQUEST_DATE = COALESCE(#{REQUEST_DATE}, INCOMING_INSPECTION_DETAIL.REQUEST_DATE)
|
||||
, REQUEST_USER_ID = COALESCE(#{REQUEST_USER_ID}, INCOMING_INSPECTION_DETAIL.REQUEST_USER_ID)
|
||||
, INSPECTION_DATE = COALESCE(#{INSPECTION_DATE}, INCOMING_INSPECTION_DETAIL.INSPECTION_DATE)
|
||||
, INSPECTOR_ID = COALESCE(#{INSPECTOR_ID}, INCOMING_INSPECTION_DETAIL.INSPECTOR_ID)
|
||||
, INSPECTION_TYPE = COALESCE(#{INSPECTION_TYPE}, INCOMING_INSPECTION_DETAIL.INSPECTION_TYPE)
|
||||
, INSPECTION_YN = COALESCE(#{INSPECTION_YN}, INCOMING_INSPECTION_DETAIL.INSPECTION_YN)
|
||||
, DEFECT_TYPE = COALESCE(#{DEFECT_TYPE}, INCOMING_INSPECTION_DETAIL.DEFECT_TYPE)
|
||||
, DEFECT_REASON = COALESCE(#{DEFECT_REASON}, INCOMING_INSPECTION_DETAIL.DEFECT_REASON)
|
||||
, ACTION_STATUS = COALESCE(#{ACTION_STATUS}, INCOMING_INSPECTION_DETAIL.ACTION_STATUS)
|
||||
, INSPECTION_QTY = COALESCE(#{INSPECTION_QTY}, INCOMING_INSPECTION_DETAIL.INSPECTION_QTY)
|
||||
, DEFECT_QTY = COALESCE(#{DEFECT_QTY}, INCOMING_INSPECTION_DETAIL.DEFECT_QTY)
|
||||
, INSPECTION_RESULT = COALESCE(#{INSPECTION_RESULT}, INCOMING_INSPECTION_DETAIL.INSPECTION_RESULT)
|
||||
, ATTACH_FILE_OBJID = COALESCE(#{ATTACH_FILE_OBJID}, INCOMING_INSPECTION_DETAIL.ATTACH_FILE_OBJID)
|
||||
, REMARK = COALESCE(#{REMARK}, INCOMING_INSPECTION_DETAIL.REMARK)
|
||||
, MODIFIER = #{WRITER}
|
||||
, MOD_DATE = NOW()
|
||||
</update>
|
||||
|
||||
<!-- =====================================================
|
||||
수입검사 불량상세 (INCOMING_INSPECTION_DEFECT) 관련 쿼리
|
||||
===================================================== -->
|
||||
|
||||
<!-- 불량상세 목록 조회 -->
|
||||
<select id="getIncomingInspectionDefectList" parameterType="map" resultType="map">
|
||||
SELECT
|
||||
D.OBJID
|
||||
, D.INSPECTION_DETAIL_OBJID
|
||||
, D.INSPECTION_TYPE
|
||||
, TO_CHAR(D.INSPECTION_DATE, 'YYYY-MM-DD') AS INSPECTION_DATE
|
||||
, D.INSPECTOR_ID
|
||||
, U.USER_NAME AS INSPECTOR_NAME
|
||||
, D.DEFECT_TYPE
|
||||
, D.DEFECT_REASON
|
||||
, D.ACTION_STATUS
|
||||
, D.ACTION_RESULT
|
||||
, D.INSPECTION_QTY
|
||||
, D.DEFECT_QTY
|
||||
, CASE WHEN COALESCE(NULLIF(D.INSPECTION_QTY, ''), '0')::NUMERIC > 0
|
||||
THEN ROUND((COALESCE(NULLIF(D.DEFECT_QTY, ''), '0')::NUMERIC / COALESCE(NULLIF(D.INSPECTION_QTY, ''), '1')::NUMERIC) * 100, 2)
|
||||
ELSE 0
|
||||
END AS DEFECT_RATE
|
||||
, D.INSPECTION_RESULT
|
||||
, D.REMARK
|
||||
, D.WRITER
|
||||
, TO_CHAR(D.REG_DATE, 'YYYY-MM-DD') AS REG_DATE
|
||||
, (SELECT COUNT(*) FROM ATTACH_FILE_INFO F WHERE F.TARGET_OBJID = D.OBJID AND F.DOC_TYPE = 'INSPECTION_DEFECT_IMAGE' AND UPPER(F.STATUS) = 'ACTIVE') AS IMAGE_FILE_CNT
|
||||
, (SELECT COUNT(*) FROM ATTACH_FILE_INFO F WHERE F.TARGET_OBJID = D.OBJID AND F.DOC_TYPE = 'INSPECTION_DEFECT_FILE' AND UPPER(F.STATUS) = 'ACTIVE') AS ATTACH_FILE_CNT
|
||||
FROM INCOMING_INSPECTION_DEFECT D
|
||||
LEFT JOIN USER_INFO U ON D.INSPECTOR_ID = U.USER_ID
|
||||
WHERE D.INSPECTION_DETAIL_OBJID = #{INSPECTION_DETAIL_OBJID}
|
||||
ORDER BY D.REG_DATE ASC
|
||||
</select>
|
||||
|
||||
<!-- 불량상세 저장 (INSERT/UPDATE) -->
|
||||
<insert id="saveIncomingInspectionDefect" parameterType="map">
|
||||
INSERT INTO INCOMING_INSPECTION_DEFECT (
|
||||
OBJID
|
||||
, INSPECTION_DETAIL_OBJID
|
||||
, INSPECTION_TYPE
|
||||
, INSPECTION_DATE
|
||||
, INSPECTOR_ID
|
||||
, DEFECT_TYPE
|
||||
, DEFECT_REASON
|
||||
, ACTION_STATUS
|
||||
, ACTION_RESULT
|
||||
, INSPECTION_QTY
|
||||
, DEFECT_QTY
|
||||
, INSPECTION_RESULT
|
||||
, REMARK
|
||||
, WRITER
|
||||
, REG_DATE
|
||||
) VALUES (
|
||||
#{OBJID}
|
||||
, #{INSPECTION_DETAIL_OBJID}
|
||||
, #{INSPECTION_TYPE}
|
||||
, #{INSPECTION_DATE}::DATE
|
||||
, #{INSPECTOR_ID}
|
||||
, #{DEFECT_TYPE}
|
||||
, #{DEFECT_REASON}
|
||||
, #{ACTION_STATUS}
|
||||
, #{ACTION_RESULT}
|
||||
, #{INSPECTION_QTY}
|
||||
, #{DEFECT_QTY}
|
||||
, #{INSPECTION_RESULT}
|
||||
, #{REMARK}
|
||||
, #{WRITER}
|
||||
, NOW()
|
||||
)
|
||||
ON CONFLICT (OBJID) DO UPDATE SET
|
||||
INSPECTION_TYPE = #{INSPECTION_TYPE}
|
||||
, INSPECTION_DATE = #{INSPECTION_DATE}::DATE
|
||||
, INSPECTOR_ID = #{INSPECTOR_ID}
|
||||
, DEFECT_TYPE = #{DEFECT_TYPE}
|
||||
, DEFECT_REASON = #{DEFECT_REASON}
|
||||
, ACTION_STATUS = #{ACTION_STATUS}
|
||||
, ACTION_RESULT = #{ACTION_RESULT}
|
||||
, INSPECTION_QTY = #{INSPECTION_QTY}
|
||||
, DEFECT_QTY = #{DEFECT_QTY}
|
||||
, INSPECTION_RESULT = #{INSPECTION_RESULT}
|
||||
, REMARK = #{REMARK}
|
||||
, MODIFIER = #{WRITER}
|
||||
, MOD_DATE = NOW()
|
||||
</insert>
|
||||
|
||||
<!-- 불량상세 삭제 -->
|
||||
<delete id="deleteIncomingInspectionDefect" parameterType="map">
|
||||
DELETE FROM INCOMING_INSPECTION_DEFECT
|
||||
WHERE OBJID = #{OBJID}
|
||||
</delete>
|
||||
|
||||
<!-- 불량상세 전체 삭제 (검사상세 기준) -->
|
||||
<delete id="deleteIncomingInspectionDefectByDetail" parameterType="map">
|
||||
DELETE FROM INCOMING_INSPECTION_DEFECT
|
||||
WHERE INSPECTION_DETAIL_OBJID = #{INSPECTION_DETAIL_OBJID}
|
||||
</delete>
|
||||
|
||||
</mapper>
|
||||
Reference in New Issue
Block a user