diff --git a/src/main/java/it/cnr/isti/epasmed/epas/dto/EPASContractsDTO.java b/src/main/java/it/cnr/isti/epasmed/epas/dto/EPASContractsDTO.java index cfad0d4..a4895a1 100755 --- a/src/main/java/it/cnr/isti/epasmed/epas/dto/EPASContractsDTO.java +++ b/src/main/java/it/cnr/isti/epasmed/epas/dto/EPASContractsDTO.java @@ -21,6 +21,5 @@ public class EPASContractsDTO implements Serializable { private String id; private boolean onCertificate; private String personId; - private String previousContract; } \ No newline at end of file diff --git a/src/main/java/it/cnr/isti/epasmed/epas/mapper/EPASContractsMapper.java b/src/main/java/it/cnr/isti/epasmed/epas/mapper/EPASContractsMapper.java index 2aa9d80..4a1b1e6 100755 --- a/src/main/java/it/cnr/isti/epasmed/epas/mapper/EPASContractsMapper.java +++ b/src/main/java/it/cnr/isti/epasmed/epas/mapper/EPASContractsMapper.java @@ -38,7 +38,6 @@ public class EPASContractsMapper { if (epasContracts.getPerson() != null) { epasContractsDTO.setPersonId(epasContracts.getPerson().getId()); } - epasContractsDTO.setPreviousContract(epasContracts.getPreviousContract()); return epasContractsDTO; } } diff --git a/src/main/java/it/cnr/isti/epasmed/epas/model/EPASContracts.java b/src/main/java/it/cnr/isti/epasmed/epas/model/EPASContracts.java index 7f368f9..4898f59 100755 --- a/src/main/java/it/cnr/isti/epasmed/epas/model/EPASContracts.java +++ b/src/main/java/it/cnr/isti/epasmed/epas/model/EPASContracts.java @@ -20,7 +20,6 @@ public class EPASContracts implements Serializable { private String id; private boolean onCertificate; private EPASPersons person; - private String previousContract; private EPASWorkingTimeForPerson[] workingTimeTypes; private String updatedAt; diff --git a/src/main/java/it/cnr/isti/epasmed/sync/SyncService.java b/src/main/java/it/cnr/isti/epasmed/sync/SyncService.java index 8d7efbf..6798d49 100755 --- a/src/main/java/it/cnr/isti/epasmed/sync/SyncService.java +++ b/src/main/java/it/cnr/isti/epasmed/sync/SyncService.java @@ -119,7 +119,7 @@ public class SyncService { PersOrarioService persOrarioService; @Autowired PersOrarioMapper persOrarioMapper; - + @Autowired SIMasterLogService siMasterLogService; @Autowired @@ -223,8 +223,7 @@ public class SyncService { writeScheduledData(fluxId, tabsSI, year, month); siMasterLogService.closeFluxWrites(fluxId, writeTabs()); } - - + public void executeWritesOrario() throws Exception { setBWriteTables(); List tabsSI = tabsSIService.getAllTabsSI(); @@ -635,136 +634,13 @@ public class SyncService { } if (epasAffiliations != null) { - EPASAffiliations affPresent = null; - for (EPASAffiliations aff : epasAffiliations) { - if (Integer.valueOf(aff.getExternalId()).compareTo(sigp.getId()) == 0) { - affPresent = aff; - break; - } - } - if (affPresent != null) { - List epasGroups = epasGroupsService.getList(ISTI_OFFICE_ID); - EPASGroups groupPresent = null; - if (epasGroups != null) { - for (EPASGroups g : epasGroups) { - if (Integer.valueOf(g.getExternalId()).compareTo(sigp.getId()) == 0) { - groupPresent = g; - break; - } - } - if (groupPresent != null) { - EPASPersons epasPerson = null; - try { - epasPerson = epasPersonsService.getByFiscalCode(sigp.getCf()); - } catch (Exception e) { - logger.error("Error retrieving person by fiscal code: {}", sigp.getCf()); - logger.error(e.getLocalizedMessage(), e); - } - - if (epasPerson != null) { - EPASAffiliationsDTO epasAffiliationsDTO = new EPASAffiliationsDTO( - sdfDate.format(sigp.getDal()), sdfDate.format(sigp.getAl()), - groupPresent.getId(), null, String.valueOf(sigp.getPercentuale()), - epasPerson.getId(), String.valueOf(sigp.getId())); - epasAffiliationsService.updateById(affPresent.getId(), epasAffiliationsDTO); - logger.info("EPAS Updated Affilation: {}", epasAffiliationsDTO); - - } - - } - } - } else { - List epasGroups = epasGroupsService.getList(ISTI_OFFICE_ID); - EPASGroups groupPresent = null; - if (epasGroups != null) { - for (EPASGroups g : epasGroups) { - if (Integer.valueOf(g.getExternalId()).compareTo(sigp.getId()) == 0) { - groupPresent = g; - break; - } - } - if (groupPresent != null) { - EPASPersons epasPerson = null; - try { - epasPerson = epasPersonsService.getByFiscalCode(sigp.getCf()); - } catch (Exception e) { - logger.error("Error retrieving person by fiscal code: {}", sigp.getCf()); - logger.error(e.getLocalizedMessage(), e); - } - - if (epasPerson != null) { - EPASAffiliationsDTO epasAffiliationsDTO = new EPASAffiliationsDTO( - sdfDate.format(sigp.getDal()), sdfDate.format(sigp.getAl()), - groupPresent.getId(), null, String.valueOf(sigp.getPercentuale()), - epasPerson.getId(), String.valueOf(sigp.getId())); - EPASAffiliations epasAffiliationNew = epasAffiliationsService - .create(epasAffiliationsDTO); - logger.info("EPAS Created Affilation: {}", epasAffiliationNew); - - } - - } - } - } + gestisciDipendenteGiaAffiliato(sigp, epasAffiliations); } else { - List epasGroups = epasGroupsService.getList(ISTI_OFFICE_ID); - EPASGroups groupPresent = null; - if (epasGroups != null) { - for (EPASGroups g : epasGroups) { - if (Integer.valueOf(g.getExternalId()).compareTo(sigp.getId()) == 0) { - groupPresent = g; - break; - } - } - if (groupPresent != null) { - EPASPersons epasPerson = null; - try { - epasPerson = epasPersonsService.getByFiscalCode(sigp.getCf()); - } catch (Exception e) { - logger.error("Error retrieving person by fiscal code: {}", sigp.getCf()); - logger.error(e.getLocalizedMessage(), e); - } - - if (epasPerson != null) { - EPASAffiliationsDTO epasAffiliationsDTO = new EPASAffiliationsDTO( - sdfDate.format(sigp.getDal()), sdfDate.format(sigp.getAl()), - groupPresent.getId(), null, String.valueOf(sigp.getPercentuale()), - epasPerson.getId(), String.valueOf(sigp.getId())); - EPASAffiliations epasAffiliationNew = epasAffiliationsService - .create(epasAffiliationsDTO); - logger.info("EPAS Created Affilation: {}", epasAffiliationNew); - - } - } - } + gestisciDipendenteNonAffiliato(sigp); } } else { - List epasAffiliations = null; - try { - epasAffiliations = epasAffiliationsService.getByPersonFiscalcode(sigp.getCf()); - } catch (Exception e) { - logger.error("Error retrieving Affiliations for fiscal code: {}", sigp.getCf()); - logger.error(e.getLocalizedMessage(), e); - } - - if (epasAffiliations != null) { - EPASAffiliations affPresent = null; - for (EPASAffiliations aff : epasAffiliations) { - if (Integer.valueOf(aff.getExternalId()).compareTo(sigp.getId()) == 0) { - affPresent = aff; - break; - } - } - if (affPresent != null) { - EPASAffiliationsMapper epasAffiliationsMapper = new EPASAffiliationsMapper(); - EPASAffiliationsDTO epasAffiliationsDTO = epasAffiliationsMapper - .epasAffiliationsToEPASAffiliationsDTO(affPresent); - epasAffiliationsDTO.setEndDate(sdfDate.format(sigp.getAl())); - epasAffiliationsService.updateById(affPresent.getId(), epasAffiliationsDTO); - logger.info("EPAS Delete Affilation: {}", epasAffiliationsDTO); - } - } + rimuoviAffiliazione(sigp); } } } @@ -778,6 +654,147 @@ public class SyncService { } } + private void rimuoviAffiliazione(SIGruppiPers sigp) { + logger.debug("Rimuovi Affiliazione"); + List epasAffiliations = null; + try { + epasAffiliations = epasAffiliationsService.getByPersonFiscalcode(sigp.getCf()); + } catch (Exception e) { + logger.error("Error retrieving Affiliations for fiscal code: {}", sigp.getCf()); + logger.error(e.getLocalizedMessage(), e); + } + + if (epasAffiliations != null) { + EPASAffiliations affPresent = null; + for (EPASAffiliations aff : epasAffiliations) { + if (aff.getExternalId() != null && !aff.getExternalId().isEmpty()) { + Integer affId = 0; + try { + affId = Integer.valueOf(aff.getExternalId()); + } catch (NumberFormatException e) { + logger.error("Invalid aff external id: {} ", aff.getExternalId()); + } + + if (affId.compareTo(sigp.getId()) == 0) { + affPresent = aff; + break; + } + } + } + if (affPresent != null) { + EPASAffiliationsMapper epasAffiliationsMapper = new EPASAffiliationsMapper(); + EPASAffiliationsDTO epasAffiliationsDTO = epasAffiliationsMapper + .epasAffiliationsToEPASAffiliationsDTO(affPresent); + epasAffiliationsDTO.setEndDate(sdfDate.format(sigp.getAl())); + epasAffiliationsService.updateById(affPresent.getId(), epasAffiliationsDTO); + logger.info("EPAS Delete Affilation: {}", epasAffiliationsDTO); + } + } + } + + private void gestisciDipendenteNonAffiliato(SIGruppiPers sigp) { + logger.debug("Aggiungi dipendente non affiliato"); + List epasGroups = epasGroupsService.getList(ISTI_OFFICE_ID); + EPASGroups groupPresent = null; + if (epasGroups != null) { + for (EPASGroups g : epasGroups) { + if (g.getExternalId() != null && !g.getExternalId().isEmpty()) { + Integer gId = 0; + try { + gId = Integer.valueOf(g.getExternalId()); + } catch (NumberFormatException e) { + logger.error("Invalid external id: {} ", g.getExternalId()); + } + if (gId.compareTo(sigp.getId()) == 0) { + groupPresent = g; + break; + } + } + } + if (groupPresent != null) { + EPASPersons epasPerson = null; + try { + epasPerson = epasPersonsService.getByFiscalCode(sigp.getCf()); + } catch (Exception e) { + logger.error("Error retrieving person by fiscal code: {}", sigp.getCf()); + logger.error(e.getLocalizedMessage(), e); + } + + if (epasPerson != null) { + EPASAffiliationsDTO epasAffiliationsDTO = new EPASAffiliationsDTO(sdfDate.format(sigp.getDal()), + sdfDate.format(sigp.getAl()), groupPresent.getId(), null, + String.valueOf(sigp.getPercentuale()), epasPerson.getId(), String.valueOf(sigp.getId())); + EPASAffiliations epasAffiliationNew = epasAffiliationsService.create(epasAffiliationsDTO); + logger.info("EPAS Created Affilation: {}", epasAffiliationNew); + + } + } + } + } + + private void gestisciDipendenteGiaAffiliato(SIGruppiPers sigp, List epasAffiliations) { + logger.debug("Aggiungi dipendente giĆ  affiliato"); + EPASAffiliations affPresent = null; + for (EPASAffiliations aff : epasAffiliations) { + if (aff.getExternalId() != null && !aff.getExternalId().isEmpty()) { + Integer affId = 0; + try { + affId = Integer.valueOf(aff.getExternalId()); + } catch (NumberFormatException e) { + logger.error("Invalid aff external id: {} ", aff.getExternalId()); + } + + if (affId.compareTo(sigp.getId()) == 0) { + affPresent = aff; + break; + } + } + } + if (affPresent != null) { + List epasGroups = epasGroupsService.getList(ISTI_OFFICE_ID); + EPASGroups groupPresent = null; + if (epasGroups != null) { + for (EPASGroups g : epasGroups) { + if (g.getExternalId() != null && !g.getExternalId().isEmpty()) { + Integer gId = 0; + try { + gId = Integer.valueOf(g.getExternalId()); + } catch (NumberFormatException e) { + logger.error("Invalid external id: {} ", g.getExternalId()); + } + if (gId.compareTo(sigp.getId()) == 0) { + groupPresent = g; + break; + } + } + + } + if (groupPresent != null) { + EPASPersons epasPerson = null; + try { + epasPerson = epasPersonsService.getByFiscalCode(sigp.getCf()); + } catch (Exception e) { + logger.error("Error retrieving person by fiscal code: {}", sigp.getCf()); + logger.error(e.getLocalizedMessage(), e); + } + + if (epasPerson != null) { + EPASAffiliationsDTO epasAffiliationsDTO = new EPASAffiliationsDTO(sdfDate.format(sigp.getDal()), + sdfDate.format(sigp.getAl()), groupPresent.getId(), null, + String.valueOf(sigp.getPercentuale()), epasPerson.getId(), + String.valueOf(sigp.getId())); + epasAffiliationsService.updateById(affPresent.getId(), epasAffiliationsDTO); + logger.info("EPAS Updated Affilation: {}", epasAffiliationsDTO); + + } + + } + } + } else { + gestisciDipendenteNonAffiliato(sigp); + } + } + private String readTabs() { String readTabs = ""; if (banagrafico) { @@ -901,7 +918,7 @@ public class SyncService { break; case "pers_orario": syncPersOrario(fluxId, tab, year, month, now); - break; + break; default: break; } @@ -909,8 +926,7 @@ public class SyncService { } } } - - + private void writeOrarioData(Long fluxId, List tabsSI) { for (TabsSI tab : tabsSI) { logger.info("TabSI: {}", tab); @@ -1325,8 +1341,8 @@ public class SyncService { private void writeAspettativeOnSI(Long fluxId, LocalDateTime now, List epasLeavesList, LinkedHashMap epasAbsenceTypeMap) { - int count=0; - + int count = 0; + // SI for (EPASLeaves leave : epasLeavesList) { logger.debug("Writing Leave: {}", leave); @@ -1419,11 +1435,11 @@ public class SyncService { if (checkSIAspettativeIsUpgradeable(siAspettative)) { logger.info("Write SIAspettativa: {}", siAspettative); - count=count+1; + count = count + 1; siAspettativeService.writeNewFlux(fluxId, siAspettative); } } - logger.info("Aspettative scritte su SI: {}",count); + logger.info("Aspettative scritte su SI: {}", count); } private boolean checkSIAspettativeIsUpgradeable(SIAspettative siAspettative) { @@ -1469,8 +1485,8 @@ public class SyncService { } else { logger.info("PersonWorkingTimeDTOList size: {}", epasPersonWorkingTimeDTOList.size()); } - - int count=0; + + int count = 0; // SI for (EPASPersonWorkingTimeDTO pwtDTO : epasPersonWorkingTimeDTOList) { logger.info("Writing Person Working Time: {}", pwtDTO); @@ -1540,22 +1556,20 @@ public class SyncService { LocalDateTime dMod = now.truncatedTo(ChronoUnit.SECONDS); Timestamp dataMod = Timestamp.valueOf(dMod); - SIPersOrario siPersOrario = new SIPersOrario(id, idPersona, pwtDTO.getCf(), startDate, endDate, pwtDTO.getDescrizione(), pwtDTO.getLun(), pwtDTO.getMar(), pwtDTO.getMer(), pwtDTO.getGio(), pwtDTO.getVen(), pwtDTO.getSab(), pwtDTO.getPercentuale(), pwtDTO.getTurno(), pwtDTO.getOre_turno(), pwtDTO.getFestivo(), pwtDTO.getNotturno(), dataMod, SI_FLAG_DEL_FALSE, fluxId); - + if (checkSIPersOrarioIsUpgradeable(siPersOrario)) { logger.info("Write SIPersOrario: {}", siPersOrario); - count=count+1; + count = count + 1; siPersOrarioService.writeNewFlux(fluxId, siPersOrario); } - - + } - logger.info("Personale Orario scritto su SI: {}",count); - + logger.info("Personale Orario scritto su SI: {}", count); + logger.info("SIPersOrario Updated"); bpers_orario = true; tab.setIdFlusso(fluxId); @@ -1563,22 +1577,22 @@ public class SyncService { tabsSIService.updateTabsSI(tab); } - + private boolean checkSIPersOrarioIsUpgradeable(SIPersOrario siPersOrario) { boolean upgradeable = false; try { Optional persOrario = persOrarioService.getPersOrarioById(siPersOrario.getId()); if (persOrario.isPresent()) { PersOrario found = persOrario.get(); - logger.debug("Found: {}",found); + logger.debug("Found: {}", found); PersOrario persOrarioDTO = persOrarioMapper.siPersOrarioToPersOrario(siPersOrario); - logger.debug("PersOrarioDTO: {}",persOrarioDTO); + logger.debug("PersOrarioDTO: {}", persOrarioDTO); if (!found.same(persOrarioDTO)) { upgradeable = true; persOrarioService.updatePersOrario(persOrarioDTO); } } else { - logger.debug("Not found PersOrario by id: {}",siPersOrario.getId()); + logger.debug("Not found PersOrario by id: {}", siPersOrario.getId()); upgradeable = true; PersOrario persOrarioDTO = persOrarioMapper.siPersOrarioToPersOrario(siPersOrario); persOrarioService.createPersOrario(persOrarioDTO); @@ -1591,8 +1605,6 @@ public class SyncService { } - - private void syncCartelliniRendicontazioni(Long fluxId, TabsSI tab, String year, String month, LocalDateTime now, TimeCardsReporting timeCardsReporting) throws Exception { if (tab.getIdFlusso() == null || tab.getIdFlusso().longValue() == 0) { diff --git a/src/test/java/it/cnr/isti/epasmed/web/rest/epas/EPASContractsResourceIT.java b/src/test/java/it/cnr/isti/epasmed/web/rest/epas/EPASContractsResourceIT.java index c6f654b..4c33185 100755 --- a/src/test/java/it/cnr/isti/epasmed/web/rest/epas/EPASContractsResourceIT.java +++ b/src/test/java/it/cnr/isti/epasmed/web/rest/epas/EPASContractsResourceIT.java @@ -72,7 +72,7 @@ public class EPASContractsResourceIT { private static final String CONTRACT_DEFAUL_ENDDATE = null; private static final String CONTRACT_DEFAULT_ENDCONTRACT = null; private static final boolean CONTRACT_DEFAULT_ONCERTIFICATE = true; - private static final String CONTRACT_DEFAULT_PREVIOUSCONTRACT = null; + //private static final String CONTRACT_DEFAULT_PREVIOUSCONTRACT = null; private static final String CONTRACT_DEFAULT_EXTERNALID = "2496"; private static final String CONTRACT_UPDATE_ENDATE = "2021-12-31"; @@ -102,7 +102,6 @@ public class EPASContractsResourceIT { epasContracts.setEndContract(CONTRACT_DEFAULT_ENDCONTRACT); epasContracts.setOnCertificate(CONTRACT_DEFAULT_ONCERTIFICATE); epasContracts.setPerson(createEPASPerson()); - epasContracts.setPreviousContract(CONTRACT_DEFAULT_PREVIOUSCONTRACT); epasContracts.setExternalId(CONTRACT_DEFAULT_EXTERNALID); return epasContracts; }