From a3fa1bdb7f1345ae12200712a8cb0dafeeed2ee8 Mon Sep 17 00:00:00 2001 From: mjkhan21 Date: Wed, 23 Jul 2025 15:23:06 +0900 Subject: [PATCH] =?UTF-8?q?=EC=9A=B0=ED=8E=B8=EB=93=B1=EB=A1=9D=20?= =?UTF-8?q?=ED=8C=8C=EC=9D=BC=20=EC=83=9D=EC=84=B1=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../xit/fims/sndb/web/Sndb01Controller.java | 34 +++++++++++++------ 1 file changed, 23 insertions(+), 11 deletions(-) diff --git a/src/main/java/cokr/xit/fims/sndb/web/Sndb01Controller.java b/src/main/java/cokr/xit/fims/sndb/web/Sndb01Controller.java index 5072ecfe..d032418e 100644 --- a/src/main/java/cokr/xit/fims/sndb/web/Sndb01Controller.java +++ b/src/main/java/cokr/xit/fims/sndb/web/Sndb01Controller.java @@ -2,6 +2,7 @@ package cokr.xit.fims.sndb.web; import java.io.InputStream; import java.util.ArrayList; +import java.util.Comparator; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -481,23 +482,34 @@ public class Sndb01Controller extends ApplicationController { return new ModelAndView("downloadView") .addObject("download", xlsx.getDownloadable().setFilename("계고장 발송상세" + "_목록_" + now() + ".xlsx")); } else { + List sorted = list.stream() + .collect(Collectors.groupingBy(row -> row.string("RCPN_NM"))).entrySet().stream() + .map(entry -> { + List rows = entry.getValue(); + DataObject first = rows.get(0).set("TNOCS", rows.size()); + return first; + }) + .collect(Collectors.toCollection(ArrayList::new)); + sorted.sort(Comparator.comparing(row -> row.string("RCPN_NM"))); + try (InputStream input = new ClassPathResource("template/" + template).getInputStream()) { int rowIndex = 1; XLSWriter xlsx = new XLSWriter().template(input).worksheet(0); - for (DataObject row: list) { + for (DataObject row: sorted) { xlsx.cell(rowIndex, 0) - .rowValues(List.of("보통", "환부", "규격", 25)) - .cell(rowIndex, 4) + .rowValues(List.of("규격", 25)) // 규격, 중량 + .cell(rowIndex, 2) .rowValues(List.of( - row.get("RCPN_NM"), - row.get("RCPN_ZIP"), - row.get("RCPN_ADDR"), - row.get("RCPN_DTL_ADDR"), - ifEmpty(row.get("RTPYR_MBL_TELNO"), () -> row.get("RTPYR_TELNO")), - row.get("SNDNG_DTL_ID"), - row.get("TTL_NM"), - row.get("ETC_CN") + ifEmpty(row.get("TNOCS"), () -> 0), // 통수 + row.get("RCPN_NM"), // 수취인 + row.get("RCPN_ZIP"), // 우편번호 + row.get("RCPN_ADDR"), // 기본주소 + row.get("RCPN_DTL_ADDR"), // 상세주소 + blankIfEmpty(row.get("RTPYR_MBL_TELNO")), // 휴대폰 + row.get("SNDNG_DTL_ID"), // 문서번호 <- 발송상세아이디 + row.get("TTL_NM"), // 문서제목 + blankIfEmpty(row.get("ETC_CN")) // 비고 )); ++rowIndex; }