From b7d47293429644618293536d3b0149f4bc7f82fc Mon Sep 17 00:00:00 2001 From: "LAPTOP-L3VE7KK2\\USER" Date: Fri, 22 Nov 2024 10:45:53 +0900 Subject: [PATCH] =?UTF-8?q?=EA=B2=AC=EC=A0=81=EC=84=9C=20=EC=97=91?= =?UTF-8?q?=EC=85=80=EB=8B=A4=EC=9A=B4=EB=A1=9C=EB=93=9C=20=EC=8B=9C?= =?UTF-8?q?=ED=8A=B8=20=EC=82=AD=EC=A0=9C=20=EA=B8=B0=EB=8A=A5=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../qcast/biz/estimate/EstimateService.java | 95 +++++++++++++----- .../com/interplug/qcast/util/ExcelUtil.java | 21 ++-- ...el_download_quotation_detail_template.xlsx | Bin 46393 -> 46494 bytes 3 files changed, 81 insertions(+), 35 deletions(-) diff --git a/src/main/java/com/interplug/qcast/biz/estimate/EstimateService.java b/src/main/java/com/interplug/qcast/biz/estimate/EstimateService.java index 573acfc8..4c0d3087 100644 --- a/src/main/java/com/interplug/qcast/biz/estimate/EstimateService.java +++ b/src/main/java/com/interplug/qcast/biz/estimate/EstimateService.java @@ -34,7 +34,10 @@ import com.interplug.qcast.util.InterfaceQsp; import com.interplug.qcast.util.PdfUtil; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; +import java.io.InputStream; import java.math.BigDecimal; import java.text.SimpleDateFormat; import java.util.ArrayList; @@ -44,6 +47,8 @@ import java.util.Map; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; +import org.apache.poi.ss.usermodel.Workbook; +import org.apache.poi.ss.usermodel.WorkbookFactory; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.springframework.beans.factory.annotation.Autowired; @@ -977,28 +982,30 @@ public class EstimateService { // SchDrawingFlg (1 : 견적서,2 : 발전시뮬레이션, 3 : 도면, 4 : 가대) // ex) 1|2|3|4 - if (estimateRequest.getSchDrawingFlg().indexOf("1") > -1) { - arrSection[iSection] = "div.section1"; - iSection++; - arrSection[iSection] = "div.section2"; - iSection++; - } + if (!StringUtils.isEmpty(estimateRequest.getSchDrawingFlg())) { + if (estimateRequest.getSchDrawingFlg().indexOf("1") > -1) { + arrSection[iSection] = "div.section1"; + iSection++; + arrSection[iSection] = "div.section2"; + iSection++; + } - if (estimateRequest.getSchDrawingFlg().indexOf("2") > -1) { - arrSection[iSection] = "div.section3"; // 발전시뮬레이션 - iSection++; - } + if (estimateRequest.getSchDrawingFlg().indexOf("2") > -1) { + arrSection[iSection] = "div.section3"; // 발전시뮬레이션 + iSection++; + } - if (estimateRequest.getSchDrawingFlg().indexOf("3") > -1) { - arrSection[iSection] = "div.section4"; // 도면 - iSection++; - arrSection[iSection] = "div.section5"; // 도면 - iSection++; - } + if (estimateRequest.getSchDrawingFlg().indexOf("3") > -1) { + arrSection[iSection] = "div.section4"; // 도면 + iSection++; + arrSection[iSection] = "div.section5"; // 도면 + iSection++; + } - if (estimateRequest.getSchDrawingFlg().indexOf("4") > -1) { - arrSection[iSection] = "div.section6"; - iSection++; + if (estimateRequest.getSchDrawingFlg().indexOf("4") > -1) { + arrSection[iSection] = "div.section6"; + iSection++; + } } // pdf 다운로드 @@ -1006,16 +1013,52 @@ public class EstimateService { } else { + Workbook workbook = null; + String excelTemplateNam = "excel_download_quotation_detail_template.xlsx"; ExcelUtil excelUtil = new ExcelUtil(); - excelUtil.download( - request, - response, - excelUtil.convertVoToMap(estimateResponse), - excelUtil.convertListToMap(estimateItemList), - estimateRequest.getFileName(), - excelTemplateNam); + byte[] excelBytes = + excelUtil.download( + request, + response, + excelUtil.convertVoToMap(estimateResponse), + excelUtil.convertListToMap(estimateItemList), + excelTemplateNam); + + InputStream in = new ByteArrayInputStream(excelBytes); + workbook = WorkbookFactory.create(in); // JXLS POI 엑셀로 재변환 + + // SchDrawingFlg (1 : 견적서,2 : 발전시뮬레이션, 3 : 도면, 4 : 가대) + // ex) 1|2|3|4 + if (!StringUtils.isEmpty(estimateRequest.getSchDrawingFlg())) { + if (estimateRequest.getSchDrawingFlg().indexOf("1") < 0) { + workbook.removeSheetAt(workbook.getSheetIndex("見積書")); + workbook.removeSheetAt(workbook.getSheetIndex("特異事項")); + } + + if (estimateRequest.getSchDrawingFlg().indexOf("2") < 0) { + workbook.removeSheetAt(workbook.getSheetIndex("発電シミュレーション")); + } + + if (estimateRequest.getSchDrawingFlg().indexOf("3") < 0) { + workbook.removeSheetAt(workbook.getSheetIndex("割付図・系統図")); + workbook.removeSheetAt(workbook.getSheetIndex("架台図")); + } + } + + // 추후 개발 (가대중량표) + if (estimateRequest.getSchDrawingFlg().indexOf("4") < 0) {} + + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + workbook.write(byteArrayOutputStream); + excelBytes = byteArrayOutputStream.toByteArray(); + + response.setHeader( + "Content-Disposition", + "attachment; filename=\"" + estimateRequest.getFileName() + ".xlsx\""); + response.addHeader("Access-Control-Expose-Headers", "Content-Disposition"); + response.getOutputStream().write(excelBytes); } } catch (Exception e) { diff --git a/src/main/java/com/interplug/qcast/util/ExcelUtil.java b/src/main/java/com/interplug/qcast/util/ExcelUtil.java index 9d1a543b..3f75ead1 100644 --- a/src/main/java/com/interplug/qcast/util/ExcelUtil.java +++ b/src/main/java/com/interplug/qcast/util/ExcelUtil.java @@ -29,40 +29,43 @@ public class ExcelUtil { * @param response HttpServletResponse * @param map 엑셀 출력데이터 * @param list 엑셀 출력 목록 데이터 - * @param fileName 다운로드 파일명 * @param templateFileName * @throws ParsePropertyException * @throws InvalidFormatException */ - public void download( + public byte[] download( HttpServletRequest request, HttpServletResponse response, Map map, List> list, - String fileName, String templateFileName) throws ParsePropertyException, InvalidFormatException { + + byte[] excelBytes = null; + try { String templateFilePath = "template/excel/" + templateFileName; InputStream templateStream = PdfUtil.class.getClassLoader().getResourceAsStream(templateFilePath); - InputStream is = new BufferedInputStream(templateStream); + // InputStream is = new BufferedInputStream(templateStream); - response.setHeader("Content-Disposition", "attachment; filename=\"" + fileName + ".xlsx\""); - response.addHeader("Access-Control-Expose-Headers", "Content-Disposition"); - - try (OutputStream os = response.getOutputStream()) { + try (InputStream is = new BufferedInputStream(templateStream)) { Context context = new Context(); context.putVar("data", map); context.putVar("list", list); - JxlsHelper.getInstance().processTemplate(is, os, context); + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + JxlsHelper.getInstance().processTemplate(is, byteArrayOutputStream, context); + + excelBytes = byteArrayOutputStream.toByteArray(); } } catch (Exception e) { log.debug(e.getMessage()); } + + return excelBytes; } /** diff --git a/src/main/resources/template/excel/excel_download_quotation_detail_template.xlsx b/src/main/resources/template/excel/excel_download_quotation_detail_template.xlsx index e7d0fac31fc2b06aaf8819c68a0ec35791fabfab..325d7ff7ae780d5e73640ae6f8428921f8585017 100644 GIT binary patch delta 18581 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ƭL5$PRrsdCo?Erma1b8+tS+i*3?kY?$o0$(HfTiX ziaYowPrkiLNgAA`7#SF*0SjnB6b1E@B{thJDa@Q4vDtoYOUoBSFm ma&7@w#CMB6Q~hEvbI}%k#;=nvZLwucoh-0bneD+Uka+-ji>TTF delta 18294 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