From 7d6e26d2929e80247ff3d30fe68e4ba436465255 Mon Sep 17 00:00:00 2001 From: "vluk@2fi-solutions.com.hk" Date: Tue, 23 Dec 2025 00:05:44 +0800 Subject: [PATCH] no message --- .../modules/lioner/client/entity/Client.java | 24 ++++++- .../lioner/client/req/UpdateClientReq.java | 21 ++++++ .../lioner/pdf/service/PdfMergeService.java | 6 +- .../lioner/pdf/service/PdfService.java | 66 +++++++++++++++++-- .../modules/lioner/pdf/web/PdfController.java | 22 +++++-- .../01_add_field_real.sql | 7 ++ 6 files changed, 133 insertions(+), 13 deletions(-) create mode 100644 src/main/resources/db/changelog/changes/36_client_add_real_est.sql/01_add_field_real.sql diff --git a/src/main/java/com/ffii/lioner/modules/lioner/client/entity/Client.java b/src/main/java/com/ffii/lioner/modules/lioner/client/entity/Client.java index f527c0e..ab03b55 100644 --- a/src/main/java/com/ffii/lioner/modules/lioner/client/entity/Client.java +++ b/src/main/java/com/ffii/lioner/modules/lioner/client/entity/Client.java @@ -223,6 +223,12 @@ public class Client extends BaseEntity{ @Column private String netBusinessInterestLast; + @Column + private String realEstateCurrent; + + @Column + private String realEstateLast; + @Column private String personalPropertiesCurrent; @@ -804,7 +810,7 @@ public class Client extends BaseEntity{ public void setNetBusinessInterestLast(String netBusinessInterestLast) { this.netBusinessInterestLast = netBusinessInterestLast; } - + public String getPersonalPropertiesCurrent() { return personalPropertiesCurrent; } @@ -1204,5 +1210,21 @@ public class Client extends BaseEntity{ public void setPhone1Code(String phone1Code) { this.phone1Code = phone1Code; } + + public String getRealEstateCurrent() { + return realEstateCurrent; + } + + public void setRealEstateCurrent(String realEstateCurrent) { + this.realEstateCurrent = realEstateCurrent; + } + + public String getRealEstateLast() { + return realEstateLast; + } + + public void setRealEstateLast(String realEstateLast) { + this.realEstateLast = realEstateLast; + } } diff --git a/src/main/java/com/ffii/lioner/modules/lioner/client/req/UpdateClientReq.java b/src/main/java/com/ffii/lioner/modules/lioner/client/req/UpdateClientReq.java index b164945..120e75d 100644 --- a/src/main/java/com/ffii/lioner/modules/lioner/client/req/UpdateClientReq.java +++ b/src/main/java/com/ffii/lioner/modules/lioner/client/req/UpdateClientReq.java @@ -2,6 +2,7 @@ package com.ffii.lioner.modules.lioner.client.req; import java.time.LocalDate; +import jakarta.persistence.Column; import jakarta.validation.constraints.Size; public class UpdateClientReq { @@ -152,6 +153,10 @@ public class UpdateClientReq { String otherNonLiquidLast; + String realEstateCurrent; + + String realEstateLast; + String personalLoansCurrent; String personalLoansLast; @@ -1084,5 +1089,21 @@ public class UpdateClientReq { this.corAddressPostalCode = corAddressPostalCode; } + public String getRealEstateCurrent() { + return realEstateCurrent; + } + + public void setRealEstateCurrent(String realEstateCurrent) { + this.realEstateCurrent = realEstateCurrent; + } + + public String getRealEstateLast() { + return realEstateLast; + } + + public void setRealEstateLast(String realEstateLast) { + this.realEstateLast = realEstateLast; + } + } diff --git a/src/main/java/com/ffii/lioner/modules/lioner/pdf/service/PdfMergeService.java b/src/main/java/com/ffii/lioner/modules/lioner/pdf/service/PdfMergeService.java index a04be68..b67a111 100644 --- a/src/main/java/com/ffii/lioner/modules/lioner/pdf/service/PdfMergeService.java +++ b/src/main/java/com/ffii/lioner/modules/lioner/pdf/service/PdfMergeService.java @@ -122,7 +122,7 @@ public class PdfMergeService { final int MLFNA_REP_PAGE = 4; final int SLFNA_REP_PAGE = 5; - final int SLAPP_REP_PAGE = 16; + final int SLAPP_REP_PAGE = 17; final int SLGII_REP_PAGE = 13; // --- STEP 1: Flatten PDF A and get the modified bytes --- @@ -281,8 +281,8 @@ public class PdfMergeService { // UPDATED CONSTANTS FOR NEW REQUIREMENTS final int MLB03S_REP_PAGE_A = 13; - final int SLAPP_REP_START_A = 18; - final int SLAPP_REP_END_A = 19; + final int SLAPP_REP_START_A = 19; + final int SLAPP_REP_END_A = 20; final int SLAPP_REP_COUNT_B = 2; final int SLGII_REP_START_A = 15; final int SLGII_REP_END_A = 16; diff --git a/src/main/java/com/ffii/lioner/modules/lioner/pdf/service/PdfService.java b/src/main/java/com/ffii/lioner/modules/lioner/pdf/service/PdfService.java index 29bf2fb..f07162f 100644 --- a/src/main/java/com/ffii/lioner/modules/lioner/pdf/service/PdfService.java +++ b/src/main/java/com/ffii/lioner/modules/lioner/pdf/service/PdfService.java @@ -21,6 +21,7 @@ import org.apache.pdfbox.pdmodel.PDDocument; import org.apache.pdfbox.pdmodel.interactive.form.PDAcroForm; import org.apache.pdfbox.pdmodel.interactive.form.PDButton; import org.apache.pdfbox.pdmodel.interactive.form.PDField; +import org.checkerframework.checker.units.qual.s; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; @@ -391,7 +392,7 @@ public class PdfService extends AbstractBaseEntityService commonField.getOthers().put("SLAppPolicyNo", "611" + fieldValue); + case "1_6_last" -> commonField.getOthers().put("SLAppAge", fieldValue); + case "1_2_name_ch" -> commonField.setNameChi(fieldValue); case "ch1_4_m" -> commonField.setGenderMale(fieldValue); @@ -4579,6 +4629,8 @@ public class PdfService extends AbstractBaseEntityService d = pdfService.getFilledFormPdf(id); - String formCode = (String) d.get("formCode"); - String filename = formCode + "-" + id + ".pdf"; + String templateName = (String) d.get("templateName"); + String lastname = StringUtils.trimToEmpty((String) d.get("lastname")); + String firstname = StringUtils.trimToEmpty((String) d.get("firstname")); + lastname = lastname.replaceAll("\\s+", ""); + firstname = firstname.replaceAll("\\s+", ""); + String filename = lastname + firstname + "-" + templateName + ".pdf"; Long fileId = Optional.ofNullable(d.get("fileId")) .map(val -> ((Integer) val).longValue()) @@ -179,7 +184,8 @@ public class PdfController { // --- 4. Build ResponseEntity --- HttpHeaders headers = new HttpHeaders(); // Use attachment for download, or inline for display in browser - headers.setContentDispositionFormData("attachment", filename); + headers.add("Access-Control-Expose-Headers", "Content-Disposition"); + headers.add(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\"" + filename + "\""); headers.setContentType(MediaType.APPLICATION_PDF); headers.setContentLength(finalPdfBytes.length); @@ -233,7 +239,12 @@ public class PdfController { // --- 1. Fetch Data & Set up Variables --- Map d = pdfService.getFilledFormPdf(id); String formCode = (String) d.get("formCode"); - String filename = formCode + "-" + id + ".pdf"; + String templateName = (String) d.get("templateName"); + String lastname = StringUtils.trimToEmpty((String) d.get("lastname")); + String firstname = StringUtils.trimToEmpty((String) d.get("firstname")); + lastname = lastname.replaceAll("\\s+", ""); + firstname = firstname.replaceAll("\\s+", ""); + String filename = lastname + firstname + "-" + templateName + ".pdf"; Long fileId = Optional.ofNullable(d.get("fileId")) .map(val -> ((Integer) val).longValue()) @@ -286,7 +297,8 @@ public class PdfController { // --- 4. Build ResponseEntity --- HttpHeaders headers = new HttpHeaders(); // Use attachment for download, or inline for display in browser - headers.setContentDispositionFormData("attachment", filename); + headers.add("Access-Control-Expose-Headers", "Content-Disposition"); + headers.add(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\"" + filename + "\""); headers.setContentType(MediaType.APPLICATION_PDF); headers.setContentLength(finalPdfBytes.length); diff --git a/src/main/resources/db/changelog/changes/36_client_add_real_est.sql/01_add_field_real.sql b/src/main/resources/db/changelog/changes/36_client_add_real_est.sql/01_add_field_real.sql new file mode 100644 index 0000000..a9c6ed8 --- /dev/null +++ b/src/main/resources/db/changelog/changes/36_client_add_real_est.sql/01_add_field_real.sql @@ -0,0 +1,7 @@ +--liquibase formatted sql + +--changeset vin:add realEstate + +ALTER TABLE `lionerdb`.`client` +ADD COLUMN `realEstateCurrent` VARCHAR(30) NULL AFTER `corAddressPostalCode`, +ADD COLUMN `realEstateLast` VARCHAR(30) NULL AFTER `realEstateCurrent`; \ No newline at end of file