From 97e80a901fa2e50d2a03a54ea47bbde94ecfd0af Mon Sep 17 00:00:00 2001 From: Valerio Castellana Date: Tue, 27 May 2025 16:46:14 +0200 Subject: [PATCH] [CARELLI - Calendario PV] - gestita modifica utenti pianificazione con sincronizzazione DB --- .../ems/activity/service/ActivityService.java | 42 ++++++++++++------- 1 file changed, 26 insertions(+), 16 deletions(-) diff --git a/ems-engine/src/main/java/it/integry/ems/activity/service/ActivityService.java b/ems-engine/src/main/java/it/integry/ems/activity/service/ActivityService.java index d5af135a61..03aafb22fa 100644 --- a/ems-engine/src/main/java/it/integry/ems/activity/service/ActivityService.java +++ b/ems-engine/src/main/java/it/integry/ems/activity/service/ActivityService.java @@ -1782,21 +1782,31 @@ public class ActivityService { .setMaxRepetitions(dto.getMaxRepetitions()) .setRecurrenceRule(dto.getRecurrenceRule()); plan.setOperation(dto.getId() == null ? OperationType.INSERT : OperationType.UPDATE); - + List utentiDb = null; if (plan.getId() != null) { - String whereCond = plan.getPkWhereCond(); - whereCond = whereCond.replace("id", "plan_id"); - SrlActivityPlanUser planUsers = new SrlActivityPlanUser(); - planUsers.deleteAllEntities(multiDBTransactionManager.getPrimaryConnection(), whereCond); + utentiDb = UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), + Query.format("SELECT * from srl_activity_plan_user where plan_id = {}", plan.getId()), + SrlActivityPlanUser.class + ); + + } + if (utentiDb == null) { + utentiDb = new ArrayList<>(); + }else{ + utentiDb.forEach(x -> x.setOperation(OperationType.DELETE)); + plan.getSrlActivityPlanUser().addAll(utentiDb); } for (String username : dto.getUsers()) { - SrlActivityPlanUser user = new SrlActivityPlanUser(); + SrlActivityPlanUser user = utentiDb.stream().filter(x -> x.getUserName().equalsIgnoreCase(username)).findFirst().orElse(null); + if (user == null){ + user = new SrlActivityPlanUser(); + plan.getSrlActivityPlanUser().add(user); + } user .setUserName(username) - .setOperation(OperationType.INSERT); + .setOperation(OperationType.INSERT_OR_UPDATE); plan.getSrlActivityPlanUser().add(user); - } entityProcessor.processEntity(plan, true, multiDBTransactionManager); @@ -1839,7 +1849,7 @@ public class ActivityService { String activityIdOrd = "INSERIMENTO ORDINI FORNITORI"; String activityIdScar = "SCARICO ORDINE FORNITORE"; - String defaultReportName = gestSetup.getSetup(multiDBTransactionManager.getPrimaryConnection(), "PVM", "ORDINI_A", "REPORT_NAME_GRIGLIA"); + String defaultReportName = gestSetup.getSetup(multiDBTransactionManager.getPrimaryConnection(), "PVM", "ORDINI_A", "REPORT_NAME_GRIGLIA"); Map> plannedOrders = listPianoLogistico.stream().collect(Collectors.groupingBy(PianoLogisticoDTO::getRecurrenceOrdKey)); @@ -1848,7 +1858,7 @@ public class ActivityService { //region Creazione attività pianificate di ordini ai fornitori for (String key : plannedOrders.keySet()) { List orders = plannedOrders.get(key); - ActivityPlanDTO plan = (orders.size() > 1) ? getNestedOrdersActivities(orders, activityIdOrd, codMdep,defaultReportName) : getAttivitaOrdineDaPianoLogistico(orders.get(0), activityIdOrd, codMdep,defaultReportName); + ActivityPlanDTO plan = (orders.size() > 1) ? getNestedOrdersActivities(orders, activityIdOrd, codMdep, defaultReportName) : getAttivitaOrdineDaPianoLogistico(orders.get(0), activityIdOrd, codMdep, defaultReportName); activities.add(plan); } //endregion @@ -1868,13 +1878,13 @@ public class ActivityService { PianoLogisticoDTO defaultPlan = orders.get(0); - ActivityPlanDTO plan = getAttivitaOrdineDaPianoLogistico(defaultPlan, activityIdOrd, codMdep,defaultReportName); + ActivityPlanDTO plan = getAttivitaOrdineDaPianoLogistico(defaultPlan, activityIdOrd, codMdep, defaultReportName); plan.setDescription(String.format("ORDINI A %d FORNITORI", orders.size())) .setAction(null) .setChildren(orders.stream().map(x -> { try { - return getAttivitaOrdineDaPianoLogistico(x, activityIdOrd, codMdep,defaultReportName); + return getAttivitaOrdineDaPianoLogistico(x, activityIdOrd, codMdep, defaultReportName); } catch (Exception e) { throw new RuntimeException(e); } @@ -1915,7 +1925,7 @@ public class ActivityService { boolean allDay = pianoLogisticoDTO.getOraMaxOrd() == null; LocalTime oraMaxOrd = UtilityLocalTime.isNull(pianoLogisticoDTO.getOraMaxOrd(), LocalTime.MAX); LocalTime oraInizOrd = oraMaxOrd.minusHours(1); - String reportGriglia = gestSetup.getSetupDet(multiDBTransactionManager.getPrimaryConnection(), "PVM", "ORDINI_A", "REPORT_NAME_GRIGLIA",pianoLogisticoDTO.getCodAlis()); + String reportGriglia = gestSetup.getSetupDet(multiDBTransactionManager.getPrimaryConnection(), "PVM", "ORDINI_A", "REPORT_NAME_GRIGLIA", pianoLogisticoDTO.getCodAlis()); dto .setAllDay(allDay) .setActivityTypeId(activityTypeId) @@ -1931,14 +1941,14 @@ public class ActivityService { .setType(ActivityPlanActionDTO.ActionType.REPORT) .setParams(new HashMap() {{ - put("whereCond",Query.format("(griglia.cod_alis = %s)",pianoLogisticoDTO.getCodAlis())); - put("params",new HashMap() {{ + put("whereCond", Query.format("(griglia.cod_alis = %s)", pianoLogisticoDTO.getCodAlis())); + put("params", new HashMap() {{ put("cod_mdep", codMdep); put("cod_alis", pianoLogisticoDTO.getCodAlis()); put("data_iniz_mese_prec", ""); put("data_fine_mese_prec", ""); }}); - put("reportName", UtilityString.isNull(reportGriglia,defaultReportName)); + put("reportName", UtilityString.isNull(reportGriglia, defaultReportName)); }}); dto.setAction(action); return dto;