diff --git a/ems-core/src/main/java/it/integry/ems_model/base/EquatableEntityInterface.java b/ems-core/src/main/java/it/integry/ems_model/base/EquatableEntityInterface.java index 2198e2d8e7..60d0d860af 100644 --- a/ems-core/src/main/java/it/integry/ems_model/base/EquatableEntityInterface.java +++ b/ems-core/src/main/java/it/integry/ems_model/base/EquatableEntityInterface.java @@ -2,10 +2,13 @@ package it.integry.ems_model.base; public interface EquatableEntityInterface extends EntityInterface { + int hashCodeKey(); + + int hashCode(); boolean equalsKey(T other); - boolean equalsContent(T other); + boolean equals(Object other); } diff --git a/ems-core/src/main/java/it/integry/ems_model/entity/DtbDocr.java b/ems-core/src/main/java/it/integry/ems_model/entity/DtbDocr.java index 7eaf1df7a9..9eba4f2db5 100644 --- a/ems-core/src/main/java/it/integry/ems_model/entity/DtbDocr.java +++ b/ems-core/src/main/java/it/integry/ems_model/entity/DtbDocr.java @@ -1425,17 +1425,19 @@ public class DtbDocr extends DtbBaseDocR implements EquatableEntityInterface { diff --git a/ems-core/src/main/java/it/integry/ems_model/entity/MtbColt.java b/ems-core/src/main/java/it/integry/ems_model/entity/MtbColt.java index cc4d062b7f..bffec87c99 100644 --- a/ems-core/src/main/java/it/integry/ems_model/entity/MtbColt.java +++ b/ems-core/src/main/java/it/integry/ems_model/entity/MtbColt.java @@ -708,32 +708,33 @@ public class MtbColt extends EntityBase implements EquatableEntityInterface { private OperationType operation; @@ -300,41 +299,34 @@ public class ExchangeCampiRaccoltaDTO implements EquatableEntityInterface exchangeUpdatedMtbColts = importColliLavorazione( exchangeMultiDb.getPrimaryConnection(), - UtilityLocalDate.getNow().minusWeeks(1), + UtilityLocalDate.getNow().minusWeeks(3), UtilityLocalDate.getNow(), false, useTempTable, testataTableName, righeTableName); @@ -192,8 +192,13 @@ public class ExchangeColliImportService { mtbColtLav .parallelStream() .forEach(x -> { - int hashCurrent = Objects.hash(x.getGestione(), x.getNumCollo(), x.getDataCollo(), x.getSerCollo()); - x.getMtbColr().addAll(testGroupBy.get(hashCurrent)); + x.setMtbColr(mtbColrLav.parallelStream() + .filter(y -> Objects.hash(x.getGestione(), x.getNumCollo(), x.getDataCollo(), x.getSerCollo()) == + Objects.hash(y.getGestione(), y.getNumCollo(), y.getDataCollo(), y.getSerCollo()) && + + (Objects.equals(x.getGestione(), y.getGestione()) && Objects.equals(x.getDataCollo(), y.getDataCollo()) && + Objects.equals(x.getNumCollo(), y.getNumCollo()) && Objects.equals(x.getSerCollo(), y.getSerCollo()))) + .collect(Collectors.toList())); }); return mtbColtLav; diff --git a/ems-engine/src/main/java/it/integry/ems/system/exchange/service/ExchangeDocumentImportService.java b/ems-engine/src/main/java/it/integry/ems/system/exchange/service/ExchangeDocumentImportService.java index 94cb9b4b77..288b33cbbe 100644 --- a/ems-engine/src/main/java/it/integry/ems/system/exchange/service/ExchangeDocumentImportService.java +++ b/ems-engine/src/main/java/it/integry/ems/system/exchange/service/ExchangeDocumentImportService.java @@ -8,6 +8,7 @@ import it.integry.ems_model.base.EquatableEntityInterface; import it.integry.ems_model.entity.DtbDocr; import it.integry.ems_model.entity.DtbDoct; import it.integry.ems_model.types.OperationType; +import it.integry.ems_model.utility.Query; import it.integry.ems_model.utility.UtilityDB; import it.integry.ems_model.utility.UtilityLocalDate; import org.apache.logging.log4j.LogManager; @@ -52,13 +53,13 @@ public class ExchangeDocumentImportService { final List exchangeImportedTestateData = importTestateDocumentiLavorazione( exchangeMultiDb.getPrimaryConnection(), - UtilityLocalDate.getNow().minusWeeks(1), + UtilityLocalDate.getNow().minusMonths(1), UtilityLocalDate.getNow(), true, false); final List exchangeUpdatedTestateData = importTestateDocumentiLavorazione( exchangeMultiDb.getPrimaryConnection(), - UtilityLocalDate.getNow().minusWeeks(1), + UtilityLocalDate.getNow().minusMonths(1), UtilityLocalDate.getNow(), false, useTempTable); @@ -81,29 +82,36 @@ public class ExchangeDocumentImportService { List allRigheData = exchangeImportDataManagerService .runSync(DtbDocr.class, exchangeImportedRigheData, exchangeUpdatedRigheData); - allTestateData.forEach(x -> ((DtbDoct) x).setUpdProgMaga(false)); + allTestateData.parallelStream().forEach(x -> ((DtbDoct) x).setUpdProgMaga(false)); - allTestateData.stream() + allTestateData.parallelStream() .map(x -> (DtbDoct) x) .forEach(x -> x.setDtbDocr(allRigheData.stream() .map(y -> (DtbDocr) y) - .filter(y -> y.getDataDoc().equals(x.getDataDoc()) && - y.getNumDoc().equals(x.getNumDoc()) && - y.getSerDoc().equalsIgnoreCase(x.getSerDoc()) && - y.getCodAnag().equalsIgnoreCase(x.getCodAnag()) && - y.getCodDtip().equalsIgnoreCase(x.getCodDtip())) + .filter(y -> + Objects.hash(x.getDataDoc(), x.getNumDoc(), x.getSerDoc(), x.getCodAnag(), x.getCodDtip()) == + Objects.hash(y.getDataDoc(), y.getNumDoc(), y.getSerDoc(), y.getCodAnag(), y.getCodDtip()) && + + (Objects.equals(x.getCodAnag(), y.getCodAnag()) && + Objects.equals(x.getCodDtip(), y.getCodDtip()) && + Objects.equals(x.getDataDoc(), y.getDataDoc()) && + Objects.equals(x.getNumDoc(), y.getNumDoc()) && + Objects.equals(x.getSerDoc(), y.getSerDoc()))) .collect(Collectors.toList()))); allRigheData.stream() .map(x -> (DtbDocr) x) .filter(x -> allTestateData.stream() .map(y -> (DtbDoct) y) - .noneMatch(y -> x.getCodDtip().equalsIgnoreCase(y.getCodDtip()) && - x.getDataDoc().equals(y.getDataDoc()) && - Objects.equals(x.getNumDoc(), y.getNumDoc()) && - x.getCodAnag().equalsIgnoreCase(y.getCodAnag()) && - x.getSerDoc().equalsIgnoreCase(y.getSerDoc()))) + .noneMatch(y -> Objects.hash(x.getDataDoc(), x.getNumDoc(), x.getSerDoc(), x.getCodAnag(), x.getCodDtip()) == + Objects.hash(y.getDataDoc(), y.getNumDoc(), y.getSerDoc(), y.getCodAnag(), y.getCodDtip()) && + + (Objects.equals(x.getCodAnag(), y.getCodAnag()) && + Objects.equals(x.getCodDtip(), y.getCodDtip()) && + Objects.equals(x.getDataDoc(), y.getDataDoc()) && + Objects.equals(x.getNumDoc(), y.getNumDoc()) && + Objects.equals(x.getSerDoc(), y.getSerDoc())))) .forEach(x -> { DtbDoct testata = new DtbDoct() .setSerDoc(x.getSerDoc()) @@ -137,7 +145,7 @@ public class ExchangeDocumentImportService { entityProcessor.processEntity(cloneDocument, true, true, ROSSOGARGANO_EXCHANGE_USER, internalMultiDb, requestDataDTO); singleUpdateImported(exchangeMultiDb.getPrimaryConnection(), (DtbDoct) dataToSave, useTempTable); - if(!document.getDtbDocr().isEmpty()) { + if (!document.getDtbDocr().isEmpty()) { document.setOperation(OperationType.NO_OP); entityProcessor.processEntity(document, true, true, ROSSOGARGANO_EXCHANGE_USER, internalMultiDb, requestDataDTO); singleUpdateImported(exchangeMultiDb.getPrimaryConnection(), document.getDtbDocr(), useTempTable); @@ -185,7 +193,7 @@ public class ExchangeDocumentImportService { } final List dtbDoctLav = exchangeImportDataManagerService.retrieveDataFromExchange(connection, DtbDoct.class, - dtbDoctLavTableName, null, retrieveAlreadyImported); + dtbDoctLavTableName, Query.format("data_doc BETWEEN {} AND {}", minDate, maxDate), retrieveAlreadyImported); dtbDoctLav @@ -214,7 +222,7 @@ public class ExchangeDocumentImportService { return exchangeImportDataManagerService.retrieveDataFromExchange(connection, DtbDocr.class, - dtbDocrLavTableName, null, retrieveAlreadyImported); + dtbDocrLavTableName, Query.format("data_doc BETWEEN {} AND {}", minDate, maxDate), retrieveAlreadyImported); } diff --git a/ems-engine/src/main/java/it/integry/ems/system/exchange/service/ExchangeImportDataManagerService.java b/ems-engine/src/main/java/it/integry/ems/system/exchange/service/ExchangeImportDataManagerService.java index 72deab8a5e..b93584850c 100644 --- a/ems-engine/src/main/java/it/integry/ems/system/exchange/service/ExchangeImportDataManagerService.java +++ b/ems-engine/src/main/java/it/integry/ems/system/exchange/service/ExchangeImportDataManagerService.java @@ -67,7 +67,7 @@ public class ExchangeImportDataManagerService { private List calcItemsToAdd(Class clazz, List alreadyImportedData, List updatedData) throws IllegalAccessException { - final List itemsToAdd = updatedData.stream() + final List itemsToAdd = updatedData.parallelStream() .filter(x -> alreadyImportedData.stream().noneMatch(y -> y.equalsKey(x))) .peek(x -> x.setOperation(OperationType.INSERT)) .collect(Collectors.toList()); @@ -98,7 +98,7 @@ public class ExchangeImportDataManagerService { private List calcItemsToDelete(Class clazz, List importedMtbColts, List updatedMtbColts) throws IllegalAccessException { - final List itemsToDelete = importedMtbColts.stream() + final List itemsToDelete = importedMtbColts.parallelStream() .filter(x -> updatedMtbColts.stream().noneMatch(y -> y.equalsKey(x))) .peek(x -> x.setOperation(OperationType.DELETE)) .collect(Collectors.toList()); @@ -128,7 +128,7 @@ public class ExchangeImportDataManagerService { private List calcItemsToUpdate(Class clazz, List importedMtbColts, List updatedMtbColts) throws IllegalAccessException { - List itemsToUpdate = updatedMtbColts.stream() + List itemsToUpdate = updatedMtbColts.parallelStream() .filter(x -> importedMtbColts.stream().anyMatch(y -> y.equalsKey(x))) .collect(Collectors.toList()); @@ -164,7 +164,7 @@ public class ExchangeImportDataManagerService { itemToUpdate.setOperation(OperationType.UPDATE); } - return itemsToUpdate.stream() + return itemsToUpdate.parallelStream() .filter(x -> { boolean anyChildToUpdate = false; @@ -186,7 +186,7 @@ public class ExchangeImportDataManagerService { } - return anyChildToUpdate || importedMtbColts.stream().anyMatch(y -> y.equalsKey(x) && !y.equalsContent(x)); + return anyChildToUpdate || importedMtbColts.stream().anyMatch(y -> y.equalsKey(x) && !y.equals(x)); }) .collect(Collectors.toList()); } diff --git a/ems-engine/src/main/java/it/integry/ems/system/exchange/service/ExchangeOrdiniImportService.java b/ems-engine/src/main/java/it/integry/ems/system/exchange/service/ExchangeOrdiniImportService.java index 91f04d02ec..3f0f4a5c63 100644 --- a/ems-engine/src/main/java/it/integry/ems/system/exchange/service/ExchangeOrdiniImportService.java +++ b/ems-engine/src/main/java/it/integry/ems/system/exchange/service/ExchangeOrdiniImportService.java @@ -23,10 +23,7 @@ import org.springframework.stereotype.Service; import java.sql.Connection; import java.time.LocalDate; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.HashMap; -import java.util.List; +import java.util.*; import java.util.concurrent.atomic.AtomicInteger; import java.util.stream.Collectors; @@ -158,10 +155,10 @@ public class ExchangeOrdiniImportService { } List dtbOrdtLav = exchangeImportDataManagerService.retrieveDataFromExchange(connection, DtbOrdt.class, - dtbOrdtTableName, null, retrieveAlreadyImported); + dtbOrdtTableName, Query.format("data_ord BETWEEN {} AND {}", minDate, maxDate), retrieveAlreadyImported); List dtbOrdrLav = exchangeImportDataManagerService.retrieveDataFromExchange(connection, DtbOrdr.class, - dtbOrdrTableName, null, retrieveAlreadyImported); + dtbOrdrTableName, Query.format("data_ord BETWEEN {} AND {}", minDate, maxDate), retrieveAlreadyImported); dtbOrdtLav = dtbOrdtLav.stream() // .filter(x -> x.getGestione().equalsIgnoreCase("A")) @@ -183,9 +180,11 @@ public class ExchangeOrdiniImportService { x.setGeneraOrdLavDaProd(false); x.setDtbOrdr(finalDtbOrdrLav.stream() - .filter(y -> y.getDataOrd().equals(x.getDataOrd()) && - y.getGestione().equalsIgnoreCase(x.getGestione()) && - y.getNumOrd().equals(x.getNumOrd())) + .filter(y -> + Objects.hash(x.getDataOrd(), x.getGestione(), x.getNumOrd()) == + Objects.hash(y.getDataOrd(), y.getGestione(), y.getNumOrd()) && + (Objects.equals(x.getDataOrd(), y.getDataOrd()) && Objects.equals(x.getNumOrd(), y.getNumOrd()) && + Objects.equals(x.getGestione(), y.getGestione()))) .collect(Collectors.toList())); });