From dff92cedf77efb84c262aa9afdc4e0daaec42627 Mon Sep 17 00:00:00 2001 From: Johngreen Date: Thu, 23 Oct 2025 15:52:53 +0900 Subject: [PATCH 1/2] =?UTF-8?q?=ED=94=84=EB=A1=9C=EC=A0=9D=ED=8A=B8?= =?UTF-8?q?=EA=B4=80=EB=A6=AC=5F=EC=9D=BC=EC=A0=95=EA=B4=80=EB=A6=AC?= =?UTF-8?q?=EC=97=85=EB=8D=B0=EC=9D=B4=ED=8A=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../classes/com/pms/mapper/project.xml | 33 ++++++++++++---- .../salesmgmt/mapper/salesNcollectMgmt.xml | 30 +++++++------- .../view/project/projectMgmtWbsList3.jsp | 39 ++++++++++--------- src/com/pms/mapper/project.xml | 33 ++++++++++++---- .../salesmgmt/mapper/salesNcollectMgmt.xml | 30 +++++++------- 5 files changed, 102 insertions(+), 63 deletions(-) diff --git a/WebContent/WEB-INF/classes/com/pms/mapper/project.xml b/WebContent/WEB-INF/classes/com/pms/mapper/project.xml index f7fe02c..603070b 100644 --- a/WebContent/WEB-INF/classes/com/pms/mapper/project.xml +++ b/WebContent/WEB-INF/classes/com/pms/mapper/project.xml @@ -3916,14 +3916,31 @@ ELSE O.PAID_TYPE END FROM CONTRACT_MGMT AS O WHERE O.OBJID = T.CONTRACT_OBJID) AS FREE_OF_CHARGE - ,(SELECT SUM(O.QUANTITY) FROM CONTRACT_ITEM AS O WHERE O.CONTRACT_OBJID = T.CONTRACT_OBJID) AS CONTRACT_QTY - ,(SELECT STRING_AGG(O.PART_NO, ', ' ORDER BY O.SEQ) FROM CONTRACT_ITEM AS O WHERE O.CONTRACT_OBJID = T.CONTRACT_OBJID AND O.PART_NO IS NOT NULL AND O.PART_NO != '') AS PRODUCT_ITEM_CODE - ,(SELECT STRING_AGG(O.PART_NAME, ', ' ORDER BY O.SEQ) FROM CONTRACT_ITEM AS O WHERE O.CONTRACT_OBJID = T.CONTRACT_OBJID AND O.PART_NAME IS NOT NULL AND O.PART_NAME != '') AS PRODUCT_ITEM_NAME - ,(SELECT STRING_AGG(S.SERIAL_NO, ', ' ORDER BY S.SEQ) - FROM CONTRACT_ITEM AS I - LEFT JOIN CONTRACT_ITEM_SERIAL AS S ON S.ITEM_OBJID = I.OBJID AND S.STATUS = 'ACTIVE' - WHERE I.CONTRACT_OBJID = T.CONTRACT_OBJID - AND S.SERIAL_NO IS NOT NULL) AS SERIAL_NO + ,COALESCE(T.QUANTITY::numeric, 0) AS CONTRACT_QTY + ,T.PART_NO AS PRODUCT_ITEM_CODE + ,T.PART_NAME AS PRODUCT_ITEM_NAME + -- S/N: 해당 품목의 시리얼 번호 (여러 개일 경우 "S/N 외 N건" 형식) + ,(SELECT + CASE + WHEN COUNT(*) = 0 THEN '' + WHEN COUNT(*) = 1 THEN MIN(S.SERIAL_NO) + ELSE MIN(S.SERIAL_NO) || ' 외 ' || (COUNT(*) - 1)::TEXT || '건' + END + FROM CONTRACT_ITEM AS I + LEFT JOIN CONTRACT_ITEM_SERIAL AS S ON S.ITEM_OBJID = I.OBJID AND S.STATUS = 'ACTIVE' + WHERE I.CONTRACT_OBJID = T.CONTRACT_OBJID + AND I.PART_OBJID = T.PART_OBJID + AND S.SERIAL_NO IS NOT NULL) AS SERIAL_NO + -- 요청납기: CONTRACT_ITEM 우선, 없으면 PROJECT_MGMT.DUE_DATE, 없으면 CONTRACT_MGMT.due_date + ,COALESCE( + (SELECT CI.DUE_DATE + FROM CONTRACT_ITEM CI + WHERE CI.CONTRACT_OBJID = T.CONTRACT_OBJID + AND CI.PART_OBJID = T.PART_OBJID + AND CI.STATUS = 'ACTIVE'), + T.DUE_DATE, + (SELECT CM.due_date FROM CONTRACT_MGMT CM WHERE CM.OBJID = T.CONTRACT_OBJID) + ) AS REQ_DEL_DATE -- 영업관리_주문서관리_수주등록 ,EBOM_STATUS ,MBOM_STATUS diff --git a/WebContent/WEB-INF/classes/com/pms/salesmgmt/mapper/salesNcollectMgmt.xml b/WebContent/WEB-INF/classes/com/pms/salesmgmt/mapper/salesNcollectMgmt.xml index 198e1de..47617f2 100644 --- a/WebContent/WEB-INF/classes/com/pms/salesmgmt/mapper/salesNcollectMgmt.xml +++ b/WebContent/WEB-INF/classes/com/pms/salesmgmt/mapper/salesNcollectMgmt.xml @@ -833,7 +833,7 @@ FROM CONTRACT_MGMT CM WHERE CM.OBJID = T.CONTRACT_OBJID) AS PAYMENT_TYPE, T.PART_NO AS PRODUCT_NO, T.PART_NAME AS PRODUCT_NAME, - -- S/N: CONTRACT_ITEM_SERIAL에서만 조회 (품목별로 정확하게 매칭) + -- S/N: 해당 품목의 시리얼 번호 (여러 개일 경우 "S/N 외 N건" 형식) (SELECT CASE WHEN COUNT(*) = 0 THEN '' @@ -841,11 +841,10 @@ ELSE MIN(CIS.SERIAL_NO) || ' 외 ' || (COUNT(*) - 1)::TEXT || '건' END FROM CONTRACT_ITEM CI - LEFT JOIN CONTRACT_ITEM_SERIAL CIS ON CI.OBJID = CIS.ITEM_OBJID + 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 UPPER(CIS.STATUS) = 'ACTIVE' AND CIS.SERIAL_NO IS NOT NULL) AS SERIAL_NO, COALESCE(T.QUANTITY::numeric, 0) AS ORDER_QUANTITY, -- 요청납기: CONTRACT_ITEM 우선, 없으면 PROJECT_MGMT, 없으면 CONTRACT_MGMT @@ -979,7 +978,7 @@ /* INCOTERMS 필드 없음 - 검색 조건 무시 */ - ORDER BY T.REGDATE DESC + ORDER BY SUBSTRING(T.PROJECT_NO, POSITION('-' IN T.PROJECT_NO)+1) DESC, T.REGDATE DESC @@ -1328,16 +1327,19 @@ FROM CONTRACT_MGMT CM WHERE CM.OBJID = T.CONTRACT_OBJID) AS PAYMENT_TYPE, T.PART_NO AS PRODUCT_NO, T.PART_NAME AS PRODUCT_NAME, - -- S/N 정보 (CONTRACT_ITEM_SERIAL에서만 조회, 품목별로 정확하게 매칭) - (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 - WHERE CI.CONTRACT_OBJID = T.CONTRACT_OBJID - AND CI.PART_OBJID = T.PART_OBJID - AND CI.STATUS = 'ACTIVE' - AND UPPER(CIS.STATUS) = 'ACTIVE' - AND CIS.SERIAL_NO IS NOT NULL - ) AS SERIAL_NO, + -- S/N: 해당 품목의 시리얼 번호 (여러 개일 경우 "S/N 외 N건" 형식) + (SELECT + CASE + WHEN COUNT(*) = 0 THEN '' + WHEN COUNT(*) = 1 THEN MIN(CIS.SERIAL_NO) + ELSE MIN(CIS.SERIAL_NO) || ' 외 ' || (COUNT(*) - 1)::TEXT || '건' + END + 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) AS SERIAL_NO, COALESCE(T.QUANTITY::numeric, 0) AS ORDER_QUANTITY, -- 요청납기: CONTRACT_ITEM 우선, 없으면 PROJECT_MGMT, 없으면 CONTRACT_MGMT COALESCE( diff --git a/WebContent/WEB-INF/view/project/projectMgmtWbsList3.jsp b/WebContent/WEB-INF/view/project/projectMgmtWbsList3.jsp index 4bd8c5a..0737718 100644 --- a/WebContent/WEB-INF/view/project/projectMgmtWbsList3.jsp +++ b/WebContent/WEB-INF/view/project/projectMgmtWbsList3.jsp @@ -67,7 +67,8 @@ $(document).ready(function(){ var columns = [ {title:'CATEGORY_CD' ,field:'CATEGORY_CD' ,visible:false}, - {headerHozAlign : 'center', hozAlign : 'left', width : '100', title : '프로젝트번호', field : 'PROJECT_NO' ,frozen:true, + {headerHozAlign : 'center', hozAlign : 'left', width : '140', title : '프로젝트번호', field : 'PROJECT_NO' ,frozen:true, + sorter:"string", formatter:fnc_createGridAnchorTag, cellClick:function(e, cell){ var objid = fnc_checkNull(cell.getData().OBJID); @@ -77,54 +78,54 @@ var columns = [ {title:"프로젝트정보", headerHozAlign:'center', //고객정보 columns:[ - {headerHozAlign : 'center', hozAlign : 'center', width : '80', title : '주문유형', field : 'CATEGORY_NAME' }, - {headerHozAlign : 'center', hozAlign : 'left', width : '90', title : '제품구분', field : 'PRODUCT_NAME' }, - {headerHozAlign : 'center', hozAlign : 'center', width : '80', title : '국내/해외', field : 'AREA_NAME' }, - {headerHozAlign : 'center', hozAlign : 'center', width : '90', title : '접수일', field : 'REG_DATE' }, - {headerHozAlign : 'center', hozAlign : 'left', width : '120', title : '고객사', field : 'CUSTOMER_NAME' }, - {headerHozAlign : 'center', hozAlign : 'center', width : '80', title : '유/무상', field : 'FREE_OF_CHARGE'}, - {headerHozAlign : 'center', hozAlign : 'left', width : '150', title : '품번', field : 'PRODUCT_ITEM_CODE' }, - {headerHozAlign : 'center', hozAlign : 'left', width : '150', title : '품명', field : 'PRODUCT_ITEM_NAME' }, - {headerHozAlign : 'center', hozAlign : 'left', width : '150', title : 'S/N', field : 'SERIAL_NO' }, - {headerHozAlign : 'center', hozAlign : 'right', width : '90', title : '수주수량', field : 'CONTRACT_QTY' }, - {headerHozAlign : 'center', hozAlign : 'center', width : '90', title : '요청납기', field : 'REQ_DEL_DATE' } + {headerHozAlign : 'center', hozAlign : 'center', width : '80', title : '주문유형', field : 'CATEGORY_NAME', sorter:"string" }, + {headerHozAlign : 'center', hozAlign : 'left', width : '90', title : '제품구분', field : 'PRODUCT_NAME', sorter:"string" }, + {headerHozAlign : 'center', hozAlign : 'center', width : '80', title : '국내/해외', field : 'AREA_NAME', sorter:"string" }, + {headerHozAlign : 'center', hozAlign : 'center', width : '90', title : '접수일', field : 'REG_DATE', sorter:"date", sorterParams:{format:"YYYY-MM-DD"} }, + {headerHozAlign : 'center', hozAlign : 'left', width : '120', title : '고객사', field : 'CUSTOMER_NAME', sorter:"string" }, + {headerHozAlign : 'center', hozAlign : 'center', width : '80', title : '유/무상', field : 'FREE_OF_CHARGE', sorter:"string"}, + {headerHozAlign : 'center', hozAlign : 'left', width : '150', title : '품번', field : 'PRODUCT_ITEM_CODE', sorter:"string" }, + {headerHozAlign : 'center', hozAlign : 'left', width : '150', title : '품명', field : 'PRODUCT_ITEM_NAME', sorter:"string" }, + {headerHozAlign : 'center', hozAlign : 'left', width : '150', title : 'S/N', field : 'SERIAL_NO', sorter:"string" }, + {headerHozAlign : 'center', hozAlign : 'right', width : '90', title : '수주수량', field : 'CONTRACT_QTY', sorter:"number" }, + {headerHozAlign : 'center', hozAlign : 'center', width : '90', title : '요청납기', field : 'REQ_DEL_DATE', sorter:"date", sorterParams:{format:"YYYY-MM-DD"} } ], }, { title:'설계', headerHozAlign:'center', columns:[ - {headerHozAlign : 'center', hozAlign : 'center', width : '90', title : 'E-BOM', field : 'EBOM_STATUS'} + {headerHozAlign : 'center', hozAlign : 'center', width : '90', title : 'E-BOM', field : 'EBOM_STATUS', sorter:"string"} ] }, { title:'생산관리', headerHozAlign:'center', columns:[ - {headerHozAlign : 'center', hozAlign : 'center', width : '90', title : 'M-BOM', field : 'MBOM_STATUS'} + {headerHozAlign : 'center', hozAlign : 'center', width : '90', title : 'M-BOM', field : 'MBOM_STATUS', sorter:"string"} ] }, { title:'구매', headerHozAlign:'center', columns:[ - {headerHozAlign : 'center', hozAlign : 'center', width : '90', title : '발주일', field : 'ORDER_DATE'}, - {headerHozAlign : 'center', hozAlign : 'center', width : '90', title : '입고율', field : 'RECEIVING_RATE'} + {headerHozAlign : 'center', hozAlign : 'center', width : '90', title : '발주일', field : 'ORDER_DATE', sorter:"date", sorterParams:{format:"YYYY-MM-DD"}}, + {headerHozAlign : 'center', hozAlign : 'center', width : '90', title : '입고율', field : 'RECEIVING_RATE', sorter:"number"} ] }, { title:'생산', headerHozAlign:'center', columns:[ - {headerHozAlign : 'center', hozAlign : 'center', width : '90', title : '제조1,2팀', field : 'PRODUCTION_TEAM_12'}, - {headerHozAlign : 'center', hozAlign : 'center', width : '90', title : '제조3팀', field : 'PRODUCTION_TEAM_3'} + {headerHozAlign : 'center', hozAlign : 'center', width : '90', title : '제조1,2팀', field : 'PRODUCTION_TEAM_12', sorter:"string"}, + {headerHozAlign : 'center', hozAlign : 'center', width : '90', title : '제조3팀', field : 'PRODUCTION_TEAM_3', sorter:"string"} ] }, { title:'출하', headerHozAlign:'center', columns:[ - {headerHozAlign : 'center', hozAlign : 'center', width : '90', title : '출하일', field : 'SHIPMENT_DATE'} + {headerHozAlign : 'center', hozAlign : 'center', width : '90', title : '출하일', field : 'SHIPMENT_DATE', sorter:"date", sorterParams:{format:"YYYY-MM-DD"}} ] } ]; diff --git a/src/com/pms/mapper/project.xml b/src/com/pms/mapper/project.xml index f7fe02c..603070b 100644 --- a/src/com/pms/mapper/project.xml +++ b/src/com/pms/mapper/project.xml @@ -3916,14 +3916,31 @@ ELSE O.PAID_TYPE END FROM CONTRACT_MGMT AS O WHERE O.OBJID = T.CONTRACT_OBJID) AS FREE_OF_CHARGE - ,(SELECT SUM(O.QUANTITY) FROM CONTRACT_ITEM AS O WHERE O.CONTRACT_OBJID = T.CONTRACT_OBJID) AS CONTRACT_QTY - ,(SELECT STRING_AGG(O.PART_NO, ', ' ORDER BY O.SEQ) FROM CONTRACT_ITEM AS O WHERE O.CONTRACT_OBJID = T.CONTRACT_OBJID AND O.PART_NO IS NOT NULL AND O.PART_NO != '') AS PRODUCT_ITEM_CODE - ,(SELECT STRING_AGG(O.PART_NAME, ', ' ORDER BY O.SEQ) FROM CONTRACT_ITEM AS O WHERE O.CONTRACT_OBJID = T.CONTRACT_OBJID AND O.PART_NAME IS NOT NULL AND O.PART_NAME != '') AS PRODUCT_ITEM_NAME - ,(SELECT STRING_AGG(S.SERIAL_NO, ', ' ORDER BY S.SEQ) - FROM CONTRACT_ITEM AS I - LEFT JOIN CONTRACT_ITEM_SERIAL AS S ON S.ITEM_OBJID = I.OBJID AND S.STATUS = 'ACTIVE' - WHERE I.CONTRACT_OBJID = T.CONTRACT_OBJID - AND S.SERIAL_NO IS NOT NULL) AS SERIAL_NO + ,COALESCE(T.QUANTITY::numeric, 0) AS CONTRACT_QTY + ,T.PART_NO AS PRODUCT_ITEM_CODE + ,T.PART_NAME AS PRODUCT_ITEM_NAME + -- S/N: 해당 품목의 시리얼 번호 (여러 개일 경우 "S/N 외 N건" 형식) + ,(SELECT + CASE + WHEN COUNT(*) = 0 THEN '' + WHEN COUNT(*) = 1 THEN MIN(S.SERIAL_NO) + ELSE MIN(S.SERIAL_NO) || ' 외 ' || (COUNT(*) - 1)::TEXT || '건' + END + FROM CONTRACT_ITEM AS I + LEFT JOIN CONTRACT_ITEM_SERIAL AS S ON S.ITEM_OBJID = I.OBJID AND S.STATUS = 'ACTIVE' + WHERE I.CONTRACT_OBJID = T.CONTRACT_OBJID + AND I.PART_OBJID = T.PART_OBJID + AND S.SERIAL_NO IS NOT NULL) AS SERIAL_NO + -- 요청납기: CONTRACT_ITEM 우선, 없으면 PROJECT_MGMT.DUE_DATE, 없으면 CONTRACT_MGMT.due_date + ,COALESCE( + (SELECT CI.DUE_DATE + FROM CONTRACT_ITEM CI + WHERE CI.CONTRACT_OBJID = T.CONTRACT_OBJID + AND CI.PART_OBJID = T.PART_OBJID + AND CI.STATUS = 'ACTIVE'), + T.DUE_DATE, + (SELECT CM.due_date FROM CONTRACT_MGMT CM WHERE CM.OBJID = T.CONTRACT_OBJID) + ) AS REQ_DEL_DATE -- 영업관리_주문서관리_수주등록 ,EBOM_STATUS ,MBOM_STATUS diff --git a/src/com/pms/salesmgmt/mapper/salesNcollectMgmt.xml b/src/com/pms/salesmgmt/mapper/salesNcollectMgmt.xml index 198e1de..47617f2 100644 --- a/src/com/pms/salesmgmt/mapper/salesNcollectMgmt.xml +++ b/src/com/pms/salesmgmt/mapper/salesNcollectMgmt.xml @@ -833,7 +833,7 @@ FROM CONTRACT_MGMT CM WHERE CM.OBJID = T.CONTRACT_OBJID) AS PAYMENT_TYPE, T.PART_NO AS PRODUCT_NO, T.PART_NAME AS PRODUCT_NAME, - -- S/N: CONTRACT_ITEM_SERIAL에서만 조회 (품목별로 정확하게 매칭) + -- S/N: 해당 품목의 시리얼 번호 (여러 개일 경우 "S/N 외 N건" 형식) (SELECT CASE WHEN COUNT(*) = 0 THEN '' @@ -841,11 +841,10 @@ ELSE MIN(CIS.SERIAL_NO) || ' 외 ' || (COUNT(*) - 1)::TEXT || '건' END FROM CONTRACT_ITEM CI - LEFT JOIN CONTRACT_ITEM_SERIAL CIS ON CI.OBJID = CIS.ITEM_OBJID + 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 UPPER(CIS.STATUS) = 'ACTIVE' AND CIS.SERIAL_NO IS NOT NULL) AS SERIAL_NO, COALESCE(T.QUANTITY::numeric, 0) AS ORDER_QUANTITY, -- 요청납기: CONTRACT_ITEM 우선, 없으면 PROJECT_MGMT, 없으면 CONTRACT_MGMT @@ -979,7 +978,7 @@ /* INCOTERMS 필드 없음 - 검색 조건 무시 */ - ORDER BY T.REGDATE DESC + ORDER BY SUBSTRING(T.PROJECT_NO, POSITION('-' IN T.PROJECT_NO)+1) DESC, T.REGDATE DESC @@ -1328,16 +1327,19 @@ FROM CONTRACT_MGMT CM WHERE CM.OBJID = T.CONTRACT_OBJID) AS PAYMENT_TYPE, T.PART_NO AS PRODUCT_NO, T.PART_NAME AS PRODUCT_NAME, - -- S/N 정보 (CONTRACT_ITEM_SERIAL에서만 조회, 품목별로 정확하게 매칭) - (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 - WHERE CI.CONTRACT_OBJID = T.CONTRACT_OBJID - AND CI.PART_OBJID = T.PART_OBJID - AND CI.STATUS = 'ACTIVE' - AND UPPER(CIS.STATUS) = 'ACTIVE' - AND CIS.SERIAL_NO IS NOT NULL - ) AS SERIAL_NO, + -- S/N: 해당 품목의 시리얼 번호 (여러 개일 경우 "S/N 외 N건" 형식) + (SELECT + CASE + WHEN COUNT(*) = 0 THEN '' + WHEN COUNT(*) = 1 THEN MIN(CIS.SERIAL_NO) + ELSE MIN(CIS.SERIAL_NO) || ' 외 ' || (COUNT(*) - 1)::TEXT || '건' + END + 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) AS SERIAL_NO, COALESCE(T.QUANTITY::numeric, 0) AS ORDER_QUANTITY, -- 요청납기: CONTRACT_ITEM 우선, 없으면 PROJECT_MGMT, 없으면 CONTRACT_MGMT COALESCE( -- 2.49.1 From 1185aa491f09791d16afab48fdb87b8161976a58 Mon Sep 17 00:00:00 2001 From: Johngreen Date: Thu, 23 Oct 2025 16:20:00 +0900 Subject: [PATCH 2/2] =?UTF-8?q?=ED=94=84=EB=A1=9C=EC=A0=9D=ED=8A=B8?= =?UTF-8?q?=EA=B4=80=EB=A6=AC=5F=EC=9D=BC=EC=A0=95=EA=B4=80=EB=A6=AC(WBS)3?= =?UTF-8?q?=ED=8E=98=EC=9D=B4=EC=A7=80=20=EC=B6=9C=ED=95=98=EC=9D=BC=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../WEB-INF/classes/com/pms/mapper/project.xml | 12 +++++++++--- src/com/pms/mapper/project.xml | 12 +++++++++--- 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/WebContent/WEB-INF/classes/com/pms/mapper/project.xml b/WebContent/WEB-INF/classes/com/pms/mapper/project.xml index 603070b..c149926 100644 --- a/WebContent/WEB-INF/classes/com/pms/mapper/project.xml +++ b/WebContent/WEB-INF/classes/com/pms/mapper/project.xml @@ -3946,9 +3946,15 @@ ,MBOM_STATUS ,(SELECT O.PURCHASE_DATE FROM PURCHASE_ORDER_MASTER AS O WHERE O.CONTRACT_MGMT_OBJID = T.CONTRACT_OBJID LIMIT 1) AS ORDER_DATE ,RECEIVING_RATE - ,PRODUCTION_TEAM_12 - ,PRODUCTION_TEAM_3 - ,(SELECT O.SHIPPING_DATE::TEXT FROM SHIPMENT_LOG AS O WHERE O.TARGET_OBJID = T.CONTRACT_OBJID LIMIT 1) AS SHIPMENT_DATE + ,PRODUCTION_TEAM_12 + ,PRODUCTION_TEAM_3 + -- 출하일: sales_registration 테이블에서 가져오기 (영업관리_판매관리와 동일) + ,COALESCE( + (SELECT TO_CHAR(SR.shipping_date, 'YYYY-MM-DD') + FROM sales_registration SR + WHERE SR.project_no = T.PROJECT_NO), + '' + ) AS SHIPMENT_DATE ,(((SELECT SUM(COALESCE(DESIGN_RATE,'0')::INTEGER) / COUNT(1) FROM PMS_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID) +(SELECT SUM(COALESCE(PURCHASE_RATE,'0')::INTEGER) / COUNT(1) FROM PMS_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID) +(SELECT SUM(COALESCE(PRODUCE_RATE,'0')::INTEGER) / COUNT(1) FROM PMS_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID) diff --git a/src/com/pms/mapper/project.xml b/src/com/pms/mapper/project.xml index 603070b..c149926 100644 --- a/src/com/pms/mapper/project.xml +++ b/src/com/pms/mapper/project.xml @@ -3946,9 +3946,15 @@ ,MBOM_STATUS ,(SELECT O.PURCHASE_DATE FROM PURCHASE_ORDER_MASTER AS O WHERE O.CONTRACT_MGMT_OBJID = T.CONTRACT_OBJID LIMIT 1) AS ORDER_DATE ,RECEIVING_RATE - ,PRODUCTION_TEAM_12 - ,PRODUCTION_TEAM_3 - ,(SELECT O.SHIPPING_DATE::TEXT FROM SHIPMENT_LOG AS O WHERE O.TARGET_OBJID = T.CONTRACT_OBJID LIMIT 1) AS SHIPMENT_DATE + ,PRODUCTION_TEAM_12 + ,PRODUCTION_TEAM_3 + -- 출하일: sales_registration 테이블에서 가져오기 (영업관리_판매관리와 동일) + ,COALESCE( + (SELECT TO_CHAR(SR.shipping_date, 'YYYY-MM-DD') + FROM sales_registration SR + WHERE SR.project_no = T.PROJECT_NO), + '' + ) AS SHIPMENT_DATE ,(((SELECT SUM(COALESCE(DESIGN_RATE,'0')::INTEGER) / COUNT(1) FROM PMS_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID) +(SELECT SUM(COALESCE(PURCHASE_RATE,'0')::INTEGER) / COUNT(1) FROM PMS_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID) +(SELECT SUM(COALESCE(PRODUCE_RATE,'0')::INTEGER) / COUNT(1) FROM PMS_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID) -- 2.49.1