중간커밋
This commit is contained in:
@@ -663,6 +663,15 @@ VALUES
|
||||
SRM.PROJECT_NO,
|
||||
PM.PROJECT_NO AS PROJECT_NUMBER,
|
||||
PM.PROJECT_NAME,
|
||||
COALESCE(
|
||||
PM.OBJID,
|
||||
(SELECT OBJID FROM PROJECT_MGMT WHERE PROJECT_NO = SRM.PROJECT_NO LIMIT 1)
|
||||
) AS PROJECT_MGMT_OBJID,
|
||||
-- M-BOM 조회용 BOM_REPORT_OBJID 추가
|
||||
COALESCE(
|
||||
PM.BOM_REPORT_OBJID,
|
||||
(SELECT BOM_REPORT_OBJID FROM PROJECT_MGMT WHERE PROJECT_NO = SRM.PROJECT_NO LIMIT 1)
|
||||
) AS BOM_REPORT_OBJID,
|
||||
PM.SETUP,
|
||||
SM.SUPPLY_NAME AS CUSTOMER_NAME,
|
||||
SM.OBJID::VARCHAR AS CUSTOMER_OBJID, -- 고객사 OBJID (드롭다운 선택용)
|
||||
@@ -705,7 +714,7 @@ VALUES
|
||||
|
||||
FROM
|
||||
SALES_REQUEST_MASTER SRM
|
||||
LEFT JOIN PROJECT_MGMT PM ON SRM.PROJECT_NO = PM.OBJID::VARCHAR
|
||||
LEFT JOIN PROJECT_MGMT PM ON (SRM.PROJECT_NO = PM.OBJID::VARCHAR OR SRM.PROJECT_NO = PM.PROJECT_NO)
|
||||
LEFT JOIN CONTRACT_MGMT CM ON PM.CONTRACT_OBJID = CM.OBJID::VARCHAR
|
||||
LEFT JOIN SUPPLY_MNG SM ON CM.CUSTOMER_OBJID::VARCHAR = SM.OBJID::VARCHAR
|
||||
LEFT JOIN PURCHASE_ORDER_MASTER POM ON SRM.OBJID = POM.SALES_REQUEST_OBJID
|
||||
@@ -1242,31 +1251,51 @@ VALUES
|
||||
AND PM.OBJID = #{PROJECT_NO}
|
||||
</select>
|
||||
|
||||
<!-- 전체 품목 조회 (M-BOM이 없을 때 사용) -->
|
||||
<select id="getAllPartMngList" parameterType="map" resultType="map">
|
||||
SELECT
|
||||
PM.OBJID,
|
||||
PM.PART_NO,
|
||||
PM.PART_NAME,
|
||||
PM.SPEC,
|
||||
PM.MAKER,
|
||||
PM.MATERIAL,
|
||||
PM.UNIT,
|
||||
(SELECT CODE_NAME FROM COMM_CODE WHERE CODE_ID = PM.UNIT) AS UNIT_TITLE
|
||||
FROM PART_MNG PM
|
||||
WHERE 1=1
|
||||
AND PM.IS_LAST = '1'
|
||||
ORDER BY PM.PART_NO
|
||||
LIMIT 500
|
||||
</select>
|
||||
|
||||
<select id="SalesBomPartListByProjectUnit" parameterType="map" resultType="map">
|
||||
<!-- M-BOM 데이터 조회: PROJECT_MGMT.BOM_REPORT_OBJID -> BOM_PART_QTY -> PART_MNG -->
|
||||
<!-- M-BOM 데이터 조회: getMbomList와 동일한 조인 방식 사용 (BPQ.PART_NO = PM.PART_NO) -->
|
||||
SELECT
|
||||
BPQ.BOM_REPORT_OBJID
|
||||
,BPQ.PART_NO AS PART_OBJID
|
||||
,PM.PART_NAME
|
||||
,PM.PART_NO
|
||||
,PM.SPEC
|
||||
,PM.MAKER
|
||||
,PM.REMARK
|
||||
,PM.UNIT
|
||||
,COALESCE(PM.PART_NO, BPQ.PART_NO, '') AS PART_NO
|
||||
,COALESCE(PM.PART_NAME, '') AS PART_NAME
|
||||
,COALESCE(PM.PART_NAME, '') AS PART_FULL_NAME
|
||||
,COALESCE(PM.SPEC, '') AS SPEC
|
||||
,BPQ.QTY AS ORDER_QTY
|
||||
,COALESCE(PM.MAKER, '') AS MAKER
|
||||
,'' AS REMARK
|
||||
,'' AS UNIT
|
||||
,NULL AS SUPPLY_OBJID
|
||||
,NULL AS WRITER
|
||||
FROM
|
||||
PROJECT_MGMT AS PJT
|
||||
INNER JOIN BOM_PART_QTY AS BPQ
|
||||
ON PJT.BOM_REPORT_OBJID = BPQ.BOM_REPORT_OBJID::VARCHAR
|
||||
LEFT JOIN PART_MNG AS PM
|
||||
ON COALESCE(NULLIF(BPQ.LAST_PART_OBJID, ''), BPQ.PART_NO) = PM.OBJID::VARCHAR
|
||||
INNER JOIN BOM_PART_QTY AS BPQ
|
||||
ON PJT.BOM_REPORT_OBJID::VARCHAR = BPQ.BOM_REPORT_OBJID::VARCHAR
|
||||
LEFT JOIN PART_MGMT AS PM
|
||||
ON BPQ.PART_NO = PM.PART_NO
|
||||
WHERE 1=1
|
||||
AND PJT.OBJID = #{PROJECT_OBJID}
|
||||
AND PJT.OBJID::VARCHAR = #{PROJECT_OBJID}
|
||||
AND COALESCE(BPQ.STATUS, '') NOT IN ('deleting', 'deleted')
|
||||
AND PJT.BOM_REPORT_OBJID IS NOT NULL
|
||||
AND PJT.BOM_REPORT_OBJID != ''
|
||||
ORDER BY BPQ.SEQ, PM.PART_NO
|
||||
ORDER BY BPQ.SEQ
|
||||
</select>
|
||||
|
||||
<update id="mergeReceiptSalesRequestInfo" parameterType="map">
|
||||
@@ -2775,18 +2804,19 @@ UPDATE SET
|
||||
</update>
|
||||
|
||||
<!-- 구매리스트 관련 쿼리 -->
|
||||
<!-- M-BOM에서 가져온 PART_OBJID는 BPQ.PART_NO 값이므로 PART_MGMT.PART_NO와 조인 -->
|
||||
<select id="getSalesRequestPartList" parameterType="string" resultType="map">
|
||||
SELECT
|
||||
SRP.OBJID,
|
||||
SRP.PART_OBJID,
|
||||
PM.PART_NO,
|
||||
PM.PART_NAME,
|
||||
COALESCE(PM.PART_NO, '') AS PART_NO,
|
||||
COALESCE(PM.PART_NAME, '') AS PART_NAME,
|
||||
SRP.QTY,
|
||||
SRP.PARTNER_OBJID,
|
||||
SRP.PARTNER_PRICE
|
||||
FROM
|
||||
SALES_REQUEST_PART SRP
|
||||
LEFT JOIN PART_MNG PM ON SRP.PART_OBJID = PM.OBJID::VARCHAR
|
||||
LEFT JOIN PART_MGMT PM ON SRP.PART_OBJID = PM.PART_NO
|
||||
WHERE
|
||||
SRP.SALES_REQUEST_MASTER_OBJID = #{SALES_REQUEST_MASTER_OBJID}
|
||||
ORDER BY SRP.REGDATE
|
||||
@@ -2895,5 +2925,119 @@ UPDATE SET
|
||||
UNIT_PRICE = #{UNIT_PRICE},
|
||||
TOTAL_PRICE = #{TOTAL_PRICE}
|
||||
</update>
|
||||
|
||||
<!-- 구매리스트 상세 조회 (기존 저장된 데이터) -->
|
||||
<select id="getPurchaseListDetail" parameterType="map" resultType="map">
|
||||
<!-- SALES_REQUEST_PART에서 저장된 데이터 조회, PART_MNG에서 품목정보 가져옴 -->
|
||||
SELECT
|
||||
SRP.OBJID,
|
||||
SRP.SALES_REQUEST_MASTER_OBJID,
|
||||
SRP.PART_OBJID,
|
||||
COALESCE(PMG.PART_NO, '') AS PART_NO,
|
||||
COALESCE(PMG.PART_NAME, '') AS PART_NAME,
|
||||
SRP.QTY,
|
||||
0 AS ITEM_QTY,
|
||||
-- 파일 개수 (PART_MNG.OBJID 기준으로 조회)
|
||||
COALESCE((SELECT COUNT(1) FROM ATTACH_FILE_INFO WHERE TARGET_OBJID = PMG.OBJID AND DOC_TYPE IN ('3D_CAD') AND UPPER(STATUS) = 'ACTIVE'), 0) AS CU01_CNT,
|
||||
COALESCE((SELECT COUNT(1) FROM ATTACH_FILE_INFO WHERE TARGET_OBJID = PMG.OBJID AND DOC_TYPE IN ('2D_DRAWING_CAD') AND UPPER(STATUS) = 'ACTIVE'), 0) AS CU02_CNT,
|
||||
COALESCE((SELECT COUNT(1) FROM ATTACH_FILE_INFO WHERE TARGET_OBJID = PMG.OBJID AND DOC_TYPE IN ('2D_PDF_CAD') AND UPPER(STATUS) = 'ACTIVE'), 0) AS CU03_CNT,
|
||||
COALESCE(PMG.MATERIAL, '') AS MATERIAL,
|
||||
COALESCE(PMG.HEAT_TREATMENT_HARDNESS, '') AS HEAT_TREATMENT_HARDNESS,
|
||||
COALESCE(PMG.HEAT_TREATMENT_METHOD, '') AS HEAT_TREATMENT_METHOD,
|
||||
COALESCE(PMG.SURFACE_TREATMENT, '') AS SURFACE_TREATMENT,
|
||||
COALESCE(PMG.MAKER, '') AS VENDOR,
|
||||
COALESCE(PMG.PART_TYPE, '') AS PART_TYPE_TITLE,
|
||||
'' AS SUPPLY_TYPE,
|
||||
'' AS RAW_MATERIAL,
|
||||
'' AS SIZE,
|
||||
'' AS RAW_MATERIAL_NO,
|
||||
0 AS REQUIRED_QTY,
|
||||
0 AS ORDER_QTY,
|
||||
0 AS ITEM_QTY2,
|
||||
0 AS PRODUCTION_QTY,
|
||||
'' AS PROCESSING_VENDOR,
|
||||
NULL AS PROCESSING_DEADLINE,
|
||||
NULL AS GRINDING_DEADLINE,
|
||||
'Y' AS USE_YN,
|
||||
0 AS NET_QTY,
|
||||
0 AS PO_QTY,
|
||||
SRP.PARTNER_OBJID AS VENDOR_PM,
|
||||
COALESCE(NULLIF(SRP.PARTNER_PRICE, '')::numeric, 0) AS UNIT_PRICE,
|
||||
COALESCE(
|
||||
COALESCE(NULLIF(SRP.PARTNER_PRICE, '')::numeric, 0) * COALESCE(SRP.QTY::numeric, 0),
|
||||
0
|
||||
) AS TOTAL_PRICE,
|
||||
NULL AS PROPOSAL_DATE
|
||||
FROM
|
||||
SALES_REQUEST_PART SRP
|
||||
LEFT JOIN PART_MNG PMG ON SRP.PART_OBJID = PMG.OBJID::VARCHAR AND PMG.IS_LAST = '1'
|
||||
WHERE
|
||||
SRP.SALES_REQUEST_MASTER_OBJID = #{SALES_REQUEST_MASTER_OBJID}
|
||||
ORDER BY
|
||||
SRP.REGDATE
|
||||
</select>
|
||||
|
||||
<!-- M-BOM에서 구매리스트 데이터 가져오기 (BOM_PART_QTY 기본 데이터만) -->
|
||||
<select id="getMBomForPurchaseList" parameterType="map" resultType="map">
|
||||
<!-- MBOM_DETAIL + PART_MNG 조인하여 조회 -->
|
||||
SELECT
|
||||
ROW_NUMBER() OVER (ORDER BY MD.SEQ) AS ROW_NUM,
|
||||
MD.OBJID::VARCHAR AS OBJID,
|
||||
MH.OBJID::VARCHAR AS BOM_REPORT_OBJID,
|
||||
MD.PARENT_OBJID::VARCHAR AS PARENT_OBJID,
|
||||
MD.CHILD_OBJID::VARCHAR AS CHILD_OBJID,
|
||||
'' AS PARENT_PART_NO,
|
||||
MD.PART_OBJID::VARCHAR AS PART_OBJID,
|
||||
PM.OBJID::VARCHAR AS PM_OBJID,
|
||||
COALESCE(MD.PART_NO, PM.PART_NO, '') AS PART_NO,
|
||||
COALESCE(MD.PART_NAME, PM.PART_NAME, '') AS PART_NAME,
|
||||
COALESCE(MD.QTY, 0) AS QTY,
|
||||
COALESCE(MD.QTY, 0) AS ITEM_QTY,
|
||||
0 AS QTY_TEMP,
|
||||
MD.SEQ,
|
||||
COALESCE(MD.STATUS, '') AS STATUS,
|
||||
'' AS LAST_PART_OBJID,
|
||||
-- 파일 개수 (ATTACH_FILE_INFO에서 서브쿼리로 가져옴)
|
||||
COALESCE((SELECT COUNT(1) FROM ATTACH_FILE_INFO F WHERE PM.OBJID = F.TARGET_OBJID AND F.STATUS = 'Active' AND F.DOC_TYPE IN ('3D_CAD')), 0) AS CU01_CNT,
|
||||
COALESCE((SELECT COUNT(1) FROM ATTACH_FILE_INFO F WHERE PM.OBJID = F.TARGET_OBJID AND F.STATUS = 'Active' AND F.DOC_TYPE IN ('2D_DRAWING_CAD')), 0) AS CU02_CNT,
|
||||
COALESCE((SELECT COUNT(1) FROM ATTACH_FILE_INFO F WHERE PM.OBJID = F.TARGET_OBJID AND F.STATUS = 'Active' AND F.DOC_TYPE IN ('2D_PDF_CAD')), 0) AS CU03_CNT,
|
||||
-- E-BOM 컬럼들 (PART_MNG에서 가져옴) - 디버그용으로 원본값도 출력
|
||||
PM.HEAT_TREATMENT_HARDNESS AS PM_HEAT_RAW,
|
||||
PM.HEAT_TREATMENT_METHOD AS PM_METHOD_RAW,
|
||||
PM.SURFACE_TREATMENT AS PM_SURFACE_RAW,
|
||||
COALESCE(PM.MATERIAL, MD.RAW_MATERIAL, '') AS MATERIAL,
|
||||
COALESCE(PM.HEAT_TREATMENT_HARDNESS, '') AS HEAT_TREATMENT_HARDNESS,
|
||||
COALESCE(PM.HEAT_TREATMENT_METHOD, '') AS HEAT_TREATMENT_METHOD,
|
||||
COALESCE(PM.SURFACE_TREATMENT, '') AS SURFACE_TREATMENT,
|
||||
COALESCE(PM.MAKER, MD.VENDOR, '') AS VENDOR,
|
||||
COALESCE((SELECT CODE_NAME FROM COMM_CODE CC WHERE CC.CODE_ID = PM.PART_TYPE), '') AS PART_TYPE_TITLE,
|
||||
-- 생산관리 컬럼들 (MBOM_DETAIL에서 가져옴)
|
||||
COALESCE(MD.SUPPLY_TYPE, '') AS SUPPLY_TYPE,
|
||||
COALESCE(MD.RAW_MATERIAL, '') AS RAW_MATERIAL,
|
||||
COALESCE(MD.RAW_MATERIAL_SIZE, '') AS SIZE,
|
||||
COALESCE(MD.RAW_MATERIAL_PART_NO, '') AS RAW_MATERIAL_NO,
|
||||
COALESCE(MD.REQUIRED_QTY, 0) AS REQUIRED_QTY,
|
||||
COALESCE(MD.ORDER_QTY, 0) AS ORDER_QTY,
|
||||
COALESCE(MD.PRODUCTION_QTY, 0) AS PRODUCTION_QTY,
|
||||
COALESCE(MD.PROCESSING_VENDOR, '') AS PROCESSING_VENDOR,
|
||||
MD.PROCESSING_DEADLINE,
|
||||
MD.GRINDING_DEADLINE,
|
||||
-- 구매 컬럼들 (편집 가능)
|
||||
'Y' AS USE_YN,
|
||||
0 AS NET_QTY,
|
||||
0 AS PO_QTY,
|
||||
COALESCE(MD.VENDOR, '') AS VENDOR_PM,
|
||||
COALESCE(MD.UNIT_PRICE, 0) AS UNIT_PRICE,
|
||||
COALESCE(MD.TOTAL_PRICE, 0) AS TOTAL_PRICE,
|
||||
NULL AS PROPOSAL_DATE
|
||||
FROM
|
||||
MBOM_HEADER MH
|
||||
INNER JOIN MBOM_DETAIL MD ON MH.OBJID = MD.MBOM_HEADER_OBJID
|
||||
LEFT JOIN PART_MNG PM ON PM.OBJID::VARCHAR = MD.PART_OBJID::VARCHAR
|
||||
WHERE
|
||||
MH.PROJECT_OBJID = #{PROJECT_MGMT_OBJID}
|
||||
ORDER BY
|
||||
MD.SEQ
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
Reference in New Issue
Block a user