From bc5e7197a215701359614a42edca07e2bc267494 Mon Sep 17 00:00:00 2001 From: Cristian Lucchesi Date: Mon, 9 Sep 2024 19:15:46 +0200 Subject: [PATCH] Corretta gestione merge e persist nell'aggiornamento contratti. Versione 0.4.2. --- VERSION | 2 +- .../iit/epas/config/OpenApiConfiguration.java | 2 +- .../iit/epas/dao/wrapper/WrapperContract.java | 17 +++++++++------- .../epas/manager/ConsistencyManagerUtils.java | 20 ++++++++++++++----- .../cnr/iit/epas/manager/ContractManager.java | 15 +++++++------- 5 files changed, 34 insertions(+), 22 deletions(-) diff --git a/VERSION b/VERSION index 44bb5d1..f7abe27 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.4.1 \ No newline at end of file +0.4.2 \ No newline at end of file diff --git a/src/main/java/it/cnr/iit/epas/config/OpenApiConfiguration.java b/src/main/java/it/cnr/iit/epas/config/OpenApiConfiguration.java index 602fe44..9c7389f 100644 --- a/src/main/java/it/cnr/iit/epas/config/OpenApiConfiguration.java +++ b/src/main/java/it/cnr/iit/epas/config/OpenApiConfiguration.java @@ -36,7 +36,7 @@ @Configuration @OpenAPIDefinition( info = @Info(title = "ePAS Service", - version = "4.0.0-beta.2", + version = "4.0.0-beta.3", description = "ePAS Service contains all the business logic and related REST endpoints" + " to manage all the personnel information."), servers = {@Server(url = "/", description = "ePAS Service URL")} diff --git a/src/main/java/it/cnr/iit/epas/dao/wrapper/WrapperContract.java b/src/main/java/it/cnr/iit/epas/dao/wrapper/WrapperContract.java index 8a59249..99c7977 100755 --- a/src/main/java/it/cnr/iit/epas/dao/wrapper/WrapperContract.java +++ b/src/main/java/it/cnr/iit/epas/dao/wrapper/WrapperContract.java @@ -17,6 +17,16 @@ package it.cnr.iit.epas.dao.wrapper; +import java.time.LocalDate; +import java.time.YearMonth; +import java.util.ArrayList; +import java.util.List; +import java.util.Optional; + +import javax.inject.Inject; + +import org.springframework.stereotype.Component; + import it.cnr.iit.epas.dao.AbsenceDao; import it.cnr.iit.epas.models.Contract; import it.cnr.iit.epas.models.ContractMonthRecap; @@ -25,13 +35,6 @@ import it.cnr.iit.epas.models.absences.JustifiedType.JustifiedTypeName; import it.cnr.iit.epas.utils.DateInterval; import it.cnr.iit.epas.utils.DateUtility; -import java.time.LocalDate; -import java.time.YearMonth; -import java.util.ArrayList; -import java.util.List; -import java.util.Optional; -import javax.inject.Inject; -import org.springframework.stereotype.Component; /** * Contract con alcune funzionalità aggiuntive. diff --git a/src/main/java/it/cnr/iit/epas/manager/ConsistencyManagerUtils.java b/src/main/java/it/cnr/iit/epas/manager/ConsistencyManagerUtils.java index 6356ac8..5164ca0 100644 --- a/src/main/java/it/cnr/iit/epas/manager/ConsistencyManagerUtils.java +++ b/src/main/java/it/cnr/iit/epas/manager/ConsistencyManagerUtils.java @@ -518,7 +518,11 @@ private ContractMonthRecap populateContractMonthFromSource(IWrapperContract cont cmr.buoniPastoDaInizializzazione = 0; cmr.remainingMealTickets = 0; } - emp.get().persist(cmr); + if (emp.get().contains(cmr)) { + emp.get().merge(cmr); + } else { + emp.get().persist(cmr); + } //cmr.save(); contract.getValue().contractMonthRecaps.add(cmr); emp.get().merge(contract.getValue()); @@ -529,9 +533,12 @@ private ContractMonthRecap populateContractMonthFromSource(IWrapperContract cont // Caso complesso, combinare inizializzazione e database. ContractMonthRecap cmr = buildContractMonthRecap(contract, yearMonthToCompute); - contract.getValue().contractMonthRecaps.add(cmr); - emp.get().merge(cmr); + if (emp.get().contains(cmr)) { + emp.get().merge(cmr); + } else { + emp.get().persist(cmr); + } //cmr.save(); // Informazioni relative ai residui @@ -539,7 +546,11 @@ private ContractMonthRecap populateContractMonthFromSource(IWrapperContract cont contractMonthRecapManager.computeResidualModule(cmr, Optional.empty(), yearMonthToCompute, LocalDate.now().minusDays(1), otherCompensatoryRest, Optional.empty()); - emp.get().merge(cmr); + if (emp.get().contains(cmr)) { + emp.get().merge(cmr); + } else { + emp.get().persist(cmr); + } //cmr.save(); emp.get().merge(contract.getValue()); @@ -556,7 +567,6 @@ private ContractMonthRecap buildContractMonthRecap(IWrapperContract contract, YearMonth yearMonth) { Optional cmrOld = contract.getContractMonthRecap(yearMonth); - if (cmrOld.isPresent()) { cmrOld.get().clean(); return cmrOld.get(); diff --git a/src/main/java/it/cnr/iit/epas/manager/ContractManager.java b/src/main/java/it/cnr/iit/epas/manager/ContractManager.java index 3ff9652..fb9ac8d 100755 --- a/src/main/java/it/cnr/iit/epas/manager/ContractManager.java +++ b/src/main/java/it/cnr/iit/epas/manager/ContractManager.java @@ -272,7 +272,7 @@ public void recomputeContract(final Contract contract, final Optional // TODO: anche quelli sulle ferie quando ci saranno for (ContractMonthRecap cmr : contract.contractMonthRecaps) { if (!yearMonthFrom.isAfter(YearMonth.of(cmr.year, cmr.month))) { - if (cmr.getId() != null) { + if (emp.get().contains(cmr)) { emp.get().remove(cmr); } } @@ -554,13 +554,12 @@ public boolean applyPreviousContractLink(Contract contract, boolean linkedToPrev } } else { Contract temp = contract.getPreviousContract(); - if (temp == null) { - return false; - } - contract.setPreviousContract(null); - if (temp.getEndDate() != null - && contract.getBeginDate().minusDays(1).isEqual(temp.getEndDate())) { - splitVacationPeriods(contract); + if (temp != null) { + contract.setPreviousContract(null); + if (temp.getEndDate() != null + && contract.getBeginDate().minusDays(1).isEqual(temp.getEndDate())) { + splitVacationPeriods(contract); + } } } return true;