|
|
|
@ -38,6 +38,14 @@ import com.itextpdf.text.Rectangle; |
|
|
|
import com.itextpdf.text.pdf.PdfPCell; |
|
|
|
import com.itextpdf.text.pdf.PdfPTable; |
|
|
|
|
|
|
|
import org.apache.pdfbox.pdmodel.PDDocument; |
|
|
|
import org.apache.pdfbox.rendering.PDFRenderer; |
|
|
|
|
|
|
|
import javax.imageio.ImageIO; |
|
|
|
import java.awt.image.BufferedImage; |
|
|
|
import java.io.ByteArrayOutputStream; |
|
|
|
import java.io.InputStream; |
|
|
|
|
|
|
|
import jakarta.servlet.http.HttpServletResponse; |
|
|
|
|
|
|
|
@Service |
|
|
|
@ -524,7 +532,9 @@ public class RoadWarService { |
|
|
|
e.zone, |
|
|
|
e.ward, |
|
|
|
e.streetid, |
|
|
|
e.street AS streetName |
|
|
|
e.street AS streetName, |
|
|
|
e.area, |
|
|
|
e.location |
|
|
|
FROM erp_road_master e |
|
|
|
|
|
|
|
LEFT JOIN road_details_master r |
|
|
|
@ -625,8 +635,8 @@ public class RoadWarService { |
|
|
|
e.ward, |
|
|
|
e.street AS streetName, |
|
|
|
e.streetid, |
|
|
|
ifnull(r.area_name,'') as area_name, |
|
|
|
ifnull(r.locality_name,'') as locality_name, |
|
|
|
ifnull(UPPER(r.area_name),'') as area_name, |
|
|
|
ifnull(UPPER(r.locality_name),'') as locality_name, |
|
|
|
r.ref_id |
|
|
|
FROM erp_road_master e |
|
|
|
|
|
|
|
@ -743,8 +753,8 @@ public class RoadWarService { |
|
|
|
e.ward, |
|
|
|
e.street AS streetName, |
|
|
|
e.streetid, |
|
|
|
ifnull(r.area_name,'') as area_name, |
|
|
|
ifnull(r.locality_name,'') as locality_name, |
|
|
|
ifnull(UPPER(r.area_name),'') as area_name, |
|
|
|
ifnull(UPPER(r.locality_name),'') as locality_name, |
|
|
|
r.ref_id |
|
|
|
FROM erp_road_master e |
|
|
|
|
|
|
|
@ -946,10 +956,10 @@ public class RoadWarService { |
|
|
|
response.setHeader("Content-Disposition", |
|
|
|
"attachment; filename=\"" + fileName + "\""); |
|
|
|
|
|
|
|
Font titleFont = FontFactory.getFont(FontFactory.HELVETICA_BOLD, 18); |
|
|
|
Font headerFont = FontFactory.getFont(FontFactory.HELVETICA_BOLD, 13); |
|
|
|
Font normalFont = FontFactory.getFont(FontFactory.HELVETICA, 10); |
|
|
|
Font boldFont = FontFactory.getFont(FontFactory.HELVETICA_BOLD, 10); |
|
|
|
Font titleFont = FontFactory.getFont(FontFactory.TIMES_BOLD, 18); |
|
|
|
Font headerFont = FontFactory.getFont(FontFactory.TIMES_BOLD, 13); |
|
|
|
Font normalFont = FontFactory.getFont(FontFactory.TIMES, 10); |
|
|
|
Font boldFont = FontFactory.getFont(FontFactory.TIMES_BOLD, 10); |
|
|
|
|
|
|
|
Document document = new Document(PageSize.A4); |
|
|
|
|
|
|
|
@ -1005,11 +1015,8 @@ public class RoadWarService { |
|
|
|
infoTable.setSpacingAfter(10f); |
|
|
|
infoTable.setWidths(new float[]{20, 30, 20, 30}); |
|
|
|
|
|
|
|
Font labelFont = FontFactory.getFont(FontFactory.HELVETICA_BOLD, 10); |
|
|
|
Font labelFontUnderline = FontFactory.getFont(FontFactory.HELVETICA_BOLD, 10,Font.UNDERLINE); |
|
|
|
Font valueFont = FontFactory.getFont(FontFactory.HELVETICA, 10); |
|
|
|
|
|
|
|
PdfPCell cell; |
|
|
|
Font labelFont = FontFactory.getFont(FontFactory.TIMES_BOLD, 9); |
|
|
|
Font valueFont = FontFactory.getFont(FontFactory.TIMES, 9); |
|
|
|
|
|
|
|
infoTable.addCell(labelCell("Zone :", labelFont)); |
|
|
|
infoTable.addCell(valueCell(String.valueOf(road.get("zone")), valueFont)); |
|
|
|
@ -1053,8 +1060,6 @@ public class RoadWarService { |
|
|
|
infoTable.addCell(labelCell("Road Max Width :", labelFont)); |
|
|
|
infoTable.addCell(valueCell(withUnit(road.get("road_max_width"), "m"), valueFont)); |
|
|
|
|
|
|
|
infoTable.addCell(labelCell("Road Location", labelFontUnderline, 4)); |
|
|
|
|
|
|
|
infoTable.addCell(labelCell("Road From :", labelFont)); |
|
|
|
infoTable.addCell(valueCell(String.valueOf(road.get("road_from")), valueFont, 3)); |
|
|
|
|
|
|
|
@ -1065,13 +1070,13 @@ public class RoadWarService { |
|
|
|
document.add(infoTable); |
|
|
|
|
|
|
|
|
|
|
|
document.add(createSubTitle("Availabilities", headerFont)); |
|
|
|
document.add(createSubTitle("Availability", headerFont)); |
|
|
|
|
|
|
|
PdfPTable avlTable = new PdfPTable(4); |
|
|
|
avlTable.setWidthPercentage(100); |
|
|
|
avlTable.setSpacingBefore(3f); |
|
|
|
avlTable.setSpacingAfter(3f); |
|
|
|
avlTable.setWidths(new float[]{30, 20, 30, 20}); |
|
|
|
avlTable.setWidths(new float[]{25, 25, 25, 25}); |
|
|
|
|
|
|
|
avlTable.addCell(labelCell("Footpath :", labelFont)); |
|
|
|
avlTable.addCell(valueCell(String.valueOf(road.get("is_footpath")).toUpperCase(), valueFont)); |
|
|
|
@ -1091,7 +1096,7 @@ public class RoadWarService { |
|
|
|
avlTable.addCell(labelCell("Rain Water Harvesting :", labelFont)); |
|
|
|
avlTable.addCell(valueCell(String.valueOf(road.get("is_rwh")).toUpperCase(), valueFont)); |
|
|
|
|
|
|
|
avlTable.addCell(labelCell("Electricity Pole :", labelFont)); |
|
|
|
avlTable.addCell(labelCell("Electricity Pole / Pillar Box :", labelFont)); |
|
|
|
avlTable.addCell(valueCell(String.valueOf(road.get("is_electric_poles")).toUpperCase(), valueFont)); |
|
|
|
|
|
|
|
avlTable.addCell(labelCell("Bus Shelter :", labelFont)); |
|
|
|
@ -1115,8 +1120,8 @@ public class RoadWarService { |
|
|
|
|
|
|
|
document.add(new Paragraph(" ")); |
|
|
|
document.add(createSubTitle("Relaying Details", headerFont)); |
|
|
|
Font tableHeaderFont = FontFactory.getFont(FontFactory.HELVETICA_BOLD, 10); |
|
|
|
Font tableValueFont = FontFactory.getFont(FontFactory.HELVETICA, 9); |
|
|
|
Font tableHeaderFont = FontFactory.getFont(FontFactory.TIMES_BOLD, 10); |
|
|
|
Font tableValueFont = FontFactory.getFont(FontFactory.TIMES, 9); |
|
|
|
|
|
|
|
PdfPTable relayTable = new PdfPTable(6); |
|
|
|
relayTable.setWidthPercentage(100); |
|
|
|
@ -1165,6 +1170,223 @@ public class RoadWarService { |
|
|
|
|
|
|
|
document.add(relayTable); |
|
|
|
|
|
|
|
document.add(createSubTitle("Availability Details", headerFont)); |
|
|
|
|
|
|
|
PdfPTable adTable = new PdfPTable(2); |
|
|
|
adTable.setWidthPercentage(100); |
|
|
|
adTable.setSpacingBefore(3f); |
|
|
|
adTable.setSpacingAfter(3f); |
|
|
|
adTable.setWidths(new float[]{40,60}); |
|
|
|
|
|
|
|
adTable.addCell(labelCell("Footpath From :", labelFont)); |
|
|
|
adTable.addCell(valueCell(String.valueOf(road.get("footpath_from_location")), valueFont)); |
|
|
|
|
|
|
|
adTable.addCell(labelCell("Footpath To :", labelFont)); |
|
|
|
adTable.addCell(valueCell(String.valueOf(road.get("footpath_to_location")), valueFont)); |
|
|
|
|
|
|
|
adTable.addCell(labelCell("Footpath Present at :", labelFont)); |
|
|
|
adTable.addCell(valueCell(String.valueOf(road.get("footpath_side_name")), valueFont)); |
|
|
|
|
|
|
|
adTable.addCell(labelCell("LHS Footpath Material Type :", labelFont)); |
|
|
|
adTable.addCell(valueCell(String.valueOf(road.get("footpath_material_name")), valueFont)); |
|
|
|
|
|
|
|
adTable.addCell(labelCell("LHS Length of Footpath :", labelFont)); |
|
|
|
adTable.addCell(valueCell(withUnit(road.get("footpath_length"), "m"), valueFont)); |
|
|
|
|
|
|
|
adTable.addCell(labelCell("LHS Average Width of Footpath :", labelFont)); |
|
|
|
adTable.addCell(valueCell(withUnit(road.get("footpath_width"), "m"), valueFont)); |
|
|
|
|
|
|
|
|
|
|
|
adTable.addCell(labelCell("RHS Footpath Material Type :", labelFont)); |
|
|
|
adTable.addCell(valueCell(String.valueOf(road.get("r_footpath_material_name")), valueFont)); |
|
|
|
|
|
|
|
adTable.addCell(labelCell("RHS Length of Footpath :", labelFont)); |
|
|
|
adTable.addCell(valueCell(withUnit(road.get("r_footpath_length"), "m"), valueFont)); |
|
|
|
|
|
|
|
adTable.addCell(labelCell("RHS Average Width of Footpath :", labelFont)); |
|
|
|
adTable.addCell(valueCell(withUnit(road.get("r_footpath_width"), "m"), valueFont)); |
|
|
|
|
|
|
|
|
|
|
|
adTable.addCell(labelCell("", labelFont, 2)); |
|
|
|
|
|
|
|
adTable.addCell(labelCell("SWD From :", labelFont)); |
|
|
|
adTable.addCell(valueCell(String.valueOf(road.get("swd_from")), valueFont)); |
|
|
|
|
|
|
|
adTable.addCell(labelCell("SWD To :", labelFont)); |
|
|
|
adTable.addCell(valueCell(String.valueOf(road.get("swd_to")), valueFont)); |
|
|
|
|
|
|
|
adTable.addCell(labelCell("SWD Present at :", labelFont)); |
|
|
|
adTable.addCell(valueCell(String.valueOf(road.get("swd_side_name")), valueFont)); |
|
|
|
|
|
|
|
adTable.addCell(labelCell("LHS Length of SWD :", labelFont)); |
|
|
|
adTable.addCell(valueCell(withUnit(road.get("swd_length"), "m"), valueFont)); |
|
|
|
|
|
|
|
adTable.addCell(labelCell("LHS Size of SWD :", labelFont)); |
|
|
|
adTable.addCell(valueCell(withUnit(road.get("swd_size"), "m"), valueFont)); |
|
|
|
|
|
|
|
adTable.addCell(labelCell("RHS Length of SWD :", labelFont)); |
|
|
|
adTable.addCell(valueCell(withUnit(road.get("rhs_swdlength"), "m"), valueFont)); |
|
|
|
|
|
|
|
adTable.addCell(labelCell("RHS Size of SWD :", labelFont)); |
|
|
|
adTable.addCell(valueCell(withUnit(road.get("rhs_swdsize"), "m"), valueFont)); |
|
|
|
|
|
|
|
adTable.addCell(labelCell("Slit catch pit Present at :", labelFont)); |
|
|
|
adTable.addCell(valueCell(String.valueOf(road.get("scp_side_name")), valueFont)); |
|
|
|
|
|
|
|
adTable.addCell(labelCell("Slit catch pit LHS Count :", labelFont)); |
|
|
|
adTable.addCell(valueCell(String.valueOf(road.get("scp_count")), valueFont)); |
|
|
|
|
|
|
|
adTable.addCell(labelCell("Slit catch pit RHS Count :", labelFont)); |
|
|
|
adTable.addCell(valueCell(String.valueOf(road.get("rhs_scpCount")), valueFont)); |
|
|
|
|
|
|
|
adTable.addCell(labelCell("Manhole Present at :", labelFont)); |
|
|
|
adTable.addCell(valueCell(String.valueOf(road.get("manhole_side_name")), valueFont)); |
|
|
|
|
|
|
|
adTable.addCell(labelCell("Manhole LHS Count :", labelFont)); |
|
|
|
adTable.addCell(valueCell(String.valueOf(road.get("manhole_count")), valueFont)); |
|
|
|
|
|
|
|
adTable.addCell(labelCell("Manhole RHS Count :", labelFont)); |
|
|
|
adTable.addCell(valueCell(String.valueOf(road.get("r_mhCount")), valueFont)); |
|
|
|
|
|
|
|
adTable.addCell(labelCell("ChutPipe Present at :", labelFont)); |
|
|
|
adTable.addCell(valueCell(String.valueOf(road.get("cpipe_side_name")), valueFont)); |
|
|
|
|
|
|
|
adTable.addCell(labelCell("ChutPipe LHS Count :", labelFont)); |
|
|
|
adTable.addCell(valueCell(String.valueOf(road.get("cpipe_count")), valueFont)); |
|
|
|
|
|
|
|
adTable.addCell(labelCell("ChutPipe RHS Count :", labelFont)); |
|
|
|
adTable.addCell(valueCell(String.valueOf(road.get("r_cpCount")), valueFont)); |
|
|
|
|
|
|
|
|
|
|
|
adTable.addCell(labelCell("Rain Water Harvesting Present at :", labelFont)); |
|
|
|
adTable.addCell(valueCell(String.valueOf(road.get("rwh_side_name")), valueFont)); |
|
|
|
|
|
|
|
adTable.addCell(labelCell("Rain Water Harvesting LHS Count :", labelFont)); |
|
|
|
adTable.addCell(valueCell(String.valueOf(road.get("rwh_count")), valueFont)); |
|
|
|
|
|
|
|
adTable.addCell(labelCell("Rain Water Harvesting RHS Count :", labelFont)); |
|
|
|
adTable.addCell(valueCell(String.valueOf(road.get("r_rwCount")), valueFont)); |
|
|
|
|
|
|
|
|
|
|
|
adTable.addCell(labelCell("Electricity Pole Count :", labelFont)); |
|
|
|
adTable.addCell(valueCell(String.valueOf(road.get("ep_count")), valueFont)); |
|
|
|
|
|
|
|
adTable.addCell(labelCell("Bus Shelter Count :", labelFont)); |
|
|
|
adTable.addCell(valueCell(String.valueOf(road.get("busshelter_count")), valueFont)); |
|
|
|
|
|
|
|
adTable.addCell(labelCell("Street Light Poles Count :", labelFont)); |
|
|
|
adTable.addCell(valueCell(String.valueOf(road.get("streetlight_poles_count")), valueFont)); |
|
|
|
|
|
|
|
adTable.addCell(labelCell("High Mass Light Count :", labelFont)); |
|
|
|
adTable.addCell(valueCell(String.valueOf(road.get("hml_count")), valueFont)); |
|
|
|
|
|
|
|
adTable.addCell(labelCell("Mini Mass Light Count :", labelFont)); |
|
|
|
adTable.addCell(valueCell(String.valueOf(road.get("mml_count")), valueFont)); |
|
|
|
|
|
|
|
adTable.addCell(labelCell("Length Of Sewer :", labelFont)); |
|
|
|
adTable.addCell(valueCell(withUnit(road.get("sewer_length"), "m"), valueFont)); |
|
|
|
|
|
|
|
adTable.addCell(labelCell("Size of sewer (feet or cm) :", labelFont)); |
|
|
|
adTable.addCell(valueCell(String.valueOf(road.get("sewer_size")), valueFont)); |
|
|
|
|
|
|
|
adTable.addCell(labelCell("No of Culverts & Bridges :", labelFont)); |
|
|
|
adTable.addCell(valueCell(String.valueOf(road.get("culvert_bridge_count")), valueFont)); |
|
|
|
|
|
|
|
adTable.addCell(labelCell("Details of Culverts & Bridges \nwith date of Construction :", labelFont)); |
|
|
|
adTable.addCell(valueCell(String.valueOf(road.get("details")), valueFont)); |
|
|
|
|
|
|
|
document.add(adTable); |
|
|
|
|
|
|
|
|
|
|
|
@SuppressWarnings("unchecked") |
|
|
|
List<Map<String, Object>> files = |
|
|
|
(List<Map<String, Object>>) road.get("fileDetails"); |
|
|
|
|
|
|
|
if (files != null && !files.isEmpty()) { |
|
|
|
|
|
|
|
int totalImages = files.size(); |
|
|
|
|
|
|
|
for (int i = 0; i < totalImages; i += 4) { |
|
|
|
|
|
|
|
// New page |
|
|
|
document.newPage(); |
|
|
|
|
|
|
|
document.add(createSubTitle("Uploaded Files", headerFont)); |
|
|
|
|
|
|
|
PdfPTable imageTable = new PdfPTable(2); |
|
|
|
|
|
|
|
imageTable.setWidthPercentage(100); |
|
|
|
imageTable.setSpacingBefore(5f); |
|
|
|
imageTable.setSpacingAfter(0f); |
|
|
|
imageTable.setWidths(new float[]{50, 50}); |
|
|
|
|
|
|
|
for (int j = i; j < Math.min(i + 4, totalImages); j++) { |
|
|
|
|
|
|
|
Map<String, Object> file = files.get(j); |
|
|
|
|
|
|
|
String fileUrl = String.valueOf(file.get("file_url")); |
|
|
|
|
|
|
|
String extension = fileUrl.substring(fileUrl.lastIndexOf('.') + 1).toLowerCase(); |
|
|
|
|
|
|
|
Image img; |
|
|
|
|
|
|
|
if ("pdf".equals(extension)) { |
|
|
|
|
|
|
|
// Read PDF and render first page as image |
|
|
|
try (InputStream in = new URL(fileUrl).openStream(); |
|
|
|
PDDocument pdfDoc = PDDocument.load(in)) { |
|
|
|
|
|
|
|
PDFRenderer renderer = new PDFRenderer(pdfDoc); |
|
|
|
|
|
|
|
BufferedImage bufferedImage = |
|
|
|
renderer.renderImageWithDPI(0, 200); |
|
|
|
|
|
|
|
ByteArrayOutputStream baos = |
|
|
|
new ByteArrayOutputStream(); |
|
|
|
|
|
|
|
ImageIO.write(bufferedImage, "png", baos); |
|
|
|
|
|
|
|
img = Image.getInstance(baos.toByteArray()); |
|
|
|
} |
|
|
|
|
|
|
|
} else { |
|
|
|
|
|
|
|
// Normal image |
|
|
|
img = Image.getInstance(new URL(fileUrl)); |
|
|
|
} |
|
|
|
|
|
|
|
img.scaleToFit(250f, 360f); |
|
|
|
img.setAlignment(Image.ALIGN_CENTER); |
|
|
|
|
|
|
|
PdfPCell cell = new PdfPCell(); |
|
|
|
cell.setBorder(Rectangle.NO_BORDER); |
|
|
|
cell.setHorizontalAlignment(Element.ALIGN_CENTER); |
|
|
|
cell.setVerticalAlignment(Element.ALIGN_MIDDLE); |
|
|
|
cell.setPadding(4f); |
|
|
|
cell.setFixedHeight(370f); |
|
|
|
|
|
|
|
cell.addElement(img); |
|
|
|
|
|
|
|
imageTable.addCell(cell); |
|
|
|
} |
|
|
|
|
|
|
|
// Fill remaining cells if less than 4 images |
|
|
|
int remainder = Math.min(i + 4, totalImages) - i; |
|
|
|
|
|
|
|
while (remainder < 4) { |
|
|
|
|
|
|
|
PdfPCell empty = new PdfPCell(); |
|
|
|
empty.setBorder(Rectangle.NO_BORDER); |
|
|
|
empty.setFixedHeight(260f); |
|
|
|
|
|
|
|
imageTable.addCell(empty); |
|
|
|
|
|
|
|
remainder++; |
|
|
|
} |
|
|
|
|
|
|
|
document.add(imageTable); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
document.close(); |
|
|
|
@ -1194,6 +1416,7 @@ public class RoadWarService { |
|
|
|
cell.setBorder(Rectangle.NO_BORDER); |
|
|
|
cell.setPaddingTop(4f); |
|
|
|
cell.setPaddingBottom(4f); |
|
|
|
cell.setPaddingLeft(4f); |
|
|
|
return cell; |
|
|
|
} |
|
|
|
|
|
|
|
@ -1220,6 +1443,7 @@ public class RoadWarService { |
|
|
|
cell.setColspan(colspan); |
|
|
|
cell.setPaddingTop(3f); |
|
|
|
cell.setPaddingBottom(3f); |
|
|
|
cell.setPaddingLeft(4f); |
|
|
|
return cell; |
|
|
|
} |
|
|
|
|
|
|
|
@ -1247,42 +1471,5 @@ public class RoadWarService { |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// document.add(new Paragraph(" ")); |
|
|
|
// document.add(new Paragraph( |
|
|
|
// "Uploaded Images", |
|
|
|
// headerFont)); |
|
|
|
// |
|
|
|
// PdfPTable imgTable = new PdfPTable(2); |
|
|
|
// |
|
|
|
// imgTable.setWidthPercentage(100); |
|
|
|
// |
|
|
|
// List<Map<String,Object>> files = |
|
|
|
// (List<Map<String,Object>>)road.get("fileDetails"); |
|
|
|
// |
|
|
|
// for(Map<String,Object> img : files){ |
|
|
|
// |
|
|
|
// try{ |
|
|
|
// |
|
|
|
// Image image = Image.getInstance( |
|
|
|
// new URL(img.get("file_url").toString())); |
|
|
|
// |
|
|
|
// image.scaleToFit(220,160); |
|
|
|
// |
|
|
|
// PdfPCell cell1 = |
|
|
|
// new PdfPCell(image,true); |
|
|
|
// |
|
|
|
// cell1.setPadding(5); |
|
|
|
// |
|
|
|
// imgTable.addCell(cell1); |
|
|
|
// |
|
|
|
// }catch(Exception ex){ |
|
|
|
// |
|
|
|
// imgTable.addCell("Image not available"); |
|
|
|
// } |
|
|
|
// |
|
|
|
// } |
|
|
|
// |
|
|
|
// document.add(imgTable); |
|
|
|
|
|
|
|
|
|
|
|
} |