Java tutorial
/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package cl.a2r.wsmicampov2.dao; //import cl.a2r.common.wsservice.WSAdempiereCliente; import cl.a2r.wsmicampo.diio.Diio; import cl.a2r.wsmicampo.traslado.Acoplado; import cl.a2r.wsmicampo.traslado.Camion; import cl.a2r.wsmicampo.traslado.Chofer; import cl.a2r.wsmicampo.traslado.DctoAdem; import cl.a2r.wsmicampo.traslado.FMA; import cl.a2r.wsmicampo.traslado.FmaCorreo; import cl.a2r.wsmicampo.traslado.Transportista; import cl.a2r.wsmicampo.traslado.Traslado; import cl.a2r.wsmicampov2.app.AppException; import cl.a2r.wsmicampov2.common.utils.Correo; import cl.a2r.wsmicampov2.common.utils.Util; import cl.a2r.wsmicampov2.comunes.GanadoManejo; import cl.a2r.wsmicampov2.comunes.ManejoBase; import cl.a2r.wsmicampov2.ganado.Ganado; import cl.a2r.wsmicampov2.pdf.CellHelper; import cl.a2r.wsmicampov2.pdf.EventoPagina; import com.itextpdf.io.font.FontConstants; import com.itextpdf.io.image.ImageDataFactory; import com.itextpdf.kernel.events.PdfDocumentEvent; import com.itextpdf.kernel.font.PdfFont; import com.itextpdf.kernel.font.PdfFontFactory; import com.itextpdf.kernel.pdf.PdfDocument; import com.itextpdf.kernel.pdf.PdfWriter; import com.itextpdf.layout.Document; import com.itextpdf.layout.border.Border; import com.itextpdf.layout.element.AreaBreak; import com.itextpdf.layout.element.Cell; import com.itextpdf.layout.element.Image; import com.itextpdf.layout.element.Paragraph; import com.itextpdf.layout.element.Table; import com.itextpdf.layout.element.Text; import com.itextpdf.layout.property.AreaBreakType; import com.itextpdf.layout.property.TextAlignment; import java.io.File; import java.io.FileInputStream; import java.io.InputStream; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.List; //import org.apache.coyote.http11.Constants; //import org.apache.coyote.http11.filters.ChunkedInputFilter; /** * * @author Elaine */ public class TrasladoDAO { private static final String SQL_TRANSPORTISTA_SELECT = "SELECT * FROM micampo.traslado_select_transportista(?)"; private static final String SQL_CAMION_SELECT = "SELECT * FROM micampo.traslado_select_camion(?)"; private static final String SQL_ACOPLADO_SELECT = "SELECT * FROM micampo.traslado_select_acoplado(?)"; private static final String SQL_CHOFER_SELECT = "SELECT * FROM micampo.traslado_select_chofer(?)"; private static final String SQL_TRASLADO_ENCABEZADO_SELECT = "SELECT * FROM micampo.traslado_encabezado_select(?)"; private static final String SQL_TRASLADO_DETALLE_SELECT = "SELECT * FROM micampo.traslado_detalle_select(?)"; private static final String SQL_TRASLADO_ENCABEZADO_GESTIONAR = "SELECT * FROM micampo.traslado_encabezado_gestionar(?,?,?,?,?,?)"; private static final String SQL_TRASLADO_DETALLE_GESTIONAR = "SELECT * FROM micampo.traslado_detalle_gestionar(?,?,?,?,?,?)"; private static final String SQL_INSERT_MOVTO_ADEM = "select * from micampo.traslado_ins_movto_adem(?)"; private static final String SQL_GENERAR_ENTRADA = "select * from micampo.traslado_generar_entrada(?,?,?,?,?)"; private static final String SQL_SELECT_FMA_XML = "select * from micampo.traslado_fma_xml(?, ?, ?, ?)"; private static final String SQL_USUARIO_BY_ID = "select * from micampo.usuario_by_id(?)"; private static final String SQL_TRASLADO_ENCABEZADO_BY_ID = "select * from micampo.traslado_encabezado_by_id(?)"; private static final String SQL_FUNDOS_RUP_DIFERENTES = "select * from micampo.fundos_rup_diferentes(?,?)"; private static final String SQL_FUNDOS_BY_ID = "select * from micampo.fundo_by_id(?)"; private static final String SQL_TRASLADO_INFO_GUIA = "select * from micampo.traslado_info_guia(?)"; private static final String SQL_TRASLADO_DIIOS = "select * from micampo.traslado_diios_by_id(?)"; private static final String SQL_SELECT_DIIOS_BY_MANEJO = "select * from micampo.select_diios_by_manejo(?)"; public static List selectTransportista(Transaccion trx, Long syncTime) throws SQLException { List list = new ArrayList(); Connection conn = trx.getConn(); PreparedStatement pst = conn.prepareStatement(SQL_TRANSPORTISTA_SELECT); pst.setObject(1, syncTime); ResultSet res = pst.executeQuery(); while (res.next()) { Transportista item = getTransportista(res); if (item != null) { list.add(item); } } res.close(); pst.close(); return list; } public static boolean fundosDiferentes(Transaccion trx, Integer fundo1_id, Integer fundo2_id) throws SQLException { boolean result = false; Connection conn = trx.getConn(); PreparedStatement pst = conn.prepareStatement(SQL_FUNDOS_RUP_DIFERENTES); pst.setObject(1, fundo1_id); pst.setObject(2, fundo2_id); ResultSet res = pst.executeQuery(); if (res.next()) { result = res.getBoolean(1); } res.close(); pst.close(); return result; } public static List selectChofer(Transaccion trx, Long syncTime) throws SQLException { List list = new ArrayList(); Connection conn = trx.getConn(); PreparedStatement pst = conn.prepareStatement(SQL_CHOFER_SELECT); pst.setObject(1, syncTime); ResultSet res = pst.executeQuery(); while (res.next()) { Chofer item = getChofer(res); if (item != null) { list.add(item); } } res.close(); pst.close(); return list; } public static List selectCamion(Transaccion trx, Long syncTime) throws SQLException { List list = new ArrayList(); Connection conn = trx.getConn(); PreparedStatement pst = conn.prepareStatement(SQL_CAMION_SELECT); pst.setObject(1, syncTime); ResultSet res = pst.executeQuery(); while (res.next()) { Camion item = getCamion(res); if (item != null) { list.add(item); } } res.close(); pst.close(); return list; } public static List selectAcoplado(Transaccion trx, Long syncTime) throws SQLException { List list = new ArrayList(); Connection conn = trx.getConn(); PreparedStatement pst = conn.prepareStatement(SQL_ACOPLADO_SELECT); pst.setObject(1, syncTime); ResultSet res = pst.executeQuery(); while (res.next()) { Acoplado item = getAcoplado(res); if (item != null) { list.add(item); } } res.close(); pst.close(); return list; } public static List selectTrasladoEncabezado(Transaccion trx, Long syncTime) throws SQLException { List list = new ArrayList(); Connection conn = trx.getConn(); PreparedStatement pst = conn.prepareStatement(SQL_TRASLADO_ENCABEZADO_SELECT); pst.setObject(1, syncTime); ResultSet res = pst.executeQuery(); while (res.next()) { ManejoBase item = getTrasladoEncabezado(res); if (item != null) { list.add(item); } } res.close(); pst.close(); return list; } public static String selectUsuarioById(Transaccion trx, Integer usuario_id) throws SQLException { String usuario = ""; Connection conn = trx.getConn(); PreparedStatement pst = conn.prepareStatement(SQL_USUARIO_BY_ID); pst.setObject(1, usuario_id); ResultSet res = pst.executeQuery(); if (res.next()) { usuario = res.getString(1); } res.close(); pst.close(); return usuario; } public static String selectFundoById(Transaccion trx, Integer fundo_id) throws SQLException { String nombreFundo = ""; Connection conn = trx.getConn(); PreparedStatement pst = conn.prepareStatement(SQL_FUNDOS_BY_ID); pst.setObject(1, fundo_id); ResultSet res = pst.executeQuery(); if (res.next()) { nombreFundo = res.getString(1); } res.close(); pst.close(); return nombreFundo; } public static ManejoBase getTrasladoEncabezadoById(Transaccion trx, Integer trasladoId) throws SQLException { ManejoBase traslado = new ManejoBase(); Connection conn = trx.getConn(); PreparedStatement pst = conn.prepareStatement(SQL_TRASLADO_ENCABEZADO_BY_ID); pst.setObject(1, trasladoId); ResultSet res = pst.executeQuery(); if (res.next()) { traslado = new ManejoBase(res.getInt(ManejoBase.COLUMN_ID), res.getString(ManejoBase.COLUMN_TIPO), res.getInt(ManejoBase.COLUMN_FUNDOID), res.getInt(ManejoBase.COLUMN_USUARIOID), res.getTimestamp(ManejoBase.COLUMN_FECHA), res.getString(ManejoBase.COLUMN_ESTADO), res.getString(ManejoBase.COLUMN_VALORES), "", res.getInt(ManejoBase.COLUMN_MANEJO_PADRE) ); } res.close(); pst.close(); return traslado; } public static List selectTrasladoDetalle(Transaccion trx, Long syncTime) throws SQLException { List list = new ArrayList(); Connection conn = trx.getConn(); PreparedStatement pst = conn.prepareStatement(SQL_TRASLADO_DETALLE_SELECT); pst.setObject(1, syncTime); ResultSet res = pst.executeQuery(); while (res.next()) { GanadoManejo item = getTrasladoDetalle(res); if (item != null) { list.add(item); } } res.close(); pst.close(); return list; } private static ManejoBase getTrasladoEncabezado(ResultSet res) { try { return new ManejoBase(res.getInt(ManejoBase.COLUMN_ID), res.getString(ManejoBase.COLUMN_TIPO), res.getInt(ManejoBase.COLUMN_FUNDOID), res.getInt(ManejoBase.COLUMN_USUARIOID), res.getTimestamp(ManejoBase.COLUMN_FECHA), res.getString(ManejoBase.COLUMN_ESTADO), res.getString(ManejoBase.COLUMN_VALORES), "", res.getInt(ManejoBase.COLUMN_MANEJO_PADRE) ); } catch (SQLException e) { return null; } } private static GanadoManejo getTrasladoDetalle(ResultSet res) { try { return new GanadoManejo(res.getInt(GanadoManejo.COLUMN_ID), res.getInt(GanadoManejo.COLUMN_CREADOPORID), res.getTimestamp(GanadoManejo.COLUMN_FECHA), res.getInt(GanadoManejo.COLUMN_GANADOID), res.getInt(GanadoManejo.COLUMN_MANEJOID), res.getString(GanadoManejo.COLUMN_ESTADO), res.getString(GanadoManejo.COLUMN_TIPO), res.getInt(GanadoManejo.COLUMN_FUNDOID), "", "", "", res.getString(GanadoManejo.COLUMN_GUID)); } catch (SQLException e) { return null; } } private static Camion getCamion(ResultSet res) { try { return new Camion(res.getInt(Camion.COLUMN_ID), res.getString(Camion.COLUMN_PATENTE), res.getInt(Camion.COLUMN_TRANSPORTISTA_ID), res.getString(Camion.COLUMN_ESTADO) ); } catch (SQLException e) { return null; } } private static Transportista getTransportista(ResultSet res) { try { return new Transportista(res.getInt(Transportista.COLUMN_ID), res.getString(Transportista.COLUMN_NOMBRE), res.getString(Transportista.COLUMN_RUT), res.getString(Transportista.COLUMN_ESTADO)); } catch (SQLException e) { return null; } } private static Chofer getChofer(ResultSet res) { try { return new Chofer(res.getInt(Chofer.COLUMN_ID), res.getString(Chofer.COLUMN_NOMBRE), res.getInt(Chofer.COLUMN_TRANSPORTISTA_ID), res.getString(Camion.COLUMN_ESTADO)); } catch (SQLException e) { return null; } } private static Acoplado getAcoplado(ResultSet res) { try { return new Acoplado(res.getInt(Acoplado.COLUMN_ID), res.getString(Acoplado.COLUMN_PATENTE), res.getInt(Acoplado.COLUMN_TRANSPORTISTA_ID), res.getString(Acoplado.COLUMN_ESTADO)); } catch (SQLException e) { return null; } } public static Integer insertTrasladoEncabezado(Transaccion trx, ManejoBase trasladoEncabezado) throws SQLException { Integer id = null; Connection conn = trx.getConn(); PreparedStatement pst = conn.prepareStatement(SQL_TRASLADO_ENCABEZADO_GESTIONAR); pst.setObject(1, trasladoEncabezado.getEstado()); pst.setObject(2, trasladoEncabezado.getFundoId()); pst.setObject(3, trasladoEncabezado.getUsuarioId()); pst.setObject(4, trasladoEncabezado.getValores()); pst.setObject(5, trasladoEncabezado.getId()); pst.setObject(6, trasladoEncabezado.getAccion()); ResultSet res = pst.executeQuery(); if (res.next()) { id = res.getInt(1); } res.close(); pst.close(); return id; } public static Integer generarTrasladoEntrada(Transaccion trx, ManejoBase trasladoEncabezado) throws SQLException { Integer id = null; Connection conn = trx.getConn(); PreparedStatement pst = conn.prepareStatement(SQL_GENERAR_ENTRADA); pst.setObject(1, trasladoEncabezado.getEstado()); pst.setObject(2, trasladoEncabezado.getFundoId()); pst.setObject(3, trasladoEncabezado.getUsuarioId()); pst.setObject(4, trasladoEncabezado.getValores()); pst.setObject(5, trasladoEncabezado.getId()); ResultSet res = pst.executeQuery(); if (res.next()) { id = res.getInt(1); } res.close(); pst.close(); return id; } public static Integer insertTrasladoDetalle(Transaccion trx, GanadoManejo trasladoGanado) throws SQLException { Integer id = null; Connection conn = trx.getConn(); PreparedStatement pst = conn.prepareStatement(SQL_TRASLADO_DETALLE_GESTIONAR); pst.setObject(1, trasladoGanado.getEstado()); pst.setObject(2, trasladoGanado.getFundoId()); pst.setObject(3, trasladoGanado.getGanadoId()); pst.setObject(4, trasladoGanado.getCreadoporId()); pst.setObject(5, trasladoGanado.getManejoId()); pst.setObject(6, trasladoGanado.getId()); ResultSet res = pst.executeQuery(); if (res.next()) { id = res.getInt(1); } res.close(); pst.close(); return id; } public static Integer trasladoEncabezadoListGestionar(Transaccion trx, List<ManejoBase> trasladoEncabezadoList) throws SQLException { Integer cant = 0; if (trasladoEncabezadoList != null && trasladoEncabezadoList.size() > 0) { for (ManejoBase item : trasladoEncabezadoList) { Integer id = insertTrasladoEncabezado(trx, item); item.setId(id); if (id != null) { cant++; } } } return cant; } public static Integer trasladoDetalleListGestionar(Transaccion trx, List<GanadoManejo> ganadoTrasladoList) throws SQLException { Integer cant = 0; if (ganadoTrasladoList != null && ganadoTrasladoList.size() > 0) { for (GanadoManejo item : ganadoTrasladoList) { Integer id = insertTrasladoDetalle(trx, item); item.setId(id); if (id != null) { cant++; } } } return cant; } public static Integer gestionarTraslado(Transaccion trx, List<ManejoBase> trasladosEncabezadosList, List<GanadoManejo> ganadoTrasladoList) throws SQLException { Integer cant = 0; Integer detalleId = null; Integer id = null; List<GanadoManejo> ganadoManejoListToAdd = new ArrayList<GanadoManejo>(); List<ManejoBase> trasladosConcluidos = new ArrayList<ManejoBase>(); for (GanadoManejo ganadoDetalle : ganadoTrasladoList) { if (ganadoDetalle.getEstado().equals("EP")) { ganadoManejoListToAdd.add(ganadoDetalle); } else if (ganadoDetalle.getEstado().equals("AN")) { id = insertTrasladoDetalle(trx, ganadoDetalle); if (id != null) cant++; } } id = null; for (ManejoBase traslado : trasladosEncabezadosList) { id = insertTrasladoEncabezado(trx, traslado); if (traslado.getEstado().equals("AN")) { Correo correo = new Correo(); correo.setFrom("adempiere@chilterra.com"); String correoDestino = selectUsuarioById(trx, traslado.getUsuarioId()); correo.setTo(correoDestino + ";" + "sipec@chilterra.com" + ";" + "desarrollador@chilterra.com" + ";" + "sipec2@chilterra.com"); ManejoBase trasladoInserted = getTrasladoEncabezadoById(trx, traslado.getId()); String fundoOrigen = selectFundoById(trx, traslado.getFundoId()); String fundoDestino = selectFundoById(trx, traslado.getTrasladoDestino()); correo.setBody("El traslado " + trasladoInserted.getTrasladoNroGuia() + " ha sido anulado" + "\n" + "Fundo origen: " + fundoOrigen + "\n" + "Fundo destino: " + fundoDestino); correo.setSubject("Anulacin de traslado"); correo.enviar(); } if (id == null) return null; cant++; //Asociando los ganados con el traslado correspondiente for (GanadoManejo ganadoDetalle : ganadoManejoListToAdd) { if (ganadoDetalle.getManejoId().equals(traslado.getId())) { ganadoDetalle.setManejoId(id); } } //Seteando los traslados con el id de postgres if (traslado.getEstado().equals("BO-CO")) { ManejoBase trasladoInserted = traslado; trasladoInserted.setId(id); trasladosConcluidos.add(trasladoInserted); } id = null; } for (GanadoManejo ganadoDetalle : ganadoManejoListToAdd) { detalleId = insertTrasladoDetalle(trx, ganadoDetalle); if (detalleId != null) { cant++; } else { return null; } detalleId = null; } return cant; } public static DctoAdem insertMovtoAdem(Transaccion trx, Integer salidaId) throws SQLException { DctoAdem d = new DctoAdem(); Connection conn = null; PreparedStatement pst = null; ResultSet res = null; conn = trx.getConn(); pst = conn.prepareStatement(SQL_INSERT_MOVTO_ADEM); pst.setObject(1, salidaId); res = pst.executeQuery(); if (res.next()) { d.setIddocto(res.getInt("iddocto")); d.setIdtipodocto(res.getInt("idtipodocto")); d.setNrodocto(res.getString("nrodocto")); d.setG_movimiento_id(salidaId); } // res.close(); // pst.close(); return d; } public static void selectFmaXml(Transaccion trx, FMA fma) throws SQLException { String strXML = null; String correoDestino = null; String fundoOrigen = null; String fundoDestino = null; String rupOrigen = null; String rupDestino = null; Integer nro_documento = null; Connection conn = null; PreparedStatement pst = null; ResultSet res = null; conn = trx.getConn(); pst = conn.prepareStatement(SQL_SELECT_FMA_XML); pst.setObject(1, fma.getUsuarioId()); pst.setObject(2, fma.getG_movimiento_id()); pst.setObject(3, fma.getFundoOrigenId()); pst.setObject(4, fma.getFundoDestinoId()); res = pst.executeQuery(); if (res.next()) { strXML = res.getString("xmlmsg"); correoDestino = res.getString("mail"); fundoOrigen = res.getString("fundo_origen"); fundoDestino = res.getString("fundo_destino"); rupOrigen = res.getString("rup_origen"); rupDestino = res.getString("rup_destino"); nro_documento = res.getInt("nro_documento"); } //No se genera el FMA, debido a que el predio de origen y/o destino no esta registrado //en SIPEC o no tiene RUP asignado en SIP if (rupOrigen == null || rupDestino == null || (rupOrigen.equals(rupDestino))) { res.close(); pst.close(); return; } byte[] byteXML = strXML.getBytes(); Correo correo = new Correo(); correo.setFrom("adempiere@chilterra.com"); correo.setTo(correoDestino + ";" + "sipec@chilterra.com" + ";" + "desarrollador@chilterra.com" + ";" + "sipec2@chilterra.com"); correo.setSubject("FMA " + nro_documento + " - " + fundoOrigen + " - " + fundoDestino); correo.setBody("XML vlido para generar un FMA en sitio web SIPEC" + "\n" + "http://sipecweb.sag.gob.cl/" + "\n" + "RUP " + fundoOrigen + ": " + rupOrigen + "\n" + "RUP " + fundoDestino + ": " + rupDestino + "\n"); correo.addAdjunto(byteXML, "application/xml", "FMA " + nro_documento + ".xml"); correo.enviar(); res.close(); pst.close(); } public static FmaCorreo selectDataForFma(Transaccion trx, FMA fma) throws SQLException { String strXML = null; String correoDestino = null; String fundoOrigen = null; String fundoDestino = null; String rupOrigen = null; String rupDestino = null; Integer nro_documento = null; Connection conn = null; PreparedStatement pst = null; ResultSet res = null; conn = trx.getConn(); pst = conn.prepareStatement(SQL_SELECT_FMA_XML); pst.setObject(1, fma.getUsuarioId()); pst.setObject(2, fma.getG_movimiento_id()); pst.setObject(3, fma.getFundoOrigenId()); pst.setObject(4, fma.getFundoDestinoId()); res = pst.executeQuery(); if (res.next()) { strXML = res.getString("xmlmsg"); correoDestino = res.getString("mail"); fundoOrigen = res.getString("fundo_origen"); fundoDestino = res.getString("fundo_destino"); rupOrigen = res.getString("rup_origen"); rupDestino = res.getString("rup_destino"); nro_documento = res.getInt("nro_documento"); } res.close(); pst.close(); FmaCorreo fmaCorreo = new FmaCorreo(correoDestino, fundoOrigen, fundoDestino, rupOrigen, rupDestino, nro_documento); return fmaCorreo; } private static Traslado getTraslado(ResultSet res) { try { return new Traslado(res.getInt(Traslado.COLUMN_ID), res.getDate(Traslado.COLUMN_FECHA), res.getString(Traslado.COLUMN_FUNDO_ORIGEN), res.getString(Traslado.COLUMN_FUNDO_DESTINO), res.getString(Traslado.COLUMN_NOMBRE_CHOFER), res.getString(Traslado.COLUMN_RUT_CHOFER), res.getString(Traslado.COLUMN_PATENTE_CAMION), res.getString(Traslado.COLUMN_NOMBRE_TRANSPORTISTA), res.getString(Traslado.COLUMN_RUT_TRANSPORTISTA), res.getString(Traslado.COLUMN_ACOPLADO_PATENTE), res.getString(Traslado.COLUMN_CORREO) ); } catch (SQLException e) { return null; } } public static Traslado selectTrasladoById(Transaccion trx, Integer trasladoId) throws SQLException { Traslado item = null; Connection conn = trx.getConn(); PreparedStatement pst = conn.prepareStatement(SQL_TRASLADO_INFO_GUIA); pst.setObject(1, trasladoId); ResultSet res = pst.executeQuery(); while (res.next()) { item = getTraslado(res); if (item != null) { return item; } } res.close(); pst.close(); return item; } public static List selectDiiosTrasladoById(Transaccion trx, Integer trasladoId) throws SQLException { List listDiios = new ArrayList(); Connection conn = trx.getConn(); PreparedStatement pst = conn.prepareStatement(SQL_TRASLADO_DIIOS); pst.setObject(1, trasladoId); ResultSet res = pst.executeQuery(); while (res.next()) { String item = res.getString(1); if (item != null) { listDiios.add(item); } } res.close(); pst.close(); return listDiios; } public static List selectDiiosByManejoId(Transaccion trx, Integer trasladoId) throws SQLException { List listDiios = new ArrayList(); Connection conn = trx.getConn(); PreparedStatement pst = conn.prepareStatement(SQL_SELECT_DIIOS_BY_MANEJO); pst.setObject(1, trasladoId); ResultSet res = pst.executeQuery(); while (res.next()) { Integer item = res.getInt(1); listDiios.add(item); } res.close(); pst.close(); return listDiios; } public static void generarDocumentoTraslado(Transaccion trx, Integer trasladoId) throws SQLException { Traslado traslado = selectTrasladoById(trx, trasladoId); List<String> listDiios = selectDiiosTrasladoById(trx, trasladoId); try { Integer identificadorTraslado = trasladoId; String fundoOrigen = traslado.getFundoOrigen(); String fundoDestino = traslado.getFundoDestino(); Integer cantAnimales = listDiios.size(); Date fecha = traslado.getFecha(); String nombreChofer = traslado.getNombreChofer(); String rutChofer = traslado.getRutChofer(); String patenteCamion = traslado.getPatenteCamion(); String patenteAcoplado = traslado.getAcopladoPatente(); String nombreTransportista = traslado.getNombreTransportista(); String rutTransportista = traslado.getRutTransportista(); String correoDestino = traslado.getCorreo(); DateFormat df = new SimpleDateFormat("dd-MM-yyyy hh_mm_ss"); DateFormat df2 = new SimpleDateFormat("dd-MM-yyyy"); Date today = Calendar.getInstance().getTime(); String reportDate = df.format(today); String reportDate2 = df2.format(today); String fileName = "Traslado Nro. " + identificadorTraslado + "-" + reportDate2 + " " + fundoOrigen + "_" + fundoDestino; // String fileRoot="Z:\\Chilterra\\MiCampoGuias\\"+fileName+".pdf"; String fileRoot = "/usr/share/MiCampoGuiasUpload/" + fileName + ".pdf"; PdfWriter writer = new PdfWriter(fileRoot); PdfDocument pdf = new PdfDocument(writer); Document document = new Document(pdf); addPageToGuia(traslado, listDiios, document, cantAnimales); addSpaces(document); //Firmas Table firmas = new Table(3); firmas.addCell(CellHelper.getCellFirma("Responsable fundo origen", TextAlignment.CENTER)); firmas.addCell(CellHelper.getCell("", TextAlignment.LEFT)); firmas.addCell(CellHelper.getCellFirma("Transportista", TextAlignment.CENTER)); document.add(firmas); copiaPara("Fundo origen", document); document.add(new AreaBreak(AreaBreakType.NEXT_PAGE)); addDiiosPage(document, listDiios); document.add(new AreaBreak(AreaBreakType.NEXT_PAGE)); addPageToGuia(traslado, listDiios, document, cantAnimales); addSpaces(document); Table firmas2 = new Table(3); firmas2.addCell(CellHelper.getCellFirma("Responsable fundo destino", TextAlignment.CENTER)); firmas2.addCell(CellHelper.getCell("", TextAlignment.LEFT)); firmas2.addCell(CellHelper.getCellFirma("Transportista", TextAlignment.CENTER)); document.add(firmas2); copiaPara("Fundo destino", document); document.add(new AreaBreak(AreaBreakType.NEXT_PAGE)); addDiiosPage(document, listDiios); document.add(new AreaBreak(AreaBreakType.NEXT_PAGE)); addPageToGuia(traslado, listDiios, document, cantAnimales); addSpaces(document); Table firmas3 = new Table(3); firmas3.addCell(CellHelper.getCellFirma("Responsable fundo origen", TextAlignment.CENTER)); firmas3.addCell(CellHelper.getCell("", TextAlignment.LEFT)); firmas3.addCell(CellHelper.getCellFirma("Responsable fundo destino", TextAlignment.CENTER)); document.add(firmas3); copiaPara("Transportista", document); document.add(new AreaBreak(AreaBreakType.NEXT_PAGE)); addDiiosPage(document, listDiios); document.close(); File file = new File(fileRoot); InputStream inputStream = new FileInputStream(file); int fileLength = (int) file.length(); byte[] bytes = new byte[fileLength]; inputStream.read(bytes); Correo correo = new Correo(); correo.setFrom("desarrollador@chilterra.com"); correo.setTo(correoDestino + ";" + "sipec@chilterra.com"); correo.setSubject("Traslado interno de animales Nro: " + trasladoId); correo.setBody(""); correo.addAdjunto(bytes, "application/pdf", fileName + ".pdf"); correo.enviar(); } catch (Exception ex) { } } public static void addPageToGuia(Traslado traslado, List<String> listDiios, Document document, Integer cantAnimales) { try { Integer identificadorTraslado = traslado.getId(); String fundoOrigen = traslado.getFundoOrigen(); String fundoDestino = traslado.getFundoDestino(); Date fecha = traslado.getFecha(); String nombreChofer = traslado.getNombreChofer(); String rutChofer = traslado.getRutChofer(); String patenteCamion = traslado.getPatenteCamion(); String patenteAcoplado = traslado.getAcopladoPatente(); String nombreTransportista = traslado.getNombreTransportista(); String rutTransportista = traslado.getRutTransportista(); String imagePath = "/usr/share/MiCampoGuiasUpload/A2RLogo.png"; // String imagePath="Z:\\Chilterra\\MiCampoGuias\\A2RLogo.png"; DateFormat df = new SimpleDateFormat("dd-MM-yyyy hh_mm_ss"); DateFormat df2 = new SimpleDateFormat("dd-MM-yyyy"); Date today = Calendar.getInstance().getTime(); String reportDate = df.format(today); String reportDate2 = df2.format(today); PdfFont bold = PdfFontFactory.createFont(FontConstants.HELVETICA_BOLD); Text fechaText = new Text("Fecha: " + reportDate2).setTextAlignment(TextAlignment.RIGHT); Paragraph paragraphFecha = new Paragraph().add(fechaText); paragraphFecha.setTextAlignment(TextAlignment.RIGHT); document.add(paragraphFecha); Text title = new Text("TRASLADO INTERNO DE ANIMALES No. " + identificadorTraslado).setFont(bold); title.setFontSize(12); Image a2R = new Image(ImageDataFactory.create(imagePath)); Paragraph p = new Paragraph("").add(a2R).add(title); document.add(p); //Datos del traslado Table table = new Table(2); table.addCell(CellHelper.getCell("Fundo origen: ", fundoOrigen, TextAlignment.LEFT)); table.addCell(CellHelper.getCell("Fundo destino: ", fundoDestino, TextAlignment.LEFT)); table.addCell(CellHelper.getCell("Nombre Chofer: ", nombreChofer, TextAlignment.LEFT)); table.addCell(CellHelper.getCell("Rut Chofer: ", nombreChofer, TextAlignment.LEFT)); table.addCell(CellHelper.getCell("Patente camin: ", patenteCamion, TextAlignment.LEFT)); table.addCell(CellHelper.getCell("Patente acoplado: ", patenteAcoplado, TextAlignment.LEFT)); table.addCell(CellHelper.getCell("Nombre transportista: ", nombreTransportista, TextAlignment.LEFT)); table.addCell(CellHelper.getCell("Rut transportista: ", rutTransportista, TextAlignment.LEFT)); document.add(table); Paragraph totalAnimales = CellHelper.getBoldParagraph("Cantidad total de animales: ", cantAnimales.toString()); document.add(totalAnimales); //Observaciones Paragraph observaciones = new Paragraph("Observaciones: ").setBold(); document.add(observaciones); Table observTable = new Table(1); observTable.addCell(CellHelper.getCellObservaciones("", TextAlignment.LEFT)); document.add(observTable); Paragraph space1 = new Paragraph(""); document.add(space1); Paragraph space2 = new Paragraph(""); document.add(space2); Paragraph space3 = new Paragraph(""); document.add(space3); Paragraph space4 = new Paragraph(""); document.add(space4); } catch (Exception ex) { } } public static void addDiiosPage(Document document, List<String> listDiios) { try { Integer cantAnimales = listDiios.size(); Integer diff = 0; if (listDiios.size() < 6) { diff = 6 - cantAnimales; } else { if (cantAnimales % 6 != 0) { Integer cociente = cantAnimales / 6; diff = ((cociente + 1) * 6) - cantAnimales; } } for (int i = 0; i < diff; i++) { listDiios.add(" "); } PdfFont bold = PdfFontFactory.createFont(FontConstants.HELVETICA_BOLD); Text subTitle = new Text("Diios: ").setFont(bold); Paragraph subtitleParagraph = new Paragraph().add(subTitle); document.add(subtitleParagraph); Table tableDiios = new Table(6); for (int i = 0; i < listDiios.size(); i++) { tableDiios.addCell(CellHelper.getCellDiios(listDiios.get(i), TextAlignment.LEFT)); } document.add(tableDiios); } catch (Exception ex) { } } public static void copiaPara(String copia, Document document) { Text copy = new Text("Copia para " + copia).setTextAlignment(TextAlignment.CENTER); Paragraph paragraphCopy = new Paragraph().add(copy); paragraphCopy.setTextAlignment(TextAlignment.CENTER); document.add(paragraphCopy); } public static void addSpaces(Document document) { for (int i = 0; i < 20; i++) { document.add(new Paragraph(" ")); } } }