Migliorato exchange clienti
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good

This commit is contained in:
2025-11-20 17:28:43 +01:00
parent 92dcc45638
commit a1b892a75e
2 changed files with 75 additions and 48 deletions

View File

@@ -178,7 +178,6 @@ public class AnagRules extends QueryRules {
precode = setupGest.getSetup(connection, "GTB_ANAG", "SETUP", keySection);
}
String sql = "SELECT dbo.f_suggestCodeCodAnag(" + UtilityDB.valueToString(precode) + ")";
logger.info("SUGGEST_COD_ANAG " + sql);
return UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(connection, sql);
}

View File

@@ -10,7 +10,10 @@ import it.integry.ems_model.base.EquatableEntityInterface;
import it.integry.ems_model.entity.GtbAnag;
import it.integry.ems_model.entity.VtbClie;
import it.integry.ems_model.exception.EntityException;
import it.integry.ems_model.service.SetupGest;
import it.integry.ems_model.types.OperationType;
import it.integry.ems_model.utility.UtilityDB;
import it.integry.ems_model.utility.UtilityQuery;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
@@ -20,6 +23,7 @@ import java.util.HashMap;
import java.util.List;
import java.util.Objects;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.stream.Collectors;
@Service
public class ExchangeClientiImportService {
@@ -39,22 +43,37 @@ public class ExchangeClientiImportService {
@Autowired
private ExchangeImportDataManagerService exchangeImportDataManagerService;
@Autowired
private SetupGest setupGest;
public void importClienti(MultiDBTransactionManager internalMultiDb, MultiDBTransactionManager exchangeMultiDb, RequestDataDTO requestDataDTO) throws Exception {
boolean useTempTable = true;
ExchangeImportSchemaManagerService.SchemaType schemaType = ExchangeImportSchemaManagerService.SchemaType.Clienti;
try {
final String precode = setupGest.getSetup(internalMultiDb.getPrimaryConnection(), "GTB_ANAG", "SETUP", "PRECODE_CLIENTI");
exchangeImportSchemaManagerService.syncSchema(exchangeMultiDb.getPrimaryConnection(), schemaType, useTempTable);
exchangeImportDataManagerService.prepareData(exchangeMultiDb.getPrimaryConnection(), useTempTable, exchangeImportSchemaManagerService.getTablesBySchemaType(schemaType));
String sqlDistinctDiacods = "SELECT DISTINCT diacod FROM gtb_anag_clienti" + (useTempTable ? "_tmp" : "");
List<String> diacodsToSync = UtilityDB.executeSimpleQueryOnlyFirstColumn(exchangeMultiDb.getPrimaryConnection(), sqlDistinctDiacods);
AtomicInteger dataCount = new AtomicInteger(diacodsToSync.size());
AtomicInteger importedCounter = new AtomicInteger(0);
final Exception[] firstExceptionToThrow = {null};
for (String diacod : diacodsToSync) {
final List<GtbAnag> exchangeImportedData = retrieveClienti(
exchangeMultiDb.getPrimaryConnection(),
true, false);
true, false, diacod);
final List<GtbAnag> exchangeUpdatedData = retrieveClienti(
exchangeMultiDb.getPrimaryConnection(),
false, useTempTable);
false, useTempTable, diacod);
List<EquatableEntityInterface> allData = exchangeImportDataManagerService
.runSync(GtbAnag.class, exchangeImportedData, exchangeUpdatedData);
@@ -77,13 +96,11 @@ public class ExchangeClientiImportService {
}
});
final Exception[] firstExceptionToThrow = {null};
AtomicInteger importedCounter = new AtomicInteger();
for (EquatableEntityInterface dataToSave : allData) {
logger.debug("Importati {} clienti di {}", importedCounter.incrementAndGet(), allData.size());
((GtbAnag) dataToSave).setPrecode(precode);
logger.debug("Importati {} clienti di {}", importedCounter.incrementAndGet(), dataCount.get());
try {
entityProcessor.processEntity(dataToSave, true, true, EXCHANGE_USER, internalMultiDb, requestDataDTO);
@@ -104,6 +121,7 @@ public class ExchangeClientiImportService {
}
}
if (firstExceptionToThrow[0] != null) throw firstExceptionToThrow[0];
} finally {
@@ -114,7 +132,7 @@ public class ExchangeClientiImportService {
private List<GtbAnag> retrieveClienti(Connection connection,
boolean retrieveAlreadyImported, boolean useTempTable) throws Exception {
boolean retrieveAlreadyImported, boolean useTempTable, String diacod) throws Exception {
String testataOriginalName = "gtb_anag_clienti";
String testataTableName = testataOriginalName + (useTempTable ? "_tmp" : "");
@@ -124,10 +142,20 @@ public class ExchangeClientiImportService {
final List<GtbAnag> gtbAnags = exchangeImportDataManagerService.retrieveDataFromExchange(connection, GtbAnag.class,
testataTableName, null, retrieveAlreadyImported);
testataTableName, diacod != null ? ("diacod = " + UtilityDB.valueToString(diacod)) : null, retrieveAlreadyImported);
List<String> codAnags = gtbAnags.stream()
.map(GtbAnag::getCodAnag)
.filter(Objects::nonNull)
.collect(Collectors.toList());
if (codAnags.isEmpty())
return gtbAnags;
final List<VtbClie> vtbClies = exchangeImportDataManagerService.retrieveDataFromExchange(connection, VtbClie.class,
righeTableName, null, retrieveAlreadyImported);
righeTableName,
"cod_anag IN ( " + UtilityQuery.concatStringFieldsWithSeparator(codAnags, ",") + ")",
retrieveAlreadyImported);
gtbAnags