E-BOM 조회 엑셀다운로드 기능 추가

This commit is contained in:
2026-01-28 13:54:46 +09:00
parent 6fcc27bd37
commit 234e8b6417
4 changed files with 225 additions and 198 deletions

View File

@@ -152,12 +152,9 @@ $(document).ready(function(){
fn_search();
});
// 엑셀 다운로드 - 서버 사이드 방식
$("#btnExcel").click(function(){
$("#search_partNo").val($.trim($("#search_partNo").val()));
$("#search_partName").val($.trim($("#search_partName").val()));
fn_excelExport($("#mainGrid"),"BOM_REPORT_정전개");
fn_excelDownload();
});
// 초기 로딩 시 레벨에 따라 표시 (검색 결과 기준)
@@ -734,64 +731,44 @@ function fn_search(){
}
function fn_excelExport(pGridObj,pFileName){
var mya = pGridObj.getDataIDs();
var data = pGridObj.getRowData(mya[0]);
var colNames=new Array();
var ii=0;
for (var d in data){ colNames[ii++] = d; }
//컬럼 헤더 가져오기
var columnHeader = pGridObj.jqGrid('getGridParam','colNames') + '';
var arrHeader = columnHeader.split(',');
var html="<table border=1><tr>";
for ( var y = 0; y < arrHeader.length; y++ ) {
var hName = arrHeader[y];
if("PART_OBJID" == hName || "EO_OBJID" == hName){
continue;
}
html = html + "<td><b>" + arrHeader[y] + "</b></td>";
}
html = html + "</tr>";
//값 불러오기
for(var i=0;i< mya.length;i++) {
var datac= pGridObj.getRowData(mya[i]);
html = html +"<tr>";
for(var j=0; j< colNames.length;j++){
if("PART_OBJID" == colNames[j] || "EO_OBJID" == colNames[j]){
continue;
}
html=html + '<td>' + datac[colNames[j]]+"</td>";
}
html = html+"</tr>";
}
html=html+"</table>"; // end of line at the end
document.EXCEL_.csvBuffer.value = html;
document.EXCEL_.fileName.value = pFileName;
document.EXCEL_.target='_new';
document.EXCEL_.submit();
// 엑셀 다운로드 - 서버 사이드 방식
function fn_excelDownload(){
// 검색 조건 확인
var partObjId = $("#search_partObjId").val();
var partNo = $("#search_partNo").val();
var partName = $("#search_partName").val();
if(!partObjId && !partNo && !partName) {
alert("품번 또는 품명을 선택해주세요.");
return;
}
var form = document.form1;
var searchType = $("#searchType").val();
// 정전개/역전개에 따라 다른 URL 호출
if(searchType == "descending") {
form.action = "/partMng/structureDescendingExcelList.do";
} else {
form.action = "/partMng/structureAscendingExcelList.do";
}
form.target = "_blank";
form.submit();
form.action = "";
form.target = "";
}
</script>
</head>
<body class="backcolor">
<form id="EXCEL_" name="EXCEL_" action="/partMng/structureAscendingExcelList.do" method="post">
<input type="hidden" name="csvBuffer" id="csvBuffer" value="">
<input type="hidden" name="fileName" id="fileName" value="">
</form>
<form name="hiddenForm" id="hiddenForm" method="post">
<input type="hidden" name="OBJID" id="OBJID">
</form>
<form name="form1" id="form1" action="" method="post">
<input type="hidden" name="search" id="search" value="Y">
<input type="hidden" name="actionType" id="actionType" value="" />
<input type="hidden" name="searchType" id="searchType" value="ascending" />
<input type="hidden" name="searchType" id="searchType" value="${empty param.searchType ? 'ascending' : param.searchType}" />
<input type="hidden" name="search_partNo_text" id="search_partNo_text" value="${param.search_partNo_text}" />
<input type="hidden" name="search_partName_text" id="search_partName_text" value="${param.search_partName_text}" />
<div class="min_part_enroll">
@@ -807,11 +784,9 @@ function fn_excelExport(pGridObj,pFileName){
</c:if>
</h2>
<div class="btnArea">
<!--
<input type="button" value="Excel Download" class="plm_btns" id="btnExcel">
-->
<input type="button" value="정전개 조회" class="plm_btns" id="btnSearchAscending">
<input type="button" value="역전개 조회" class="plm_btns" id="btnSearchDescending">
<input type="button" value="정전개 조회" class="plm_btns" id="btnSearchAscending">
<input type="button" value="역전개 조회" class="plm_btns" id="btnSearchDescending">
<input type="button" value="Excel Download" class="plm_btns excel" id="btnExcel">
</div>
</div>
<div id="plmSearchZon">

View File

@@ -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"));
}
%>
<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns="http://www.w3.org/TR/REC-html40">
<head>
@@ -22,24 +31,101 @@ response.setHeader("Content-Description", "JSP Generated Data");
<meta name=ProgId content=Excel.Sheet>
<meta name=Generator content="Microsoft Excel 11">
<title><%=Constants.SYSTEM_NAME%></title>
<script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
<script>
</script>
</head>
<body class="backcolor">
<form name="form1" action="" method="post">
<section class="min_part_search">
<div class="pdm_menu_name">
<h2>
<span><%=excelName%></span>
<span>BOM 조회(정전개)</span>
</h2>
</div>
<div class="contents_page_basic_margin">
<div class="pdm_table_wrap">
<%
out.println(request.getParameter("csvBuffer"));
%>
<table class="pdm_table_noImg" style="text-align:center;" border="1">
<tr class="pdm_thead" align="center" style="background:yellow; font-weight:bold;">
<%
for(int i = 1; i <= maxLevel; i++){
%>
<td><%=i%></td>
<%
}
%>
<td>품번</td>
<td>품명</td>
<td>수량</td>
<td>항목수량</td>
<td>3D</td>
<td>2D</td>
<td>PDF</td>
<td>재료</td>
<td>열처리경도</td>
<td>열처리방법</td>
<td>표면처리</td>
<td>메이커</td>
<td>범주 이름</td>
<td>비고</td>
</tr>
<%
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" : "";
%>
<tr>
<%
for(int j = 1; j <= maxLevel; j++){
if(level == j){
%>
<td align="center">*</td>
<%
} else {
%>
<td></td>
<%
}
}
%>
<td style="text-align:left !important;"><%=partNo%></td>
<td style="text-align:left !important;"><%=partName%></td>
<td align="center"><%=qty%></td>
<td align="center"><%=pQty%></td>
<td align="center"><%=has3d%></td>
<td align="center"><%=has2d%></td>
<td align="center"><%=hasPdf%></td>
<td style="text-align:left !important;"><%=material%></td>
<td style="text-align:left !important;"><%=heatTreatmentHardness%></td>
<td style="text-align:left !important;"><%=heatTreatmentMethod%></td>
<td style="text-align:left !important;"><%=surfaceTreatment%></td>
<td style="text-align:left !important;"><%=maker%></td>
<td align="center"><%=partTypeTitle%></td>
<td style="text-align:left !important;"><%=remark%></td>
</tr>
<%
}
}
%>
</table>
</div>
</div>
</section>

