Merge branch 'master' into develop

This commit is contained in:
2024-10-09 13:16:18 +02:00
2 changed files with 62 additions and 50 deletions

View File

@@ -196,7 +196,7 @@ public class ExchangeDocumentImportService {
mtbColrLavTableName, Query.format("data_doc BETWEEN {} AND {}", minDate, maxDate), retrieveAlreadyImported);
righe.parallelStream()
final List<DtbDoct> orphanTestateToAdd = righe.parallelStream()
.filter(riga ->
testate.parallelStream()
.noneMatch(testata ->
@@ -208,7 +208,7 @@ public class ExchangeDocumentImportService {
Objects.equals(riga.getDataDoc(), testata.getDataDoc()) &&
Objects.equals(riga.getNumDoc(), testata.getNumDoc()) &&
Objects.equals(riga.getSerDoc(), testata.getSerDoc()))))
.forEach(riga -> {
.map(riga -> {
DtbDoct testata = new DtbDoct()
.setSerDoc(riga.getSerDoc())
.setDataDoc(riga.getDataDoc())
@@ -217,9 +217,12 @@ public class ExchangeDocumentImportService {
.setCodAnag(riga.getCodAnag());
testata.setOperation(OperationType.UPDATE);
testate.add(testata);
});
return testata;
})
.filter(testataOrphan -> testate.stream().noneMatch(testataOrphan::equalsKey))
.collect(Collectors.toList());
testate.addAll(orphanTestateToAdd);
testate.parallelStream()

View File

@@ -8,10 +8,10 @@ import it.integry.ems.system.exchange.service.structure.ExchangeImportDataManage
import it.integry.ems.system.exchange.service.structure.ExchangeImportSchemaManagerService;
import it.integry.ems_model.base.EquatableEntityInterface;
import it.integry.ems_model.entity.MtbPartitaMag;
import it.integry.ems_model.exception.EntityException;
import it.integry.ems_model.exception.MergeEntityDBToObjectException;
import it.integry.ems_model.types.OperationType;
import it.integry.ems_model.utility.UtilityDB;
import it.integry.ems_model.utility.UtilityLocalDate;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
@@ -47,71 +47,80 @@ public class ExchangePartiteMagazzinoImportService {
boolean useTempTable = true;
try {
exchangeImportSchemaManagerService.syncSchema(exchangeMultiDb.getPrimaryConnection(), ExchangeImportSchemaManagerService.SchemaType.PartiteMagazzinoLavorazione, useTempTable);
try {
exchangeImportSchemaManagerService.syncSchema(exchangeMultiDb.getPrimaryConnection(), ExchangeImportSchemaManagerService.SchemaType.PartiteMagazzinoLavorazione, useTempTable);
final List<MtbPartitaMag> exchangeImportedData = retrievePartite(
exchangeMultiDb.getPrimaryConnection(),
LocalDate.of(2022, 1, 1),
UtilityLocalDate.getNow(),
true, false);
final List<MtbPartitaMag> exchangeImportedData = retrievePartite(
exchangeMultiDb.getPrimaryConnection(),
null,
null,
true, false);
final List<MtbPartitaMag> exchangeUpdatedData = retrievePartite(
exchangeMultiDb.getPrimaryConnection(),
LocalDate.of(2022, 1, 1),
UtilityLocalDate.getNow(),
false, useTempTable);
final List<MtbPartitaMag> exchangeUpdatedData = retrievePartite(
exchangeMultiDb.getPrimaryConnection(),
null,
null,
false, useTempTable);
List<EquatableEntityInterface> allData = exchangeImportDataManagerService
.runSync(MtbPartitaMag.class, exchangeImportedData, exchangeUpdatedData);
exchangeMultiDb.commitAll();
allData.forEach(x -> x.setOperation(x.getOperation() == OperationType.INSERT ? OperationType.INSERT_OR_UPDATE : x.getOperation()));
List<EquatableEntityInterface> allData = exchangeImportDataManagerService
.runSync(MtbPartitaMag.class, exchangeImportedData, exchangeUpdatedData);
allData.forEach(x -> x.setOperation(x.getOperation() == OperationType.INSERT ? OperationType.INSERT_OR_UPDATE : x.getOperation()));
// allData = allData.stream().filter(x -> x.getOperation() != OperationType.DELETE)
// .collect(Collectors.toList());
final Exception[] firstExceptionToThrow = {null};
final Exception[] firstExceptionToThrow = {null};
AtomicInteger importedCounter = new AtomicInteger();
List<RunnableThrowable> calls = new ArrayList<>();
AtomicInteger importedCounter = new AtomicInteger();
List<RunnableThrowable> calls = new ArrayList<>();
for (EquatableEntityInterface dataToSave : allData) {
for (EquatableEntityInterface dataToSave : allData) {
//if(dataToSave.getOperation() == OperationType.DELETE) continue;
//if(dataToSave.getOperation() == OperationType.DELETE) continue;
// calls.add(() -> {
logger.debug("Importate {} partite di magazzino di {}", importedCounter.incrementAndGet(), allData.size());
logger.debug("Importate {} partite di magazzino di {}", importedCounter.incrementAndGet(), allData.size());
try {
try {
try {
entityProcessor.processEntity(dataToSave, true, true, ROSSOGARGANO_EXCHANGE_USER, internalMultiDb, requestDataDTO);
} catch (MergeEntityDBToObjectException mergeEntityDBToObjectException) {
//ignore error if is DELETE
if (dataToSave.getOperation() != OperationType.DELETE) throw mergeEntityDBToObjectException;
}
singleUpdateImported(exchangeMultiDb.getPrimaryConnection(), (MtbPartitaMag) dataToSave, useTempTable);
internalMultiDb.commitAll();
exchangeMultiDb.commitAll();
} catch (Exception ex) {
if (firstExceptionToThrow[0] == null) firstExceptionToThrow[0] = ex;
logger.error("Errore durante l'importazione della partita di magazzino", ex);
internalMultiDb.rollbackAll();
exchangeMultiDb.rollbackAll();
//throw ex;
entityProcessor.processEntity(dataToSave, true, true, ROSSOGARGANO_EXCHANGE_USER, internalMultiDb, requestDataDTO);
} catch (MergeEntityDBToObjectException mergeEntityDBToObjectException) {
//ignore error if is DELETE
if (dataToSave.getOperation() != OperationType.DELETE) throw mergeEntityDBToObjectException;
} catch (EntityException e) {
//ignore error if is DELETE & foreign key error and rollback
if (e.getSqlErrorCode() == 547 && dataToSave.getOperation() == OperationType.DELETE) {
internalMultiDb.rollbackAll();
exchangeMultiDb.rollbackAll();
continue;
} else throw e;
}
singleUpdateImported(exchangeMultiDb.getPrimaryConnection(), (MtbPartitaMag) dataToSave, useTempTable);
internalMultiDb.commitAll();
exchangeMultiDb.commitAll();
} catch (Exception ex) {
if (firstExceptionToThrow[0] == null) firstExceptionToThrow[0] = ex;
logger.error("Errore durante l'importazione della partita di magazzino", ex);
internalMultiDb.rollbackAll();
exchangeMultiDb.rollbackAll();
//throw ex;
}
// });
}
}
// UtilityThread.executeParallel(calls);
if (firstExceptionToThrow[0] != null) throw firstExceptionToThrow[0];
} finally {
if (useTempTable)
exchangeImportSchemaManagerService.deleteTempTables(exchangeMultiDb.getPrimaryConnection(), ExchangeImportSchemaManagerService.SchemaType.PartiteMagazzinoLavorazione);
}
if (firstExceptionToThrow[0] != null) throw firstExceptionToThrow[0];
} finally {
if (useTempTable)
exchangeImportSchemaManagerService.deleteTempTables(exchangeMultiDb.getPrimaryConnection(), ExchangeImportSchemaManagerService.SchemaType.PartiteMagazzinoLavorazione);
}
}