diff --git a/src/main/java/geoinfo/drilling/inquiry/DrillingInquiryController.java b/src/main/java/geoinfo/drilling/inquiry/DrillingInquiryController.java index 2de1d977..cd6ba7cc 100644 --- a/src/main/java/geoinfo/drilling/inquiry/DrillingInquiryController.java +++ b/src/main/java/geoinfo/drilling/inquiry/DrillingInquiryController.java @@ -387,26 +387,31 @@ public class DrillingInquiryController { idx++; // sb.append(row.get("cid")).append(","); - sb.append(s(row.get("constName"))).append(","); - sb.append(s(row.get("projectStateCodeName"))).append(","); + sb.append(csv(row.get("constName"))).append(","); + sb.append(csv(row.get("projectStateCodeName"))).append(","); // 사업기간 constStartDate ~ constEndDate - sb.append(s(row.get("constStartDate"))).append(" ~ ").append(s(row.get("constEndDate"))).append(","); + sb.append(csv(row.get("constStartDate"))).append(" ~ ").append(csv(row.get("constEndDate"))).append(","); - sb.append(s(row.get("constStateCodeName"))).append(","); - sb.append(s(row.get("masterCompanyDept"))).append(","); - sb.append(s(row.get("masterCompanyAdmin"))).append(","); - sb.append(s(row.get("masterCompanyTel"))).append(","); - sb.append(s(row.get("constCompanyDept"))).append(","); - sb.append(s(row.get("constCompanyAdmin"))).append(","); - sb.append(s(row.get("constCompanyTel"))).append("\n"); + sb.append(csv(row.get("constStateCodeName"))).append(","); + sb.append(csv(row.get("masterCompanyDept"))).append(","); + sb.append(csv(row.get("masterCompanyAdmin"))).append(","); + sb.append(csv(row.get("masterCompanyTel"))).append(","); + sb.append(csv(row.get("coinstCompanyDept"))).append(","); + sb.append(csv(row.get("constCompanyAdmin"))).append(","); + sb.append(csv(row.get("constCompanyTel"))).append("\n"); } byte[] csvBytes = sb.toString().getBytes("UTF-8"); byte[] bom = new byte[] {(byte)0xEF, (byte)0xBB, (byte)0xBF}; // ---------- ★ 한글 파일명 브라우저별 처리 ---------- - String filename = "건설현장조회.csv"; + String excelFileNm = "건설현장조회"; + if (params.get("excelFileNm") != null && !"".equals(params.get("excelFileNm"))) { + excelFileNm = (String) params.get("excelFileNm"); + + } + String filename = excelFileNm+".csv"; String userAgent = request.getHeader("User-Agent"); String encodedFilename; @@ -434,4 +439,26 @@ public class DrillingInquiryController { private String s(Object o) { return o == null ? "" : o.toString(); } + + private String csv(Object o) { + if (o == null) return ""; + + String value = o.toString(); + + boolean needQuote = + value.contains(",") || + value.contains("\"") || + value.contains("\n") || + value.contains("\r"); + + if (value.contains("\"")) { + value = value.replace("\"", "\"\""); + } + + if (needQuote) { + value = "\"" + value + "\""; + } + + return value; + } } diff --git a/src/main/webapp/WEB-INF/views/drilling/inquiry/drilling_inquiry.jsp b/src/main/webapp/WEB-INF/views/drilling/inquiry/drilling_inquiry.jsp index 14cedda5..9cc5f537 100644 --- a/src/main/webapp/WEB-INF/views/drilling/inquiry/drilling_inquiry.jsp +++ b/src/main/webapp/WEB-INF/views/drilling/inquiry/drilling_inquiry.jsp @@ -441,6 +441,7 @@ if (request.getSession().getAttribute("CLS") == null || "2".equals(request.getSe params.append("constCompanyAdmin", trim($('#company-admin').val())); params.append("constCompanyTel", trim($('#company-tel').val())); params.append("excelDownload", "Y"); + params.append("excelFileNm", "건설현장 조회"); // 페이지 정보 const pagingEle = document.getElementById('paging'); diff --git a/src/main/webapp/WEB-INF/views/drilling/inquiry/drilling_inquiry_project.jsp b/src/main/webapp/WEB-INF/views/drilling/inquiry/drilling_inquiry_project.jsp index cbdb6f93..21597dc4 100644 --- a/src/main/webapp/WEB-INF/views/drilling/inquiry/drilling_inquiry_project.jsp +++ b/src/main/webapp/WEB-INF/views/drilling/inquiry/drilling_inquiry_project.jsp @@ -239,6 +239,35 @@ if (request.getSession().getAttribute("CLS") == null || "2".equals(request.getSe }); + /** + * 발주기관 목록화면 tr 드래그 시 상세화면 이동 방지처리 + * 드래그 이벤트와 클릭이벤트를 구분하여 감지한다. + */ + function clickExcelListDown() { + const params = new URLSearchParams(); + + params.append("constTag", trim($('#const-tag').val())); + params.append("constName", trim($('#const-name').val())); + params.append("constStartDate", trim($('#const-start-date').val())); + params.append("constEndDate", trim($('#const-end-date').val())); + params.append("constStateCode", trim($('#const-state-code').val())); + params.append("projectStateCode", 6); + params.append("constCompanyName", trim($('#company-dept').val())); + params.append("constCompanyAdmin", trim($('#company-admin').val())); + params.append("constCompanyTel", trim($('#company-tel').val())); + params.append("excelDownload", "Y"); + params.append("excelFileNm", "관리 시추정보 현황"); + + // 페이지 정보 + const pagingEle = document.getElementById('paging'); + params.append("nPage", pagingEle.getAttribute("data-npage")); + params.append("nCount", pagingEle.getAttribute("data-ncount")); + + // AJAX가 아닌 직접 다운로드 요청 + window.location.href = "/drilling/inquiry/csvDownload.do?" + params.toString(); + $('#excelDownload').val(""); + } + /** * 발주기관 목록화면 tr 드래그 시 상세화면 이동 방지처리 * 드래그 이벤트와 클릭이벤트를 구분하여 감지한다. @@ -287,6 +316,7 @@ if (request.getSession().getAttribute("CLS") == null || "2".equals(request.getSe