From f944e754b6be242a911840ef8b1ff39131375d96 Mon Sep 17 00:00:00 2001 From: Johngreen Date: Tue, 28 Oct 2025 11:02:44 +0900 Subject: [PATCH] =?UTF-8?q?E-BOM=20List,=20=EC=A0=9C=ED=92=88=EA=B4=80?= =?UTF-8?q?=EB=A6=AC=5FPART=20=EB=93=B1=EB=A1=9D=ED=8E=98=EC=9D=B4?= =?UTF-8?q?=EC=A7=80=20=EC=86=8D=EB=8F=84=EA=B0=9C=EC=84=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../WEB-INF/view/partMng/structureList.jsp | 24 ++- src/com/pms/mapper/partMng.xml | 196 ++++++++++++------ 2 files changed, 150 insertions(+), 70 deletions(-) diff --git a/WebContent/WEB-INF/view/partMng/structureList.jsp b/WebContent/WEB-INF/view/partMng/structureList.jsp index d6535f9..d628d2c 100644 --- a/WebContent/WEB-INF/view/partMng/structureList.jsp +++ b/WebContent/WEB-INF/view/partMng/structureList.jsp @@ -180,9 +180,31 @@ var columns = [ {headerHozAlign : 'center', hozAlign : 'center', width : '200', title : '상태', field : 'STATUS' } ]; +// 중복 요청 방지를 위한 로딩 플래그 +var isSearching = false; + //var grid; function fn_search(){ - _tabulGrid = fnc_tabul_search(_tabul_layout_fitColumns, _tabulGrid, "/partMng/searchStructureGridList.do", columns, true); + // 이미 검색 중이면 중복 요청 방지 + if (isSearching) { + console.log('검색 중입니다. 잠시만 기다려주세요.'); + return; + } + + isSearching = true; + + // 기존 그리드 검색 함수 실행 + _tabulGrid = fnc_tabul_search(_tabul_layout_fitColumns, _tabulGrid, "/partMng/searchStructureGridList.do", columns, true, function() { + // 검색 완료 후 플래그 해제 + isSearching = false; + }); + + // fnc_tabul_search가 콜백을 지원하지 않을 경우를 위한 타임아웃 처리 + setTimeout(function() { + if (isSearching) { + isSearching = false; + } + }, 10000); // 10초 타임아웃 } //양산제품에 해당하는 SPEC 정보 목록을 가져온다. diff --git a/src/com/pms/mapper/partMng.xml b/src/com/pms/mapper/partMng.xml index 79b5912..89a0aee 100644 --- a/src/com/pms/mapper/partMng.xml +++ b/src/com/pms/mapper/partMng.xml @@ -97,8 +97,8 @@ P.PART_NO, P.PART_NAME, P.UNIT, - (SELECT CODE_NAME FROM COMM_CODE CC WHERE 1=1 AND CODE_ID = P.UNIT) AS UNIT_TITLE, - NVL((SELECT QTY FROM BOM_PART_QTY Q WHERE Q.LAST_PART_OBJID = P.OBJID AND STATUS = 'deploy' ORDER BY DEPLOY_DATE DESC LIMIT 1), P.QTY) QTY, + CC_UNIT.CODE_NAME AS UNIT_TITLE, + COALESCE(BOM_QTY_DATA.QTY, P.QTY) QTY, P.QTY QTY_P, P.SPEC, P.POST_PROCESSING, @@ -106,19 +106,14 @@ P.WEIGHT, P.PART_TYPE, P.IS_LONGD, - (SELECT CODE_NAME FROM COMM_CODE CC WHERE 1=1 AND CODE_ID = P.PART_TYPE) AS PART_TYPE_TITLE, + CC_PART.CODE_NAME AS PART_TYPE_TITLE, P.REMARK, P.ES_SPEC, P.MS_SPEC, P.CHANGE_TYPE, P.DESIGN_APPLY_POINT, P.CHANGE_OPTION, - (SELECT ARRAY_TO_STRING(ARRAY_AGG(CODE_NAME),',') - FROM COMM_CODE AS CC - WHERE CC.CODE_ID IN (SELECT UNNEST(STRING_TO_ARRAY(CHANGE_OPTION, ',')) AS CHANGE_OPTION - FROM PART_MNG AS T - WHERE T.OBJID = P.OBJID) - ) CHANGE_OPTION_NAME, + CHANGE_OPT.CHANGE_OPTION_NAME, P.SUPPLY_CODE, - (SELECT SUPPLY_NAME FROM admin_supply_mng O WHERE O.objid::varchar = P.SUPPLY_CODE) AS SUPPLY_NAME, + SUP.SUPPLY_NAME, P.HEAT_TREATMENT_HARDNESS, P.HEAT_TREATMENT_METHOD, - P.SURFACE_TREATMENT - ,(SELECT COUNT(1) FROM ATTACH_FILE_INFO F WHERE P.OBJID = F.TARGET_OBJID AND F.STATUS = 'Active' AND F.DOC_TYPE IN ('3D_CAD')) CU01_CNT - ,(SELECT COUNT(1) FROM ATTACH_FILE_INFO F WHERE P.OBJID = F.TARGET_OBJID AND F.STATUS = 'Active' AND F.DOC_TYPE IN ('2D_DRAWING_CAD')) CU02_CNT - ,(SELECT COUNT(1) FROM ATTACH_FILE_INFO F WHERE P.OBJID = F.TARGET_OBJID AND F.STATUS = 'Active' AND F.DOC_TYPE IN ('2D_PDF_CAD')) CU03_CNT - ,(SELECT COUNT(1) FROM ATTACH_FILE_INFO F WHERE P.OBJID = F.TARGET_OBJID AND F.STATUS = 'Active' AND F.DOC_TYPE IN ('2D_PDF_CAD','2D_DRAWING_CAD')) CU_TOTAL_CNT + P.SURFACE_TREATMENT, + COALESCE(FILE_CNT.CU01_CNT, 0) CU01_CNT, + COALESCE(FILE_CNT.CU02_CNT, 0) CU02_CNT, + COALESCE(FILE_CNT.CU03_CNT, 0) CU03_CNT, + COALESCE(FILE_CNT.CU_TOTAL_CNT, 0) CU_TOTAL_CNT FROM PART_MNG P + LEFT JOIN COMM_CODE CC_UNIT ON CC_UNIT.CODE_ID = P.UNIT + LEFT JOIN COMM_CODE CC_PART ON CC_PART.CODE_ID = P.PART_TYPE + LEFT JOIN admin_supply_mng SUP ON SUP.objid::varchar = P.SUPPLY_CODE + LEFT JOIN LATERAL ( + SELECT QTY + FROM BOM_PART_QTY Q + WHERE Q.LAST_PART_OBJID = P.OBJID + AND STATUS = 'deploy' + ORDER BY DEPLOY_DATE DESC + LIMIT 1 + ) BOM_QTY_DATA ON TRUE + LEFT JOIN LATERAL ( + SELECT ARRAY_TO_STRING(ARRAY_AGG(CC.CODE_NAME), ',') AS CHANGE_OPTION_NAME + FROM COMM_CODE AS CC + WHERE CC.CODE_ID IN ( + SELECT UNNEST(STRING_TO_ARRAY(P.CHANGE_OPTION, ',')) + ) + ) CHANGE_OPT ON TRUE + LEFT JOIN ( + SELECT + TARGET_OBJID, + SUM(CASE WHEN DOC_TYPE = '3D_CAD' THEN 1 ELSE 0 END) AS CU01_CNT, + SUM(CASE WHEN DOC_TYPE = '2D_DRAWING_CAD' THEN 1 ELSE 0 END) AS CU02_CNT, + SUM(CASE WHEN DOC_TYPE = '2D_PDF_CAD' THEN 1 ELSE 0 END) AS CU03_CNT, + SUM(CASE WHEN DOC_TYPE IN ('2D_PDF_CAD', '2D_DRAWING_CAD') THEN 1 ELSE 0 END) AS CU_TOTAL_CNT + FROM ATTACH_FILE_INFO + WHERE STATUS = 'Active' + AND DOC_TYPE IN ('3D_CAD', '2D_DRAWING_CAD', '2D_PDF_CAD') + GROUP BY TARGET_OBJID + ) FILE_CNT ON FILE_CNT.TARGET_OBJID = P.OBJID - (SELECT O.UNIT_NO || '-' || O.TASK_NAME FROM PMS_WBS_TASK AS O WHERE O.OBJID = T.UNIT_CODE) AS UNIT_NAME, - STATUS, - CASE UPPER(STATUS) + COALESCE(WT.UNIT_NO || '-' || WT.TASK_NAME, '') AS UNIT_NAME, + T.STATUS, + CASE UPPER(T.STATUS) WHEN 'CREATE' THEN '등록중' WHEN 'CHANGEDESIGN' THEN '설계변경미배포' WHEN 'DEPLOY' THEN '배포완료' ELSE '' END STATUS_TITLE, - WRITER, - (SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = WRITER) AS DEPT_NAME, - (SELECT USER_NAME FROM USER_INFO WHERE USER_ID = WRITER) AS USER_NAME, - REGDATE AS REGDATE, - TO_CHAR(REGDATE, 'YYYY-MM-DD') AS REG_DATE, - DEPLOY_DATE, - REVISION, + T.WRITER, + UI.DEPT_NAME, + UI.USER_NAME, + T.REGDATE AS REGDATE, + TO_CHAR(T.REGDATE, 'YYYY-MM-DD') AS REG_DATE, + T.DEPLOY_DATE, + T.REVISION, - (SELECT MAX(PM.EO_NO) FROM BOM_PART_QTY AS BP LEFT JOIN PART_MNG AS PM ON BP.PART_NO = PM.OBJID::VARCHAR WHERE BP.BOM_REPORT_OBJID =T.OBJID) AS EO_NO, - (SELECT MAX(PM.EO_DATE) FROM BOM_PART_QTY AS BP LEFT JOIN PART_MNG AS PM ON BP.PART_NO = PM.OBJID::VARCHAR WHERE BP.BOM_REPORT_OBJID =T.OBJID) AS EO_DATE, - NOTE, - (SELECT COUNT(*) FROM BOM_PART_QTY AS A WHERE A.BOM_REPORT_OBJID = T.OBJID) AS BOM_CNT + EO_DATA.EO_NO, + EO_DATA.EO_DATE, + T.NOTE, + COALESCE(EO_DATA.BOM_CNT, 0) AS BOM_CNT FROM PART_BOM_REPORT AS T + LEFT JOIN SUPPLY_MNG SM ON SM.OBJID::VARCHAR = T.CUSTOMER_OBJID + LEFT JOIN PROJECT_MGMT PM ON PM.OBJID = T.CONTRACT_OBJID + LEFT JOIN PMS_WBS_TASK WT ON WT.OBJID = T.UNIT_CODE + LEFT JOIN USER_INFO UI ON UI.USER_ID = T.WRITER + LEFT JOIN ( + SELECT + BP.BOM_REPORT_OBJID, + MAX(PM2.EO_NO) AS EO_NO, + MAX(PM2.EO_DATE) AS EO_DATE, + COUNT(*) AS BOM_CNT + FROM BOM_PART_QTY BP + LEFT JOIN PART_MNG PM2 ON BP.PART_NO = PM2.OBJID::VARCHAR + GROUP BY BP.BOM_REPORT_OBJID + ) EO_DATA ON EO_DATA.BOM_REPORT_OBJID = T.OBJID WHERE 1=1 AND T.CUSTOMER_OBJID = #{customer_cd} @@ -2734,48 +2778,62 @@ SELECT T1.LEV, T1.BOM_REPORT_OBJID, T1.ROOT_PART_NO, T1.PATH, T1.LEAF, T2.*