diff --git a/curriculumsearch/src/main/java/com/roshka/controller/PostulanteRRHHController.java b/curriculumsearch/src/main/java/com/roshka/controller/PostulanteRRHHController.java index 2f526d6..b5b4a3c 100644 --- a/curriculumsearch/src/main/java/com/roshka/controller/PostulanteRRHHController.java +++ b/curriculumsearch/src/main/java/com/roshka/controller/PostulanteRRHHController.java @@ -98,6 +98,7 @@ public class PostulanteRRHHController { @RequestParam(required = false)Long convId, @RequestParam(defaultValue = "0")Integer nroPagina ) throws IOException { + final Integer CANTIDAD_POR_PAGINA = 10; Pageable page = PageRequest.of(nroPagina,CANTIDAD_POR_PAGINA,Sort.by("id")); model.addAttribute("tecnologias", tecRepo.findAll()); @@ -117,20 +118,16 @@ public class PostulanteRRHHController { nombre == null || nombre.trim().isEmpty() ? new TypedParameterValue(StringType.INSTANCE,null) : new TypedParameterValue(StringType.INSTANCE,"%"+nombre+"%"), - lvlEng, lvlTec, tecId, instId,cargoId,page,estado,convId); + lvlEng, lvlTec, tecId, instId,cargoId,page,estado,convId, expInMonths); model.addAttribute("numeroOcurrencias", postulantesPag.getTotalElements()); List postulantes = postulantesPag.getContent(); List postulantesDTO = new ArrayList<>(); for (Postulante postulante : postulantes) { - long expTotal = 0; - //Sumamos el tiempo de experiencia total en meses de cada postulante - //expTotal = postulante.getExperiencias().stream().mapToLong(e -> Helper.getMonthsDifference(e.getFechaDesde(), e.getFechaHasta())).sum(); - for (Experiencia experiencia : postulante.getExperiencias()) { - expTotal += Helper.getMonthsDifference(experiencia.getFechaDesde(), experiencia.getFechaHasta()); - } - if(expInMonths != null && expInMonths > expTotal) continue; - postulantesDTO.add(new PostulanteListaDTO(postulante.getId(), postulante.getNombre(), postulante.getApellido(), postulante.getNivelIngles(), expTotal, postulante.getTecnologias(),postulante.getEstadoPostulante(),postulante.getPostulaciones())); + postulantesDTO.add(new PostulanteListaDTO(postulante.getId(), postulante.getNombre(), + postulante.getApellido(), postulante.getNivelIngles(), + postulante.getMesesDeExperiencia(), postulante.getTecnologias(),postulante.getEstadoPostulante(), + postulante.getPostulaciones())); } model.addAttribute("pages", postulantesPag.getTotalPages()); @@ -161,19 +158,15 @@ public class PostulanteRRHHController { nombre == null || nombre.trim().isEmpty() ? new TypedParameterValue(StringType.INSTANCE,null) : new TypedParameterValue(StringType.INSTANCE,"%"+nombre+"%"), - lvlEng, lvlTec, tecId, instId,cargoId,page,estado,convId); + lvlEng, lvlTec, tecId, instId,cargoId,page,estado,convId, expInMonths); List postulantes = postulantesPag.getContent(); List postulantesDTO = new ArrayList<>(); for (Postulante postulante : postulantes) { - long expTotal = 0; - //Sumamos el tiempo de experiencia total en meses de cada postulante - //expTotal = postulante.getExperiencias().stream().mapToLong(e -> Helper.getMonthsDifference(e.getFechaDesde(), e.getFechaHasta())).sum(); - for (Experiencia experiencia : postulante.getExperiencias()) { - expTotal += Helper.getMonthsDifference(experiencia.getFechaDesde(), experiencia.getFechaHasta()); - } - if(expInMonths != null && expInMonths > expTotal) continue; - postulantesDTO.add(new PostulanteListaDTO(postulante.getId(), postulante.getNombre(), postulante.getApellido(), postulante.getNivelIngles(), expTotal, postulante.getTecnologias(),postulante.getEstadoPostulante(),postulante.getPostulaciones())); + postulantesDTO.add(new PostulanteListaDTO(postulante.getId(), postulante.getNombre(), + postulante.getApellido(), postulante.getNivelIngles(), + postulante.getMesesDeExperiencia(), postulante.getTecnologias(),postulante.getEstadoPostulante(), + postulante.getPostulaciones())); } response.setContentType("application/octet-stream"); diff --git a/curriculumsearch/src/main/java/com/roshka/modelo/Postulante.java b/curriculumsearch/src/main/java/com/roshka/modelo/Postulante.java index 8e53fa6..8e35554 100644 --- a/curriculumsearch/src/main/java/com/roshka/modelo/Postulante.java +++ b/curriculumsearch/src/main/java/com/roshka/modelo/Postulante.java @@ -133,11 +133,16 @@ public class Postulante { @Column(name = "fecha_contratado") private Date fechaContratado; + + @Column(name = "meses_de_exp") + private Long mesesDeExperiencia; public void setFechaNacimiento(String fechaNacimiento) { this.fechaNacimiento = Helper.convertirFecha(fechaNacimiento); } + + @PrePersist public void precargarFechas(){ this.fechaCreacion = new Date(); @@ -145,6 +150,17 @@ public class Postulante { this.estadoPostulante = EstadoPostulante.NUEVO; this.comentarioRRHH = null; } + + @PostPersist + private void calcularExperienciaEnMese(){ + long expTotal = 0; + //expTotal = postulante.getExperiencias().stream().mapToLong(e -> Helper.getMonthsDifference(e.getFechaDesde(), e.getFechaHasta())).sum(); + for (Experiencia experiencia : this.experiencias) { + expTotal += Helper.getMonthsDifference(experiencia.getFechaDesde(), experiencia.getFechaHasta()); + } + this.mesesDeExperiencia = expTotal; + } + @PreUpdate public void actualizarFecha(){ this.fechaActualizacion= new Date(); diff --git a/curriculumsearch/src/main/java/com/roshka/repositorio/PostulanteRepository.java b/curriculumsearch/src/main/java/com/roshka/repositorio/PostulanteRepository.java index 430f968..458b285 100644 --- a/curriculumsearch/src/main/java/com/roshka/repositorio/PostulanteRepository.java +++ b/curriculumsearch/src/main/java/com/roshka/repositorio/PostulanteRepository.java @@ -54,15 +54,17 @@ public interface PostulanteRepository extends JpaRepository { "left join p.tecnologias pt " + "left join p.postulaciones conv " + "where (?1 is null or lower(p.nombre) LIKE lower(?1) or lower(p.apellido) LIKE lower(?1) ) " + - "and (p.nivelIngles >= ?2 or ?2 is null) "+ "and (pt.nivel >= ?3 or ?3 is null) "+ "and (pt.tecnologia.id = ?4 or ?4 is null) "+ " and (e.institucion.id = ?5 or ?5 is null ) "+ " and (conv.cargoId = ?6 or ?6 is null ) "+ "and (p.estadoPostulante = ?7 or ?7 is null) "+ - " and (conv.id=?8 or ?8 is null ) ") - public Page postulantesMultiFiltro(TypedParameterValue nombre, Long nivelInges, Long nivel, Long tecnoId, Long instId,Long cargoId, Pageable pageable, EstadoPostulante estado, Long convo); + " and (conv.id=?8 or ?8 is null ) " + + "and (p.mesesDeExperiencia >= ?9 or ?9 is null ) ") + public Page postulantesMultiFiltro(TypedParameterValue nombre, Long nivelInges, Long nivel, Long tecnoId, + Long instId,Long cargoId, Pageable pageable, EstadoPostulante estado, + Long convo, Long expInMonths); @Transactional @Modifying diff --git a/curriculumsearch/src/main/java/com/roshka/utils/PostulantesExcelExporter.java b/curriculumsearch/src/main/java/com/roshka/utils/PostulantesExcelExporter.java index d765f6a..dec1e91 100644 --- a/curriculumsearch/src/main/java/com/roshka/utils/PostulantesExcelExporter.java +++ b/curriculumsearch/src/main/java/com/roshka/utils/PostulantesExcelExporter.java @@ -14,9 +14,7 @@ import javax.servlet.http.HttpServletResponse; import com.roshka.DTO.PostulanteListaDTO; import com.roshka.modelo.PostulanteTecnologia; import com.roshka.modelo.Tecnologia; -import org.apache.poi.ss.usermodel.Cell; -import org.apache.poi.ss.usermodel.CellStyle; -import org.apache.poi.ss.usermodel.Row; +import org.apache.poi.ss.usermodel.*; import org.apache.poi.xssf.usermodel.XSSFFont; import org.apache.poi.xssf.usermodel.XSSFSheet; import org.apache.poi.xssf.usermodel.XSSFWorkbook; @@ -42,9 +40,16 @@ public class PostulantesExcelExporter { Row row = sheet.createRow(0); CellStyle style = workbook.createCellStyle(); XSSFFont font = workbook.createFont(); + font.setFontHeightInPoints((short)14); + font.setColor(IndexedColors.WHITE.getIndex()); font.setBold(true); - font.setFontHeight(14); + font.setItalic(false); + + style.setFillPattern(FillPatternType.SOLID_FOREGROUND); + style.setAlignment(HorizontalAlignment.CENTER); + // Setting font to style style.setFont(font); + createCell(row, 0, "Postulantes "+currentDateTime, style); row = sheet.createRow(2); diff --git a/curriculumsearch/src/main/webapp/jsp/detallepostulante.jsp b/curriculumsearch/src/main/webapp/jsp/detallepostulante.jsp index 53969d3..4d983e1 100644 --- a/curriculumsearch/src/main/webapp/jsp/detallepostulante.jsp +++ b/curriculumsearch/src/main/webapp/jsp/detallepostulante.jsp @@ -122,24 +122,34 @@
-
-
- - -
- - - -
- Descargar CV +
+
+
+ +
+
+ - +
+ - - + + + + + + +
@@ -391,7 +401,7 @@ var carousels = document.querySelectorAll(".pdf-carousel"); var hrs = document.querySelectorAll(".lineas-pdf"); var opt = { - margin: 1, + margin: [1, 1, 1, 1], filename: 'myfile.pdf', image: { type: 'jpeg', quality: 0.98 }, html2canvas: { scale: 2 }, @@ -405,7 +415,6 @@ element.style.display = "block" }); await html2pdf().set(opt).from(element).toPdf().save(); - console.log('xd'); buttonsRow.style.display = "block"; carousels.forEach((element)=>{ element.classList.add('carousel-item')