From 8dfa81d2796cc4f2edae1d0c47bc7c4858503733 Mon Sep 17 00:00:00 2001 From: hjjeong Date: Fri, 27 Feb 2026 11:15:08 +0900 Subject: [PATCH] =?UTF-8?q?=EC=A3=BC=EB=AC=B8=EC=84=9C=20=EC=BB=AC?= =?UTF-8?q?=EB=9F=BC=EC=88=9C=EC=84=9C=20=EC=98=A4=EB=A5=98=20=EC=9E=AC?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/pms/service/ApprovalService.java | 298 ++++++++++++----------- 1 file changed, 160 insertions(+), 138 deletions(-) diff --git a/src/com/pms/service/ApprovalService.java b/src/com/pms/service/ApprovalService.java index e3665df..48a1132 100644 --- a/src/com/pms/service/ApprovalService.java +++ b/src/com/pms/service/ApprovalService.java @@ -2168,8 +2168,8 @@ public class ApprovalService { private String buildOrderContentsHtml(Map orderInfo, List itemList){ StringBuilder html = new StringBuilder(); - String contractNo = CommonUtils.checkNull(orderInfo.get("CONTRACT_NO")); String orderDate = CommonUtils.checkNull(orderInfo.get("ORDER_DATE")); + String poNo = escapeHtml(CommonUtils.checkNull(orderInfo.get("PO_NO"))); String clientNm = escapeHtml(CommonUtils.checkNull(orderInfo.get("CLIENT_NM"))); String clientBusRegNo = escapeHtml(CommonUtils.checkNull(orderInfo.get("CLIENT_BUS_REG_NO"))); String clientCeoNm = escapeHtml(CommonUtils.checkNull(orderInfo.get("CLIENT_CEO_NM"))); @@ -2183,63 +2183,79 @@ public class ApprovalService { String vat = CommonUtils.checkNull(orderInfo.get("ORDER_VAT")); String totalAmount = CommonUtils.checkNull(orderInfo.get("ORDER_TOTAL_AMOUNT")); String vatNote = escapeHtml(CommonUtils.checkNull(orderInfo.get("VAT_NOTE"))); + String regDatetime = escapeHtml(CommonUtils.checkNull(orderInfo.get("REG_DATETIME"))); - final String TH = "style='border:1px solid #999; padding:4px 8px; background-color:#f5f5f5; text-align:center; font-weight:bold; font-size:12px;'"; - final String TD = "style='border:1px solid #999; padding:4px 8px; font-size:12px;'"; - final String TD_C = "style='border:1px solid #999; padding:4px 8px; font-size:12px; text-align:center;'"; - final String TD_R = "style='border:1px solid #999; padding:4px 8px; font-size:12px; text-align:right;'"; + final String S = "border:1px solid #000; padding:2px 4px; font-size:11px; vertical-align:middle;"; + final String LBL = S + " text-align:center; font-weight:bold; background-color:#e8faff;"; + final String VL = LBL + " writing-mode:vertical-rl; letter-spacing:5px; font-size:12px;"; - html.append("
"); - html.append("

주 문 서

"); + html.append("
"); + html.append("

주 문 서

"); + html.append("

주문일자 : ").append(escapeHtml(orderDate)).append("

"); + html.append("

증빙번호 : ").append(poNo).append("

"); - // 헤더 - String poNo = escapeHtml(CommonUtils.checkNull(orderInfo.get("PO_NO"))); - html.append("

주문일자 : ").append(escapeHtml(orderDate)).append("

"); - html.append("

증빙번호 : ").append(poNo).append("

"); - - // 공급받는자/공급자 테이블 - html.append(""); - html.append(""); - html.append(""); - html.append(""); - html.append(""); - - html.append(""); - html.append(""); - html.append(""); - html.append(""); - - html.append(""); - html.append(""); - - html.append(""); - html.append(""); - html.append(""); - html.append(""); - html.append("
공급받는자등록번호").append(clientBusRegNo).append("공급자등록번호314-81-75146
상호").append(clientNm).append("성명").append(clientCeoNm).append("상호주식회사알피에스본사성명이동헌
주소").append(clientAddr).append("주소대전광역시 유성구 국제과학10로 8(둔곡동)
업태").append(clientBusType).append("종목").append(clientBusItem).append("업태제조업종목금속절삭가공기계,반도체제조용기계
"); - - // 납품처/담당자 - html.append(""); - html.append(""); - html.append(""); - html.append(""); - html.append(""); - html.append(""); - html.append(""); - html.append("
납품처").append(clientNm).append("전화번호").append(clientTelNo).append("팩스번호").append(clientFaxNo).append("
주소").append(clientAddr).append("담당자").append(writerName).append("C.P.번호
"); - - // 품목 테이블 - html.append(""); + // 공급받는자 / 공급자 (10컬럼: 세로3% + 라벨8% + 값auto + 라벨6% + 값9% × 2세트) + html.append("
"); + html.append(""); + html.append(""); + html.append(""); + html.append(""); + // row1: 등록번호 html.append(""); - html.append(""); - html.append(""); - html.append(""); - html.append(""); - html.append(""); - html.append(""); - html.append(""); - html.append(""); - html.append(""); + html.append(""); + html.append(""); + html.append(""); + html.append(""); + html.append(""); + html.append(""); + html.append(""); + // row2: 상호/성명 + html.append(""); + html.append(""); + html.append(""); + html.append(""); + html.append(""); + html.append(""); + // row3: 주소 + html.append(""); + html.append(""); + html.append(""); + html.append(""); + // row4: 업태/종목 + html.append(""); + html.append(""); + html.append(""); + html.append(""); + html.append(""); + html.append("
No.품번품명규격단위납기일수량단가금액공급받는자등록번호").append(clientBusRegNo).append("공 급 자등록번호314-81-75146
상 호").append(clientNm).append("성명").append(clientCeoNm).append("상 호주식회사알피에스본사성명이동헌
주 소").append(clientAddr).append("주 소대전광역시 유성구 국제과학10로 8(둔곡동)
업 태").append(clientBusType).append("종목").append(clientBusItem).append("업 태제조업종목금속절삭가공기계,반도체제조용기계
"); + + // 납품처 / 담당자 (6컬럼) + html.append(""); + html.append(""); + html.append(""); + html.append(""); + html.append(""); + html.append(""); + html.append(""); + html.append(""); + html.append(""); + html.append(""); + html.append("
납 품 처").append(clientNm).append("전화번호").append(clientTelNo).append("팩스번호").append(clientFaxNo).append("
주 소").append(clientAddr).append("담 당 자").append(writerName).append("C.P.번호
"); + + // 품목 테이블 (9컬럼) + html.append(""); + html.append(""); + html.append(""); + html.append(""); + html.append(""); + html.append(""); + html.append(""); + html.append(""); + html.append(""); + html.append(""); + html.append(""); + html.append(""); + html.append(""); html.append(""); int totalQty = 0; @@ -2253,40 +2269,42 @@ public class ApprovalService { String itemSupply = CommonUtils.checkNull(item.get("ORDER_SUPPLY_PRICE")); html.append(""); - html.append(""); - html.append(""); - html.append(""); - html.append(""); - html.append(""); - html.append(""); - html.append(""); - html.append(""); - html.append(""); + html.append(""); + html.append(""); + html.append(""); + html.append(""); + html.append(""); + html.append(""); + html.append(""); + html.append(""); + html.append(""); html.append(""); } } - // 합계 - html.append(""); - html.append(""); - html.append(""); - html.append(""); - html.append(""); + // 합계행 + html.append(""); + html.append(""); + html.append(""); + html.append(""); + html.append(""); + html.append(""); html.append("
No.품번품명규격단위납기일수량단가금액
").append(i + 1).append("").append(escapeHtml(CommonUtils.checkNull(item.get("PART_NO")))).append("").append(escapeHtml(CommonUtils.checkNull(item.get("PART_NAME")))).append("").append(escapeHtml(CommonUtils.checkNull(item.get("SPEC")))).append("").append(escapeHtml(CommonUtils.checkNull(item.get("UNIT_NAME")))).append("").append(escapeHtml(CommonUtils.checkNull(item.get("DUE_DATE")))).append("").append(formatNumber(qty)).append("").append(formatNumber(unitPrice)).append("").append(formatNumber(itemSupply)).append("").append(i + 1).append("").append(escapeHtml(CommonUtils.checkNull(item.get("PART_NO")))).append("").append(escapeHtml(CommonUtils.checkNull(item.get("PART_NAME")))).append("").append(escapeHtml(CommonUtils.checkNull(item.get("SPEC")))).append("").append(escapeHtml(CommonUtils.checkNull(item.get("UNIT_NAME")))).append("").append(escapeHtml(CommonUtils.checkNull(item.get("DUE_DATE")))).append("").append(formatNumber(qty)).append("").append(formatNumber(unitPrice)).append("").append(formatNumber(itemSupply)).append("
합 계").append(formatNumber(totalQty)).append("").append(formatNumber(supplyPrice)).append("
합 계
").append(formatNumber(totalQty)).append("").append(formatNumber(supplyPrice)).append("
"); - // 비고(합계 요약) - html.append(""); - html.append(""); - html.append(""); - html.append(""); - html.append(""); - html.append(""); + // 비고(합계 요약) - 4컬럼 + html.append("
비 고공 급 가 액 합 계").append(formatNumber(supplyPrice)).append("
부 가 가 치 세").append(formatNumber(vat)).append("
총 계").append(formatNumber(totalAmount)).append("
"); + html.append(""); + html.append(""); + html.append(""); + html.append(""); + html.append(""); + html.append(""); html.append("
비 고공 급 가 액 합 계").append(formatNumber(supplyPrice)).append("
부 가 가 치 세").append(formatNumber(vat)).append("
총 계").append(formatNumber(totalAmount)).append("
"); // 하단 부가세 구분 + 날짜 - html.append("
"); - html.append("").append(vatNote).append(""); - html.append("").append(escapeHtml(CommonUtils.checkNull(orderInfo.get("REG_DATETIME")))).append(""); - html.append("
"); + html.append(""); + html.append(""); + html.append(""); + html.append("
").append(vatNote).append("").append(regDatetime).append("
"); html.append("
"); @@ -2301,6 +2319,7 @@ public class ApprovalService { String contractNo = CommonUtils.checkNull(orderInfo.get("CONTRACT_NO")); String orderDate = CommonUtils.checkNull(orderInfo.get("ORDER_DATE")); + String poNo = CommonUtils.checkNull(orderInfo.get("PO_NO")); String clientNm = CommonUtils.checkNull(orderInfo.get("CLIENT_NM")); String clientBusRegNo = CommonUtils.checkNull(orderInfo.get("CLIENT_BUS_REG_NO")); String clientCeoNm = CommonUtils.checkNull(orderInfo.get("CLIENT_CEO_NM")); @@ -2319,55 +2338,54 @@ public class ApprovalService { html.append(""); html.append("주문서 - ").append(contractNo).append(""); html.append(""); - html.append("
주 문 서
"); - String poNo = CommonUtils.checkNull(orderInfo.get("PO_NO")); - html.append("
주문일자 : ").append(orderDate).append("
"); - html.append("
증빙번호 : ").append(poNo).append("
"); + html.append("
"); + html.append("
주 문 서
"); + html.append("
주문일자 : ").append(orderDate).append("
"); + html.append("
증빙번호 : ").append(poNo).append("
"); - // 공급받는자/공급자 - html.append(""); - html.append(""); - html.append(""); - html.append(""); - html.append(""); - - html.append(""); - html.append(""); - - html.append(""); - html.append(""); - - html.append(""); - html.append(""); + // 공급받는자 / 공급자 (10컬럼) + html.append("




등록번호").append(clientBusRegNo).append("

등록번호314-81-75146
상 호").append(clientNm).append("성명").append(clientCeoNm).append("상 호주식회사알피에스본사성명이동헌
주 소").append(clientAddr).append("주 소대전광역시 유성구 국제과학10로 8(둔곡동)
업 태").append(clientBusType).append("종목").append(clientBusItem).append("업 태제조업종목금속절삭가공기계,반도체제조용기계
"); + html.append(""); + html.append(""); + html.append(""); + html.append(""); + html.append(""); + html.append(""); + html.append(""); + html.append(""); + html.append(""); + html.append(""); + html.append(""); + html.append(""); + html.append(""); + html.append(""); + html.append(""); html.append("
공급받는자등록번호").append(clientBusRegNo).append("공 급 자등록번호314-81-75146
상 호").append(clientNm).append("성명").append(clientCeoNm).append("상 호주식회사알피에스본사성명이동헌
주 소").append(clientAddr).append("주 소대전광역시 유성구 국제과학10로 8(둔곡동)
업 태").append(clientBusType).append("종목").append(clientBusItem).append("업 태제조업종목금속절삭가공기계,반도체제조용기계
"); - // 납품처/담당자 - html.append(""); - html.append(""); - html.append(""); - html.append(""); - html.append(""); - html.append(""); - html.append(""); + // 납품처 / 담당자 (6컬럼) + html.append("
납 품 처").append(clientNm).append("전화번호").append(clientTelNo).append("팩스번호").append(clientFaxNo).append("
주 소").append(clientAddr).append("담 당 자").append(writerName).append("C.P.번호
"); + html.append(""); + html.append(""); + html.append(""); + html.append(""); + html.append(""); + html.append(""); + html.append(""); html.append("
납 품 처").append(clientNm).append("전화번호").append(clientTelNo).append("팩스번호").append(clientFaxNo).append("
주 소").append(clientAddr).append("담 당 자").append(writerName).append("C.P.번호
"); - // 품목 - html.append(""); - html.append(""); - html.append(""); - html.append(""); + // 품목 (9컬럼) + html.append("
No.품번품명규격단위납기일수량단가금액
"); + html.append(""); + html.append(""); + html.append(""); int totalQty = 0; if(itemList != null){ @@ -2378,37 +2396,41 @@ public class ApprovalService { totalQty += qty; html.append(""); - html.append(""); - html.append(""); + html.append(""); + html.append(""); html.append(""); html.append(""); - html.append(""); - html.append(""); - html.append(""); - html.append(""); - html.append(""); + html.append(""); + html.append(""); + html.append(""); + html.append(""); + html.append(""); html.append(""); } } - html.append(""); - html.append(""); - html.append(""); + // 합계 + html.append(""); + html.append(""); + html.append(""); + html.append(""); html.append("
No.품번품명규격단위납기일수량단가금액
").append(i + 1).append("").append(CommonUtils.checkNull(item.get("PART_NO"))).append("").append(i + 1).append("").append(CommonUtils.checkNull(item.get("PART_NO"))).append("").append(CommonUtils.checkNull(item.get("PART_NAME"))).append("").append(CommonUtils.checkNull(item.get("SPEC"))).append("").append(CommonUtils.checkNull(item.get("UNIT_NAME"))).append("").append(CommonUtils.checkNull(item.get("DUE_DATE"))).append("").append(formatNumber(qty)).append("").append(formatNumber(CommonUtils.checkNull(item.get("ORDER_UNIT_PRICE")))).append("").append(formatNumber(CommonUtils.checkNull(item.get("ORDER_SUPPLY_PRICE")))).append("").append(CommonUtils.checkNull(item.get("UNIT_NAME"))).append("").append(CommonUtils.checkNull(item.get("DUE_DATE"))).append("").append(formatNumber(qty)).append("").append(formatNumber(CommonUtils.checkNull(item.get("ORDER_UNIT_PRICE")))).append("").append(formatNumber(CommonUtils.checkNull(item.get("ORDER_SUPPLY_PRICE")))).append("
합 계").append(formatNumber(totalQty)).append("").append(formatNumber(supplyPrice)).append("
합 계
").append(formatNumber(totalQty)).append("").append(formatNumber(supplyPrice)).append("
"); - // 비고 - html.append(""); - html.append(""); + // 비고 (4컬럼) + html.append("
비 고
"); + html.append(""); + html.append(""); html.append(""); - html.append(""); - html.append(""); - html.append(""); + html.append(""); + html.append(""); + html.append(""); html.append("
비 고공 급 가 액 합 계").append(formatNumber(supplyPrice)).append("
부 가 가 치 세").append(formatNumber(vat)).append("
총 계").append(formatNumber(totalAmount)).append("
공 급 가 액 합 계").append(formatNumber(supplyPrice)).append("
부 가 가 치 세").append(formatNumber(vat)).append("
총 계").append(formatNumber(totalAmount)).append("
"); // 하단 부가세 구분 + 날짜 html.append("
"); html.append("").append(vatNote).append(""); html.append("").append(regDatetime).append(""); html.append("
"); + html.append("
"); html.append("");