품질관리 러프하게

This commit is contained in:
leeheejin
2025-12-04 15:21:54 +09:00
parent a48b7ab496
commit 6c1a5cb490
17 changed files with 4496 additions and 0 deletions

View File

@@ -468,4 +468,338 @@
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
, SRM.PROPOSAL_NO
, SRM.OBJID AS PROPOSAL_OBJID
, POM.PURCHASE_ORDER_NO
, CM.PROJECT_NO
, POP.PART_NO
, POP.PART_NAME
, CASE
WHEN POM.PARTNER_OBJID LIKE 'C_%' THEN (SELECT CLIENT_NM FROM CLIENT_MNG WHERE 'C_' || OBJID::VARCHAR = POM.PARTNER_OBJID)
ELSE (SELECT SUPPLY_NAME FROM ADMIN_SUPPLY_MNG WHERE OBJID::VARCHAR = POM.PARTNER_OBJID)
END AS PARTNER_NAME
, CASE
WHEN COALESCE((SELECT SUM(REAL_ORDER_QTY::NUMERIC) FROM PURCHASE_ORDER_PART WHERE PURCHASE_ORDER_MASTER_OBJID = POM.OBJID::VARCHAR), 0)
<![CDATA[ <= ]]> COALESCE((SELECT SUM(RECEIPT_QTY::NUMERIC) FROM ARRIVAL_PLAN WHERE PARENT_OBJID = POM.OBJID), 0)
THEN '입고완료'
ELSE '입고중'
END AS DELIVERY_STATUS
, '' AS INSPECTOR_NAME
, '' AS INSPECTION_DATE
, '' AS INSPECTION_RESULT
FROM PURCHASE_ORDER_MASTER POM
LEFT JOIN PURCHASE_ORDER_PART POP ON POM.OBJID::VARCHAR = POP.PURCHASE_ORDER_MASTER_OBJID
LEFT JOIN SALES_REQUEST_MASTER SRM ON POM.SALES_REQUEST_MASTER_OBJID::VARCHAR = SRM.OBJID::VARCHAR
LEFT JOIN CONTRACT_MNG CM ON POM.CONTRACT_OBJID = CM.OBJID
WHERE 1=1
AND POM.STATUS = 'complete'
<if test="search_proposal_no != null and search_proposal_no != ''">
AND SRM.PROPOSAL_NO = #{search_proposal_no}
</if>
<if test="search_purchase_order_no != null and search_purchase_order_no != ''">
AND POM.PURCHASE_ORDER_NO = #{search_purchase_order_no}
</if>
<if test="search_project_no != null and search_project_no != ''">
AND CM.PROJECT_NO = #{search_project_no}
</if>
<if test="search_part_no != null and search_part_no != ''">
AND UPPER(POP.PART_NO) LIKE UPPER('%' || #{search_part_no} || '%')
</if>
<if test="search_part_name != null and search_part_name != ''">
AND UPPER(POP.PART_NAME) LIKE 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 'C_' || OBJID::VARCHAR = POM.PARTNER_OBJID)) LIKE UPPER('%' || #{search_partner_name} || '%')
OR UPPER((SELECT SUPPLY_NAME FROM ADMIN_SUPPLY_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 COALESCE((SELECT SUM(REAL_ORDER_QTY::NUMERIC) FROM PURCHASE_ORDER_PART WHERE PURCHASE_ORDER_MASTER_OBJID = POM.OBJID::VARCHAR), 0)
<![CDATA[ <= ]]> COALESCE((SELECT SUM(RECEIPT_QTY::NUMERIC) FROM ARRIVAL_PLAN WHERE PARENT_OBJID = POM.OBJID), 0)
THEN '입고완료'
ELSE '입고중'
END = #{search_delivery_status}
</if>
ORDER BY POM.PURCHASE_ORDER_NO 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 PMS_QUALITY_INCOMING_INSPECTION A
WHERE A.OBJID = #{OBJID}
</select>
<!-- 수입검사 등록 -->
<insert id="insertIncomingInspection" parameterType="map">
INSERT INTO PMS_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 PMS_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 PMS_QUALITY_INCOMING_INSPECTION B ON A.OBJID = B.PURCHASE_ORDER_MASTER_OBJID
ORDER BY A.PURCHASE_ORDER_NO DESC
</select>
</mapper>