Browse Source

Se agrego formato al reporte de tickets para que tenga mejor apariencia

main
mramirezg 3 days ago
parent
commit
d5e4f9382d
3 changed files with 85 additions and 7 deletions
  1. +0
    -1
      src/main/java/mx/gob/jumapacelaya/api/SecurityService.java
  2. +85
    -6
      src/main/java/mx/gob/jumapacelaya/ui/ActDiariaView.java
  3. BIN
      src/main/resources/META-INF/resources/images/LOGO_admon2.png

+ 0
- 1
src/main/java/mx/gob/jumapacelaya/api/SecurityService.java View File

@ -1 +0,0 @@
package mx.gob.jumapacelaya.api;

+ 85
- 6
src/main/java/mx/gob/jumapacelaya/ui/ActDiariaView.java View File

@ -42,10 +42,9 @@ import mx.gob.jumapacelaya.models.Ticket;
import mx.gob.jumapacelaya.services.LdapService; import mx.gob.jumapacelaya.services.LdapService;
import mx.gob.jumapacelaya.services.UserService; import mx.gob.jumapacelaya.services.UserService;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.util.IOUtils;
import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -55,6 +54,7 @@ import org.vaadin.lineawesome.LineAwesomeIcon;
import java.io.ByteArrayInputStream; import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream; import java.io.ByteArrayOutputStream;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.LocalDateTime; import java.time.LocalDateTime;
@ -431,15 +431,94 @@ public class ActDiariaView extends VerticalLayout {
Workbook workbook = new XSSFWorkbook(); Workbook workbook = new XSSFWorkbook();
Sheet sheet = workbook.createSheet("Tickets cerrados"); Sheet sheet = workbook.createSheet("Tickets cerrados");
CellStyle titleStyle = workbook.createCellStyle();
Font titleFont = workbook.createFont();
titleFont.setBold(true);
titleFont.setFontHeightInPoints((short) 20);
titleStyle.setFont(titleFont);
titleStyle.setAlignment(HorizontalAlignment.CENTER);
CellStyle subTitleStyle = workbook.createCellStyle();
Font subTitleFont = workbook.createFont();
subTitleFont.setFontHeightInPoints((short) 18);
subTitleStyle.setFont(subTitleFont);
subTitleStyle.setAlignment(HorizontalAlignment.CENTER);
int ultimaCol = 10;
Row row1 = sheet.createRow(1);
Cell cell1 = row1.createCell(0);
cell1.setCellValue("JUNTA MUNICIPAL DE AGUA POTABLE Y ALCANTARILLADO DE CELAYA.");
cell1.setCellStyle(titleStyle);
sheet.addMergedRegion(new CellRangeAddress(1, 1, 0, ultimaCol));
Row row2 = sheet.createRow(2);
Cell cell2 = row2.createCell(0);
cell2.setCellValue("División Del Norte #132, Col. El Vergel, Celaya, Gto. C.P: 38078");
cell2.setCellStyle(subTitleStyle);
sheet.addMergedRegion(new CellRangeAddress(2, 2, 0, ultimaCol));
try (
InputStream jmpaLogo = ActDiariaView.class.getClassLoader()
.getResourceAsStream("META-INF/resources/images/LOGO_24'27.png");
InputStream adminLogo = ActDiariaView.class.getClassLoader()
.getResourceAsStream("META-INF/resources/images/LOGO_admon2.png")
) {
if (jmpaLogo != null || adminLogo != null) {
byte[] bytes = IOUtils.toByteArray(jmpaLogo);
byte[] bytes1 = IOUtils.toByteArray(adminLogo);
int pictureIdx = workbook.addPicture(bytes, Workbook.PICTURE_TYPE_PNG);
int pictureIdx1 = workbook.addPicture(bytes1, Workbook.PICTURE_TYPE_PNG);
Drawing<?> drawing = sheet.createDrawingPatriarch();
CreationHelper helper = workbook.getCreationHelper();
CreationHelper helper1 = workbook.getCreationHelper();
ClientAnchor anchor = helper.createClientAnchor();
ClientAnchor anchor1 = helper1.createClientAnchor();
// Posición en la esquina superior izquierda
anchor.setCol1(1);
anchor.setRow1(1);
anchor1.setCol1(10);
anchor1.setRow1(1);
Picture pict = drawing.createPicture(anchor, pictureIdx);
pict.resize(0.30, 0.60); // Ajusta según el tamaño de tu imagen original
Picture pict1 = drawing.createPicture(anchor1, pictureIdx1);
pict1.resize(0.30, 0.37);
} else {
log.error("No se encontró el archivo de imagen en la ruta especificada");
}
} catch (Exception e) {
log.error("Error al procesar el logo", e);
}
CellStyle headerStyle = workbook.createCellStyle();
Font headerFont = workbook.createFont();
headerFont.setBold(true);
headerFont.setColor(IndexedColors.WHITE.getIndex());
headerStyle.setFont(headerFont);
headerStyle.setFillForegroundColor(IndexedColors.MAROON.getIndex());
headerStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);
headerStyle.setAlignment(HorizontalAlignment.CENTER);
headerStyle.setBorderBottom(BorderStyle.THIN);
String[] headers = {"ID","Tipo","Tiempo estimado","Fecha creación","Fecha cierre", String[] headers = {"ID","Tipo","Tiempo estimado","Fecha creación","Fecha cierre",
"Fecha actualización","Situación","Estado","Duración","Autor","Asunto"}; "Fecha actualización","Situación","Estado","Duración","Autor","Asunto"};
Row headerRow = sheet.createRow(0);
int rowNum = 6;
Row headerRow = sheet.createRow(rowNum++);
for (int i = 0; i < headers.length; i++) { for (int i = 0; i < headers.length; i++) {
Cell cell = headerRow.createCell(i); Cell cell = headerRow.createCell(i);
cell.setCellValue(headers[i]); cell.setCellValue(headers[i]);
cell.setCellStyle(headerStyle);
} }
int rowNum = 1;
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd/MM/yyyy HH:mm:ss"); DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd/MM/yyyy HH:mm:ss");
for (Ticket ticket : ticketsCerrados) { for (Ticket ticket : ticketsCerrados) {


BIN
src/main/resources/META-INF/resources/images/LOGO_admon2.png View File

Before After
Width: 597  |  Height: 569  |  Size: 84 KiB

Loading…
Cancel
Save