View File

@@ -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"));
}
%>
<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns="http://www.w3.org/TR/REC-html40">
<head>
@@ -24,10 +31,6 @@ ArrayList list = (ArrayList)request.getAttribute("LIST");
<meta name=ProgId content=Excel.Sheet>
<meta name=Generator content="Microsoft Excel 11">
<title><%=Constants.SYSTEM_NAME%></title>
<script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
<script>
</script>
</head>
<body class="backcolor">
<form name="form1" action="" method="post">
@@ -40,143 +43,87 @@ ArrayList list = (ArrayList)request.getAttribute("LIST");
<div class="contents_page_basic_margin">
<div class="pdm_table_wrap">
<table class="pdm_table_noImg" style="text-align:center;" border="1">
<tr class="pdm_thead" align="center" style="background:yellow; font-weight:bold;">
<td>Level</td>
<td>품번</td>
<td>품명</td>
<td>수량</td>
<td>단위</td>
<td>ECO.No</td>
<td>ECO.Date</td>
<td>REV</td>
<td>ECD</td>
<td>ERP</td>
<td>재질</td>
<td>원소재사이즈</td>
<td>도금</td>
<td>도장</td>
<td>Cavity</td>
<td>제품</td>
<td>스프루</td>
<td>금형구분</td>
<td>생산구분</td>
<td>금형업체</td>
<td>부자재업체</td>
<td>도금/도장업체</td>
<td>원소재업체</td>
<td>비고</td>
</tr>
<%
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 = "-";
}
%>
<tr class="dataTr" data-LEVEL="<%=level%>" data-REAL_LEVEL="<%=lev%>" data-BOM_REPORT_OBJID="<%=bomReportObjId%>" data-TOP_OBJID="<%=topObjId%>" data-SUB_TOP_OBJID="<%=subTopObjId%>" style="">
<td align="center"><%=baseLevel%></td>
<td style="text-align:left !important;">
<tr class="pdm_thead" align="center" style="background:yellow; font-weight:bold;">
<%
for(int j = 0 ; j < Integer.parseInt(level) ; j++){
for(int i = 1; i <= maxLevel; i++){
%>
&nbsp;
<td><%=i%></td>
<%
}
%>
<%=partNo%>
</td>
<td style="text-align:left !important;" title="<%=partName%>">&nbsp;<%=partName%></td>
<td>품번</td>
<td>품명</td>
<td>수량</td>
<td>항목수량</td>
<td>3D</td>
<td>2D</td>
<td>PDF</td>
<td>재료</td>
<td>열처리경도</td>
<td>열처리방법</td>
<td>표면처리</td>
<td>메이커</td>
<td>범주 이름</td>
<td>비고</td>
</tr>
<%
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" : "";
%>
<tr>
<%
for(int j = 1; j <= maxLevel; j++){
if(level == j){
%>
<td align="center">*</td>
<%
} else {
%>
<td></td>
<%
}
}
%>
<td style="text-align:left !important;"><%=partNo%></td>
<td style="text-align:left !important;"><%=partName%></td>
<td align="center"><%=qty%></td>
<td align="center"><%=ea%></td>
<td align="center"><%=ecoNo%></td>
<td align="center"><%=ecoDate%></td>
<td align="center"><%=rev%></td>
<td align="center"><%=ecdTitle%></td>
<td align="center"><%=erp%></td>
<td align="center"><%=materialName%></td>
<td align="center"><%=thickness%></td>
<td align="center"><%=plated%></td>
<td align="center"><%=stamp%></td>
<td align="center"><%=cavity%></td>
<td align="center"><%=weight%></td>
<td align="center"><%=sprue%></td>
<td align="center"><%=m_c_name%></td>
<td align="center"><%=comm_name%></td>
<td align="center"><%=c_m_name%></td>
<td align="center"><%=c_s_m_name%></td>
<td align="center"><%=c_p_p_name%></td>
<td align="center"><%=c_e_name%></td>
<td align="center"><%=remarks%></td>
<td align="center"><%=pQty%></td>
<td align="center"><%=has3d%></td>
<td align="center"><%=has2d%></td>
<td align="center"><%=hasPdf%></td>
<td style="text-align:left !important;"><%=material%></td>
<td style="text-align:left !important;"><%=heatTreatmentHardness%></td>
<td style="text-align:left !important;"><%=heatTreatmentMethod%></td>
<td style="text-align:left !important;"><%=surfaceTreatment%></td>
<td style="text-align:left !important;"><%=maker%></td>
<td align="center"><%=partTypeTitle%></td>
<td style="text-align:left !important;"><%=remark%></td>
</tr>
<%
}
}
%>
</table>
</div>

View File

@@ -1399,9 +1399,28 @@ public class PartMngController {
@RequestMapping("/partMng/structureAscendingExcelList.do")
public String structureAscendingExcelList(HttpServletRequest request, @RequestParam Map<String, Object> 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<String, Object> paramMap){
try {
// 역전개 데이터 조회
List resultList = partMngService.getStructureDescendingList(request, paramMap);
request.setAttribute("LIST", resultList);
} catch(Exception e) {
e.printStackTrace();
}
return "/partMng/structureDescendingListExcel";
}
/**
* 정전개 멀티 목록
* @param request