Ahora vamos hacer que el servicio reciba el parametro
NOTA: los parametros vienen como String por tanto para poder obtener el objeto debemos:
Recibir un String
Y obtener el objeto con find convirtiendo el String en Long
Ejemplo
public void procesoFinalizacionEtapasPPO( Long jobId, String idEtapaPlan) {
//Obtenemos la etapa plan
EtapaPlan etapaPlan = etapaPlanService.find(Long.parseLong(idEtapaPlan));
Ahora lo que debemos hacer es modificar este metodo
Date diaHoy = eventoService.fechaFormatoSinHoras(new Date());
Date diaAyer = eventoService.calcularFecha(diaHoy,-eventoService.fechaMenosNDiasHabiles(diaHoy, 1));
PeriodoAnual periodoAnualVigente = periodoAnualService.findAnoFormulacion();
Y renombramos los nombres de variables
@Override
public void procesoFinalizacionEtapasPPO(Long jobId, String idEtapaPlan) {
// Obtenemos la etapa plan
EtapaPlan etapaPlan = etapaPlanService.find(Long.parseLong(idEtapaPlan));
// Obtenemos los id de estados de formulacion que no es necesario enviar correo
String ids = parametroService.findOneByLlave("param_ppi_ppo_estados_formulacion_correo").getValor();
// Hacemos un split
String[] arrayIds = ids.split(",");
// creamos una lista de estados
List<Long> idsEstados = new ArrayList();
// Recorremos la lista
for (String s : arrayIds) {
// agregamos el valor a lista
idsEstados.add(Long.valueOf(s));
}
// Obtenemos todos los planes que no hayan terminado el flujo
List<PlanOperativo> planesSinFinalizar = findByEtapaPlanAndFlujoNotFinalizado(etapaPlan, idsEstados);
if (!planesSinFinalizar.isEmpty()) {
Rol rolAprobadorUnidadEjecutora = rolService.findOne(Long.parseLong(parametroService.findOneByLlave("param_ppi_ppo_rol_aprobador_unidad_ejecutora").getValor()));
List<Usuario> usuariosUnidadEjecutora = rolUsuarioService.getByRolActivo(rolAprobadorUnidadEjecutora);
Rol rolAprobadorUnidadIntegradora = rolService.findOne(Long.parseLong(parametroService.findOneByLlave("param_ppi_ppo_rol_aprobador_unidad_integradora").getValor()));
List<Usuario> usuariosUnidadIntegradora = rolUsuarioService.getByRolActivo(rolAprobadorUnidadIntegradora);
Rol rolPPOAdmin = rolService.findOne(Long.parseLong(parametroService.findOneByLlave("param_ppi_ppo_rol_admin").getValor()));
List<Usuario> usuariosPPOAdmin = rolUsuarioService.getByRolActivo(rolPPOAdmin);
Rol rolPPOAnalista = rolService.findOne(Long.parseLong(parametroService.findOneByLlave("param_ppi_ppo_rol_analista").getValor()));
List<Usuario> usuariosPPOAnalista = rolUsuarioService.getByRolActivo(rolPPOAnalista);
for (PlanOperativo planOperativo : planesSinFinalizar) {
List<Usuario> usuariosUE = this.obtieneUsuariosPorRolAcl(planOperativo.getUnidadEjecutora().getCodigo());
List<Usuario> usuariosEnviarCorreo = new ArrayList();
usuariosEnviarCorreo.addAll(usuariosPPOAnalista);
for (Usuario usuarioACL : usuariosUE) {
if ((usuariosUnidadEjecutora.contains(usuarioACL) || usuariosUnidadIntegradora.contains(usuarioACL)) && !usuariosEnviarCorreo.contains(usuarioACL)) {
usuariosEnviarCorreo.add(usuarioACL);
}
}
for (Usuario usuario : usuariosPPOAdmin) {
if (!usuariosEnviarCorreo.contains(usuario)) {
usuariosEnviarCorreo.add(usuario);
}
}
this.enviarCorreoVencimiento(usuariosEnviarCorreo, planOperativo, etapaPlan.getNombre());
}
}
}
Modificamos la función del envió de correo, para agregarle los parametros de
planOperativo
TipoPlan
public void enviarCorreoVencimiento(List<Usuario> usuarios, PlanOperativo planOperativo, String nombreEtapaPlan) {
try {
List<Persona> personas = new ArrayList();
personas = agregarPersonasPorUsuarios(personas, usuarios);
if (!personas.isEmpty()) {
for (Persona persona : personas) {
String subject;
String body;
String nombreUnidad = planOperativo.getUnidadEjecutora().getNombre();
String estado = planOperativo.getEstadoFormulacionOpe().getNombre();
List<String> correos = new ArrayList();
Map<String, String> parametros = new HashMap<>();
subject = i18nService.findOneByLlaveAndIdioma("param_ppi_ppo_planesOperativos_sinFinalizar", "es").getValor();
persona.getPersonaCorreos().stream()
.filter(personaCorreo -> ((personaCorreo.getActivo() == 1) && (personaCorreo.getPrioridad() == 1)))
.map(personaCorreo -> personaCorreo.getCorreoElectronico())
.forEachOrdered(destinatario -> {
correos.add(destinatario);
});
parametros.put("nombreUnidad", nombreUnidad);
parametros.put("nombreEtapaPlan", nombreEtapaPlan);
parametros.put("estado", estado);
parametros.put("planOperativo", planOperativo.getCodigo());
parametros.put("tipoPlan", planOperativo.getTipoPlan().getNombre());
body = plantillaCorreoService.getHtmlContent("TPPIPPOPLANESSINFINALIZAR", parametros);
if (!correos.isEmpty()) {
mailService.sendMail(MailMessageData.builder()
.to(correos)
.subject(subject)
.body(body)
.build());
}
}
}
} catch (Exception ex) {
}
}
PlanOperativoService
Renombramos el método
public void procesoFinalizacionEtapasPPO(Long jobId, String idEtapaPlan);