diff --git a/src/com/pms/salesmgmt/mapper/salesNcollectMgmt.xml b/src/com/pms/salesmgmt/mapper/salesNcollectMgmt.xml index 019f127..8b310ff 100644 --- a/src/com/pms/salesmgmt/mapper/salesNcollectMgmt.xml +++ b/src/com/pms/salesmgmt/mapper/salesNcollectMgmt.xml @@ -847,12 +847,11 @@ -- S/N: CONTRACT_ITEM_SERIAL(마스터) 우선, 없으면 판매등록 텍스트 fallback (콤마 구분 전체 목록) COALESCE( (SELECT STRING_AGG(CIS.SERIAL_NO, ',' ORDER BY CIS.SEQ) - FROM CONTRACT_ITEM CI - LEFT JOIN CONTRACT_ITEM_SERIAL CIS ON CI.OBJID = CIS.ITEM_OBJID AND UPPER(CIS.STATUS) = 'ACTIVE' - WHERE CI.CONTRACT_OBJID = T.CONTRACT_OBJID - AND CI.PART_OBJID = T.PART_OBJID - AND CI.STATUS = 'ACTIVE' - AND CIS.SERIAL_NO IS NOT NULL), + FROM CONTRACT_ITEM_SERIAL CIS + WHERE CIS.ITEM_OBJID::VARCHAR = T.CONTRACT_ITEM_OBJID + AND UPPER(CIS.STATUS) = 'ACTIVE' + AND CIS.SERIAL_NO IS NOT NULL + AND CIS.SERIAL_NO != ''), SR.serial_no ) AS SERIAL_NO, -- 분할S/N: shipment_log에서 해당 프로젝트의 모든 분할S/N 집계 @@ -1016,13 +1015,10 @@ AND EXISTS ( - SELECT 1 FROM CONTRACT_ITEM CI - JOIN CONTRACT_ITEM_SERIAL CIS ON CI.OBJID = CIS.ITEM_OBJID - WHERE CI.CONTRACT_OBJID = T.CONTRACT_OBJID - AND CI.PART_OBJID = T.PART_OBJID - AND CI.STATUS = 'ACTIVE' - AND UPPER(CIS.SERIAL_NO) LIKE UPPER(CONCAT('%', #{serialNo}, '%')) + SELECT 1 FROM CONTRACT_ITEM_SERIAL CIS + WHERE CIS.ITEM_OBJID::VARCHAR = T.CONTRACT_ITEM_OBJID AND UPPER(CIS.STATUS) = 'ACTIVE' + AND UPPER(CIS.SERIAL_NO) LIKE UPPER(CONCAT('%', #{serialNo}, '%')) ) @@ -1194,13 +1190,10 @@ ORDER BY T.REGDATE DESC, T.PROJECT_NO DESC AND EXISTS ( - SELECT 1 FROM CONTRACT_ITEM CI - JOIN CONTRACT_ITEM_SERIAL CIS ON CI.OBJID = CIS.ITEM_OBJID - WHERE CI.CONTRACT_OBJID = T.CONTRACT_OBJID - AND CI.PART_OBJID = T.PART_OBJID - AND CI.STATUS = 'ACTIVE' - AND UPPER(CIS.SERIAL_NO) LIKE UPPER(CONCAT('%', #{serialNo}, '%')) + SELECT 1 FROM CONTRACT_ITEM_SERIAL CIS + WHERE CIS.ITEM_OBJID::VARCHAR = T.CONTRACT_ITEM_OBJID AND UPPER(CIS.STATUS) = 'ACTIVE' + AND UPPER(CIS.SERIAL_NO) LIKE UPPER(CONCAT('%', #{serialNo}, '%')) ) @@ -1351,11 +1344,8 @@ ORDER BY T.REGDATE DESC, T.PROJECT_NO DESC AND ( EXISTS ( - SELECT 1 FROM CONTRACT_ITEM CI - JOIN CONTRACT_ITEM_SERIAL CIS ON CI.OBJID = CIS.ITEM_OBJID - WHERE CI.CONTRACT_OBJID = T.CONTRACT_OBJID - AND CI.PART_OBJID = T.PART_OBJID - AND CI.STATUS = 'ACTIVE' + SELECT 1 FROM CONTRACT_ITEM_SERIAL CIS + WHERE CIS.ITEM_OBJID::VARCHAR = T.CONTRACT_ITEM_OBJID AND UPPER(CIS.STATUS) = 'ACTIVE' AND UPPER(CIS.SERIAL_NO) LIKE UPPER('%' || #{serialNo} || '%') ) @@ -1567,12 +1557,11 @@ ORDER BY T.REGDATE DESC, T.PROJECT_NO DESC -- S/N: CONTRACT_ITEM_SERIAL(마스터) 우선, 전체 콤마 리스트 (판매등록 폼 파싱용) COALESCE( (SELECT STRING_AGG(CIS.SERIAL_NO, ', ' ORDER BY CIS.SERIAL_NO) - FROM CONTRACT_ITEM CI - LEFT JOIN CONTRACT_ITEM_SERIAL CIS ON CI.OBJID = CIS.ITEM_OBJID AND UPPER(CIS.STATUS) = 'ACTIVE' - WHERE CI.CONTRACT_OBJID = T.CONTRACT_OBJID - AND CI.PART_OBJID = T.PART_OBJID - AND CI.STATUS = 'ACTIVE' - AND CIS.SERIAL_NO IS NOT NULL), + FROM CONTRACT_ITEM_SERIAL CIS + WHERE CIS.ITEM_OBJID::VARCHAR = T.CONTRACT_ITEM_OBJID + AND UPPER(CIS.STATUS) = 'ACTIVE' + AND CIS.SERIAL_NO IS NOT NULL + AND CIS.SERIAL_NO != ''), SR.serial_no ) AS SERIAL_NO, COALESCE(NULLIF(REPLACE(T.QUANTITY, ',', ''), '')::numeric, 0) AS ORDER_QUANTITY, @@ -1723,11 +1712,11 @@ ORDER BY T.REGDATE DESC, T.PROJECT_NO DESC -- 기존 S/N (CONTRACT_ITEM_SERIAL 마스터에서 조회) COALESCE(( SELECT STRING_AGG(CIS2.SERIAL_NO, ',' ORDER BY CIS2.SEQ) - FROM CONTRACT_ITEM CI2 - JOIN CONTRACT_ITEM_SERIAL CIS2 ON CI2.OBJID = CIS2.ITEM_OBJID AND CIS2.STATUS = 'ACTIVE' - WHERE CI2.CONTRACT_OBJID = PM.CONTRACT_OBJID - AND CI2.PART_OBJID = PM.PART_OBJID - AND CI2.STATUS = 'ACTIVE' + FROM CONTRACT_ITEM_SERIAL CIS2 + WHERE CIS2.ITEM_OBJID::VARCHAR = PM.CONTRACT_ITEM_OBJID + AND UPPER(CIS2.STATUS) = 'ACTIVE' + AND CIS2.SERIAL_NO IS NOT NULL + AND CIS2.SERIAL_NO != '' ), '') AS SERIAL_NO FROM PROJECT_MGMT PM @@ -1805,13 +1794,11 @@ ORDER BY T.REGDATE DESC, T.PROJECT_NO DESC ) AS REQ_DEL_DATE, -- S/N 조회 (CONTRACT_ITEM_SERIAL에서) (SELECT STRING_AGG(CIS.SERIAL_NO, ', ' ORDER BY CIS.SERIAL_NO) - FROM CONTRACT_ITEM CI - JOIN CONTRACT_ITEM_SERIAL CIS ON CI.OBJID = CIS.ITEM_OBJID - WHERE CI.CONTRACT_OBJID = PM.CONTRACT_OBJID - AND CI.PART_OBJID = PM.PART_OBJID - AND CI.STATUS = 'ACTIVE' + FROM CONTRACT_ITEM_SERIAL CIS + WHERE CIS.ITEM_OBJID::VARCHAR = PM.CONTRACT_ITEM_OBJID AND UPPER(CIS.STATUS) = 'ACTIVE' AND CIS.SERIAL_NO IS NOT NULL + AND CIS.SERIAL_NO != '' ) AS SERIAL_NO, -- 고객요청사항 (CONTRACT_ITEM에서) (SELECT CI.CUSTOMER_REQUEST @@ -1994,10 +1981,12 @@ ORDER BY T.REGDATE DESC, T.PROJECT_NO DESC COALESCE(SL.shipping_status, '미등록') AS shipping_order_status, COALESCE(( SELECT STRING_AGG(CIS.SERIAL_NO, ',' ORDER BY CIS.SEQ) - FROM CONTRACT_ITEM CI - JOIN CONTRACT_ITEM_SERIAL CIS ON CI.OBJID = CIS.ITEM_OBJID AND CIS.STATUS = 'ACTIVE' - JOIN PROJECT_MGMT PM ON PM.CONTRACT_OBJID = CI.CONTRACT_OBJID AND PM.PART_OBJID = CI.PART_OBJID - WHERE PM.PROJECT_NO = SL.target_objid AND CI.STATUS = 'ACTIVE' + FROM CONTRACT_ITEM_SERIAL CIS + JOIN PROJECT_MGMT PM ON CIS.ITEM_OBJID::VARCHAR = PM.CONTRACT_ITEM_OBJID + WHERE PM.PROJECT_NO = SL.target_objid + AND UPPER(CIS.STATUS) = 'ACTIVE' + AND CIS.SERIAL_NO IS NOT NULL + AND CIS.SERIAL_NO != '' ), '-') AS serial_no, SL.target_objid AS project_no, COALESCE(SL.split_serial_no, '-') AS split_serial_no, @@ -2019,10 +2008,12 @@ ORDER BY T.REGDATE DESC, T.PROJECT_NO DESC COALESCE(SL.shipping_method, '') AS SHIPPING_METHOD, COALESCE(( SELECT STRING_AGG(CIS.SERIAL_NO, ',' ORDER BY CIS.SEQ) - FROM CONTRACT_ITEM CI - JOIN CONTRACT_ITEM_SERIAL CIS ON CI.OBJID = CIS.ITEM_OBJID AND CIS.STATUS = 'ACTIVE' - JOIN PROJECT_MGMT PM ON PM.CONTRACT_OBJID = CI.CONTRACT_OBJID AND PM.PART_OBJID = CI.PART_OBJID - WHERE PM.PROJECT_NO = SL.target_objid AND CI.STATUS = 'ACTIVE' + FROM CONTRACT_ITEM_SERIAL CIS + JOIN PROJECT_MGMT PM ON CIS.ITEM_OBJID::VARCHAR = PM.CONTRACT_ITEM_OBJID + WHERE PM.PROJECT_NO = SL.target_objid + AND UPPER(CIS.STATUS) = 'ACTIVE' + AND CIS.SERIAL_NO IS NOT NULL + AND CIS.SERIAL_NO != '' ), '') AS SERIAL_NO, COALESCE(SL.sales_unit_price, 0) AS SALES_UNIT_PRICE, COALESCE(SL.sales_supply_price, 0) AS SALES_SUPPLY_PRICE, @@ -2181,13 +2172,11 @@ ORDER BY T.REGDATE DESC, T.PROJECT_NO DESC /* salesNcollectMgmt.getAllSerialNumbers - 프로젝트의 모든 S/N 조회 */ SELECT CIS.SERIAL_NO FROM PROJECT_MGMT PM - JOIN CONTRACT_ITEM CI ON CI.CONTRACT_OBJID = PM.CONTRACT_OBJID - AND CI.PART_OBJID = PM.PART_OBJID - AND CI.STATUS = 'ACTIVE' - JOIN CONTRACT_ITEM_SERIAL CIS ON CI.OBJID = CIS.ITEM_OBJID + JOIN CONTRACT_ITEM_SERIAL CIS ON CIS.ITEM_OBJID::VARCHAR = PM.CONTRACT_ITEM_OBJID AND UPPER(CIS.STATUS) = 'ACTIVE' WHERE PM.PROJECT_NO = #{projectNo} AND CIS.SERIAL_NO IS NOT NULL + AND CIS.SERIAL_NO != '' ORDER BY CIS.SERIAL_NO @@ -2412,10 +2401,11 @@ ORDER BY T.REGDATE DESC, T.PROJECT_NO DESC T.PART_NAME AS PRODUCT_NAME, COALESCE(( SELECT STRING_AGG(CIS.SERIAL_NO, ',' ORDER BY CIS.SEQ) - FROM CONTRACT_ITEM CI - JOIN CONTRACT_ITEM_SERIAL CIS ON CI.OBJID = CIS.ITEM_OBJID AND CIS.STATUS = 'ACTIVE' - WHERE CI.CONTRACT_OBJID = T.CONTRACT_OBJID - AND CI.PART_OBJID = T.PART_OBJID AND CI.STATUS = 'ACTIVE' + FROM CONTRACT_ITEM_SERIAL CIS + WHERE CIS.ITEM_OBJID::VARCHAR = T.CONTRACT_ITEM_OBJID + AND UPPER(CIS.STATUS) = 'ACTIVE' + AND CIS.SERIAL_NO IS NOT NULL + AND CIS.SERIAL_NO != '' ), '') AS SERIAL_NO, COALESCE(SL.split_serial_no, '') AS SPLIT_SERIAL_NO, COALESCE(NULLIF(REPLACE(T.QUANTITY, ',', ''), '')::numeric, 0) AS ORDER_QUANTITY, @@ -2482,13 +2472,10 @@ ORDER BY T.REGDATE DESC, T.PROJECT_NO DESC AND EXISTS ( - SELECT 1 FROM CONTRACT_ITEM CI - JOIN CONTRACT_ITEM_SERIAL CIS ON CI.OBJID = CIS.ITEM_OBJID - WHERE CI.CONTRACT_OBJID = T.CONTRACT_OBJID - AND CI.PART_OBJID = T.PART_OBJID - AND CI.STATUS = 'ACTIVE' - AND UPPER(CIS.SERIAL_NO) LIKE UPPER(CONCAT('%', #{serialNo}, '%')) + SELECT 1 FROM CONTRACT_ITEM_SERIAL CIS + WHERE CIS.ITEM_OBJID::VARCHAR = T.CONTRACT_ITEM_OBJID AND UPPER(CIS.STATUS) = 'ACTIVE' + AND UPPER(CIS.SERIAL_NO) LIKE UPPER(CONCAT('%', #{serialNo}, '%')) ) @@ -2573,13 +2560,10 @@ ORDER BY T.REGDATE DESC, T.PROJECT_NO DESC AND EXISTS ( - SELECT 1 FROM CONTRACT_ITEM CI - JOIN CONTRACT_ITEM_SERIAL CIS ON CI.OBJID = CIS.ITEM_OBJID - WHERE CI.CONTRACT_OBJID = T.CONTRACT_OBJID - AND CI.PART_OBJID = T.PART_OBJID - AND CI.STATUS = 'ACTIVE' - AND UPPER(CIS.SERIAL_NO) LIKE UPPER(CONCAT('%', #{serialNo}, '%')) + SELECT 1 FROM CONTRACT_ITEM_SERIAL CIS + WHERE CIS.ITEM_OBJID::VARCHAR = T.CONTRACT_ITEM_OBJID AND UPPER(CIS.STATUS) = 'ACTIVE' + AND UPPER(CIS.SERIAL_NO) LIKE UPPER(CONCAT('%', #{serialNo}, '%')) ) @@ -2649,10 +2633,9 @@ ORDER BY T.REGDATE DESC, T.PROJECT_NO DESC AND EXISTS ( - SELECT 1 FROM CONTRACT_ITEM CI - JOIN CONTRACT_ITEM_SERIAL CIS ON CI.OBJID = CIS.ITEM_OBJID - WHERE CI.CONTRACT_OBJID = T.CONTRACT_OBJID AND CI.PART_OBJID = T.PART_OBJID - AND CI.STATUS = 'ACTIVE' AND UPPER(CIS.STATUS) = 'ACTIVE' + SELECT 1 FROM CONTRACT_ITEM_SERIAL CIS + WHERE CIS.ITEM_OBJID::VARCHAR = T.CONTRACT_ITEM_OBJID + AND UPPER(CIS.STATUS) = 'ACTIVE' AND UPPER(CIS.SERIAL_NO) LIKE UPPER('%' || #{serialNo} || '%') )