diff --git a/curriculumsearch/src/main/java/com/roshka/controller/PostulanteRRHHController.java b/curriculumsearch/src/main/java/com/roshka/controller/PostulanteRRHHController.java index faf1092..ef2d3f7 100644 --- a/curriculumsearch/src/main/java/com/roshka/controller/PostulanteRRHHController.java +++ b/curriculumsearch/src/main/java/com/roshka/controller/PostulanteRRHHController.java @@ -100,7 +100,7 @@ public class PostulanteRRHHController { @RequestParam(required = false)Long convId, @RequestParam(defaultValue = "0")Integer nroPagina ) throws IOException { - final Integer CANTIDAD_POR_PAGINA = 5; + final Integer CANTIDAD_POR_PAGINA = 1; Pageable page = PageRequest.of(nroPagina,CANTIDAD_POR_PAGINA,Sort.by("id")); model.addAttribute("tecnologias", tecRepo.findAll()); model.addAttribute("disponibilidades", Disponibilidad.values()); @@ -120,20 +120,16 @@ public class PostulanteRRHHController { nombre == null || nombre.trim().isEmpty() ? new TypedParameterValue(StringType.INSTANCE,null) : new TypedParameterValue(StringType.INSTANCE,"%"+nombre+"%"), - dispo, lvlEng, lvlTec, tecId, instId,cargoId,page,estado,convId); + dispo, 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.getDisponibilidad(), postulante.getNivelIngles(), expTotal, postulante.getTecnologias(),postulante.getEstadoPostulante(),postulante.getPostulaciones())); + postulantesDTO.add(new PostulanteListaDTO(postulante.getId(), postulante.getNombre(), + postulante.getApellido(), postulante.getDisponibilidad(), postulante.getNivelIngles(), + postulante.getMesesDeExperiencia(), postulante.getTecnologias(),postulante.getEstadoPostulante(), + postulante.getPostulaciones())); } model.addAttribute("pages", postulantesPag.getTotalPages()); @@ -165,19 +161,15 @@ public class PostulanteRRHHController { nombre == null || nombre.trim().isEmpty() ? new TypedParameterValue(StringType.INSTANCE,null) : new TypedParameterValue(StringType.INSTANCE,"%"+nombre+"%"), - dispo, lvlEng, lvlTec, tecId, instId,cargoId,page,estado,convId); + dispo, 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.getDisponibilidad(), postulante.getNivelIngles(), expTotal, postulante.getTecnologias(),postulante.getEstadoPostulante(),postulante.getPostulaciones())); + postulantesDTO.add(new PostulanteListaDTO(postulante.getId(), postulante.getNombre(), + postulante.getApellido(), postulante.getDisponibilidad(), 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 6d037a2..b45046d 100644 --- a/curriculumsearch/src/main/java/com/roshka/modelo/Postulante.java +++ b/curriculumsearch/src/main/java/com/roshka/modelo/Postulante.java @@ -135,11 +135,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(); @@ -147,6 +152,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 72d9b4d..b48e041 100644 --- a/curriculumsearch/src/main/java/com/roshka/repositorio/PostulanteRepository.java +++ b/curriculumsearch/src/main/java/com/roshka/repositorio/PostulanteRepository.java @@ -62,8 +62,11 @@ public interface PostulanteRepository extends JpaRepository { " and (e.institucion.id = ?6 or ?6 is null ) "+ " and (conv.cargoId = ?7 or ?7 is null ) "+ "and (p.estadoPostulante = ?8 or ?8 is null) "+ - " and (conv.id=?9 or ?9 is null ) ") - public Page postulantesMultiFiltro(TypedParameterValue nombre, Disponibilidad disponibilidad, Long nivelInges, Long nivel, Long tecnoId, Long instId,Long cargoId, Pageable pageable, EstadoPostulante estado, Long convo); + " and (conv.id=?9 or ?9 is null ) " + + "and (p.mesesDeExperiencia >= ?10 or ?10 is null ) ") + public Page postulantesMultiFiltro(TypedParameterValue nombre, Disponibilidad disponibilidad, + 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 25a745b..ecb7969 100644 --- a/curriculumsearch/src/main/webapp/jsp/detallepostulante.jsp +++ b/curriculumsearch/src/main/webapp/jsp/detallepostulante.jsp @@ -131,24 +131,34 @@
-
-
- - -
- - - -
- Descargar CV +
+
+
+ +
+
+ - +
+ - - + + + + + + +
@@ -400,7 +410,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 }, @@ -414,7 +424,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')