updated code for pdf

This commit is contained in:
rajesh
2024-10-12 18:41:05 +05:30
parent 1227632681
commit f0d1af1842
2 changed files with 40 additions and 15 deletions

View File

@@ -1,5 +1,7 @@
package net.gepafin.tendermanagement.dao; package net.gepafin.tendermanagement.dao;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.itextpdf.kernel.colors.ColorConstants; import com.itextpdf.kernel.colors.ColorConstants;
import com.itextpdf.kernel.colors.DeviceRgb; import com.itextpdf.kernel.colors.DeviceRgb;
import com.itextpdf.kernel.pdf.canvas.PdfCanvas; import com.itextpdf.kernel.pdf.canvas.PdfCanvas;
@@ -12,6 +14,8 @@ import com.itextpdf.text.Font;
import com.itextpdf.text.Image; import com.itextpdf.text.Image;
import com.itextpdf.text.Rectangle; import com.itextpdf.text.Rectangle;
import com.itextpdf.text.pdf.*; import com.itextpdf.text.pdf.*;
import jakarta.servlet.http.HttpServletRequest;
import net.gepafin.tendermanagement.config.Translator; import net.gepafin.tendermanagement.config.Translator;
import net.gepafin.tendermanagement.constants.GepafinConstant; import net.gepafin.tendermanagement.constants.GepafinConstant;
import net.gepafin.tendermanagement.entities.*; import net.gepafin.tendermanagement.entities.*;
@@ -20,6 +24,7 @@ import net.gepafin.tendermanagement.model.request.FieldLabelValuePairRequest;
import net.gepafin.tendermanagement.model.response.*; import net.gepafin.tendermanagement.model.response.*;
import net.gepafin.tendermanagement.repositories.ApplicationRepository; import net.gepafin.tendermanagement.repositories.ApplicationRepository;
import net.gepafin.tendermanagement.service.CallService; import net.gepafin.tendermanagement.service.CallService;
import net.gepafin.tendermanagement.util.Validator;
import net.gepafin.tendermanagement.web.rest.api.errors.ResourceNotFoundException; import net.gepafin.tendermanagement.web.rest.api.errors.ResourceNotFoundException;
import net.gepafin.tendermanagement.web.rest.api.errors.Status; import net.gepafin.tendermanagement.web.rest.api.errors.Status;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@@ -38,26 +43,21 @@ import java.util.stream.Collectors;
@Component @Component
public class PdfDao { public class PdfDao {
@Autowired
private ApplicationRepository applicationRepository;
@Autowired @Autowired
private CallService callService; private CallService callService;
@Autowired @Autowired
private ApplicationDao applicationDao; private ApplicationDao applicationDao;
@Autowired
private Validator validator;
public byte[] generatePdf(UserEntity userEntity,Long applicationId) {
public byte[] generatePdf(HttpServletRequest request,Long applicationId) {
try { try {
ApplicationEntity applicationEntity = applicationRepository UserEntity userEntity = validator.validateUser(request);
.findByIdAndUserIdAndIsDeletedFalse(applicationId, userEntity.getId()) ApplicationEntity applicationEntity = applicationDao.validateApplication(applicationId);
.orElseThrow(() -> new ResourceNotFoundException( validator.validateUserWithCompany(request, applicationEntity.getCompany().getId());
Status.NOT_FOUND,
Translator.toLocale(GepafinConstant.APPLICATION_NOT_FOUND_MSG)
));
CompanyEntity companyEntity=applicationEntity.getCompany();
CallEntity call=callService.validateCall(applicationEntity.getCall().getId()); CallEntity call=callService.validateCall(applicationEntity.getCall().getId());
// Create a byte stream to hold the PDF // Create a byte stream to hold the PDF
@@ -127,7 +127,7 @@ public class PdfDao {
// addLabelValuePair(document, "Con il titolo di", "Rappresentante legale", regularFont); // addLabelValuePair(document, "Con il titolo di", "Rappresentante legale", regularFont);
document.add(new Paragraph(" ")); document.add(new Paragraph(" "));
ApplicationGetResponseBean applicationGetResponseBean=applicationDao.getApplicationByFormId(applicationId,null,userEntity); ApplicationGetResponseBean applicationGetResponseBean=applicationDao.getApplicationByFormId(applicationId,null, userEntity);
for(FormApplicationResponse formApplicationResponse: applicationGetResponseBean.getForm()) { for(FormApplicationResponse formApplicationResponse: applicationGetResponseBean.getForm()) {
document.add(new Paragraph(formApplicationResponse.getLabel(),sectionFont)); document.add(new Paragraph(formApplicationResponse.getLabel(),sectionFont));
document.add(new Paragraph(" ")); // Add line break document.add(new Paragraph(" ")); // Add line break
@@ -534,6 +534,7 @@ public class PdfDao {
String label = matchingContent.get().getLabel(); String label = matchingContent.get().getLabel();
// Add the label-value pair to the list // Add the label-value pair to the list
if (fieldValue != null && !fieldValue.toString().trim().isEmpty()) { if (fieldValue != null && !fieldValue.toString().trim().isEmpty()) {
fieldValue = findLabelInOptions(matchingContent.get().getSettings(), fieldValue);
labelValuePairs.add(new FieldLabelValuePairRequest(label, fieldValue)); labelValuePairs.add(new FieldLabelValuePairRequest(label, fieldValue));
} }
} }
@@ -541,6 +542,31 @@ public class PdfDao {
return labelValuePairs; return labelValuePairs;
} }
public static Object findLabelInOptions(List<SettingResponseBean> settings, Object valueToFind) {
ObjectMapper objectMapper = new ObjectMapper();
try {
if (valueToFind instanceof String) {
String searchValue = (String) valueToFind;
for (SettingResponseBean setting : settings) {
Object value = setting.getValue();
if (value instanceof List) {
List<?> options = (List<?>) value;
for (Object option : options) {
JsonNode optionNode = objectMapper.convertValue(option, JsonNode.class);
if (optionNode.get("name").asText().equals(searchValue)) {
return optionNode.get("label").asText();
}
}
}
}
}
} catch (Exception e) {
}
return valueToFind;
}
public void addLogo(Document document, String logoPath) throws Exception { public void addLogo(Document document, String logoPath) throws Exception {
Image logo = Image.getInstance(logoPath); Image logo = Image.getInstance(logoPath);
logo.scaleToFit(document.getPageSize().getWidth() - document.leftMargin() - document.rightMargin(), // Fit to document width logo.scaleToFit(document.getPageSize().getWidth() - document.leftMargin() - document.rightMargin(), // Fit to document width

View File

@@ -19,7 +19,6 @@ public class PdfServiceImpl implements PdfService {
@Override @Override
public byte[] generatePdf(HttpServletRequest request, Long applicationId) { public byte[] generatePdf(HttpServletRequest request, Long applicationId) {
UserEntity userEntity = validator.validateUser(request); return pdfDao.generatePdf(request, applicationId);
return pdfDao.generatePdf(userEntity,applicationId);
} }
} }