From 5e92d290281d31412641512501eb787816723bfc Mon Sep 17 00:00:00 2001 From: Johngreen Date: Fri, 31 Oct 2025 09:30:26 +0900 Subject: [PATCH] =?UTF-8?q?=ED=92=88=EB=B2=88,=20=ED=92=88=EB=AA=85?= =?UTF-8?q?=EB=A7=8C=20=EC=9E=85=EB=A0=A5=ED=95=98=EA=B3=A0=20=EC=A0=80?= =?UTF-8?q?=EC=9E=A5=EC=8B=9C=20=EB=B9=88=20=EB=82=B4=EC=9A=A9=EC=9C=BC?= =?UTF-8?q?=EB=A1=9C=20=EC=9D=B4=EB=B4=84=20=EB=A6=AC=EC=8A=A4=ED=8A=B8=20?= =?UTF-8?q?=EC=83=9D=EC=84=B1(=EC=99=84=EB=A3=8C)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../partMng/openBomReportExcelImportPopUp.jsp | 193 +++++++++--------- src/com/pms/service/PartMngService.java | 139 +++++++------ 2 files changed, 171 insertions(+), 161 deletions(-) diff --git a/WebContent/WEB-INF/view/partMng/openBomReportExcelImportPopUp.jsp b/WebContent/WEB-INF/view/partMng/openBomReportExcelImportPopUp.jsp index 0428bf8..9324fdb 100644 --- a/WebContent/WEB-INF/view/partMng/openBomReportExcelImportPopUp.jsp +++ b/WebContent/WEB-INF/view/partMng/openBomReportExcelImportPopUp.jsp @@ -516,108 +516,111 @@ function fn_checkDuplicatePartNo(){ function fn_save(){ var ids = grid.jqGrid("getDataIDs"); - if(ids!=""){ - if(fnc_valitate("form1")){ - - var valid = true; - var existPart = true; - var part = ""; - if (fnc_isEmpty(${bomInfo.OBJID})) { - var partNo1 = ""; - - gridFn.closeEdit(); - $.each(grid.getRowData(), function(i, d) { - if (i == 0) { - partNo1 = d["PART_NO"]; - } - var partType = d["PART_TYPE"]; - var partNo = d["PART_NO"]; - - if (partType == '0001788') { - if (!fn_existPartNo(partNo)) { - existPart = false; - part = partNo; - return false; // Exit the loop - } - } - - if(!fnc_isEmpty(d["NOTE"])){ - valid = false; - } - }); - gridFn.opennEdit(); - - var project_no = $("#project_name").find("option:selected").text(); - if (partNo1.indexOf(project_no) < 0) { - valid = false; - } - } - - if (!existPart) { - Swal.fire(part+'품번에 해당하는 구매품표준이 없습니다. 확인해 주세요.'); - return; - } - - if (!valid) { - Swal.fire('1레벨 품번에 프로젝트번호가 없습니다. 확인해 주세요.'); - return; - } - - // 품번 중복 검증 (PART_BOM_REPORT 테이블 - 헤더 품번) - if(fn_checkDuplicatePartNo()){ - Swal.fire('입력한 품번이 이미 존재합니다. 다른 품번을 입력해주세요.'); - $('#bom_part_no').focus(); - return; - } - - var existsDup = false; - var ARR_APPLICATION_PROJECT_NO = new Array(); - $(".APPLICATION_PROJECT_NO").each(function(){ - for(var i=0; i 0) { + if (fnc_isEmpty(${bomInfo.OBJID})) { + var partNo1 = ""; + gridFn.closeEdit(); - $.ajax({ - url:"/partMng/partBomApplySave.do" - ,type:"POST" - ,data: $("#form1").serialize() + "&jqGrid="+ encodeURIComponent(JSON.stringify(grid.getRowData())) - ,dataType:"json" - ,success:function(data){ - /* - if(data =="SUCCESS"){ - alert("저장되었습니다."); - top.opener.fn_search(); - self.close(); - }; - */ - console.log(data); - if(data && data.RESULT == 'S'){ - alert("저장되었습니다."); - if(typeof opener.fn_search =="function"){ opener.fn_search() }; - self.close(); - }else{ - alert(data.MSG); + $.each(grid.getRowData(), function(i, d) { + if (i == 0) { + partNo1 = d["PART_NO"]; + } + var partType = d["PART_TYPE"]; + var partNo = d["PART_NO"]; + + if (partType == '0001788') { + if (!fn_existPartNo(partNo)) { + existPart = false; + part = partNo; + return false; // Exit the loop } } - ,error: function(jqxhr, status, error){ - alert('에러가 발생하였습니다. 시스템 관리자에게 문의하여 주세요.'); + + if(!fnc_isEmpty(d["NOTE"])){ + valid = false; } }); + gridFn.opennEdit(); + + var project_no = $("#project_name").find("option:selected").text(); + if (partNo1 && partNo1.indexOf(project_no) < 0) { + valid = false; + } + } + + if (!existPart) { + Swal.fire(part+'품번에 해당하는 구매품표준이 없습니다. 확인해 주세요.'); + return; + } + + if (!valid) { + Swal.fire('1레벨 품번에 프로젝트번호가 없습니다. 확인해 주세요.'); + return; } } - }else{ - Swal.fire('저장할 데이터가 없습니다.'); + + // 품번 중복 검증 (PART_BOM_REPORT 테이블 - 헤더 품번) + if(fn_checkDuplicatePartNo()){ + Swal.fire('입력한 품번이 이미 존재합니다. 다른 품번을 입력해주세요.'); + $('#bom_part_no').focus(); + return; + } + + var existsDup = false; + var ARR_APPLICATION_PROJECT_NO = new Array(); + $(".APPLICATION_PROJECT_NO").each(function(){ + for(var i=0; i 0 ? "저장 하시겠습니까?" : "품번, 품명으로 빈 E-BOM을 생성하시겠습니까?"; + + if(confirm(confirmMsg)){ + if(ids && ids.length > 0) { + gridFn.closeEdit(); + } + + // 그리드 데이터가 없으면 빈 배열 전송 + var gridData = ids && ids.length > 0 ? grid.getRowData() : []; + + $.ajax({ + url:"/partMng/partBomApplySave.do" + ,type:"POST" + ,data: $("#form1").serialize() + "&jqGrid="+ encodeURIComponent(JSON.stringify(gridData)) + ,dataType:"json" + ,success:function(data){ + console.log(data); + if(data && data.RESULT == 'S'){ + alert("저장되었습니다."); + if(typeof opener.fn_search =="function"){ opener.fn_search() }; + self.close(); + }else{ + alert(data.MSG); + } + } + ,error: function(jqxhr, status, error){ + alert('에러가 발생하였습니다. 시스템 관리자에게 문의하여 주세요.'); + } + }); + } } } diff --git a/src/com/pms/service/PartMngService.java b/src/com/pms/service/PartMngService.java index d495923..b0e4903 100644 --- a/src/com/pms/service/PartMngService.java +++ b/src/com/pms/service/PartMngService.java @@ -4363,78 +4363,85 @@ public class PartMngService extends BaseService { sqlMap.put("PART_NAME", CommonUtils.checkNull((String)paramMap.get("bom_part_name"))); sqlMap.put("REVISION", CommonUtils.checkNull((String)paramMap.get("version"))); - //bom report 저장 - System.out.println("sqlMap ---->"+sqlMap); - sqlSession.insert("partMng.createBOMReportStructureStandardInfo", sqlMap); + //bom report 저장 + System.out.println("sqlMap ---->"+sqlMap); + sqlSession.insert("partMng.createBOMReportStructureStandardInfo", sqlMap); + + // 그리드 데이터가 비어있으면 BOM 헤더만 생성하고 종료 + if(gridDataList == null || gridDataList.isEmpty()) { + System.out.println("=== 빈 E-BOM 생성 완료 (품번: " + sqlMap.get("PART_NO") + ", 품명: " + sqlMap.get("PART_NAME") + ") ==="); + sqlSession.commit(); + return; + } + + // BOM 데이터 저장 (프로젝트 연결 없이) + /* + String newPartNo1Surffix = ""; + String masterPartNo1 = ""; + String UNIT_CODE2 = ""; + Map sqlParamMap = new HashMap(); + for(int j=0; j<11; j++){ //24032x? - 0은 master 동시건 + String APPLICATION_OBJID = CommonUtils.nullToEmpty((String)paramMap.get("APPLICATION_OBJID"+j)); + String APPLICATION_PROJECT_NO = CommonUtils.nullToEmpty((String)paramMap.get("APPLICATION_PROJECT_NO"+j)); //프로젝트 objid - // BOM 데이터 저장 (프로젝트 연결 없이) - /* - String newPartNo1Surffix = ""; - String masterPartNo1 = ""; - String UNIT_CODE2 = ""; - Map sqlParamMap = new HashMap(); - for(int j=0; j<11; j++){ //24032x? - 0은 master 동시건 - String APPLICATION_OBJID = CommonUtils.nullToEmpty((String)paramMap.get("APPLICATION_OBJID"+j)); - String APPLICATION_PROJECT_NO = CommonUtils.nullToEmpty((String)paramMap.get("APPLICATION_PROJECT_NO"+j)); //프로젝트 objid + if(j == 0) { + APPLICATION_PROJECT_NO = CommonUtils.checkNull(paramMap.get("CONTRACT_OBJID")); + }else { + isMaster = false; + } + + if(!CommonUtils.isBlank(APPLICATION_PROJECT_NO)) { - if(j == 0) { - APPLICATION_PROJECT_NO = CommonUtils.checkNull(paramMap.get("CONTRACT_OBJID")); - }else { - isMaster = false; - } - - if(!CommonUtils.isBlank(APPLICATION_PROJECT_NO)) { + //bom master insert + if(!isMaster) { - //bom master insert - if(!isMaster) { - - sqlMap.clear(); - sqlMap.put("OBJID", APPLICATION_PROJECT_NO); - projectInfo = (Map)sqlSession.selectOne("project.getProjectMngInfo", sqlMap); - projectNo = (String)projectInfo.get("project_no"); //프로젝트 no - - sqlParamMap.clear(); - sqlParamMap.put("project_objid", APPLICATION_PROJECT_NO); - sqlParamMap.put("unitName", UNIT_NAME); - unitInfoMap = (HashMap)sqlSession.selectOne("common.getUnitCodeList", sqlParamMap); - if(unitInfoMap == null || CommonUtils.isEmptyMap(unitInfoMap)) { - throw new Exception(projectNo+"프로젝트에 "+UNIT_NAME + " UNIT이 존재하지 않습니다."); - } - unitName = CommonUtils.checkNull(unitInfoMap.get("name")).replaceAll("\u00A0+", " "); - UNIT_CODE2 = CommonUtils.checkNull((String)unitInfoMap.get("code")); - - utf8Bytes = unitName.getBytes("UTF-8"); - utf8unitName = new String(utf8Bytes, "UTF-8"); - filepath = Constants.FILE_STORAGE+"\\PART_DATA\\"; - filepathFull = filepath+projectNo+File.separator+unitName+File.separator; - - //BOM REPORT OBJID - objid = CommonUtils.createObjId(); //키 새로 생성 - sqlMap.clear(); - sqlMap.put("OBJID", objid); - sqlMap.put("MULTI_YN", "Y"); - sqlMap.put("MULTI_MASTER_YN", "N"); - sqlMap.put("MULTI_MASTER_OBJID", masterObjid); - sqlMap.put("CUSTOMER_OBJID", CommonUtils.checkNull((String)paramMap.get("CUSTOMER_OBJID"))); - sqlMap.put("CONTRACT_OBJID", APPLICATION_PROJECT_NO); - sqlMap.put("UNIT_CODE", UNIT_CODE2); - sqlMap.put("WRITER", CommonUtils.checkNull((String)paramMap.get("CONNECTUSERID"))); - //bom report 저장 - - System.out.println("sqlMap ---->"+sqlMap); - sqlSession.insert("partMng.createBOMReportStructureStandardInfo", sqlMap); - - //엑셀 등록 - //sqlSession.insert("partMng.relateexcelPartInfo", sqlMap); + sqlMap.clear(); + sqlMap.put("OBJID", APPLICATION_PROJECT_NO); + projectInfo = (Map)sqlSession.selectOne("project.getProjectMngInfo", sqlMap); + projectNo = (String)projectInfo.get("project_no"); //프로젝트 no + + sqlParamMap.clear(); + sqlParamMap.put("project_objid", APPLICATION_PROJECT_NO); + sqlParamMap.put("unitName", UNIT_NAME); + unitInfoMap = (HashMap)sqlSession.selectOne("common.getUnitCodeList", sqlParamMap); + if(unitInfoMap == null || CommonUtils.isEmptyMap(unitInfoMap)) { + throw new Exception(projectNo+"프로젝트에 "+UNIT_NAME + " UNIT이 존재하지 않습니다."); } - */ + unitName = CommonUtils.checkNull(unitInfoMap.get("name")).replaceAll("\u00A0+", " "); + UNIT_CODE2 = CommonUtils.checkNull((String)unitInfoMap.get("code")); - Map insertMap = new HashMap(); - Map resultMap = new HashMap(); - Map partobjMap = new HashMap(); + utf8Bytes = unitName.getBytes("UTF-8"); + utf8unitName = new String(utf8Bytes, "UTF-8"); + filepath = Constants.FILE_STORAGE+"\\PART_DATA\\"; + filepathFull = filepath+projectNo+File.separator+unitName+File.separator; - //bom qty/part insert (프로젝트 연결 없이 직접 저장) - for(int i=0; i"+sqlMap); + sqlSession.insert("partMng.createBOMReportStructureStandardInfo", sqlMap); + + //엑셀 등록 + //sqlSession.insert("partMng.relateexcelPartInfo", sqlMap); + } + */ + + Map insertMap = new HashMap(); + Map resultMap = new HashMap(); + Map partobjMap = new HashMap(); + + //bom qty/part insert (프로젝트 연결 없이 직접 저장) + for(int i=0; i