From 6fcc27bd37275ca68fdad3fc0a2104e1e20f515c Mon Sep 17 00:00:00 2001 From: hjjeong Date: Wed, 28 Jan 2026 13:28:05 +0900 Subject: [PATCH 1/4] =?UTF-8?q?=ED=8C=90=EB=A7=A4=EA=B4=80=EB=A6=AC=20?= =?UTF-8?q?=EA=B2=80=EC=83=89=EC=A1=B0=EA=B1=B4=20=EC=B6=94=EA=B0=80(?= =?UTF-8?q?=ED=8C=90=EB=A7=A4=EC=83=81=ED=83=9C=20=EB=8B=A4=EC=A4=91?= =?UTF-8?q?=EC=84=A0=ED=83=9D)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salesmgmt/salesMgmt/salesMgmtList.jsp | 218 ++++++++---------- src/com/pms/mapper/admin.xml | 2 +- .../SalesNcollectMgmtController.java | 25 ++ .../salesmgmt/mapper/salesNcollectMgmt.xml | 72 ++++-- 4 files changed, 180 insertions(+), 137 deletions(-) diff --git a/WebContent/WEB-INF/view/salesmgmt/salesMgmt/salesMgmtList.jsp b/WebContent/WEB-INF/view/salesmgmt/salesMgmt/salesMgmtList.jsp index 6c29bf5..d471f83 100644 --- a/WebContent/WEB-INF/view/salesmgmt/salesMgmt/salesMgmtList.jsp +++ b/WebContent/WEB-INF/view/salesmgmt/salesMgmt/salesMgmtList.jsp @@ -19,6 +19,26 @@ margin: 0; padding: 0; } + /* 판매상태 멀티선택 높이 조정 */ + #salesStatus + .select2-container { + min-height: 25px !important; + max-height: 25px !important; + } + #salesStatus + .select2-container .select2-selection--multiple { + min-height: 25px !important; + max-height: 25px !important; + padding: 0 5px; + overflow: hidden; + } + #salesStatus + .select2-container .select2-selection__choice { + margin-top: 2px; + padding: 0 5px; + font-size: 11px; + } + #salesStatus + .select2-container .select2-search--inline .select2-search__field { + margin-top: 3px; + font-size: 11px; + } -
- - -
- +
@@ -807,11 +784,9 @@ function fn_excelExport(pGridObj,pFileName){
- - - + + +
diff --git a/WebContent/WEB-INF/view/partMng/structureAscendingListExcel.jsp b/WebContent/WEB-INF/view/partMng/structureAscendingListExcel.jsp index 437f941..b3d57c4 100644 --- a/WebContent/WEB-INF/view/partMng/structureAscendingListExcel.jsp +++ b/WebContent/WEB-INF/view/partMng/structureAscendingListExcel.jsp @@ -9,12 +9,21 @@ java.text.SimpleDateFormat frm= new java.text.SimpleDateFormat ("yyyy_MM_dd_HH_m Calendar cal = Calendar.getInstance(); String todayKor = frm.format(cal.getTime()); -String excelName = request.getParameter("fileName"); +String excelName = "BOM 조회(정전개)"; String encodeName = excelName+todayKor+".xls"; String fileName = java.net.URLEncoder.encode(encodeName,"UTF-8"); response.setHeader("Content-Disposition", "attachment;filename="+fileName+""); response.setHeader("Content-Description", "JSP Generated Data"); + +ArrayList list = (ArrayList)request.getAttribute("LIST"); + +// MAX_LEVEL 가져오기 +int maxLevel = 1; +if(list != null && list.size() > 0) { + HashMap firstMap = (HashMap)list.get(0); + maxLevel = Integer.parseInt(CommonUtils.checkNull(firstMap.get("MAX_LEVEL"), "1")); +} %> @@ -22,24 +31,101 @@ response.setHeader("Content-Description", "JSP Generated Data"); <%=Constants.SYSTEM_NAME%> - - diff --git a/WebContent/WEB-INF/view/partMng/structureDescendingListExcel.jsp b/WebContent/WEB-INF/view/partMng/structureDescendingListExcel.jsp index 4e6bc57..16f2dae 100644 --- a/WebContent/WEB-INF/view/partMng/structureDescendingListExcel.jsp +++ b/WebContent/WEB-INF/view/partMng/structureDescendingListExcel.jsp @@ -17,6 +17,13 @@ response.setHeader("Content-Disposition", "attachment;filename="+fileName+""); response.setHeader("Content-Description", "JSP Generated Data"); ArrayList list = (ArrayList)request.getAttribute("LIST"); + +// MAX_LEVEL 가져오기 +int maxLevel = 1; +if(list != null && list.size() > 0) { + HashMap firstMap = (HashMap)list.get(0); + maxLevel = Integer.parseInt(CommonUtils.checkNull(firstMap.get("MAX_LEVEL"), "1")); +} %> @@ -24,10 +31,6 @@ ArrayList list = (ArrayList)request.getAttribute("LIST"); <%=Constants.SYSTEM_NAME%> - - @@ -40,143 +43,87 @@ ArrayList list = (ArrayList)request.getAttribute("LIST");
- - - - - - - - - - - - - - - - - - - - - - - - - - - <% - for(int i = 0 ; i < list.size() ; i++){ - HashMap map = (HashMap)list.get(i); - - String level = CommonUtils.checkNull(map.get("LEVEL"), "0"); - String lev = CommonUtils.checkNull(map.get("LEV")); - String bomReportObjId = CommonUtils.checkNull(map.get("BOM_REPORT_OBJID")); - String topObjId = CommonUtils.checkNull(map.get("TOP_OBJID")); - String subTopObjId = CommonUtils.checkNull(map.get("SUB_TOP_OBJID")); - String partNo = CommonUtils.checkNull(map.get("PART_NO")); - String partName = CommonUtils.checkNull(map.get("PART_NAME")); - String qty = CommonUtils.checkNull(map.get("QTY")); - String rev = CommonUtils.checkNull(map.get("REV")); - String ecoNo = CommonUtils.checkNull(map.get("EO_NO")); - String ecoDate = CommonUtils.checkNull(map.get("EO_ISSUE_DATE")); - String materialName = CommonUtils.checkNull(map.get("MATERIAL_NAME")); - String thickness = CommonUtils.checkNull(map.get("THICKNESS")); - String carName = CommonUtils.checkNull(map.get("CAR_NAME")); - String carCode = CommonUtils.checkNull(map.get("CAR_CODE")); - String productName = CommonUtils.checkNull(map.get("PRODUCT_NAME")); - String regionName = CommonUtils.checkNull(map.get("REGION_NAME")); - String remarks = CommonUtils.checkNull(map.get("REMARKS")); - String ea = "EA"; - String ecd = CommonUtils.checkNull(map.get("ECD_OBJID")); - String erp = CommonUtils.checkNull(map.get("RH_PART_NO")); - String plated = CommonUtils.checkNull(map.get("PLATED")); - String stamp = CommonUtils.checkNull(map.get("STAMP")); - String cavity = CommonUtils.checkNull(map.get("CAVITY")); - String weight = CommonUtils.checkNull(map.get("WEIGHT")); - String sprue = CommonUtils.checkNull(map.get("SPRUE")); - String m_c_name = CommonUtils.checkNull(map.get("M_C_NAME")); - String comm_name = CommonUtils.checkNull(map.get("COMM_NAME")); - String c_m_name = CommonUtils.checkNull(map.get("C_M_NAME")); - String c_s_m_name = CommonUtils.checkNull(map.get("C_S_M_NAME")); - String c_p_p_name = CommonUtils.checkNull(map.get("C_P_P_NAME")); - String c_e_name = CommonUtils.checkNull(map.get("C_E_NAME")); - String background = ""; - - //역전개만해당 - String baseLevel = CommonUtils.checkNull(map.get("BASE_LEVEL")); - - String ecdTitle = "Y"; - if(ecd == "") ecdTitle = "N"; - if("1".equals(lev)){ - background = "#fde9d9"; - }else if("2".equals(lev)){ - background = "#daeef3"; - regionName = "-"; - }else if("3".equals(lev)){ - background = "#e4dfec"; - regionName = "-"; - }else if("4".equals(lev)){ - background = "#ebf1de"; - regionName = "-"; - }else if("5".equals(lev)){ - background = "#f2f2f2"; - regionName = "-"; - }else if("6".equals(lev)){ - background = "#f2dcdb"; - regionName = "-"; - }else if("7".equals(lev)){ - background = "#eeece1"; - regionName = "-"; - }else if("8".equals(lev)){ - background = "#dce6f1"; - regionName = "-"; - }else if("9".equals(lev)){ - background = "#FFFFEB"; - regionName = "-"; - }else if("10".equals(lev)){ - background = "#ffffff"; - regionName = "-"; - } - %> - - - <% - for(int j = 0 ; j < Integer.parseInt(level) ; j++){ + for(int i = 1; i <= maxLevel; i++){ %> -   + <% } %> - <%=partNo%> - - + + + + + + + + + + + + + + + + <% + if(list != null) { + for(int i = 0 ; i < list.size() ; i++){ + HashMap map = (HashMap)list.get(i); + + int level = Integer.parseInt(CommonUtils.checkNull(map.get("LEVEL"), "1")); + String partNo = CommonUtils.checkNull(map.get("PART_NO")); + String partName = CommonUtils.checkNull(map.get("PART_NAME")); + String qty = CommonUtils.checkNull(map.get("QTY")); + String pQty = CommonUtils.checkNull(map.get("P_QTY")); + String file3dCnt = CommonUtils.checkNull(map.get("FILE_3D_CNT"), "0"); + String file2dCnt = CommonUtils.checkNull(map.get("FILE_2D_CNT"), "0"); + String filePdfCnt = CommonUtils.checkNull(map.get("FILE_PDF_CNT"), "0"); + String material = CommonUtils.checkNull(map.get("MATERIAL")); + String heatTreatmentHardness = CommonUtils.checkNull(map.get("HEAT_TREATMENT_HARDNESS")); + String heatTreatmentMethod = CommonUtils.checkNull(map.get("HEAT_TREATMENT_METHOD")); + String surfaceTreatment = CommonUtils.checkNull(map.get("SURFACE_TREATMENT")); + String maker = CommonUtils.checkNull(map.get("MAKER")); + String partTypeTitle = CommonUtils.checkNull(map.get("PART_TYPE_TITLE")); + String remark = CommonUtils.checkNull(map.get("REMARK")); + + // 파일 유무 Y/N 표시 + String has3d = !"0".equals(file3dCnt) ? "Y" : ""; + String has2d = !"0".equals(file2dCnt) ? "Y" : ""; + String hasPdf = !"0".equals(filePdfCnt) ? "Y" : ""; + %> + + <% + for(int j = 1; j <= maxLevel; j++){ + if(level == j){ + %> + + <% + } else { + %> + + <% + } + } + %> + + - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + <% } + } %>
Level품번품명수량단위ECO.NoECO.DateREVECDERP재질원소재사이즈도금도장Cavity제품스프루금형구분생산구분금형업체부자재업체도금/도장업체원소재업체비고
<%=baseLevel%> +
<%=i%> <%=partName%>품번품명수량항목수량3D2DPDF재료열처리경도열처리방법표면처리메이커범주 이름비고
*<%=partNo%><%=partName%> <%=qty%><%=ea%><%=ecoNo%><%=ecoDate%><%=rev%><%=ecdTitle%><%=erp%><%=materialName%><%=thickness%><%=plated%><%=stamp%><%=cavity%><%=weight%><%=sprue%><%=m_c_name%><%=comm_name%><%=c_m_name%><%=c_s_m_name%><%=c_p_p_name%><%=c_e_name%><%=remarks%><%=pQty%><%=has3d%><%=has2d%><%=hasPdf%><%=material%><%=heatTreatmentHardness%><%=heatTreatmentMethod%><%=surfaceTreatment%><%=maker%><%=partTypeTitle%><%=remark%>
diff --git a/src/com/pms/controller/PartMngController.java b/src/com/pms/controller/PartMngController.java index a4b104a..3e460a1 100644 --- a/src/com/pms/controller/PartMngController.java +++ b/src/com/pms/controller/PartMngController.java @@ -1399,9 +1399,28 @@ public class PartMngController { @RequestMapping("/partMng/structureAscendingExcelList.do") public String structureAscendingExcelList(HttpServletRequest request, @RequestParam Map paramMap){ + try { + // 정전개 데이터 조회 + List resultList = partMngService.getStructureAscendingList(request, paramMap); + request.setAttribute("LIST", resultList); + } catch(Exception e) { + e.printStackTrace(); + } return "/partMng/structureAscendingListExcel"; } + @RequestMapping("/partMng/structureDescendingExcelList.do") + public String structureDescendingExcelList(HttpServletRequest request, @RequestParam Map paramMap){ + try { + // 역전개 데이터 조회 + List resultList = partMngService.getStructureDescendingList(request, paramMap); + request.setAttribute("LIST", resultList); + } catch(Exception e) { + e.printStackTrace(); + } + return "/partMng/structureDescendingListExcel"; + } + /** * 정전개 멀티 목록 * @param request -- 2.49.1 From 3d555f45444f4fc040b1ed1d2b0c7f3d1e54b01c Mon Sep 17 00:00:00 2001 From: hjjeong Date: Wed, 28 Jan 2026 15:30:28 +0900 Subject: [PATCH 3/4] =?UTF-8?q?=EA=B5=AC=EB=A7=A4=EA=B4=80=EB=A6=AC=20?= =?UTF-8?q?=EA=B2=80=EC=83=89=EC=A1=B0=EA=B1=B4=20=EC=B6=94=EA=B0=80,=20?= =?UTF-8?q?=EC=BB=AC=EB=9F=BC=20=EC=B6=94=EA=B0=80=20=EB=93=B1...?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../deliveryMngAcceptanceList.jsp | 22 +++++-- .../purchaseOrder/purchaseOrderList_new.jsp | 32 +++++++--- .../WEB-INF/view/salesMng/proposalMngList.jsp | 57 ++++++++++++++---- .../view/salesMng/salesRequestMngRegList.jsp | 40 +++++++++++-- .../controller/PurchaseOrderController.java | 4 ++ src/com/pms/mapper/purchaseOrder.xml | 32 +++++++++- src/com/pms/mapper/salesMng.xml | 58 +++++++++++++++++++ .../controller/SalesMngController.java | 21 +++++-- 8 files changed, 230 insertions(+), 36 deletions(-) diff --git a/WebContent/WEB-INF/view/purchaseOrder/deliveryMngAcceptanceList.jsp b/WebContent/WEB-INF/view/purchaseOrder/deliveryMngAcceptanceList.jsp index 491d89b..2d5b58a 100644 --- a/WebContent/WEB-INF/view/purchaseOrder/deliveryMngAcceptanceList.jsp +++ b/WebContent/WEB-INF/view/purchaseOrder/deliveryMngAcceptanceList.jsp @@ -89,17 +89,17 @@ $(document).ready(function(){ var columns = [ // 요구사항: 품의서 No, 발주서 No, 프로젝트번호, 품번, 품명, 공급업체, 발주수량, 입고수량, 미입고수량, 검사성적서, 입고결과 {title:'STATUS' ,field:'STATUS' ,visible:false, frozen:true}, - {title:'TOTAL_SUPPLY_PRICE' ,field:'TOTAL_SUPPLY_PRICE' ,visible:false, frozen:true}, - {title:'TOTAL_DELIVERY_PRICE' ,field:'TOTAL_DELIVERY_PRICE' ,visible:false, frozen:true}, - {title:'TOTAL_NOT_DELIVERY_PRICE',field:'TOTAL_NOT_DELIVERY_PRICE',visible:false, frozen:true}, + //{title:'TOTAL_SUPPLY_PRICE' ,field:'TOTAL_SUPPLY_PRICE' ,visible:false, frozen:true}, + //{title:'TOTAL_DELIVERY_PRICE' ,field:'TOTAL_DELIVERY_PRICE' ,visible:false, frozen:true}, + //{title:'TOTAL_NOT_DELIVERY_PRICE',field:'TOTAL_NOT_DELIVERY_PRICE',visible:false, frozen:true}, {title:'FORM_TYPE' ,field:'FORM_TYPE' ,visible:false, frozen:true}, - {headerHozAlign : 'center', hozAlign : 'center', minWidth : 130, widthGrow : 1, title : '품의서 No', field : 'PROPOSAL_NO', + {headerHozAlign : 'center', hozAlign : 'center', minWidth : 120, widthGrow : 1, title : '품의서 No', field : 'PROPOSAL_NO', formatter: fnc_createGridAnchorTag, cellClick : function(e, cell) { fn_openProposalFormPopUp(cell.getData().SALES_REQUEST_OBJID); } }, - {headerHozAlign : 'center', hozAlign : 'center', minWidth : 130, widthGrow : 1, title : '발주서 No', field : 'PURCHASE_ORDER_NO', + {headerHozAlign : 'center', hozAlign : 'center', minWidth : 120, widthGrow : 1, title : '발주서 No', field : 'PURCHASE_ORDER_NO', formatter:fnc_createGridAnchorTag, cellClick:function(e, cell){ var objId = fnc_checkNull(cell.getData().OBJID); @@ -107,10 +107,11 @@ var columns = [ fn_formPopUp(objId, formType); } }, - {headerHozAlign : 'center', hozAlign : 'center', minWidth : 140, widthGrow : 1, title : '프로젝트번호', field : 'PROJECT_NO'}, + {headerHozAlign : 'center', hozAlign : 'center', minWidth : 130, widthGrow : 1, title : '프로젝트번호', field : 'PROJECT_NO'}, {headerHozAlign : 'center', hozAlign : 'left', minWidth : 140, widthGrow : 2, title : '품번', field : 'PART_NO' }, {headerHozAlign : 'center', hozAlign : 'left', minWidth : 180, widthGrow : 3, title : '품명', field : 'PART_NAME' }, {headerHozAlign : 'center', hozAlign : 'left', minWidth : 150, widthGrow : 2, title : '공급업체', field : 'PARTNER_NAME' }, + {headerHozAlign : 'center', hozAlign : 'center', minWidth : 90, widthGrow : 1, title : '구매담당자', field : 'WRITER_NAME' }, {headerHozAlign : 'center', hozAlign : 'right', minWidth : 90, widthGrow : 1, title : '발주수량', field : 'TOTAL_PO_QTY', formatter:"money", formatterParams:{thousand:",", symbolAfter:"p", precision:false } }, @@ -120,6 +121,15 @@ var columns = [ {headerHozAlign : 'center', hozAlign : 'right', minWidth : 90, widthGrow : 1, title : '미입고수량', field : 'NON_DELIVERY_QTY', formatter:"money", formatterParams:{thousand:",", symbolAfter:"p", precision:false } }, + {headerHozAlign : 'center', hozAlign : 'right', minWidth : 90, widthGrow : 1, title : '발주금액', field : 'TOTAL_SUPPLY_PRICE', + formatter:"money", formatterParams:{thousand:",", symbolAfter:"p", precision:false } + }, + {headerHozAlign : 'center', hozAlign : 'right', minWidth : 90, widthGrow : 1, title : '입고금액', field : 'TOTAL_DELIVERY_PRICE', + formatter:"money", formatterParams:{thousand:",", symbolAfter:"p", precision:false } + }, + {headerHozAlign : 'center', hozAlign : 'right', minWidth : 90, widthGrow : 1, title : '미입고금액', field : 'TOTAL_NOT_DELIVERY_PRICE', + formatter:"money", formatterParams:{thousand:",", symbolAfter:"p", precision:false } + }, {headerHozAlign : 'center', hozAlign : 'center', minWidth : 100, widthGrow : 1, title : '업체성적서', field : 'INSPECTION_FILE_CNT', formatter:fnc_subInfoValueFormatter, cellClick:function(e, cell){ diff --git a/WebContent/WEB-INF/view/purchaseOrder/purchaseOrderList_new.jsp b/WebContent/WEB-INF/view/purchaseOrder/purchaseOrderList_new.jsp index 0e0f59c..c96657c 100644 --- a/WebContent/WEB-INF/view/purchaseOrder/purchaseOrderList_new.jsp +++ b/WebContent/WEB-INF/view/purchaseOrder/purchaseOrderList_new.jsp @@ -334,7 +334,7 @@ var columns = [ } } }, - {headerHozAlign:'center', hozAlign:'center', widthGrow:1, title:'프로젝트번호', field:'PROJECT_NO', + {headerHozAlign:'center', hozAlign:'center', widthGrow:1.1, title:'프로젝트번호', field:'PROJECT_NO', formatter: fnc_createGridAnchorTag, cellClick: function(e, cell){ var orderNo = cell.getData().PROJECT_NO; @@ -342,9 +342,9 @@ var columns = [ fn_openSaleRegPopup(orderNo, "detail"); } }, - {headerHozAlign:'center', hozAlign:'center', widthGrow:1, title:'구매유형', field:'PURCHASE_TYPE_NAME'}, - {headerHozAlign:'center', hozAlign:'center', widthGrow:1, title:'주문유형', field:'CATEGORY_NAME'}, - {headerHozAlign:'center', hozAlign:'center', widthGrow:1, title:'제품구분', field:'PRODUCT_NAME'}, + {headerHozAlign:'center', hozAlign:'center', widthGrow:0.9, title:'구매유형', field:'PURCHASE_TYPE_NAME'}, + {headerHozAlign:'center', hozAlign:'center', widthGrow:0.9, title:'주문유형', field:'CATEGORY_NAME'}, + {headerHozAlign:'center', hozAlign:'center', widthGrow:0.9, title:'제품구분', field:'PRODUCT_NAME'}, {headerHozAlign:'center', hozAlign:'left', widthGrow:1.5, title:'품번', field:'PART_NO'}, {headerHozAlign:'center', hozAlign:'left', widthGrow:2, title:'품명', field:'PART_NAME'}, {headerHozAlign:'center', hozAlign:'left', widthGrow:1.5, title:'공급업체', field:'PARTNER_NAME'}, @@ -364,11 +364,12 @@ var columns = [ } else if(value === 'Y'){ return '발송완료'; } else { - return ''; + return '미발송'; } } }, - {headerHozAlign:'center', hozAlign:'center', widthGrow:1, title:'발주일', field:'MAIL_SEND_DATE'} + {headerHozAlign:'center', hozAlign:'center', widthGrow:1, title:'발주일', field:'MAIL_SEND_DATE'}, + {headerHozAlign:'center', hozAlign:'center', widthGrow:1, title:'구매담당자', field:'WRITER_NAME'} ]; function editCheck (cell) { @@ -1033,12 +1034,27 @@ function fn_executeOrderCancel(objId){ - + - + + + + + + + + + + + +
diff --git a/WebContent/WEB-INF/view/salesMng/proposalMngList.jsp b/WebContent/WEB-INF/view/salesMng/proposalMngList.jsp index f828d4b..050f0d3 100644 --- a/WebContent/WEB-INF/view/salesMng/proposalMngList.jsp +++ b/WebContent/WEB-INF/view/salesMng/proposalMngList.jsp @@ -44,17 +44,16 @@ String menuName = CommonUtils.getMenuName(menuObjId, "구매관리_품의서관 .select2-selection__rendered { height: 18px !important; } - /* frozen 컬럼 오른쪽 굵은 선 제거 (헤더) */ - .tabulator .tabulator-header .tabulator-frozen-left { - border-right: none !important; + /* 구매유형 멀티선택 - 세로 스크롤 */ + #purchase_type + .select2-container .select2-selection--multiple { + max-height: 52px !important; + min-height: 18px !important; + overflow-y: auto !important; } - /* frozen 컬럼 기본 두꺼운 테두리 제거 */ - .tabulator .tabulator-frozen-left { - border-right: none !important; - } - /* 체크박스 컬럼 오른쪽에 얇은 구분선 추가 (데이터 행만) */ - .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.tabulator-frozen-left { - border-right: 1px solid #ddd !important; + #purchase_type + .select2-container .select2-selection__rendered { + height: auto !important; + max-height: 48px !important; + overflow-y: auto !important; }