Merge branch 'master' into develop
This commit is contained in:
@@ -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()
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user